New year, new job, new machine

Setting up a new MacBook Pro M3 Max

Open on Substack · Markdown

Happy new year, hackers! I’m starting my new job at Zed in slightly more than a week, but my new work laptop is already here. In fact, it’s been sitting here for nearly two weeks. I hadn’t opened the box yet, because I was waiting for just the right moment. We all know how personal setting up a new computer is.

Then, yesterday afternoon, I had the house to myself and decided it’s time. Let’s set up the new machine: a brand-new, 16-inch, black, sorry: space black, MacBook Pro M3 Max with — listen to this! — 128GB of memory, a 16-core CPU, 40-core GPU, and a 16-core Neural Engine. Yes. Yes, that’s memory. What a beast.

All I said was that a M3 Max in black with a US English keyboard would be nice, then this thing showed up. Someone I told this to said about this gesture of Zed: “I love it when someone knows how to flirt.”

That’s the second MacBook I set up in 4 weeks, because this machine, the one I’m typing this on, a M1 Max, I also set up again after it’s been wiped on my last day at Sourcegraph.

So I figured that this time I’ll document what I do to set up a new machine and take you along for the ride.

macOS Basics

The first thing I do on a new macOS machine is to tweak macOS itself, because otherwise I’d lose my mind after 30 seconds:

With that out of the way, it’s time to install software.

The Bootstrap Problem

Whenever I setup a new machine, I set it up from scratch. I don’t want to restore from backup or another machine because I don’t want to accidentally carry any cruft over.

Setting up from scratch always poses these questions: do I install 1Password first so I can log into my accounts and then homebrew with which I could’ve also installed 1Password? Do I install Chrome by hand too? Or do I use brew for that? What comes first? Passwords or software? Software manager or passwords?

This time I started by installing Homebrew, then cloning my dotfiles, and then installing the software.

Software

I’ve recently started to use this Brewfile for managing the software I install with Homebrew. I’m also somewhat consistent with it, but not 100%, some software I install by hand because I want to try it out and then it sticks.

Some things of note in that Brewfile:

As you can also see in that Brewfile that I use asdf to manage programming language versions (Go, Node.js, Ruby). But I’m also not terribly consistent with this. I also install rustup and use Nix.

(Actually, I started to use rtx, an asdf replacement, when setting up this M1 Max a few weeks back. But then yesterday I noticed it was renamed to mise and after letting out a big sigh I was too lazy to uninstall/reinstall and for the sake of consistency I now stayed with asdf on both machines.)

There’s some stuff that’s not in the Brewfile. I don’t know exactly why, but here’s the stuff I installed by hand:

Copying the data

Most of the data I work with day-to-day is synced to somewhere: GitHub, iCloud, Google, the Cloud, Dropbox, whatever. All my private data (photos, documents, …) is also synced to either iCloud or my Synology.

So, technically, I don’t even need to copy data from another machine to a new one, because I could get it from somewhere else, but there’s a bunch of stuff I always copy from machine to machine:

So the last one, the ~/code folder, posed a bit of a challenge: 74GB is not nothing. Also, it’s full of tiny, tiny files. Lots of .git folders, even a few node_modules in there.

So I thought: what’s the best way to copy this?

After that I was up and running.

That was yesterday evening and I didn’t play around with the M3 Max that much, but first impression: this thing is fast and it’s snappy and it has work capacity and it feels great. The black looks awesome. Sorry, space black.

Random Tidbits & Thoughts

With that, you should subscribe and then I’ll see you next week: