// uses
The machine, the shell, and the bike.
What I build with, the terminal helpers I wrote because I got tired of typing the same five commands, a few corners of the internet worth bookmarking, and the gear that gets me out of the city.
Workstation
MacBook Pro, M3 Pro
Fast enough that a full Gradle build is a coffee sip, not a coffee break. macOS, keyboard-first.
LG 27U631A - 27-inch QHD
2560×1440 IPS at 100Hz with USB-C power delivery - one cable to the MacBook, and enough room for editor, terminal and logs side by side.
Logitech MX Master 4
Ergonomic, with the free-spinning scroll wheel that makes long log files and stack traces bearable.
iPad Pro + Magic Keyboard
The second screen for reading, sketching system designs, and travelling light.
Raycast
Launcher, clipboard history, window snapping and snippets - the first thing I install on a new Mac.
Arc
Spaces per context (work, side projects, contests) keep the tab count civilized.
Editors & AI
IntelliJ IDEA
Home for Java and Spring - the refactoring and debugger are still unmatched for large JVM codebases.
Cursor & VS Code
TypeScript, Python, and anything that isn't the JVM.
Claude Code
Pair programmer in the terminal - this site was scaffolded, committed and deployed with it.
Terminal
Ghostty + iTerm2 + Zsh
Ghostty for speed, iTerm2 for the odd split-pane session, Zsh with a file of hand-rolled functions (below).
glit
One-step git add, commit, push and cleanup - the helper I run more than any other.
cbjson
Pretty-prints whatever unreadable JSON is on the clipboard (or in a file) and puts it back - jq colours when available.
weather
Terminal forecast with short, one-line and graph modes, plus the moon phase - checked before every ride.
port · webshare · myip · pingmap
Who is on :8080 (and kill it), share a folder over LAN HTTP, local and public IP with geolocation, and a latency breakdown.
todo · countdown · keepawake
A persistent CLI task list, timers with macOS notifications, and caffeinate with a kill switch.
The full write-up ↗
Every function above, why it exists, and the source - free to steal. On Medium.
Awesome finds
Information is Beautiful
David McCandless's data-visualization studio - dense facts turned into graphics you actually want to read. A masterclass in making numbers obvious.
The Pudding
Visual essays that explain culture with data and interactive storytelling. The best argument I know for scrollytelling done right.
Our World in Data
Open research and charts on the world's biggest problems - poverty, health, climate, energy. My go-to when an argument needs a real number.
Off the grid
Royal Enfield Himalayan 450
The touring bike. Built for bad roads and long days - which is exactly how I use it.
Trekking kit
Layers, a good pair of boots, and a pack light enough to forget about at altitude.
7 Wonders Duel
The two-player strategy game that never leaves the shelf for long.