On Sunday I returned from two days in Edinburgh for the inaugural Scottish Ruby Conference. The event has broadened its focus and rebranded from its previous Rails remit when it was Scotland on Rails. The venue this year was the splendid Royal College of Physicians, an imposing building with an ornate interior.
This year’s opening keynote was from Jim Weirich who spent about fifteen minutes talking about one of his favourite subjects which is particle physics, drawing parallels between wave particle duality and the duality of code and data amongst other things. Jim also delved into the first chapter of MIT’s Structure and Interpretation of Computer Programs book, providing Ruby equivalents of the book’s Scheme code samples. It was a very thought-provoking opener and made me want to check out the SICP book even more.
Joseph Wilk reprised his appearance at last year’s conference, this time talking about rocket-fuelled Cucumbers i.e. how to get your acceptance tests to run faster. As ever there are no silver bullets, but Joseph showed us how to execute subsets of tests and how to distribute the load across multiple Amazon EC2 instances in order to reduce the build time from over an hour to closer to the magic ten minute mark.
Brian Marick’s talk was entitled I Think I Finally Understand Mocks and billed as how not to miss the point of mock objects. Unfortunately I must have missed the point of the talk because it didn’t teach me anything new about mocks. However, I did learn quite a bit about cows in a veterinary school, and the use of audience members to represent objects was fun and entertaining.
Rails core team member Carl Lerche was up next and gave a presentation on the new relational algebra support in ActiveRecord 3, dubbed ActiveRelation or simply Arel. Carl gave a brief overview of the new finder syntax before giving us a fairly interesting preview of some of the enhancements planned for ActiveRecord 3.1. A nice buffet lunch followed and I had the pleasure of meeting the founder and some of the mentors and developers from Eden Development, a consultancy that I have long admired with a focus on software craftsmanship and producing high quality work.
Alexander Lang talked about CouchDB and when you might choose to use a document database in preference to a relational database. A lot of this session seemed familiar to me from his presentation at Scotland on Rails 2009, although he did have an innovative and slick continuous slide deck.
After lunch I went into the magnificent library to show support for my friend Martin Evans, who was giving a presentation about using Ruby in conjunction with the Arduino range of microcontroller boards. Martin hadn’t spoken in public before, but you couldn’t tell because he gave a presentation that was interesting even to someone like me who doesn’t really know much about electronics. The highlights had to be the video of the Arduino-powered drink mixer and Martin’s live demonstration of his obstacle avoiding—sometimes obstacle seeking!—robot named Roo-Bee. It was a lot of fun.
The final session I attended on the first day was given by John Leach, who talked about some lesser-known features in UNIX that are sometimes needlessly re-implemented by Rubyists. This was a good talk that included subjects such as how to impose memory and file IO limits on a process.
The final day of the conference opened with a great keynote from Google’s new employee Tim Bray, talking about his love of Ruby and the places where Ruby isn’t that it ought to be. Tim urged the Ruby community to improve Ruby’s support for concurrency, to get Ruby into the enterprise and onto mobile devices. Tim had the best quote of the conference for me, stating that if your web application doesn’t work well on a mobile device then it doesn’t work well.
I sat at the back for the Vim for the Modern Rubyist presentation which unfortunately meant that I couldn’t hear a lot of what was being said. The presenters had my sympathy because with something like Vim it’s difficult to know what level to pitch the talk at given an audience of unknown ability. Aimee from Eden Development pointed out to me that pair programming is a great way to pick up Vim tips.
Renzo Borgatti made the brave move of doing a lot of live coding in his talk on MacRuby. As someone who used to enjoy writing Windows programs using Borland Delphi, I was hoping for a flavour of what it’s like to create native Mac OS X applications using MacRuby. Unfortunately I didn’t get that as a lot of this talk seemed to be spent debugging and I got bored. Sorry Renzo!
The Exceptional guys spoke about the ten most common errors in Rails applications based on analysis of data from their exception logging service. An amusing nugget was that they actually have three .NET applications using their service, which account for twenty percent of the total errors! They gave a useful run through of what the most common errors are and how to fix them. Unfortunately one of their speakers was noticeably more nervous than the other and they kept switching, which was somewhat distracting.
After another fine buffet lunch it was time to listen to GitHub’s Scott Chacon talk about some of the lower-level commands available in Git. I found this session pretty hard going, not because it wasn’t any good but because I was feeling sleepy after the combination of food and going outside for some fresh air! Scott is an authority on Git and gave a good example of how it can be put to uses beyond version control. For example, he demonstrated synchronizing configuration files across a set of servers based on a master copy held in a Git repository.
You’re Doing It Wrong by Tammer Saleh was a great session about common Rails anti-patterns. Tammer talked about his experiences of being brought in to companies as a consultant to fix their badly broken Rails applications and the strategies he employs to do so. For example, he logs all possible refactorings in an issue tracker so that he doesn’t get distracted from the immediate job at hand and so the client has some visibility on what they’re paying for. There seemed to be a real focus this year on bad Ruby code, but this was the best presentation on the subject that I attended at the conference.
As happened last year, the event closed with Jim Weirich and Joe O'Brien performing a role play, this time about how to get a typically conservative company to adopt Ruby and to understand the productivity benefits it brings. The actual role play wasn’t as funny as last year’s code review and Jim admitted later that it was slightly under-rehearsed. However, there was a great Q & A session afterwards with plenty of practical advice such as selling your boss benefits rather than features when trying to introduce Ruby, or anything new for that matter. The term “Architect Slayer” was also used in the context of someone who is able to introduce Ruby into an organisation past the sort of technical architects who thought that Enterprise JavaBeans were a good idea. You perhaps know the type.
An added benefit of the conference this year was that there were fifteen minute gaps between each session, giving much needed time to talk or grab some refreshment. Talking of which, it would be remiss of me not to mention the party held the night after the conference finished; what’s not to like about a room full of Rubyists, traditional Scottish dancing and a sword-fight in an amazing venue? Yet again this was a very well run and enjoyable event. Taken as a whole I think I got more out of the talks I attended last year, but that may have simply been because I made better choices. I certainly feel that I got more out of meeting and talking to new people this year, which more than made up for any slight disappointment I felt in some of the sessions.