It’s easy to mistake inspiration for hero worship. A friend and I were discussing a while ago whether there was an unhealthy amount of “hero worship” within the computer science/programming communities. I think that this kind of treatment of extremely talented individuals is pretty common within any profession, but I’ve only ever been a software engineer so I guess I can’t say for sure.
I feel pretty confident in saying that most people’s feelings for the personality “why the lucky stiff” don’t count as hero worship. (I say “personality” because, as far as I’m concerned, the unnamed person who disappeared two years ago today stands entirely separate from “why”, which at this point might as well be essentially a character or piece of performance art) This goes especially for anyone who’s actually tried to work with why’s projects— his code is terrible, his architectural choices difficult to follow, the far-reaching concepts of some of his work lending to real stretches of logic being required just to grasp what’s going on, and so many of his projects having long-since been made obsolete by meaner, leaner replacements.
So it’s silly to “celebrate” Whyday on August 19, as the organizer of whyday pointed out on his blog. It’s silly because we’re not honoring the person so much as we are honoring his wishes, and his wishes almost certainly didn’t include limiting that creative spirit to one day a year. But sometimes we need mileposts to remind us that we’re headed somewhere, and if we’re not finding time to fully engage with the creative expression of life through code on a daily basis, then why not an arbitrarily-chosen date annually? There’ll always be time for more, but if you’re not doing any of it now, then there’s no harm in doing it on this particular day to start.
Okay, so what? What was why about? It’s my opinion that why’s work served a function just like anyone’s code, but the function was to express himself through art, just the same function as his music or his tweets.
It used to be that in order to make art, there were significant barriers to entry. To have a set of typed words produced, you had to have a printing press. To make a film, you had to have an expensive, fragile piece of machinery. And much later, to write a computer program, you had to go to college, where you could submit your punch cards and get the information back the next day. We live now in a time where self-expression, and a way to disseminate the result, is wide open to us. It’s natural for children to draw a picture. Creative writing is a common activity in schools. Many, many people take photos to share their lives with friends online. Lots of people even record videos using cameras built into their computers or handheld devices and make those videos available to others. But who writes computer programs?
Whoever Wants to Express Something, Should
Writing a computer program is just another form of self-expression. By programming, you create a set of rules that define a set of actions that respond to input and produce output. People talk about hearing a work of music or seeing a film or observing a painting and finding something new each time, a phenomenon that occurs exclusively because of a limitation of the senses. But with a computer program, there can be branching paths within the set of rules the programmer defines for me that I wouldn’t discover even if I used the program every day of my life. The limitation lies a step further than perception, with my brain, my imagination, my ability to express meaningful input. Maybe one day, 80 and feeble, after using the same computer program every day, I’d wake up and type “Fernando” instead of “Casey” when the computer asked “Who are you?” and with that I’d be whisked off to a totally different world, a whole new set of sights and sounds and experiences that I didn’t even know were possible on a computer, a world for Fernando-not-Casey.
“Why would you do that?” the programmers reading this right now are asking. “That’s dumb. You should communicate the choices available to the user clearly.” Well, if this were a piece of software to balance my checkbook, then yes, that’s a bad idea and a bad design. For a lot of reasons. But this isn’t a checkbook-balancing program, it’s a casey-or-fernando program. This is the program I chose to write because I wanted to express the difference that I perceive between being Casey and being Fernando. That might not even make any sense to you. (It certainly doesn’t make any sense to me.) The key is that the person who wants to express this can, and can make that expression available to anyone who wants to receive it.
The personality “why the lucky stiff” represents the evangelism of the free expression of your self. The guy who used that personality was a particularly weird dude, which helped draw attention to his message: that people can and should learn how to express themselves with, as why called it, “coderspeak”. For now, unfortunately, the choices of languages represent a barrier to entry. The choices we have available are certainly simpler to understand than what we had 30 years ago and enable the rapid development of extremely complicated forms of expression.
If you know how to send an HTTP request to an API, manipulate a JSON response, and inject that data into the DOM of a waiting page, you can basically create absolute wizardry out of fewer than 100 lines of code.
It’s possible that both of those things seem impossible to you. I’d encourage anyone to try a platform from the first item; you may be surprised just how few minutes it takes before you’re off to the races with these systems. If the first one seems within reach, the second one might still seem confusing and far-off and impossible, but it’s just a matter of learning and practice. Recall how far-off and insane the first suggestion felt and go give it a shot. Ask a friend who does know about these things for ideas on where to start (email me!).
While we’re still a long way off from the creation of interactive digital art being as natural to humanity as putting crayon to paper, I truly believe in the value of the activity and that the more people we have participating the more reason there is to make our tools intuitive and straightforward.
And As For Me?
Today I posted some of my favorite tweets from why’s @_why Twitter account on my Twitter account and skimmed a chapter or two of Why’s Poignant Guide to Ruby, a book that is as much about learning Ruby as it is about artistic expression of… comedy? absurdity? I don’t know, but it fits my sensibilities extremely well and I keep a PDF copy on my iPad at all times; reviewing bits about it can help cheer me up or start me thinking about all manner of things in the intersection between code and art.
Tonight I’m going to write some Ruby. I don’t think that Ruby is the only tool that should be used and I think that evangelizing Ruby specifically when talking about why’s principles is, to some extent, missing the point. I’m writing Ruby tonight because it’s the language I’m currently most comfortable with writing and deploying. I think that anyone who wants to join in on the spirit of why’s creative self-expression should do so and should do it through whatever programming language, platform, or medium they want to.