In an interview I was asked what my favorite coding books are
So naturally I mentioned Why's Poignant Guide.
And it was blank stares and crickets - they're not rubists.
"Poignant?"
"Yeah, you know, chunky bacon?"
Blank stares.

seen from Argentina

seen from Russia
seen from Argentina
seen from Argentina

seen from China

seen from Argentina
seen from Italy

seen from United States
seen from Cambodia

seen from United States

seen from Germany
seen from Germany
seen from United States

seen from Italy
seen from China

seen from United States

seen from United States

seen from Argentina

seen from Türkiye
seen from China
In an interview I was asked what my favorite coding books are
So naturally I mentioned Why's Poignant Guide.
And it was blank stares and crickets - they're not rubists.
"Poignant?"
"Yeah, you know, chunky bacon?"
Blank stares.
Why?
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](http://whyday.org/) on August 19, as [the organizer of whyday pointed out on his blog](http://whyday.tumblr.com/post/9088333804). 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. ## Two Suppositions 1. If you can learn how to make a funny or surprising or even just visually interesting THING with something like [Processing](http://processing.org/), [LOGO](http://el.media.mit.edu/logo-foundation/logo/programming.html), [Scratch](http://scratch.mit.edu/), or [Shoes](http://shoesrb.com/), you can express yourself. 2. 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](mailto:[email protected])!). 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](http://simp.ly/publish/JFwJG2) on my Twitter account and skimmed a chapter or two of [Why's Poignant Guide to Ruby](http://mislav.uniqpath.com/poignant-guide/), 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. Happy whyday!
TWO SHOES WEEKEND
HI
I'm going to sponsor a programming festival this weekend. From my apartment. With you all in your apartments/houses/cross-Europe sleeper cars. We're all going to make TWO (2) things. Using SHOES, a fun Ruby toolkit for making computer things that work on Windows, Mac, and Linux.
PROGRAMMERS READ THIS
"Shoes?" you find yourself saying. "Cross-platform GUI toolkits are so dumb. Write once, run anywhere, yeah right. What a headache." You're probably right! I'm sure Shoes does all kinds of horrible things and I'm sure that some things that you think you want to do don't work in Shoes! We could spend all weekend arguing about what the best way to program is and what environment you should write it in and which color scheme you should use in your text editor. But how about this? This weekend, instead of doing that, you write 2 things, just because you can. There are lots of things that Shoes can do, like make an arcade game or turn some internet meme into a goofy interactive .exe/.app/.i_wish_you_linux_nerds_put_an_extension_on_the_end_of_your_binaries_right_now! So do that and show me what you've got!
NON-PROGRAMMERS READ THIS
"Shoes? Ruby? Programming? MAKING COMPUTER THINGS?" you find yourself saying. "I'm not some kind of magical wizard that can just turn lines of text into an interactive marvel!" But guess what! I'm here with good news! YOU TOTALLY CAN!
Shoes is relatively simple to use. You write your programming code into a text file (in Notepad! or TextEdit!) and then open Shoes and point it at your code and it just magically turns your lines of text into an interactive marvel!
If you fancy yourself a fairly analytical person, by browsing the Shoes website and The Shoebox, looking at example programs, you could probably piece together a simple program without too much effort. Will it be fancy? No, probably not! But you'll have a runnable program that you can share with everyone, right? And you'll go "I WROTE THAT" and that'll probably feel pretty good! If you've never done it before, you might find that you like it!
If you're not an analytical person, but you're a creative person, try Hackety Hack! It uses Shoes to teach you Ruby and then you also know Shoes! If you work through the Hackety Hack stuff on Saturday, you still have all day on Sunday to make two things! And that's all you have to do!
OKAY NOW EVERYONE READ THIS
I'm not sure if this is really going to work. I'm going to make my two things and I'll post about them here on Monday. If other people do it, they should definitely email me about it (and feel free to put it on your own blog too). I'll share whatever people do here as long as they tell me it's okay to.
The key is to make two things before Monday morning. You can make more than two things, but I want to know about the first two things you made (don't cheat!).