Knowledge Updates

Observations while developing web applications and creating great software.

  • The Case for Kebab Case ↗

    Using a mix of lowercase and uppercase causes pain on case-insensitive file systems like APFS by default on macOS.

    Changing file case in Git commits is a bit weird already. My preference is to keep with existing conventions instead of injecting my own but if you’re starting a new project skip the (lower) camel case.

    In the last week, I imported a TypeScript file with a different case than what was on disk by mistake. Some tools accepted it. The import-x/extensions ESLint rule failed because of the case mismatch. The error message there did not suggest anything about letter case.

  • System-Theoretic Accident Model and Processes to improve resilience in production systems ↗

    Tim Falzone and Ben Treynor Sloss at Google:

    In the face of increasing system complexity and emerging challenges, we at Google are always asking ourselves: what’s next? How can we continue to push the boundaries of reliability and safety?

    To address these challenges, Google SRE has embraced systems theory and control theory. We have adopted the STAMP (System-Theoretic Accident Model and Processes) framework, developed by Professor Nancy Leveson at MIT, which shifts the focus from preventing individual component failures to understanding and managing complex system interactions.

    System failures often have subjective root causes. Asking different questions leads to different outcomes:

    Instead of asking “What software service failed?” we ask “What interactions between parts of the system were inadequately controlled?” In complex systems, most accidents result from interactions between components that are all functioning as designed, but collectively produce an unsafe state.

    The concept of a system entering a hazard state is a good one.

    Hazard states are not system failures, but they are unsafe conditions which can lead to failures. Having automated and manual tools maintain awareness of being in a hazard state can help prevent disasters.

  • Experimental middleware in React Router 7 ↗

    Expected on March 6:

    RSC is cooking as well. React Router is set for rapid improvements this year.

  • Shipping fast for perfection ↗

    Fast clock speed moves your work closer to perfection.

  • Writing an x86 operating system in Rust ↗

    Philipp Oppermann:

    This blog series creates a small operating system in the Rust programming language. Each post is a small tutorial and includes all needed code, so you can follow along if you like.

    See also: Build a RISC-V operating system in 1,000 lines by Seiya Nuta and Compiler Explorer by Matt Godbolt.