In this post, I’ll share the key tools and configurations I use when setting up a new macOS environment for software engineering.
Applications
I’m a fan of Firefox and a bunch of other tools, but I’ll keep this to developer-related tools.
iTerm2
I believe it is better than the built-in Terminal. Probably.
Configure the following shortcuts from this tutorial.
⌥ ⌫for deleting a word⌥ ←for going back a word⌥ →for going forward a word
Set the Login command in profile to open tmux or reuse an existing session. When I accidentally close the window, this keeps me from terminating a long-running program.
tmux attach -t base || tmux new -s base1Password
Managing passwords and keys is 100x easier with 1Password and they’re more secure than a lot of the other options out there. Their SSH key management and git signing support is a must-use.
Folders
~/Developer
I used to call the folder ~/dev or ~/Development, but if you call it “Developer”, then Apple will reward you with a special folder icon.

~/Screenshots
If you also take a lot of screenshots, you’ll want to see this post about setting up a screenshot folder.
Developer Tools
macOS changed the default from bash to zsh in 2019 so if your previous computer was an Intel-based MacBook you’re in for a very-similar experience.
Oh My Zsh
It is a framework for managing shell plugins.
# .zshrc, line ~73
plugins=(
asdf
brew
git
z
)asdf
The one-stop-shop for managing Java/Python/Ruby/whatever versions. If you use Ruby, I recommend enabling the legacy versions so you can use the other version manager .ruby-version files.
# $HOME/.asdfrc
legacy_version_file = yesHomebrew
It is the most popular way to install command line tools.
Starship
It makes my command prompt look nice.
sal.dev on main [!?] via 💎 v2.7.8
❯z
Command line tool for jumping back in to a project you were working on. For example, if I type z ad, it drops me back into the Advent of Coding project.
~
❯ z ad
advent-of-code-2023
❯Other
I also like to keep this command handy for clearing out git branches that have been merged to main.
git branch --merged main | grep -v "\* main" | xargs -n 1 git branch -dAddendum
This post was more for me to remember what I use than for others, but I hope some folks found it useful anyway!