Every developer has their setup. Here’s mine — refined over years of trying too many tools and settling on the ones that actually stick.
Editor & Terminal
Neovim is my primary editor. I switched from VS Code two years ago and never looked back. The modal editing model clicked once I stopped fighting it and started thinking in motions.
Warp as my terminal. Fast, GPU-rendered, and the AI features are genuinely useful for complex shell commands.
tmux for session management. I keep persistent sessions for each project — switching context is just tmux attach -t project.
Development
Claude Code for pair programming. It’s become indispensable for exploring unfamiliar codebases, writing tests, and rubber-ducking design decisions.
The key to using AI tools effectively is knowing when to use them and when to think for yourself. I use Claude for the mechanical parts and do the architectural thinking myself.
Git with a few conventions:
- Conventional commits (
feat:,fix:,docs:) - Short-lived feature branches
- Squash merge to keep history clean
Knowledge Management
Obsidian for everything — notes, articles, project docs, daily logs. The killer feature isn’t any single plugin but the combination of:
- Local-first markdown files
[[wikilinks]]for connecting ideas- iCloud sync across devices
- No vendor lock-in
This very site is published from an Obsidian vault. See building-a-tui-website for how that works.
The Philosophy
I optimize for fewer, better tools rather than chasing every new thing. A tool earns its place by:
- Solving a real problem (not a hypothetical one)
- Being fast enough that I never wait for it
- Having a CLI or keyboard-driven interface
- Working offline
If a tool doesn’t meet these criteria, I probably don’t need it.