Since it's nearly the end of the year, it's a good time to review some of my favorite developer tools from this year. Some of these aren't necessarily new, just new to me and my workflow. UPDATE December 28, 2011: not four hours after I posted this I smacked my forehead as I realized I forgot two essential tools.
Charles
Charles is a web proxy tool for capturing, replaying and modifying HTTP requests and responses. Since I do a lot of work with web APIs, Charles has become indispensable for me. Just like having a debug console available while your application is running, having Charles tracing all requests and responses becomes a must-have.
Charles isn't going to win any design awards. The UI suffers from the aesthetic deficiencies that all Swing app suffer from. The menu items, toolbar buttons and status bar aren't always very clear and it can be hard to discover just what Charles can do. But make no mistake, this is one seriously capable application.
Git Tower
I've been a pretty serious git user for about four or five years now. I've learned enough of git's inscrutable command-line interface to be quite productive. But sometimes I want something a little easier to parse visually than a bunch of text output in fixed-width font.
I've tried just about every git client out there for the Mac and my favorite, by far, is Tower. It does a great job of making the easy stuff simple to achieve and the more complex possible. You can easily switch branches, clone repositories, push and pull repos, tag and view history. Tower also has a nice interface for merging and rebasing changes and also has one of the best history browsers I've seen.
Evernote
I've had an ongoing love/hate relationship with Evernote for about two years. The core concept of synchronizing text, images and damn near any kind of file across multiple devices is very seductive. But the text editor in Evernote is a complete disaster. Frankly it's so unusable that I've nearly abandoned Evernote multiple times. But that sync'ing ability is so intriguing that I can't quite let it go. So now I'm using Evernote as a multi-device synchronized junk drawer minus text notes of any consequence. I hope that someday somebody at Evernote will finally hear the cries of anguish from their user and fix the goddamned thing.
nvALT
Since Evernote is so bad with text, I finally buckled down and learned Markdown and switched all of my “serious” note-taking to nvALT on top of Dropbox. I really like the interface of nvALT. It does a knock-out job of closing the gap between intent and action. I can create and find notes in nvALT faster than any other note-taking tool I've ever used.
But, I still find the lack of multimedia support (particularly images) in Markdown frustrating. This isn't necessarily a shortcoming of Markdown as much as it doesn't seemed to be baked into any of the tools. For example if I put images in a sub-folder of my Dropbox notes, an iOS companion app like Elements won't render local image URLs. My world doesn't boil down to plain-text. I take a lot of snapshots and draw a lot of sketches. This seemingly unscalable barrier between text and images in available Markdown tools is both surprising and disappointing, but there it is. So I'm not 100% happy with either Evernote or nvALT (really Markdown), but use them to complement each other and shore up the others short-comings.
Vico
I really liked TextMate when I first came to it. Over time there has been a growing collective anxiety about TextMate's status as “abandon-ware”. This didn't concern nearly as much as the lack of split buffers did. Once I have more than three tabs open, navigating between buffers is a pain.
In the meantime, I learned enough vi/vim to be dangerous and have grown pretty fond of its view of the text-editing world. However I wasn't crazy about the vim implementations on the Mac. MacVim is adequate, but it feels like a step backwards to maintaining a bunch of configuration files. Blech. No thanks. If there's one thing TextMate did really well, was that its bundle architecture “just worked”.
Enter, Vico. It's a first-class Mac app with vim keybindings and TextMate bundle compatability. For hard-core vim users, Vico may be a bit frustrating. If you have lots of custom configuration, your vim-script files won't work with Vico (time to learn Lua). However if you're a recent vim convert, like me, and loved TextMate, Vico hits a nice sweet-spot between the two.
xScope
Icon Factory's xScope isn't a new tool, but its presence has become ubiquitous in my work this year. If you haven't used it, it might not being entirely clear what this tool is. xScope is a swiss-army knife of various tools related to size, color and geometry for graphics. It has rulers you can float above any application. It has guidelines that you can place on your desktop. The loupe tool is one of my favorites, allowing you to magnify the pixels and even sample specific colors right to the clipboard.
Cloak
Since I'm an independent developer I spend a lot of time working in coffee shops. I'm usually pretty careful about what kinds of things I do on the free wifi that came with my espresso, but you can't ever be 100% sure about what some nefarious devil could snoop. Enter Cloak, an on-demand VPN that kicks in automatically on wifi connections that have no password.
I was lucky enough to be invited to alpha-test this project and it works as advertised. I forgot to mention it earlier because it simply worked and stayed out of my way. For a tool with a goal like Cloak, I can't imagine giving it any higher praise.