Skip to main content

Development Setup on MacOS

Please read carefully and execute all commands in order.

GitHub Account

  1. Create an account: https://github.com/join

  2. Add your name + profile picture: https://github.com/settings/profile

  3. Enable 2FA:
    https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa

important note on macOS

Closing a window ≠ quitting the app.

Use:

  • Cmd + Q
    or

  • Menu → Quit

Command Line Tools

xcode-select --install

If already installed → continue.

Homebrew

Open the terminal. To install type:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Then:

brew --version

If you see something like Homebrew 5.1.0, then you're fine.

If you get command not found typeL:

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

Then update and install necessary software:

brew update
brew upgrade git || brew install git
brew upgrade gh || brew install gh
brew upgrade wget || brew install wget
brew upgrade imagemagick || brew install imagemagick
brew upgrade jq || brew install jq
brew upgrade openssl || brew install openssl

Visual Studio Code

Install VS Code from the terminal:

brew install --cask visual-studio-code

Launch VS Code:

code

VS Code Extensions

Install the VS Code extensions by typing the following in your terminal:

code --install-extension ms-vscode.sublime-keybindings
code --install-extension emmanuelbeziat.vscode-great-icons
code --install-extension github.github-vscode-theme
code --install-extension MS-vsliveshare.vsliveshare
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension ms-python.python
code --install-extension ms-toolsai.jupyter
code --install-extension ms-python.vscode-pylance
code --install-extension alexcvzz.vscode-sqlite

Disable AI Features (for now)

From the VS Code window:

  1. Cmd + Shift + P

  2. Search: aifeatures

  3. Enable Disable and hide built-in AI features

The default macOS Terminal is fine… but once you’ve used iTerm2, it’s hard to go back.

Install iTerm2

brew install --cask iterm2

Launch it:

open -a iTerm

Suggested iTerm2 Settings

Inside iTerm2:

Open the settings + ,

1. Theme (Dark + readable)

  • Profiles → Colors
  • Pick: “Dracula” or “Solarized Dark”

2. Font (important)

  • Profiles → Text
  • Font: MesloLGS NF (great with Oh My Zsh)

Install the font if needed:

brew install font-meslo-lg-nerd-font

3. Window size

  • Profiles → Window
  • Columns: 200
  • Rows: 50

4. Optional but worth it

  • Enable “Reuse previous session’s directory”
  • Set Natural Text Editing (makes word jumping work like VS Code)

Oh My Zsh

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

Press Y if prompted.

GitHub CLI (gh) Setup (SSH)

We’ll use GitHub CLI to connect your machine to GitHub using SSH.

This lets you:

  • push/pull without passwords
  • avoid token prompts
  • use GitHub directly from the terminal

1. Login with gh

Copy and paste the following into your terminal. DO NOT edit the email field:

gh auth login -s 'user:email' --git-protocol ssh -w

2. You’ll be asked a few questions:

“What account do you want to log into?”

  • Choose: GitHub.com

“What is your preferred protocol?”

  • Use the arrow keys to choose: SSH

Why?

  • No passwords when pushing
  • More stable long-term workflow

“Generate a new SSH key?”

  • Press Enter (Yes)

👉 If you already have a key:

  • Select your existing key instead

“Enter a passphrase”

  • Optional, but recommended if you're security conscious
  • This protects your key if your machine is compromised
  • Press enter with the field blank to proceed without a passphrase

“Title for your SSH key”

  • Default is fine (e.g. GitHub CLI), press enter

3. Browser authentication

You’ll see:

! First copy your one-time code: XXXX-XXXX
  • Copy the code
  • Press Enter
  • Browser opens → paste code → approve access

👉 This creates a secure auth token stored locally (GitHub CLI)

4. Verify everything worked

gh auth status

You should see:

✓ Logged in to github.com as <your-username>

Python (pyenv)

We use pyenv instead of system Python.

Install pyenv

From the terminal type:

brew install pyenv

Add to shell:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
exec zsh

Install Python

pyenv install 3.12.2
pyenv global 3.12.2

Check:

python --version

Python Tools

From the terminal type:

pip install --upgrade pip
pip install virtualenv pipx
pipx ensurepath

Useful tools:

pip install black flake8 pytest ipython

Node.js (nvm)

Install nvm from the terminal:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | zsh
exec zsh

Check:

nvm -v

Install Node:

nvm install 20
nvm use 20

Check:

node -v
npm -v

SQLite

From the terminal type:

brew install sqlite
sqlite3 --version

PostgreSQL

From the terminal type:

brew install postgresql@15 libpq
brew link --force libpq
brew services start postgresql@15

Test:

psql -d postgres

Exit with:

\q

Final Check

Check everything manually from the terminal:

python --version
node -v
npm -v
yarn -v
psql --version
sqlite3 --version
git --version

You’re Done!

Your machine is now ready for: