Notes on building software.
A personal blog of technical articles about software development.
Play a Sound When Claude Code Is Actually Done
Waiting on a long Claude Code task means watching the screen — tiring on the eyes. A Stop hook can play a sound when it finishes, but only if 'done' truly means every subagent and background job has ended. Here's how to build that honest signal.
A Claude Code Status Line That Tells You What Matters
On a long Claude Code session it's easy to run blind — context filling up, rate limits creeping toward a lockout, the wrong model or account active. Here's how to build a custom status line that surfaces all of it at a glance.
Running Two Claude Code Accounts on One Machine
I keep a personal and a work Claude Code account on one laptop and run both at once. Out of the box that isn't possible — here's the pain point, and the one environment variable that fixes it.
A Tour of Claude Code's Built-in Slash Commands
A quick map of the slash commands Claude Code ships with, grouped by what they help you do.
/clear vs /compact: Managing Your Context Window
When to wipe the chat with /clear and when to shrink it with /compact so Claude stays sharp.
Switching Models on the Fly with /model
Swap between Opus, Sonnet, and Haiku mid-session to match the model to the task at hand.