It's Day 2 at RubyConf. Many people had very late nights yesterday, and the excitement is just a little dimmer than yesterday morning. I'm making it down just barely in time for the opening talk of this morning's gauntlet of alternative implementations of Ruby.
John Lam is presenting on the State of IronRuby. It's 9am on the 2nd day of the conference, and it's Microsoft related, so I expected sparse attendance, but I was wrong—people aren't standing against the walls, but the seats are basically full.
So John is spending about half of his talk on defending Microsoft, and his decision to go there. Certainly the community has placed IronRuby on the defensive through their endless suspicions about Microsoft's bad intentions. John believes these to be baseless, and that Microsoft is heading in a better direction, using the MS open source licenses as an example. IronRuby will be released under MS' BSD-style license, the Microsoft Public License.
The only question John takes at the end of his talk is about the projected release schedule. John describes the IronRuby project as having a conference driven release schedule, where they decide what features they want to have done to demo at the next conference. The next one is the MIX conference in Las Vegas, where they will have all sorts of networking features done.
The JRuby guys, Charlie Nutter and Thomas Enebo, are adorable, often finishing each other's sentences. They're mentioning their recent releases and thanking the community, but before they can demo anything, fellow Sun employee Tim Bray comes up on stage and interrupts them to mention a deal Sun brokered with a university in Japan to work on Ruby implementations. Charlie and Thomas don't look happy to be interrupted, but let Tim say his piece, give him a terse thank you when he leaves, and resume as if nothing happened.
The most important thing I'm taking away is that JRuby is ready for action. They released a 1.1 beta that is compatible with Ruby 1.8, and its performance is quite solid, better than Matz' 1.8. The only thing that beats JRuby 1.1 is Ruby 1.9, which is about 33% faster. He demos some things for us, they go well, and everyone seems pretty impressed. Koichi Sasada, the creator of the Ruby VM in 1.9, YARV, is sitting next to me and gives an excited pump of the fist when 1.9's blazing benchmarks are shown onscreen.
Before Evan begins, a guy named Stuart is coming up to talk about what's happening in Room 3 later. He's asking for a show of hands of who has contributed to an open source project before, and it looks roughly half(!!) of the audience raised their hands. Stuart says he's never seen more than 15-20% of the audience raise their hand at any conference he's ever been to. That's pretty terrific.
Rubinius has lots of buzz, and got the best slot of the morning, as all the latecomers with hangovers have come in and filled in the remaining gaps in the room. Evan is starting off strong, he's an energetic speaker and he rushes through the features of their progress from last year. He's asking the audience who prefers writing in Ruby to C, everyone raises their hand, and then who prefers writing C to Ruby, and 3 of the people who came from Japan with Matz raise their hand, earning some healthy applause.
Evan is doing some unfair but entertaining comparisons to Ruby, IronRuby, and JRuby. He's pointing out how none of them have any lines of Ruby code to them (though some audience members point out that that's not completely true), and categorizes them as Ruby for C Programmers, for C# programmers, and Java programmers, respectively. Of course, Rubinius is Ruby for Ruby programmers, despite 2/3 of the code being currently written in C.
Q: Do you think Rubinius should replace the MRI?
A: Did the water fowl replace the dinosaur?
One highlight is him asking the question that Chad Fowler asks every year, which is a show of hands for how many people are paid to use Ruby every day. The informal poll looks to be around 90%, which is stunning. Evan recounts that at RubyConf 2005, the response was at 10%, and that at RubyConf 2006, the total number of attendees was half the number here. Everyone here knows how crazily Ruby has grown in the last 2 years, I'm sure, but it's still moving to see it so strikingly, and to sit in the middle of it.
The sum of it seems to be that Rubinius is doing great, making awesome progress, doing everything right, and we should all join them and contribute patches and get commit rights and help them move full steam ahead. Sounds good to me.
Waiting For Godel
Luke Kanies is here to present on Essential Incompleteness in Program Modeling, and starts by getting right into Godel's Incompleteness Theorem. Godel's Incompleteness Theorem says that for any system that attempts to model reality (any sufficiently complex system), it can never be both consistent and complete.
Most of the Ruby community has come from Rails, and the Rails community has an above average number of people without a rigorous computer/mathematics background than compared to other language/software communities, so this could be a mindbending talk for many people here. It's not about Ruby in the least, all about modeling and fractals and number theory.
Decisions == Energy Deltas
At the end of the talk, Luke talks outright about Godel, Escher, Bach: An Eternal Golden Braid and discusses the Achilles/Tortoise dialogues, and the analogy of the record player built to play any record, but can never play the record that generates the vibrations that will destroy the record player. This is awesome for me personally, as I've just started reading Godel, Escher, Bach and have been really loving it.
The way Luke applies all this to software development, my interpretation of it anyway, is that when you're modeling your domain/problem, make as few decisions as possible, for as long as possible. The more decisions you make, the more potential energy is lost, the more your system grows sufficiently complex, and the earlier the inconsistency or incompleteness will begin to bite you. By delaying this, you keep your models as flexible as possible and have a greater chance of arriving at the best solution.
It always takes longer than you expect, even when you take into account Hofstadter's Law.
—Hofstadter's Law, Douglas Hofstadter
This is all pretty vague, and I don't know that I actually learned anything about how to really develop my software, but I appreciated the mind trip, and the synchronicity with my personal life. This has been my favorite talk so far.
Waiting for Hodel
Eric Hodel is talking about Maximizing Productivity. I was expecting this to be a talk about personal habits and methods of encouraging good self-discipline. Instead, he's talking about all the OS X tools he uses, like ssh-keychain, Spirited Away, how he arranges his windows, and encourages pair programming. As a Linux user who doesn't like pair programming, so far this is pretty disappointing.
There's also tips on how to manage your own project, like, set up a bug tracker, do your own feature ideas first, have somebody else look at your release before you release it. There's little of substance here.
One question ended up with someone polling the audience as to how many people type Dvorak, and, shockingly, about 20 people raised their hands. That may convince me to take the plunge into Dvorak yet.
I dropped in Room 3 briefly for the Refactotum, long enough to hear Stuart Halloway interrupt his JRuby demonstrations to make sure no one was recording anything, and then confide in us.
Catholic Jesus is better than Protestant Jesus.
I left for safer pastures, and now I'm sitting in Francis Hwang's talk on Conversations vs. Laws: What do we mean when we say Ruby is dynamic?, where he is discussing human slavery. He has a diagram on the screen with a box saying Homo Sapiens, and then two boxes descending, European, and African. The abolitionist movement, he's explaining, can be seen as eliminating those boxes, leaving only the parent box, Homo Sapiens. He seems to have the people captivated as he goes on to discuss people applying to be recognized as Native American, and how the money involved in this procedure could mean these people are lying. Moving on, Francis brings up the 300-word 1992 definition of the word buttocks by some local city council, drafted and voted into law.
I paid too little attention to the first half of the talk title, I had expected a more technical talk. However, Francis is a terrific speaker and he's begun talking about the social issues in the Ruby/software world, and the dynamics of the community as they release software, and nothing is written in stone, and people release unstable work, etc. He's even putting Jaron Lanier quotes on the screen. So far this is pretty awesome.
Why Gordian Software Has Convinced Me to Believe in the Reality of Cats and Apples
—Jaron Lanier, title of his essay
Francis is talking about how the healthiest mindsets are ones which embrace risk. He's describing how Toyota, who will be the #1 car maker in the world this year, has a policy that any factory worker, on any level, has the authority to stop the machinery if they suspect that defective parts are being manufactured. They have made quality their #1 priority, and have helped ensure it by placing an amazing amount of trust to the least educated level of their staff.
The first question is not a question. The questioner stated that one of the biologists who discovered the genetic code had become convinced that Africans were genetically inferior. Francis nodded in recognition, said James Watson, right? and the questioner nodded and then was silent. A few comments got yelled back and forth through the audience, including one from myself, and then everything somehow quieted and managed to go on without getting uglier. Pretty disturbing, and I'm a little unsettled that I and others got so emotional. ...I guess we're all fine now.
Whenever you interview fat people, you feel bad, because you know you're not going to hire them.
—Dr. James Watson
The questions are going on for a while more, and people are asking the kinds of questions that demonstrate that they found Francis' talk highly stimulating (I don't know how familiar you are with post structuralism, but...). They're asking questions all over the board, about philosophy and other computer languages, not all of which is Francis equipped to answer, but all of that is really a good sign. Some people are soapboxing it, but overall, still good. It was a high level talk, related to Ruby in spirit only, but it ranged over many issues and had lots of content that neither bored nor distanced the audience. This is now the best talk at RubyConf so far.
Matz is here, giving his keynote. It's coming in two parts, the first being Why Language Matters, Or Not. His major point here is that language really doesn't matter, in theory (Turing-completeness) and often in practice (Hello World looks the same everywhere). The true difference between languages is the community that they attract. The Ruby community, as observed by Matz, Martin Fowler, and many within it, is nice. And, more diverse. There is not the same fanatical commitment to the one true way. Yet, there are other things Matz says that don't seem to agree.
He says I made his life tough. If he doesn't let his employees use Ruby...they quit!
Marking Ruby on the cycle of human history, Matz is declaring Ruby at the period of Success, placed shortly before Pride, War, and Drop to Nothing. Looking at the future, Matz has declared that Ruby must become Enterprisey. He doesn't want it to, really, but there isn't much of a choice. Ruby must begin to scale, to perform, and that is Ruby's future. That is, most assuredly, a very difficult thing for many of us to hear.
We will go enterprisey. I don't want to, but, the suit people surround us.
The surrealism is starting to hit me. This man, humble, an infrequent traveler, and at one point a Christian missionary, wrote his dream language and watched a small community develop around it. Suddenly, it has ballooned into a significant force in the software industry and thus the Internet. The devoted Ruby community of the Western world has flown him here to greet us, acknowledge us, let us know he cares. He has a small group of quiet Japanese men here with him, and they stand in stark contrast to everyone here, as a representative of the entirely different world Matz spends his time in.
Everybody implements Lisp once or twice. Nobody implements Ruby. I did it once. Never [again].
Sometimes Matz feels like one of us, and sometimes he doesn't. What's certain is that he has come here to tell the devoted our future. Maybe at one point in the past it felt like a conversation. Now, there's a big crowd, a clear cultural difference, and Matz' is telling everyone things they don't want to hear. Our great leader is here for a day, and tomorrow he will be gone for another year. Except for the bare few of us who have real contact and influence with Matz and his world, like _why and the people at Ruby Central, we will spend the next year simply working with what is handed to us from the other side of the world, and waiting for news. There's nothing wrong with this scenario. Ruby is the most enjoyable programming language in the world, and the process works. But, you can't deny, it's more than a little bit surreal.
The bonus round to Day 2 is RejectConf, a series of lightning talks in Room 1, where zenspider Ryan Davis is bullying people into line. There are a few neat ideas there, like DrNic's RubiGen (a preview for tomorrow's presentation), God, and a D&D campaign automation helper tool. The #rubyconf channel is on fire for most of the talks, which makes the presentations twice as fun.
If you're like me—and I certainly am...
I also got up and gave a quick presentation on Rubedo, my radio app I made for thoughtbot so many months ago. I spent a couple hours earlier today whipping it into a lighter and stabler shape, and I'll be putting out another package soon, and giving it more frequent attention.
That's it for day 2! Long, but thought provoking and altogether intense.