Kerry Buckley

What’s the simplest thing that could possibly go wrong?

Archive for June, 2007

Hoist by my own petard, part two

leave a comment

You’d think I’d have learned my lesson, but apparently not. While the build was finally underway last night, I noticed that my search box made the layout a bit odd when you were logged in, so moved the sign out and edit profile links alongside “Welcome your name” instead of underneath. While I was there, I recklessly changed it to “Welcome, your name” (with a comma). This time it couldn’t possibly break anything, so I checked it in and went home.

Yes, you guessed it.

sign_in 'fred', 'secret'
verify_text_present 'Welcome Fred Bloggs'

The really embarassing thing is the checkin comment though.

portal build 565 FAILED
finished at 8:10 AM on 21 June 2007 taking 4 minutes and 34 seconds

Build Changeset
Revision 565 committed by 802285285 on 2007-06-20 16:57:34
Move welcome message to same line as sign out/edit profile, to make room for search. This one will *not* break the build...
M /trunk/app/views/layouts/global.rhtml

Written by Kerry

June 21st, 2007 at 7:24 am

Posted in Agile,Software

Hoist by my own petard

leave a comment

So, this morning we had our iteration retrospective, and one of the things I brought up under “what should we do differently?” was that we seemed to be breaking the build a lot. We’d got out of the habit of always running the acceptance tests before committing even minor changes, and the build often stayed red for an hour or two while the culprit figured out what had gone wrong and fixed it. We all agreed to take more care in future.

Then this afternoon, I checked in a tiny change, affecting one RHTML file and a CSS stylesheet, just to add a search box to the top of the page layout. No code involved – what could possibly go wrong?


Build failure

That’s two thirds of our acceptance test cases failing.

Turns out we had a lot of brittle acceptance tests, which relied on just submitting the first (and only) form in the page. Two-and-a-half hours and 37 modified files later (and long after I’d intended to go home) I’d added IDs to all the submit buttons and fixed the Selenium files to click them explicitly.

That’ll teach me.

Written by Kerry

June 20th, 2007 at 6:07 pm

Posted in Agile,Software

Multiple class attributes in HTML

one comment

Here’s a great tip courtesy of Trenton Moss’s Ten CSS tricks you may not know. I certainly didn’t know it, but it’s quite possible everyone else does and this post is going to make me look like an idiot. I can take it.

How many times have you ended up doing something like this?

<style type="text/css">
  .required, . requiredError { font-weight: bold }
  .error, . requiredError {background: red }
<input class="required" type="text" name="foo" value="something" />
<input class="error" type="text" name="bar" value="invalid" />
<input class="requiredError" type="text" name="wibble" value="also invalid" />

Did you know that you can specify multiple classes on one element, just by separating them with spaces?

<style type="text/css">
  .required { font-weight: bold }
  .error {background: red }
<input class="required" type="text" name="foo" value="something" />
<input class="error" type="text" name="bar" value="invalid" />
<input class="required error" type="text" name="wibble" value="also invalid" />

Technorati Tags: , ,

Written by Kerry

June 18th, 2007 at 9:09 pm

Posted in Software

A step-by-step BDD example using RSpec

leave a comment

We’ve now got a Ruby focus group at work, and one of the first things to be set up has been a weekly programming exercise [intranet link], in the style of Ruby Quiz. It’s now week two, and the problem is slightly more complex than last week’s gentle FizzBuzz introduction. Here’s the specification:

This time, the challenge is to come up with some Ruby code that converts a positive integer to its English language
equivalent. For example:

1 => one

10 => ten

123 => one hundred and twenty three

10,456 => ten thousand four hundred and fifty six

1,234,123 => one million two hundred thirty four thousand one hundred and twenty three

The code should work from numbers 1 – 10,000,000,000 (ten billion) but if it works for bigger numbers its all good.

For an extra challenge, when the strings for the numbers for 1 – 10,000,000,000 are sorted alphabetically, which is the
first odd number in the list?

I thought it might be interesting (to me, at least!) to record the process I go through to reach the solution, rather than just sharing the finished article. I’m using a behaviour-driven approach, although the process for writing a single method obviously doesn’t touch on a lot of the wider aspects of BDD.

So here it is, warts and all (I’m writing this as I go along, so I have no idea how long this post is going to get, or whether I’ll even arrive at a solution at all!)
Read the rest of this entry »

Written by Kerry

June 17th, 2007 at 10:39 am

Posted in Agile,BT,Ruby,Software

Some people have too much time on their hands

leave a comment

I don’t know whether there’s any camera trickery involved, but this video is pretty cool. Kind of like a DIY version of Honda’s famous Cog advert.

Written by Kerry

June 13th, 2007 at 10:29 am

Posted in General nonsense

Software/geek symbiosis

one comment

Yesterday I was lucky enough to get the chance to attend a talk/workshop on TiddlyWiki, presented by its creator Jeremy Ruston, with quality supporting acts from JP and Doc Searls. Jeremy has just joined BT as Head of Open Source Innovation, which is pretty cool in itself.

One of the comments he made that particularly struck me was to the effect that a piece of software is a living thing, but is parasitic, requiring a ‘geek host’ to live on. Much of the value of software isn’t what it does, but what it can potentially do. Once you separate the software from its geek, it starts to die, because it can no longer adapt to changes in its environment.

I think this is something that we’re losing in the world of corporate IT. Read the rest of this entry »

Written by Kerry

June 9th, 2007 at 3:54 pm

Blast from the past

leave a comment

The things you find in server room cupboards!

Written by Kerry

June 9th, 2007 at 2:07 pm

Posted in BT,General nonsense

Taking continuous integration for granted

one comment

Only a couple of years ago a source code management system, as far as I was concerned, was somewhere you checked files out of when you started development for a release, and checked them back in a month or two later. Integration was something that generally occupied the next few weeks, as everybody’s changes fought amongst themselves over who could find the most interesting ways to break stuff.

Yesterday we had a major power fault in the server room where our Subversion and CruiseControl boxes (amongst a lot of much more important stuff) lives.

It’s surprising how much of a pain it now seems not to be able to commit code as I get it working. Not to be able to integrate other people’s changes. Not to be able to check that my code passes all the acceptance tests in a controlled environment.

At least it’s not like the old days when we had to actually do all our development on the Unix server, so I can still get on with things until it’s all sorted out.

Aha! It seems that while I was typing this post, the repository has come back online.

Technorati Tags:

Written by Kerry

June 5th, 2007 at 8:54 am

Posted in Agile

Opiniated software

leave a comment

DHH talking about pluralisation in Rails, in Scott Hanselman’s RailsConf interview with him and Martin Fowler:

…it was kind of a firewall. It was a firewall for aesthetics. So if you could not appreciate why we did this, why we chose to go through all of this work to get prettier code, maybe you weren’t in the state of mind that was a good fit for this community. So we tried to weed people out in some sense – if they don’t share the same cultural bias, if they don’t share the same values, then maybe they’re not a good fit for the Rails community.

It’s often said that Rails makes it very easy to Do The Right Thing, whether it’s separation of concerns, unit tests, DRY or whatever. I wonder how many people start using better practices because Rails pushes them in the right direction, or whether they choose Rails because they see the obvious evidence of good practices its philosophy and architecture.

Technorati Tags: , , , ,

Written by Kerry

June 3rd, 2007 at 7:24 pm

Posted in Rails