Lessons from the Terminal

Twice-weekly field notes on infrastructure, AI, and systems.

What I built, what broke, and the evidence that changed the next decision.

Jul 2026 Infrastructure

I Leave Capacity for the Weird Failure

Decision: routine workloads will not consume the space needed to preserve, copy, and compare a failed state. Capacity planning will include a diagnostic maneuver, not just normal demand and restart overhead.

4 min read Read →
Jul 2026 Observability

The Log I Will Actually Read

The log I imagine writing is comprehensive. It captures every branch, request, retry, timing detail, and internal state transition. Future me opens it, follows the trail with calm precision, and finds the answer hiding in line seven thousand.

4 min read Read →
Jul 2026 Infrastructure

Every Service Adds a Future Chore

A service doesn’t add one generic maintenance task. It adds work at every dependency boundary where its assumptions can diverge from the next version underneath it.

4 min read Read →
Jul 2026 Portfolio

The Human Side of Self-Hosting

Self-hosting makes infrastructure unusually personal. A failed service may interrupt a movie, a file someone needs, a name lookup, or a quiet evening. The technical symptom can be small while the human consequence is immediate. It can also be technically noisy while nobody cares.

4 min read Read →
Jul 2026 Operations

What a Good Runbook Leaves Out

A runbook becomes less useful when it tries to contain everything its author knows. Background, architecture, troubleshooting, credentials, and every remembered exception accumulate around the actual procedure. The document feels comprehensive, but the operator has to excavate the next safe step ...

4 min read Read →
Jun 2026 Portfolio

The Case for a Smaller Blast Radius

“Blast radius” sounds like infrastructure language, but public-site work has one too. A content correction can touch a single essay, every page using a template, or the build and publishing path for an entire archive. The site may be static and the change may be mostly words. That doesn’t make th...

4 min read Read →
Jun 2026 Automation

Why I Keep the Old Path Until the New One Proves Itself

Replacing a scheduled path is deceptively simple. The old job runs on a clock, the new worker reacts to a richer trigger, and both appear to perform the same task. It’s tempting to disable the old entry, enable the new one, and call the migration complete when the first run succeeds.

4 min read Read →
Jun 2026 Architecture

A Service Is Not Done When It Starts

Getting a service to start is a satisfying milestone. The image pulls, the process binds, and the first request completes. It’s also the moment when a temporary experiment can quietly become a permanent obligation.

4 min read Read →
Jun 2026 Operations

The Maintenance Window Is Part of the Design

A maintenance window isn’t merely a polite time to make a change. It is a finite engineering resource. The design has to fit inside it with room for observation, correction, and retreat. When the change plan consumes the whole window on paper, the failure has already started; the clock just hasn’...

4 min read Read →
Jun 2026 AI

What I Learned From Rebuilding Twice

Rebuilding a system sounds like repeating the build. It rarely is. The first version accumulated decisions in the order I encountered them. A rebuild asks me to reproduce the result after that order, and much of the reasoning behind it, has disappeared.

4 min read Read →