A running list of the hardware, apps, and command-line tools I reach for every day. Almost all of it is symlinked from my dotfiles and installed by a single bootstrap script when I set up a new Mac, so the setup is the same on every machine I touch.
Hardware
- An Apple Silicon Mac.
Editor and AI
- Visual Studio Code is my primary editor.
- Neovim for quick edits without leaving the terminal.
- Claude Code is the agent I run in the terminal for larger, multi-file work. This site was built with it.
- Ollama runs models locally so I can work offline and keep code on the machine.
Terminal and shell
- iTerm2 as the terminal emulator.
- zsh with the Powerlevel10k prompt.
- tmux for splitting and persisting sessions.
- fnm switches Node versions per project; pyenv does the same for Python.
- Homebrew and pnpm for package management.
Window management and keyboard
- yabai for tiling window management.
- Karabiner Elements for keyboard customisation.
Languages and runtimes
Day to day
PHP 8, Node (via fnm), Ruby (for Jekyll), Python (via pyenv)
Tooling
Composer, WP-CLI, Webpack, Sass
Command-line tools
Search and files
ripgrep, fd, fzf, the_silver_searcher, eza, ncdu, rename, coreutils
Media
ffmpeg, ImageMagick
Workflow
gh, jq, htop, tmux, parallel, wget, terminal-notifier, tlrc
Quality
shellcheck, Prettier, ESLint, stylelint
Containers and local dev
- Docker for everything local. Each project gets a containerised environment that matches production from day one, including this site.
Apps
- Brave as the primary browser, Firefox as the secondary.
- Tower when I want a git client; the command line otherwise.
- Sketch for UI design and GIMP for image editing.
- LibreOffice for office files and headless document conversion.
Fonts
Coding
Fira Code, Input, Sauce Code Pro Nerd Font, Monoid
Interface and web
Montserrat (this site), Lato, Open Sans, Roboto
Want to get in touch? Connect on LinkedIn or send an email .