5.6.06. My Mac OS X "Priceless" Applications and Tools

Can’t live with ‘em, can’t live without ‘em. This is about the Mac OS X applications I can’t live without, and some mentions of ones that I’ve still never found use for.

Can’t Live Without

Quicksilver

The ultimate quick launch and system control tool, Quicksilver is like the perfect marriage of graphical and command like control. Before Quicksilver I was an avid user of Launchbar. At heart, both of these products are just launchers - quick access to applications, bookmarks, etc. Launchbar allowed me to never be bothered by the Mac OS X Dock: I use the Dock to house applications and documents I use frequently, and Launchbar let me quickly get to ones that I use only on occasion. What makes both of these products stand out is that they learn. One might bring up the tool and type the letters A G L. The first hit might be a bookmark to an agile development article. But hitting the spacebar a couple of times to highlight Adobe GoLive will cause both LaunchBar and Quicksilver to increase the weight of that result. Within a couple of uses, CONTROL-SPACE A G L becomes the fastest way to launch GoLive.

Both tools offer access to more than just applications and bookmarks. Quicksilver started to differentiate itself from Launchbar (as of Launchbar version 3 - it’s now at version 4.1) as a more thorough system control tool with a lot of AppleScript support and a wide (and growing) range of plug-ins. Quicksilver could be used to control iTunes, to put the computer to sleep, and more.

I’m not sure when or why I made the switch. As Mac OS X matured, I used Launchbar less and less. When Quicksilver came on the scene, I didn’t pay much attention to it. But I kept hearing good things about it, and eventually got around to checking it out myself as it was a big hit amongst the 43Folders crowd. As I started to use Quicksilver, I found it insanely useful. I could pause and resume iTunes with a few keystrokes without having to change focus from what I was doing. I could start doing some “fire and forget until later” actions, such as emailing a quick note or to-do to a Backpack page or sending an action to my Kinkless GTD document. I could take quick advantage of Mac OS X services such as Make Sticky or Take Plain Note in DEVONThink, even in applications (like Tinderbox) that don’t support the Services system.

This is most handy when doing something very focused, such as a debugging session, when I’d notice something else I might need to come back and revisit. I don’t want to take the time to change focus to OmniOutliner or some web project tool or iCal to make the note to “come back and fix the call to …” when I’m chasing some obscure issue. Quicksilver lets me make that note almost invisibly - I don’t even have to take my eyes off of the current debugger line. Priceless.

Small feature that I absolutely love - Large Type. One of the default text actions in Quicksilver, this is damn handy when making phone calls. Apple’s Address Book, and some other applications, support this for values they have in the system. But sometimes you need to call a phone number and read off an account number that isn’t going to be in Address Book. With Quicksilver and a couple of tuning options, you can get this down to a single chord or just a couple of keystrokes, and BAM! Screen-size type. Doesn’t interfere with anything else - next keystroke or mouse click makes it go away.

TextMate

A native Mac OS X text editor, TextMate has become my new killer application. For the first time ever, I’m doing most of my Zope and what-have-you development on my desktop. Historically I’ve always done my web development on servers, using XEmacs and then VIM as my comprehensive editor of choice. Even when I’d do development on the desktop, I’d often use VIM. But TextMate has changed that.

With support for lots of languages and commands, it’s become indispensable. The killer feature was the ability to install an Edit in TextMate… command in all Cocoa applications. Now I can edit the contents of any textarea in Safari in TextMate - whether it’s GMail, a bulletin board system, Basecamp, a Zope application, a classic Zope page template, I can pop over to TextMate. Even now, I’m using MarsEdit to make this post. I’m writing it in Markdown and will convert it to HTML from within TextMate before posting it.

Over the years, I’ve found long-time Mac staple BBEdit to be too expensive, and ultimately underpowered, for my needs. BBEdit still bears too much of its classic Mac OS heritage, I feel, and some of its keyboard commands and preference screens started to feel really unnatural. Granted, I was still using an old version. But even the newer free ‘lite’ version of BBEdit, TextWrangler, felt uncomfortable. I used it for some development in the past year, but TextMate feels a lot more natural to me in most regards.

