As part of preparing for the new year, I've set the goal of cleaning up my entire digital life by bringing order to what is currently a chaotic mashup of files and services floating around across the many devices I own. My library of photos are drifting around in various places, as are the fonts and resources I depend on daily to do my work. With the official release of Yosemite, it seemed like the perfect opportunity to do a clean install and document the setup of my toolchain as the first step towards a better organized, and hopefully more productive life. Once complete, I'll be moving onto cleaning up all my files and setting up a centralized structure on my NAS with portions of it replicated on Dropbox, but I may be getting ahead of myself.
Wiping my rMBP and getting a clean install of Yosemite was a breeze, thanks to the Mavericks installer I had ready on a USB key. I'd recommend creating your own bootable Installer with Yosemite rather than doing a 2-step upgrade like I've done.
It looks like since OS X Lion there's been a recovery feature that has a partition with all necessary tools to repair or reinstall OS X without requiring bootable media. More info here
Terminal / Command Line
I've recently switched over to iTerm 2 from Terminal after hearing that it adds a few conveniences. The main ones I appreciate are the shortcut
cmd+; for autocompletion, paste history which stores all copy or pasted text which can also be stored on disk, as well as it's super robust preferences panel which has a million and one ways to customize your experience.
One thing I found to be strange was the shortcut key to skip words (
alt+→) no longer worked in iTerm. This got that fixed up in no time.
Zsh + oh-my-zsh
Using Zsh adds many conveniences if you find yourself dabbling in the command line often. A quick example is the shared history across your tabs – the normal bash behavior is to keep the history contained within each tab which I've found to be frustrating at times. Depending on the theme you're using (which there are plenty of), you can also get extremely verbose in what you show in the prompt: such as current user, directory, branch, repo, and more.
You can install oh-my-zsh by running the following command in the command line:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Setting up a few choice aliases for git saves strain on your precious fingers by reducing the amount of characters you need to repeatedly type throughout the day. Here's what I'm currently using:
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.cb 'checkout -b' #create and checkout to branch (needs branch name)
$ git config --global alias.cm '!git add . && git commit -am' #adds all untracked files and commits (needs commit message)
$ git config --global alias.st status
$ git config --global alias.a 'add .' #adds all untracked files
$ git config --global alias.last 'log -l HEAD' #display last commit
$ git config --global alias.unstage 'reset HEAD --' #unstage a file
If you want to list out all your aliases, you can do so with
$ git config --get-regexp alias
Sublime Text 3
ST probably requires no introduction, if you don't currently use it then do yourself a favor and try it out. I've experimented with a few different editors and never looked back since making the switch.
Enabling Package Control
Open the ST console with
ctrl + ' and paste in the following command:
import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
Once Package Control is installed, you can easily install packages by launching the command palette
cmd + shift + P and typing
install to auto complete
Package Control: Install Package
SFTP - Manage file transfers from within ST, I've used it to map my server locally and it makes syncing and publishing remotely stupid simple.
Emmet - Supercharge your HTML and CSS workflow. More information
ColorHighlighter - Preview color values from within ST.
ColorPicker - Update color values with the native color picker with
cmd + shift + C (best used with Skala Color as the native OSX color picker is a bit clunky)
AlignTab - Align lines of code by character (highlighting lines to align then right-click context menu) or by regex (via the command palette)
Gist - Pull the content of a gist into your file, useful if you store boilerplate code as gists that you can then use as a starting point for new files
HTMLPrettify - Cleans up HTML/CSS/JS/JSON using Einar Lielmanis' beautifier scripts.
I use the following values for my preferences which you can access through the command palette and typing in
"color_scheme": "Packages/Theme - Spacegray/base16-ocean.dark.tmTheme",
"font_face": "Source Code Pro",
"theme": "Spacegray Eighties.sublime-theme",
Launching Sublime from the Command Line
Sublime comes with a CLI to launch the editor from the command line. In order to get this to work, you first need to set up a symbolic link to it. Before we do that, we should first check if Sublime is in the place we expect it to be by running
$ open /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl. That should open up Sublime 3, meaning we can run the following to set up the symlink:
$ sudo ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl. If you get an error about a non-existing directory you can first create the set of folders using
sudo mkdir -p /usr/local/bin/, then running the command to create the symlink. Once that's done, try running
$ subl . and it should open up the current command line directory in Sublime!
I've also grown fond of the Spacegray theme in the Eighties flavor, which I highly recommend.
Alfred's workflows make finding and launching things only a few keystrokes away, and will do wonders in raising productivity. I'm currently using the following workflows:
Can I Use - Easily check on browser compatibility using the
caniuse + property trigger
Encode/Decode - Encode/decode strings (URL/HTML/Base64/etc) using
decode + string
Network Info - Grab your internal/external IP address and Mac addresses using
Open with ST - Open files and folders in ST3 using
The following are a bunch of additional apps and tools that I've come to love and rely on.
Basically a self-hosted Droplr or CloudApp. Great for automating the process of capturing and sharing screenshots.
Being used to the Adobe color pickers, I've always found the native Mac ones annoying and clunky to use. Bjango's take on the color picker is a lot more useful for day-to-day design & development work and will save you a lot of hassle.
I'm a huge fan of the color picker shortcut key for Sketch, and Sip does the same but brings it to the OS level. You can set your hotkey and tweak the settings to grab color values in the format preferred, and it even keeps a history of the colors you've "sipped".
Allows you to quickly create screencasts that are up to 3 minutes long, that can be published online for sharing or stored locally. Requires you to register for an account but it's the most efficient app for this purpose that I've found and well worth the minor hassle of signing up.
Wallpaper by Behance
A convenient little way to set your wallpaper from a collection of Behance submissions. You can set it to shuffle automatically or manually select and change it yourself. Minor quibble is that the collections don't seem to be updated often enough and there is no sync between devices, but a great way to keep your desktop looking fresh, nonetheless.
Crunch your images to make them as lean as possible. I mainly use this on JPG and GIFs, because TinyPNG is ridiculously amazing with PNGs and nothing comes close.
This nifty little app overrides your energy settings when you activate it via the menubar icon and keeps your mac from going to sleep.