newsmode MarketNews
arrow_back К списку
rss_feedEugene Yan ·17.11.2024 open_in_newОригинал

My Minimal MacBook Pro Setup Guide

My Minimal MacBook Pro Setup Guide

[ engineering misc ] · 5 min read

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.

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 -bool true # 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 path echo >> /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 shell echo $(which fish) | sudo tee -a /etc/shells chsh -s $(which fish) # add brew to fish path echo >> /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 "[email protected]" eval "$(ssh-agent -s)" touch ~/.ssh/config open ~/.ssh/config # add to config Host github.com AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_ed25519

  • Git
  • brew install git git config --global init.defaultBranch main git config --global user.name "eugeneyan" git config --global user.email [email protected]

    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 [email protected]:<github-username>/<obsidian-vault>.git

  • 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@16

  • 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 shell set --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

    Update: Turns out Raycast has this too (h/t @mwheatfill), and also has presets for Rectangle hotkeys. I’ve since moved to Raycast window management.

  • 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

  • Logi Options+ Download and sign in to load saved settings for my MX Ergo.
  • 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

    If you found this useful, please cite this write-up as:

    Yan, Ziyou. (Nov 2024). My Minimal MacBook Pro Setup Guide. eugeneyan.com. https://eugeneyan.com/writing/mac-setup/.

    or

    @article{yan2024macsetup, title = {My Minimal MacBook Pro Setup Guide}, author = {Yan, Ziyou}, journal = {eugeneyan.com}, year = {2024}, month = {Nov}, url = {https://eugeneyan.com/writing/mac-setup/} }



    Join 11,800+ readers getting updates on machine learning, RecSys, LLMs, and engineering.