So you didn’t make it to GoGaRuCo in San Francisco this year. That’s okay. We’ve got you covered. The wonderful Confreaks team has already made all of the session videos available. And if you have nine hours to spare you should watch each and every one of them. If you’re anything like me though, your “to watch list” never gets any shorter. Read on to discover a few of our favorites if you don’t have time to watch the entire conference.
The Best in Show award goes to Heather Rivers for Linguistic Potluck: Crowdsourcing Localization in Rails. If you only watch one session, make it this one. You’ll learn about linguistics as well as Rails internationalization. Heather had a great stage presence, clear slides and a surprisingly interesting problem to solve. What makes this session all the more impressive is that this was Heather’s first time speaking at a conference. If you’re looking to do heavy internationalization work, then you should be looking at the Rails engine Tr8n.
Avdi Grimm’s session Code to Joy had the highest code to slide ratio of the conference. Avdi explored some hidden gems within Ruby (no pun intended) that make writing code a joyful experience. Watch his presentation for some insight into the splat operator, implicit splatting and to_ary. If you’re looking for a dead simple datastore, then YAML::Store is a great choice. But if you need a little more speed and aren’t concerned with reading the file, take a look at PStore instead. To turn any “collection” into an Enumberable with to_enum, you’ll just need an each method. Then you can use all of the magic Enumerable has to offer. You’ve likely used break within a while or loop block, but that’s just the tip of the iceberg. Forwardable gives you the ability to delegate methods to another object and method. Here you can give your objects a custom interface without having to do the heavy lifting.
People Patterns from Joe O’Brien reminded us of the human component to software development. For all the time we spend making technical decisions, we should remember that projects and companies don’t fail or succeed because of technical reasons. That’s not to say we should spend less time making technical decision, but rather that we should spend more time working on the human decisions.
Joe Kutner told us why we shouldn’t be afraid of JRuby in Deploy, Scale and Sleep at Night with JRuby. Using JRuby doesn’t mean you’ll need to write Java or XML, all it means is that you are running Ruby on the Java Virtual Machine. Running an MRI application on Passenger or Unicorn poses a couple issues including memory growth, requiring shared session state and managing database connection pools. Joe identifies the GIL in MRI as the root of these pain points. His suggested solution is to use a runtime that doesn’t have a GIL like JRuby. That’s not to say switching to JRuby will instantly send rainbows flying out of your application. You’ll need to get your app to be compatible with JRuby first. The biggest hurdle to overcome is resolving any dependency conflicts you may have, but luckily the JRuby-Lint gem can identify those for you. The way you deploy your application may change a bit as well, but that’s likely a minor consideration. If you want even more JRuby, then be sure to watch High Performance Ruby from Charles Nutter.
Carina Zona challenged us to rethink our schemas to better reflect the real world. Her insightful session highlighted the assumptions we make about the world, particularly about relationships and sexual identity, through our technical decisions. When designing our applications, we should focus on modeling the world as it is, and worry less about how we’ll store and query the data. We can extrapolate out this idea further when thinking about software design. Instead of viewing our applications as interfaces to a datastore, they should be interfaces to our world. Storing the data is the easy part, writing our applications so that they are flexible to our dynamic world is much harder. (If you’d like to learn more about this topic, you should also check out Sandi Metz’s talk Go Ahead, Make a Mess.)
Today’s monolithic Rails applications are a little like a “… mule with a spinning wheel. Nobody knows how we got it and danged if we know how to use it.” If you’ve spent a couple years doing Rails application development, you’ve almost certainly worked on an app of this type. Jack Danger Canty shared Square’s experience in Mega Rails by taking their monolithic Rails app down into smaller services. Jack rephrases Conway’s Law as “the shape of your people defines the shape of the products they make.” Ownership is the linchpin to tackling the monorail. Give a team clearly defined ownership of code and build interfaces around that ownership. Just as we write DRY code, we should be working in DRY teams.
Cargo Cult Web Performance Optimization, presented by Ilya Grigorik, was a call to arms to understand what’s going on in the browser. This is especially true if you are working on rich client-side applications. While we have a strong understanding of how the server executes our code, we also need to have a deep understanding of how the client (browser) executes our code. Don’t look at the browser as a black box, but instead start to look at it as a full operating system that your applications run in.
New Relic was proud to be a sponsor of GoGaRuCo 2012. And we’re already counting down to GoGaRuCo 2013. See you there.