Where’s _why? (2012)

栏目: IT技术 · 发布时间: 4年前

内容简介:In March 2009, Golan Levin, the director of Carnegie Mellon University’s interdisciplinary STUDIO for Creative Inquiry, invited an enigmatic and famed computer programmer known to the virtual world only as “Why the Lucky Stiff” or  “_why”—no, not a typo—to
Where’s _why? (2012)

Illustration by Charlie Powell.

In March 2009, Golan Levin, the director of Carnegie Mellon University’s interdisciplinary STUDIO for Creative Inquiry, invited an enigmatic and famed computer programmer known to the virtual world only as “Why the Lucky Stiff” or  “_why”—no, not a typo—to speak at a CMU conference called Art && Code—also not a typo—an event where artsy nerds and nerdy artists gather to talk shop.

_why came to Pittsburgh and presented his latest project to a room full of a student programmers and artists. He was scruffily handsome , seemingly in his early- to mid-30s, with shaggy brown hair falling in his eyes and a constant half-smile. He looked like a member of an indie band—he actually was in an indie band —or the leader of an experimental improv troupe.

At this symposium, he wore a pair of oversize sunglasses and a tidy sports coat with a red pocket square, a silly riff on a stuffy professor’s outfit. He introduced himself as a “freelance professor.” “I don’t know exactly why I was invited here today. I’m not associated with anything of repute,” he admitted to giggles from the packed crowd.

Advertisement

He riffed on his nom d’Internet , Why the Lucky Stiff: “Some people want to call me Mr. Why. My nametag was filed under ‘L.’ The thing is, it’s just a middle name. There’s no first or last. It’s just one middle name. That’s just the nature of it,” he said.

Then he introduced his new product, a free interactive application called Hackety Hack , which he had built from scratch to solve a problem he called the “ Little Coder s Predicament ” in a 2003 manifesto.

The Little Coder’s Predicament arises from the following problem: We live in world of astonishingly advanced technologies, easy to use and all around us. Your grandmother has a smartphone. Your 2-year-old can play with an iPad. But the technology behind such marvels is complex and invisible, abstracted away from the human controlling it. Nor do these technologies offer us many ready chances to do basic programming on them. For nearly all of us, code, the language that controls these objects and in a way controls our world, is mysterious and indecipherable.

Back in the old days, you could hack your Commodore 64 without too much trouble. But just try to get a sense of the millions of lines of code controlling a Windows computer, or the Google search engine, or your Android or iPhone. For starters, the user interface and legally enforced sanctity of the code will prevent you from even seeing it. And even if you managed to take a look, the code would be so complex you would struggle to understand it, let alone manipulate it.

Advertisement

For that reason, _why explained in the “Little Coder’s Predicament”—and over and over again at conferences and panels—too few people were learning to code. The learning curve was too steep. There needed to be a simple, fun, awesome way to draw people in.

“We need some instant results to give absolute beginners confidence. Simple methods for sending an email, reading a Web page, playing music,” he wrote. Moreover, novice programmers—especially kids—needed that ecstatic moment where they understand that they are controlling the computer, that programming ensures that the computer answers to them.

That’s what Hackety Hack did.

Hackety Hack begins by introducing kids to Ruby,  _why’s programming language of choice. Then it explains that programming is nothing more than giving a stupid, unthinking computer your commands. You are its boss. It answers to you. And you can make it do nearly anything with simple keystrokes and enough practice.

Advertisement

Within a few minutes of using Hackety Hack, you can use real code to order a turtle to draw a line or a shape. In an hour, you can create a virtual library of your comics, or put jokes in pop-up boxes. Instantly, you are empowered as a creator. And eventually, the mysteries of how a computer works do not seem so mysterious after all.

Hackety Hack solved the “Little Coder’s Predicament”: It was fun enough to engage a kid, and smart enough to teach her something to boot. But just a few months after launching it, to the astonishment of the community of Ruby programmers who treated him with something approaching messianic worship, _why vanished.

On Aug. 19, 2009, his personal site stopped loading. He stopped answering email. A public repository of his code disappeared. His Twitter account—gone. Hackety Hack—gone. Dozens of other projects—gone.

