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
In my previous post I explained how I added some git hooks to ensure that we have lighthouse ticket info added to our git commit and merge messages. This means that when we push to github, the lighthouse service hook updates the tickets in lighthouse and anyone watching the ticket gets updated. This is only half the story though, we also update the tickets both when code is deployed to the staging server or the production system. 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
Yes, it's true, despite what you may have assumed, not all text within a ColdFusion application can be assumed to be UTF8 encoded unicode. While I was aware of this myself, I'd frequently forget the details, so I wrote it down and I've pasted it here so you can read it too (aren't you lucky!). 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, you might just find this post interesting.  » 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