Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Does Georgism work? Five years later (astralcodexten.com)
    56comments
  2. DeepSeek Elastic Compute (DSec) (arxiv.org)
    43comments
  3. PipePipe: NewPipe hard fork implementing SponsorBlock (github.com/infinityloop1308)
    168comments
  4. Show HN: Reladraw – A diagram language where you decide where to place things (github.com/reladraw)
    52comments
  5. Evolving programming languages in the AI era (dashbit.co)
    10comments
  6. A searchable library of forgotten public-domain film clips from 1915 onward (movingimagearchive.com)
    25comments
  7. Drawgent: Coding agent on a live Excalidraw canvas (tangled.org/yanndegat.tngl.sh)
    32comments
  8. Go Concurrency Distilled (antonz.org)
    7comments
  9. Welcome to the Medical Clinic at the Interplanetary Relay Station (lightspeedmagazine.com)
    8comments
  10. Turning GLM-5.3-Flash into a Jev-like decision model (privatemode.ai)
    7comments
  11. Reverse-engineering the Intel 8087's tangent algorithm: more than CORDIC (righto.com)
    4comments
  12. Fifteen years later, the Apple Cards origin story (lexontech.org)
    88comments
  13. LA Metro has some of the slowest escalators on Earth (basin.la)
    57comments
  14. Promising discoveries about the potential for life on one of Saturn’s icy moons (fu-berlin.de)
    9comments
  15. Biology might not be quantum, but its math is quantumlike (quantamagazine.org)
    4comments
  16. The Evolution of Vending Machines (saturdayeveningpost.com)
    2comments
  17. How one Twitch chat message became code execution on a streamer’s PC (scrt.ch)
    11comments
  18. HomeBody: A humanoid that explores, remembers, and acts on its own (stanford.edu)
    2comments
  19. ASML says it sold 'absolutely nothing' in Europe in 2026 (tomshardware.com)
    403comments
  20. Modern Object Pascal Introduction for Programmers (castle-engine.io)
    59comments
  21. The Lost Atomic Update on Loongson CPU (jia.je)
    6comments
  22. Generate fonts where every LLM token is the same width (mesh.host)
    6comments
  23. How I changed teaching after AI managed to do all my homework assignments (thelastsoftwareengineer.substack.com)
    134comments
  24. How to keep enjoying programming in a world of LLMs (haskell.org)
    210comments
  25. Reading’s Bayeux Tapestry (diamondgeezer.blogspot.com)
    1comments
  26. Analyzing Frontier Model Progress with My Favourite Game: Prince of Persia (blog.priyan.in)
    38comments
  27. Dutch designer made DE9: Closer to the Edit into a playable web-based instrument (creativeboom.com)
    1comments
  28. Breaking Up with Google Play: Why Conversations Is Now Free (gultsch.de)
    251comments
  29. The Rise of Audio AR (dbreunig.com)
    10comments
  30. The Murky History of Soviet-Born Tetris (mitpress.mit.edu)
    32comments

Go Concurrency Distilled

26 pointsby 10h agoantonz.org
7 comments
53m agoHN ↗

The concurrency and threading in Go just feels like magic compared to every other language. I'm a goroutine addict and I refuse to be rehabilitated.

Just from observations over the years, I don't think there's any other language quite like this, in terms of how things can end up happening in any thread.

30m agoHN ↗

Managing channels and making sure they are closed just once is quite messy compared to other languages. The Go channel axioms[1] don't make much sense: why does closing a channel multiple times panic, but reading from a closed channel returns a zero value?

Kotlin gets this right. On send/receive, you can use trySend or tryReceive if you want to avoid exceptions. Considering Kotlin also has coroutines and structured concurrency, concurrency in Kotlin feels more ergonomic to me than Go. At least if you want to get concurrent code with least amount of bugs and not just least amount of extra keywords.

[1] https://dave.cheney.net/2014/03/19/channel-axioms

15m agoHN ↗

Yeah, channels are the main pain point. In addition to the axioms being simply weird (because it's an easy set to implement), another major problem is that you're essentially forced to use them because they're the only things that can work with `select`, and that's the only reasonable option for many operations. Especially if you touch other code, like the stdlib.

That and the lack of tooling around mutex usage / concurrency correctness. The race detector is legitimately excellent and every language needs it, but it can only catch races that you trigger in tests/builds with it enabled, and few projects write anywhere near sufficient concurrent tests to catch issues in practice. There isn't even a "this var claims to be protected by lock X, but it is not held [here]" lint, or "this var is atomic but used non-atomically [here]" (though this one is significantly less of an issue with generics, as safe zero-cost abstractions now exist).

28m agoHN ↗

Go and Julia are fun languages.

In production, Go has proven solid for several years. It is best when used with the native code people ported.

There are only two issues I encountered:

1. getting the legacy ancient C source meta-circular Go compiler working to port the Go boot-strap compiler upgrade chain is a kick in the pants. However, once it is on a architecture it has proven rather resilient.

2. memory limited systems can develop reliability issues, as Go programs will often ungracefully throw hard to diagnose unrelated errors during each crash. A good metric is 3:1 of your average load as a safety margin (if you see 2GiB in average RAM use, make sure to over-provision the host with 8GiB RAM etc.)

Other than the above short list of edge cases, if you join a pure Go project it is usually pretty reliable. Most community folks interested in the language seem fairly competent at building stuff that is fun. =3

5m agoHN ↗

I learned Haskell before that, and frankly the concurrency in Go feels similar, but is a definite downgrade due to the lack of STM. (You can implement channels and select using STM, so these don’t have to be in the standard library.) The concurrency design in Haskell feels like true magic.

4m agoHN ↗

> in terms of how things can end up happening in any thread

Doesn't that describe pretty much any green thread style concurrency implementation.