With MySQL 5, altering large tables, including adding or dropping indexes, can be painfully slow. In order to alter the table, MySQL normally creates a temporary table with the new structure and copies rows into it, one-by-one, updating the indexes as it goes. Searches for “mysql slow index creation”, “mysql copy to tmp table” and “mysql alter table slow” will reveal all the gory details, but I'm going to concentrate on a workaround for Ruby on Rails applications.  » read more
We use git hooks to make sure we add lighthouse ticket info to our git commit and merge messages, so, when we push to github, the lighthouse service hook updates the relevant tickets and people watching those tickets are notified. This is only half the story though, we also update the tickets when we deploy to staging or production. Doing this manually is a pain in the behind, so I took the time to automate it...  » read more
Github includes a service hook to allow commit messages containing Lighthouse ticket info trigger an update to the relevant tickets when you push changes. We use Lighthouse to keep track of bugs and feature requests, and were adding the ticket info to commit messages manually, but found ourselves both forgetting to do it, and making stupid typos. So, to make up for our incompetence, I automated the addition of ticket numbers and state to the commit messages using a couple of githooks…  » read more
Continuous testing with autotest is great, especially when working on an existing application. Autotest runs in the background, and when you save a file, runs any matching tests and tells you if you've broken something, fantastic! Thing is though, there are lots of reasons why you don't want tests to run every, single time you make some little, tiny change to your code.  » read more

Forked Campfire plugin for Hudson

February 15th, 2010

Sometime before Christmas, we decided we'd had enough of CruiseControl.rb and needed a better continuous integration solution. We use Campfire to keep in touch with each other during the day and we'd always had build notifications from CC.rb sent to Campfire, so a similar feature was considered essential in any continuous integration solution that could be considered as a replacement.  » read more
A lot of CF developers seem to have concluded that since ColdFusion is now effectively a java webapp and there's a lot of talk about UTF8 encoding that hey, ColdFusion is UTF8 encoded. Well, it's not that simple, not everything in ColdFusion is UTF8 encoded, but this seems to be a difficult thing to explain without some background, so I wrote me a little blog post about it. If you had assumed that you were always dealing with UTF8 encoded unicode, or you're not even quite sure what UTF-8 encoded unicode means, well, read on my friend, this post is for you...  » read more
For anyone using the tsearch2 module with postgres version 8.1 included with CentOS 5, upgrading to 8.3 or later can be a little tricky and IMO, the official documentation and a number of blog posts I've read skip over the details. I documented what I did when I first upgraded one of our servers from 8.1 to 8.4, and I've posted an edited version here for anyone that might find it useful. The instructions should also be applicable to users of RHEL and Fedora.  » read more