Jul 2026
Portfolio
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.
Jun 2026
Operations
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’...
Jun 2026
AI
One of the local automations I value most doesn’t have a dashboard. It watches a folder, waits for a file to finish arriving, applies a predictable transformation, and places the result where the next ordinary tool expects it.
Apr 2026
Automation
The maintenance sequence I use for small systems contains an awkwardly manual step. After the reports are gathered and before any cleanup happens, I read the candidates and decide what not to touch.
Apr 2026
Product
DNS rewards restraint. A short record can sit underneath browsers, certificates, service discovery, remote access, and every note that tells someone where to go. Because the syntax is compact, it's tempting to use records as a clever abstraction layer. Then a troubleshooting session becomes a tou...
Apr 2026
AI
Convenience layers are easiest to add when the underlying tool is almost pleasant. A desktop launcher can remember a model command. A web panel can turn flags into toggles. A helper script can choose ports, directories, and defaults so I don't have to. The first use gets shorter, which is real va...
Mar 2026
AI
A small network can be rebuilt badly with remarkable speed. There may be one router, one switch, a few access points, and a short list of local services. That looks simple enough to recreate from memory. Then the replacement comes up with a different address pool, half the names point at old dest...
Jan 2026
Integration
I spend most of my professional life connecting systems that were never designed to talk to each other. After doing this for years, I've landed on a framework