My Development Setup in 2026
Here’s what I use day-to-day and why each tool stuck around.
Editor — LazyVim
I use Neovim with LazyVim as my editor. It gives you a fully configured Neovim out of the box — LSP, autocompletion, file explorer, fuzzy finder, git integration — without spending weeks writing your own config from scratch.
What I like about LazyVim is that it’s opinionated enough to be productive immediately, but everything is overridable. I’ve tweaked keybindings, swapped a few plugins, and added language-specific configs, but the core setup just works. VS Code is great too — I just happen to prefer this workflow.
Terminal — Ghostty
Ghostty replaced everything else for me — iTerm2, Alacritty, all of it. Built by Mitchell Hashimoto (HashiCorp co-founder), it uses Metal on macOS for GPU-accelerated rendering and feels like a native Apple app because it actually uses AppKit.
It starts instantly, renders fast, and doesn’t get in the way. The config is a single file, no JSON or YAML — just key-value pairs. Ligatures work out of the box, splits and tabs feel native. It’s the terminal I wanted iTerm2 to be.
AI — Claude Code
Claude Code is my go-to AI coding tool. It runs in the terminal, understands project context, and can read, write, and edit files directly. I use it for everything from scaffolding new features to debugging tricky issues.
What I like most is that it works inside my existing workflow — no separate app, no browser tab. Just another tool in the terminal alongside everything else.
Navigation — zoxide
zoxide replaces cd. It learns which directories you visit most and lets you jump to them with partial names. Instead of typing cd ~/projects/client/app/src, I just type z src and it figures out which one I mean.
Small tool, big time saver. Once you use it for a week, you can’t go back to regular cd.
Git — lazygit
lazygit is a terminal UI for git. Staging hunks, interactive rebasing, managing branches, resolving conflicts — all from a keyboard-driven interface without memorizing git flags. I use it for everything.
Docker — OrbStack
OrbStack replaced Docker Desktop on my Mac. It starts in about 2 seconds (Docker Desktop takes 20–30), uses significantly less memory and battery, and is a native Swift app that doesn’t feel like it’s fighting macOS.
It’s a drop-in replacement — same Docker commands, same docker-compose files, everything just works. The only difference is your fans stay quiet and your battery lasts longer.
SSH — Termius
Termius is my SSH client. It syncs hosts, keys, and credentials across devices — desktop and mobile. When I need to SSH into a server from my phone, it’s there. The snippet feature is handy for commands I run often on remote machines.
For quick SSH sessions I still use the terminal directly, but for managing multiple servers with saved configs, Termius keeps things organized.
Related
Word Embeddings, Cross-Lingual Alignment, and Building CLEU
How word embeddings work, what cross-lingual alignment means, and why I built a tool to explore them with FAISS.
Git Tags, Drone CI, and Watchtower — A Simple Deployment Pipeline
How I moved from Jenkins to Drone CI with git tags and Watchtower for a lightweight, reliable deployment pipeline.
Justfile as a Task Runner
How I use just to run multiple projects with a single command.