Work from the field.
Notes from building with AI daily, designing the systems around it, and teaching teams what survives contact with real work.
Inside the Harness: Four Months of Being Wrong About pi
The thing I'd missed was that everything I'd been building around my harness could live inside it.
Read → claude-codeFleet: A Control Tower for Claude Code
A tmux dashboard for running many Claude Code agents at once — it shows which one needs you, sorted by urgency, so you stop polling and start responding.
Read → aiAIE Europe
A talk, a workshop, and a podcast at AIE Europe. Here's what I did.
Read → aiCase Statement: Building a Harness
I codified my job as a DX engineer into a system that dispatches agents, enforces conventions mechanically, and learns from its own failures. Here's how case works and why I think every developer should build something like it.
Read → aiWriting My First Evals
I had no background in evals. I built two very different evaluation systems for two AI-powered developer tools, and they taught me the same lesson: trust isn't a feeling, it's a measurement.
Read → aiIdeation: Because Planning Needs More Than a Mode
Claude Code's plan mode is a great starting point for thinking before coding. But for complex work, I needed more than a mode. I needed a system. Here's what I built.
Read → aiVery Important Agents
My recent Changelog and Friends podcast appearance and the Claude Code plugins that help me get real work done with AI.
Read → aiWhy Everyone Should Try Claude Skills
Claude Skills are the approachable AI tool I didn't know I needed.
Read → aiEvolving with the Tools
After 16 years of writing code, I fought the idea of AI agents replacing developers until I discovered they could amplify rather than replace me. This is my journey from skepticism to embracing Claude Code as a pair programmer who speaks fluent bash and transforms how I ship software.
Read → mcpCoding With My Eyes Wide Shut
At WorkOS's AI onsite and MCP Night, I experimented with vibe coding. What started as a two-hour experiment with 5,000 lines of unseen TypeScript became a glimpse into programming's future.
Read → career2024 Review - A Year of Growth and Change
A brief review of 2024 and what I'm looking forward to in 2025.
Read → careerOn Leaving Meta
From imposter syndrome to shipping features used by millions, here's what I learned during my year as a remote engineer at Meta.
Read → communitySeven Years of JS Party: A Personal Reflection
A personal reflection on seven years of JS Party as the show transitions into its next chapter with dysfunctional.fm.
Read → communityJS Party Will Be in NYC at React Summit!
We're conducting interviews and having fun learning about React!
Read → communityI'm emceeing SquiggleConf
SquiggleConf is a web devtools-focused conference in Boston.
Read → speakingSpeaking at Conferences
My thoughts on preparing to speak at conferences.
Read → writing2023 Review
Read → neovimDigging through my tool box
A deep dive into my tooling setup on the JS Party podcast
Read → typescriptAn introduction to codemods
Refactoring with effortless consistency.
Read → neovimJohn and Nick discuss Lazy.nvim
John and Nick are back to discuss switching to a new plugin manager for Neovim.
Read → gitCode Review: Obsidian Clipper
John Christopher and I sit down and do a code review together.
Read → gitHow I use git worktrees
simultanous branches for truly scattered development
Read → dotfilesGit Your Way: includeIf
Implement finer control of your Git configuration.
Read → javascript · external ↗