TL;DR: Here’s how I set up my 2021 MacBook Pro along with links to all the software and the method by which I install them (either via the Mac App Store, Homebrew, or Direct Downloads).


The last time I wrote anything about setting up a new machine was in 2017 and it was specifically for a MacBook Pro and WordPress development. Though I shifted much of my work to a Mac Mini in 2018, I’m now using a 2021 16″ MacBook Pro as my primary machine. And though I still work in software development and primarily work in the WordPress economy for a living:

  • I use a handful of different tools,
  • I use a handful of the same tools,
  • I have different tools for productivity as well as for personal use.

And how I set all of this up has changed, too.

Since it’s been about four years since I’ve written anything like this, now’s a good time to document my current set up both for reference and to share with the rest of you who find this kind of stuff interesting.

My 2021 MacBook Pro

Out of the Box

Aside from taking the machine out of the box and turning it on, the very first thing I do is update all of the existing software.

First, I run a System Update to get the latest version of the operating system. Next, I open the Mac App Store and update any software that’s installed on the machine that has outstanding update.

Personal Preference

After that, I run down the usual list of things that I like to customize to to my preferences. There’s no rationale behind many of these other than I like them (and I like them because they help me get stuff done).

That is so say, if you’re looking for some type of scientific or even anecdotal evidence as to why I do this, I don’t have anything to share. It’s purely personal preference.

That said:

  • I set the dock to the bottom of the screen but set it to automatically hide.
  • I dislike the genie effect so I have it set to scale all of the applications down upon minimization.
  • I don’t bother hiding the menu bar at the top because I find myself using the menu bar and the click and system tray more than not.
  • In the sidebar, the factory widgets I use are Photos, Calendar, Weather, Reminders, and Top Stories. I have a few others for third-party apps, but since those tend to come and go, I’m not going to bother sharing them here.
  • I usually start off nuclear with notifications and turn them all off and gradually add them back on based on what’s truly useful.
  • When it comes to using Mission Control, I group all of the windows by applications.
  • Though I like the convenience of unlocking my computer with my watch, I opt not to do so because if I’m near the machine and one of my kids gets curious or accidentally wakes up the machine, I don’t want them to interrupt my work.

For the longest time and for fun, I’ve named my machines and hardware after various places in Star Wars. My last six laptops have all been named after Luke Skywalker’s T-16 Skyhopper (so I’ve creatively gone with Skyhopper, Skyhopper2, and up to Skyhopper6 🙃). My Mac Mini was named Starkiller.

I opted to name this machine ScarifRogue One is arguably the best – and my favorite – Star Wars movies (at least of the new movies). Because of its story, it’s made the plot of the original trilogy possible so it seemed a good one to go with.

🎬 Start The Machine

I’ve written quite a bit about using Homebrew to manage different packages and software for my development environment, but I usually keep it dedicated just for that. The rest of the software that I use comes from the Mac App Store.

But after reading an article, not unlike this one, from my good friend Carl Alexander, and after prodding him with all of my questions on managing applications through Homebrew, I decided to use Homebrew as much as possible when it comes to installing all available software on my machine.

In this article, whenever I’m talking about a specific piece of software, I’ll note whether or not it’s installed via Homebrew or the Mac App Store.

🍻Homebrew

Before doing anything else, I obviously need to install Homebrew. To do that, I head to the website, copy the command, and issue it in the terminal.

During its first run, it will take a little while to download and install the components it needs. But once its done, it’s easy to get started.

Since it’s not yet added to my system’s path (or my system’s environmental variables, depending on how you think of it), I also issue the following commands in the terminal:

$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/tommcfarlin/.zprofile
$ eval "$(/opt/homebrew/bin/brew shellenv)

After that, I’ll execute $ brew doctor to make sure that everything is set up and ready to go (if not, I’ll run whatever commands Homebrew instructs but, at this point, it shouldn’t be anything).

🖥 Terminal

The last few versions of macOS have used zsh as the default shell (coming from Bash). To verify that this is what you’re running, you can issue the following:

$ ps -p $$

This will return the process ID and the name of the shell that’s running.

Since I’m running zsh, I immediately install Oh My Zsh which is a library of functions and plugins for the zsh environment. I’ll cover them later in this article but for now, I do this:

$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Then I enable the following plugins:

  • Git
  • Brew
  • colored-man-pages
  • Composer
  • wp-cli

At Carl’s recommendation, I also installed zsh-autosuggestion (though tab completion is usually good enough for my needs) we’ll see how this goes).

$ brew install zsh-autosuggestions

From there, I install my usual suite of applications. It’s hard to categorize these because some of these are for productivity, some are for development, some are strictly for one or the other, and some don’t fit into either category.

