the archive

Writing

Everything I've written, newest first. Deep dives and field notes on AI, .NET, system design, and the home lab.

k3s: Kubernetes That Fits in a Homelab

k3s gives a homelab the same orchestration primitives as production Kubernetes, at a fraction of the hardware cost — the honest head-to-head.

homelab

Consistent AI-generated covers for a static blog

Brand consistency with AI images isn't a prompting problem — it's a pipeline problem. Here's the one I built in a weekend.

ai

Using AI to hunt homelab deals in South Africa

Finding a good deal on secondhand hardware takes digging. Pointing an AI agent at it got me three k3s nodes for less than one new one would've cost.

ai

I Just Wanted Two Terminals to Talk to Each Other

The thing that started the-bureau wasn't a vision for agent orchestration. It was a Linux box I didn't want to babysit.

ai

Skills vs MCP: when 50 tool calls is the smell

45 MCP tools and the parameter fatigue to match — forever tweaking arguments to do something simple. The fix was a skill that read my grudging docs.

ai

Ship the agent's code review, then ship an agent to doubt it

A single agent pass is plausible-but-unverified. The fix isn't more prompting — it's a separate agent whose only job is to refute the first one.

ai

I gave Claude an ESP32

I gave Claude an ESP32 and four stepper motors. The loop ran. The clearance didn't.

3d-printing

The single ConnectionMultiplexer that wasn't the problem

Reads spiking from 1ms to 3 seconds under load looked like a connection-pool problem. It wasn't Redis — two configs we never read and a starved thread pool.

dotnet

The Tronxy that didn't want to live: a Klipper conversion

I spent three evenings fighting the undocumented v10 board to prove I could — the board that just worked in one try had been in storage the whole time.

3d-printing

Trust in AI is at an all-time low and your tests are why

84% of developers use AI tools. 46% don't trust the output. The gap isn't a PR problem — it's a testing problem, and I watched it happen.

ai

I gave an LLM root and lived to write about it

I handed a language model root on my gaming PC. It restarted my network to investigate the packet loss it had just caused. Hard lessons followed.

ai

Don't underestimate SQLite: a benchmark I didn't expect

I pointed SQLite at 82,000 documents, expected it to tap out, and had to double-check my benchmark code.

system-design

Your conversation doesn't survive the terminal

Inspiration strikes in your browser; your agent lives in the terminal — here's the handoff schema that bridges the gap.

ai