What happened when one of the world’s most unusual, and beloved, computer programmers disappeared.
In interviews, _why’s collaborators and virtual friends carefully suggested a secondary reason why he might have departed the net. Vanderburg, the Living Social programmer, puts it simply: “_why’s code was sloppy. He was an amazing thinker, but not as good when it came to execution. So, he saw a lot of people take his ideas, and then build them out into more sustainable or workable projects.”
Klabnik, who now runs Hackety Hack, said much the same. “_why’s programming just really is not very good,” he said, adding, “That doesn’t mean he wasn’t brilliant.”
Over and over, _why would build something, and something better would quickly supplant it, either a variation on _why’s work or a new approach. This isn’t surprising given Ruby’s commitment to open source, and given the whole programming world’s obsession with the newest, the quickest, the cleverest.
Shortly before his disappearance, _why admitted the ubiquity of obsolescence was getting to him. He tweeted: “programming is rather thankless. u see your works become replaced by superior ones in a year. unable to run at all in a few more.”
There were other, subtler hints and forewarnings threaded through his work. On his RedHanded blog, for instance, he once wrote: “Fortunately, as I’ve mentioned before, I have a strong feeling that I will die young without artifact. That I will make no lasting impression. This will be my avenue. So hold your horses, I just have a few more things to do in life and I’m sure I’ll be out of your hair.”
But, even if the person behind _why wanted to disappear, _why has done anything but. The Streisand Effect proved tremendous. Among Rubyists, his offline identity as Jonathan Gillette has become accepted, and common, knowledge. And he only became more famous for having vanished.
The “Ruby community”—a concept constantly bandied about among Rubyists, who seem self-conscious of their reputation as a clique, if a nice one—met for their 10th-annual RubyConf in late September 2011, at a hotel on the corner of Bourbon Street in New Orleans.
The atmosphere? Something like “nerd carnival,” though in the positive, reclaimed sense of the term. At RubyConf, the biggest nerd is the best nerd, and every nerd is welcome. Participants wore their name tags strung around their necks with Mardi Gras beads and often put their Twitter handle above their real names. Fingerprint dustings of powdered sugar from beignets frosted Mac laptop after Mac laptop.
During the day, participants—about 500 total, about 475 men, though my original count got thrown off by a few luscious ponytails —attended panels to hear their peers talk about best practices or cool new projects. Matz addressed the masses twice, first giving a laid-back keynote that opened with the line, “I am a mere programmer.”
The panel that perhaps best encapsulated the spirit of the conference and the general demeanor of its participants was a session about a hodgepodge of coding minutiae. An overflow crowd filled the biggest conference room. At the front, behind a desk, sat a number of young Ruby coders. Even before they started, the crowd started giggling.
The speakers hand-drew name cards, reading, left to right, “Thelma,” “Brenda,” “Sally,” “Janet,” and “Lois.” Brenda had a sea captain’s hat and a pipe. The panelists all sported varying days’ worth of facial-hair growth. The point would be, the moderator said, to learn as little as possible, and he encouraged everyone to leave to find a better panel to attend. The crowd roared.
Later in the conference, Klabnik presented his updates to Hackety Hack in one of the several presentations that touched on the not-present and yet ever-present figure of _why, and his work.
“I am slowly, systematically removing _why from the project,” he told the conference-goers. “It’s not because I don’t like _why, because _why was awesome … but you break up with a girl and you don’t keep pictures of her around your apartment for the rest of time.”
“His goals were different than my goals,” he added. “It took me a long time to become okay with removing thousands of lines of code that _why wrote.” He also took a moment to argue against “celebrity hacking,” and the cult of personalities that sometimes develop in such communities.
McElroy, who administers TryRuby, had coincidentally done much the same, removing _why’s original work from the project. He brought in the firm Envy Labs to reboot TryRuby and to take over its hosting costs.* (He was paying a hundred bucks or so out of pocket per month.)
“It’s a lot faster, and it looks far better too,” he said, explaining that they reworked the site’s guts. He says he regrets that the code is no longer open-source, but says that Envy Labs has, at the very least, promised to keep it free for the thousands of people who use it every year.
But _why is still venerated, his projects often cited by other programmers, his name brought up with something like nostalgia in Ruby forums, his presence felt at RubyConf. Last year, Vanderburg, the Living Social programmer, launched something called “WhyDay,” which occurs on the anniversary of _why’s infosuicide. A barebones website encourages hackers to devote a day to doing fun, imperfect, creative projects in the spirit of _why.
A few hundred people participate each year. Thus far, Vanderburg admits, the projects “haven’t been very good. But I think that the broader spirit of _why lives on in the community, and you see it in the more creative output that people have.”
Peter Cooper, the programming teacher who runs a Ruby news site, adds: “_why was a creation, a character,” he says. “And that character met the end. Of course, the person behind that character still exists. And we can venerate that character. But _why is over. There is no _why.”
After a few days of working on math puzzles and other very simple programs, I moved onto games—popular homework for newbie programmers, since they can be easily subdivided into smaller pieces. You need to know the objective that you want to achieve. You need to think of or research ways to achieve it. Then you need to execute those steps.
I decided to build a simple computer vs. hacker game of “Rock, Paper, Scissors”— “Rochambot” as I liked calling it. (It turns out, alas, this is a common joke.) I started with my description:
print “Welcome to Rochambot!”
print “This is a classic game of Rock, Paper, Scissors. Rock smashes Scissors but gets covered by Paper, Paper covers Rock but gets cut up by Scissors, and Scissors slashes paper but cannot stand up to Rock!”
print “You will throw down your option, and the computer will too! Then the computer will tell you whether you won, lost, or tied. Type in Rock, Paper, or Scissors and press enter to play!”
Easy part: Done. The explanation for the game would show up when someone ran the program. Now came the hard part. The person just needs to input their choice, like “Rock.” But the computer needs to pick its choice, and then evaluate who won what. How to do that?
Well, first, the computer-picking-rock-paper-scissors-at-random bit. There’s a command in Ruby, “rand,” that picks a random number. I thought about assigning each number to an object—one is rock, two is scissors, three is paper. But I worried it might make it harder to code later on, making integers placeholders for objects. I researched, and realized I could manipulate the rand function to pick from a set of objects, rather than numbers. I produced:
Rochambeau = [ “Rock”, “Paper”, “Scissors” ]
Random = Rochambeau[rand(rand.3)]
And then I filled in the rest of the game.
case [human, computer]
when [‘Paper’, ‘Rock’], [‘Rock’, ‘Scissors’], [‘Scissors’, ‘Paper’]
print “You win!”
when [‘Rock’, ‘Paper’], [‘Scissors’, ‘Rock’], [‘Paper’, ‘Scissors’]
print “You lose!”
when [‘Paper’, ‘Paper’], [‘Rock’, ‘Rock’], [‘Scissors’, ‘Scissors’]
print “It’s a tie!”
I had my pieces, but needed to make them work together—I needed to create the function where the computer picks, then the person picks, and then the computer names the winner. I could not quite figure it out, as it involved having the computer memorize its throw and then accept the user’s input.
So, I did as advised: I asked Rubyists. A few emails later, I got directed to open-source code that performed the exact function I wanted—open-source code free for anyone to use and reuse at will. I felt somehow silly, as I could not crack the puzzle myself. “Don’t worry about it,” one of my new Ruby friends said. “All programming is pastiche :)”
After my month of learning to code, I could build a number of small programs, such as simple games. I could name the basic building blocks of programming, such as if/then statements. I could also explain arrays and strings, the syntax and grammar and basic lexicon of the language. In doing so, I scaled what I think might be the steepest part of the coding learning curve, gaining a basic understanding of what programming languages actually do.
For programming languages are, I was surprised to learn, not what the computer really speaks—those zeroes and ones remain deep in its digital chassis, far away from the person controlling the computer. No, programming languages are what the coder speaks to tell the computer what to do.
Matz’s philosophy in creating Ruby was to build a language more sensitive to coders’ intuition and desires, reducing the amount of punctuation hackers need to put in their code, for instance. But even his more human-focused language remains geared toward experienced programmers, not new ones.
Too often, they are left struggling to understand how to write and execute basic programs, swamped by learning all the new terminology and ignorant of how to avoid simple mistakes, like leaving extra spaces in your programs.
But it is becoming much easier to learn to code—in no small part because so many programmers, like _why, have emphasized that it remains too hard to learn. There are resources like TryRuby and Hackety Hack. There is the excellent Scratch, which teaches kids to hack using visual “blocks” rather than having them type out each part of the code.
Plus, in the past year, a slick site that teaches you simple coding has gone viral. Codecademy, the brainchild of two twentysomething entrepreneurs named Zack Sims and Ryan Bubinsky, works similarly to Hackety Hack. You are prompted to write very simple code on the site. (For instance, “Hey! Let's get to know each other. What's your name? Type it with quotes around it like this “Ryan” and then press enter on your keyboard.”)
It urges you on, corrects you as you go, and grants you badges for completing certain benchmarks. With big venture capital backing and deserved positive coverage in many media outlets, including Slate, Codecademy has signed up more than 1 million users, including New York Mayor Michael Bloomberg.
“Learning by doing is the most effective way to learn to code,” Sims says, so he and Bubinsky decided to build a site that would let you do just that. “You need that ‘Aha!’ moment in the discovery process,” he added.
All that was left for me was to thank my virtual tutor _why, or at least to reach out to him. At RubyConf, most Rubyists agreed that _why would never talk to me, even if I found him. They parlayed stories of his infamous secrecy, and his discomfort with all the attention. People who had collaborated with _why for years had tried in vain to speak with him after his infosuicide, so I did not hold out much hope.
Still, I wrote him a letter, informing him of the story and asking to talk. I left a phone message at his publicly listed home phone number, with the same information. And I told several of his former interlocutors to tell him to reach out to me, to ask on my behalf. I also called his employer as cited in the decade-old emails he wrote, Inetz Media Group, who informed me he had not worked there for years. Short of showing up on his doorstep—something I considered, if only fleetingly—I had not really found _why.
It was a public-records search of patent applications that eventually led me to him. In November 2006, Jonathan Gillette and some of his collaborators submitted a patent application for a "system and method for deploying a virtual machine." I called Prowess Consulting, the Seattle-based firm that filed the application. Jonathan Gillette is not listed on the telephone directory prompt that comes up when you ring its main line. Eventually, I got to a receptionist. Yes, he works there, she said. No, she would not give me his direct line, or patch me through. I could send an email to her, and she would forward to him.
Finally, late in my reporting, I got word back-channeled to me from another Salt Lake City programmer: Jonathan is _why, he is fine, and he just wants to be left alone.
Correction, March 15, 2012: This article originally misidentified Envy Labs as IndyLabs. (Return to the corrected sentence.)
Annie Lowrey, formerly Slate’s Moneybox columnist, is economic policy reporter for the New York Times.