To that end, I’ve broken them out into Development, Work, Productivity, Entertainment, and Utilities.

⌨️ Development

Each of these are applications that I use for writing software or working with the code that I write. I’m providing an short statement as to why I prefer each of the applications here.

  • Composer (Brew). Arguably the most popular, if not the standard, for package management in PHP.
  • FileZilla (Direct Download). Over the decades, I’ve tried a handful of S/FTP clients but nothing is as reliable as FileZilla. Its looks may not have changed much since I first started using it a couple of decades ago, but it’s rock solid and works with anything I throw at it.
  • Insomnia (Brew). Insomnia has become my go to REST API client over the past couple of years.
  • Ray (Brew). This is something that I found last year and absolutely love. It’s a happy middle-ground between something simple like var_dump and something more heavy-handed like Xdebug. It allows for visually appealing error messages while also profiling performance of your code.
  • TablePlus (Brew). This is my favorite database front-end so much so that I recommend purchasing a license if for no other reason that to support its development.
  • Visual Studio Code (Brew). This is my IDE of choice; it has been for a while and will be for the foreseeable future. I have a few extensions that I also use but I’m planning to cover these more in-depth in another post.

👔 Work

Each of these are applications, that were it not for my job, I probably would not have installed on my machine. I’m not offering up much a description for some of these as they are either already very popular.

💻 Productivity

Each of these are applications that I find useful in helping me get things done on a day-to-day basis.

  • Day One (Mac App Store). I’m a fan of Day One not just because of its core purpose but also because of the Apple Watch integration as well as the ability to pull information into the journal using IFTTT from services like Twitter, Instagram, and others. I’ve been re-thinking my relationship with this application for this year. I still plan to use it. I’m just unsure how.
  • Deliveries (Mac App Store).
  • Droplr (Brew). Still my favorite way to quickly share small files.
  • Hey (Brew).
  • Magnet (Mac App Store). This is my favorite utility for making it easy to organize windows on my monitor with a few shortcuts.
  • Keka (Brew). My preferred archive utility.
  • Pixelmator Classic (Mac App Store). I don’t do a lot of image editing so I don’t have a subscription to other services. I’ve used Pixelmator so long the version I use is now the Classic version. I’m okay with that and I still like it.
  • Things (Mac App Store). Still my preferred way to organize anything that needs to be done that’s too big for Reminders and too small for a project management utility.
  • UpNote (Mac App Store). My favorite markdown editor that I tend to use for work but some personal things, too.

📺 Entertainment

These are applications that I use for entertainment.

  • Pocket Casts (Brew). My favorite podcast application.
  • Spotify (Brew). Despite the integration with podcasts, still my favorite music service especially for music discovery.
  • VLC (Brew)

🛠 Utilities

These are all applications that I either use for system maintenance or that are useful during some of the things I do on a day-to-day basis. It’s not that this is a catch-all; it’s just that these are things that I use more for, ahem, utility than anything else.

  • 1Blocker (Mac App Store). This is my favorite extension whenever it comes to browsing the web (versus needing to develop anything for it).
  • 1Password (Brew). This coupled with support for two-factor authentication or one-time passwords has made this another one of my most indispensable apps.
  • Backblaze (Brew). This is my new backup and data storage service as of 2022. I waited a while before pulling the trigger but am glad I finally did.
  • CleanMyMac (Brew). A tool I use regularly to help remove residual clutter, files, folders, and cleaning up purgeable space on my hard disk.
  • Cloud Battery (Mac App Store). A recent application that I found for monitoring the battery status of any of my devices right down to my keyboard and trackpad.
  • Dracula Pro (Purchase). My absolute favorite package of themes, icons, and fonts for a consistent look and feel across my machine.
  • ExifRenamer (Brew). I use this to rename my photos by their EXIF data for easier organization.
  • HEIC to JPEG (Direct Download). If I import photos from my iPhone, then I need to convert them from the HEIC format I use on my phone to JPEG so its easier to preview them and back them up in other services.
  • Recut (Brew). Another new utility that I really like for automatically removing silences and dead air in videos (or in audio, if you opt to go that route).
  • Transmission (Brew). My preferred BitTorrent client.
  • WhatsApp (Brew)

Conclusion

That’s it; every application I’ve installed, how I’ve installed it, and all of the ways in which I use it.

Some may come and go as the years go by, but these have been fixtures for me for the last few years so if they are here, it’s because I use them regularly, if not daily.

My goal is to keep this machine going strong for at least five years so it’ll be interesting to look at back at this next time I set up another machine and see what’s changed.

Until then.