Hacker Blogs
Work in progress: 15,409 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #451

N

Nathaniel J. Smith

Personal blog · vorpus.orgprogrammingsystems

Nathaniel J. Smith's personal blog at vorpus.org covers programming and systems. Since 2016, 126 different Hacker News readers have linked it 170 times, most often “Notes on structured concurrency, or: Go statement considered harmful”. No feed was found, so read it on the site itself.

No feed foundVisit the blog
170mentions?
13recommend?
126HN people?
2016–2026first – last linked?
Links on Hacker News per year · peak 27 in 2020

Sometimes recommended · 13 of 40 sampled comments recommend it?

Why HN links it

HN readers link this blog mainly for its structured concurrency essay, which commenters cite in discussions of async and Python, and for posts on Trio, cancellation and timeouts.

Recommended for · 13 comments
Called a damn good read and one of the best explanations of async bugs; the Trio posts are called very readable and compelling.

Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

Home page of Nathaniel J. Smith, research scientist at UC Berkeley who studies how people use and understand language.

Most-linked posts?

  1. Notes on structured concurrency, or: Go statement considered harmful
    65 people · 87 mentions · first linked 2018-04-25
  2. I'm not collaborating with Kenneth Reitz
    21 people · 23 mentions · first linked 2019-05-04
  3. Timeouts and cancellation for humans (2018)
    15 people · 16 mentions · first linked 2018-01-11
  4. Some thoughts on asynchronous Python API design in a post-async/await world
    14 people · 14 mentions · first linked 2016-11-06
  5. Why does calloc exist?
    4 people · 4 mentions · first linked 2016-12-05
  6. Notes on structured concurrency, or: Go statement considered harmful
    3 people · 3 mentions · first linked 2019-05-28
  7. /blog/notes-on-structured-concurrency-or-go-statement-considered-harmful
    3 people · 3 mentions · first linked 2019-07-11
  8. Async that guarantees the function is finished
    2 people · 2 mentions · first linked 2020-05-24

