Lessons
Principles earned the hard way.
Not a curriculum — takeaways distilled from real projects. What worked, what failed, and what I'd do differently, written from the scar tissue rather than the textbook.
- [11] A System That Can Reproduce Itself Is a Different Kind of System Getting uBixOS to compile its own userland on-device wasn't one more feature on the list. It was the moment the OS stopped being a thing my Mac produced and started being a thing that exists on its own. That distinction is bigger than it looks.
- [10] The Second Implementation Is the Test of Your Abstractions uBixOS ran on x86 for twenty years. Porting it to aarch64 didn't just add an architecture — it told me, file by file, which of my abstractions were designed and which had just accreted. The second implementation is the only honest test there is.
- [09] Schema Migrations That Don't Drift A migration system that works is not just a runner that applies SQL files. It's a system that can answer, at any moment: exactly what state is prod in, how did it get there, and what happens if someone deviates from the path? uBix Core's migration standard is built around that question.
- [08] The Monorepo as an Upgrade-Forcing Function Upgrade debt is a structural problem, not a behavioral one. If shared libraries can be ignored, they will be. uBix Core's monorepo makes ignoring them impossible — every PHP API and every SvelteKit frontend upgrade together, in one commit.
- [07] SOLID in Practice — Lessons From a C++ Emulator's Git History SOLID principles are easy to describe and hard to apply. Here's what applying three of them actually looked like in The 8-Bit Machine — with the git history to prove it.
- [06] AI Coding Guidelines Aren't One-Size-Fits-All When AI tools became part of the daily workflow, the first instinct was to write one set of guidelines for everyone. That was wrong. Different engineers need different guardrails — and the difference matters more than you'd expect.
- [05] Know When to Pivot to General — The 8-Bit Machine at v0.8 The 8-Bit Machine started as something specific. At v0.8 a single commit changed the direction entirely: 'Pivot to general-purpose 8-bit machine designer.' Here's why that decision was right, and how to recognize when you're facing the same one.
- [04] Pragmatic Accuracy — Knowing Which Problems Need Precision The 8-Bit Machine emulates the 1541 disk drive with a cycle-accurate IEC serial bus state machine. It also has a warp load trap that bypasses the whole thing. Both exist. Here's why.
- [03] Machine Code Review — The First Line of Defense Human code reviewers should be asking 'is this solving the right problem?' not 'why is this indented wrong?' Machine code review handles the mechanical checks so humans can focus on the things only humans can evaluate.
- [02] What Microservices Actually Cost — Lessons From 13 Services XenTask is a 13-service microservice architecture. Building it taught me three things that no microservices tutorial covers: what shared code costs across repos, how to use the platform for service discovery instead of building your own, and what 13 independent pipelines actually feel like to operate.
- [01] SpherePBX — What I Learned Building a Hosted VoIP Company Five years building a hosted VoIP platform from scratch — architecting the stack, raising $400K, growing to 200+ customers, and what I'd do differently with what I know now.