
How to Build an MCP Server (and Read What It Costs per Turn)
The quickstart gets you a working MCP server in twenty minutes. What it doesn’t say: every tool you define is a paragraph the model reads before every reply, for as long as the server is connected. Build one, then read what it ships.

What to Use Instead of Firebase for Chat
Every list of Firebase alternatives is a list of databases. If the thing you built on Firebase is chat, that’s the wrong list. Here are the options for chat specifically, with what each one makes you rebuild and what its bill looks like.

What Goes in CLAUDE.md, and What Belongs in an ADR
You read the previous post and pasted the why into CLAUDE.md, and now that paragraph rides along on every task the agent ever runs. The sign belongs there. The reason doesn’t.

Presence Was Supposed to Be Infrastructure
XMPP didn’t lose. The web turned presence into a product and rented it back to us one app at a time. Matrix isn’t the successor — it’s a different bet, and the thing it turned off is the P.
ADRs for AI-Assisted Codebases: Write Down Why, or the Agent Will Undo It
ADRs were written for the future engineer who asks ‘why is it like this?’ That engineer is now an AI agent, it arrives in minutes instead of years, and it doesn’t ask - it refactors.

JavaScript Necromancy: The Web Never Forgets, and Now It Autocompletes
LLMs learned JavaScript from a web that never deletes anything. Now they generate 2013’s best practices at scale, publish them back onto the web, and the next model learns from that. The graveyard has a feedback loop.

1204: The Receipt Europe Forgot to Throw Away
Prestige can outlive the state that produced it. 1204 was not just a medieval atrocity — it was the receipt for a much larger transaction.
When Home Assistant Becomes the Family API
The moment you automate your home, everyone who lives in it becomes a user of a system they never agreed to. Here’s how to design for people who didn’t consent to being users.

Context Is an Architectural Surface
Context isn’t what you paste into the prompt. It’s what the model sees, prioritizes, and is constrained by. That’s not prompting — that’s system design.

Stop Betting on One-Shot: A Practical Workflow for Shipping with LLMs
LLMs don’t ship software. They ship text. You ship software by constraining the problem until text reliably becomes change sets you can trust.