Uses
What I actually use.
Hardware, editor, terminal, AI tooling and the handful of apps that survive on my machine. Nothing here is on the list because it is fashionable. Each one is here because it fits how I work: fast, keyboard-first, and easy to reason about when something goes wrong.
Workstation
14” MacBook Pro, M2 Pro, 16GB RAM (2023)
Quiet, fast, and enough for almost everything I do: Neovim, a handful of containers, and a browser full of dashboards. The one place it runs out is memory-heavy work. Trying to fine-tune a 270-million-parameter model on it is how I learned where 16GB ends, and why that training job moved to the cloud.
MX Master 4 for Mac
Upgraded from the 3S. The haptic feedback and the extra programmable actions are the visible changes, but what keeps it on the desk is the same thing as before: precise tracking, quiet clicks, and a scroll wheel that gets through long log files and long pull requests without complaint.
Editor and terminal
Neovim
My main editor. Almost everything I write, from Laravel to shell scripts to these notes, goes through it. Once the keybindings are in your hands, editing text without leaving the keyboard is hard to give up, and the same setup runs everywhere: laptop, server, or a container.
tmux
Where the work lives. One session per project, with Neovim, a shell, logs and a coding agent in their own panes. Detach at the end of the day, reattach in the morning, and the context is exactly where I left it.
Ghostty
The terminal emulator underneath all of that. Fast, GPU-rendered, and configured from a single plain-text file, which is the whole point of a terminal for me: it gets out of the way.
Warp
Occasional use, mostly for its AI help when I am stuck in an unfamiliar CLI or trying to remember a flag I use twice a year.
PhpStorm
Still the tool I reach for occasionally when a large PHP refactor needs the heavy machinery: project-wide renames, deep inspections, and the database integration.
VS Code
Occasional use, mostly when a project or a teammate already lives in it and it is easier to meet them there than to bring the code to Neovim.
TablePlus
For browsing and managing databases, mainly MySQL and ClickHouse. Has saved me from building about a thousand admin interfaces over the years.
AI coding tools
Claude Code
The coding assistant I use most, from the terminal. It does the mechanical work while I keep the job of deciding whether the result is actually correct.
Codex
OpenAI’s coding agent. I use it alongside Claude Code, partly for a second opinion on the same problem and partly to see where the two disagree.
OpenCode
An open-source terminal coding agent. Useful for the same kind of work with the freedom to point it at different models.
Agents
Hermes
An open-source agent framework I use when a task needs an agent that runs on its own rather than a coding session: tools, memory, and long-running work.
Pi
A minimal coding agent that is small enough to read and change. That matters when you want to understand exactly what the agent is doing on your behalf.
Productivity
Raycast
A fast launcher that has become the command centre for everything: launching apps, managing windows, searching files, and running custom scripts.
Obsidian
Daily notes instead of rigid topic folders. I capture everything in the day’s note and rely on linking, tags and search to find and connect it again later.
Superwhisper
Local speech-to-text for dictating messages, notes, and first drafts. Talking through a problem is often faster than typing it, and having the transcription happen on-device means I do not have to think about what is in it.
SavvyCal
Scheduling that protects the calendar, so meetings land where they do the least damage to deep-work time.
Raycast Focus
Blocks distracting sites when I need to just do the work and get some momentum going.