Published on

Why, the Lucky Stiff!

Author

On this day in 2009, _why the lucky stiff deleted his profiles and left the Ruby community for parts unknown. This was a grim day for the world.

_why defined the spirit of the Ruby community in the mid-00s. _why wrote code -- but also books, music, and art1. This wasn't the typical "all programming all the time* type of guy, but a whole person who brought their multi-medium creative endeavours to the community.

The Ruby community has a reputation for being warrior code-poets or whatever. But _why didn't embody that spirit -- _why is probably the reason Ruby got that reputation to begin with! _why was a larger-than-life figure. A living legend. A folk hero2.

For me, _why's two biggest contributions were the book and Hpricot.

Why's (Poignant) Guide to Ruby is an illustrated novel that teaches the Ruby programming language. It has a soundtrack too. But it's weird, like Alice in Wonderland. There's all kinds of asides, strange characters, childish wonder, and comic strips. I don't know if the book ended up teaching me any Ruby, but it's fun.

Certainly more fun than the more-traditionally-written Web Database Applications with PHP & MySQL, which is where I started.

Hpricot was a library for parsing HTML. _why wrote this, and it worked pretty well. I don't know if _why wrote the C driver for parsing broken XML himself or if that was something else -- but this predated the first Nokogiri3 commit by a couple years.

I did lots of scraping back then, for shipping data, Starcraft stream news, and that sort of thing. Hpricot made this as easy as writing jQuery selectors. I don't think I had used anything quite as good4: this was a simple, well-understood interface that I used in other parts of my life. And now I could use that same skill for scraping. That was awesome!

Responding to an Email

Back in '06, I had sent an email to the Ruby mailing list asking for advice. There was potential for me to TA a highschool Programming I class. The curriculum used Scheme, and I thought that was a bit too esoteric and weird. I wanted advice on pitching Ruby as more-comprehensible alternative.

I got a lot of responses, including one from _why. I was shocked and awed at the time, but I should have expected it -- a thread about teaching kids programming is essentially catnip for lucky stiffs.

Also, you will probably have to do a few sleights-of-hand. For example, many people feel driven to use Try Ruby[1] because of the initial fun of just watching the tutorial work. I knew most people wouldn’t really care that “2 + 6” works. The first few lesson are just to get people comfortable, disarm their ideas about the difficulty of learning.

I would find some tricks to make your students think they’re learning faster than they actually are. It’ll juice the adrenaline just enough.

It’s just like a chemistry teacher having fun with liquid nitrogen and a banana. You want to find dramatic, compelling exercises that you enjoy performing and that the students totally lap up.

For Ruby, the equivalent of the liquid nitrogen experiment is the social projector demo. You set up a projector connected to a server. And you give each student a REPL (irb) which acts as the client. Then you give students commands which will affect the screen. In the past, I’ve used DRb[2] and students are given an object and they run methods. I have a number of variations of this:

  • Each student gets a section of the screen which can be altered in color and shape. Or a screen full of emoticons or avatars.
  • Students vote on topics and the screen charts their response.
  • You show a picture on screen and ask students to “tag” the picture. Words appear on screen with size corresponding to the popularity. Use ambiguous imagery that solicits interesting responses.

The idea here is that students watch the screen fill and feel the reward as a group. High school students crave group acceptance anyway, so this feeds that craving.

Unfortunately, you may not have the resources to do this, since commerce has thieved rabidly any good concentration on education. I have been working on my own tools, but I’m a very bad programmer and distracted. It’s sad that DrScheme is even considered as an option. Sure, it’s among the best we have, but it’s still a bad option. It’s ugly, it has too many menus, the interface is unnatural. It’s not made for the average kid, it’s made for geek kids.

Anyway, this is Programming I. Lower your goals. I wouldn’t even attempt to cover most of the concepts. Just get the class captivated and stay as simple as you can.

Good luck, intrepid Nicholas. DO NOT TRY TO WRITE A GAME.

_why

[1] http://tryruby.hobix.com
[2] http://www.chadfowler.com/ruby/drb.html

Life got in the way and I never ended up TAing that class, but damn, this is great advice. I saw most of the students get mired in syntax bullshit when they used Scheme, to the point where a lot of class time got spent figuring out where a parenthesis got missed. DrScheme could have been a lot more helpful there5.

But more to the point of the email: if you make it fun, people will want to engage with it. _why has some fantastic ideas that would give my prospective students the awe and childish glee that was present in the poignant guide, and throughout _why's other work. And maybe that'd make them want to learn more -- the less-exciting parts, like all the Java crap that would be coming in Programming II.

Also: if my memory serves, the final exam for Programming I was writing a bunch of Scheme on a piece of paper. That didn't spark joy for anybody.

The WHAT meme, with two images of a woman smiling. The first image says "The" and shows the woman's headshot. The second image says "WHAT" and is zoomed in very close to her face, showing her pained smile.

Conclusion

There's not really a point to this post. I'm remembering the mythical figure _why for _whyday. I guess it's good for me to remind the world that computers -- and life -- should be fun.

We taught sand to think. We shoot light beams representing pictures of the moon at each other for instant communication. We bounce two-time Hugo finalist Dr. Chuck Tingle's novels off satellites in low earth orbit. You should feel awe whenever you touch a computer. That gets lost in the hustle and bustle of being Professional Business Computer Adults, being mired in JIRA Bullshit every day.

Thanks for the wonder, _why 🫡


  1. In the "drew pictures" sense. But it makes the sentence flow better to just say "art". 

  2. And would probably be mortified to read this and find himself described like this. 

  3. Which wraps libxml2 (or maybe just libxml in the earliest days). 

  4. I was using stuff like nusoap and Structures_DataGrid at the time. These were fine libraries, but I would not describe their APIs as "sparking joy". 

  5. Maybe it is now. I haven't had any desire to open that since 2006.