The popular Ruby message boards, listservs, and blogs descended into a state of panic. Had he been hacked? Who had heard from him? Was he in physical danger? And there was one especially pressing question, the irony of which hardly went unnoticed by passionate Rubyists: Why?

Advertisement

***

Where’s _why? (2012)
A self-portrait of Why the Lucky Stiff.

Courtesy Why’s (Poignant) Guide to Ruby.

Slate gives each of its staffers a month per year to undertake an ambitious project, one that attempts to do something new in Internet journalism. Tim Noah explainedincomeinequality. Julia Turner explored theworld of road signs. Dahlia Lithwick wrote achick - lit novel in real time, with the help of her Facebook friends. I decided to try to learn computer programming.

Why? I understand, if imperfectly, the laws that control the physical world around me. Ask me why an apple falls to the Earth or why a cork floats in water or why electrons do not collapse into the nucleus, and I can at least attempt an explanation. But the virtual world I live in is a mystery. Arthur C. Clarke wrote: “Any sufficiently advanced technology is indistinguishable from magic.” For me, and for most of you, I suspect, the computer is just that: a glowing, magic box. Learning to program would help demystify the technologies I use daily and allow me to even create some humble magic of my own.

But what language to learn? On the recommendation of my software-developer, project-manager, and computer-scientist friends, I decided to start with Ruby, for three reasons.

Advertisement

First, it is an increasingly popular language, especially for Web applications. It underpins lots of cool services and sites I use on a consistent basis, such as Paperless Post and Living Social.

Second, its code is relatively concise, making it easier to type out and therefore harder to mess up. Let’s say that we wanted to write a program that makes the computer say, “Hello, world!” In Ruby, the whole executable program reads:

print “Hello, world!”

That’s it. Now, say we wanted to do the same in Java, the programming language that runs on, for example, about 3 billion cellphones . Here’s how you would do it:

class Hello       {

public static void main(String args[])      {

System.out.println(“Hello, world!”);

}

}

And you cannot mess up any of those little { or ), either. For fat-fingered dilettantes such as myself, Ruby is a far easier language to start with.

Third, Rubyists possess an often exaggerated, yet nevertheless merited, reputation for being the quirky hug-everyone kids of the programming world. Their motto is MINSWAN, or Matz Is Nice So We Are Nice, a reference to the language’s legendarily sweet founder, Yukihiro Matsumoto, nom d’Internet Matz. We might just all get along.

My language selected, I started off by acquiring and reading the seminal texts about programming. I ordered Steve Lohr’s brilliant history of programming, Go To , for a plain-English explanation of how a computer works and some background on software and hardware development. And I picked up the most highly recommended Ruby manuals: Programming Ruby , known as “the pickaxe book” for the rock-pick on its cover, and _ why s ( poignant ) Guide , a kind of graphic novel authored by the disappeared programmer that you can read online or print out for free. 

A month to learn, a coffee in hand, I started reading. Lohr’s history I got through in a jiff. (Did you know the first “computers” were actually women hired to plug huge punch cards into even huger machines? Neither did I.) When I cracked open the Ruby manuals, though, I got lost in seconds.

Where’s _why? (2012)
The cover of Programming Ruby: The Pragmatic Programmers' Guide.

Courtesy Pragmatic Bookshelf.

The pickaxe book first shows you how to install Ruby on your computer. (That leads to a strange ontological question: Is a programming language a program? Basically, yes. You can download it from the Internet so that your computer will know how to speak it.)

Then the pickaxe book moves on to stuff like this: “Ruby is a genuine object-oriented language. Everything you manipulate is an object, and the results of those manipulations are themselves objects. However, many languages make the same claim, and their users often have a different interpretation of what object-oriented means and a different terminology for the concepts they employ.”

Programming manual, or Derrida? As I pressed on, it got little better. Nearly every page required aggressive Googling, followed by dull confusion. The vocabulary alone proved huge and complex. Strings! Arrays! Objects! Variables! Interactive shells! I kind of got it , I would promise myself. But the next morning, I had retained nothing. Ruby remained little more than Greek to me.

