the blog
Writing
Notes on developer experience, tooling, and TypeScript, plus the occasional Vim rabbit hole and conference story.
Fleet: 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.
aiAIE Europe
A talk, a workshop, and a podcast at AIE Europe. Here's what I did.
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.
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.
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.
aiVery Important Agents
My recent Changelog and Friends podcast appearance and the Claude Code plugins that help me get real work done with AI.
aiWhy Everyone Should Try Claude Skills
Claude Skills are the approachable AI tool I didn't know I needed.
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.
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.
career2024 Review - A Year of Growth and Change
A brief review of 2024 and what I'm looking forward to in 2025.
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.
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.
communityJS Party Will Be in NYC at React Summit!
We're conducting interviews and having fun learning about React!
communityI'm emceeing SquiggleConf
SquiggleConf is a web devtools-focused conference in Boston.
speakingSpeaking at Conferences
My thoughts on preparing to speak at conferences.
writing2023 Review
neovimDigging through my tool box
A deep dive into my tooling setup on the JS Party podcast
typescriptAn introduction to codemods
Refactoring with effortless consistency.
neovimJohn and Nick discuss Lazy.nvim
John and Nick are back to discuss switching to a new plugin manager for Neovim.
gitCode Review: Obsidian Clipper
John Christopher and I sit down and do a code review together.
gitHow I use git worktrees
simultanous branches for truly scattered development
dotfilesGit Your Way: includeIf
Implement finer control of your Git configuration.
javascript · external ↗