Guides
Hard-won knowledge from actually shipping software with AI. Covers IDE configuration, Claude Code, agent workflows, and more.
Productivity Fourteen iterations to a one-line fix
Fourteen deploy-and-retest cycles to find a one-line HTML fix — and the six lessons that would have gotten me there in one.
IDE & Tooling The wrong thing is locked down by default
The harness hardcoded a guard against the agent editing its own settings, but not one against the agent reading my SSH keys. What a tool locks down by default is a statement of its priorities.
IDE & Tooling Judgment is not a security boundary
My AI coding agent read a file from another project on my disk. Here's the threat model — and the sandbox I should have had on.
IDE & Tooling Configuring settings.local.json for VS Code + Claude Code
A practical walkthrough of VS Code's settings.local.json file — what it does, how it interacts with Claude Code, and the best practices that actually matter.
IDE & Tooling VS Code extensions that actually help AI coding
A short, opinionated list of extensions worth installing when AI is your primary pair-programmer. What each one actually buys you, and the ones I've stopped using.
AI Coding Structuring CLAUDE.md across a monorepo
Where to put what when one repo holds many packages. Global vs project vs per-package CLAUDE.md files, token budgets, and the load order that prevents drift.
IDE & Tooling One Line to Rule Them All: Adding an Audio Alert When Claude Code Finishes
How a simple frustration — not knowing when Claude Code is done with a long task — led through Claude Code's hooks system to a one-line fix that shouldn't have been this hard to find.
AI Coding Claude Code hooks: a practical automation cookbook
The hook system in Claude Code, how each lifecycle event fires, and six recipes I actually use — formatter-on-save, guardrails, session prep, audit logging, notifications, and kill-switches.
IDE & Tooling Tailwind v4 migration notes
What actually changed in Tailwind v4, the gotchas I hit migrating a real site, and the minimum viable path from v3 CSS-first config.