A (my) Mac setup guide

For a long time my Mac tasks have been limited to: boot into macOS, compile some C++ code, fix what needs to be fixed. If everything works, commit and go back to Linux. This changed since I need a Mac for work. For some kind of development, as soon as iOS is a target, macOS is the only option. My MacBook Pro 15 does a decent job, and I like the hardware, but I do a lot of C and C++ compiling and I need to run the iOS simulator and the Android emulator. So having more CPUs, RAM and disk space became mandatory. This forced me to invest in a new MacBook Pro, so I (my company) ordered the 16 inch one.

Documenting the setup process

I have a checklist for a Windows setup since this is something I do not do very often.
I have more than one checklist for Linux in my head since I install Linux at least 2 times a year, so I kind of know what to do.
But I do not have a list for a new MacBook installation, so I thought I would take some notes.

I am not a Mac / macOS expert at all and in fact I feel like a pretty noob on macOS. I think even my Windows knowledge is better than my macOS knowledge. This is simply due to the hours of work I have spent on the various systems over the last years. So if you, dear reader, find any improvements or have any tips, please leave a comment below.

The essentials

These are, more or less, the same steps I do on any OS. Fixing the keyboard layout, getting some development tools and installing some software.

First step, Keyboard layout

The very first thing I need on all of my machines is a useful keyboard layout. I have a US keyboard, since this is what I want and what works best with default shortcuts, but I need my äåßöü letters for my German and Swedish communications.

The keyboard layout that can do this is EN-US-altgr-intl nodeadkey.
I use this everywhere on each operating system, Linux, Windows, macOS.

Luckily I already found a solution some time ago so now it is just a matter of doing this:

git clone https://github.com/a4z/osxkeyboard.git

Change into the osxkeyboard directory and run

sudo cp US-Int-AltGr-No-DeadKey.keylayout /Library/Keyboard\ Layouts

Activate the layout.
System Preferences  Keyboard  Input sources, at the very end of the list (scroll down) there is a entry the others. Click on it so it will show the keyboard layout.

When this is done, it seems a reboot is required to have this keyboard fully installed and activated.

Now, having a useful keyboard, additional tasks are possible.

Install XCode

This is required for homebrew and I need the development tools anyway.

I install XCode from the app center, only when I need an older version I install it via a download from the Apple developer site.

After installation,

xcode-select --install

Install homebrew

You cannot do anything useful on a Mac without homebrew ;-)
(I know there are alternatives, but for me it’s homebrew)

Terminal

This time I decided to use the built-in terminal and get familiar with it. So far I was using iTerm2 and it is great!

But I think the terminal app from Mac also has some nice features, not sure if they are new, but, for example, clearing the window command by command with +l is nice. So I will work with this for a while.

zsh

Since not too long ago Apple delivers zsh as the default shell. It’s a license thing.

So far I did not care and used a recent bash version from homebrew. But now I will try zsh.
If Apple says this is the new shell, then I guess it is a good idea to follow this advice. 😉

Some things could be said about my first time with zsh. Maybe one day this will become a post on this blog. Just so much at this location: It is not easy to change many years of bash habits :-)

git

There is a git available on macOS by default, and there is a newer one on brew. So far I am OK with the default one.

Finally generate new pairs of keys and register them where needed.

Install vs code

brew cask install visual-studio-code

Configuration is a topic for its own, I can spend quite a lot of time with a newly installed VS Code :-)

One thing is worth to mention here, I detected the new (at the time of writing this) synchronization option that let you get your settings, plugin selection and other configurations from a different machine. That is nice!

Install asdf

I am using asdf as my version manager for a lot of programming languages and also tools.

It is just amazing how this tool developed over the years.

With asdf installed I fetch the Ruby and Python plugin and the most recent versions of both, the rest can follow later.

Other tools

Then there are some additional tools, but those can be installed step by step when needed since they all exist either via brew or asdf. Maybe I will put them in a setup script the next time.

Configuration

I do not do a lot of configuration on a Mac and use it mostly as it is. But there are a few things.

Mac Touch Bar

Some people do not like the touchbar at all, I have to say, I find it not that bad.

Configure touchbar to show F keys for some apps, for example VS Code.

My notes says it was in System Preferences  Keyboard  Shortcuts  Touchbar but now I have a System Preferences  Keyboard  Shortcuts  FN Function keys entry :-)
Anyhow, add there the apps that should show the FN Keys by default.

Dock

I remove most of the icons from dock, make dock smaller and make it auto hide. I do not use the dock very often, and if I do, then I just want to see what I use.

itsycal

I need a simple calendar widget in the menubar beside the clock that can show me week numbers and itsycal does this.

Application

Now, with the minimum config done, it is time to get some applications. I do not need many.

Browser

I have multiple browsers installed. I use vivaldi for my work profile and firefox for my private browsing. This is a nice split, since I use this notebook for work and at home. Just close Firefox and I am at work. I close Vivaldi, and work time is over.

This is also a good setup if you do home office or want a distraction free work environment. Use a browser for work where you are not locked in into social media, emails, streaming services, and all the other time eaters.

And I will also test Edge on OSX, just for fun :-)

All three browsers, and more, are available via brew (cask).

Some more IDEs

I have a JetBrains subscription for all the tools, so I install the toolbox app and use it to keep the JetBrains apps I use up to date.

Since I live in VS Code these days, this is basically just Android Studio, but from time to time I might have a need for one of the other apps, mostly CLion, maybe PyCharm and RubyMine.
And there is nothing I know of that could replace DataGrip

Office

Of course I have to use some office apps (Microsoft) for work, I fetch them from the App Store.

Spotify

Spotify comes via brew.

Tunnelblick

For VPN I like Tunnelblick which is available via brew.

Some notes to the new hardware

The good aspects

The Touch Bar
The touch bar is a nice gimmick. A lot of people do not like it, but I am OK with hardware experiments like that.

The speakers
Those are awesome. For a notebook.
Even if this is not relevant at all because usually I have headphones if I need sound.

The specs
Compared to my 2015 MacBook this is a huge upgrade, and especially my most time consuming tasks will benefit tremendously.

Thunderbolt 3
Being on a dock with just one cable into the notebook is great!

The not so shiny aspects

The price…​
If it were not for work and it therefore pays for itself (over a long time), I think I would not buy it (new).

A super huge trackpad…​
Far too large. It is ridiculous. It was much better on the 2015 model. I never had any issues with it, palm detection worked perfectly.
On the new one I get random mouse events. I know, I am holding it wrong …​ ;-)

Just to be clear, I have nothing against big trackpads. On my desk I have a Magic Trackpad 2. This is huge but does not get in my way, since it is beside my keyboard. I like it. But the one on the new notebooks, this is just too much.

Only Thunderbolt 3
I get it, but…​ until the world is ready you need to run around with some additional equipment. I wish all the ports of my MacBook Pro 2015 would be additionally available.

What I miss

The magnetic charger was great, I miss it. I understand that the Thunderbolt contact works differently, but I find it somehow sad.

Summary

Overall, the notebook is not bad, I like the more CPUs, the more RAM, and the bigger storage. I like the screen and I think the keyboard is OK (even if I prefer ThinkPad keyboards).

After the basic setup I have the machine in a state I can use for work, the rest can be done step by step. As mentioned above, some utilities and tools are missing but they will be fetched when needed.

It is quite a fast process to get a new Mac work ready. If you know what to do, it’s as fast as other systems. And the next time I will be even faster thanks to this list :-)

For me it is also possible to get a bit lost in discovering new details and trying out new things when landing on a new machine. But this will follow later, now I can start using this MacBook as my new daily driver.