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

Hey friends, To better understand MCPs and agentic workflows, I built a news agent to help me generate a daily news summary. It’s built on Amazon Q CLI and MCP. The former provides the agentic framework and the latter provides news feeds via tools. It also uses tmux to spawn and display each sub-agent’s work. P.S. If you’re interested in topics like this, my friends Ben and Swyx are organizing the AI Engineer World’s Fair in San Francisco on 3rd - 5th June. Come talk to builders sharing their...

Hey friends, I've seen many teams misunderstand what it means to build and apply product evals and wrote this piece to address it. I hope it clarifies that evals aren't a one and done artifact, but a disciplined process. Do you agree or disagree? Please reply and let me know! P.S., In May, my friends Hamel Husain and Shreya Shankar are teaching an exclusive 4-week course on "AI Evals for Engineers & PMs". They've generously provided a special 40% discount link 🤫—but hurry, limited spots...

Hey friends, Every month or so, I receive questions about my writing: “How did you get started?” “Why do you write?” “Who do you write for?” “What’s your writing process?” I’ve procrastinated on writing this FAQ because, honestly, who cares about my writing process? But after answering the same questions again and again, I realized it’d be helpful to consolidate my responses somewhere. At the very least, it’ll save me from repeating myself. If you’re thinking about writing online but aren’t...