macOS Sierra upgrade from a developer's perspective

Most developers (myself included) usually wait for the point one release of the next major macOS upgrade. This is mostly in order so that all the related tools/applications maintainers will have time to upgrade and iron out their bugs/issues with the new OS.

Since I use my Mac mostly as a glorified *nix replacement, the GUI applications are scarce (notably: iTerm , Paw , Postgres.app , Xcode and a couple of small utilities) i.e. the bulk of my development is dependent on Homebrew working correctly + the good old RVM .

All of these work flawlessly under Sierra, one just has to remember to update them beforehand via:

$ brew update
$ rvm get stable

Afterwards a clean output from brew doctor should fix whatever potential issues remain.

The main issues after the OS upgrade were, ironically, not the apps/utilities but the crushingly slow default values for ​KeyRepeat, a pink external EIZO display, the Notes.app crashing like nuts and finally some minor performance tweaks (mostly for aesthetics)

Fixing slow key repeat

If you use vim in a terminal you'll quickly realize that the navigation is back to slow as heck. That's due to the ​KeyRepeat values. In El Capitan this could be fixed easily via Karabiner but for 10.12 their developers have a wip Karabiner-Elements which it's useless at this point (at least for me as it tells that I should edit JSON files).

Well, no thank you good sirs: if I'm going to edit config files, I'd rather do it directly at the OS level.

After some testing around I got back the fast and snappy vim scroll/navigation via:

$ defaults write NSGlobalDomain KeyRepeat -int 1
$ defaults write NSGlobalDomain InitialKeyRepeat -int 12

Note: these can be reset back to their default via:

$ ​defaults delete NSGlobalDomain KeyRepeat
$ defaults delete NSGlobalDomain InitialKeyRepeat

In order for them to take effect you can just log out or restart your Mac.

Fixing my pink external EIZO display

This was rather easy but tedious: it basically boils down to repeating the same steps again from Mathew's article i.e.:

Disable macOS's SIP by booting into recovery mode (using Command-R whilst rebooting your mac and then running csrutil disable in the terminal).

Download the linked Ruby script and run it via ruby patch-edid.rb. It will generate a directory.

Move the directory into (back-up the old one if it exists):
/System/Library/Displays/Contents/Resources/Overrides

Then you can restart again into recovery mode and enable back SIP by running csrutil enable into the terminal.

After all this: my external LCD was crystal clear and NOT pink anymore.

Notes.app crashing and minor performance tweaks

The first one is simple: just disable/enable the iCloud Notes syncing.

Regarding the second one you can tick reduce transparency and motion in the Accessibility section in Settings (this should offload the GPU if you have an older Mac with Intel graphics and as aesthetics and UX go, I'm not a fan of over-the-top animations and transparency).

Other issues

Wi-Fi not working

Rachel pointed out her Wi-Fi wasn't working anymore. The fix: after posting the issue on Apple forums someone suggested this article that finally fixed it.

I also had a small problem with it but it quickly went away by turning the Wi-Fi off and then back on. In any case hopefully this will ease the upgrade for someone.

Conclusion

Bonus: right after the upgrade prepare for 100% CPU usage on all logical cores for ~ one hour or less, the culprit will be ​photoanalysisd:

If you’ve just installed Mac OS Sierra and now see photoanalysisd sucking 100 to 200% CPU power, this process is doing some kind of face detection + object / image recognition / indexing on your Photos library. via check progress of photoanalysisd

In the end the upgrade wasn't painless e.g. El Capitan went smoothly compared but at least I removed an extra dependency - I no longer need to have Karabiner running in the background and somehow it feels a tad faster even whilst the memory pressure is now lower.

Credits

Tagged under: