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.

## Preparation

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.

### Chrome

For whatever reason I’m biased.

### Dropbox

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

### .bashrc

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",


### Homebrew

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 https://raw.githubusercontent.com/Homebrew/install/master/install)"  ### rbenv 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  ### Ruby 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 -)";
fi
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.

### Python

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


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 setup.py 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

#### pdftk

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


#### trash

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

brew install trash


## Key software and settings

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

### ImageMagick

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

brew install imagemagick


### ffmpeg

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

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

#### nonfreefonts

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

curl --remote-name https://tug.org/fonts/getnonfreefonts/install-getnonfreefonts
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 Map=newfont.map
sudo texlua install-getnonfreefonts


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

### Skim

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

### MATLAB

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.

### Mathematica

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

### Printers

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