Where’s _why? (2012)
The cover to Why's Poignant Guide to Ruby Programming .

Courtesy Why’s (Poignant) Guide to Ruby.

_why’s primer, the (poignant) Guide, was only a slight improvement. Dada or post-postmodern , is perhaps a more apt descriptor for the guide than poignant is. It starts with a cartoon of a cat, standing alongside an “elf and his pet ham.” The text opens with a note from _why saying he included an onion in the center of the guide. Why an onion? Because everyone will learn to write code so beautiful they will want to cry.

The text is a cacophonous mix of high and low, sincere and twee, cluttered with pictures, collages, discursive sidebars, stories, and cartoons. The metaphors tend toward the bizarre. The elf, for instance, uses leaves and blue crystals for currency. One chapter is told in part through the life and times of one Dr. N. Harold Cham.

In the most openly literary twist, _why, apparently distraught over his relationship with his suicidal, art-school-drop-out sister , abandons writing the book. The foxes and the cat take up his pen to redraw themselves and take the project over, until a costumed _why returns.

And _why himself thought of it as a literary project. “The book I feel is closest to my book is The Curious Incident of the Dog in the Night-Time , which interleaves brief math puzzles and astronomical diagrams with the story,” he wrote to a listserv . “[I’m] interested in presenting an initial stab at giving literary value to a programming text. I’m also interested in getting people to at least feel what I feel when I program.”

The book is enchanting but exhausting. More to the point, reading it cold did not push me any closer to actually being able to hack—a term that, by the way, means something like “code awesomely and efficiently,” rather than “break in.”

Frustrated, I solicited advice on Twitter. Programmers replied with the tsk-tsking solemnity of a Greek chorus: You cannot learn to program by reading books, not without actually trying to write some code yourself! It would be like trying to learn Spanish by reading a dictionary, without ever attempting to utter “ hola, el mundo!

Computer-programming languages are languages like any other: To acquire them, you absolutely must use them. I needed to write my first program.

***

In late 2009, _why’s disappearance played out in real time on the Internet, as Rubyists noticed his projects had stopped loading and relayed the news on popular forums. It was not just one site or server, they fast realized. _why, his blog, his Twitter feed, and all of his open-source code had disappeared from the Internet, and all at once. The term of art is “ infosuicide ,” a rare but hardly unheard-of occurrence.

At Ruby Inside , a popular Ruby news site, programmer and Ruby teacher Peter Cooper relayed the sudden disappearance of Ruby’s “own resident crazy genius.” He noted that _why’s works “are considered important by Rubyists not only for their usefulness but for their significant contribution to Ruby's culture, and if _why has truly fallen off the grid, it’s a big deal.”

The hundreds of tweets and message-board posts went through the Kübler-Ross stages of grief. At first, disbelief. “He could have had his computer, or email hacked ... have to wait to see if we hear from him before we assume he actually cleared all the accounts himself,” one poster argued .

Later came anger. Zed Shaw—a prominent hacker who infamously deserted Ruby—described the infosuicide as an affront . “Taking all of your code offline and erasing your whole persona without so much as a warning or helping people take over projects they spent years investing in is a dickhead thing to do,” he wrote on his blog.

“That’s a rough thing to say, but I feel very strongly about this, because while I respect the idea of impermanence, I have no respect for someone who has such a complete disregard for other people’s investments and feelings.”

Next came bargaining. Maybe he would come back soon, and was just busy with another project, some Rubyists held. “_why was to the ruby community what willy wonka was to chocolate. Maybe, just as the fictional Willy Wonka secluded himself in his chocolate factory for so many years … _why is simply secluding himself in his programming factory,” one hopeful post came .

Much depression followed. “wow, how sad. that just ruined my day. he really was an idol to me. he's one of the main reasons I even tried ruby in the first place. I just love everything he did,” read one typical comment . Indeed, literally hundreds of hackers wrote to eulogize _why and explain how he had inspired them to learn to code.

And for some, acceptance. The most passed-around response was an introspective one, from the programmer John Resig. “Looking at the cumulative work and art of _why it should become painfully obvious: The online presence of _why, and all the code, writing, music, and drawings that’ve been produced are a mere transitory portion of one person’s life,” he wrote .

