Software I use, hardware I depend on, and the lab I experiment in.
I’m a productivity nerd, and I consider finding the right tools and refining my setup a hobby. AI has rapidly changed what that means, so this page reflects the hardware, software, and experiments shaping how I work today.
Workstation
MacBook Pro 16” M2 Max 32GB
My primary development machine. It has enough headroom for the editor, browsers, containers, local services, and the other tools that accumulate during a full day of engineering work.
Apple Studio Display (Nano-Texture Glass) ×2
These replaced my aging Thunderbolt display. The nano-texture glass and adjustable stands have both been worthwhile upgrades, and the two-display setup gives me room to keep code, terminals, documentation, and system telemetry visible together.
Kinesis Advantage360
My split ergonomic keyboard. Beyond being more comfortable for long development sessions, the two-piece layout lets me keep my mouse centered between the halves and a notebook open beside me for taking notes without disrupting the rest of the setup.
Logitech MX Master
A comfortable, reliable mouse that I keep centered between the two halves of the Kinesis. The layout creates a natural working position while leaving room for graph paper off to the side.
M1 Mac mini (8GB)
An extra Mac mini I had lying around that now runs as a small, quiet, always-on system for long-running services, remote development, and AI-agent experiments. I can reach it over Tailscale or through an IPKVM, which lets agents keep working even when my laptop is in my bag.
Productivity
Obsidian
I treat almost everything as a project and use a consistent project template in Obsidian to organize the notes, research, decisions, and supporting material for each one. That same structure carries across my email and task system. The organization was designed once, so deciding where something belongs is usually mechanical rather than another problem to solve.
OmniFocus & Getting Things Done
OmniFocus is the trusted system behind my version of Getting Things Done. New commitments go into its inbox and are organized into the same projects I use in email and Obsidian. Its Review feature regularly brings every project and unfinished task back to my attention so I can update it, drop it, or decide the next action. I do not have to keep commitments in my head because I trust the system to surface them when they need a decision.
Inbox Zero & Project Labels
I keep email at inbox zero with labels that mirror my projects, plus a place for reference material. A message gets answered, filed, or turned into an action in the OmniFocus inbox. If it matters but I truly do not want to deal with it today, snooze puts it back in front of me tomorrow. Inbox zero is not organization for organization’s sake. It gives me the mental space to know that everything has either been handled or will return at the right time, using a small set of repeatable decisions that makes processing email almost mechanical.
Graph Paper & a Regular Pen
Nothing fancy. I keep graph paper and a regular pen beside my keyboard for working through ideas, sketching systems, planning the day, and taking notes without opening another application. At the end of the day, any unfinished to-do items on the page go into OmniFocus so the paper can stay temporary without anything getting lost.
Focus
Apple Music Coding Playlist
When I am coding or doing other deep work, lyrics compete with the part of my brain I need for the task. Putting the Coding playlist on shuffle helps me settle into the work and block out distractions.
AirPods Max
The noise cancellation and seamless switching between my Apple devices are the reasons I keep using them. Removing the small friction of changing Bluetooth connections is a surprisingly meaningful quality-of-life improvement.
Development
Neovim
I moved to Neovim after years of VS Code and IntelliJ. Vim motions and the ability to shape the editor around my workflow keep me there.
Ghostty
My terminal of choice. It is fast, native, and stays out of the way while I move among codebases, remote systems, and long-running processes.
tmux
I use tmux inside Ghostty to manage panes, windows, and durable sessions without leaving the keyboard. Sessions survive disconnects, and I can move quickly among several projects or remote machines without turning the desktop into a grid of terminal windows.
Tailscale
Tailscale ties together my computers, lab machines, and virtual environments without exposing management interfaces to the public internet. It makes secure remote access feel like working on one private network, wherever the hardware happens to be.
Homelab
IP KVMs
IP KVMs give me out-of-band access to physical machines when the operating system, network configuration, or remote shell is unavailable. They make it possible to manage experiments remotely without pretending every failure will be recoverable through SSH.
Proxmox & Virtual Machines
I use Proxmox and VMs to create disposable environments, isolate services, test infrastructure changes, and learn how systems behave outside the happy path. Breaking a VM is much more productive when restoring it is cheap.
Arch Linux
I dabble in Arch Linux when I want an environment that makes the underlying choices visible. Assembling and repairing more of the system myself is a practical way to understand how the pieces fit together.
AI Agent Frameworks
I experiment with agent frameworks to understand orchestration, tool use, state, memory, handoffs, and evaluation. The interesting work is not getting an agent to produce one impressive result—it is building deterministic controls that make useful behavior repeatable.
Architecture & Collaboration
Miro
I use Miro to make architecture, workflows, and ambiguous business problems visible enough for a group to reason about them together. Its structure works well for collaborative sessions without forcing every idea into a finished diagram too early.
Lucidchart
I use Lucidchart when a diagram needs more precision: entity relationships, AWS infrastructure, system boundaries, and business-process flows. It is less about presentation and more about creating a shared technical model that can be reviewed and challenged.