2010-11-09

8 Apps for Mac Developers

I write software on my Mac. Java, Ruby, PHP, Groovy, whatever. Sometimes it's running in a VM on my mac, sometimes it's running natively. Now, when I first switched to a Mac 3 years ago, I was coming from 7 years of being a Linux desktop guy who was used to WindowMaker. Keystrokes and shortcuts for everything, the shell and VIM, obnoxious customizations, that's the life for me. Below is my short list of apps that help me achieve Mac zen.

Alfred
Alfred App is a functional replacement for Spotlight and mostly for Quicksilver as well. In a keystroke you can launch an app, open a file, calculate some numbers, manipulate iTunes, go to a web page, or any other number of things. Alfred learns from your usage patterns and gets better (quickly) at knowing what you intend to do. Love it. Pay for the power pack, it's cheap and supports the project.


Getting Started with Alfred from Alfred App on Vimeo.

SizeUp
SizeUp allows you to entirely manage your windows with only keyboard shortcuts. Maximize, move between monitors, split the screen, center, etc. It's magical.












Quicksilver Triggers
So why do I still have my trusty Quicksilver around if I have the amazing Alfred? Triggers! I like to be able to fire up an app via shortcuts. For example, the terminal console comes up automatically when I type 'alt + c'. Very nice.

zsh and oh-my-zsh
I switched to zsh after almost 10 years as a bash user and still finding all kinds of useful things it does for you. The oh-my-zsh add-on adds a bunch of nice functionality; themes, plugins, etc. You can find my fork of oh-my-zsh here. Some of my favorite zsh features:

  • Intelligent tab completion. Say you have the following files in a folder: servs.csv, servs-1.csv, servs-2.csv, ...., servs-n.csv. Just type -2 (or -n), hit tab, and zsh will complete the file name for you. No typing s-n like in bash.
  • Share history across sessions. If you ever have long running shell sessions, being able to hop back and forth between them and have a shared history is extremely nice.
  • Global variables. I find myself often doing something like: find . | grep -v svn or ls -la | grep -v svn. Just do alias -g XC='|grep -v svn'. Now you can run find . XC and be done with it.

Growl and Hardware Growler
Growl is great. It can annoy me about all kinds of things like failed unit tests, coworkers bothering me, etc. HardwareGrowler is a nice add-on that let's me know about all things hardware related: network card status, airport status, USB device changes, etc. Again, no sexy screenshot here but I find it pretty useful.

Skim PDF Reader and Note Taker
I read a lot of mostly technical and legal documents as PDF files. OS X comes with several options for reading PDF files (Preview is built in, Adobe Reader is free) but I dislike both apps: memory hog, takes up lots of disk space, is slow, has this terrible update mechanism that likes to overtake my computer, is missing lots of features (unless you upgrade to a professional version). I'm just not a fan. Skim is a free PDF Reader and Note Taker for OSX. I especially prefer Skim because it's lightweight (like Preview), but feature rich (note taking, bookmarks, highlighting). This screenshot shows 2 different types of notes (inline and anchored) and highlighting.












Brew
Homebrew is a package manager for OS X. I switched to it from Port because frankly Port sucked and was often missing or had out of date packages. Once you've installed brew you'll instantly have access to all of the nice command line tools you've become accustomed to: GNU coreutils (ls, df, etc), memcache, links, etc. Just brew install foo or brew search foo. That's it.


Spaces
Okay so Spaces isn't exactly new but it's essential to my workflow (which is also may or may not be fairly specific to me). Think of spaces as being a collection of desktops. Each desktop can have it's own apps running on it. For me, I have 4 spaces (each accessible as keyboard shortcut alt-1 through alt-4) that each contain specific windows.

  • Space 1: Instant messenger, IRC, email
  • Space 2: Web browser
  • Space 3: Console windows, IDE, debuggers, VMware, etc
  • Space 4: Multimedia, iTunes, etc
This allows me to switch between essentially different work environments and helps me minimize distractions. IM windows stay on the IM space while I'm doing development work, etc. SizeUp also helps me out here by allowing me to very easily move windows between spaces.

That's it for now.