Setting up a new Macbook M3 from scratch
Starting a new Macbook Pro setup from scratch was much less painful than I initially expected. I thought setting up environment variables and various system tools like Docker would be a massive pain, but turns out it took a lot less time than I thought.
On my old Intel Macbook I decided to copy everything over. Somehow it messed up the disk image partition, and almost ~100GB wasn’t usable for some odd reason. It kept thinking it had a duplicate volume or something, and I could never figure it out. This time I’m starting from scratch!
In total I spent about ~6 hours to set up 95% of everything I needed to do work on this machine.
A few things to keep in mind:
- Have good wifi! I set my machine up at the Sydney Startup Hub which had a measly 30mb down and something like 5mb up. My 5G connection wasn’t doing much better (with the Optus outage). Without this issue, setup would’ve taken much less time.
- Transfer apps, files and folders with Airdrop! I keep forgetting how incredibly fast Airdrop is
- Your old Intel apps might not work, or might work poorly Some apps complain they run on suboptimal silicon — those have been replaced through new app downloads. I’m still running many old Intel apps moved over from Airdrop; lots of apps are “universal” and don’t have a M-compatible chip, while others just hum along sub-optimally. I’ve decided I’m ok with that.
- The CouchDB daemon somehow didn’t run well on M3 on install; the icon in the top bar took ~1 min to open when clicked, and the admin page wouldn’t open. Somehow it fixed itself a week later though…
The following is a list of apps, configs, etc. that I had to do to get my machine to my liking and ready for work.
I’m weird about my OSX settings
- Set up swipe shortcuts in settings
path + disk spacein Finder
Show hidden files (Just hit
shift cmd .)
- Uncheck Swipe between pages
Mini & Utility Apps
Here’s a bunch of “mini apps” I like to have around on the toolbar
- Setapp Apps
- Apparently I only have a single-machine license and need multi computer license. Sigh. The M3 is my main, so I moved this suite of apps over.
- Apps: CleanMyMac, Gemini 2, Tape
- ItsyCal: Nice to have a small calendar in the corner
- Spectacle: Move windows around with keyboard
- Flux: Turns screens orange at dark; better than the built-in Mac app
- Dropbox: Offload data to the Dropbox cloud, for backups
- Google Drive: Offload data to the Google cloud, for backups
- Calibre: For managing eBooks
- 1Password: Password handling
- Bitwarden: More Password handling
- Disk Inventory X: I have a TB of space. Will I ever use this (probably, yes)
- Omnidisk Sweeper: (refer to above)
- FileZilla: Is FTP still a thing?
- Folx: Are torrents still a thing?
- NordVPN: For pretending to be back home
- Cloudflare Warp: Supposedly makes things faster. Been off for the last week; has slowed connection speeds by 1/100.
- Handbrake: Video compression; great for video cutting/editing
- VLC: Plays any video including weird codecs. Great for video preview / editing
- Beeper: A multi-platform messenger tool; I don’t really use this, but excited to try the API
- MacGPT: I haven’t been using this since the new GPTs update
Didn’t make the cut:
- Oversight: Tells you when you’re being watched. Decided to give into surveillance.
- Loom: Only good for short videos; trying out Tape instead. Maybe should use screen.studio instead?
- Tunnelblick: Using NordVPN right now; no need for a home-VPN.
- MongoDB Community: Great tool for managing MongoDB Atlas. Been using Couchdb and D1 though.
Work & Dev Apps
- Docker Desktop: Necessary evil to run Docker
- CouchDB: Runs Couchdb locally in the background for testing. Useful!
- Postgres.app: Runs Postgres locally in the background for testing. Also useful!
XCode: This is a massive install that Node requires. Copy this over from
- Sublime Text: A nice text editor
- Install Sublime and setup the CLI shortcut (I prefer GUI over pico/vim…)
- Setting up Sublime in the CLI: https://www.sublimetext.com/docs/command_line.html#mac
- VS Code: A nice code editor
- Cursor.sh: A cheat code for programming
CLI Apps & Configurations
Command-line apps and configurations.
Note: on M-series Macs, use
~/.zprofilefor configurations and system variables; this replaces
.bash_profile— so make sure you copy over any settings
Start by setting up homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Once Sublime is installed, use it to open folders or edit text files, e.g.
- Python3 & pip:
Install python 3 with brew
brew install python@3
Add this to
- Restart terminal
Type in terminal:
Pip should now with pip3:
pip3 --versionto check version
Note that in Sonoma / home-brew everything python is in
brew install gh
If Sublime is installed and setup, change to
git config --global core.editor "subl -n -w"
- Create a new public key for Github signing: None of their documentation worked, but I got GPT-4 to do this for me: https://chat.openai.com/share/6ca7e574-8531-477e-9b67-730b0dc50578
- Generate an SSH Key Pair:
- Open your Terminal on the new Mac.
ssh-keygencommand to generate a new SSH key pair. You can specify the filename if you want, but the default is usually fine.
"firstname.lastname@example.org"with the email associated with your GitHub account.
- Save the SSH Key:
You'll be prompted to choose a location to save the SSH key pair. Press
Enterto accept the default location, which is usually
~/.ssh/id_ed25519for an Ed25519 key.
- Add the SSH Key to the SSH Agent:
- Start the SSH agent if it's not already running:
- Add your SSH key to the agent:
- Copy the Public Key:
- Use the following command to copy the contents of your public key to the clipboard:
- Add the Public Key to Your GitHub Account:
- Go to your GitHub account settings.
- Click on "SSH and GPG keys."
- Click "New SSH key" or "Add SSH key," give it a title (e.g., "Mac SSH Key"), and paste the public key you copied in the previous step into the key field.
- Test the SSH Connection:
- To ensure everything is set up correctly, test the SSH connection to GitHub:
- You should see a message confirming your successful connection.
GPT-4 instructions (worked like a charm)
To set up a new Mac with your GitHub public key for SSH authentication, follow these steps:
mathematicaCopy code ssh-keygen -t ed25519 -C "email@example.com"
bashCopy code eval "$(ssh-agent -s)"
cssCopy code ssh -T firstname.lastname@example.org
Now, your new Mac is set up with your GitHub public key for SSH authentication. You can use this key to securely access your GitHub repositories without needing to enter your GitHub password each time.
brew install flyctl
fly auth login
- Cloudflare Wranger CLI
- They removed the global install; it’s only project specific now. Just install like any other packages in the project.
In a project:
yarn add --dev wrangler
yarn global add vercel
- Sentry-CLI: decided I didn’t need this right now
- Node / nvm
Don’t install Node (
brew install node) outright; use
nvminstead as it gives you the ability to switch between node versions very easily.
brew install nvm
Add this to
source $(brew --prefix nvm)/nvm.shso nvm is always available
- Restart terminal
Install a node version, e.g.
nvm use 18then set it as default
nvm alias default 18
To list all versions:
nvm listor to see current version:
- Notes: https://collabnix.com/how-to-install-and-configure-nvm-on-mac-os/
- Install yarn
brew install yarn
- Chrome: Do this one first; set up the account to sync
- Front: Multiplayer email client
- Google: Docs / Sheets / Slides
- Microsoft: Office / Word / Excel / Powerpoint
- Firefox: For backup
- Agenda: For journaling / short notes
- Sketch: For older projects (newer projects are on Figma)
- Webex: barf
Didn’t make the cut:
- Microsoft Edge: Good to use the new Bing AI features but that’s about it.
- PDF Expert: Don’t PDF editing very much, but this is the GOAT product for PDFs.
- Opera (and the other browsers): I used to test on multiple browsers, but now they’re all based on Chromium so…
Mac doesn’t really have any good games (c’mon Game Pass, get on the Mac!), but this is what I like to put on a new machine to test if it’s powerful enough. My Intel Macbook struggled with all of these, running at ~10fps. The M3 runs them at ultra resolution no problem, but the fans do kick on. (Except for Stardew, of course…)
- Steam: Civ 6, Stardew Valley
- GOG: Battletech
It’s been a week, and I’ve been adding a couple of things here and there to this list, but the system’s been humming! A few odd things have been popping up (every time I try to run an old Node project I get some
node-gyp about Node not having the right permissions or the wrong silicon. Every bank and other log in requires a new round of 2FA. That kind of thing. But mostly it’s been smooth sailing!