RubyConf 2004, Day 1
Last night, Patrick, Rob, and I packed into a rental car and drove six hours south from New York City to the suburb of Chantilly, Virginia for RubyConf 2004. Last year I had a blast, so this year there wasn't any question of me not going. We've just had a full day of talks, so here's my play-by-play:
Jim Freeze kicked things off by talking about Teaching Ruby in a Corporate Environment. For the last few years, Jim has been an unofficial Ruby evangelist at Cypress Semiconductor, and it's paying off. Today his company has about 50 CAD engineers using Ruby for everyday tasks, and if you write a script in Perl you'll have to defend that language decision to your boss.
Jim went through the specifics of how to run a successful teaching program inside a corporation, and then ended with an offer to make much of his courseware available through some sort of open-content license. A few people found this quite promising; they said that having well-developed course materials would help them in spreading the Ruby virus in their own companies.
Next, Rich Kilmer gave a previously unscheduled presentation on the work his company InfoEther has done for DARPA, helping them run automated stress tests on a distributed logistics simulation. This is the same talk he gave at OSCON a few months back.
Before InfoEther came along, Rich said, the project had only been able to manage a system of 50 servers; automation with Ruby made it possible to scale up to 350 machines. The project used lots of innovative features to manage the size and complexity of the project. For example, configuration of the system being tested depends on massive XML configuration files that are impossible to parse all at once using an XML parser. So the code parses the XML into Ruby objects that have a #to_ruby method, and then the results of #to_ruby are saved into intermediate Ruby files. The result: 1.2 million lines of XML translated into 875000 lines of Ruby code.
Also, Rich described a cool little hack: Adding time-unit methods to Fixnum so you can write code like time_to_restart = 5.hours + 15.minutes. Dude, I'm totally stealing that.
After lunch, Austin Ziegler talked about Ruwiki, which is one of the bigger Ruby wiki engines and pretty much the default wiki in use for Rubyforge projects. Hal Fulton went over the future plans for Tycho, which will be a Ruby-based personal info manager, allowing you to tag and query your notes attached to ideas, people, dates, etc. Somewhere in between, somebody stepped to the mic, said they worked for NASA, and asked if anybody felt like they could help them compile Ruby on an IA64. NASA and DARPA get mentioned in the same day, and who says Ruby isn't used for serious stuff?
Paul Brannan's talk about Hacking Ruby had lots of interesting low-level stuff in it, but I have to confess that those sorts of thing just make feel sorta dumb. I was fond of him patching the Ruby interpreter to define Object#become, which makes one object become another one. Pretty l33t.
Rich Kilmer finished off the night with his scheduled talk about Project Alph. Alph is a library that allows a Ruby server to control a Flash movie over a network; essentially it allows you to write Flash code using Ruby, and deploy a rich graphical application that's controlled over HTTP. Last year at RubyConf 2003, Rich had briefly hinted at Alph, and then, frustratingly enough, proceeded to not release any files for the entire year.
The delay wasn't without reason: Alph is a pretty ambitious hack. To make Alph cross-platform, Rich had to route around the loopiness of Flash player containment in browsers … by using IBM's SWT library (which is used for Eclipse) to call a native browser to run Flash. So basically you're writing a server application in Ruby that controls a .SWF file inside of a JVM and has to have bindings to control both. My head hurts.
Also, in the last few minutes Rich previewed one of the next things he's working on, by running a Alph program called ichat.rb. It copies the Rendezvous window of Apple's iChat by using the DNS Service Discovery library Rich wrote with a few other people. Rendezvous control in Ruby … sweet.
In terms of techie amenities, this conference is a vast improvement over the previous year. We've got WiFi in the conference room and power strips in the middle of the floor so we can all laptop away to our heart's content. One nitpick is that the internet connection isn't handling the load very well, with lots of moments of lagginess, but overall things are much better than last year.
RubyConf 2004 is also bigger, with about 60 registrants now and the possibility that RubyConf 2005 will have two separate tracks of speakers. Being here, you really get the feeling that there is a small but strong community behind Ruby, and that connections are being made and new projects are being launched. (Last year's conference spawned RubyGems, who knows what will happen this time around?) It's exciting to be surrounded by so many people who are so smart, ambitious, and friendly.
As I write this, about 30 of us are camped out in the Holiday Inn lobby, sucking down the free WiFi and hacking away. A lot of real work is being done tonight. Me, I'm going to post this and then start hacking away at Lafcadio. I've got a new development release due, and being here is getting me antsy to get it out.