Uses
The tools, apps, and hardware that power my development workflow. I am always experimenting, but these have earned their place.
Editor / IDE
I believe in keeping editors lightweight and letting keyboard shortcuts do the heavy lifting. The best tool is the one that stays out of your way.
- My primary editor for everything from TypeScript to Python. Vim keybindings (via the Vim extension) mean my hands never leave the keyboard. I keep extensions minimal to avoid startup lag—nothing worse than waiting for your editor.
- Vim extension with custom leader key mappings
- editor.formatOnSave: true (Prettier handles formatting)
- editor.tabSize: 2 for JS/TS, 4 for Python
- workbench.colorTheme: GitHub Dark Default
- editor.minimap.enabled: false (screen real estate matters)
- editor.cursorBlinking: solid (less visual noise)
- For quick edits, config changes, and when I want the fastest possible startup time. I use it over SSH and in situations where VS Code would be overkill. The muscle memory from years of Vim means I can edit at the speed of thought.
- LazyVim as the base configuration
- Telescope for fuzzy finding
- nvim-treesitter for syntax highlighting
- Custom keymaps: jk to escape, leader is space
- When I want AI assistance baked into the editor. Great for exploring unfamiliar codebases or rubber-ducking complex problems. The inline diff suggestions are genuinely useful.
Terminal
The terminal is where I spend half my day. A good setup pays dividends in productivity.
- The macOS terminal replacement everyone uses for a reason. Split panes let me run dev servers, watch tests, and code simultaneously. The hotkey window (Option+Space) means I can summon a terminal from anywhere instantly.
- Hotkey window: Option+Space (always accessible)
- Split panes with Cmd+D (vertical) and Cmd+Shift+D (horizontal)
- Natural Text Editing profile for familiar shortcuts
- Unlimited scrollback buffer
- Broadcast input for managing multiple servers
- zsh + oh-my-zshThe shell itself matters as much as the terminal. Oh-my-zsh provides git aliases that I use constantly (gst, gco, gp) and plugins for autocompletion that make navigating projects fast.
- Theme: powerlevel10k (fast, informative prompt)
- Plugins: git, zsh-autosuggestions, zsh-syntax-highlighting
- History: 50000 lines, shared across sessions
- Custom aliases: ll, la, tree, ports, killport
- Session persistence for long-running processes and remote work. When SSH disconnects, tmux keeps everything running. Named sessions for each project make context switching painless.
- Prefix remapped to Ctrl+A (easier reach)
- Mouse mode enabled for scrolling
- vim-style pane navigation
- resurrect and continuum plugins for session persistence
- Cross-shell prompt that works anywhere. Shows git status, Node version, Python environment—just what I need without clutter. Faster than pure oh-my-zsh themes.
Browser
Browsers are more than just windows to the web. The right browser setup can make research, development, and context switching seamless.
- My primary browser. Spaces separate work from personal browsing—I have one for each client project plus one for personal. Vertical tabs make sense when you have 50+ open. The command bar (Cmd+T) is faster than bookmarks.
- Spaces: Personal, Work (per client), Research
- Little Arc for quick lookups without losing context
- Keyboard shortcuts: Cmd+S to toggle sidebar, Cmd+Option+N for note
- Extensions kept minimal: 1Password, uBlock Origin, React DevTools
- Still my go-to for development. DevTools are unmatched, especially for performance profiling and network debugging. React and Vue DevTools extensions work flawlessly. I use Chrome profiles to separate work accounts.
- DevTools: Network tab with "Preserve log" always on
- Experiments: CSS Overview, Full accessibility tree
- Extensions: React DevTools, Redux DevTools, Lighthouse
- Profiles for each Google/GitHub account
- For testing and when I need a clean slate. The Multi-Account Containers extension is brilliant for testing user flows without logging out. Plus, supporting browser diversity matters.
Productivity
Good tools should amplify thinking, not require it. These apps stay out of the way until I need them.
- The single most impactful productivity tool I use. It replaced Spotlight, clipboard history, window management, and dozens of shortcuts. The script command system means I can automate almost anything.
- Hotkey: Option+Space (replaces Spotlight completely)
- Clipboard history: keeps 6 months, synced
- Window management: halves, thirds, fullscreen shortcuts
- Custom scripts: Open in VS Code, create Jira ticket, start timer
- Snippets: email templates, code patterns, common responses
- My second brain. Everything goes here—meeting notes, project documentation, learning journals, ideas. Local markdown files mean I own my data, and the graph view reveals surprising connections between thoughts.
- Daily notes template with automatic date linking
- Periodic reviews: weekly, monthly, quarterly
- Plugins: Dataview, Calendar, Tasks, Templater
- Synced via iCloud (fast, free, reliable)
- Separate vaults for work and personal
- Issue tracking that feels modern. Keyboard shortcuts make it usable without touching the mouse. Cycles and milestones keep projects on track without the overhead of traditional project management tools.
- Keyboard: C to create, J/K to navigate, L for labels
- Workflow: Backlog → Todo → In Progress → Done
- GitHub sync for automatic issue linking
- Slack notifications for assignments only
- Passwords are just the beginning. SSH keys, API tokens, secure notes, software licenses—it all lives here. The CLI integration (op) makes scripting with secrets secure.
- SSH agent for passwordless git authentication
- Browser extension for autofill
- CLI: op read secrets in scripts
- Watchtower alerts for compromised passwords
- Calendar that understands natural language. "Meeting with John tomorrow at 3pm" just works. Menu bar widget shows upcoming events at a glance. Handles multiple time zones gracefully.
- Screenshot tool that does everything. Annotation, scrolling capture, screen recording, cloud upload with link copy. Worth every penny for documentation and bug reports.
Development Tools
Beyond the editor—the utilities that make development smoother.
- API testing without writing curl commands by hand. Collections organize requests by project, and environment variables make switching between dev/staging/prod seamless. The mock server feature is underrated for frontend development.
- Database GUI that feels native to macOS. Connects to Postgres, MySQL, SQLite, Redis—whatever the project needs. Quick query tabs and inline editing make data exploration fast.
- Containers for local development environments. No more "works on my machine" conversations. Dev containers in VS Code mean new team members can be productive in minutes, not days.
- Resource limits: 4 CPUs, 8GB RAM
- Volume mounts for hot reloading
- docker-compose for multi-service projects
- Git operations without leaving the terminal. Creating PRs, reviewing code, checking CI status—all from the command line. The gh copilot extension adds AI suggestions for shell commands.
- Package management for macOS. A Brewfile tracks all installed tools for easy machine setup. "brew bundle" on a new Mac installs everything I need.
Languages & Frameworks
The technologies I reach for most often. Each chosen for specific reasons.
- Types are documentation that the compiler enforces. They catch entire categories of bugs before runtime and make refactoring fearless. The initial investment pays off within weeks.
- strict: true (always)
- noUncheckedIndexedAccess: true
- exactOptionalPropertyTypes: true
- Zod for runtime validation at boundaries
- My go-to for scripts, automation, data processing, and backend services. The standard library is comprehensive, and the ecosystem has a package for everything. Type hints (via mypy) bring TypeScript-like safety.
- pyenv for version management
- poetry for dependency management
- ruff for linting and formatting (fast)
- pytest for testing
- React with opinions. This site runs on it. Server components have fundamentally changed how I think about data fetching—render where the data is. The app router is worth learning.
- When Express feels too slow or too unopinionated. Schema validation out of the box, a clean plugin system, and genuine performance improvements. TypeScript support is excellent.
- Utility-first CSS that made me stop hating styling. The design constraints (spacing scale, color palette) lead to more consistent UIs. Build-time purging means tiny production bundles.
AI Tools
AI is changing how I work. These tools have become indispensable.
- My primary AI assistant for coding, writing, and thinking through problems. The large context window means I can paste entire files and get meaningful help. Better at nuanced explanations than alternatives.
- Autocomplete on steroids. Most useful for boilerplate, test generation, and exploring unfamiliar APIs. I review every suggestion—it is not always right, but it is often close.
- Search engine that gives answers instead of links. Great for technical questions when I want a synthesized answer with sources. The Pro search digs deeper.
Infrastructure
Deployment should be boring. These tools make it so.
- Push to main, get a deployment. Preview URLs for every PR make stakeholder review effortless. The edge network is fast globally. Next.js integration is unsurprisingly excellent.
- Production branch: main
- Preview deployments for all PRs
- Environment variables per environment
- Analytics for Core Web Vitals
- CI/CD without leaving GitHub. YAML configuration can be painful, but the ecosystem of community actions makes most tasks simple. Matrix builds for testing across Node versions.
- DNS, CDN, DDoS protection, and edge compute. The free tier covers most projects. Workers and Pages handle full-stack apps when Vercel is not the right fit.
- Heroku for the modern era. Great for databases, background workers, and services that need to run continuously. The free tier is generous for side projects.
Hardware
Good hardware is an investment in yourself. These tools disappear while I work.
- MacBook Pro 14" (M3 Pro)Compiles TypeScript faster than I can save. Runs Docker without the fan spinning up. Battery lasts through a full day of meetings plus coding. The best laptop I have ever owned.
- LG UltraFine 27" 4KRetina-quality display that macOS loves. One USB-C cable for video, power, and peripherals. The built-in speakers are surprisingly decent for video calls.
- Keychron K2 (Brown Switches)Wireless mechanical keyboard with satisfying tactile feedback. Hot-swappable switches mean I can experiment. The compact layout saves desk space without sacrificing keys I actually use.
- Logitech MX Master 3Ergonomic mouse that prevents wrist strain during long coding sessions. The horizontal scroll wheel is perfect for code review and timeline scrubbing. Pairs with 3 devices via Bluetooth.
- Sony WH-1000XM4Noise cancelling for deep work. The world disappears when I need to focus. Transparency mode for quick conversations without removing them. 30+ hour battery life.
- Autonomous SmartDeskStanding desk with memory presets. I alternate between sitting and standing throughout the day. The cable management tray keeps things tidy.
- Elgato Key LightGood lighting for video calls makes a surprising difference. Edge-lit LED panel eliminates harsh shadows. Controlled via Stream Deck or app.
Philosophy
I optimize for speed and simplicity. Tools should reduce friction, not add it. If something requires constant maintenance or configuration, it is probably not worth using.
I prefer keyboard-driven interfaces over mouse-driven ones. Every second spent reaching for the mouse is a second not spent thinking. Good shortcuts become muscle memory.
I update tools regularly but switch slowly. New does not mean better. If something is working, I need a compelling reason to change it.
Inspired by uses.tech • Questions about my setup? Get in touch.