Development
50 posts
Prove the Test Can Fail: Mutate the Fix
A regression test is unverified until you have watched it fail against the unfixed code. The procedure, and three shapes that survive a naive check.
Running GitHub Actions Efficiently
A macOS runner costs ten times a Linux one, and that multiplier reorders every other CI decision. How to cut Actions minutes without weakening the gate.
MCP Goes Stateless, and Sampling Goes With It
The 2026-07-28 MCP spec turns the protocol stateless, deprecates sampling, and moves tasks into an extension. Why the stateless change is the one that matters.
Setting Up Lexicon with Claude Code and Claude Desktop
A walkthrough of connecting Lexicon's MCP server to Claude Code and Claude Desktop so your prompt library becomes available as slash commands.
uv Changed How I Think About Python Projects
After years of pip, virtualenv, poetry, and conda, uv has quietly become the only Python packaging tool I recommend. Here's why.
Code Archaeology with AI
Using AI coding assistants to understand, document, and revive legacy codebases. What works, what doesn't, and where the hallucinations live.
Technical Debt Is a Leadership Problem
Most tech debt conversations happen between engineers. But the decisions that create and resolve it are fundamentally leadership decisions.
You Don't Need a Justfile
Justfiles, Pixi tasks, Taskfiles, and other modern Make replacements are solving a problem that was already solved in 1976.
Advanced Makefile Patterns for Python Projects
Beyond the basics: self-documenting targets, environment detection, conditional logic, and other Makefile patterns I use in real Python projects.
uvx --from: Run Any Python Tool Directly from GitHub
You can use uvx to run Python CLI tools straight from a GitHub repo with no install step. Here's how it works and why it's useful.