My good friend and hacker BP, with whom I have many real conversations, and even more imaginary conversations (then I call him Virtual BP or just VBP), recommends that when one moves to a new Mac machine, one ought to manually reinstall everything instead of using one of the fancy shmancy Time Machine imports. This is a hard way. And yet, I always listen to BP … and rarely defy VBP.

So I’m writing this to remind myself of how to go this hard way with minimal effort.


The old machine should be backed up with Time Machine. Here’s a gotcha: in Time Machine, make sure there’s nothing you want that’s listed as an exception to the Time Machine backup under Options ....

It’s nice to take this time to clean up unneeded junk that’s accumulated. Think in terms of what you want to keep and not what you want to discard. Especially get rid of most things in Downloads and any cruft cluttering Desktop.

Set up the new Mac

I recommend using the same username as that used previously. Nothing should depend on that, but we’ve all hard-wired a full path before.

Install some foundations

The following foundations will help the installation of other components.


For whatever reason I’m biased.


Sadly, 1Password requires this. I have more room on Google Drive, though.


It’s nigh impossible to set things up without a password manager.


From the Time Machine backup, bring in .bashrc and place it, as usual, in the home folder.


Sublime Text 3

Get it here. Also install package control here. Finally, install LaTeXTools from here.

Configure the settings for LaTeXTools by traversing to the menu item Sublime Text > Preferences > Package Settings > LaTeXTools > Settings - User. Edit the line starting with "show_error_phantoms", to read as as follows.

"show_error_phantoms": "errors",


This is how I installed it before. Note that it doesn’t require a Ruby installation. In fact, we’ll use Homebrew to install rbenv (with a plugin called ruby-build) to install Ruby. Hold your horses.

ruby -e "$(curl -fsSL"


This is the package manager for Ruby I’ve been using. I use it to install Ruby. Here’s how to install rbenv and ruby-build with Homebrew.

brew install rbenv ruby-build


Finally ready for Ruby! Here we go. Make sure .bashrc has the following lines (or equivalent)

if which rbenv > /dev/null;
  then eval "$(rbenv init -)";
export PATH="$HOME/.rbenv/bin:$PATH"

Restart iTerm. Check rbenv installation with rbenv … should return version and usage.

Check the Ruby website to see which is the latest version. If it’s 2.3.x, check to which 2.3 versions are available with

egrep "^\s+2\.3\.\d+$" <(rbenv install -l) | tail -1

Let’s say the latest is 2.3.1. Then install that with

rbenv install 2.3.1

Now assign it as the default for everyone.

rbenv global 2.3.1

Now check the current version of Ruby.

ruby -v

If the version you expect is returned, success!

Some essential gems

Install the essentials.

gem install jekyll

Get homepage running

It should just work, but you may have file permission issues. If so, cd to the user directory and execute the following commands to change ownership and permissions.

sudo chown -R $(whoami) .
sudo chmod -R u+w .

I had to do this when Finder’s permissions listed my user as “Fetching …” indefinitely. Executing the above commands fixed it and let me build and serve with the following command.

jekyll serve

I had some issues getting Jekyll running, but my issues were entangled with upgrading from Jekyll 2.x to Jekyll 3.x. Eventually, everything was ironed out.

gnu command line utilities

This gives you nice things like gsort.

brew install coreutils

There are more to be had with this handy guide.


Don’t trust the MacOS version of Python (but also don’t try to uninstall it). Just install with Homebrew (note that pip also gets installed).

brew install python

Python youtube-upload

This is another aspect of the video lecture capturing/uploading system. It depends on the Python script youtube-upload, which uses the youtube API to upload videos automatically. As of this writing, to install, first install the following dependencies.

sudo pip install --upgrade google-api-python-client progressbar2

Then clone youtube-upload to the ~/code repository, cd to the youtube-upload directory, and install via the following command.

sudo python install

There’s the final issue of OAuth. I believe this will work. Go to your Google API account and download the JSON file for your Client ID. Rename it client_secrets.json and place it at the top of the lectures directory. The first time it runs, you’ll be asked to verify in the browser with your Google account, but thereafter you’ll be good to go.

Other command-line tools


This command-line pdf utility is great for manipulating pdfs. I like to use it for encrypting pdfs. The following doesn’t work right now, but hopefully will again, soon.

brew tap spl/pdftk
brew install pdftk

For me, the installation hung. However, the this link from this stackoverflow question works on macOS Sierra.

which pdftk
pdftk --version


This allows moving files to the Trash directory from the command line.

brew install trash

Key software and settings

Adobe Illustrator

See the ~/software directory for installation files and details.

Template files

Wacom tablet


This is a great command-line utility for converting photos, among other things.

brew install imagemagick


This is key for my video lecture system. Install with homebrew with the --with-freetype option so the text can be overlayed on the screen (gives you the filter drawtext).

brew install ffmpeg --with-freetype


MacTeX has an installer that can be downloaded via the BitTorrent file distribution system.


To get fonts like uw-garamond, run the following command or see more here.

curl --remote-name
sudo texlua install-getnonfreefonts

Then update the “TeX filename database” with the following. It’s worth reviewing this documentation.

sudo -H mktexlsr
sudo -H updmap-sys --force --enable
sudo texlua install-getnonfreefonts

It I kept having an error updmap [ERROR] in which it couldn’t locate, although the file was where it said it was supposed to be! I think the above sequence works, but I could be wrong.


This viewer’s alright, overall. I mostly like it for annotation and its SyncTeX capabilities. It works seemlessly with Sublime Text and SyncTeX.


See the ~/software directory for installation file and details. The 2015b bug that launches a Processing ... task when MATLAB launches can be worked-around by turning off the source control functionality in Preferences > MATLAB > General > Source Control.


Get the latest release from either UW’s or Saint Martin’s license.


The printer on the first floor of Cebula Hall can be set up with this guide.