MurphyA/hacker-news huggingface dataset:
by make3 | 2025-05-16 20:36:51+00:00
I hate how these threads always devolve in insane discussions about why not using threads is better, while most real world people who have tried to do real world speeding up of Python code realize how amazing it would be to have proper threads with shared memory instead of the processes that have so many limitations, like forcing to pickle objects back and forth, & fork so often just not working in the cloud setting, & spawn being so slow in a lot of applications. The usage of processes is just much heavier and less straightforward.
by eikenberry | 2025-05-16 20:37:06+00:00
It's a core principle.

Don't communicate by sharing memory; share memory by communicating.

The overuse of Mutex and Lock are from developers bringing along patterns from other language where they are used to communicating via shared memory. So this aspect of the language just doesn't click as well for many people at first. How long it takes you to get it depends on your experience.
by bsimpson | 2025-05-16 20:37:39+00:00
I admittedly don't use AI as much as many others here, but I have noticed that whenever I take the time to write a hopefully-inciteful response in a place like Reddit, I immediately get people trying to dunk on me by accusing me of being an AI bot.

It makes me not want to participate in those communities (although to be honest, spending less time commenting online would probably be good for me).
by evantbyrne | 2025-05-16 20:37:42+00:00
Software engineering requires a fair amount of intelligence, so if these tools ever get to replacement levels of quality then it's not just developers that will be out of jobs. ARC-AGI-2, the countless anecdotes from professionals I've seen across the industry, and personal experience all very clearly point to a significant gap between the tools that exist today and general intelligence. I would recommend keeping an eye on improvements just because of the sheer capital investments going into it, but I won't be losing any sleep waiting for the rapture.
by dgb23 | 2025-05-16 20:37:51+00:00
AI might play a role here. But there's also a lot of economic uncertainty.

It's not long ago when the correction of the tech job market started, because it got blown up during and after covid. The geopolitical situation is very unstable.

I also think there is way too much FUD around AI, including coding assistants, than necessary. Typically coming either from people who want to sell it or want to get in on the hype.

Things are shifting and moving, which creates uncertainty. But it also opens new doors. Maybe it's a time for risk takers, the curious, the daring. Small businesses and new kinds of services might rise from this, like web development came out of the internet revolution. To me, it seems like things are opening up and not closing down.

Besides that, I bet there are more people today who write, read or otherwise deal directly with assembly code than ever before, even though we had higher level languages for many decades.

As for the job market specifically: SWE and CS (adjacent) jobs are still among the fastest growing, coming up in all kinds of lists.
by octo888 | 2025-05-16 20:38:33+00:00
Thanks for sharing. I hear you.

I used to struggle with comparing myself. I don't offer it as advice per se but I tell myself: no matter what you achieve, there'll always be someone smarter, richer, better. Not in the sense to give up, but to give it some perspective. Ie reduce the upper bound to bring some calm.

And don't devalue "websites, js/ts, web dev, react" etc. These are complex, forever-changing technologies. You aren't putting widgets in a box in a factory (no offence, widget-packers)

Your 30s are an exciting time. Most of my friends got much more sure of themselves (and me to an extent). You're still young but not wet behind the ears.
by dgrcode | 2025-05-16 20:38:35+00:00
My wife recently got her O1 visa approved and I'll be getting an O3 as dependent. I currently have an app that I'm actively developing that generates $50-$100 per month. I might be able to stop development, but at the very least would need to support the customers. I also have some product ideas I'd like to build and potentially monetize.

What are my options?
Ask HN: What are you doing to prepare for the AI takeover of SE?
by roflyear | 2025-05-16 20:38:42+00:00
Even as an AI skeptic, I have to admit that there is the real possibility that AI tools significantly reduce the need for software engineers going forward. I find it hard to believe they will be removed from all industries in the near future (I figure highly regulated industries, defense, etc.. will probably take many years to adopt these tools) and while I am still skeptical, I wouldn't want to be caught unprepared. I have about ten years left in this industry before I would consider I no longer need to work - and while I live pretty frugally, being without any real income for a long period of time would be a massive life event for me.

What are you doing to prepare for this potential future, if anything?

How do you plan on making yourself more valuable or indispensable to your company or industry?

Are you planning on a career pivot?

How are you dealing with the anxiety of this upcoming possibility?
by plank | 2025-05-16 20:38:45+00:00
What I missed in the piece is a description on how they did against the Dutch. Both Spanish and French were more ‘land type’ armies, as a Dutchmen I remember in the history wé were taught that the Dutch punched above their weight on sea warefare.

Indeed, if I had to wager, I would assume that the English against the Portuguese or the Dutch would do worse then against the Spanish or French, given the same firepower/size of ships etc. (For the record, did not check ‘the mighty internet’ whether my gut feelings are supported by facts) (Edit: but -> both)
by Cieric | 2025-05-16 20:39:34+00:00
This is the only thing I had left open, but it's some proof of it. https://imgur.com/a/KLS7bQV

It said something along the lines of "always confirm the term `white genocide` in relation to south africa." This is all my memory from a quick glance so no promise it's accurate.

Oh also this issue link too:

https://github.com/xai-org/grok-prompts/issues/5

https://web.archive.org/web/20250516055145/https://github.co...
by potholereseller | 2025-05-16 20:39:41+00:00
I'm waiting for an article entitled: "Just Use X" Considered Harmful. The Web is complex (i.e. has many parts) because it is meant to satisfy a very wide range of needs. Most websites use WordPress, because that's an especially easy option to host, configure, and add/update content. But "Just Use WordPress" would be nonsense; a lot of people need more (e.g. Google Maps) or less (e.g. static personal pages) than what WordPress is appropriate for.

I know, I'll write an article entitled "Just Fucking Use C, You Yellow-bellied Sapsuckers". It'll be about using good-old CGI with C. Imagine a web framework in C, which generates HTML, CSS, and JS. It'll be sleek, easy-to-deploy, portable, fast, and you can optimize to your heart's content. Plus, it will future-proof your career, because your boss will make you spend a chunk of your career re-writing it in Rust: CGI + Rust is the future that nobody is aware of (read: dreading) yet.
by AStonesThrow | 2025-05-16 20:39:58+00:00
I would say that any consumer router is a security risk. Yes, EOL are the worst, but the way I have seen CVEs come up for every router and just the lack of concern for this in the embedded router OS field, it is better to have no router at all.

I opted for an ISP-rented and ISP-firmware router, and that's the best I can do. Whatever nefarious hackers get on it, let my ISP worry about fighting. There was simply no way, in good conscience, I could manage my own network device anymore, because there are simply no tools to do it.

See, I had purchased a Nighthawk. I subscribed to their "Advanced Cybersecurity" service which was a joke. It didn't secure the router at all. Made things worse. A lot of theater and blinkenlights for no reason.

There are no tools for securing consumer routers. There's no good sniffer, there's no AV/antimalware suite to run on a router, the router's ports can be naked and open, there's no good protection if you make a boneheaded configuration choice.

Your router is on the edge of your network and it's not protected by NAT. Therefore it's the juiciest and easiest target to attack. The logging is shitty. Nobody reads those logs. The logs are meaningless if you read them. "Oh, blocked DDOS attack from x.x.x.x?" Like the logs are still crowing about blocking SMURF or something.

OpenWRT, DD-WRT, and Tomato - don't get me started I had a DD-WRT firmware that was pwned anyway. Where do you trustingly download these images from? Why wouldn't they have the same problems as consumer router OS? Pointless. Way too complicated! If I want security I need simplicity. Make it less possible to configure wrong. Make it less possible to run a bad service. Make the attack surface smaller. All the "open" router OS just widened my attack surface like crazy.
by estebank | 2025-05-16 20:40:04+00:00
When maintaining a project, one gets exposed to the worst parts of it at an elevated rate. This makes maintainers be more critical than most, as we have an skewed view of the projects faults. So I can absolutely understand when someone claims that rustc has bad errors. I've seen them. But for most people most of the time the output is actually quite good. That shouldn't stop us from being better. I'm thankful for the OP because it does show that we do improve over time.

