As expected, Day 3 is a lot more low energy, with less adventure and more audience members with headaches. People are stumbling into the talks anyway, and RubyConf wisely decided to jumpstart people’s day with Dr. Nic.
“It was a complete prick of a thing to work with. Can you say that in this country?”
—Dr. Nic Williams
Dr. Nic Williams is presenting on “Use Ruby to Generate More Ruby – RubiGen is Everywhere”, a general purpose generator framework, so you can write generators for any app where it’s really appropriate, like Merb. He’s got lots of gunfire animations, A Team action scene reconstructions, and plays the A Team theme proudly through several parts of his talk. He’s trying to break people (and the Rails team) out of thinking that generators are only Rails things, as well as demonstrate how easy it is to write generators in the first place. Dr. Nic is a great speaker, as usual, and the audience is entertained.
“I love fun.”
—Dr. Nic Williams
Dr. Nic is not the only speaker to have prepared a video, but he is the only one to have placed it on YouTube days before the conference. To my knowledge, he is also the only speaker to figure 80’s theme music prominently into his work.
Dave Astels and David Chelimsky are introducing themselves to talk about “Behaviour Driven Development with RSpec”. This isn’t going to be a fair treatment, because I feel really distant from the whole thing. Dave asks the audience who doesn’t know what “acceptance testing” and “user stories” are. I know what a user story is, but I’ve never heard of “acceptance testing”. I’m one of only two people to raise my hand.
Now they’re showing off a feature where you can take the plaintext output of an RSpec user story run, and use a different class to parse it and run it as its own user story. It got spontaneous and strong applause, so obviously everyone is getting something I’m not. I’m resigning myself to feeling surly. Not as surly as Ryan Davis, apparently, who is standing up to ask a question, and instead giving a 2 minute diatribe of how he doesnt get BDD, without asking any actual question. When asked to come up with a question by the speakers, he ends up saying that his question is really to the audience, as to whether he’s alone or not. He fails to rally a massive rebellion against RSpec and BDD, and soon sits down.
“You’re alone, but not in that way only.”
—Chad Fowler, to Ryan Davis
Rich Kilmer preceding the next speaker to tell us about the new Ruby Central Project Fund. This is meant to fund a developer, full time, for a period of 1, 2, or 3 months, to work on a Ruby project. Ruby Central will soon be accepting proposals, and publishing a document on their website as to what they’re looking for in proposals. This is terrific!
Jay Phillips has begun his talk on “Next-Gen VoIP Development with Ruby and Adhearsion”. His first several minutes is a major gush about how wonderful Rails is, and how right it did everything, and how much of a huge improvement it was across the board—and there’s nothing wrong with that. He’s then moving into a whirlwind tour of how atrociously, hellishly bad it is to work directly with Asterisk, the “world’s leading open source telephony engine”.
Adhearsion is a framework to work with VoIP and Asterisk, and it looks really cool. You can use it to make and receive VoIP calls, and it supports features like Caller ID spoofing, and ways of confusing automated telemarketer robots. Apparently he’s also got Chad Fowler, Rich Kilmer, and Marcel Molina working on it, which is amazing.
What I wouldn’t have expected is that it opens up possibilities like using your cell phone as a universal remote for your XBox, or your Roomba, and integration with Jabber (e.g. GTalk) IM protocols. I don’t honestly understand why all those things are possible using Adhearsion, but I’m assured that they are. Jay has invoked the image of Bob Ross to cement this assurance.
Apparently Adhearsion 0.8 is being released later today, so this is as good a time as any to check it out.
Ben Scofield is here talking on “Cleanliness is Next to Domain Specificity”, and is focusing his attention on the theory of linguistic relativity, specifically Sapir-Whorf’s. The idea being that language affects the way you think (obviously), not just in what you think, but the very how. He uses RSpec as an example, saying how we’re wired to think of “tests” as something you do at the end of a process, and “specifications” as something you create at the beginning. By taking the test process, molding it into a specification-like language, and then presenting everything in terms of “specs” instead of tests, it’s encouraging test-first development right off the bat, without any discussion of RSpec’s actual quality.
“People say there are 10 billion words for snow in the Eskimo language. Actually, there is no Eskimo language.”
He’s bringing up Kayak on the screen, a site I’m a huge fan of, and pointing out their Search API, and the Kayak-provided sample of Ruby code(!) to use it. The style of the sample is atrocious, and reads like bad PHP code all the way down (and it’s a long way down). He’s providing his own API syntax for Kayak, and his implementation of it, and basically trying to impress upon everyone how much better your code reads and works when you focus on the syntax first, and are willing to do what it takes to make that syntax happen.
And that’s it! This is my first RubyConf, unfortunately, I wish I’d been able to see it when it was a little more lowkey. I heard that this year there were a little more than 500 registrants, which is less than the ~1600 for RailsConf 2007, but is still pretty big. Most of the good presentations were inspirational in nature, not technical, and most of them succeeded at doing that. Matz’ town hall and keynote were especially surreal, but I do feel a lot more connected to the development of the Ruby language, and to the community as a whole, after participating.
I really worry about the Ruby community, and whether it can stay so positive. Already, I feel like the pride of 37signals is pushing its way in to everybody, its influence combatting with the humility of the “original” Ruby community. Matz and DHH are polar opposite personalities, yet both have strong wills and large influence. As the Ruby world swells in numbers and sense of importance, it could be very difficult indeed to prevent our culture from making the next step in Matz’ chart.
The coolest people in Ruby, doing the coolest work, are those who don’t need Ruby at all. Everyone who appreciates Ruby enough to devote time to building an alternate implementation of it, or a web framework in it, or something insane like a VoIP server, appreciates it because they’re well versed in alternatives. Even _why has shut down his Ruby blog and opened one dedicated to coding as art. And when something better comes along, these minds will move along with it, and they will enjoy the next window, the one that has just closed for Ruby—the window that opens with early adopters and progressive thinkers, and closes with opportunists and legal departments.
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.
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.
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.