“He was constantly moving from project to project, blog to blog. Now he’s truly moved on and we should feel joy in having gotten to know him, and his art, over the past couple years.”

But that came as cold comfort to the countless programmers _why inspired to code, or his many interlocutors in the Ruby community.

***

Where’s _why? (2012)
Yukihiro Matsumoto, creator of Ruby, pictured in 2008 at the Euroko Ruby conference.

Rrrodrigo via Flickr.

In 1993, the Japanese programmer Yukihiro Matsumoto—“Matz”—dreamed up the Ruby language. The project came about somewhat accidentally, he told me as we sat in the bowels of San Francisco’s Moscone Center, where he was due to give a speech at the 40,000-person DreamForce cloud - computing conference .

He felt some friction with the other languages he was using. He’d get distracted trying to manipulate code. He felt slowed down. He wished he could hack the code itself to get from A to B faster. He had been a programmer since childhood. He had studied programming languages as a university student. He intuitively saw a better way and set off to write a language.

“Ruby is to make programmers happy ,” he said, explaining that he wanted to think about building a language intuitive to programmers rather than one centered on the capabilities of the computer. “It is about human beings, and not about the machine.”

Two decades later, Matz is an open-source guru and the central figure in the Ruby world, the ultimate arbiter of changes to the language and the person responsible for updating it as the needs and capabilities of programmers evolve. Currently, he is the “chief architect” for Ruby at Heroku, part of the massive cloud-computing company SalesForce, which runs on Ruby.

The language gained some traction in Japan after Matz released it, though he said he did little to promote it. Its global success came in two waves. First, in 1999, a British programming-language obsessive and longtime developer named Dave Thomas found it on a Usenet message board and downloaded it.

“I used to just play with languages,” he tells me, explaining that he would install any he could find just to test it out. “Normally, I’d play with them for a few minutes. With Ruby, I played for a whole morning. Then the whole afternoon.”

His passion for Ruby led Thomas and his writing partner to produce the pickaxe book, which in turn introduced the language to a much broader English-language audience. If you were a developer looking to pick Ruby up, you didn’t need to just download it and muddle through. The pickaxe book could guide you.

The second wave—the really big one—came in 2005, thanks to a Danish-born, U.S.-based programmer and entrepreneur named David Heinemeier Hansson.

_why and Matz are perhaps the most beloved sons in a Ruby’s corner of the Internet. But DHH, as he is known, is undeniably Ruby’s biggest star. No less an authority than Google has named him “hacker of the year.” And he has been the subject of any number of fawning media profiles, including one in Wired that dubbed him a “philosopher-king” while noting his “boyish good looks.” (If you told me he had been in a sugar-pop band in the late 1990s, I would not dismiss it out of hand.)

Back in 2005, he was building a Web-based project - management system called Basecamp, working in Ruby. He ended up building “a lot of infrastructure to make Ruby suitable for the task,” he tells me. And he realized the infrastructure would apply not just to Basecamp, but also to any number of Web applications. He built it out, and called it “Ruby on Rails.”

To better explain for the uninitiated, Ruby on Rails is not a language, or a version of Ruby. It uses Ruby code to make building a website much faster and easier. Let’s say that you wanted to make a complicated Web-based product, such as an online invitation service. You could do all the programming yourself. But Ruby on Rails is a framework that includes a lot of the basic, necessary functions for you.

Ruby on Rails caught on like wildfire. In the spring of 2006, for instance, a young entrepreneur named Jack Dorsey decided to build a micro-blogging service. Using Rails, it took only months to make and launch Twitter. (The site has since moved on to other frameworks and languages.) Thousands of other sites—including Github, Living Social, and Groupon—use the Ruby on Rails infrastructure too.

Indeed, Rails became so popular that it converted thousands of programmers to Ruby. (When you build a site in Rails, you write in Ruby code.) How many? Well, it’s hard to rank the popularity of programming languages. There are thousands of them used by millions of programmers for a dizzyingly wide array of projects. There is no central repository, and most programmers work in more than one language, anyway. (Matz actually spends a lot of his time writing in C.)

