A Fresh Cup is Mike Gunderloy's software development weblog, covering Ruby on Rails and whatever else I find interesting in the universe of software. I'm a full-time Rails developer and contributor, available for long- or short-term consulting, with solid experience in working as part of a distributed team. If you'd like to hire me, drop me a line. I'm also the author of Rails Rescue Handbook and Rails Freelancing Handbook.

Navigation

A Fresh Cup

Notes on Rails and other development

Sunday
Oct112009

My Tools of the Trade - 2009

I originally posted this list in mid-2008, and it seems about time for an update. So, here are the tools I tap most often these days in building web sites and doing my other work:

Hardware

For the most part, I haven't upgraded hardware in the past year. The desktop box is starting to feel its age, and I'd like to treat myself to an upgrade, but I can't quite justify the cost yet.

I do the bulk of my work on a 4-core Mac Pro with 12GB of RAM and two 500GB hard drives, as well as an external 500GB drive. While the Mac itself came direct from Apple, most of the extra bits did not. I've never complained about spending money on upgrades that make me more effective, but compared to the competition I find much of Apple's peripheral lineup overpriced. So apart from the core box I have:

  • Extra RAM from Crucial. I've never had a problem with them, and these days they even have a system scanner for Macs that makes finding the right memory sticks painless.

  • 2nd hard drive is a Seagate drive sourced from NewEgg. There are cheaper sources for drives, but NewEgg's service has always done right by me in case of problems. I've probably used every major manufacturer of hard drives over the past 2 decades, and Seagates have consistently been most reliable for me.

  • The external drive is a G-Drive from G Technology. Their pricing is better than some of their better-known Mac competitors, and it's been quietly reliable.

  • Dual 24" monitors from Dell. Apple's Cinema displays are prettier, but I'm not willing to pay that much for pretty.

  • Matias Tactile Pro 2.0 keyboard. The stock Mac keyboard is crap (as are just about all stock keyboards these days). I type faster and more accurately on a keyboard with good click and spring feedback, and this is the best I've found for the Mac - nearly as good as the Unicomp keyboards for PCs. The Tactile Pro does have a problem with spurious characters if you type certain key combinations quickly, though. As of late 2009, I've got a pre-order in for the Tactile Pro 3.0, which I certainly hope fixes the problem.

  • Logitech Cordless Trackman Optical trackball. The stock Mac mouse is also crap. I've also found over the years that I have a lot fewer RSI symptoms with trackballs than with mice. I do switch back to the stock mouse on those rare occasions when I have finicky photoshop work to do. I used an Evoluent VerticalMouse for a while, and liked it, but it broke after a few months and I wasn't inclined to spend the money again.

  • Fujitsu ScanSnap S510M desktop scanner. This has finally let me get to a near-paperless office. I'm currently annoyed with its lack of OCR support under Snow Leopard, but allegedly that will be fixed by the end of the year.


I also own a 15" MacBook Pro with 3GB of RAM for the rare (these days) times that I travel. As with the desktop box, the extra RAM came from Crucial. There's a random Chimei external 22" monitor to give it additional screen real estate, and a Logitech VX Nano wireless mouse, which is a fabulous little device that appears to have been discontinued.

Backups

I don't fill up even a single 500GB drive with my current working software and projects. Everything else is a part of my backup strategy:

  • The second 500GB drive in the box mirrors the first. This gives me reasonably instant protection against a single drive failure.

  • The external 500GB drive holds Time Machine backups and nightly SuperDuper backups. This gives me protection against accidental deletions and complete computer meltdown. Time Machine isn't 100% reliable, but I don't need to recover accidentally deleted files often so it's worth filling otherwise-unused space with its work.

  • Servers at Amazon S3 hold yet another backup of my most critical files via Jungle Disk. This is my "in case of house fire" backup.

  • I use Dropbox to mirror code and documents across the desktop and the laptop. It works great, and gives me yet another layer of redundancy for things like my open-source projects and customer code.


Yes, it seems like an absurd number of copies of data. But over the years I've learned that combined failure modes can take out more copies than you might think. Apart from the recurring Amazon S3 charges (about $20 per month) all that went into this was one-time costs and a tiny bit of configuration time. It's cheap insurance.

Software

