Mountain West Ruby 2008 Review
»From the programming and ruby part of the brain.
Now that the videos are out on Confreaks, here’s my mini review. Ruby readers beware: this is my first Ruby conference since starting fulltime at OpenRain, so our levels of interest might vastly differ.
My favorite sessions on Ruby
Patrick Farley on Ruby Internals. Patrick gave a great overview of how C-Ruby works. He started out by explaining about the relationships between several C structs, such as RBasic and RObject, which he then used to explain the magic behind Ruby’s runtime object hierarchy. A fascinating talk, if you’re interested in the nitty gritty internals of Ruby. Makes me appreciate the work being done by the Rubinius team on their Ruby virtual machine.
Tammer Saleh on Behavior driven development with Shoulda. If you’re starting out with Rails for the first time and you’d like to ramp up on best testing practices, then this talk is for you. Don’t get me wrong, you’ll still need to spend time on learning the details and getting use to the develop-test (or test-develop) cycle but listening to this talk will expedite the process by pointing you in the right direction. If you’ve been working with Rails for awhile and you’re wondering what the story behind behavior driven development is, then this talk is also for you. My thoughts: you don’t need a new tool do BDD; you can get away with Rails integration tests. Think of this talk as a +8 to your Testing ability.
Phillipe Hanrigou on What to do when Mongrel stops responding. Answer: Debug with GDB and DTrace. I recently came from C++ land, so seeing Phillipe live debug a halted Ruby processes with GDB was personally useful. Even with the amazing work done by the Eclipse and Netbeans teams, GDB isn’t going away anytime soon. Phillipe also put out a PDF titled Troubleshooting Ruby Proesses where he describes strace and lsof, in addition to GDB, as valuable debugging tools.
My favorite sessions not-entirely-about-Ruby
Giles Bowkett on Code Generation: The Safety Scissors Of Metaprogramming. The premise of the talk was that, like Lisp, writing code which generates data which generates code is a Good Thing. The demo he gave wasn’t super glitzy but the ideas behind it were incredibly thought provoking. Giles is a great speaker; I know this since I was having a hard time devoting attention to my own note taking. Realizing and figuring out how the code generation in Rails works is an “ah hah” moment and a mental model you need to construct if you’re ever going to fully understand Rails. His talk will take you there. Lastly, did you notice that almost every speaker included a slide with a photo of Darth Vader-wearing a-Sombrero? That’s Giles’ fault.

Jan Lehnardt on Next Generation Data Storage with CouchDB. CouchDB is a document-oriented storage system that doesn’t support full relational models. It can replicate in real time making it highly available, and accessible over RESTful HTTP making it scalable. It’s also written in Erlang, which is the poster child for highly scalable programming.
Why might you care? Since the dawn of computing, databases have generally come in one kind of style: the relational kind. In fact, it’s a very common paradigm to use relational databases to manage all sorts of, you know, relational data. Like a database of Customers, with shopping Carts, filled with items from a product Catalog, sold by Vendors, from different States at different Tax rates. If you’re working with data and money, say terabytes of data and billions of dollars, then sometime during development, two questions arise: How do I scale all this data? How do I make this highly available for our millions of paying customers? There are a bunch of approaches and patterns which have stood the test of time, but they typically involve adding more hardware, or caching large parts of the system in memory. Both solutions also scale budgets and complexity.
There are two notable database storage systems which aren’t relational: Google’s BigTable and Amazon’s SimpleDB which is likely inspired by Dynamo. Both store structured data, neither support full relational models. Let me rephrase that: two very large software shops dealing with far more data than I do have concluded that scaling data using traditional RDBMS techniques could be easier. It’s the potential for being easier with CouchDB that excites me. As of this writing, the version of CouchDB I’m running is 0.72 and some of details in Jan’s talk is still under active development.
I hope you’re paying attention, database paradigms are shifting right now.