But one ranking puts it 12 th . Another puts it fifth among “scripting” languages, used for writing application software. Programmers described it to me as something like Italian—familiar enough, but not really common.

***

I was stuck in the little coder’s predicament. Enchanting though the (poignant) Guide might be, it seems aimed at people who know how to program in other languages and want to pick up Ruby as well. And fun though Hackety Hack is, it is aimed at kids. So I moved on to still another _why project: TryRuby , a service that helps amateurs of all ages learn to code.

The idea is brilliant: A screen pops up with just two boxes. In one, there are instructions. In the second, you type and hit enter—effectively creating little programs that are then executed and evaluated right there in the screen.

Through the series of prompts, you slowly begin to absorb the basic lexicon of computer programming. A “string” is a set of letters the computer can process, surrounded by double quotes. “Methods” are commands that the program can perform, like the multiplication of numbers. “Arrays” are just lists. “Variables” are nicknames for often-used items.

With these basic building blocks, you can start commanding the computer to do all sorts of things. You can save libraries of data, and then order the computer to go retrieve items from them. You can create pop up boxes with titles and bits of information, triggered by certain inputs. You can start linking parts of your program to the Internet.

So, with TryRuby and a new Ruby-for-beginners program set up on my browser, I set out to build my first program: one ordering the computer to solve a math problem. In the case of Ruby, the whole program would read: “print 1 + 2.”

But knowing a bit about a programming language, it turns out, does not necessarily mean knowing how to make your computer run a program. And working in a highly structured environment like TryRuby or Hackety Hack does not help you figure out how to create and run programs on your own machine.

First, I needed to download Ruby, which like many languages comes as a free open-source file. (I later figured out that I did not even have to do that—my relatively new Mac already spoke it.)

Second, I needed to figure out how to create and save a program—in my case, just a single line of text. I started off by saving it as a Word document, but it needed to be in plain text. I saved it in plain text, but I needed to adjust the settings to a more-specific format. And how does a computer run a new program, anyway? The answer, in my case at least, was through a utilitarian program called Terminal, a basic interface panel that lets you talk to your machine.

I created my program. I saved it. I opened up Terminal, and told it that I would be talking to it in Ruby. I commanded it to run my program, carefully writing in the file name and where it would find it.

It would not run. It took me more than an hour to figure out I had left in an extra space in my code, preventing the whole thing from working right. But then, after some 98 minutes and some serious Googling, a three showed up in my Terminal shell.  I had written a program.

***

What had happened to the ebullient, funny, and prolific programmer who was helping to teach me to program? Where had he gone and why?

What seemed strangest about the disappearance was just how integral to the devoted community of Ruby programmers _why had been before his infosuicide. _why was not just famous within the Ruby community, but one of its creators. He had contributed thousands of lines of code to Ruby’s open-source libraries. He wrote one of the most famous guides to Ruby. Moreover, when the language was just gaining traction in the English-speaking world, _why became the equivalent of the Friday-evening bartender at the town’s only saloon, hosting a series of popular blogs and writing often on Ruby forums, evangelizing the language’s beauty and simplicity.

He was also known for his energetically weird performances at conferences. Take for instance his appearance at the 2005 O’Reilly Open Source Convention, an annual event that draws a bevy of tech luminaries, open-source gurus, hackers, and free-software advocates.

The panels featured that year were mostly standard nerdy, service-y fare. A Hawaiian-shirted Larry Wall, the creator of the popular programming language Perl, gave his annual, humorous “State of the Onion” address. DHH talked about Ruby on Rails.

_why gave a panel with inscrutable title “A Starry Afternoon, a Sinking Symphony, and the Polo Champ Who Gave It All Up for No Reason Whatsoever”—an ode to Ruby, with video partially narrated by two cartoon foxes, shadow puppetry, and musical accompaniment.

Attendees told me the presentation was “brilliant” and a “disaster.” An interactive element went horribly wrong when conference participants overloaded the convention hall’s servers. It hardly mattered. The conference-goers ate it up. “It was just magical,” says Glenn Vanderburg, a Ruby developer at Living Social.

