My terminal setup is a load-bearing wall
Every tool in my shell earns its place or gets evicted. The annual audit: what stayed, what went, and the alias I should be embarrassed about.
Once a year, in May, I audit my shell the way landlords inspect apartments: everything out, justify your lease, or leave. The terminal is where I spend six hours a day; it is a load-bearing wall of my working life, and load-bearing walls do not get decorated with whatever was trending on the orange website in February.
The three questions
Every tool, plugin and alias answers the same three questions, in order:
- Do you earn your startup milliseconds? My shell opens in under 80ms. A prompt framework that costs 300ms to look pretty costs me that delay several hundred times a day.
- Do you replace a habit or just restyle one? A tool that changes what I do stays. A tool that makes the old thing prettier auditions again next year.
- Do you survive SSH? If the muscle memory breaks the moment I'm on a bare server, the muscle memory is a liability. Core workflow has to degrade gracefully to stock tools.
Kept, with reasons
- tmux — the actual load-bearing wall. Sessions survive everything; my attention doesn't have to.
- rg — fast enough that "search the whole repo" became a reflex instead of a decision. That reflex has found bugs code review missed.
- fzf — changed a habit: I stopped remembering paths and started describing them. Passes question two with honors.
- zoxide — same argument, for directories. Two letters, anywhere, and I'm home.
- A boring prompt — branch name, exit status, nothing else. My prompt used to show the weather. The weather is outside.
Evicted this year
- The 40-plugin zsh framework. I used four of the plugins. Those four are now 30 lines in my zshrc that I can read. Startup went from 410ms to 75ms, which at my usage is roughly a full workday per year returned to me.
- The icon-laden ls replacement. Pretty, but question two failed: same habit, new paint. And it broke on the one server that mattered.
- A "smart" cd that guessed intentions. When it guessed right I didn't notice; when it guessed wrong I was somewhere strange with no idea why. Tools should be wrong loudly or not at all.
The confession
# the respectable ones
alias g='git'
alias gs='git status -sb'
alias gp='git push --force-with-lease' # lease, never --force
# the one I should be embarrassed about
alias fine='git add -A && git commit -m "fine."'
# 212 commits last year say "fine." — they were not all fine
I keep fine because it is honest about something the respectable aliases hide: sometimes the commit message is a mood. The audit's job is not to make me virtuous. It's to make sure every piece of the wall is there on purpose.
The compounding rule
Boring tools compound; novel tools churn. A tool you still use in five years returns a hundred times what it cost to learn — which means the real question is never "is it better?" but "will it still be here?"