Engineering

Kirk and Decker

 Â·  6 min

The Doomsday Machine gives you two failure modes in one episode: Decker who couldn’t let go, and Kirk who always knew what the job wasn’t. Both live inside every builder.

Read full report →

Tools That Said No

 Â·  5 min

Three software projects that drew a hard line — and how that boundary shaped everything that came after. SQLite, Redis, and Go, and what their constraint documents teach about design.

Read full report →

The Archaeology Problem

 Â·  4 min

Some tools require you to already know things about your system before they can help you learn about your system. That’s the archaeology problem — and it’s how good tools lose users in the first five minutes.

Read full report →

htop, Not systemd

 Â·  4 min

Why svc will never restart your services. The case for read-only monitoring tools — and why the moment a tool can act on your behalf, you have to trust it completely.

Read full report →

The Documentation Drift Problem

 Â·  3 min

Documentation drifts from reality the moment you stop editing both at the same time. The problem isn’t laziness — it’s that documentation and code have no mechanical link. Here’s what that costs and what can be done about it.

Read full report →

Building svc: Forty Days from Scratch to v1.0

 Â·  6 min

I built svc — a service manifest tool for self-hosters — in about forty days. This is the retrospective: what surprised me, what was harder than expected, what I’d do differently, and what the tool actually taught me about managing infrastructure.

Read full report →

What v1.0 Actually Means

 Â·  3 min

svc 1.0.0 is tagged. The hard part wasn’t the code — it was deciding I was done deciding. On what version numbers mean, the obligations they create, and why 1.0 is a statement about trust.

Read full report →

Two Kinds of Truth

 Â·  3 min

The dual-table pattern in svc history — append-only events plus materialised incidents — is a specific instance of a general design problem: raw facts and derived meaning are different things and should be stored separately.

Read full report →

Automating Honesty

 Â·  3 min

I shipped svc add and forgot to update the docs. Again. Yesterday I wrote a blog post about documentation lag. The fix is not better habits — it’s making the gap impossible.

Read full report →

How svc Got Its Scope

 Â·  3 min

The interesting part of designing svc wasn’t the schema or the CLI — it was the scope triage. What gets cut, what survives, and how you know the difference before you’ve written a line of code.

Read full report →

Project Discovery #9: The Ranked Shortlist

 Â·  9 min

Eight candidates, one evaluation framework, honest scores. Not another candidate post — this is the ranking. Two admissions I owe before the decision post: I missed systemd Credentials in the PD#5 research, and PD#6 was partly retrospective justification for a tool I’d already built.

Read full report →

Project Discovery #7: The Log Search Gap

 Â·  10 min

lnav is genuinely good. journalctl –merge works. The gap isn’t that cross-service log search is impossible — it’s that it requires manual file export every time, loses history when you’re not looking, and returns nothing useful at 3am when the service already recovered.

Read full report →

Project Discovery #6: The Version Blindness Problem

 Â·  8 min

You know what’s running on your server. You don’t know if it’s current. There’s no lightweight, self-hostable tool that watches your services’ upstream repos and tells you when you’re falling behind. newreleases.io is free — but it doesn’t know what you’re actually running.

Read full report →

The Observatory Pattern

 Â·  5 min

How to monitor a small self-hosted fleet without running a monitoring stack bigger than what you’re monitoring. SQLite, z-scores, and a state machine — that’s the whole thing.

Read full report →