The exact setup I rely on every day β hardware, editor, terminal, fonts, and the apps that keep me productive.
Last updated May 2026 Β· Inspired by uses.tech
What sits on my desk
MacBook Pro 14" M3 Pro
Primary machine
12-core CPU / 18-core GPU, 36 GB unified memory. Handles Docker, k3d clusters, and a dozen browser tabs without breaking a sweat.
LG UltraFine 27" 4K
External monitor
Connected over USB-C. Great colour accuracy and enough real estate to keep a terminal, editor, and browser side by side.
Keychron K2 Pro
Mechanical keyboard
Hot-swappable, QMK/VIA compatible. Running Gateron G Pro Red switches β quiet enough for calls, tactile enough to feel good.
Logitech MX Master 3S
Mouse
The electromagnetic scroll wheel is worth the price of admission alone. Pairs seamlessly between machines via Bluetooth.
Sony WH-1000XM5
Headphones
Industry-leading noise cancellation. My go-to for deep work sessions and remote calls. Pairs well with lo-fi or silence.
iPhone 15 Pro
Mobile
Used for testing PWAs, 2FA, and the occasional Tailscale check when I'm away from my desk.
Where most of the work happens
Cursor
Primary editor
AI-native fork of VS Code. The Tab completion and Agent mode have genuinely changed how I write and refactor code. I've never gone back to vanilla VS Code.
VS Code
Fallback / pair sessions
Still use it occasionally for pair-programming sessions where screen-sharing a non-AI editor makes more sense.
Catppuccin Mocha
Color theme
Warm dark palette that's easy on the eyes during long sessions. Consistent theming across terminal, editor, and browser dev tools.
Key Extensions
ESLint Β· Prettier Β· GitLens Β· Docker Β· Kubernetes Β· YAML
Linting and formatting on save keeps code consistent. GitLens for inline blame. Docker and k8s extensions to avoid context-switching to the terminal for quick inspections.
The second home
Warp
Primary terminal
Blocks-based output, built-in AI, and a command palette that eliminates memorising flags. The workflows feature is underrated for repetitive deployment steps.
Zsh + Oh My Zsh
Shell
Running zsh with Oh My Zsh. Plugins: zsh-autosuggestions, zsh-syntax-highlighting, and git. The git aliases alone save hundreds of keystrokes a day.
Starship
Prompt
Cross-shell prompt written in Rust. Shows git branch, Kubernetes context, Node/Python/Go versions, and exit codes β only what's relevant to the current directory.
Homebrew
Package manager
Everything installed via Brewfile for reproducibility. One brew bundle install bootstraps a fresh Mac in minutes.
tmux
Terminal multiplexer
Persistent sessions that survive SSH disconnects. I keep a dedicated window per project: editor, server, git, and logs β all in one terminal.
fzf + ripgrep + bat
CLI utilities
fzf for fuzzy history and file search, rg for blazing-fast code search, bat as a syntax-highlighted cat replacement. All wired into shell keybindings.
Reproducible environment, anywhere
GNU Stow
Dotfile manager
Symlink-based manager that keeps each tool's config in its own directory inside a single git repo. Zero magic, zero dependencies β just symlinks.
Brewfile
Reproducible packages
Every CLI tool, cask app, and VS Code extension tracked in a Brewfile. Running brew bundle on a new machine restores the full environment.
1Password SSH Agent
Secret management
SSH keys and API tokens live in 1Password. The SSH agent integration means no keys stored on disk and seamless git / server auth.
Tailscale
Zero-config VPN
Peer-to-peer mesh VPN. Access my home lab, remote servers, and private services from anywhere without opening firewall ports.
Typography matters even in a terminal
JetBrains Mono
Coding font β primary
Ligatures, excellent readability at small sizes, and a generous x-height. My default in both the editor and terminal. Free and open source.
Geist Mono
Coding font β secondary
Vercel's take on a monospace β clean and minimal. I rotate to this occasionally when I want a more neutral aesthetic.
Inter
UI / prose font
The default for most UI work. Humanist sans-serif with excellent legibility across sizes. Also used as a fallback for this site.
Nerd Fonts patcher
Icon glyphs
JetBrains Mono patched with Nerd Fonts to get icons in Starship, lsd, and neovim. A single patch step on every new machine.
Everything else in the stack
Raycast
Launcher
Replaced Spotlight entirely. Window management, clipboard history, snippet expansion, and direct GitHub/Linear search β all from one keyboard shortcut.
Arc Browser
Browser
Spaces keep client work, personal research, and staging environments isolated. Command Bar is faster than any bookmark. Chromium-based so dev tools are familiar.
Docker Desktop
Containers
Local container runtime for development and integration tests. I use k3d on top of it to spin up lightweight multi-node Kubernetes clusters locally.
k9s
Kubernetes TUI
Terminal UI for navigating Kubernetes clusters. Viewing pod logs, describing resources, and exec-ing into containers without typing kubectl every time.
TablePlus
Database GUI
Clean, fast native GUI for PostgreSQL, MySQL, Redis, and more. Filters, query editor, and inline editing without the bloat of DBeaver or DataGrip.
Obsidian
Knowledge base
Markdown-based, local-first notes. I use it for system design notes, incident post-mortems, architecture decisions, and a personal wiki of recurring kubectl patterns.
Insomnia / Bruno
API testing
Insomnia for quick HTTP checks; Bruno for version-controlled API collections that live alongside the codebase in git.
Linear
Project management
Fast, keyboard-driven issue tracker. Cycles and project views map well to how I think about sprints and milestones.
This page is a living document. If something's changed since you last visited, it probably means I found something better.