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
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
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
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.
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)"
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 -)"; 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.
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.
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
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
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
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
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
which pdftk pdftk --version
This allows moving files to the Trash directory from the command line.
brew install trash
Key software and settings
~/software directory for installation files and details.
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
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 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.
This viewer’s alright, overall. I mostly like it for annotation and its SyncTeX capabilities. It works seemlessly with Sublime Text and SyncTeX.
~/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.