Let's get ready to rumble!

By: Tim Blair


  • rails rumble
  • liveblog

Over this weekend, three intrepid developers (well, two developers and a shapes-and-colours guy) avoided sleep and coded until their fingers fall off, all in the name of Rails Rumble. Throughout the weekend, we kept this liveblog up to date with the highs and lows, sleep deprivation and anything else that we decided was interesting or funny.

You can check out what we built at Score Anything, and please vote for us.

We also put together the story of the event at Storify, so check out the individual tweets and photos that we posted during the time.

2 days, 4 hours, 10 minutes remaining...

Having spent the last couple of weeks meticulously researching and planning out what we were going to do, we realised at lunch time that maybe our research hadn't been quite good enough. Turns out that the API we were going to use explicitly states that your can't do exactly what we wanted to do...

So, picture the scene... Three of us, sitting in Wagamama, dicussing ideas over gyoza and noodles. Asking a very confused looking waitress if we could have a pot of crayons that they give to the kids, because none of us had a pen. Some very confused looks from other customers as we animatedly came up with a new direction. Chasing the staff for our bill because we've got planning to do and there's only TWO DAYS dammit!

We have an idea. Let's see how it plays out...

1 day, 23 hours, 48 minutes remaining...

And we're off! Four hours of pontification and planning later, and time's running. Our Rails app is created, the first push has been made up to GitHub, and the Linode is on its way to being set up.

We've got a good idea of where we're heading, but no doubt there'll be plenty of times when we'll suddenly have to back-pedal. For now, Paul is on server and Capistrano setup, I'm starting to put the models and relationships together, and Pete is starting work on the application design.

We did have a vague idea of putting in a couple of planning hours earlier tonight, then actually going home for a most of a good night's sleep, before starting up in earnest early in the morning. That's kinda gone out of the window based on the previously-mentioned issue with a complete change in app. For now we're cranking out the code while the office shakes to the sound of the nightclub next door...

1 day, 14 hours, 2 minutes remaining...

We we carried on until about 3:30am last night. By that time, even the simplest associations were starting to become tricky to corral, so we decided it was best to get some sleep and attack things fresh in the morning. Back again just a few hours later, we're all feeling refreshed if slightly groggy, but a healthy sausage and egg McMuffin helped with that. Oh, and we popped out to support some of our colleagues on a little charity run:

1 day, 2 hours, 54 minutes remaining...

As we get towards the end of our first full day on the Rumble, things are beginning to come together. We performed a semi- successful beta test of our app earlier around the foosball table and are now onto the bugfixes and refinements for our first sprint.

Tomorrow Pete will be making the UI look even better (much better than the Twitter Bootstrap everyone else seems to be using!) and trying out a couple of alternative colour schemes, whilst Tim and I work out where to focus our efforts next. We have a choice of two or three directions, the trick is to make something deep enough that we get credit for attention to detail and completeness, but also broad enough to appeal to as many judges as possible. It's a tough balancing act but if we get it right we'll end up with a great useful app that should provide plenty of fun! Now, back to tackling Rails' lack of documentation on really complex nested forms...

23 hours, 45 minutes remaining...

So we're down to less than a day to go. We feel like we've done a lot, but we've definitely had a few battles along the way. For example, how about this wonderful validation error:

Validation failed: Phases scores entry scores score can't be blank, Phases scores phase can't be blank, Phases scores side can't be blank, Phases match can't be blank, Phases played at can't be blank, Phases scores is invalid, Phases is invalid.

You've got to love accepts_nested_attributes_for. Anyway, it's gone passed 1am here in Windsor now, so people have headed off to get a little shut-eye before the Big Push starts in earnest in a few hours time. I'll leave you with a few stats (courtesy of rake stats) and a question... Is a 1:2 code-to-test ratio a little extreme for a Rumble?

| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
| Controllers          |    73 |    61 |       5 |       9 |   1 |     4 |
| Helpers              |    15 |    13 |       0 |       1 |   0 |    11 |
| Models               |   260 |   186 |      12 |      20 |   1 |     7 |
| Libraries            |     0 |     0 |       0 |       0 |   0 |     0 |
| Model specs          |   522 |   412 |       0 |       0 |   0 |     0 |
| Controller specs     |   143 |   113 |       0 |       0 |   0 |     0 |
| Total                |  1013 |   785 |      17 |      30 |   1 |    24 |
  Code LOC: 260     Test LOC: 525     Code to Test Ratio: 1:2.0

14 hours, 5 minutes remaining...

Time Over

And we're done. And done in. Nothing like a last minute Rails asset compilation issue to really get the blood pumping. But it's over, and we're very happy with the results. Check what we spent 48 hours building at scoreanything.com. Very much still a work in progress, but good enough to use already.

About the Author

Tim Blair

Tim Blair is the systems architect for Venntro, and holds the coveted position of Committer #1 to our WhiteLabelDating platform. He can often be found chasing pieces of plastic around a field for the GB Ultimate team, or charging around the countryside by foot, bike or boat on an adventure race.