Great sessions from RailsConf 2013

RJ Pittman
#Development | Posted

imgres-6

It's a few days since the end of RailsConf 2013, and I'd like to share some takeaways from my favorite sessions and some general impressions while they're still fresh in my mind.

Opening Keynote: David Heinemeier Hansson

In his opening keynote, Rails creator DHH announced that Rails v4.0-rc1 had launched minutes before, with a huge focus on "making things go faster".

DHH explained "Russian Doll" caching via cache_digests and an evented system called Turbolinks for loading page content dynamically without redrawing the window when a user clicks a link.

Overall, it was very interesting to see examples of these techniques, and I look forward to using them in my next Rails application. For notes on most of the new features of Rails 4, look at the release notes for beta 1.

 

Maintainable Templates: Brendan Loudermilk

View the Maintainable Templates presentation on GitHub

In this session, Brendon walked us through several methods for cleaning up our view partials. The methods here are super useful and there are definite takeaways for any language/framework.

Brendan also discussed the draper gem which adds a convenient decorator system to your Rails application.

 

Cache = Cash!: Stefan Wintermeyer

View the Cash = Cash! presentation on SpeakerDeck

In this presentation, Stefan led us through the optimization of an example e-commerce application that was running on a Raspberry Pi. The application featured a listing of products, a product detail view and the ability for logged in users to add products to their cart. Each part of the application was tested using the waiter gem, which is a great tool for browser testing written in ruby.

His initial 43 action long test script took 116 seconds to run on his un-cached application. Through a few caching mechanisms, he was able to improve that benchmark by over 6 times:

 

Caching Strategy (cumulative) Total Test Run Time
No cache 116 seconds
Russian Doll caching 45 seconds
HTTP etag 35 seconds
Cache Preheating 26 seconds
caches_page with gzip enabled 19 seconds

What I liked most about this session was that it gave a real-world example, discussed and implemented caching strategies, and presented measured results.

 

Real-time Rails: Brian Cardarella

View the Real-time Rails presentation on rvl.io

Brian gave an excellent run through of the new ActonController::Live module in Rails 4, including methods for setting up one and two-way streaming connections, as well as some strategies for making concurrent tasks in Rails threadsafe.

Web applications that previously would have been considered best suited for tools like node.js are now feasible in Rails!

Brian also demoed a real-time chat application (during the presentation!) using HTML5 Websockets, bravely tempting the demo gods by encouraging the session audience to log in and send messages in real-time over the projection system.

 

The Hallway Track & Other Takeaways

Overall, there was a heavy influence on using Rails to power applications that are rich on the client side; this was extremely evident by the sheer volume of talks about real-time applications, and js framework integrations, as well as the work that has gone into Rails 4. Redis, Memcached and Ember.js were all also reoccurring themes, and despite it not being mentioned directly in any of the sessions I attended, AngularJS kept coming up in conversations with other attendees during lunch and in the common areas.

The hallway track was also quite interesting, as we met with enterprise folks who are migrating from using Java to Ruby and Ruby on Rails for their enterprise web applications. This switch in perception of Rails in business is probably a welcome change for enterprise application builders, and it seems like Rails is making serious headway into that market.

Finally, thanks so much to my staff leads, project managers, coworkers, VPs and everybody else who made this trip a reality. The conference was an amazing experience and I learned a ton. I look forward to implementing and sharing as much as possible to continue to grow our Ruby discipline at Phase2.

RJ Pittman