RailsConf 2012

RailsConf has always been one of my favorite conferences since I started going to it in 2007. I have been primarily a Rails developer since late 2006, long before coming to Hulu. I’ve seen it transition from a promising upstart to the platform it is today. The influence of Rails has been huge. The ideals of Rails – convention over configuration, DRY, test first, and agile are quickly becoming pervasive throughout software development.

As Hulu has been built with Ruby on Rails since the beginning, we decided to give back and sponsor this year’s RailsConf 2012 in Austin. We had seven Hulu employees at the conference. Our web site as well as several services are built with Ruby on Rails.

We gave a talk Building Asynchronous Communication Layer on our project for programatically managing devices like PlayStation 3 and Android mobile phones. The project allows us to do things like automate playback testing. The technology used to build the framework includes XMPP, JavaScript, and Ruby.

Here’s my daily summary of the events:

Day 1

The morning opened with David Heinemeier Hansson’s keynote. He talked about progress both for us as programmers and the Rails community. He stated that it’s ok to disrupt and to not get too comfortable, and emphasized that new programmers to the platform really need to learn even if it is hard or you make mistakes… I’d agree strongly with that. I’m not a fan of creating artificially easy on-ramps. I want to see Rails include anyone that wants to join but at the same time I expect that developers learn the right set of skills. Some of the talk was a bit preachy, but the sentiment of not settling and accepting change are good advice.

The next talk I went to was Sarah Mei’s presentation on Backbone.js. It was a very well done talk. Sarah is an excellent presenter striking a good balance between content and moving the audience through the topic. She gave a quick tour of what Backbone.js is about and did a nice job of relating it to the Rails structure. She did such a good job I was starting to think maybe I should look at this framework much closer as a solution for my own projects, but then at the very end she sort of torpedoed the entire talk saying that she probably wouldn’t use it anymore. I appreciate the honesty but it was kind of a surprise given the strong case she made the previous 45 minutes.

I went to Mark Bates’s talk on Coffee Script as I’m already a believer so this was not really new. It certainly reinforced how great Coffee Script is and I think Mark convinced at least one of my teammates to consider it seriously.

I hit the first major speed bump at Andy Maleh’s talk on Rails engines. He did little to convince me to look at Rails engines. His solutions using engines sounded more like hacks to me as I didn’t see a clear path to code reuse. It felt like trading one complexity for another.

John Bender’s talk on Progressive Enhancement for Mobile Web was next. John is active with JQuery Mobile. He talked a lot about the state of targeting mobile browsers and had some very particular scorn for Android (as he said the “new IE”). One thing I wish he would have talked about more is progressive design since he talked almost exclusively about segregating mobile from desktop browsers. I think it is time to be thinking mobile first with progressive scaling up. It’s disappointing to see separating a mobile site from the main site.

Finally, the closing keynote for the day was by Rich Hickey. Rich talked about simplifying but not from the programmer’s perspective. He had a lot of great points – we often design software to make our lives as programmers easy but not necessarily the user. The tone of his talk though came off a little sanctimonious as I would have liked a little more acknowledgement of the pragmatism that often leads to the decisions we make.

Day 2

Aaron Patterson presented the keynote in the morning. He didn’t try to compete with his over-the-top presentation from last year. Aaron was downright subdued compared to his previous talks and seemed to be encouraging a bit of a back to basics appeal, talking about normalizing things like the queue interface in Rail, etc.

The first talk I went to on the second day by Mike Moore on presenters and decorators. Mike gave a great talk with good takeaways. He did an excellent job breaking down the decorator, presenter, and mediator patterns. It was great timing for me as I’ve been looking at these very things for a project I’m doing now.

Next was Ilya Grigorik on making the web faster. This was a good overall talk on leveraging a number of tools and techniques. Since Ilya is a Google engineer, he was heavily biased to the Google tool kit, but his advice was valid despite what toolkit you might use. A key take-away was focusing on perceived load time for the user over most other performance metrics. It’s a really good point: the user’s experience trumps most anything else.

After lunch, I attended Will Leinweber’s talk on schemaless SQL in Postgres. There are some pretty amazing things coming to PostgreSQL, like the new key value hstore. They are also integrating V8 into the programming space of Postgres which opens up some new scenarios that compete directly with solutions like MongoDB. It’s early for much of this, but it’s a very forward looking approach for Postgres to be taking.

My colleague Steve Jang and I presented a short tour of our automation project for Hulu devices called Bender. We use XMPP, Ruby, and JavaScript to create a communication framework for controlling devices and running scripts. I think the talk went well, but we weren’t sure if the material would be useful to people or not. People had some great questions and so it was great to get a conversation going on projects we have here at Hulu.

Day 3

Yehuda Katz talked about The Next Five Years for Rails. Honestly, Yehuda’s talk should have been the day 3 keynote since I think it was the most honest and informative talk of the entire conference. Yehuda did a great job calling out what it is about Rails that attracted all of us to the platform in the first place. He said (and I agree) that the next big thing should be making Rails just as good for JSON API services as it is for HTML. It’s a mixed world more than ever; building web services whose clients are primarily mobile devices only is increasing.

Nick Quaranto had a great tour of Basecamp Next: Code Spelunking. It was actually nice to see that 37signals has some of the same kinds of tradeoffs in their software as everyone else. One of the big takeaways was to always be pragmatic about things like changing data stores. There were numerous things I want to investigate including all the cool JavaScript console tricks, using GitHub for API documentation (see 37signals BCX API), and the strong parameters gem.

Jared Ning had a nice overview of minitest. If you hadn’t seen it before, it was a good tour of what minitest is about and how it draws from both Test::Unit and RSpec. I’m already in the minitest camp so there wasn’t a lot new for me. I liked the explanation Jared used to talk about mocking and stubbing. I agree with his advice – use mocks and stubs sparingly and only after you test against the real thing.


Overall, it was another great RailsConf. As a developer that switches among multiple platforms and languages, it’s always great to dive into my favorite language: Ruby. Rails feels to me like it is continuing to mature. It’s moving a little slower now, but I think that’s to be expected. There is still lots opinions among the faithful and that’s healthy. As always, I look forward to apply what I’ve learned to our own projects.

It was great to share what we are doing with Ruby and Rails at Hulu. We would love to talk to anyone passionate about Ruby (as you can see from our list of jobs). I’m glad I got a chance to visit Austin, but I’m definitely looking forward to going back again when the conference returns to Portland.