macOS Catalina 10.15.4: Development Setup for my new Mac

I bought a new personal laptop recently and I’m starting a new job soon, which means that I’m going to have a few new Mac laptops to set up in the near future. So, I figured it would be prudent to write my new Mac setup steps before I get the new computers and publish these steps somewhere so that I can easily get up and running with my new machine. My configurations isn’t too crazy, but it is custom, and I think I have enough 3rd-party development and productivity tools installed that it’s worth a blog post to cover all of the bases. On a final note, I’m primarily a backend/distributed-systems/data engineer, so my needs mostly revolve around Scala, Java, Kotlin, Go, Node, Python, and Haskell. YMMV!

This blog will be broken into two sections: a “Before” section that covers what to do before setting up a new Mac (it’s a shorter section that covers exporting/porting existing system settings) and an “Setup” section that covers that actual steps required to get up and running. Finally, before we get started, I wanted to make available a todoist template for all of these tasks that you can easily import into Todoist if you’d just prefer to see the steps without all of the extra explanations. Alright, let’s get started!

Before

There’s not too many steps here, but I definitely recommend making sure that these tasks are done before configuring a new machine since my .rc files and my editor keybindings are specific and integral parts to my efficient workflow. Here’s are the recommended tasks:

Setup

These are all the tasks I recommend doing after you’ve gotten your new Mac and want to configure it so that all of the settings match the old one.

The basics: browser, backups, and secrets

Terminal, SSH, GitHub, Shell, and other System Default Settings

Terminal

SSH

Your ~/.ssh/config file should look like this

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

Host myssh
  HostName example.com
  User user
  IdentityFile ~/.ssh/key.pem

Now just run the alias (ssh myssh) to connect.

Git

Shell

System Defaults

Installing 3rd-Party Apps

Install all 3rd-party apps via Homebrew

Install Additional Programming Languages that weren’t handled by Homebrew

Customize Additional Settings

Finally, we need to customize any additional settings that could not be configured with the defaults-write-our-favorites.sh script (Mac OS loves to make it hard to change default settings).

Conclusion

At this point, all of the essentials should be installed and ready to go. As of writing this (6/6/2020), I’ve currently used this setup guide for one (1) of my new Macs and have updated it slightly from the original draft form to reflect the actually installation process, but now this post has officially been end-to-end tested!

Finally, I want to give credit to the following blog posts for paving the way for mine :)