Monday, March 29, 2010

Sunday, March 28, 2010

Batman, Satan, And Darth Vader

The really interesting thing about Batman is that he's the same archetype as Darth Vader and the figure we used to call Satan. A few hundred years ago, the Devil's other name was the Black Man, and they said he flew like a bat.

The archetype we call Satan, of course, once went by the name of Pan.

The goatlike features commonly attributed to the devil derive from the Greek pastoral deity Pan, who was half man, half goat. I have here a picture of a sixth-century Coptic ivory carving of Pan, and if you take away the pipes and give him a pitchfork, you're looking at the devil, complete with cloven hooves, hairy legs, horns, and beard. Oh, and prominent genitals, too.

The phallic aspects tend to get airbrushed out of the modern picture of ol' Scratch, but let's not kid ourselves. When Christian artists pondered the most dangerous and subversive of the deadly sins, they weren't thinking of securities fraud. It was only natural that they should seize on the frankly sexual figure of Pan. (I'm thinking here of Pan-as-old-lech, not the romanticized Disney version.) I mean, if you want a truly disturbing portrait of wickedness, what are you going to pick up on, mass murder? Too alien. Whereas sexual license . . . I'm not pointing any fingers, but this is a topic to which a lot of us can relate. Pan also had the advantage of being pagan, and since time immemorial the gods of one age have been the demons of the next.

These guys don't really come and go so much as they swap names like they were playing musical chairs.

Tuesday, March 23, 2010

Net Neutrality

Take Action Now

I'm Not A Programmer, Because Programmers Don't Exist

Here's what I used to hate about being a programmer:

I'm happy for this guy and all, but the idea that "my company let me make a decision about my code" used to make my blood boil with fury. My code is my code.

I say "used to" because it's not an issue for me any more. I don't code for hire. Depending on your point of view, I might not even be a programmer any more. If "being a programmer" means "writing code for somebody else for money", then no. I make my money coaching programmers, marketing a video I made about programming careers, and blogging. I even make a tiny, tiny amount of money speaking at conferences.

But I still write code. It's code for my own purposes - most recently it's little FasterCSV sessions in IRB, deciphering information from PayPal, Reddit ads, and my bank. If your definition of "being a programmer" just means "somebody who writes code", then I'm in.

You might wonder what my definition is. I don't have one. And as for your definition, I hope it serves you well, but I don't care about it one way or another. My opinion is: I'm not a programmer, and neither is anybody else, because programmers don't exist.

The world you believe you live in sometimes makes more of a difference than the world you actually do live in.

A few years ago I became convinced that a "programmer" is the equivalent of a medieval scribe. Scribes got money for their literacy. That was it. They had this skill which we now consider a fundamental requirement for democracy and/or civilization, a skill without which our world would fall apart. The skill was rare at the time, so they got paid just for having it.

My original interpretation was that programmers are people who have a skill which has already become a fundamental requirement for democracy and/or civilization, and if there are any places where our world is falling apart, such as journalism, it's because people in that field lack this fundamental skill. The moment you find a journalist who has this skill, you find capability and success. Similarly, technical literacy made the Obama campaign happen.

