Last week four of us from RubyCodeJam took the trip over the mountain to Harrisonburg, VA to join ShRUG for the evening. Alex Herron had arranged for Rich Kilmer and Marcel Molina from InfoEther to come speak. I pretty much took notes on Marcel’s presentation:
Marcel Molina gave us a talk that drew on his previous presentation on Beautiful Code to focus on some aspects of Ruby that prevent us from being more productive. He started out talking about how some things like the ability to refactor code by being able to extract a method, while a small tooling change, has led to big productivity gains in how we write our code. But, as we’ve become better at writing compact expressive code, we still keep running into constraints.
Specifically he talked about how we still need too much infrastructure to be productive. For example, why in Ruby is scheduling so hard? What can’t I write:
5.minutes.from.now do some_big_method end
and let the Ruby runtime handle that scheduling? We keep using tools to make custom daemons, or use BackgroundRB, or setup external job tools like cron.
Another example is persistence of objects. ActiveRecord is amazing, but it is still a translation layer over RDBMS. I mentioned Madeleine as a potential solution, and asked why it wasn’t more popular. The group feedback was that it wasn’t sufficiently robust, and required you to adopt the Command Pattern for persisting your data.
Lastly Marcel talked about how come doing threaded programming wasn’t easier. In his mind, being able to parallelize your code is something that the compiler/runtime should be doing, and you shouldn’t have to think about if some tasks can be done in parallel.
Marcel talked about “big” topics, and that was great. It was very inspirational to hear thoughts on how we can become better developers, how we can enhance our environment to be better. The venue (a microbrewery!) was awesome, and it was great to meet other Ruby folks.