There are some features that TextWrangler / BBEdit has that are still missing from TextMate - integrated FTP support is one, split windows is another. The one feature that I can’t believe TextMate doesn’t have yet is the ability to split editing windows! But the number of plug-ins available, the “Edit in TextMate” feature, the relative ease with which new syntaxes and commands can be added, far outweigh some of the holes.

Small feature that I absolutely love - Find in Project. Any folder can be a project (without all of the project overhead imposed by IDE’s). In the Zope 3 development that I’ve been doing, this has made refactoring easy as I could rename or move a class or interface and could quickly find all uses of it. TextMate also supports many of the Cocoa find/replace features and commands (and builds on them). One handy command is “Use Selection for Find (command-E)”. Safari, Mail, MarsEdit, OmniOutliner, etc, all use this command. Select a word or phrase, hit ‘command E’ and then ‘command G’ (find again) to search for that word without bringing up the ‘Find’ dialog box, without using up the clipboard, etc. This is great with the Find in Project feature in TextMate when I’m thinking of renaming or moving a class, or just want to see where it’s used, such as when exploring other people’s code (such as the Rails or Zope frameworks themselves).

DarwinPorts

DarwinPorts has made it possible to do the kinds of development I now do on my desktops / laptop. This is where I get my Python 2.4.x with readline, Ruby 1.8.4, Docutils, subversion, etc.

OmniOutliner Pro / Kinkless GTD

OmniOutliner has been in my toolbox since version 1, back in the early Mac OS X days. I’ve gone through other outliners and information databases, but now I’m using OmniOutliner Pro pretty heavily again. Part of this is because it’s still the fastest, easiest to use, and best looking outliner on Mac OS X. A third party set of AppleScripts turns it into a powerful planning / task management system, as Kinkless GTD. I’ve tried some other systems such as GTDRules on Tinderbox, which I’ve compared before.

Kinkless GTD features a Quicksilver action called ‘Send to kGTD’ which parses text into an action and sends it to the kGTD document. If the document’s not open, it opens it. The parsing revolves around being able to specify a project and/or context to place an action in. For me, this is useful for that ‘fire and forget until later’ moment that comes up from time to time. I capture something that needs to be done, but I don’t let it consume my mind while I focus on the task at hand. When I have a moment, I can go to Kinkless GTD and file it appropriately or figure out what needs to be done for that note I scribbled off. This shortens the amount of inboxes that I have, and shortens the number of places I have to think about when I want to send myself a “deal with this later” note.

iDisk / CVS

Apple’s iDisk (part of their .Mac offerings) has a nice feature: the ability to work offline with transparent synchronization. That synchronization can be automatic or manual. This is how I keep track of my Kinkless GTD document, and any other notes and documents I want to work on without worry of location. No need to have a Lotus Notes size system just to manage a small set of personal information across three machines, especially when one of them spends half of its time offline (and one is spending ALL of that time offline these days). iDisk lets me save any document of any type, synchronize the disk to my laptop, take the laptop home, work on it there (without internet, which hopefully will get fixed soon), come back, synchronize back. I’ve thought of using USB “key drives” to house information like this, but I often fear damaging or forgetting the drive.

We still use CVS on our development servers at the office. We’re too small and busy to have time to change to subversion when CVS is doing its job (mostly) well. Some people use CVS to manage their home directories, documents, etc. I just use it to bring code home in case I want / need to work there while I’m disconnected. It’s hardly worth mentioning, except for how every work day ends with ensuring the iDisk and source directories are up to date on the laptop.

Can’t Live With

There’s really only one thing I can think of here, and it’s one thing that’s always bothered me: Virtual Desktops. I’m glad Mac OS X doesn’t support this directly. My main problem with Virtual Desktops is the ease with which important windows get lost. With Mac OS X, I use “Hide Others” and window minimization heavily when I need to focus and I have too many distractions on screen. A quick “Show All” can bring all the windows back on screen and into the dock (if minimized), and Exposé is, at that point, the best way to find a particular window when needed. With Virtual Desktops, I was always playing the game of “is it on 1? nope 2? nope 3?”. Some people establish systems - web browser always here, email always here, main editor always here - but I never was able to. I’d just lose things and get frustrated. Between Quicksilver and Mac OS X’s native app / window switching features, I have adequate control over my desktop and what populates it, I feel.