Some people pride themselves on how many months they can reach in
which leads to an ever-present dread of major software updates. Some people take
it upon themselves to carefully configure and fine-tune the most trivial
minutiae, which makes the idea of starting from a fresh operating system install
an increasingly terrifying proposition. Some people have been using the same
backup series for fifteen years, dragging untold corrupted files and buggy
preferences from computer to computer in perpetuity.
I aim for each of my computers to be as disposable as possible. If my system starts feeling slow or buggy or otherwise unreliable, I want to be able to wipe it and start fresh without losing days of productivity and without any lingering doubt that an important file or program failed to make the transition. That means minimizing manual customizations while automating as much as possible to get set up quickly. The trick is in striking the right balance: time-saving settings should be taken advantage of wherever the defaults are genuinely bad, and automation should be kept minimal enough that it doesn’t itself become a vector for carrying forward bugs from one install to the next.
I set up macOS from scratch (and not from backup) about two or three times a year, mostly due to my unusually fraught relationship with the software I use and the gradual accretion of bugs, inconsistent behavior, poor performance, and kernel panics that build up over time. This has led me to lean pretty hard into syncing all the stuff I really value to either iCloud Drive or GitHub, and building a suite of command line tools to make it easier to manage.
So, in this video, I take the opportunity to walk through how I set up a new Mac from the minute I first land on the desktop. I start by talking through my thought process as I configure the system, how I set it up for development, and then make sure everything works as I install and build a couple software projects.
In addition to all of Apple’s stock apps, a few other relevant projects and apps the video touches on:
- My icloud-dotfiles repo
- Dato calendar
- Myna for Google Translate
- Things 3
- Little Snitch
- rbenv and nodenv
- fzf and ripgrep
Spending 90 minutes to watch a video for ideas about how to set up your development machine might sound ludicrous, but I’ve found that any time that I invest in improving my own development experience has a multiplier effect on my productivity, especially when it can reduce the feedback loops of frequently-performed actions. If you check this video out, I hope you find something of use—and if you spot anything I could be doing better, let me know!