The tools I actually reach for.

One laptop, a short list of software, and the models I lean on most. No aspirational gear — just what’s open on a normal day.

Workstation

  • MacBook Air, M4, 24GB RAM

    The whole setup — no desktop, no external display, no second machine. The 24GB is the part that earns its place: containers, an editor and a browser full of dashboards all resident at once, on a machine with no fan to complain about it.

Development tools

  • Zed

    The editor I write in. It opens a large file without making that a decision, and it keeps AI editing in the same window instead of a separate app — which matters when you switch between the two every few minutes.

  • iTerm2

    The terminal everything else runs inside — Claude Code, Docker, deploys. Split panes and saved profiles carry most of the day, and I have never needed it to do more than that.

  • cmux

    Where parallel work happens. I usually have several streams going inside a single project — a fix in one, a feature in another — and cmux keeps each in its own session instead of me juggling tabs and losing track of which is which.

DevOps

  • Docker

    So a thing that runs on the laptop runs the same way on the server. It is also how Postgres and an API stay isolated per project — no global installs, nothing to unpick when a project ends.

  • GitHub Actions

    CI and deploys, triggered on push. Tests and build run before anything ships, which is the difference between deploying and then checking, and deploying because you already know.

  • AWS

    Where deployed things live. Mostly the unglamorous parts done properly — compute, storage, and the IAM policy you write once and hope never to open again.

  • RunPod, Replicate and Fal

    The three serverless GPU providers the video pipeline calls out to. Each has its own cold-start behaviour and pricing, which is exactly why benchmarking across them is ongoing work rather than a decision made once.

AI tools

  • Claude Code

    The coding agent I work with in the terminal. It reads the repo before it edits, which is what makes it useful inside an existing codebase rather than only for scaffolding something new.

  • OpenRouter

    One API in front of many models. Trying a different model becomes changing a string rather than wiring up another provider — which is the only reason comparing them properly is practical.

  • DeepSeek Chat

    For the questions that happen away from the editor — thinking out loud, working out an approach before any of it becomes code. Cheap enough that I do not ration it.

Models I reach for

  • Claude Fable

    The default when the work needs care. Long refactors, anything touching production, anything where being subtly wrong costs more than being slow.

  • Claude Sonnet

    The everyday one. Fast enough to stay in flow, and good enough that I only reach past it when the problem has earned it.

  • DeepSeek

    Strong reasoning at a price that changes how you use it. When a model is cheap enough to think out loud with, you stop budgeting prompts and start actually exploring the problem.

  • Kimi

    In the rotation when I want a second read on something. The long context is the draw — when a problem needs the whole file in view rather than the interesting part of it, it goes here.

Productivity

  • Alfred

    Launcher, clipboard history, and a handful of workflows on top. The clipboard history alone justifies it — most of what I paste, I copied twenty minutes ago and have already forgotten.

  • Notion

    Planning and anything that wants structure — project docs, benchmark tables, the things that are really a database pretending to be a page.

  • Obsidian

    Local markdown notes that stay mine. Plain files in a folder, so nothing I write depends on a company still existing in five years.