the robot and the boy in the cap kneeling on the floor around one large central machine core, deliberately choosing which of several smaller plug-in modules to connect to it — a few modules attached and softly glowing, several others set aside in a neat pile beside them; careful, thoughtful, deciding rather than installing everything

Self-hosting the thing I paid not to think about

A managed service is a deal: you pay to not think about what’s underneath. I self-hosted Supabase on a 16GB box over a weekend, with AI help, and made every component earn its place. What I bought back was understanding.

Kimchi's terminal UI on first launch in the brew-buddy repo — the opening prompt reads 'hi kimchi welcome to my homelab. My name is Janos and i'd like to try you'

I gave Kimchi my kombucha app

Same builder model, same task, two harness modes — a real feature on my homelab, and why the architecture, not a smarter model, decided every outcome that mattered.

the boy in the cap leaning over a network diagram spread on a table with a magnifying glass, while the robot beside him points at one box on the map — the two of them auditing the layout together

🧱 An Agent Audited My Homelab — and the Useful Part Was Telling It 'No'

I gave a second AI read access to the Git repos that define my k3s homelab. The findings were fine — the work was validating each: which to accept, which to recalibrate, and which the scanner was confidently wrong about.

the robot standing at an easel drawing a picture of itself on the canvas, holding a blank scroll in its other hand, while the boy in the cap watches holding a paintbrush

🎨 I Gave My Blog a Mascot and Never Drew a Line

Thirty posts, no covers, and I can’t draw. The fix wasn’t a better prompt — it was picking the right model tier and letting the model read the whole post.

the robot pointing at an open cardboard box while the boy in the cap sweeps small cubes marked with an X toward it, a recycling arrow looping in the air above them

📝 Dev Notes

Running notes on things I’ve hit, fixed, or found worth remembering.

the robot holding up a phone showing a message bubble, an arrow curving across to the boy in the cap who holds his own phone showing the same bubble as it arrives

Every Robot in My House Can Text Me Now

My house is full of automation that never told me anything — until I gave it one push bus. The first thing I taught it to do was warn me before Claude Code cuts out mid-task.

a large alarm bell ringing between the robot and the boy in the cap, with the boy holding the bell's unplugged power cord and plug in his hands

Is Anyone Knocking? A Security Pass on My Homelab

I set out to answer a simple worry — is someone trying to get into my server? — and found the scarier question underneath it: if they did, would I even know? My front door was solid. The inside had an alarm with the wires cut, a web terminal sitting on the open internet, and no floor under the blast radius. Here’s the audit, and the three things I fixed.

the robot and the boy in the cap together holding up a single ballot slip marked with a question mark and YES / NO checkboxes, while behind them a dense tangle of scribbled documents is knotted into a scribble; a gear floats above the robot's head

VoteWatch: How Your Representatives Voted — and Whether You'd Agree

Parliamentary roll-call votes are public, machine-readable, and almost completely unread. I built a thing that scrapes them, distills each decision into one plain-language question, shows which party voted which way, and lets you register whether you agree — then puts your answer next to how parliament actually voted. The rule that keeps it honest: the AI writes the summary, but it never decides a fact.

the robot holding up a small rocket, a written page on its chest panel joined by a dotted line to a spiral notepad in the boy's hands showing the same rocket sketched on it

I Run GitOps for My Brain

An AI agent on a scheduled idle walk through my notes pointed out that I’d built the same architecture three times — at work, in my homelab, and in my second brain — and that the third copy was missing the part that makes GitOps work. It was right. So we shipped the missing piece the same day.

the boy in the cap holding up a small ordinary key, but the shadow it casts on the wall behind him is a clawed hand gripping a huge jagged sword; the robot beside him looks on

🚩 I Built a Usage Dashboard and Tripped Claude Fable 5's Safety Net

I asked Claude Fable 5 to help me self-host a dashboard for my own Claude usage. Halfway through, its dual-use safety measures flagged the conversation and downshifted me to Opus 4.8. Nothing I did was wrong — the request just had the shape of something that is. That gap, between what a thing looks like and what it’s for, turns out to be the whole story.