Indeed, such whimsy was part of why _why became such an icon in the Ruby community, a community that retains some serious whimsy in no small part because of him. “He was very beloved, very important,” Matz concurs.

But few, if any, people knew about _why’s civilian identity. He booked conference tickets under a pseudonym. He never put down a credit card in front of other Ruby conference participants, instead paying in cash. He would leave public gatherings by just disappearing. He had even waged a campaign to get his Wikipedia profile killed.

Nobody ever called him anything other than _why, or pressed him to break out from his online identity. There is a code of omertà around such things.

In his writings, he evinced a longing for artistic purity coming from obscurity. “People cling to ideas, because they're supposed to be vouchers for a million dollars. no, write an obscure book. build something outside all that pressure. i guess treehouses for kids qualify,” he wrote in 2004 .

But after ­_why disappeared, the Ruby community wanted, and needed, _why’s open-source code back, and a few hours after the disappearance, work started in earnest to salvage anything that could be salvaged. Steve Klabnik is a lithe programmer with jet-black hair, save for a shock dyed white. An aspiring programming teacher, he adored Hackety Hack. When _why disappeared, he watched the boards to make sure somebody claimed it.

“I just thought: This is really an important project, and whoever decides to pick it up, I’ll help them because I’m not ready for an open-source project. A day or two went by. Other projects got picked up, almost all the other projects, but nobody picked up Hackety Hack,” he told me. “I thought: I refuse to let this die, so I’ll start working on it. Maybe someone else will take it over for real.”

Klabnik found much of the code for Hackety mirrored onto other servers. But he still needed to “reverse-engineer” the site itself. The endeavor felt important. But it also felt strange—like living in a dead man’s house, or trying to finish someone else’s painting. “When you pick up something so intensely personal, and such a work of art, it is strange,” he says. “I was very scared of doing anything to it, because I didn’t want to ruin his vision for the project.”

Another programmer, Tennessee-based animal-welfare advocate Andrew McElroy, who goes by the online name Sophrinix, did much the same with TryRuby. “The day he disappeared, the first thing that came to me was, ‘Well, what about TryRuby?,’ ” he says. “I went onto the Ruby Reddit and asked if anyone had taken care of it. Nobody had, and nobody knew where the code was.”

McElroy and a few other volunteers ended up reconstructing it, stitching together the few rescued pieces and painstakingly rewriting much of the rest of the site. “It needed work, too,” he says, noting that its security functions were inadequate and much of the code weak. But a month later, he got it back up and has been keeping it running ever since.

Within a few short days of his disappearance, Rubyists had reclaimed and preserved virtually all of _why’s canon. Someone set up a single site with links to every shred of work he had done, hosted in new places. And in the meantime, the culture mourned.

***

Of course, as Rubyists love Ruby, partisans of other languages love other languages. Discussions of beauty and elegance and utility seemed to me to be ubiquitous among coders, forever reaching for metaphors to describe how what might seem cold and mechanical in fact can feel like an ecstatic act of creation.

In my reporting, a comparison to literature came up often: A well-written program begets a world far richer and more alive than its constituent letters and numbers and brackets suggest. We can see Prufrock trembling before his fruit, despite the brevity of T.S. Eliot’s poem . Similarly, small batches of humble code, carefully constructed, have give birth to radical new capabilities. Google, after all, is at its heart just an algorithm for ranking the popularity and quality of Web pages.

_why himself repeatedly stressed programming’s creative potential. In the (poignant) Guide , he writes, “Vitamin R goes straight to the head. Ruby will teach you to express your ideas through a computer. You will be writing stories for a machine,” he says. “The language will become a tool for you to better connect your mind to the world.”

Later on, he writes: “All you need to know thus far is that Ruby is basically built from sentences. They aren’t exactly English sentences. They are short collections of words and punctuation [that] encompass a single thought. These sentences can form books. They can form pages. They can form entire novels, when strung together. Novels that can be read by humans, but also by computers.”