What Hacker News says?

  1. TaskGroup in asyncio has been promised at least as far back as Python 3.8 [1]. They're still not in the draft "What's new in python 3.11" [2] and searching the web didn't return any official statements. I believe they're planned but don't believe they'll arrive any time soon. If you want to use structured concurrency now, IMO the best bet is to use Trio directly. Reading posts by the author makes it clear that every…

    Comment linking /blog/control-c-handling-in-python-and-trio/

    on “A viable solution for Python concurrency”
  2. Submitted Why does calloc exist? as a story · 553 points

    HN discussion
  3. Curio's spiritual successor is Trio [1], which was written by one of the main Curio contributors and is more actively maintained (and, at this point, much more widely used). Like Curio, it's much easier to use than asyncio, although ideas from it are gradually being incorporated back into asyncio e.g. asyncio.run() was inspired by curio.run()/trio.run(). I have used Trio in real projects and I thoroughly recommend i…

    Comment linking /blog/some-thoughts-on-asynchronous-api-design-in-a-post-asyncawait-world/

    on “A viable solution for Python concurrency”
  4. Submitted Why does calloc exist? (2016) as a story · 303 points

    HN discussion
  5. The video (or blog post) below is one of the best explanations I've seen about what subtle bugs are easy to make with asyncio, why it's easy to make them, and how the trio library addresses them. But yes, consider alternatives before you pick asyncio as your approach! Talk: https://www.youtube.com/watch?v=oLkfnc_UMcE Blog post: https://vorpus.org/blog/notes-on-structured-concurrency-or-g...

    Comment linking /blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/

    on “A viable solution for Python concurrency”
  6. Submitted Notes on structured concurrency, or: Go statement considered harmful as a story · 301 points

    HN discussion
  7. > This is why Golang uses goroutines. This is why Javascript made async/await. This is why project loom exists. This is why erlang uses erlang processes. JavaScript async/await is different from the others. It requires two colors of functions [1], and it conflates how the code is written with how it's executed, so it has the same problem you were talking about at the start of your comment. Also, JavaScript async/awa…

    Comment linking /blog/some-thoughts-on-asynchronous-api-design-in-a-post-asyncawait-world/

    on “How io_uring and eBPF Will Revolutionize Programming in Linux”
  8. Submitted Some thoughts on asynchronous Python API design in a post-async/await world as a story · 301 points

    HN discussion
  9. It's convuluted, it's not structured concurrency ( https://vorpus.org/blog/notes-on-structured-concurrency-or-g... ), fundamentally despite being async/await a lot of networking code is based on callbacks anyway (see: asyncio.Protocol), and I've had a lot of trouble debugging code that spawn tasks because asyncio code has zero obligation to care about any of the tasks it spawns.

    Comment linking /blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/

    on “Django 3”
  10. Submitted I'm not collaborating with Kenneth Reitz as a story · 269 points

    HN discussion
  11. The context here is that TaskGroup + except* enable "structured concurrency" https://vorpus.org/blog/notes-on-structured-concurrency-or-g...

    Comment linking /blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/

    on “Python 3.11.0 final”
  12. Submitted Go Statement Considered Harmful (2018) as a story · 176 points

    HN discussion
  13. kmatthewc · 2020-02-08Recommends
    https://vorpus.org/blog I was particularly influenced by this post. https://vorpus.org/blog/notes-on-structured-concurrency-or-g...

    Comment linking /blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/

    on “Ask HN: What are good solo developer blogs that you enjoy reading?”
  14. Submitted Notes on structured concurrency, or: Go statement considered harmful (2018) as a story · 157 points

    HN discussion
  15. > First, Rust prefers unique ownership and acyclic data structures. You can make cyclic structures work if you use RefCell and Rc and Weak, but you're giving up the static guarantees that the borrow checker gives you in favor of a bunch of dynamic checks for 'is this in use' and 'is this still alive', One way to get around that is to instead of doing it like the very structureless async way actually impose lifetime…

    Comment linking /blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/

    on “Why asynchronous Rust doesn't work”
  16. Submitted Timeouts and cancellation for humans (2018) as a story · 134 points

    HN discussion
  17. Well... maybe the people who have stopped working on it due to the mysterious disappearance of 30,000 fundraised dollars, selling paid support but "delegat[ing] the actual work to unpaid volunteers", and a pattern of other issues from other community members who have not spoken up about them. https://vorpus.org/blog/why-im-not-collaborating-with-kennet... https://news.ycombinator.com/item?id=19826680

    Comment linking /blog/why-im-not-collaborating-with-kenneth-reitz/

    on “Uv: Running a script with dependencies”
  18. Submitted Control-C handling in Python and Trio as a story · 51 points

    HN discussion
  19. spankalee · 2026-09-12Recommends
    Wow, this is really helpful and timely! I'm building a new language with async/await and had to make a lot of these decisions, but I didn't have this organized of a framework to ground myself in. I'm happy to see it clearly that I choose mostly Trio with a bit of JavaScript. My language (Zena's) async docs page: https://zena-lang.dev/guide/async/ I think I might do a pass and try to call out the decision points more…

    Comment linking /blog/timeouts-and-cancellation-for-humans/

    on “A Design Space Exploration of Async/Await”
  20. Submitted Some thoughts on asynchronous API design in a post-async/await world (2016) as a story · 46 points

    HN discussion
  21. With all the alleged drama surrounding the requests module and the promised async support, I am pleased there is a drama-free alternative. https://vorpus.org/blog/why-im-not-collaborating-with-kennet...

    Comment linking /blog/why-im-not-collaborating-with-kenneth-reitz/

    on “Httpx: A next-generation HTTP client for Python”
  22. Submitted Some thoughts on asynchronous API design in a post-async/await world (2016) as a story · 12 points

    HN discussion
  23. Relevant blog and discussion: https://vorpus.org/blog/why-im-not-collaborating-with-kennet... https://news.ycombinator.com/item?id=19826680

    Comment linking /blog/why-im-not-collaborating-with-kenneth-reitz/

    on “Httpx: A next-generation HTTP client for Python”
  24. Submitted Notes on structured concurrency, or: Go statement considered harmful (2018) as a story · 6 points

    HN discussion
  25. I'll disagree with you there. Structured concurrency is the easiest concurrency model there is: https://vorpus.org/blog/notes-on-structured-concurrency-or-g...

    Comment linking /blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/

    on “Thoughts on Go vs. Rust vs. Zig”
  26. Submitted Timeouts and cancellation for humans as a story · 5 points

    HN discussion
  27. I was pretty badly turned off by Kenneth Reitz and the way he handled conflict with Pipenv. I disliked how instead of listening to feed back or being constructive he just gave off a kind of fuck you attitude. There were real and critical issues with pipenv that he would not budge on and it truly felt like he was in the minority. I know, its his project he can do what he wants but in the context it did not make sense…

    Comment linking /blog/why-im-not-collaborating-with-kenneth-reitz/

    on “If this project is dead, just tell us”
  28. Submitted Notes on structured concurrency, or: Go statement considered harmful as a story · 4 points

    HN discussion
  29. > the maintainer's having written another popular project. Potentially relevant: https://vorpus.org/blog/why-im-not-collaborating-with-kennet...

    Comment linking /blog/why-im-not-collaborating-with-kenneth-reitz/

    on “If this project is dead, just tell us”
  30. Submitted Why does calloc exist? (2016) as a story · 4 points

    HN discussion

Search all of HN for vorpus.org

Linked by the same people?