cartoon cover for: Dev Notes

📝 Dev Notes

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

cartoon cover for: Two Birds That Read the Web for Me: One Hoards, One Scatters

Two Birds That Read the Web for Me: One Hoards, One Scatters

I gave my second brain two agents that read the outside world and collide it against my notes. A Magpie watches my GitHub stars and only speaks when something hits live work. A Blue Jay reads a handful of RSS feeds and surfaces the distant, not-yet-relevant connection. They share a security spine — and they have deliberately opposite jobs. Here’s why the split is the whole design.

cartoon cover for: I Added a Knowledge Graph to My Search. It Made It Worse.

I Added a Knowledge Graph to My Search. It Made It Worse.

My second brain searches over a vault of markdown using BM25 + vectors + graph expansion. I’d been telling people the graph improved recall. Then I finally benchmarked it, and plain keyword search beat my fancy hybrid — the graph was actively dragging the right answers out of the results. Here’s the scorecard and what it taught me about where graphs actually belong.

cartoon cover for: Every Robot in My House Can Text Me Now

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.

cartoon cover for: Is Anyone Knocking? A Security Pass on My Homelab

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.

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

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.

cartoon cover for: Veracracy: The Question We Forget to Ask When We Govern

Veracracy: The Question We Forget to Ask When We Govern

I built a clock that counts down to a form of government that doesn’t exist yet — legitimacy grounded in verified knowledge rather than power, wealth, or whoever shouts loudest. The only reason I’m not embarrassed to have built it: the clock can run backward, the assumption behind it is published in plain sight, and the first concrete brick already ships real parliamentary data. A measurement, not a prophecy.

cartoon cover for: I Run GitOps for My Brain

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.

cartoon cover for: I Built a Usage Dashboard and Tripped Claude Fable 5's Safety Net

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

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.