RubyConf 2005, the wrap-up
RubyConf 2005 is over, and I’m hanging out in Berkeley at my friend Seng’s house as I write this. It’s funny: A few months back, when I heard that RubyConf was going to be three times bigger this year, I was mostly excited but a little uneasy. As communities grow, they can change, and not always for the better. But now that it’s over, I can’t think of a single way in which the growth has been bad. Instead, RubyConf this year has given me three times as many mind-blowing conversations, and three times as many smart, chill people to hang out with. Does Ruby scale? Well, so far its community does.
Some highlights of the talks of days 2 and 3
When Kevin Baird gave a talk about his academic project for generative, interactive, avant-garde classical music, more than a few people pitched in with comments based from their own experiences as a composer or performer of contemporary classical music. That’s a nice overlap to see—dunno if you’d find a lot of that at a Java conference.
I dug Brent Roman’s talk about using Ruby to control robots used in oceanographic research, if only for the phrase “Continuous Plankton Recorder.” It’s interesting that a lot of early, pre-Rails adoption in Ruby has been in science and research organizations, including NASA, DARPA and the NOAA.
Ruby Davis’ “Polishing Ruby” talk was basically a show-and-tell of the most jaw-dropping Ruby hacks ever. RubyInline lets you write and call C functions within a Ruby file without a separate compile phase. ParseTree evaluates Ruby code as an S-expression for uses such as dependency analysis and complexity metrics. Et cetera, et cetera. It’s funny: Before this weekend, us Ruby-NYC folks would joke on IRC about taking on other Ruby groups. But based on their role in producing MetaRuby, Sydney, and the hacks Ryan talked about, there is no question: If you want to be the hottest Ruby user’s group, Seattle is the one to beat.
Jim Weirich gave not one, but two killer talks. (Filling in for Rich Kilmer, I guess.) The first, on domain-specific-languages, made the astute point that non-programmers can easily learn complex DSLs in domains they care about; he illustrated with examples from the worlds of juggling and Rubik’s Cube. In the process he showed off code that lets you play Rubik’s Cube in IRB. Crap. My productivity’s bad enough with Burnout Revenge on my XBox, now I can play Rubik’s Cube in IRB, too?
Later, Jim gave a workshop, with Chad Fowler, on continuations. Continuations are some of the deepest, darkest magic you can get in Ruby, and the workshop walked us through examples and a programming session to re-implement exceptions using continuations. I understand them a tiny bit better now. With any luck, I’ll get it right before Ruby 3.6 replaces them with eigen-singleton-bindings.
Karlin Fox’s talk on system testing with Systir combined good DSLs with Systir’s browser-driven manipulation. Obviously testing is a point of strong interest for me, so I’ll be keeping an eye on this lib, for sure.
Nathaniel Talbott gave a thought-provoking talk about niche software, market diversification, and Ruby’s role in those forces. This was a sort of Web-2.0-Long-Tail-Small-is-Beautiful blender of a talk. Lots of great discussion afterwards, much of which again reminded me that I really do need to read Chad’s book My Job Went to India.
And, of course, Matz’ keynote. In his mind, 1.8 is pretty solid, so 2.0 can be a target for “wild and crazy” experimentation. He presented a lot of controversial syntax changes, and much debating ensued. Afterwards, some people were expressing surprise that we were allowed to openly debate his suggestions—he’s our hacker God-King, isn’t he infallible? But it’s been the same in years past. Matz has an aesthetic, not an ideology, and he’s always been open to having his mind changed.
Some pleasant surprises
One of the nice things about giving a talk is that it’s a great way to learn more about the subject. After my talk on Friday, a number of people sent me more pointers. At OSCON, Jim Weirich had demoed a way to dependency-inject constant references within a given class. Wayne Vucenic was kind enough to mail me Eric Evans and Martin Fowler’s Specification Pattern for further reading. And more than one person pointed me to Behavior-Driven Development; I’ll say more on that further down.
Another pleasant surprise, this one about the growing Ruby community: I think it’s fair to say that more than a few Rubyists from the pre-Rails days have had mixed feelings about the effect of Rails on the Ruby community. Growth isn’t always a good thing, after all, and one concern about the Rails influence has been that it would bring in the “wrong crowd”, so to speak. This isn’t a matter of intelligence or skill, really: We want people of all skill levels. (I’m not a very good programmer myself, which is why I write all those damn tests.) But some were concerned about a growing community succumbing to the social downsides of so many large programming communities—namely, programmers looking for silver bullets or heroes to worship, instead of thinking for themselves.
I tried to reserve my judgement, and I’m quite glad I did. All weekend-long, I kept meeting smart, passionate, open-minded programmers who loved using Ruby on Rails—not because they were looking for a religion, but because they thought Ruby and Rails make a great combination. These are folks who are going to be contributing a lot of great work on non-trivial issues that will benefit all Ruby users; the work on Behavior-Driven Development may be an early example of this. So as one pre-Rails Rubyist, let me say to the Railsers that I’m glad you’re all along for the ride.
The next 12 months
Historically, things happen at RubyConf; two years ago, the current incarnation of RubyGems was born. With so many people getting together, it’s inevitable that we’ll see new projects coalesce and grow because of this weekend.
One such project may be the effort to write some sort of a specification for Ruby. In the past, Matz’ philosophy has been something like “Ruby is as Ruby does”: There’s one Ruby implementation, and if you want to know how it’s supposed to behave, you should just use it. That’s been sufficient in the past, but now there are a lot of projects that would benefit from a more detailed accounting of Ruby is supposed to act, including but not limited to JRuby, MetaRuby, YARV itself, and possibly Sydney. A small group of us met and hashed out the best way to capture this information, and for now it looks like we’re going to use a tandem of a better test suite and documentation in English. We’re a community that believes in working code over legalisms, so I’m optimistic that we’ll be able to produce a set of docs that are easy to read.
The spec meeting kept me from the Behavior-Driven Development, which was a shame. This idea seems to be gaining steam; Dave Astels seemed to have kicked the whole thing off with a blog post in July, leading to the RSpec library, and Obie’s explanation yesterday. But can I say, without getting too much into it now, that I’m a little in the dark as to what’s so special or different about this approach? It just seems like the standard Test-First Design, with a mildly different interface. But I could just be totally missing the point (wouldn’t be the first time), so I’m happy to keep listening in on this conversation, to see where it goes.
Other possibilities for the year ahead: A more organized effort to make embedded versions of Ruby, more advanced database tools built on Rails’ ActiveRecord, some progress on refactoring tools possibly driven by the toys in Ryan Davis’ talk. Anybody feel like taking odds?
I’d like to thank the Academy
A good conference is a tricky thing, and since we’re not a bunch of regional sales directors paying top-dollar to be taken care of, we have to do a lot of it ourselves. This work deserves to be noted, so I want to give some thanks:
Everybody who brought a power strip for our hungry laptops, and everybody who brought a wireless access point and threw it into the fray. Everybody who transcribed the talks or blogged or Flickr’d the conference.
The Seattle folks who let us hang out in their penthouse suite at all hours and leave pizza boxes everywhere.
San Diego local Edward O’Connor, for really good restaurant recommendations. And Harar, that kickass Ethiopian restaurant on El Cajon Boulevard that had no problem feeding ravenous hordes of hungry nerds.
Conference organizers David Black and Chad Fowler, who deal with check-in and t-shirts and WiFi and caterers and hotels and sponsors and speakers and pull the whole mess together into something that works. They do it year after year, and for not much money, so as far as I’m concerned they’re the patron saints of the Ruby community.
And thanks to my Ruby-NYC compadres for getting on a plane and flying across the country and giving me a posse to roll with. I told you this shit was gonna be fun, didn’t I?