My Minimal MacBook Pro Setup Guide


Hey friends,

I just upgraded my personal laptop from a 2019 Intel MacBook Pro to an M4 MacBook Pro. Like all my new devices, instead of restoring from a backup, I try to Marie Kondo my digital life and start from a clean slate. This also lets me reexamine my existing tools and explore new options. Here’s my minimal Mac setup guide if you want to follow along.

P.S., My friend Jason is hosting a 3-day workshop on how to leverage your existing data, ML, AI know-how into extra consulting income—it's a steal at 25% off until Sunday!

I appreciate you receiving this, but if you want to stop, simply unsubscribe.

• • •

👉 Read in browser for best experience (web version has extras & images) 👈

MacOS settings

  • Apple ID: Sign in
  • MacOS update: Settings -> General -> Software Update
  • Keyboard: Switch to Dvorak, key repeat = fast, delay until repeat = short
  • Trackpad: Max tracking speed, tap to click, click = light, natural scroll = off
  • Displays: Switch to Apple Display (p3-600) for slightly better battery life
  • Finder: Show Library, show hidden files, show path to dir

# show Library folder
chflags nohidden ~/Library

# show hidden files
defaults write com.apple.finder AppleShowAllFiles YES

# add pathbar to title
defaults write com.apple.finder _FXShowPosixPathInTitle -booltrue# restart finder
killall Finder;

  • Screenshots (to clipboard): CMD + SHIFT + F5 and change setting in “Option” menu. This lets me screenshot and paste into docs, chats, social media, etc directly (without saving a separate file). If I need to save it, open Preview and CMD + N.
  • Dock: Hide and show dock, reduce size, remove most default apps

Basic developer tools

  • Homebrew (might take a while as it also installs Xcode)

/bin/bash -c"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"# add brew to default shell pathecho>> /Users/eugeneyan/.zprofile
echo'eval "$(/opt/homebrew/bin/brew shellenv)"'>> /Users/eugeneyan/.zprofile
eval"$(/opt/homebrew/bin/brew shellenv)"# check for updates
brew update

  • Terminal: Trying Warp instead of my usual iTerm. (If you use my referral code I can get some swag—thank you!)

brew install--cask warp
brew install--cask font-inconsolata-for-powerline
# Update warp font: Settings -> Appearance -> Terminal font

  • Shell: Trying Fish instead of my usual Oh My Zsh

brew install fish

# make fish default shellecho$(which fish) | sudo tee-a /etc/shells
chsh -s$(which fish)# add brew to fish pathecho>> /Users/eugeneyan/.config/fish/config.fish
echo'eval "$(/opt/homebrew/bin/brew shellenv)"'>> /Users/eugeneyan/.config/fish/config.fish
eval"$(/opt/homebrew/bin/brew shellenv)"

  • Htop: A better top

brew install htop

  • New SSH keys

ssh-keygen -t ed25519 -C"your_email@example.com"eval"$(ssh-agent -s)"touch ~/.ssh/config
open ~/.ssh/config

# add to config
Host github.com
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519

Also see the Github docs to generate a new ssh key and add to ssh agent, and add a new ssh key to Github account.

  • Git

brew install git
git config --global core.editor "nano"
git config --global init.defaultBranch main
git config --global user.name "eugeneyan"
git config --global user.email eugene@eugeneyan.com

Research, writing, development

  • Obsidian: All my notes, writing, CRM, etc. live here

brew install--cask obsidian

# clone obsidian vault (i use obsidian-git for syncing)
git clone git@github.com:

  • Zotero: Papers and annotations. Zotero has a nice PDF reader and markup tools, and also has an iPad app that syncs seamlessly. (Previously Google Drive)

brew install--cask zotero
# enable zotero plugin in safari

  • Cursor: Daily driver for prototyping and building. (Previously vscode)

brew install--cask cursor
# old machine: cmd+shift+p > export profile# new machine: cmd+shift+p > import profile

  • Sublime: Simple code and text edits

brew install--cask sublime-text

  • Chrome: For web development

brew install--cask google-chrome

  • Postgres: To prototype web apps that need persistent storage

brew install postgresql@14

  • Python, JS, and Ruby

# very fast python package manager
brew install uv

# install the latest python
uv python install 3.12

brew install node
brew install nvm

# still deciding between pnpm and bun
brew install pnpm
brew install oven-sh/bun/bun

brew install chruby-fish ruby-install ruby-build
brew install rbenv

# workaround for fish shellset--universal fish_user_paths $fish_user_paths ~/.rbenv/shims
rbenv global 3.3.5
rbenv rehash

  • Docker

brew install--cask docker

  • Ollama + Open WebUI: Running local models via a nice interface

brew install ollama
ollama serve

# in another terminal, pull some models to try
ollama pull llama3.2 nemotron # 3B and 70B respectively

uv tool install open-webui
uv tool run open-webui serve

Productivity and quality of life

  • Raycast: A better spotlight

brew install--cask raycast

  • Rectangle: Window management.

brew install--cask rectangle

While Raycast already has window management, Rectangle lets you hit the hotkey again (e.g., CTRL + CMD + LEFT) to resize windows from 1/3 to 1/2 to 2/3. Great for widescreens.

Rectangle settings for resizing windows

  • Wispr Flow: Download and set output language = English. Speech-to-text. Returns accurate transcripts with decent punctuation and formatting. (If you use my referral link you earn good karma and I get $15 in credits! )
  • Google Drive: Syncing documents, files, media, etc.

brew install--cask google-drive

  • Stats + Ice: Adding system stats to menu bar and customizing the menu bar

brew install stats
brew install jordanbaird-ice

Entertainment and communications

  • Media

brew install--cask vlc
brew install--cask spotify

  • Chat

brew install--cask telegram
brew install--cask discord
brew install--cask slack

References

Eugene Yan

I build ML, RecSys, and LLM systems that serve customers at scale, and write about what I learn along the way. Join 7,500+ subscribers!

Read more from Eugene Yan

Hi friends, How can AI make reading more enjoyable? What would an AI-powered reading experience look like? Inspired by a discussion between Andrej Karpathy and Patrick Collison, I built a simple prototype to explore some ideas. (Try it at AiReadingClub.com!) In this write-up, I’ll walk through key features, design considerations, and how it was built. I appreciate you receiving this, but if you want to stop, simply unsubscribe. • • • 👉 Read in browser for best experience (web version has...

Hi friends, 2024 was a peaceful year of steady progress. With regard to my craft, the prototypes of 2023 were scaled and put into production, and I rediscovered the joy of building in public. On the personal side, I continued the prior year’s focus on health, further improving my diet and exercise habits, leading to measurable results. Past years: 2020, 2021, 2022, 2023 I appreciate you receiving this, but if you want to stop, simply unsubscribe. • • • 👉 Read in browser for best experience...

Hi friends, Recently, a dataset of 1M Bluesky posts unexpectedly sparked backlash from the Bluesky community. This incident uncovered strong anti-AI sentiment among Bluesky accounts, leaving the AI community feeling unwelcome on Bluesky. This write-up reflects on what happened, hypotheses on why it happened, and how the data/AI community responded. I appreciate you receiving this, but if you want to stop, simply unsubscribe. • • • 👉 Read in browser for best experience (web version has extras...