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 software developer: most of my time in recent years has been spent writing Rails, though I've dabbled in many other things and like most people who have been writing code for decades I can learn new stuff as needed.

As of July 2016, I'm looking for my next job. I'm not able to relocate, so unless you're in the Evansville area, I'd need a completely remote gig. I have lots of experience working remote. Prefer full-time but I wouldn't be averse to an interesting contact gig. Drop me a comment if you've got something or email MikeG1 [at] larkfarm.com.

Navigation

A Fresh Cup

Notes on Rails and other development

Monday
Nov282011

Double Shot #761

4AM really is the best time to be awake in the suburbs.

  • PageKite - Another service to make a personal server available to the wide wide Internet.
  • fancyBox 2 - Complete rewrite of this jQuery plugin for image zooming with new features and a new (non-commercial) license.
  • hub - Gem that wraps git in GitHub-specific functionality (like cherry-picking from GitHub URLs).
  • Relish - Online "living documentation" by organizing and prettyfying your app's Cucumber features.
  • Dillinger - Open source cloud-enabled HTML5 Markdown editor.
  • Firebug 1.9b2 - New beta for your debugging pleasure. My experience with Firebug betas is that they've been very stable, so give it a whirl.
  • rails_mongo_blank_project - A quick start with Rails 3.1, MongoDB, MongoMapper, Devise, CanCan, OmniAuth, and Twitter Bootstrap.
  • Moxy - "Programmable mock proxy", that is, a Rack-based server that lets you tell it what to return for testing purposes.
  • Felix's Node.js Guide - Lots of material here, including a beginner's guide and a style guide.
  • snowday - Test result formatter for RSpec featuring snowmen.
  • Jenx - OS X monitor for Jenkins with Growl integration.
  • Direct Post Method - Authorize.Net's equivalent to the Braintree transparent redirect.
  • Debugging with Pry - A technique I keep meaning to learn. Pry is also usable within Rails.
  • powser - Browser-based UI to the powder CLI to manage the Pow web server.
  • Tasks - Review of to-do apps that run on IOS/OS X. Tempts me to go back to OmniFocus again, but…this piece of paper is doing pretty well for me right now.
  • Choices to make in a new Rails project - My own opinions. How about yours?
  • Firefox - tons of tools for web developers! - A list of extension goodies.
  • JSON Builder - Gem solution similar to the existing XML Builder in Rails.
Saturday
Nov262011

My Tools of the Trade - 2011

I posted this list in mid-2008 and updated it in late 2009. So it's overdue for an update. Here are the tools I tap most often these days in building web sites and doing my other work.

Hardware

My desktop box is overdue for an upgrade, and I'd like to treat myself to an upgrade, but I can't quite justify the cost yet. On the other hand I have added a couple of other Macs in the past two years, so I haven't exactly been skimping. I do the bulk of my work on a 4-core Mac Pro with 24GB of RAM, a 100GB SSD, a 240GB SSD, and two 750GB hard drives, as well as external 500GB and 1TB drives. 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.
  • The SSDs are both Mercury Extreme SSDs from Other World Computing. So far they've been extremely reliable. I keep my home and apps on the SSDs and data on the hard drives for the most part. Makes a world of difference in application launch times.
  • Both hard drives are 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 500GB 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.
  • The 1TB external drive is a LaCie Quadra purchased from Amazon. It's had some issues - in particular, the connection between the power supply and the drive is flaky - but I only use it for Time Machine so it's acceptable.
  • 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 3 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. This is my second Tactile Pro, and I'm happy to say it fixed all the issues I had with their 2.0 version.
  • 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. It's showing its age a bit - the paper feed jams on large stacks - but it's still essential.

I also own three other Macs:

  • A 17" MacBook Pro with 8GB 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.
  • A 15" MacBook Pro with 3GB of RAM. This was my old travel box; I now use it to record screencasts.
  • A Mac Mini with 8GB of RAM (yes, also from Crucial). I just picked this up a couple of weeks ago to serve as a continuous integration server, and it's happily chugging along in my garage.

Backups

I use a multi-tiered backup strategy:

  • The second 750GB drive in the box mirrors the first. This gives me reasonably instant protection against a single drive failure.
  • The external 500GB drive holds nightly SuperDuper backups. This gives me protection against complete computer meltdown.
  • The external 1TB drive holds Time Machine backups. In my experience, 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

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).