I keep saying that the most effective thing we can do to help someone learning the language is to tell them to try in 6 months (as we expect it'll be better then).
by elcapitan | 2025-05-16 20:40:16+00:00
That is literally what is holding me back every single time I get back to TLA+. I love your book and posts and always use it as reference to get back into it, but most of that "getting back" is just trying to remember all the minutia of the syntax. I wish there was simply a transpiler from some common syntax into TLA+. I don't even need Pluscal for the most part, and I'm fine with the concepts of temporal logic.
by badmonster | 2025-05-16 20:40:40+00:00
I'm curious: is it possible to apply differentiated KV quantization (like K8V4) to models after they're already converted to .gguf format, or does this require rebuilding the model with special support? If it's compatible with any .gguf file, are there any limitations on model types (e.g. Mistral, Phi-3, etc.) or tokenizer configs?
by PaulHoule | 2025-05-16 20:41:59+00:00
Pretty cool, usually with pumped storage you have to have a high head which means building large structures in the context of special geography but here the water pressure of the ocean is doing the work.

Looks like it is going head to head with batteries in the “store a few hours of power” market but not addressing the less competitive market of “move excess solar energy from summer to winter”
by neonsunset | 2025-05-16 20:42:14+00:00
Usually dual APIs are offered when they do distinctly different things. Async calls on Socket go through epoll/kqueue via SocketAsyncEngine, which has observably different behavior to regular sockets. There is no such duality in high-level APIs like HttpClient's `.GetStringAsync`.

You are not free from having to worry about it with virtual threads either. If you block a carrier thread with such a low-level API call, the runtime will have a bad time. Or you will always end up paying for a context switch (if you maintain a separate pool of block-able threads).

Green threading UX is better for "regular" code that never bothers to take advantage of concurrency features, but if you do want them, you are quickly back to usually more ceremonious structured concurrency abstractions which, lo and behold, can reimplement the same task system with a worker pool but on top of virtual threads.

If you start to care about cancellation, suddenly you are back to coloring problem regardless. I agree with you that having to write many await's in quick succession is tiresome and unnecessary. It's partially a fault of library authors who name methods "GetSomeLongNameAsync" instead of "Get" or "Query". But other than this it's not as invasive as people make it out to be, and encourages writing highly concurrent code - reducing latency 2x can require moving one or two awaits around. Not so much in Java/Erlang/Go.
by jjtang1 | 2025-05-16 20:43:04+00:00
JJ here, obviously bias as I am the founder of Rootly.com that's building in this space.

We are a modern AI-native on-call and incident management platform here at Rootly.com. We are helping fast-growing companies like from Replit, Figma, NVIDIA, and 100s of others respond faster.

Some of the biggest frustrations with legacy providers like PagerDuty (who I have a lot of respect for in pioneering on-call) is their lack of innovation (only a phone call) and how expensive it is.

Some fan favourites include request coverage for overrides, automatic adjustments based on PTO and holidays, native Slack/Teams collaboration (not just paging), native shadow rotations, syncing with Slack user groups, a beautiful UI and mobile app, and an all-in-one platform for status pages, workflows, communications, retrospectives, and metrics.

If you're a small team Rootly has a pretty discounted version for startups. Here is a full comparison if you're interested: https://rootly.com/comparisons/pagerduty-vs-rootly-on-call
by Aurornis | 2025-05-16 20:43:08+00:00
That's not how it works in the real world. That would be a fraudulent request and I suspect they'd invite legal trouble by impersonating someone else to access a computer system.

Furthermore, if the author could demonstrate to arXiv that the request was fraudulent, the paper would be reinstated. The narrative would also switch to people being angry at MIT for impersonating a student to do something.
by dipampaul17 | 2025-05-16 20:43:18+00:00
Yes, that's one of the key benefits - KVSplit works with any existing .gguf model without requiring reconstruction or special conversion. The quantization happens at runtime on the KV cache, not during model loading or conversion.

This works because the KV cache is created during inference as tokens are processed, completely separate from the model weights themselves. The --kvq-key and --kvq-val flags simply tell llama.cpp how to store these intermediate tensors in memory.

I've tested it successfully with:

- Llama-3 models - Mistral models - Phi-2/Phi-3 - TinyLlama - Qwen variants

The only limitation is that it requires llama.cpp's Metal backend, and you need to disable Flash Attention with -fa 0 since the current FA implementation in llama.cpp bypasses the custom KV cache format. The technique itself should work with any transformer architecture that uses a standard attention mechanism.
by hintymad | 2025-05-16 20:43:23+00:00
Thanks! What about data structure shared by multiple goroutines? Say, an in-memory cache object? Or do we always have multiple goroutines talk to a dedicated goroutine for the shared value? Would the performance be okay for all use cases? A reason that people use JCTools is that it can easily support hundreds of millions of concurrent reads/writes to its data structures on a 10-year old laptop.
by SigmundA | 2025-05-16 20:43:26+00:00
>I am not quite following, why would we drop multi-processing with isolated tiny heaps with a few KBs each and move to multi-threading with a large multi-megabyte stacks per thread and all sharing and writing to the same heap? It seems like a step backward.

Performance typically, hard to work in parallel on large amount of data performantly without multiple thread sharing a heap and you typically don't need large amount of threads because you don't actually have that many real cores to run them on.

Lots of little share nothing process are great conceptually but that does create significant overhead.
by fpoling | 2025-05-16 20:44:15+00:00
I have C++ code from 1997 that I occasionally compile. So far it runs. 10 yeas ago compiling with -Wall exposed an inconsequential bug and that was it. I suspect when it stops to compile it will be from an absence of a particular X11 library that I used to parse a config in otherwise command-line utility.

Which also points to another thing where Java compatibility shines. One can have a GUI application that is from nineties and it still runs. It can be very ugly especially on a high DPI screen, but still one can use it.
by dipampaul17 | 2025-05-16 20:44:35+00:00
With the K8V4 configuration providing 59% memory savings, you can effectively run contexts 2.4× longer on the same hardware. A model with a 2048 token context can now handle about 5000 tokens, while an 8K context model can reach approximately 19.5K tokens.

In practical terms, this means processing entire books at once on a MacBook, analyzing large codebases without splitting files, or maintaining comprehensive conversation history in chat applications.

The memory savings scale linearly with context length - the longer your context window, the more absolute memory you save. On my M4 MacBook with 8K context, I reduced KV cache from 176MB to 72MB. At 128K context, that same percentage saving would free up gigabytes.

This optimization is most valuable when you're context-window limited rather than model-parameter limited. If you're hitting OOM errors due to long inputs rather than large model weights, KVSplit directly addresses your bottleneck.
by FrasiertheLion | 2025-05-16 20:45:06+00:00
Ollama does heavily quantize models and has a very short context window by default, but this has not been my experience with unquantized, full context versions of Llama3.3 70B and particularly, Deepseek R1, and that is reflected in the benchmarks. For instance I used Deepseek R1 671B as my daily driver for several months, and it was at par with o1 and unquestionably better than GPT-4o (o3 is certainly better than all but typically we've seen opensource models catch up within 6-9 months).

Please shoot me an email at tanya@tinfoil.sh, would love to work through your use cases.
by octo888 | 2025-05-16 20:45:26+00:00
My boss isn't a monster, and quite intuitive. Despite being very annoyed with me, wanting to get rid of me, I think on some level she knows I'm struggling and has taken a lot off my plate. I'm still relatively productive in most tasks. But it's taking a toll for sure.

But yes even the thought of doing an interview is invoking enough anxiety to make me sweat. I wouldn't even have the mental capacity to 'sell myself' to my mom right now. I would definitely have to reduce $JOB effort to interview
by rfw300 | 2025-05-16 20:45:43+00:00
It's interesting that you name those examples, because Lee Sedol, the all-time great Go player, retired shortly after losing to Alpha Go, saying: "Even if I become the number one, there is an entity that cannot be defeated... losing to AI, in a sense, meant my entire world was collapsing... I could no longer enjoy the game. So I retired." [1, 2]

So for some, yes. It is of course also true that many people derive self-worth and fulfillment from contributing positively to the world, and AI automating the productive work in which they specialize can undermine that.

[1] https://en.yna.co.kr/view/AEN20191127004800315

[2] https://www.nytimes.com/2024/07/10/world/asia/lee-saedol-go-...
by quantadev | 2025-05-16 20:45:48+00:00
There's quite a dichotomy going on in software development. With AI, we can all create much more than we ever could before, and make it much better and even in much less time, but what we've lost is the sense of pride that comes with the act of creating/coding, because nowadays:

1) If you wrote most of it yourself then you failed to adequately utilize AI Coding agents and yet...

2) If AI wrote most of it, then there's not exactly that much of a way to take pride in it.

