MacBook Setup Guide for Developers (2024 edition)

Wolfgang Haupt
4 min readJan 3, 2024

--

MacBook

As I just switched from a Ubuntu based noteook to an M3 MacBook Pro here is my take on what you might want to install for doing fullstack development.

Imho the single most important piece of software.
I’ll be nearly exclusively installing the whole machine using it.
Homebrew the package manager for mac:
https://brew.sh

Follow the instructions on the website to install it.
In order to install fonts on your system via brew, tap the font repository like this:

brew tap "homebrew/cask-fonts"

After we have homebrew installing further applications is a piece of cake.
Here is a list of applications I find useful and use for my daily work:

First of all get the most out of your terminal:

brew install --cask iterm2
brew install fzf

Install ‘oh my zsh’ for the best terminal experience:
https://ohmyz.sh/#install

I like the powerlevel10k zsh plugin:
https://github.com/romkatv/powerlevel10k

Bonushint:
Make sure to install the recommended font to get a monospace unicode font that can render all characters properly.

General utilities:

brew install mas
brew install --cask shottr
brew install --cask rectangle
brew install --cask alfred
brew install --cask vlc
brew install --cask tunnelblick

SSH and GPG:
If you are developing you most likely use SSH, I recommend using Secretive to install your SSH key into the secure enclave for maximum secuity of your SSH key.

brew install --cask secretive
brew install gpg

Remote Support:

brew install --cask anydesk
brew install --cask xquartz
brew install teleport

Communication and Officetasks:
These are highly based on personal preference!

brew install --cask slack
brew install --cask whatsapp
brew install --cask microsoft-office-businesspro
brew install --cask gimp
brew install --cask superlist
brew install --cask obsidian
brew install --cask synology-drive
brew install --cask spotify

Tools for development:
At the moment I still prefer Chrome over Safari, change my mind!

brew install --cask visual-studio-code
brew install --cask docker
brew install --cask google-chrome
brew install --cask studio-3t
brew install --cask restfox
brew install --cask utm
brew install ack

XCode:
I use xcodes to install several Xcode versions side by side.
This helps to test new versions without breaking existing projects.

brew install aria2
brew install xcodes

Then install whatever Xcode you need.
Here’s what I use for example:

xcodes install 14.3.1
xcodes install 15.0.1
xcodes select 15.0.1
xcodebuild -runFirstLaunch
sudo xcodebuild -license
xcodebuild -downloadPlatform iOS
xcodes runtimes install "iOS 17.2"

Android development:

brew install - cask android-studio

Flutter development:
I suggest to use a flutter version manager like fvm to be able to switch
between Flutter versions across projects.

brew tap leoafarias/fvm
brew install fvm
fvm install 3.16.2
fvm install 3.10.7

You can then prefix your flutter commands with fvm and it will use your selected version.

Android/iOS mobile development:
If you use fastlane for your app builds, I’d go for rbenv to keep
ruby versions maintainable:

brew install rbenv
rbenv install 3.1.4
rbenv local 3.1.4

NodeJs/Web Development:
In order to switch between nodejs versions across projects, use nvm.
I always use the latest LTS version for my project, but you can ofc use any version you like.

brew install nvm
nvm install --lts

Python development:
As you can see, I like to stay away from system installed versions for all the tools, the python version is no exception.
We use pyenv to keep Python versions managable.
I checked my current system python verson and installed the same version via pyenv and set it as global.
Then I installed more versions so I can use them as needed per project.

brew install xz
brew install cairo
brew install gobject-introspection
brew install pyenv

pyenv install 3.9.6
pyenv global 3.9.6

pyenv install 3.10.13
pyenv install 3.12.1

Brew Bundlefile:
Once you have all the apps installed, you can create a bundlefile which can be used to install the same set of applications on another Mac or just store keep the file around in case you need to reinstall and can’t get all your stuff back from a cloud backup.

Following command will createa a file called `Brewfile` in your current directory:

brew bundle dump

If you have a bundlefile already you can force recreation or place a new file in a different directory like this:

brew bundle dump --force
brew bundle dump --file=~/.private/Brewfile

To install from a bundlefile, you can use this command:

brew bundle install

Brew is great and the commands we’ve used so far are just the very tip of the iceberg. You can read more about brew here: https://brew.sh or use your google foo, there’s a lot to learn.

Summary

Whatever language you are working with, I always suggest you use a versionmanager if available, it’s really a PITA to not have them once you start working on multiple projects that require different toolchain versions.

I hope this helps to get you started.
I certainly spent some time to get the setup “right” and asked Mac users for their favourite tools in order to end up with this list of applications.

The installation commands are not complete, because I think there are plenty of guides out there that explain how to work with them, however if this post gets some attention, I might consider updating the instructions with some more detailed descriptions.

You can also suggest your must-have tools in the comments and I’ll check them out.

Cheers to 2024!

--

--