While setting up my new Mac M4 for a good month, I talked to good Ruby people about their setups and learned a few new tweaks that I didn't want to go unshared. I think we should make your setup 1% better.
I will ramble here for a bit about my history of setting up Macs and dev envs and how great the M4 is. But you, feel free to jump down to "the list" at the bottom, to see what you can do on your own Mac to become the top 1% of productive Mac Ruby developeurs.
When I had just started as a young developeur and computer science student, I sometimes liked to procrastinate at coding. I happily took any challenge and rabbit hole that my computer, IDE or whatever new tool (all tools were new to me) threw at me. And I hopelessly lost myself in some technology setups not built for humans.
But the endless hours of digging into setups and IDEs paid off in the end as well. I know exactly what kind of a setup I need and how much time it should take to get there. Anything else get trashed and moved to the "someday maybe" list. And over the years, I learned to separate "tweaking the setup" vs "doing the work", especially when I started to get paid for "the work".
But I still think there is room to improve your setup by 1%-2% every now and then.
This time I improved it big time, though. I run some heavy web apps on my Macs, and with the new M4 Pro Mac 48GM I'm so much faster now moving between things, running apps and tests that I'm pretty sure the investment is well worth it over the long haul for me and anyone working with me.
I also can now effortlessly run Google Meet or Zoom, recording software, and all my other development apps without the Mac crashing or draining battery to the minimum even when plugged in, as was the case with my 32GB 2019 Intel Mac before.
Every time I have a new machine I consider these two options:
- Sync everything from old Mac (my preferred one; no effort).
- Install everything from scratch.
This time I chose option 2, because my old machine felt dirty and boring. I wanted new setups, new tools and getting rid of everything that I don't use anymore. Also wanted to solidify some of my flows like handling dotfiles and installing tools.
I ordered the Mac mid-December 2024 and Apple promised to deliver it somewhere around New Year's Eve. They overdelivered and shipped it before Christmas. It still took me about a month to completely move from my old machine to the new one. Not because I have such a complicated setup, but because I'm dedicated to all my other projects more than finding an hour or two to do some dev setup. All the installing and configuring, including the apps I work on in my day job, probably took about 5 hours of fiddling.
Your Productivity List
OK, let's start with some simple stuff, so we can navigate the computer at all. Literally, the first thing that I do on any new machine is fixing the mouse:
🖱️ Mouse tweaks
I don't use natural scrolling since I was born with Windows and I don't understand how someone could use the "Secondary Click - Off" (Mac default). Also, I'm on full speed mouse and trackpad tracking.
Super important when on the trackpad, drag with three fingers (also super-hidden):
I'm not sure where I got this from, maybe some game or Windows, but many years ago, along with 3 finger dragging, I craved a 3 finger gesture that I can use to close windows and stuff like that. No chance to get this natively on the Mac, but Multitouch is a nice tool that solves that (for money):
Edit: I craved this from using a proper mouse my whole life, which has a scrolling wheel that you can click.
You can also use Multitouch for Window Management, so next step is to change your shortcuts to enable 6th of your screen:
Another thing I can't live without is a clipboard tool which I probably use dozens of times daily. I save everything everywhere and before sending any kinds of forms and when form submission fails, I recover it from a quick search. I also bulk copy and then bulk paste with that tool. And I capture text with CTRL+ALT+4 like a screenshot. Get yourself PastePal:
⌨️ Keyboard tweaks
There is usually not much going on with the keyboard at the moment, except this year. I usually add some weird languages I write apart from US to the inputs and call it a day. But there is one game changer this year that makes everything so much faster and more enjoyable:
There is also another thing I desperately want to learn, but it's still in the wanting stage, I know this will be a real game changer, too:
.dotfiles
I wanted to solve the dotfiles problem on my local. Moving dotfiles has been a manual process for ever since, and nothing is version-controlled. From someone who knows what he is talking about, I was recommended a mix of:
- version-controlled "public" dotfiles with an
install
script, like in this repo. - autoenv for secrets
/bin
folder for scripts (makes sense - though, I still have some scripts in.zshrc
😬)
I skipped this setup in favor of my old well-known .zshrc
setup. Not this year, I guess.
terminal
I used the Mac default beauty for a while until I got myself OhMyZsh
and a new terminal software. I did not install back Warp, but Ghostty instead because it just launched and was on everyone's recommendation list. Not sure why, but I do use it now, when I'm not in the integrated RubyMine terminal.
The ohmyzsh plugin is: powerlevel10 shell
. But I'll probably go with something simpler shortly.
~>
IDE/editor
So I first installed Cursor. As always, I loved the pairing with the AI for a bit, but then I hated Ruby development enough with a non RubyMine editor for too long (after about 20-30 minutes), for me to install RubyMine.
RubyMine is up and running immediately, all settings there.
Cursor doesn't sync settings, so all my hard-earned close-to-RubyMine shortcuts went lost and it's not easy to add shortcuts to VSCode (for me).
I seem to be hopelessly hooked on RubyMine, so the only hope is that Jetbrains comes up with some groundbreaking AI solution someday.
versioning tool
For installing Ruby in the right version, I wanted to try out mise. Seems like a nice tool, but after installing something else, I think some settings went missing in some .zshrc
or somewhere and mise didn't respond anymore. At that point I already had rbenv and nodenv installed after setting up some other apps, so I just removed it. I guess it doesn't really matter to me so much at this point locally.
services for Rails apps
brew
services (pg, redis, overmind), nothing interesting here...
games
After a month, my son got Minecraft on the machine. Let's go! ⛏️
apps
Standing out:
- Headspace for focus music (will be again replaced by brain.fm sometime in the future).
- Chat apps (have notifications disabled, except Slack)
- Apple apps - only using App Store and Calculator, and sometimes Keynote/Numbers for xls. files, really.
- Screen Mirror app, cool if I want to mirror iPad screen on my Mac.
That's all I got. Let me know if you got your setup 1% better today.
EDIT: Actually, I've just seen in my resources bookmarks for this article, I was also recommended this video, which seems to have a lot of cool actionable advice, not just for Neovim users: