Development
51 posts
The Shape of a Pull Request You Can Trust
Six sections that let a reviewer believe a diff without reproducing the work, including the two most people leave out, a mutation check and a "not done" list.
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.