(Notably, the phrase “ Why, the lucky stiff! ” comes from Ayn Rand’s The Fountainhead , though I could never find _why commenting on whether that specifically is the source of his nickname . The book is about an individualist genius who eschews society to maintain the purity of his work.)

As with spoken languages, different programming languages lend themselves to different creative forms. Some let the programmer control the world more easily, more quickly, more precisely, or more intuitively. Indeed, for each programmer and each project, a certain language might fit better than another.

For the famed Dutch programmer Guido van Rossum , the ideal language is Ruby’s linguistic cousin Python, the language he wrote back in the 1980s and is now one of the most often used languages for Web applications.

Rossum is currently a Google programmer, though he spends half of his time as Python’s “benevolent dictator for life,” meaning he has final say on any changes to the language itself. (Sergey Brin, or one of his coders, used Python when originally building the search engine, back in the 1990s, kicking off Python’s long relationship with the company.)

“High-level” languages like Ruby and Python have become particularly popular for producing Web applications, compared with “low-level” languages like C, Rossum explained.

“Let’s say I am giving directions for how to leave this room,” he says, gesturing to the white-walled, white-boarded Google office around him, visible in our Google+ hangout, a kind of video chat.

“In Python, I would just say something like, ‘Get up and go through the door.’ In other languages, I might have to say something like, ‘Stand up, but not with so much force that you fall over, take three steps to the north, take one step to the east, approach the door, check that it is open, if it is not open, open it, then step through it with this amount of speed …’ ”

“The programmer is abstracted from controlling the minutiae in the computer,” he notes. Sometimes, that might be a bad thing. Lower-level languages allow the programmer to manipulate the computer with more-precise instructions, for instance.

But in developing for the Web, such succinctness, when well designed, is often invaluable to a hacker since it lets her code so much faster.

Plus, over time, managing a larger corpus of code can weigh on a programmer, Rossum says. “There’s a theory out there that all programmers can only manage a certain number of lines of code,” he notes. “Say, 10,000 lines. In Python, you can have so much more programming in those 10,000 lines. You would need 100,000 lines to do the same thing in C.”

***

Despite his intense efforts to preserve his anonymity, _why had been outed just before his infosuicide.

An anonymous person or persons published a strange , vituperative Wordpress website —now down, though largely reproduced here —naming _why as a Salt Lake City-based programmer named Jonathan Gillette. (There’s no way to figure out who built the Wordpress site. There is no domain registry and little to do in the way of IP address tracing.)

The evidence on the Wordpress site is extraordinarily detailed. There are photographs, phone numbers, IP addresses, educational details, addresses. It all points to the same individual: A thirtysomething graduate of the University of Utah, a resident of the Salt Lake suburb Sandy, a player in a local band. And it is seemingly conclusive. Back in 2002 and 2003, for instance, _why wrote to some Rubyists from his work computer, with his given name tagged down at the bottom of his email.

Just after the disappearance, the woman named as _why’s wife seemingly confirmed that he was Jonathan. She tweeted : “Just eating a chickpea burger with _why. Did you hear that??? A CHICKPEA BURGER. Put THAT on Wikipedia!”

On the Web, there was still doubt. Some of the IP traces and identifying data deep in the virtual underbrush pointed to a resident of Texas, or another Utah graduate. And a few prominent Rubyists, including Peter Cooper, keeper of Ruby Inside , insisted at first that the site had fingered the wrong guy.

But nobody doubted that the publication such a site would be just the kind of thing to send fragile, private _why deep underground.

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 10 th -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.

I spoke with Sims about how he came up with the idea, and he described nothing other than the Little Coder’s Predicament. “I read books and watched videos trying to learn to work in Ruby and Javascript,” he says, “But I was just endlessly frustrated with the resources available to me.”

“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. (to the corrected sentence.)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Computer Age Statistical Inference

Computer Age Statistical Inference

Bradley Efron、Trevor Hastie / Cambridge University Press / 2016-7-21 / USD 74.99

The twenty-first century has seen a breathtaking expansion of statistical methodology, both in scope and in influence. 'Big data', 'data science', and 'machine learning' have become familiar terms in ......一起来看看 《Computer Age Statistical Inference》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具