systemd is the init system used by the current versions of most major Linux distributions, including Debian, Red Hat, Ubuntu and Arch. One of its key features is reliable dependency management, building a dependency graph of services, and sequencing of services where unrelated services can be started in parallel, but dependencies are sequenced correctly.
Let’s walk through how systemd implements this. Of note - if you’re interested in what a modern C codebase that doesn’t care about backwards compatibility can look like, systemd is especially interesting.
I recently finished Practical File System Design by Dominic Giampaolo - a great read on filesystem implementation. Some aspects of the book are dated (initially published in 1999), but it does (lightly) discuss multithreading issues, which are absent from much of the classic UNIX literature. The three topic covered I felt were especially notable are journaling, indexing, and the comparison with other filesystems.
Browsix answers these challenges, with:
Processes: Unmodified C, C++, Go, and Node.js programs run as processes on Web Workers, executing in-parallel with the main browser thread – no need to worry about long-running computations blocking event-handling or page rendering.
Kernel + System Calls: By working at the lowest levels of abstraction, Browsix provides shared resources to multiple language runtimes, just as traditional operating systems enable running programs written in a host of languages.
Scalability: By enabling a large class of programs (including legacy codebases) to run in-browser, Browsix can free you from the chore of sandboxing and load-balancing programs server-side.
System Dynamics is a methodology for debugging your mental models of the world. It does this by getting you to write down your assumptions as a model, simulate that model over time, compare the results to historical data, and project into the future. If the results based on your assumptions don't match the real data, you should consider changing your mental model! If the projection into the future doesn't look as you'd like, you are forced to be explicit with where and how your improved policies will influence the model. I wrote a thesis on object-oriented system dynamics as an approach to manage complexity and reuse models.
A project I want to get back to is a web-based editor for SD models, with a focus on usability and design:
I was an intern and community member of OLPC. I diagnosed and fixed some bugs (like this one), worked on a System Dynamics activity named Model to enable students to do system dynamics modeling on the XOs, and rewrote the boot animation in C (from Python), cutting 12 seconds off the boot time for hundreds of thousands of laptops.