I'm in the final hours of my first RubyConf, the annual international conference for rubyists being held in Charlotte, NC this weekend. There's been way too much information for me to possibly absorb completely, but the exposure to the community, the attitudes and thinking, and the possibilities people are exploring has certainly been a wonderful phenomenon to experience. I'm also seeing that I really haven't even scratched the surface of ruby - there's much more for me to learn than I suspected in my most pessimistic estimates.
Conference highlights (from memory) are as follows:
Jim Weirich's talk on Advanced Ruby Class Design. I was struck by his focus on the
problemrubyist's essential dillemna / task of thinking outside the box when approaching a problem. Using rake and other examples, he showed how Ruby makes possible ways of coding that make the old, standard Java-esque OO approaches obsolete and unnecessarily one-dimensional. This is something I constantly struggle with, because I get used to solving a class of problems in one way instead of looking at each unique problem as an opportunity for a creative and expressive Ruby solution. I need more experience with a variety of Ruby projects: I learned more about Ruby by doing a scripting program over a week or two for a buddy than I have in 1.5 years of Rails coding.Ben Bleything on Controlling Electronics Using Ruby was damn cool. This is an area I've been trying to get into for a while. I've wanted to do a custom security setup tied to my home computer ever since I did it professionally at NetTalon. I really feel like Ruby could make it fun, but I dunno - I'm easily frustrated and electronics seems frustrating. But it's awesome to see support out there for rubyist electronics hobbyists.
Evan Phoenix on Rubinius, a new virtual machine for Ruby, was cool. He seemed to focus on the challenge of implementing as much of the language source in Ruby, which strikes me as the perfect OO approach. It's very exciting.
Luke Kanies on Essential Incompleteness in Program Modeling was my favorite presentation. Where Weirich talked about the need to approach problems differently, Kanies introduced one way to find new approaches: look at solutions to similar problems in science and math. He invoked examples from biochemistry, physics, and fractal geometry to help demonstrate a way to constrain the scope of research into solutions, make good use of your effort and energy, and more - I need to watch the presentation again (or another two times) and read the books he suggested. It promises to be a key to real strides in my programming style.
Laurent Sansonetti is an Apple OS X engineer who gave a presentation entitled Mac OS X Loves Ruby. He demonstrated Leopard's unprecedented support for Ruby. Highlights were DTrace (you can read more about that elsewhere) and RubyCocoa, a bridge between Ruby and Cocoa that looks insanely powerful when combined with Interface Builder. I'm not an Apple fan boy in the least, but as a Mac user this stuff was definitely cool. It's nice, I guess, to see rubyists' loyalty to Apple reciprocated in some way.
Matz's keynote was awesome. I have a problem with accents, but what I could understand was really enjoyable. Matz is funny and demonstrates a humility and good-natured approach to coding from which I think every community could stand to learn. I love that somebody who isn't crazy about the enterprisey destination that Ruby is heading towards who doesn't have to get all dogmatic and "opinionated" about it. He stressed attitude as the advantage of Ruby - rubyists like the way Ruby allows them to code, even if it isn't always the ideal tool for the job. People matter.
Ben Scofield gave a talk called Cleanliness is Next to Domain Specificity that tied in concepts from linguistics to DSLs and domain modeling. He offers tips on finding good ways to represent your domain and build upon your domain knowledge through the language. Very cool and entertaining.
I had a great time hanging with all my new and old friends. Props to the #rubycodejam / CVREG peeps (Jamie, Mel, Jim, Anoop, Jon), my new co-workers at Intridea (Chris, Pradeep, Michael), my old friends (Ryan, Patrick, Ben, and others from Viget Labs) and new friends (Andrew, Jay, Brian, and sorry if I can't remember you - I'm on little sleep). I did a lot of drinking, not much sleeping, and a lot of participating in great conversations. And I'm excited about a CVREG collaboration with the DCRUG as well as getting cracking on Bookmarker with Mel.
Summary: RubyConf[2007].success? #=> true
Read this article