Thorsten Ball, a programmer who worked on the Zed editor, writes about editors, Git, shells, compilers, and software performance.
The 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.
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-shell
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
> 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/
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/
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.
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/
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/