MurphyA/hacker-news huggingface dataset:
by shakna | 2025-06-04 10:24:35+00:00
Oh, it's still a while off that. I do plan to make it public at some point, but when I'm actually happy the code isn't completely vomit.

But for a simple taste, the push to stack function currently looks like this. (All the emit stuff just writes bytes into a mmap that gets executed later.)

void compile_push_literal(Value val) { #if ARCH_X86_64 emit_bytes((uint8_t[]){X86_MOV_RDI_IMM64_0, X86_MOV_RDI_IMM64_1}, 2); emit_uint64_le(val); emit_bytes((uint8_t[]){X86_MOV_RAX_IMM64_0, X86_MOV_RAX_IMM64_1}, 2); emit_uint64_le((uint64_t)push); emit_bytes((uint8_t[]){X86_CALL_RAX_0, X86_CALL_RAX_1}, 2); #elif ARCH_ARM64 uint64_t imm = val; emit_uint32_le(ARM64_MOVZ_OP | (ARM64_REG_X0 << 0) | ((imm & 0xFFFF) << 5)); emit_uint32_le(ARM64_MOVK_OP_LSL16 | (ARM64_REG_X0 << 0) | (((imm >> 16) & 0xFFFF) << 5)); emit_uint32_le(ARM64_MOVK_OP_LSL32 | (ARM64_REG_X0 << 0) | (((imm >> 32) & 0xFFFF) << 5)); emit_uint32_le(ARM64_MOVK_OP_LSL48 | (ARM64_REG_X0 << 0) | (((imm >> 48) & 0xFFFF) << 5)); uint64_t func_addr = (uint64_t)push; emit_uint32_le(ARM64_MOVZ_OP | (ARM64_REG_X1 << 0) | ((func_addr & 0xFFFF) << 5)); emit_uint32_le(ARM64_MOVK_OP_LSL16 | (ARM64_REG_X1 << 0) | (((func_addr >> 16) & 0xFFFF) << 5)); emit_uint32_le(ARM64_MOVK_OP_LSL32 | (ARM64_REG_X1 << 0) | (((func_addr >> 32) & 0xFFFF) << 5)); emit_uint32_le(ARM64_MOVK_OP_LSL48 | (ARM64_REG_X1 << 0) | (((func_addr >> 48) & 0xFFFF) << 5)); emit_uint32_le(ARM64_BLR_OP | (ARM64_REG_X1 << 5)); #elif ARCH_RISCV64 emit_load_imm_riscv(val, RISCV_REG_A0, RISCV_REG_T1); emit_load_imm_riscv((uint64_t)push, RISCV_REG_T0, RISCV_REG_T1); emit_uint32_le((0 << 20) | (RISCV_REG_T0 << 15) | (RISCV_F3_JALR << 12) | (RISCV_REG_RA << 7) | RISCV_OP_JALR); #endif }
by tux3 | 2025-06-04 10:25:57+00:00
But if this doesn't satisfy your curiosity, you might realize this is just pushing the magic blackbox/question mark a little further down the chain

How does the OS and the hardware draw on the screen, actually? All they have is also just calculator stuff, super basic primitives. You can't even do loops in hardware, or even real branches (hardware always "executes both sides" of a branch at once)

Anyways, if you keep digging long enough you eventually end up finding this XKCD https://xkcd.com/435/ =)
by kiitos | 2025-06-04 10:26:29+00:00
I know..! Ignoring an error at a call site is a bug by the caller, that Go requires teams to de-risk via code review, rather than via the compiler. This is well understood and nobody disputes it. And yet all available evidence indicates it's just not that big of a deal and nowhere near the sort of design catastrophe that critics believe it to be. If you don't care or don't believe the data that's fine, everyone knows your position and knows how dumb you think the language is.
by cschmidt | 2025-06-04 10:26:38+00:00
One thing that has helped with ease of use is Overleaf. It is a hosted LaTeX editor with lots of collaboration features (leaving comments, history of edits) that let people collaborate in real time on a paper. It comes with many templates to get you started on a new document. If you're working with collaborators, it has a lock on the market.

LaTeX itself can be easy for simple things (pick a template, and put text in each section). And it can grow into almost anything if you put in enough effort. It is far and away the standard way to write math equations, so if your document has lots of formulas, that's a plus.
by bonki | 2025-06-04 10:27:06+00:00
My mom also knits while watching TV, and she is super fast. I think one secret ingredient is that she doesn't care about making mistakes. Tinier mistakes she just ignores (even if they are visible in the end [I don't like that, so that's something I try to avoid, which adds pressure and slows me down]) and she doesn't mind backtracking and re-doing several rows if she really fucks up.
by exe34 | 2025-06-04 10:27:42+00:00
I think direct collision depends just on the geometric cross-section, no? Gravity can't repulse, so if you're on a direct collision path, nothing will move you off it. The whole slingshot thing is that you get close, you change path, but just because you pass close doesn't mean gravity will make you collide. I might be missing something...
by bell-cot | 2025-06-04 10:27:57+00:00
Yes-ish, but the WWII situation was more complex.

The "suddenly became capable" was a case of aircraft technology advancing substantially every year for decades, and several nations deciding to take advantage of that. Which was not easy to do - you needed a load of specialized aircraft, and weapons systems, and trained air crews, and supply pipelines, and command structure, and doctrine, and practice. Kinda like "we know how to kick a football", vs. "we are fielding a competitive professional football team".

"Unprotected" warships were, in general, not sitting ducks. But state-of-the-art anti-aircraft defenses were also non-trivial. Upside - those were relatively cheap. At least compared to losing your warships, or maintaining a combat air patrol.

Protective air screens (whether carrier-based or land-based) were again non-trivial. And America was particularly incompetent with those until fairly late in the war.
by rbanffy | 2025-06-04 10:28:48+00:00
I like the minimalist approach of the ST line as opposed to the everything-plus-the-kitchen-sink of the Amiga. The simple architecture would have served Atari well if they had the resources to expand the line. The Amiga, sadly, was a lot more complex to upgrade, with a two-tier memory system, lots of custom logic and TV-tied timings - the very things that made it a multimedia powerhouse for the 80's made it a boat anchor for the 90's.
by johngai | 2025-06-04 10:29:26+00:00
We’re a mid-sized logistics company based in the U.S. with about 45 employees. Over the years, we cobbled together a stack of tools—HubSpot for CRM, QuickBooks for accounting, Trello for tasks, Zoho for HR, Mailchimp for email campaigns, and Airtable to connect it all. It worked… but barely.

Earlier this year, we switched to Barawave, an all-in-one AI-powered ERP + CRM platform, and it's been one of the most productive decisions we’ve made.

Here’s what we got out of it:

One system to manage customers, staff, invoices, tasks, inventory, and even email/SMS campaigns.

Their AI layer auto-generates follow-ups, flags customer churn risk, predicts cash flow gaps, and even suggested workflow optimizations we didn’t think of.

No more Zapier/Make integrations—everything connects natively.

Built-in analytics are better than our custom dashboards.

We saved over $9,400/year in subscription fees, and even more in productivity.

Their onboarding was painless, and support was responsive. They helped us map out our processes and replaced legacy Excel-based workflows with visual, no-code automation.

Not affiliated—just a happy customer. If you’re drowning in SaaS sprawl and Frankenstein workflows, Barawave might be worth a look.

Happy to answer questions!
by bregma | 2025-06-04 10:30:29+00:00
It depends on your medium. A good wool has little hooks along the shaft of its staple so once knit the yarn will cling. Cutting a single stitch will not cause a loss of coherency. In fact, a classic knitting technique for crafting something like a cardigan made with wool involves knitting in the round (making a spiral tube, essentially) and then slicing it open for the button band and sleeves. It's called "steeking".
by jakkos | 2025-06-04 10:31:36+00:00
I actually use the fact newline is a pseudo-character pretty often (e.g t-return-d to "delete till newline"). I have the opposite issue where I use Helix most of the time, but sometimes have to compromise with rebinding a "vim mode" and little things like esc-i causing the cursor to move 1 character left drive me up the wall.
by mythz | 2025-06-04 10:32:16+00:00
The pricing doesn't look that compelling, here are the hourly rate comparisons vs runpod.io vs vast.ai:

1x L4 24GB: google: $0.71; runpod.io: $0.43, spot: $0.22 4x L4 24GB: google: $4.00; runpod.io: $1.72, spot: $0.88 1x A100 80GB: google: $5.07; runpod.io: $1.64, spot: $0.82; vast.ai $0.880, spot: $0.501 1x H100 80GB: google: $11.06; runpod.io: $2.79, spot: $1.65; vast.ai $1.535, spot: $0.473 8x H200 141GB: google: $88.08; runpod.io: $31.92; vast.ai $15.470, spot: $14.563

Google's pricing also assumes you're running it 24/7 for an entire month, where as this is just the hourly price for runpod.io or vast.ai which both bill per second. Wasn't able to find Google's spot pricing for GPUs.
by benchly | 2025-06-04 10:32:53+00:00
Scarves and hats are useful, though. Knit sweaters can be very comfortable and look good, if done well.

Granted, I say that as a person who lives in a cold-half-the-year climate, but my point is that, just like coders, there's plenty of shitty knitters out there.

The key with any skill is to approach it as a student, ready to improve. If this is something you wanted to try, get ready to make a few rubbish tea towels before you refine your understanding.
by roenxi | 2025-06-04 10:33:39+00:00
I did invoke feelings - the example was someone paralysed with grief and another person coming over to console them. Which of those do you think is the sociopath?

Managers shouldn't be making empathy conditional in the usual sense of the word, it is necessary in all settings to maintain an orderly, pleasant and respectful workplace. The article probably means something similar to but ultimately not exactly empathy. Probably sympathy, which gets used in the same paragraph. High empathy, low sympathy is par for the course for a good manager in a hard conversation.
by philipisik | 2025-06-04 10:34:55+00:00
Thanks for the positive feedback! You're right. The AI features are part of our paid offerings.

We're currently working on new open source features for the editor core, such as Markdown support, a decorations API, and editor content migrations: https://tiptap.dev/tiptap-editor-v3

We also recently released Hocuspocus V3 (https://github.com/ueberdosis/hocuspocus/releases/tag/v3.1.0).
by seanhunter | 2025-06-04 10:35:24+00:00
Feels more like in 20 years nobody else really has those pain points.

1. For most people using multiple SCMs is just a huge and easily-avoidable mistake. Most people can just mandate a single SCM for a project and then all these problems are moot.

2. For the things listed in TFA

A single diff can’t represent a list of commits

That's what "patch" and "patch format" is for. It works great.

There’s no standard way to represent binary patches

Very unclear why anyone needs this. There's no standard way to code-review a binary diff (it depends what the blob is that you're diffing) so how would it help if you had this standard way to represent the diff?

Diffs don’t know about text encodings (which is more of a problem than you might think)

This goes away if people on a project agree a particular encoding (which is going to be utf-8 lets face it). If someone sends a diff in an incorrect file encoding via diffx it will still apply wrong if someone uses a non-diffx aware (aka standard) tool to apply it. So diffx doesn't really fix this problem.

Diffs don’t have any standard format for arbitrary metadata, so everyone implements it their own way.

This goes away if you just use one SCM for a project which you should anyway for everyone's sanity.
by theandrewbailey | 2025-06-04 10:36:28+00:00
I don't like that this penalizes me for my HTTPS certificate expiring in 41 days. Isn't Let's Encrypt moving to 47 day certificates soon?

https://www.bleepingcomputer.com/news/security/ssl-tls-certi...

I also don't like how this penalizes my feed for not being updated for over 50 days. I haven't blogged since then, so no updates for a while.
by jordwest | 2025-06-04 10:36:51+00:00
Ahh perhaps it’s because Japan is such a high trust society. One of the few places where you can typically expect your lost wallet returned with all the cash inside.

Here in Australia, several Coles supermarkets have installed exit gates that track you on camera as you walk through the self checkout area, and if the machine decides you didn’t pay, it will physically close the gate and flash red.

Woolworths also have cameras in front and above each self checkout, and when the machine inevitably decides that the weight of your reusable grocery bag is an attempt to steal something, it will replay the footage from above to the assistant.

I have actually noticed I’m hassled far less by the Aldi self checkouts, they seem to need a lot less operator intervention so I tend to shop there more nowadays.
by danbreuer | 2025-06-04 10:37:57+00:00
It can't easily, Docker should not be naively treated as a security solution. It's very easy to misconfigure it:

- The Docker daemon runs as root: any user in the docker group effectively also has sudo (--privileged)

- Ports exposed by Docker punch through the firewall

- In general, you can break the security boundary towards root (not your user!) by mounting the wrong things, setting the wrong flags etc.

What Docker primarily gives you is a stupid (good!) solution for having a reproducible, re-settable environment. But containers (read: magic isolated box) are not really a good tool to reason about security in Linux imo.

If you are a beginner, instead make sure you don't run services as the sudo-capable/root user as a first step. Then, I would recommend you look into Systemd services: you can configure all the Linux sandboxing features Docker uses and more. This composes well with Podman, which gives you a reproducible environment (drop-in replacement for Docker) but contained to an unprivileged user.
by whizzter | 2025-06-04 10:38:36+00:00
Back in those days we didn't have that many cores,etc so the raw computation power of the PS3 was an issue in itself and the SPU was a kind of middle-ground between shaders and CPU's so you probably had to use a regular CPU to emulate it.

We have multicore machines with far more cores today so we can match the computation unit count and performance.

The other part was that older consoles (8 and 16 bit era) really needed a lot of cycle-exact emulation to not fail and that requires an order of magnitude faster CPU's to manage emulating it properly and with CPU's hitting the Ghz limits around the same time we thought it'd be impossible to do that level of cycle-exactness needed.

Luckily though, because the PS3 needed optimal multi-core programming and the way to achieve the maximum throughput for that was to use DMA channels to shuffle data between CPU/SPU parts, emulator authors can probably use them as choke-points to handle emulation on a slightly more high level and avoid trying to manage cycle-exact timings.
by ChrisMarshallNY | 2025-06-04 10:38:41+00:00
I've been a "shipper," all my adult life.

It's always been my job to Make Things Happen, as opposed to "Make Things Look Like They're Happening."

A lot of "Making Things Happen" is boring and un-sexy, but absolutely crucial.

I'm always surprised, when I run into folks that are awesome at schmoozing and getting folks to come to the party (I'm not so good at that stuff), and may be extremely creative and talented, but lack the follow-through, to make their dreams a reality.