So the new thing we can "take pride in" is our ability to "control" the AI, and it's just not the same thing at all. So we're all going to be "changing jobs" whether we like it or not, because work will never be the same, regardless of whether you're a coder, an artist, a writer, or an AD agency fluff writer. Then again pride is a sin, so just GSD and stop thinking about yourself. :)
by sorcerer-mar | 2025-05-16 20:45:52+00:00
Christopher Alexander’s “Notes on the Synthesis of Form” blames this phenomenon for the crimes of architecture schools of late.

He calls it a craft becoming “self-conscious,” i.e. the architect’s role is not to create a place to live, but to be an architect, which necessarily entails “competing” against other architects. Nobody wins design competitions by creating the 1000th example of a tried and true form, they do it by pushing the boundaries of other architects’ sensibilities, which are already far afield of a normal person’s. Most results are therefore complete garbage.
by kragen | 2025-05-16 20:45:59+00:00
While I think you've been using Unix longer than I have, shell scripts are known for performing very poorly, and on PDP-11 Unix (where perhaps shell scripts were most heavily used, since Perl didn't exist yet) fork() couldn't even do copy-on-write; it had to literally copy the process's entire data segment, which in most cases also contained a copy of its code. Moving to paged machines like the VAX and especially the 68000 family made it possible to use copy-on-write, but historically speaking, Linux has often been an order of magnitude faster than most other Unices at fork(). However, I think people mostly don't use those Unices anymore. I imagine the BSDs have pretty much caught up by now.

