Thoughts on Whyday
Today marks the one-year anniversary of _why the lucky stiff disappearing from the Ruby community. In honor of _why’s contributions, today is Whyday– a “programmer’s holiday”, during which we “remember Why’s contributions to our community and culture by hacking just for the fun and joy of it.” A ton of pixels have been spent over the last year discussing debating the hows and whys of his departure; I don’t have much to add to that one way or the other. What I would like to do today is talk a little bit about what I see as his biggest contribution to the programming community, and also share a memory I’ve got of _why that I feel perfectly exemplifies his style and philosophy.
Whatever one’s feelings about the way _why chose to leave the community, nobody can deny the fact that he was an incredibly talented programmer. If that were all he was, though, we wouldn’t be celebrating Whyday in his honor— after all, there are thousands of incredibly talented programmers out there. Two things set _why apart: his prolificacy, and his creativity. His specialty lay in making Ruby do things— strange, terrible, and wonderful things— that nobody had guessed might be possible, and he did it over and over again. A fully-functional (and useful) web framework in less than 4kb? An XML parsing library that was actually pleasant and easy to use, as well as fast? Pre-_why, who would have thought of such things? Many of today’s most important Ruby libraries— e.g., Sinatra, Nokogiri, Haml, etc.— are the direct spiritual descendants of _why’s work, and you can still see his direct and heavy influence these applications' APIs. His most important gift to the community was not any specific library or tool; rather it was a philosophy that good software can and should be simultaneously whimsical and usable.
Another important thing to remember about _why was his drive to help others learn. The Poignant Guide, Try Ruby, Shoes, Hacketyhack, etc. were all projects that tried (and frequently succeeded) to bring more people to programming, and, as a computer science educator, I have to say that any of them would be better ways for novice programmers to get a feel for what programming is all about than any introductory CS class I’ve ever seen or heard of.
One thing that not enough people know about _why was that his creativity was not limited to software. I had the pleasure of being in the audience for his (now legendary) performance at FOSCON 2005 in Portland, Oregon. I had been unable to attend that year’s OSCON, but, fortunately, the Portland Ruby Brigade had persuaded a number of the Ruby speakers from OSCON to meet up for a free evening Ruby miniconference, to be held at Free Geek after the main conference’s sessions had ended for the day. Therefore, I, along with most of Portland’s Ruby community, was at Freegeek on August 3, 2005 for what turned out to be a fabulous evening of Ruby hackery. Remember, this was the summer of 2005— the Rails buzz was, if not at its peak, on its way up, and it was pulling Ruby along with it. There was electricity in the air…
Three things stand out for me in my memory from that evening. The first was seeing DHH give his (then relatively fresh) stump speech about Rails, and thinking to myself that while he was a great speaker, he really was as abrasive in person as in print. The second was getting to meet Matz, and finding him to be just as friendly as DHH had been abrasive. It’s funny— two guys, both talented and very driven, working with similar technologies and programming philosophies, but with such completely different personalities and styles.
The third thing that I remember from that evening was _why’s performance. When he took the stage, he took a little bit longer than the other speakers. This wasn’t because he had trouble getting the projector to work with his laptop, or anything mundane like that. No, he took longer because, in addition to his laptop, he had brought an entire rock band— drum set, guitars, keyboards, etc.— along to help with the talk, and they had to assemble their instruments and amplifiers. Once everything was set up, he opened his laptop and, rather than booting up a slide deck, fired up (of course) a Ruby script. It took a couple of seconds to load; he explained that this was because it was spawning a few dozen DRb sessions. At that point, we knew that we were in for something special. Once those were launched, the fun began.
Brief aside: for the uninitiated, DRb (Distributed Ruby) is a Ruby technology that allows a program on one machine to connect to and control a Ruby object on a different machine.
_why explained that we should all open our laptops, fire up IRB, and using DRb, connect to his IP address. He explained that the objects to which we were connecting controlled part of what was on the projection screen behind him, and, sure enough, once we connected, we found that each of us was controlling the background color and pattern of a portion of the screen. All through his talk, the screen’s background changed color and shape as members of the audience experimented with the program he’d built for us.
His talk itself was a fascinating combination of things. At times, it was a tour of some of Ruby’s stranger nooks and crannies: insane feats of metaprogramming, more fun DRb tricks, etc. At other times, it consisted of Ruby-inspired spoken-word poetry, or songs about Ruby’s syntax grammar. The session ended, as I recall, with a song about eigenclasses. _why sometimes was playing guitar, and at other times was programming live from the stage… sometimes simultaneously. Believe it or not, it was a show about programming that even non-programmers could have found enjoyable. It was a truly singular event, and his performance, to me, exemplified what I like about Ruby as a language.
_why’s performance, just like his software, was functional, comprehensible, and indelibly marked as his own. Just like you can look at one of his programs and be 100% sure that it’s _why’s work and not somebody else’s, nobody else could have possibly pulled off the performance he put on that night at FOSCON. Ruby, as a language, makes it easy for its users to write similarly personal and expressive yet accessible code. It empowers us as programmers to do all sorts of amazing things, but makes us do it in such a way that it is usually relatively easy for those who come after us to understand what we’ve done. As Matz said, “Ruby is designed to make programmers happy”. I think that’s a pretty great goal for a language to have, don’t you?
Today, in the spirit of Whyday:
- Fire up your editor and do something strange and terrible in your language of choice…
- Pick a library— maybe one of _why’s, or maybe one that you use every day— and go spelunking through its source…
- Teach your or somebody else’s kid to program…
- Heck, get a band together and perform some software-inspired music.
The point is, today’s a day to go have some fun with computers. Go forth, and get hacking!