Uses
What I actually reach for. Not an aspirational list — if it's here, I've shipped something with it. That includes the AI tooling: it's in the daily loop, and I think being specific about what each one is good for is more useful than claiming to be "AI-first".
Editor & terminal
VS Code
Primary editor. Dart, TypeScript and Tailwind extensions.
Cursor
Primary AI editor — see below.
Android Studio
For anything that needs the emulator, profiler or Gradle.
Xcode
iOS builds, signing, and the native debugging Flutter can't reach.
AI in the loop
Claude Code
Agentic work in the terminal. Multi-file refactors, migrations and reviews where the change spans more of the repo than fits in a chat window.
Cursor
The default editor. Inline completion and edits where I'm already working, rather than copying between a browser tab and the file.
ChatGPT / Codex
Drafting an implementation, then arguing with it. Most useful before I've committed to an approach, when the cost of being wrong is still zero.
Gemini
Long-context reading — a large codebase or a pile of documentation in one pass, when the question is 'where does this actually happen'.
Build & ship
Flutter + Dart
Default for mobile unless there's a reason not to.
Next.js + TypeScript
Default for web. App Router, strict mode.
Supabase
Postgres with row-level security when I want SQL and auth without running servers.
Firebase
Firestore, Cloud Functions, Crashlytics, FCM.
Docker
Reproducible environments, so 'works on my machine' stays true elsewhere.
Git + GitHub
Small commits, real messages, review before merge.
Design & debug
Figma
Reading designer handoff, measuring, exporting.
Firebase Crashlytics
Decides what I fix next, more reliably than my intuition does.
Charles / DevTools
When the bug is on the wire rather than in the code.