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.

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 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 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.

mind-the-gap dashboard: 63% demand-weighted coverage, skill radar with proven/claimed/in-progress/gap states

Mind the gap: I pointed monitoring at my own skill set

A rejection isn’t actionable data. So an n8n workflow now extracts skill demand from live job listings, diffs it against what I can prove, and renders the gap as a dashboard — deployed like everything else here: via git push.

the boy in the cap with a watering can and the robot with a pair of shears tending a garden bed made of stacked books and rolled scrolls, with vines growing out of them and a pile of cut trimmings on the ground

🌱 My Second Brain Weeds Itself Now

I gave my markdown knowledge base a nightly gardener — an AI that finds orphan notes and missing links and fixes them, every change a reviewable git commit. The fun part was the Kubernetes wall I hit on the way.

The exocortex knowledge base rendered as a 3D force-directed graph — 36 notes, 165 edges

🧠 A Second Brain You Can `git clone`

My first second brain died the way most do — on multi-device sync. The rebuild: plain markdown as the source of truth, every clever layer derived and disposable, and an AI that tends it through reviewable git diffs.

the boy in the cap holding a wrench and a blueprint scroll of stacked layers, the robot beside him pointing toward an open chest of neatly filed gear-marked folders; on the ground a heap of loose scattered blocks leads into a single tidy line of blocks

📦 Five Ways to Manage Kubernetes Manifests (and Why They're Not All Equal)

Raw YAML, Kustomize, Helm, Jsonnet — there’s more than one way to describe what you want running in a cluster. Here’s what each actually looks like in practice and where each one breaks.

the boy in the cap holding up a small processor chip toward the robot, who reaches out to it with an open hand; behind them a plain desktop computer and blank monitor sit on a desk

🤖 Local LLM Inference on Kubernetes, No GPU Required

A CPU-only self-hosted LLM stack running on k3s: llama.cpp as the inference server, Open WebUI as the chat interface, deployed as a single Git push.