A fortnight ago I flew to Edinburgh to attend Scotland on Rails. In spite of his best efforts, I managed to persuade my friend John Conners to come along too, so that he could find out why I've been nagging him to take a look at Ruby on Rails for years. Although John’s an experienced software developer with C++ and .NET under his belt, I thought he might find it interesting to learn more about a dynamic and purer OO language such as Ruby.
I'd only been to Edinburgh once before, on a day trip with my parents about twenty years ago and I'd forgotten what a beautiful city it is, albeit very cold in March! There’s lots of great architecture with wide streets and imposing buildings. It’s definitely worth a visit.
The conference itself was held over two days at the University of Edinburgh. John and I also attended a charity tutorial day, in aid of CHAS, a very worthy cause for which the conference raised over £7,000.
The speakers on the charity tutorial day were Chad Fowler and ex-Rails core team member Marcel Molina, both of whom donated their time for free. These guys are both big guns in the world of Ruby and Rails, so it was great to hear them speak. Although billed as an introduction to Ruby and Rails, it was actually mainly a talk about Ruby’s metaprogramming facilities, with demonstrations of some of the neat things Ruby lets you do. Chad and Marcel are great speakers—in spite of being jet-lagged—and had an engaging way of bouncing ideas off each other. I learned a lot from this day, particularly about Ruby’s binding and block mechanisms.
The first day of the conference proper opened with a keynote from Marcel Molina, who explained that where previously he might have conveyed some expert knowledge of Rails itself, there are now so many resources available for getting that information that the only unique insight he could really offer was stories from the early days. So that’s what he did. We were regaled with tales from the genesis of Rails, illustrated with various postings that David Heinemeier Hansson made to the Ruby newsgroup as he learned Ruby and started to grow his framework. It was actually kind of fascinating to see how it all came about and to see the evolution of DHH’s abilities.
Next, we attended a very fast-paced talk from Scott Chacon about the Git version control system. This was mainly for John to realise that not only should he be using Rails, but he should also be using Git instead of Subversion (!) and Scott presented plenty of compelling arguments for doing so.
Rails core team member Yehuda Katz talked about the forthcoming Rails 3, which will bring with it a substantial refactoring of the framework so that it becomes more modular, more performant and incorporates the best ideas from Merb. It was interesting to compare the approach of not being afraid of breaking things in order to correct old wrongs with the Microsoft approach of maintaining backwards compatibility at all costs.
After lunch we went to a talk by Evan Light on Test Driven Development. Sadly, I found this talk to be content light and just didn’t get much from it. Maybe my mind was still on my lunch, but it just seemed to be a lot of stating the obvious.
Far better and more entertaining was Joseph Wilk’s presentation on using the Cucumber BDD testing framework, which lets you describe how your application should behave in plain text and execute tests against that description. Cucumber looks worthy of further investigation, I think.
Abdel A. Saleh gave a talk from the trenches about how the BBC use Rails for their Programme Information Tool (PIT), which provides programme metadata to their iPlayer software amongst other things. Abdel gave the impression that the whole thing is a bit of a nightmare because PIT has to integrate with lots of legacy applications and there’s little scope for doing the sorts of things that Rails is famous for being good at. In spite of this, there is a strong impetus from the people involved to continue to use Rails because they like it so much.
The last presentation of the day was perhaps the most interesting one. Scott Raymond spoke about his experiences of building PackRat, an intriguing card collecting and swapping game on Facebook. This was a talk jam-packed with detail about what it takes to build and run a Rails application with ~30,000 users that services about twelve million requests a day (hint: it all runs on Amazon’s infrastructure).
The final day of Scotland on Rails opened with a keynote from Michael Feathers. This was a thought-provoking talk that looked at the evolution and dare I say it, maturation of the software industry and compared and contrasted the whole spectrum of different software communities that Michael has worked with, ranging from the Microsoft world to the open-source world.
After the keynote we went to hear Rory McCune tell us how to make Rails applications more secure. The good news is that Rails does quite a lot for you in this area out of the box. The bad news is that as application developers we still have to do some work ourselves. A good starting point on learning more about this subject is to read the OWASP Top 10 and Rory’s blog.
Jonathan Weiss gave a fairly dry presentation on deployment strategies and configurations for Rails applications. To be frank, I don’t really remember much else about that session!
A personal highlight was hearing the original Programatic Programmer Dave Thomas explain the Ruby object model. Although I'd already seen most of this material, I still got a lot from this session because Dave is an excellent speaker. It reinforced some important ideas about how Ruby is a true OO language in the Smalltalk tradition, whereas Java and C# are really Class-Oriented languages. I found it particularly interesting to see how many people in the room didn’t know that Simula 67 was the first object-oriented programming language and didn’t know who Alan Kay is and why he matters. Perhaps everyone was just shy.
The best two sessions of the final afternoon started with Cory Forsyth doing some serious image manipulation using Ruby. He demonstrated the amazing Seam Carving algorithm, also known as content-aware image resizing. I believe this is a major feature of the latest version of Photoshop and it was really quite interesting finding out more detail on how it actually works and watching the impressive demonstrations. John was in his element here, having come across a lot of these image manipulation techniques whilst developing John’s Background Switcher.
The biggest laughs of the conference came during the wrap-up session by Joe O'Brien and Rake author Jim Weirich. This took the form of a live code review…with a difference! Jim played the straight man who was undertaking the code review and Joe played the client with some awful code that used and abused Ruby’s metaprogramming power. It was a very cleverly constructed talk that was simultaneously hilarious and educational. Look out for it if the conference video is made available, you won’t regret it!
Scotland on Rails was a very enjoyable, interesting and useful conference, perhaps less intimidating and friendlier than last year’s RailsConf Europe, although I did have a great time in Berlin too. It was also a very well organised and run event and still a nice size, in spite of having approximately twice the number of attendees as last year’s event.