Writing archive
Every published essay, ordered from newest to oldest.
2026
The crash that wasn't: debugging Kinjo's CI with AI
How human intuition and fast AI-assisted experiments traced a false Kinjo crash to a tmux version difference in CI.
Taxonomy of applications
A practical taxonomy of scripts, interactive apps, services, and jobs based on runtime structure and users.
2020
No time for testing (in a start-up)?
Why automated testing is part of delivering customer value—and the safety net that keeps future changes affordable.
This is why distributed systems are useful (and I am building one)
Why distributed systems are worth their complexity when problems must scale across time, memory, machines, or failures.
2019
Virtual filesystem: fun and profit
How virtual filesystems turn paths into a general interface for local, remote, generated, and device-backed resources.
New version of libstyxe supports 9p2000.u and 9p2000.L
An overview of libstyxe's added support for the 9p2000.u and 9p2000.L distributed resource-sharing protocols.
libstyxe: Great Refactoring
Why libstyxe changed its interfaces to make the 9P protocol library more extensible without abandoning its core constraints.
libsolace is now on Conan-central
libsolace joins Conan Center, making the C++ library easier to consume across supported platforms.
libsolace: library philosophy
The reliability and design principles behind libsolace, a focused collection of reusable C++ engineering primitives.
How to think about errors in your code
A model for reasoning about errors, invalid input, runtime failure, and isolation across applications and services.
Error handling in styxe
A practical look at how libstyxe represents parser failures and reports invalid 9P input to callers.
Welcome to the Abyss
Why I started a public, version-controlled notebook for software engineering ideas worth preserving.