Technical literacy is a requirement for success in the political arena, just as in business and everyday life (try meeting people and telling them you're not reachable online in any way, shape, or form).

A simpler formulation and corollary: programming is not a what. Programming is a how.

Before we get into that, let me take you on a quick detour through the more complicated formulation, and its corollary. We'll start with fractals.

Fractals have a quality called self-similarity. Fractals share this quality with recursive functions, owing to the fact that they are visual representations of recursive mathematics, of which recursive algorithms are actually a subset. What self-similarity means is that features at a microscopic level correspond to features at a macroscopic level.

Here's a famous fractal, the Mandelbrot set:

And here it is with self-similar features highlighted:

Technical illiteracy is self-similar. I'm tempted to call it fractal as well, but that brings up questions which could turn this into an extraordinary tangent (or just an even more extraordinary one, depending on your opinion). The point is the self-similarity. Not only are there pockets of technical illiteracy in the knowledge of any technical literate - for instance, a Unix wizard might know nothing of Objective-C - but new pockets come into being every day.

Not only that, but many of these new pockets also create bubbles of intense demand. Examples include Rails and the iPad. Within bubbles of intense demand, the base rate inflates. When you see a programmer of average skill making a better rate in a hot new technology than a seasoned, masterful programmer makes in a less trendy language (or framework, or piece of hardware), it's because there are always new areas of technical illiteracy for the fast learners and pioneers to exploit.

You can make a good living this way, but you can make a good living a lot of ways, especially if you have a type of literacy so essential that the world falls apart in its absence. And that brings me back to the simple formulation. If programming is not a what, but a how, then "what?" is an open question.

Most people answer "what?" with "sitting at a cubicle." Some people answer "what?" with "hanging out with smart people, solving problems and learning new things for the fun of it." But there are lots of other answers.

Not long ago, I was using programming to learn more about the entertainment industry and to get better at making music. Today I'm using it to work from home in my sweatpants, looking out my living room window on a beautiful sunny day with birds singing in the trees outside. Tomorrow I might be doing something new with it.

Answer "what?" the way you want to. It might seem difficult, but there's a great sense of victory to it when you do.

speaking of victory

Monday, March 22, 2010

Steve Jobs Has Victimization Issues

In the early 80s he created a revolutionary product based on the idea that people should actually listen to Alan Kay.

Then he gets ripped off by Windows. He sues. He loses.

Microsoft proceeds to take over the world by making an inferior copy of the Macintosh into an open platform. More people want the system with the most apps than the system with the most perfect interface. Bill Gates pockets billions.

In 2010, Jobs again creates a revolutionary product based on the idea that people should actually listen to Alan Kay.

Now he's suing HTC, because Google is making an inferior copy of the iPhone into an open platform.

What does he think is going to happen? We've already seen how this story ends. More people want the system with the most apps than the system with the most perfect interface. And Steve Jobs should know this, because we all learned it by seeing what happened to him.

Fool me once, shame on you. Fool me twice, shame on me. I say this as a fan of the inspired artist that Steve Jobs is: if it really bothers you so much to get fucked in the ass like that, why don't you just stop taking your pants off in public and bending over for no reason?

Sunday, March 21, 2010

I've Read Five Steven Brust Books In The Past Two Weeks

Three in the last two or three days:

Two more (combined in one volume) while travelling to, and during, MountainWest RubyConf:

Another Video Testimonial

Saturday, March 20, 2010

Friday, March 19, 2010

MWRC 2010 Pix

Me with Matz.

The view from the house where I stayed.

Matz giving his presentation.

Pretty truck.

James Britt giving his presentation.

Some local graffiti.

Ben Maeby uses a Salt Lake City orange flag to alert drivers to his existence and prevent a painful demise. James Golick dodges the paparazzi with nimbleness.

James Golick with Matz.

Dinner: Matz, me, David Brady, Chad Woolley, James Golick, Andrew Shaefer, Alistair Cockburn.

After dinner. Same ppl as above, minus Alistair Cockburn, plus Brian Mitchell, Brandon Dimcheff, and Ginny Hendry.

Plenty more where that came from!

Totally irrelevant "graffiti" I drew with Prismacolor markers.

Thursday, March 18, 2010

Mark Dery On Zombies

Mark Dery (who also wrote the brilliant Culture Jamming way back in the glory days of Fringeware Review and the original print version of bOING bOING) wrote an essay on zombies.

Previously on my blog:

What Zombie Movies Are About
Link Roundup: Zombies And Postmodernist Literary Theory

Wednesday, March 17, 2010

Sunday, March 14, 2010

Friday, March 5, 2010

Google PageRank In Five Lines Of Ruby

I'm putting the finishing touches on a new, feature-length video I made. That's right, feature-length - it's as long as an actual movie, although not as long as Avatar or any of the Lord Of The Rings movies (thank Gawd). Among other things, my new video explains my presentation style in the context of the neuroscience which informs and inspires it, and explains my approach to blogging in the context of an analysis of Google's PageRank algorithm.

I'm making this video available very soon. I'm also going to launch an interesting new business where you can get videos from me on a regular basis. Think of it like PeepCode on acid, or Giles TV.

Here's an excerpt where I explain PageRank and translate it from the abstract mathematics of the original Google white paper into five lines of Ruby.

Cat Mosh Pit

Thursday, March 4, 2010

Mysterious Screenshot

I'm working on something new.

Monday, March 1, 2010

Create Your Own Programming Language

Update: I did a review of this book in another post.

And now for some extremely relevant advertizing.

How To Create Your Own Freaking Awesome Programming Language, Even If You Hate Compilers, Don't Know Anything About Parsing, And Think The Term "Lexing" Sounds Vaguely Pornographic

The book I want to read.
Matz, creator of the Ruby language.

It's been a lot of fun, and surprisingly little work, to get a language that covers 95% of what JavaScript can do.
Jeremy Ashkenas, who created CoffeeScript after reading the book, and using some of the bundled code (and who earlier created (J)Ruby-Processing, as well as an awesome demo app I ripped off).

Sample Chapter PDF

The book will guide you through the creation of a simple language written in Ruby. Once you’ve been through the exercises in the book and feel ready to dive in and create a real language, you’ll start from the template language running on the JVM (Java Virtual Machine) included with the system. And just to make sure you’re ready to use the template right away, we’re also including a screencast explaining the code.