It's usually when folks like that, team up with folks like me, that magic happens. Rarely, you have it in one person.
by codingdave | 2025-06-04 10:39:39+00:00
I love this app. I use it all the time.

But I do have a complaint, that you can't upload an image via the web from your PC. For those of us who use a DSLR for our birding photos, the UX to have to transfer images to our phone to send them through the app is really painful.

It isn't the end of the world. It just makes me ID my birds in other ways. But it would be nice to provide non-mobile UX options.
by j1elo | 2025-06-04 10:39:55+00:00
Those people were addicts, and not by a bit but deep into it. They should first realize their condition and then apply measures to get out of the hole. I bet they also had very poor sleep quality (regardless of length).

Like crack addicts longing for their dose, I've also seen people not able to work as functional adults until they get their precious morning coffee shot, and when on holidays their company ends up becoming a burden, not able to improvise, not able to stay in uncommon situations without a coffee brewer nearby for a couple days.

I'm a coffee drinker, and I take it around 2 to 3 times a week. To be honest, it takes effort to reach those addiction levels; I don't think it can happen without taking coffee every. single. day., which seems way too much honestly. Like "needing to drink hard alcohol every day seems odd"-levels of wrong.
by b0a04gl | 2025-06-04 10:41:29+00:00
webrtc was supposed to be for real-time comms, not fingerprinting people based on what random apps they have running on localhost. the fact that a browser sandbox still leaks this info is wild. like, you’re telling me port 43800 says more about me than a cookie ever could? and of course, this all runs under the radar—no prompt, no opt-in, just “oh hey, we’re just scanning your machine real quick.” insane. might as well call it metascan™.

