Well, I'm back in Seattle after a fun but grueling weekend in Charlotte, North Carolina for RubyConf 2007. This year's was as good as ever. Even though the number of attendees was about double last year's there still seemed to be that tight-knit feel that distinguishes it from RailsConf. The multi-track format forced a few hard decisions, but overall it was a definite win.
Of course, this year was very different for me since I gave a talk for the first time. The organizers had anticipated the room being broken up into three smaller rooms for the multi-track portions, but there turned out to be four rooms. So one of the rooms was double-sized and could fit half the total conference attendees. This happened to be the room I was talking in, which was a bit intimidating at first, but once I got rolling my practice paid off and it went pretty smoothly.
The main downside was I found it hard to relax before my talk as I was constantly trying to find time to go over the slides/code and practice more. I foolishly chose a topic that needed a good deal of effort put into coding as well as just the talk, a path that I wouldn't recommend for other first-time presenters. I also took fewer photos on the trip than I have on any other in the past, which was quite a shame. And then there's that feeling you always get at events like this where there's just so much going on, even apart from the talks. It's hard to know in the evenings how to spend your time; if you leave to use the restroom you're likely to miss something great. It's a wonder anyone slept.
The primary theme of the weekend seemed to be upcoming new Ruby implementations. Koichi's progress on Ruby 1.9 looked promising, although there was less time spent covering it than usual. I'd imagine that's because it's fairly well-understood by most and the initial release is imminent. The highlight of the conference for me was Evan's Rubinius talk, in which he explained the motivation and methods of his underdog implementation. Increasing the turtle-factor of Ruby is a big deal—for the first time committing to the core seems really accessible to your regular (skilled) Rubyists. It's really amazing that it's able to compete with the big corporate-funded implementations like JRuby and IronRuby. Part of that comes from EngineYard's amazing generosity in sponsoring the project, (which I imagine we'll hear more about soon) but I imagine part of that is just building off the work of really smart Smalltalk folks and harnessing the community via the power of the open commit bit.
Speaking of the open commit bit, distributed version control seemed to be an ever-present undertone. What with the oversaturated wifi network that you always see at conferences, it was really handy to be able to clone a local copy of the rubinius git repository in a quick minute without hitting the uplink. (Compare this to downloading a tarball of a Ruby 1.9 SVN checkout, which took over two hours over the Internet.) There were a few Mercurial vs Git wars on #rubyconf, but it's exciting to see these ideas get more traction. (Check out Geoff's Peepcode on Git if you're confused and looking to learn; it's quite helpful.)
The other theme I saw surfacing repeatedly was that of introspection. Lots of speakers seemed to be talking about ways in which to improve your own habits as a developer by self-examination. As a matter of fact, this included my own talk. In 'Tightening the Feedback Loop', I talked about ways in which you can improve development effectiveness by decreasing the interval between the point in which relevant changes are made to your code and the time you find out about them. Basically it covered what metrics you should care about, how you should set up tools to measure them in an automated fashion, and the times and ways it would be best to bring those measurements to your attention. It ended with a demo of augment, a project I'm working on to make it easier to apply these ideas of feedback.
Augment is a framework for gathering metadata from code and displaying it. The idea is that it has these backends, each which handles measuring a different metric, and it has some idea of when it's appropriate to do the measuring. There's then a set of frontends for various editing environments that bring the relevant information to your attention. In the future it will also record historical statistics for your project. Testing is the only backend currently fully implemented, but rspec, but flog, rcov, performance tests, and other backends are planned.
I've got the slides up for interested parties. I imagine you'd probably rather wait for the video to get posted though. Confreaks did an excellent job of recording all the sessions, and it looks like they're going to be posted with Creative-Commons licensing.
My talk seemed to be well-received; the double-sized room was almost full. I had a number of folk afterwards express enthusiasm about the ideas I had put forth, and a few wanted to contribute code as well; all very encouraging. If you're interested in these ideas, please join the mailing list to discuss.
Also had some cool Emacs happenings at the conference, but this post is ridiculously long, so I'll save it for another one coming soon.