Aux and Bluetooth Retrofit for 7th Gen Civic

A month ago I bought a 2005 Honda Civic to get around the bay area and take some road trips. So far it’s taken me many miles with no issue – last week I drove from SF to LA via 101 on a single tank of gas (36 mpg).

A good soundtrack and/or audiobook is vital to the roadtrip experience and I decided that the built in CD player and FM receiver just wouldn’t cut it. I went the aftermarket head unit route with my last car and although it worked ok, I was disappointed with the gaudy appearance and poor UX. Aftermarket stereos are also known for attracting window smashers. Several years later and I still don’t know of an aftermarket car stereo that’s much better than the one I had.

Here’s how I retrofitted an auxiliary input and bluetooth module without replacing the stock head unit.


You might also want to pick up some RCA cables or plastic pry tools depending on what you already have lying around.

Read on →

First Boot

Switching to a new development machine is often a great opportunity to start fresh and explore new tools. That said, there’s a core set of applications and associated preferences that I always take with me.

I appreciate the philosophy of sensible defaults found in Rails and similar frameworks. Context switching between multiple codebases is made easier through the widely accepted “best practices” that are codified in the underlying framework.

Sensible defaults guide you in the right direction; doing things the hard way can sometimes be avoided by embracing defaults. When the need to change a default setting presents itself, often the best solution is to change approach to better utilize the capabilities of the framework, thereby avoiding another re-invented wheel. Of course, sometimes you really do need to change settings. If the use case is wide enough to warrant it, a new default will hopefully be adopted in a future release of the framework.

I see similar benefits to embracing sensible defaults in the OS. Because of Apple’s prevalence within the developer community, many development workstations already work similarly. When I set up a new Macbook I don’t use migration assistant. Instead, I document where I’ve deviated from the system defaults on my old computer and apply those changes on the new machine. I migrate application level preferences with Mackup.

I’ve documented my approach to setting up OS X environments for development the from the last time I switched MacBooks a few months ago:

Feel free to fork firstboot and customize it to your liking. Please send a pull request if you discover a default that’s not sensible!

Git Plop

Use git plop to stash your unstaged changes, pull, and pop the stash.

  plop = "!git stash && git pull && git stash pop"
Read on →


I was tired of having thousands of photos in my Dropbox camera uploads, so I wrote a simple gem to organize photos into folders.

The gem source is available on GitHub.