People ask me about my setup all the time, so here's everything. Hardware, software, the whole thing. I'll keep this updated as things change.
My main machine is a Mac Studio with the M4 Max - 14-core CPU, 40-core GPU. I know, it's overkill for Rails. But when you're running multiple Docker containers, a few Rails apps, and Claude Code all at once, you want the headroom. Plus I'm experimenting with local AI models, and this thing doesn't even break a sweat.
I pair it with an Apple Studio Display. The 5K resolution is gorgeous for code - text rendering is crisp and my eyes don't get tired after long sessions.
When I need to work from somewhere else, I grab my MacBook Pro M2 Max with 32GB. Same setup, just portable. The battery life still surprises me - I can code all day at a coffee shop without hunting for outlets.
I built my own desk. Well, the tabletop anyway - I wanted something specific, so I made it myself. The frame is from Uplift, which handles all the standing desk magic. Being able to switch between sitting and standing throughout the day keeps my energy up.
The chair is a Herman Miller x Logitech G Embody. Yeah, it's expensive. But I sit here 8-10 hours a day, and my back has never felt better. It's one of those purchases that pays for itself in not having back problems.
For typing, I use a Keychron Q2. It's a 65% layout, so nice and compact, but still has arrow keys. The click-clack is satisfying, and my family has learned to live with it.
Apple AirPods for audio. They switch seamlessly between my Mac, iPhone, and iPad. I'm on calls a lot, and these just work.
I've been using RubyMine since 2012. I know, I know - "real developers use Vim." But RubyMine's refactoring tools, debugging, and Rails integration are just too good. When I need to rename a method across 50 files, it takes one keystroke. That's worth paying for.
My terminal is Ghostty - the new one from Mitchell Hashimoto (the Vagrant/Terraform guy). It's fast, beautiful, and feels native on macOS. Replaced iTerm2 and I'm not looking back.
That said, I'm currently learning Neovim. The efficiency gains are real once the muscle memory kicks in. I'm not ready to switch full-time yet, but I'm getting there.
This is the heart of my "one person + AI team" experiment. Let me be real - these tools have completely changed how I work.
Claude Code CLI is my main coding partner. It runs in the terminal, reads my entire codebase, makes changes, runs tests. It's like pair programming with someone who never gets tired, never gets frustrated, and has read every Rails doc ever written. This is how I built LexPro - 100% with Claude.
For thinking through architecture or writing docs, I use Claude directly (API and chat). The context window is huge, so I can paste in entire files and have real conversations about the code.
GitHub Copilot lives in RubyMine for quick autocomplete. It's good at boilerplate and obvious patterns. Not as smart as Claude, but faster for the small stuff.
I still use ChatGPT sometimes. Different models have different strengths. Gotta use the right tool for the job.
Rails since 2012. I've tried other things over the years, but I keep coming back. The full Hotwire stack lets me build interactive apps without the SPA complexity. No separate API, no JavaScript framework wars, no build step hell. Just ship.
For databases: PostgreSQL for everything serious. Redis for caching, Sidekiq, and Action Cable. SQLite when I want to keep things simple (been experimenting with Litestack). And MongoDB occasionally, when document storage actually makes sense.
DigitalOcean has been my go-to for years. Droplets, managed databases, spaces for storage. It just works, and the pricing is predictable.
I've been using Hetzner more lately. European hosting with incredible value - you get way more machine for your money. Great for when you need raw compute power.
For quick deploys and side projects, I'll use Render, Railway, or Fly.io. The modern PaaS experience is so good now. Push to deploy, done. Perfect for MVPs when you just want to ship.
Arc for work browsing - the spaces and profiles feature is genius. I have separate contexts for each project. Safari for personal stuff because it's fast and respects my battery.
HEY for email. Seriously, it changed my relationship with email. The Screener alone is worth it - new senders go to a holding pen until I decide if they're worth my time. No more spam, no more newsletters I forgot I signed up for.
Screen Studio when I need to record demos or tutorials. The automatic zoom-to-mouse feature is magic - makes everything look professional with zero effort.
Amphetamine to keep my Mac awake during long processes. Simple, free, does one thing well.
Apple Passwords finally got good enough that I stopped using third-party password managers. It's baked into everything, syncs everywhere.
For todos, I'm using Fizzy.do - Basecamp's new app. Simple and focused. Though I'm also building my own open source alternative, because of course I am.
Slack for work stuff. Discord for communities. WhatsApp and iMessage for personal. I try to keep these separate to maintain some sanity.
If you want to chat, just send me an email. I actually read them.
That's the setup. It's always evolving.
This page was built with Rails, Tailwind, and Claude Code. Obviously.
← Back to home