sanity, inc.

simple thinking for complex software

On Vim vs Emacs

I often hear the proponents of vim and emacs discussing which is better, usually pitting emacs’ extensibility against vi’s archaic yet arguably effective and tendon-friendly scheme of editing modes.

But why choose?

Use a Bookmarklet to Toggle the Blueprint CSS Background Grid

I’m a big fan of grid-based layouts, particularly using CSS frameworks like YUI. For all their apparent conflict with the ideals of semantic markup, these frameworks save a ton of time.

My current favourite is Blueprint CSS, which I used for the recent redesign of our celebrity charity news site, and I found a neat way to toggle the positioning grid on and off with a bookmarklet instead of by changing the site’s HTML templates.

Generate an HTML Index of Your Ruby Gem Rdocs

Rubygems is kind enough to generate RDoc for installed gems, but the directories move as the gem versions evolve, and it’s inconvenient to keep browsing for them. This tool produces a useful HTML index with direct links to the RDocs for all the gems installed on your system.

Relocating Git-svn Repositories

If you use the amazing git-svn to work in a civilised manner with a subversion repository, you may have trouble if the subversion repository is relocated, ie. has its access URL change. This article describes an approach for handling this situation, which git-svn does not directly support.

Renumber Clashing Rails Migrations in One Easy Step

If you work in a team on a Rails project, chances are that you and your team mates occasionally create identically-numbered migrations. Renumbering a migration that you’re working on is a pain, unless you’re using this handy renumber_migrations plugin.

Init Scripts Considered Harmful

Tired of PID files, needing root access, and writing init scripts just to have your UNIX apps start when your server boots? Want a simpler, better alternative that will also restart them if they crash? If so, then read this quick-start introduction to process supervision with runit/daemontools.