Skip to content

Lesson 9 of 9 · 18m

Building a Personal Toolkit

The compounding habit — every friction point gets a script or alias; every week your terminal gets slightly more yours.

Productivity compounds: the engineer who writes a script for every friction point ends up with a terminal that works the way they think. The skill isn't memorizing tools — it's noticing friction and fixing it.

The friction loop

Every time you:

  • Type the same command twice in a week → alias or function.
  • Look up a man page for the same flags twice → script it or alias it.
  • Do a multi-step workflow manually → write the script.
  • Copy-paste the same output → write a jq filter once.

A week of this and your terminal does things no GUI will ever match.

The script collection

A ~/bin or ~/.local/bin in $PATH is the standard pattern — small, single-purpose scripts:

~/bin/
  db-reset            # drop + migrate + seed in one command
  deploy              # rsync + build + restart
  cleanup-branches    # delete merged branches
  todos               # today's scratchpad, formatted

Each script is a <10-line bash file, executable, committed to your dotfiles repo. They accumulate.

The tools that earn their place

  • bat — cat with syntax highlighting and git integration.
  • eza/exa — ls with colors and icons.
  • fd — find without the flags you can never remember.
  • hyperfine — benchmark commands (hyperfine 'grep -r x .' 'rg x').
  • httpie/curlie — readable HTTP requests.
  • gh/ghq — GitHub CLI and repo management.

Field notes

  • The test for a new tool: does it save more than the installation cost? jq yes, fzf yes, zoxide yes — a fancy prompt framework that adds 200ms to every shell startup probably not.
  • Rebuild from scratch periodically — a dotfiles repo that installs itself means a new laptop isn't a productivity outage.