One thing you won't find here is a to-do manager. I've tried to manage tasks with iCal, PostBox, OmniFocus, The Hit List, Things, TaskPaper, Remember the Milk and a few more. In the end, they all make me focus more on fiddling and less on actually getting things done. Now, I just use a paper notebook that sits on my desk.

  • 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 use Safari and Chrome when I'm developing browser extensions, but almost never otherwise. These days I'm running Firefox 11.0 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. I'm starting to look for alternatives here, though; recent 1Password addon builds have taken a huge step backwards in usability as far as I'm concerned.
    • 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.
    • CS Lite - Everyone can use a cookie manager. This is the one that I like.
    • 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. I still find it more usable than the similar tools in Safari and Chrome, though the gap has narrowed in the last year or so.
    • Ghostery - Web bug and tracking detection and blocking.
    • 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.
    • 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.
    • QuickDrag - Mouse-gesture searching. Saves me ten seconds at a time a dozen times a day.
    • 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.
    • Add-on Compatibility Reporter - A necessity when running nightly builds, this one also lets you install extensions that haven't been marked as compatible yet.
  • 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. I am decidedly not a vi/vim/emacs person.
  • 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've been using Vienna for a couple of years now. It's still under active (though somewhat slow) development, which is a plus.
  • Twitteriffic - I've recently returned to Twitter, but I still think the web user interface is pitiful. Fortunately, thanks to desktop clients, I don't need to put up with it. I used TweetDeck for a while, but these days I obsess less over the whole Twitter thing.
  • Postbox 3.0 Apple's built-in mail.app drives me nuts; I finally gave it up entirely and switched to Postbox, which does a much better job of searching and presenting my mail. It's not perfect, but it works for me.
  • iTerm2 - 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. This year I switched from the build-in OS X Terminal to iTerm2, which looks nicer and makes it easier to script a bunch of stuff to launch whenever I start up the machine.
  • 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 for OS X come anywhere near Microsoft's tools in terms of functionality and usability, but Navicat is not bad (it's also not cheap). 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 (L) - 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.
  • 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.
  • 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.
  • 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. I paid for a copy before EverNote bought them out and I don't regret it at all.
  • Teleport - Mouse and keyboard sharing for multiple Macs. With this installed, I very seldom even touch the laptop keyboard.
  • Alfred - My current application launcher of choice. I used QuickSilver for quite a while, but Alfred is under much more active development.
  • Charles - Great debugging proxy for the Web. When the FireBug network view doesn't give me enough details, Charles is where I turn to see what's actually going on between my computer and some cantankerous server.
  • DaisyDisk - There are a bunch of disk space analyzers for OS X. This is the one I like, both for speed and for looks.
  • DropCopy Pro - I've tried a bunch of ways to get clipboards and files easily shared between the various Macs here. This is the one I'm using right now.
  • HazeOver - I'm not a big fan of full-screen apps or stuff like Dark Room. But I also like to focus a bit. HazeOver just highlights the current window by slightly fading background windows, which works for me.
  • HoudahSpot - Spotlight by itself is pretty awful. HoudahSpot raises searching on OS X to at least "tolerable."
  • ScreenFlow - I'm dinking around with some screencasts these days. Maybe you'll eventually see some of them.
  • Soulver - Nice little app for messing around with numbers, easier to use than most calculators.
  • SyncMate - Best tool I've found for synching my Android phone with the Mac. Not that I'm a big fan of either phones or synching.
  • TotalFinder - Tabs and other goodies for Finder. Well-integrated and well-designed, I won't use Finder without this if I can help it.
  • Wuala - Secure file-sharing tool that actually does client-side encryption. I use it for sharing things like passwords with other team members.
  • 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 whenever at all possible). 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 occasionally. 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 a bunch of machines here at the moment, between my own VPSs and customer ones, and I've used them for physical computers as well. And their customer service is absolutely superb. I can't recommend them highly enough.
  • I've also had customers put applications at WebbyNode, Heroku, and RackSpace, and they're all reasonable places to host things.

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 in 2008 by posting his tools of the trade)

Friday
Nov252011

Double Shot #760

Not feeling nearly crazy enough to visit a WalMart today.

  • Consulting demands - If you don't get the humor, consider yourself lucky that you missed the drama.
  • Tenjin - Fast template engine with support in several scripting languages.
  • Rails ERD - Rails 3 plugin for generating entity-relationship diagrams.
  • Bobby Tables - "A guide to preventing SQL injection."
Thursday
Nov242011

Double Shot #759

Happy Turkey Day.

Wednesday
Nov232011

Double Shot #758

Early morning are my favorite time, even when code is involved.

  • GitHire - "Find skilled programmers in your area" by searching GitHub by location and ranking by some popularity metric.
  • Calepin - Hosted blog publishing using Dropbox and Markdown.
  • jQuery 1.7.1 Released - With a batch of bug fixes.
  • Heroku Postgres - SQL-as-a-service, starting at $200/month. The launch announcement is here.
  • Programming - All too true.
  • Faye - Simple pub/sub messaging for node.js and Ruby. As of the 0.7 release it includes direct WebSocket APIs for node and rack.
  • Skype Styles - Skin for Mac Skype chat. This might actually make recent Mac Skype clients halfway usable.