Thorsten Ball
registerspill.thorstenball.com · Personal blog · on HN since 2014
Thorsten Ball, a programmer who worked on the Zed editor, writes about editors, Git, shells, compilers, and software performance.
What HN saysThe one given comment only adds a side note about POSIX job control and spawning child processes, so HN's opinion of the blog is unclear.
88HN people shared it
14linked it in comments
181stories submitted
4.4Kstory points
4 months agolast shared
2014people per year2026
Most-shared posts
- 1Unicorn Unix Magic Tricks8 people · 121 points · first shared 2014 · 11 comments on HN
- 2From Vim to Zed6 people · 26 points · first shared 2024 · 1 comments on HN
- 3How can you not be romantic about programming? (2020)5 people · 783 points · first shared 2020 · 357 comments on HN
- 4Professional Programming: The First 10 Years5 people · 192 points · first shared 2022 · 33 comments on HN
- 5Exploring the C4 Compiler?5 people · 23 points · first shared 2024 · 1 comments on HN
- 6Skin-Shedding Code (2024)5 people · 20 points · first shared 2024 · 4 comments on HN
- 7The Tools I Use to Write Books4 people · 644 points · first shared 2018 · 97 comments on HN
- 8How I Use Git4 people · 139 points · first shared 2024 · 29 comments on HN
- 9How fast is your shell?4 people · 11 points · first shared 2024 · 3 comments on HN
- 10Allergic to Waiting4 people · 6 points · first shared 2023 · discussion on HN
- 11Why I wrote a book about interpreters3 people · 230 points · first shared 2016 · 69 comments on HN
- 12Zed Editor: All Occurrences Search from 1s to 4ms3 people · 145 points · first shared 2024 · 38 comments on HN
- 13Apple's APFS Migration: A Feat of Engineering3 people · 110 points · first shared 2024 · 53 comments on HN
- 14Did you know about Instruments?3 people · 16 points · first shared 2024 · discussion on HN
- 15They All Use It3 people · 13 points · first shared 2024 · 8 comments on HN
What HN people wrote when they linked it
chin7an · 2024-07-13
I’ve not read this book, so can’t offer a comparison but Thorsten Ball’s two books [1] are great.
The dragon book was my textbook in college, brings back memories, might be outdated but some concepts should still be useful.
[1] https://thorstenball.com/books/
misternugget · 2024-06-24
One mini-feature I really like: authors highlighting their own favorite or popular articles.
I think I saw it first on Julia Evans' blog (https://jvns.ca/categories/favorite/). I also added it to mine (https://thorstenball.com/blog/) and found the exercise of going through the posts and tagging them very enjoyable.
yesenadam · 2021-02-21
I was reading on Thorsten Ball excellent blog
https://thorstenball.com/blog/
and found he also gives great talks. This one explains unix ports, pipes, fork, processes etc very clearly and simply, and demonstrates their use outside shell scripts in ruby. (I hardly know ruby, but that didn't matter at all.)
altdatathrow · 2020-09-21
Thorsten Ball's writeup [1] on the architecture behind Unicorn is one of the single most informative pieces I've ever read about fork-based multiprocessing, signals, and pipe-based ipc. The information there can be applied to any platform and, imo, is a must-read for anyone operating in a *nix environment.
[1] https://thorstenball.com/blog/2014/11/20/unicorn-unix-magic-tricks/
chubot · 2026-03-17
FWIW here is another piece of trivia about job control: the API means you can't spawn a child process "safely" in POSIX -- you have to trust that that the executable you're spawning is well-behaved (or use more advanced Linux process isolation)
In this case it was the Zed editor spawning the zsh shell:
How to Lose Control of your Shell - https://registerspill.thorstenball.com/p/how-to-lose-control-of-your-s…
zsh has a bug where it doesn't do the job control cleanup properly in some cases -- when fork-exec() optimizations happen.
This can mess up the calling process. For example, here you could no longer kill Zed by hitting Ctrl-C, even after zsh is done.
My comment: https://lobste.rs/s/hru0ib/how_lose_control_your_shell#c_dfluhm
fabianholzer · 2025-08-23
pjmlp · 2023-03-10
My dear HN newbie, I have used more UNIXes in my life that you probably know about.
Some education for you about fork(),
https://dl.acm.org/doi/10.1145/3317550.3321435
https://thorstenball.com/blog/2014/10/13/why-threads-cant-fork/
childintime · 2023-01-20
Most people are actually 10x programmers, 10x before they get it right. If they get there. Then there are the 1x, first-time-right, fearless programmers... Fearless as in https://thorstenball.com/blog/2022/05/17/professional-programming-the-…
xnacly · 2022-05-18
I find the flowchart visualizing the pipeline very intriguing, can someone link me a tool I can use to create similar charts?
For reference: https://thorstenball.com/images/book_tool_pipeline.svg
dcchambers · 2021-05-27
Miscellaneous technical stuff:
- https://danluu.com/
- https://blog.jessfraz.com/
- https://adamwathan.me/
- https://jvns.ca/
- https://rachelbythebay.com/w/
- https://dankim.org/
- https://mtlynch.io/
- https://rgz.ee/
- https://markdotto.com/
- https://thorstenball.com/
- https://sarahdrasnerdesign.com/writing/
- https://lukesmith.xyz/ - Quirky minimalist linux & free software stuff. I don't agree with many of his opinions but his rants are entertaining + offer a refreshing view on certain things.
Non-technical:
- https://bernoid.com/
emmanueloga_ · 2020-08-31
Maybe check this bibliography [1] of "Resources for Amateur Compiler Writers"... although I'm not sure what's the "Amateur" part of it... it lists several text books and papers that would take anyone a few years to work through :-/
https://thorstenball.com/books/ seems like a good star, and if you don't know Go it shouldn't take too long to get acquainted with it.
1: http://c9x.me/compile/bib/
meritt · 2020-01-22
> to handle the same number of requests/sec you need much more workers, which has a lot of overhead
When doing multiprocessing, it's advisable to fork() instead of creating fresh processes (or launching them in containers etc). As long as you preload the necessary libraries/modules in the parent process before the fork, children will reference the same memory in a copy-on-write fashion. It keeps overhead extremely low.
This [1] article is for the Unicorn (ruby) webserver but the way it explains forking, signals, and pipes for inter-process control it's absolutely illuminating. These techniques are applicable to any unix-based applications, including php daemons.
[1] https://thorstenball.com/blog/2014/11/20/unicorn-unix-magic-tricks/
revicon · 2020-01-12
Reminds me of this author’s post on here a while back on the command line tools he used to write books...
https://thorstenball.com/blog/2018/09/04/the-tools-i-use-to-write-book…
ratboy666 · 2014-11-21
http://thorstenball.com/blog/2014/11/20/unicorn-unix-magic-tricks/
is also a current story on HN.
Just an example of how powerful that simple 70's Unix is. Allows features that appear "magical" to thorsten, anyway.
Windows? Wasn't really even an option... until 20 years later. And, of course, Unix really isn't that good, either. But, before you ignore it, please come to feature parity, at least.