Abyss of Software Engineering
Notes from building software that has to work.
Personal, technical essays about reliability, distributed systems, testing, C++, AI-assisted engineering, and the useful lessons hidden inside side projects.
Latest writing
A fresh idea from the abyss
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.
Read the article →Start with a subject
Explore the recurring questions
Reliability & testing
How systems fail, how tests preserve intent, and what makes software safe to change.
02Distributed systems
Coordination, communication, virtual filesystems, and the economics of many machines.
03Building in public
Kinjo, open-source libraries, AI collaboration, and engineering lessons from real work.
From the archive
Previous posts
Taxonomy of applications
A practical taxonomy of scripts, interactive apps, services, and jobs based on runtime structure and users.
Read the article →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.
Read the article →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.
Read the article →Virtual filesystem: fun and profit
How virtual filesystems turn paths into a general interface for local, remote, generated, and device-backed resources.
Read the article →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.
Read the article →libstyxe: Great Refactoring
Why libstyxe changed its interfaces to make the 9P protocol library more extensible without abandoning its core constraints.
Read the article →