kinda makes me nostalgic for simpler times—when tracking meant throwing 200 trackers into a <script> tag and hoping one stuck. now it’s full-on black ops.

i swear, i’m two updates away from running every browser in a docker container inside a faraday cage.
by benchly | 2025-06-04 10:41:42+00:00
If I may ask, do you suffer from anxiety and depression?

I do. As part of that whole package, I find it exceedingly difficult to focus on more than one thing at a time. As much as I would love to sit and code a bit while watching tv or listening to an audio book, I simply cannot do it. I've tried many times and find it impossible to focus on my project while my brain is more interested in the easy attention economy of the television.

Conversely, my wife is very talented in the fiber arts. She seems to be able to sew, crochet and knit while watching tv without any effort at all, paying attention to both whatever show we have on and what she's doing. Granted, she's been at it for well over a decade so there's some learned adaptation there, but as far back as I can remember she has never had the same problem I do. She also does not suffer from anxiety and depression on the level that I do.

I've been wondering if there's a correlation for awhile now. Interesting that this popped up on HN and pulled me out of lurk mode.
by squishington | 2025-06-04 10:41:51+00:00
Earning potential should be considered in the context of increased wealth disparity though. After all, the rich and the poor are competing for the same resources. I work for a well known chip design company as an embedded software developer, and wages in my country (Australia) have not kept up with house prices (like many countries). Part of the housing price equation is buying power of the wealthy, which prices out younger people and those without family wealth. There's no scenario where my wages get me out of the rent cycle, no matter how productive I am and how much unpaid overtime I do to further the company goals.
by bonki | 2025-06-04 10:41:53+00:00
I explained in another comment why it isn't throwing money out of the window. In my experience, it often costs a lot more money in the long run to not do it. The underlying problem is that most companies don't really think mid- or long-term and are happy with chasing fast money and eventually throwing it all away anyway because the product isn't competitive anymore and/or maintenance becomes too expensive. These are problems which definitely can be mitigated, but it requires a good team.
by mjburgess | 2025-06-04 10:42:01+00:00
Just thinking about this from a proxmox pov -- applying this advice, do you see an issue with then saying: take a copy of all "final" VMs, delete the VM and clone the copy?