Thanks to Slife, I can see software in the order that I actually use it, from most-used on down. This doesn't necessarily reflect its importance, but it's a useful guide. I use a lot more software than this, so I'm only listing the ones that are most-used and that have a direct impact on my development (or that I have otherwise strong opinions about).

  • Firefox - I live in the browser - and the browser I live in is not Safari (and not, for the love of God, in Internet Explorer). I tried Chrome and was not really impressed; for me, functionality trumps speed. These days I'm running Firefox 3.7 alpha builds and finding them fast and reliable. The wealth of extensions for Firefox easily tips the balance for me. Among my most-used addons:

    • 1Password - With the number of sites I use these days (that's another discussion), password management is a necessity. Though I'm leery of locking up passwords in a proprietary database, synchronization with their online My1Password service removes some of the worry for me.

    • Adblock Plus - The main reason the internet is littered with ads is that everyone is playing "emperor's new clothes" and doesn't want to admit that they don't work. Soon enough the entire model (and Google's share price with it) will collapse. Meanwhile, I don't feel any ethical duty to look at them or let them take up my bandwidth.

    • BugMeNot - I don't feel a need to go through registrations so you can send me spam or tap into my demographic, either.

    • CS Lite - Everyone can use a cookie manager. This is the one that I like.

    • CustomizeGoogle - Zillions of options to make Google more usable. It's one of those extensions that I don't remember I'm using until I sit down at someone else's computer and it's not installed.

    • Faviconize Tab - I run with a lot of tabs open in Firefox (typically 50+). Using this to shrink my most-used tabs to the width of their favicons makes everything more findable.

    • Firebug - If I had been using any other browser, this would have been enough to make me switch to Firefox. HTML, CSS, and JavaScript debugging rocks.

    • Ghostery - Web bug and tracking detection and blocking.

    • Googlepedia - Integration of Wikipedia results into Google results. Helps more often than you might think.

    • Greasemonkey - I only run a few Greasemonkey scripts, but when the design or layout of a particular site pisses you off, it's the easiest tool to reach for.

    • HashColouredTabs+ - If you want to faviconize tabs from sites that don't supply favicons, this is an easy way to make them more visually recognizable. One tip: make localhost:3000 something like a red circle so you never again mistake it for a production site.

    • HttpFox - HTTP header analysis in Firefox. Not needed all that often, but irreplaceable when it is needed.

    • Nightly Tester Tools - If you run anywhere near the edge of Firefox, this one is essential, simply because it gives you easy ways to make other extensions work again.

    • NoScript - JavaScript and Flash blocking by default. I sleep a lot more easily knowing that random sites can't just serve random JavaScript to my computer.

    • PDF Download - PDF management the way that it ought to be baked right into the browser. Like, choose at click-time whether you want to view, open, or download.

    • QuickDrag - Mouse-gesture searching. Saves me ten seconds at a time a dozen times a day.

    • Weave - Synchronization for multiple Firefox copies on different computers. This one has gone from "barely usable" to "definitely helpful" in the last year. Nice to have things like passwords and tabs available across both computers with no extra effort.

    • Web Developer - Thanks to Firebug, I don't use this nearly as much as I used to, but there are still tools here (like outlining tables and cells) that come in handy.



  • TextMate - I used to be a heavy-duty IDE user, but that was back in the old days. With Rails, I'm much happier close to the code, in a text editor. This is the text editor to use. I've tried a couple of the IDEs out there - RubyMine seems to me to be the best of the lot - and haven't found any reason to switch to them.

  • Vienna - I am a heavy, heavy RSS consumer. There are not many clients that work when you get up into the hundreds of feeds and hundreds of thousands of stored items. I switched from Cyndicate to Vienna this year, and it's working reasonably well. It's still under active (though somewhat slow) development, which is a plus.

  • TweetDeck - I'm quite active on Twitter, but the web user interface is pitiful. Fortunately, thanks to desktop clients, I don't need to put up with it. I happily used Twitteriffic for a couple of years, but I've recently switched to TweetDeck because I need grouping given the number of people I follow on Twitter.

  • Mail - I use Apple's built-in mail application, though I'd give it at best a C+ (and the Snow Leopard version is worse than the one before); everything else is worse. Some of the annoyances can be ameliorated with the right Mail add-ins:

    • DockStar - The killer feature here is one-click access to individual folders from the menu bar.

    • Mail Attachments Iconizer - Especially useful if you don't want Mail to pretend it's smarter than you about how to display attached PDFs.

    • GPGMail - PGP-authentication plugin. You probably could build something from scratch, but why bother?



  • Terminal - In Windows, I tried to avoid the command line. In OS X, I embrace it, often having half a dozen ssh sessions running at once. Perhaps I've matured.

  • MarsEdit - I do a fair amount of blogging. I can't say I'm in love with any of the desktop clients, but I'm at least in like with this one. It beats the hell out of WordPress eating yet another post.

  • Navicat Premium - None of the cheap or free database clients come anywhere near Microsoft's tools in terms of functionality and usability, but Navicat is not bad. I've upgraded to the Premium version because it supports both MySQL and PostgreSQL.

  • CSSEdit - CSS editor that simply blows away the competition. I never found anything even remotely comparable for Windows.

  • EagleFiler - OS X has way too many applications for organizing heaps of miscellaneous information and documents. This is the one I use.

  • Changes - Paying for a diff/merge application seems absurd, but I like the looks and functionality of this one. And no, I don't really need all the extra features in Beyond Compare.

  • GitX - Native OS X GUI for git repositories. I don't use its commit features, but I am constantly in its browse view.

  • OmniOutliner Pro - My brain often thinks in outlines. This makes them prettier.

  • xScope - On-screen design and layout tools. The radar/lasso dimensions tool is the killer here.

  • Pixelmator - Graphics apps are another area where OS X is oversupplied. I use PhotoShop (grudgingly) for heavy lifting. Pixelmator is the one that I reach for for light editing.

  • Transmit - My FTP client of choice. Yeah, I don't much like the command line or the browser for FTP. It's all about shaving seconds off my thinking time.

  • The Hit List - I have tried a zillion to-do list managers, including many of the GTD heavyweights. This is the one that I actually use and even like (though there's no excuse for Apple's failure to build usable task management into the operating system).

  • Evernote - This is my solution of choice for dumping pointers to things I want to remember, little code snippets, and even photos of the kids. Painless sync to multiple computers is a winning feature, and if they can carry out some of their more grandiose plans it'll get even better. I pay for the Premium level happily.

  • Balsamiq Mockups - I don't do a lot of user interface design, but when I do, this is my usual starting point. Having mockups that don't look like a "real" user interface is a good way to keep clients focused on the issues at hand.

  • DropSend - Easy way to ship large files around without running into email limitations or having to teach the technically-challenged how to use FTP.

  • EditiX - I've had to do a couple of jobs involving heavy XML lately. While XML editors are another area where OS X is far behind Windows, this one is good enough to pay for and use.

  • HttpScoop - Good HTTP sniffer. You can do without this if you're a whiz with other tools, but the usability is worth paying for if you end up diagnosing a lot of HTTP problems.

  • SQLite Manager - Given the ubiquity of SQLite databases these days, I wish there was a really good GUI for them. This one reaches the "nearly acceptable" level.

  • XyleScope - Free tool for seeing the structure of web pages. I find it better than Firebug when I want to understand how CSS selectors are working together (or fighting against each other).

  • PTHPasteboard Pro - OS X clipboard sharing. Useful if you're wrangling multiple computers.

  • Skitch - Easy screenshots with web sharing or drag-and-drop to other applications. Comes in very helpful when you're working as part of a remote team.

  • Quicksilver - I still use this program launcher, though it's feeling sort of creaky around the edges these days. Still under active development so I wouldn't count it out just yet.

  • Teleport - Mouse and keyboard sharing for multiple Macs. With this installed, I very seldom even tough the laptop keyboard.

  • Communications - 90% of the time I'm devoting the laptop to nothing but staying in touch with the outside world and team members. This means I'm running:

    • Skype - Skype is pretty sucky, especially in the way they make it easy for spammers to interrupt your day. And my hearing loss makes it tough to put up with their poor-quality voice calls (so I refuse to use it for voice). But it's the choice of chat applications of several of my clients.

    • Adium - This is a lifesaver, bringing together my AOL, Yahoo, GTalk and MSN chat accounts into a single UI. I tried their Twitter and IRC integration and didn't much like them, but for the rest it's gold despite the occasional efforts of one server or another to block it.

    • Propane - I've got a couple of Campfire chats that I need to monitor. Propane makes Campfire somewhat less painful.

    • Colloquy - No one has really done a killer IRC client for OS X yet. Colloquy is the best I've found. And yes, I've likely tried whatever alternative you were going to recommend. Single-window UI with custom stylesheets and the ability to suppress noise like join/part messages are key here.




Hosting

  • PairNic - I've been using Pair as a registrar for roughly forever. They're not the cheapest by any means, but they give me good service and let me manage my DNS, and their tech support has been superbly responsive when I've needed them. Plus they don't waste my time trying to upsell me.

  • RimuHosting - Linux servers with root access and the Rails stack preinstalled if you want it. $30-$50 per month depending on your needs. I've got nine machines I'm managing there at the moment, between my own and customer boxes. Another company with great customer service.

  • Webbynode - I've got one customer on a Webbynode VPS, and they're happy. Management tools are very nice. They need a better deployment story, though.

  • Heroku - I don't have any customer work hosted on Heroku yet, but I'm experimenting more there, especially now that I can deploy an app in one step using my own BigOldRailsTemplate.


One of these days I'll update my entry about the various web applications that I use constantly, but this one is already long enough. In the meantime, if you want to post your own similar list, I'd love to know about it - leave me a note in the comments. And feel free to compliment my choices or call me an idiot while you're at it.

(hat tip to Kevin Skogland, for kicking this off last year by posting his tools of the trade)
Friday
Oct092009

Double Shot #558

I'm getting too old for these late nights.

Wednesday
Oct072009

Double Shot #557

Some mornings it's tough to get out of bed.

Wednesday
Oct072009

Double Shot #556

It'd be nice if at least one project were running smoothly right now.

Tuesday
Oct062009

Double Shot #555

These significant numbers always tickle me.