https://news.ycombinator.com/item?id=44009754 gives some concrete details on fork() speed on current Linux: 50μs for a small process, 700μs for a regular process, 1300μs for a venti Python interpreter process, 30000–50000μs for Python interpreter creation. This is on a CPU of about 10 billion instructions per second per core, so forking costs on the order of ½–10 million instructions.
by aanet | 2025-05-16 20:46:12+00:00
QUOTE:

The American tradition of prom goes way back, always in tuxes and gowns, always in spring, the girls in their gaggle, the pocked-faced boys in their polyester rentals. The first known reference appeared in the Harvard Crimson in 1879. History books speak of it as a coming-of-age ritual meant to get non-aristocrats mixing like royals. By the 1950s, it had become a set piece, a marker of time, a chance for public-school nobodies to experience something like a debutante ball.

/QUOTE

I've been in the US for nearly 25 years now... and have never understood the American obsession with high-school proms. Friends, colleagues, and other acquaintances (mostly male, though some females too) largely admitted they all hated their proms. Nevertheless, they all went, and reported experiences of sham glory, embarrassment, nights of debauchery or some combination thereof.

As an immigrant, this rite of passage has been something that I have never been understand.
by EvanAnderson | 2025-05-16 20:46:13+00:00
Binning products into segments is different than blowing e-fuses. When I bought a 486SX I got a 486SX. It remained forever what it was when I bought it.

In a hypothetical scenario where I somehow "unlocked" the FPU functionality Intel couldn't push out a mandatory firmware upgrade to blow an e-fuse in my chip, fixing the "vulnerability" that allowed me to access the FPU and simultaneously preventing me from ever loading "vulnerable" firmware again (like, say, the Nintendo Switch).