And, either way, do you have a thought on whether you'd still prefer a docker approach?

I have some on-prem "private cloud"-style severs with proxmox, and just curious about thinking through this advice.
by oulipo | 2025-06-04 10:42:06+00:00
"I just also happen to think that all those issues are not dramatically changing because of AI"

-> this is your white westerner privilege right here, "I just to happen to think it's not such a bad thing" (mainly because you're not confronted to the problems it actually already generates for people in vulnerable positions)

that's exactly the point I'm making

Yes you "happen to think that all that is not too bad". BECAUSE you're privileged. And lacking the empathy or will to put time into thinking in how it already dramatically effect some populations... you're mostly just proving my point
by kiitos | 2025-06-04 10:42:13+00:00
> A type assert/switch is exactly how you implement Error.Is [^0]

errors.Is is already implemented in the stdlib, why are you implementing it again?

I know that you can implement it on your custom error type, like your link shows, to customize the behavior of errors.Is. But this is rarely necessary and generally uncommon..

> If you define errors with Errors.New you use string comparison, which is only convenient if you export a top level var of the error instead of using Errors.New directly.

What? If you want your callers to be able to identify ErrFoo then you're always going to define it as a package-level variable, and when you have a function that needs to return ErrFoo then it will `return ErrFoo` or `return fmt.Errorf("annotation: %w", ErrFoo)` -- and in neither case will callers use string comparison to detect ErrFoo, they'll use errors.Is, if they need to do so in the first place, which is rarely the case.

This is bog-standard conventional and idiomatic stuff, the responsibility of you as the author of a package/module to support, if your consumers are expected to behave differently based on specific errors that your package/module may return.

> Complex interfaces like HTTP and filesystems will want to retry on certain conditions such as timeouts, for example. Sure most error checks by volume might be satisfied with a simple nil check, it's not fair to say branching on specific errors is not common.

Sure, sometimes, rarely, callers need to make decisions based on something more granular than just err != nil. In those minority of cases, they usually just need to call errors.Is to check for error identity, and in the minority of those minority of cases that they need to get even more specific details out of the error to determine what they need to do next, then they use errors.As. And, for that super-minority of situations, then sure, you'd need to define a FooError type, with whatever properties callers would need to get at, and it's likely that type would need to implement an Unwrap() method to yield some underlying wrapped error. But at no point are you, or your callers, doing type-switching on errors, or manual unwrapping, or anything like that. errors.As works with any type that implements `Error() string`, and optionally `Unwrap() error` if it wants to get freaky.
Uberization of Knowledge Work
by narayan_prasath | 2025-06-04 10:42:20+00:00
If tactical cognition is liquefying, the scarce skill is meta-work: designing feedback loops, deciding which questions even deserve agents, curating the boundary where ambiguity must remain human. Strategy mutates from direct problem-solving to problem-framing—choosing which constraints matter, and which signals count as truth https://metaflow.life/blog/uberization-of-knowledge-work
by laserbeam | 2025-06-04 10:42:27+00:00
> The header formats are meant to be very simple key/value pairs that are known by the parser, and not free-form bits of metadata. That's what the "meta" blocks are for.

One more thing you should prepare for whenever you have "free-form bits of metadata". They somehow turn into: "some user was storing 100MB blobs in there, and that broke our other thing".