RailsConf 2013 was held in our hometown of Portland, Oregon. Most of us had been to RailsConf at least once before, though it had been a few years. The Rails ecosystem has really matured since then, and maintainability and APIs dominated many of the talks instead of social networks and new toolkits. There were many good talks and speakers, but a few truly exceptional ones that we really enjoyed. So we each selected our favorites and suggest anyone that couldn’t go this year should check these out online at Confreaks They should be posted shortly.
Carl’s Favorite talks
Pry — The Good Parts! by Conrad Irwin (@conradirwin) – I’ve only used a fraction of the power available here before. Definitely plan to make Pry a part of projects from now on. Combined with the BetterErrors gem, debugging a rails exception in development should be quite a bit easier and faster.
Cache = Cash! by Stephan Wintermeyer (@wintermeyer)- He gave a great talk about the benefits of aggressive caching, and it really should be used by default more often, rather than used as performance boost after the fact. I think “Don’t forget foreign key indexes or caching of views” should become a performance mantra. Quite a bit easier in Rails 4 due to some adjustments on how cache keys are calculated. But need to check on how that works with I18N, as there is a bit of a gotcha to consider if you use it in your app: https://github.com/rails/cache_digests/issues/9
Delicious Controversy: Docs & Tests by Thomas Meeks (@thomasmeeks) – This talk was interesting to me because he went over the issues involved with maintaining a large codebase and introducing new developers to it. Both in how you write specs and how you document methods. He talked about his own experiences with having too many specs in a project and that they aren’t a good substitute for docs. How much do you make a new developer read before they made what seems like a smallish change to a project they aren’t very familiar with? How confident can they be about unintended consequences?
Changing the wheels on the bus at 80 mph: upgrading to Rails 3 on an active master branch by Andrew Bloomgarden (@Aughr) and Julian Giuca (juliangiuca) – As I work through some of the same issues for upgrading long running applications that New Relic did in their talk, I was curious as to how they handled this with active development going on. After seeing the way they used ruby to allow multiple gem files and gem lock files to exist side by side made me think about these files in a different light than I had previously, along with how bundler uses those files to load dependencies.
Neil’s Favorite talks
It was my first RailsConf, so I didn’t really know what to expect. I found it to be a pretty impressive four days of personalities and content. I got to meet a lot of people. It had a very community driven feel, which is a bit different coming from a Microsoft background. You could tell all of these people care a lot about what they are doing and are really striving to make the community a rich place.
I liked the talks that hit the high level information at points, and hit the lower level stuff at other points, that could include technical details, abstractions, but also practicality and business level in the space of about 45 minutes.
Sleeping with the enemy by George Brocklehurst (@georgebrock)- I really enjoyed this talk. He was a low key speaker, but a natural speaker with a good sense of humor and what he discovered in his jumps between the Ruby and Rails Community and the Python and Django community. I haven’t used Django very much, but recently I’ve heard really good things about it. We don’t do Django here, so I’m not sure how directly useful his comments will be, but it was a unique perspective because I don’t think a lot of people develop with both frameworks. But in some ways they handle the same sort of things, so it was interesting to see where they differ.
Firefighting on Rails by Ethan Vizitei (@EthanVizitei) – It was one of those talks that I was talking about before that was high level at points, low level at other points, and was a case study that showed how he handled creating software for his fire department. He stepped through the problems they were having and explained the business side of civil service and how many times these local departments don’t have the funds to have sophisticated software that are written by large companies. He also hit points about how your software is useful to people who don’t know a lot about software and how you can improve their lives. I liked it because it was an interesting use case and he was a really good speaker.
Zero-downtime payment platforms by Prem Sichanugrist (@sikachu) and Ryan Twomey (rtwomey) – They outline the tradeoffs you have to make between cost, performance, and uptime, and a complex system. These guys are a payment system so they are dealing with a lot of dependencies and even if any of those dependencies go down there needs to be a backup for that, and I liked it because it was a focused talk, talking about one particular problem, redundancy, and they talked about dependency management in a sophisticated application, but it also touched on a lot of different system; a lot of different failure points. Cloud services, Payment Gateways, their own application, in an approach I hadn’t really encountered before, in having a main application, and a Sinatra application as a sort of fallback for a sort of “support buddy”.
Aaron Patterson’s keynote (@tenderlove) was really good. I’ve seen some of his stuff before and there aren’t very many people that can talk to you for about two hours and there were no points where I was zoned out, and that takes skill as a speaker to be sure. He’s hilarious, and there were points where he go into the meat of Rails that I wasn’t very familiar with. I was aware of the Rails security vulnerability, but I wasn’t aware of the process they used. I wasn’t aware that symbols aren’t garbage collected for example. That’s pretty important. It was like the other talks that I enjoyed that pulled in a little bit of everything.
Carlos’ Favorite talks
Simple and Elegant Rails Code with Functional Style by Attila Domokos (@adomokos) – It was interesting to see how he approached creating services off of longer methods to make things simpler to maintain. I think that was a popular motif at RailsConf this year as applications age. “How do I maintain a codebase that we’ve inherited that’s been around for a long time.” Or, “How to take a complex system and make it simpler, easier to test.
You’ve got a Sinatra on your Rails by José Valim (@josevalim) – He gave a good talk by starting out with a Sinatra app and starting porting classes and modules over from Rails to make it more Rails-like which helped explain what controllers and models are actually doing in Rails. I don’t think you’d do it this way in practice, but by showing how you can do it, there was a better understanding of how Rails handles these things internally. I think it is something that he covers in his book, Crafting Rails Applications, which just came out in May as a beta release.
The Magic Tricks of Testing by Sandi Metz (@sandimetz) – As usual, her talks are excellent. I was first introduced to her by a talk she gave at a conference about the SOLID principles and applying that to Ruby, so I bought her book, read it, and became a fan. Some of the code samples were the same [as in her book] and it was good to attend a talk and cement that information in your head and how she approaches testing methods, and testing messages that are sent or received by that object, whether to another object or itself. If she gives a talk at another conference and I’m there, I’m definitely going to see her again.
Data Storage: NoSQL Toasters and a Cloud of Kitchen Sinks by Casey Rosenthal (@caseyrosenthal)- I met Casey at RubyConf 2011 in New Orleans. His talk was good because he went into the top 10 most popular NoSQL implementations out there. He kind of explained what each of those implementations strengths are and why you would want to choose one over another. I feel like I’m better equipped to evaluate the different options now if a client is insisting on a NoSQL database for a project now.
Using Elasticsearch with Rails Apps by Brian Gugliemetti (@briaustex)- So a handful of our clients use a fulltext searching engine, and those implementations are Sphinx related, so it was interesting to see a different approach to searching, and elastic search has gathered a following in the recent months/years, so it was interesting to see how that works and how we might apply it to existing projects that might be outgrowing Sphinx.
How to Talk to Developers by Ben Orenstein (@r00k) – On the last day I went to this talk, and when I first glanced at the talk description I thought it was going to be about how to talk on an interpersonal level between developers, perhaps overcoming shyness or something like that, but it was basically about how to present to developers and how to give a presentation to them. The reason I choose his talk is I saw his present at a Ruby conference and I really enjoyed his presentation style. So it didn’t matter what he was going to talk about, I was going to go see him present anyway.
It was packed with information, but he mentioned you should be more entertaining than informative. If you start your talk out by saying who you are, and how you work for, and all this other data by the time you get into your talk 10 minutes in it is possible a lot of the audience has checked out. Not only are you fighting for their attention, you are fighting the internet because everyone has their laptop, or iPad, or smart phone so you have to be more interesting that that. He brought up some of his co workers to help explain the Law of Demeter as an example of how make something interesting that could easily just turn into a memory dump.
At the end of his talk he asked if anyone had a birthday today and had all of us sing happy birthday to them as a group. Afterward, he mentioned he was involved with a choir of some sort in Boston I think it was, and he gave us tips on how to stand when we are singing, how to breath, etc and then asked us to sing again. We did just slightly better the second time. It was slightly awkward, at least for me, to sing in front of a group of my peers, but that worked for his talk, and if I’m ever at a conference where he’s presenting, even if it is about snails or something, I’m going to see it.
TDDing iOS Apps for fun and profit with RubyMotion by Brian Sam-Bodden (@bsbodden) – I bought RubyMotion, I installed it, and then I never did anything with it, but I still want to do something with it. I think there’s a movie about it that’s an hour or two long, but I haven’t invested the personal time yet to go to watch that, so by being at a conference where someone was tlaking about how to make an iOS app and how to use test driven development with it it was great. I got a lot of solid information from him that I can go apply directly to a project. I also saw him use a cool tool called git-presenter that allowed him to easily show the audience the stages that his project went through by jumping to different commits. It isn’t related to RubyMotion, but it was also really cool to see that tool as well.
I would be remiss in not mentioning Aaron Patterson’s keynote (@tenderlove). Although it wasn’t a “talk” necessarily, I think he’s one of the most engaging speakers out there as far as the community is concerned. He isn’t one of those speakers that’s overflowing with confidence and beaming with positive energy, but he’s one of those people that makes me feel, “I’m just like him. I’m nerdy, I’m geeky, and I’m scared shitless when talking to a room full of my peers. When he tells a joke he does the nervous laughter afterwards, but it makes me say he’s one of my peers instead of putting on a pedestal, saying he’s one of the Rails core committers, he’s a Ruby core committers, he’s like a god and we have nothing in common with him.” His presentation style really connects to the audience and he had a lot of humor in it, and technical information, like what’s been taken out of Rails 4, and what’s going to be in it, because RC1 was released during the conference, so the full release will be popping soon. I wish he had spoken at a morning keynote, because I think a lot of people might have dismissed it because it was just a closing announcement and afternoon keynote. It was a really good way of closing out the conference.
Robby’s Favorite talks
How Shopify Scales Rails by John Duff (@johnduff) – They printed up the New Relic SQL queries that were running on slow pages and people crossed them out as they took ownership of them so people could see how people were collaborating on actually fixing this stuff. New Relic doesn’t provide any tools for actually fixing these issues, they just show up where the issue are at. If I was going to go out and try to compete with New Relic, that’s something that I think would be really beneficial to developers. They also covered basic SQL stuff, like avoiding temp tables, making sure your ORDER BY is in your GROUP BY clause. And with MySQL sometimes you need to explicitly tell it skip some indexes because that can cause performance issues.
Designing great APIs: Learning from Jony Ive, Orwell, and the Kano Model by Jon Dahl (@jondahl) – That was a great talk. I think it was less specific to API design than it was about great communication. I feel like it could have applied to documentation and a lot of other things as well.
How to Talk to Developers by Ben Orenstein (@r00k) – It was an entertaining talk. He had a few examples that kept the audience engaged, and gave good tips on body language and posture, like how to be open to your audience, and not reserved, don’t put both hands in your pockets, don’t step away from your audience when you’re asking a question.
Gary’s Favorite talks
The Magic Tricks of Testing by Sandi Metz (@sandimetz) – I think Sandy has a great way of talking where she can explain somewhat complex subjects in a very clear way. I think that’s a great skill to have because I think many very skilled people are great at what they do but can’t explain things in a simple way. And she doesn’t come across as patronizing, she just does a great job. I liked her way of explaining why you would and why you wouldn’t test certain things where she was using the shuttle in space, and I think she was the best speaker at the conference by far, and it finally motivated me to pick up her book.
Designing great APIs: Learning from Jony Ive, Orwell, and the Kano Model by Jon Dahl (@jondahl) – I think it was good because he drew on some others, such as Dieter Rams, talking about simplicity clean design and applying it to your API design. It was a fairly generic thing, but you could apply those principles to anything effectively. It made people think about how you communicate with other people because nobody wants to work on a poorly designed API that’s hard to understand and poorly documented.
How to Talk to Developers by Ben Orenstein (@r00k) – That was the most fun talk I went to at RailsConf. He pointed out some things, for example being funny without resorting to memes because everyone puts some sort of cat into their slides, and that’s just unoriginal. He had people standing up and singing by the end, and the idea being that when people are engaged they learn more. If your talk is boring, people aren’t going to learn anything. It answered, “How do you keep people from being bored, especially if it is about things they already know?”
With more projects using Rails every year, features being added, and libraries changing, the focus of the community shifts. Five years ago the Rails community was focused on social networking and novel implementations of new features. Now, however, It seemed more focused on maintaining aging apps, integrating data through APIs, and incremental improvements in features and functions.
Confreak presenter links for speakers and Twitter handles:
@conradirwin Conrad Irwin
@tenderlove Aaron Patterson
@sandimetz Sandi Metz
@caseyrosenthal Casey Rosenthal
@briaustex Brian Gugliemetti
@r00k Ben Orenstein
@wintermeyer Stephan Wintermeyer
@thomasmeeks Thomas Meeks
@Aughr Andrew Bloomgarden
@juliangiuca Julian Giuca
@georgebrock George Brocklehurst
@EthanVizitei Ethan Vizitei
@sikachu Prem Sichanugrist
@rtwomey Ryan Twomey
@adomokos Attila Domokos
@josevalim José Valim
@bsbodden Brian Sam-Bodden
@johnduff John Duff
@jondahl Jon Dahl