Ten things I hate about Rails

I went to Munich the weekend before last for my third Euruko (European Ruby Conference). It’s something of an unconference in that the schedule is decided on the day and anyone who wants to speak can do so. A lot of people were using what can most politely be described as ‘just-in-time’ processes to prepare the accompanying materials for their talks—myself included!

My talk on ‘Ten things I hate about Rails’ was well received (and called probably the best one that day).

Every time I give a talk, I realise that the year I spent classroom teaching in Japan was really useful. I also realise just how similar teaching six-year-old kids and talking to a technical crowd is!

I reprised the same talk at the London Ruby Users’ Group last night, with a little more polish: in addition to the practice, I’d improved the slides slightly. It went down well, judging by the audience and the questions at the end.

Despite the inflammatory title, the actual talk wasn’t really vitriolic—but if I’d called it ‘A few minor inconveniences in Rails’, it wouldn’t have sounded nearly as good! I think that I succeeded in pitching it where I wanted it: light-hearted and not too negative, but with enough serious content to provoke analysis and constructive criticism of the Rails framework.

This talk was the first that I had given using the S5 slide show system. S5 is an HTML and JavaScript system that is actually a bit long-winded to write in, so I built a little preprocessing system to make simple text files into multi-page presentations with code syntax highlighting. I’m still not entirely proficient with S5, but I was able to get it to do what I wanted in a way that was far easier than a ‘real’ presentation package would have been.

I don’t know how well the slides work on their own without the accompanying talk, but I’ve uploaded them for those who are interested. What may be more universally useful is my Rake-driven text-to-S5 workflow, for which I’ve included all the files in the same archive. You can download the presentation and source files.


  1. Thijs van der Vossen

    Wrote at 2006-11-15 09:05 UTC using Safari 419.3 on Mac OS X:

    Safari things the encoding is ISO-8859-1 instead of UTF-8. You might want to add a meta element that sets the content type.

    Any chance of recording the next time you give this and post the audio online? The slides are hard to follow on their own even though they look great.
  2. Paul Battley

    Wrote at 2006-11-15 10:21 UTC using Firefox 2.0 on Mac OS X:

    Thanks, Thijs. I’ve made that change and uploaded the updated files.
  3. Victor

    Wrote at 2006-11-16 16:50 UTC using Firefox on Mac OS X:

    Thanks for sharing the slides, Paul.

    I second Thijs. Audio (or summaries embedded in the slides) would be a great addition.

    And what’s your beef against ‘acts_as*’ and specifically ‘acts_as_ferret’ ?

  4. Paul Battley

    Wrote at 2006-11-16 17:07 UTC using Firefox 2.0 on Mac OS X:

    You’re right. Audio would have been great, and I did think about it—but I don’t have a suitable microphone. I suppose I could have tried to record it using the built-in microphone on my notebook, but I didn’t, and I’m not sure how well that would have worked. If I can find the time, I’ll try to record a soundtrack at home.

    My ‘beef’ makes me sound like a feuding hip-hop star: I hope that I’m not going to be the recipient of a drive-by shooting from DHH’s crew!

    The issue with ‘acts_as_*’ is that, in many cases, it’s a poor description of what a plugin actually does. It has become a Rails cliché, but it’s often not very helpful. For example, while ‘acts_as_list’ is well-named, ‘acts_as_ferret’ doesn’t make a model crawl up your trouser leg! Something like ‘index_with_ferret’ would be more meaningful. I just picked on ‘acts_as_ferret’ as one of the more humorous examples, but it’s far from the only offender.
  5. Amr Malik

    Wrote at 2006-11-30 01:23 UTC using Firefox 2.0 on Mac OS X:

    I think this would be awesome with an audio track!

    I think we techies need to draw the line between scratching our own itches and being slaves to our fetishes. Sometimes I think meta-programming has become the criterion for establishing the “new pecking order”. Hence the use of metaprogramming with reckless abandon etc. :)

    I mentioned this on Jamis’ blog entry about find as well. Some of the find methods could use some short-circuiting love. Using the general case machinery to do very specific things like find(:first) is a bit in-efficient IMO. But I’m not a ruby programmer by trade, so that kinda disqualifies me from being too critical ;-)

    Thanks for sharing the presentation.