Sunday, November 27, 2011

Perl blog post #1

Yes, I threatened to do it, but you didn’t really think I’d go through with it, did you?  Well, hah! to you, I say.  If you happen to be technogeekly inclined, specifically of a Perl flavor, then you may wish to wander over to check out my very first Perl blog post.  Or you may not; it’s entirely up to you.  But you apparently keep on reading this one, so you may as well read that one too.

In case it wasn’t clear, I can only write one blog post a week—I can barely keep up with that, so there’s no point in imagining I could manage two.  So on weeks that I write one over there, you get nothing over here.  Sorry.  Then again, I suppose there’s little point in imagining that you care that much ...

Sunday, November 20, 2011

If You Meet the Hype on the Road, Kill It

There is a principle known as Occam’s Razor; no doubt you’re familiar with it.  Ask most people what Occam’s Razor is, and they’ll happily tell you:

The simplest explanation is usually the correct one.

Actually, this is a bit of an oversimplification (but then, we’re fond of those, as I’ve written about before).  Perhaps a more correct formulation might be:

Simpler explanations are, other things being equal, generally better than more complex ones.

At least that’s how Wikipedia chooses to present it, although it notes that the actual words that Mr. Occam (supposedly) said were:

Entities must not be multiplied beyond necessity.

(Only he said it in Latin, ’cause that made him sound smarter.)  What you might notice about these successive phrasings is that it gets less and less emphatic.  First it’s “usually,” then it devolves into “other things being equal,” and finally ends up at “beyond necessity.”  Any way you slice it though, the point I’m making should be obvious: there’s a huge difference between the simplest explanation always being true, and it maybe possibly being true, unless necessity dictates otherwise.

Happily, as a Baladocian, I’m perfectly happy to believe both at once: the simplest explanation should be true, but it needn’t be.  I’m pretty easy-going on several sayings like that.  Here’s another one:

If it seems too good to be true, it probably is.

I absolutely agree with that ... especially the “probably” part.

The other day I was talking to a good friend (and co-worker) of mine, and he pointed out that he’s always highly suspicious of techniques (or processes, or solutions) that sound like a religion.  If you think about it, that’s just the “too good to be true” thing all over again.  In the computer world (you’ll recall that I’m a technogeek by profession), we run into this all the time, and I’m sure you’ve experienced it too, even if you’re not technical yourself.  Got a friend who owns a Mac?  Then I’m sure I don’t need to explain the Cult of Apple to you.  And technology is full of those: there’s the Cult of Microsoft to battle the Cult of Apple, likewise the competing religions of vi and emacs, the people who so slavishly follow Excel that they use it for everything, from grocery lists to corporate databases, and on and on and on.

When I was a young (and foolish) programmer, I fell into such a cult myself: the Cult of OOP.  OOP, or object-oriented programming, is a way to write software that is usually contrasted with procedural programming, although these days it’s more fashionable to compare it to functional programming.  If none of that means anything to you, don’t sweat it—it isn’t crucial to my point.  The point is, when I first had OOP explained to me, it didn’t sound that cool ... it sounded sort of simple and obvious, actually.  Then I read a book on it—not even a very good book, as it happened, but enough to make me understand what OOP really meant.  And, let me tell you: the skies opened up, and angels came down and blew their golden trumpets, and golden rays of sunlight lanced down, and all the darkness I had ever known was lifted, and I did see the light.  Glory, glory, hallelujah.  I didn’t know it, but I’d been converted.

Back in those days, OOP was just getting started: I really got in on the ground floor of that cargo cult.  There weren’t loads of people wandering around proclaiming that OOP was the One True Way of programming ... not then.  That would come later.  If they had been around then, I, like my friend, would have most likely turned up my nose.  But, as it turned out, now I’m one of the evangelists.

And here’s the thing: so is my friend.  Because, you know what? OOP really is better.  Not the “One True Way,” of course, because nothing can ever be that, but, given a system of sufficient complexity, that needs to be built at an average level of abstraction, OOP is almost always the best way to go.  Call me a religious nutjob if you must, but it really is true.  OOP lives up to the hype.

And yet there are still people out there who dig in their heels and put their fingers in their ears and go “LA! LA! LA!” and refuse to listen to the advantages of OOP, because those of us who know how to use it are just so goddamned enthusiastic about it.  It’s very frustrating to someone like myself.  Or my friend—I’ve seen him fighting with people who stubbornly refuse to listen to him when he’s extolling the virtues of OOP, and I know that expression on his face.  It’s irritation, plain and simple.

So imagine how I feel when here I am explaining to him about something that I know really is a whole new awesome way of doing things—agile, perhaps, or TDD—and he’s telling me he’s suspcious, because he smells dogma.  Well, sure: I’m suspicious of crazy zealots too.  God knows, when my other friend (and co-worker) tries to tell me how awesome his iPhone is, I mentally close the door in his face, just as I would for any Jehovah’s Witness (or Mormon) that shows up and rings my bell.  But, dammit: this particular stuff I’m talking about is different!

Of course, now I just sound whiny.

The title of this blog post is a reference to a saying attributed to 9th century master Lin Chi:

If you meet the Buddha on the road, kill him.

What this actually means, of course, is up each individual to determine, but a typical interpretation explains that the “Buddha on the road” is our conception of what Buddhism actually means, a symbol of the instruction of teachers and masters.  And we must “kill” that external image, because enlightenment can only come from within.  As the Buddha also (allegedly) said, as he was dying: Be lamps unto yourselves.  Which (purportedly) means, don’t listen to what others tell you to do, work it out for yourselves.  Of course, there’s a paradox here too: if we don’t listen to the authority of others because the Buddha told us to ...  I talked about this in reference to quotes, but perhaps the best way to illustrate the words of the Buddha is with the words of another great philosopher: Steve Martin.

Now let’s repeat the non-conformists’ oath:

I promise to be different!

I promise to be unique!

I promise not to repeat things other people say!


The hype of whatever the latest technical methodology is presents us with a similar paradox.  Popularity is no measure of quality—in fact, it’s more often the opposite.  But, then again, if a new thing really is as awesome as these things generally claim to be, how do you expect people to react?  Won’t they want to go around telling everyone, trying to share the good news with as many people as possible?  Exactly like ... a cult.  Which makes us suspicious.

I mentioned two things that many technical people find cultish: agile and TDD.  There have been many screeds against both: Steve Yegge (who I mentioned last week) has a really famous one knocking agile, and here’s one plucked at random from a Google search which talks about TDD.  Note how both use the word “cult” freely—gleefully, even.  Both of these articles are very very wrong ... but, then again, they’re both right.  They’re right about how people slavishly follow things they don’t fully understand and how stupid that is, even as they slavishly rant on, Dennis Miller style, about things that they don’t fully understand.  I’m into paradoxes and all, but this is enough to make a guy’s head spin ...

In case you do happen to be a technical person, I’ll point you at one last article.  This is a blog post by J.D. Hildebrand (an old friend of mine, as it happens), where he talks about how agile started out fighting the system, and now has become the system to be fought against.  It happened, if I may paraphrase J.D. (who is indeed paraphrasing others, to some extent), because people joined the cult.  They didn’t question what they were adopting, they just heard it was the latest cool thing and they picked it up and followed all the instructions to the letter.

This is wrong.  One must always question.  One must always be skeptical.  But does that mean that one must turn up one’s nose at things just because they are touted by the masses?  If we sneer at all those mindless drones, just to be hip, without truly knowing the facts, how are we any better than they are?  A suspicious mind is not the same as a closed one.

Sunday, November 13, 2011

A Tale of Two Bloggers

So, if you know anything about this blog (like, say, if you’re capable of reading the name of the damn thing), you know that I don’t have a high opinion of blogs, not even my own.  I gave a fairly complete explanation of why in my very first post, which was nearly two years ago, but I haven’t talked much about it since.  But recently I was reading a blog post that made me remember why I hate blogs, so I thought I’d revisit the topic.

The funny thing is, I didn’t hate the blog post.  Nor did I hate the blogger.  In fact, I have great respect for that particular blogger.  And yet ... it’s a perfect example of what’s wrong with the whole concept.

Let me tell you about two bloggers whose posts I read occasionally.  I don’t read any blogs regularly (for obvious reasons), but, every once in a while, someone whose opinion I respect will say “hey, there’s this cool blog post you should read,” and then I do, and sometimes I agree.  Since I’m a technical guy, mostly these blog posts are technical in nature, blogged by fellow technogeeks.  And, of course, blogs being what they are, often you end up seeing the same names over and over again on these sorts of things.  Some folks are just better at this whole blogging thing than others, and you start to recognize their names.  Now, if you happen to be a technical person yourself, you’ll probably recognize these names too.  If you’re not, just mentally substitute the names of some bloggers in whatever field you follow; I’m sure the points will apply just as well.

The first person I want to mention is Joel Spolsky.  Joel has a fairly popular blog that he’s been writing for over 10 years now.  He’s written on many, many different topics in the software industry.  He’s a working programmer, but he’s also run his own company, so he can hang on both the engineering front and the business side.  Joel is a smart, smart man.  I mean, he’s developed a lot of wisdom in 20 years in the software biz, but he’s more than just street-smart: he’s a very bright guy from the get-go.  He’s also very close in age to me, we’ve spent roughly the same amount of time as professional developers, and we’ve both owned our own shops.  In general, when Spolsky has something to say, I listen.

And here’s the thing about Spolsky’s blog posts: they’re either brilliant, or moronic.  There is no in between.  In fact, quite a few of them are both brilliant and moronic in the same post (see also my thoughts on balance and paradox).  There are various reasons for this.  Probably the main one is that his first job in the technical field was working for Microsoft.  Now, from everything I’ve been able to determine, from both reading stuff and talking to people, is that working for Microsoft (successfully) involves drinking some Kool-Aid.  I’ve read (or talked to) people who worked for Microsoft and loved it, people who worked for Microsoft and hated it, people who reported on Microsoft for a living, people who studied Microsoft and its employees, people who had friends at Microsoft, people who just interviewed there, people who volunteered for them online, people who had to interface with them, etc ad infinitum.  Microsoft is a huge presence in the software industry: it’s pretty much impossible to spend as much time in the business as I have and not run into many, many people with personal experience with Microsoft.  And, you know what?  They all agree about drinking the Kool-Aid.  Oh, the ones who loved it there don’t actually call it that, of course.  But you can see the red stains on their lips just the same.

And the thing about Spolsky is, he didn’t just drink the Kool-Aid, he friggin’ gargled with it.  And, see, if Spolsky just went on about how great Microsoft was, that would be okay with me.  I mean, I’d roll my eyes (I have definitely not partaken of that particular brand of Kool-Aid), but, you know: support what you love.  I can dig that, even if I disagree with your personal choice.  But Spolsky doesn’t just love Microsoft: he hates anyone who doesn’t also love it.  Basically, from where he sits, if you don’t think Microsoft is the greatest thing since the invention of the microcontroller, you’re a moron.  This makes him hard to take sometimes, and leads him to some conclusions that make me think that I’m not actually the moron in this equation.  If you see where I’m coming from.

The second person I wanted to talk about is the person whose blog post actually inspired this post: Steve Yegge.  Steve has a blog going back to 2006 (and one before that going back to 2004), and, while his output isn’t as high as Spolsky, his quality makes him just as well-known in technical circles.  He’s famous for “drunken rants” (his words, not mine) where he sets propriety and common sense aside and just tells it like he sees it.  While Steve has never worked for Microsoft (that I know of), he has worked for both Amazon and Google, so he’s got some insight into two of our other tech monsters.  Also unlike Spolsky, he never seems to have drunk the Kool-Aid—of any flavor—and is famous (some would say infamous) for criticizing his employers (whether his blog posts count as constructive criticism or not is in the eye of the beholder).

Yegge has a flair for peeling the veneer off of polite conversation and revealing the true face underneath.  He comes off as a bit of a jerk, but not the kind of jerk you want to punch: the kind you want to cheer for.  The anarchist who’s sticking it to the man.  The guy who’s not afraid to point out that wearing a necktie all day is probably cutting off all the oxygen to your brain.  The guy who works at the bottom, but is not afraid to tell it like it is to the man at the top.  Yegge has roughly the same amount of wisdom that Spolsky has, but he’s not so much deeply intelligent as he is just damned entertaining.  Not to say that Yegge is a stupid guy—certainly not!  Just pointing out that his insights are less intellectual introspection and more common-sense-is-not-so-common revelations.

Now, the opinions of either of these guys are absolutely worth reading.  If you’re a technical person and you’ve never read a blog post from either, you either haven’t been around long enough, or you’ve got your head buried in the sand.  More likely you’ve read a blog post from both, and even more likely you’ve read several of each.  There’s a lot of them out there, and many of them are great.  I highly recommend them.

But here’s why they’re still poster children for why blogs suck.

Reading a Joel Spolsky blog post is like listening to a speech given by a learned professor of a quasi-scientific discipline (paranormal psychology, perhaps, or cryptozoology).  You try to listen very intently to the brilliant parts, and just sort of ignore the insane parts.  Reading a Steve Yegge post is like listening to a drunk guy you just met who’s climbed on top of the bar and is listing off all the people that make the world suck, and, in the middle of cheering him on, you realize he’s a bit of a bigot.  It’s like “Yeah! Yeah! Fuck yeah! Wait, what??  Dude, get the fuck down from there and shut the hell up!!!”

In both cases, there’s a bit of cognitive dissonance going on.  You realize that here is a someone who knows a hell of a lot about your discipline, who has just as much experience as you do (if not more), whose opinions actually matter ... and yet they’re still capable of being just as short-sighted, just as prejudiced, just as downright stupid as you are (if not more).  Why in God’s name should I have to suffer through thousands of words from these people?  Half of them are going to be gold, but the other half ... man, I need those hours back.  Not just the hours I spent reading them, but the hours I spent shaking my head over the stupidity of them, and the hours I spent ranting about the audacity of them, and the hours I spent explaining to my friends and co-workers the unsoundness of them.  And that last part is hard, right, because everyone thinks these guys know what they’re talking about.  ‘Cause they have blogs.  Popular blogs, even.

But, the thing is, ANY MORON CAN HAVE A BLOG.  (Speaking from experience here.)  And popularity is no measure of intelligence or correctness, as I hope I don’t need to explain.  And, as I say, both of these guys are smart, and experienced, and entertaining, which makes it even worse.  Because they absolutely are worth reading, about half the time.  It’s just the other half that makes it problematic.

You know what I think the problem may be?  Editors.  Or lack thereof, to be more precise.  Back in the days before any idiot could slap together a blog and call themselves an expert, the bar to publication was convincing an editor that you had something worthwhile to say.  Now, I’m not saying that system was perfect.  On the contrary, it effectively suppressed the thoughts and opinions of millions of people, and many of those didn’t deserve that.  But the point is, many of them did.  And it’s impossible to tell the difference, now.  And even the ones who did manage to convince an editor that they had something to say worth sharing with the world often had many of their words cut out, and I bet you many of those words deserved it too.  Never underestimate the value of a good editor.

So, when I tell you that you shouldn’t read my blog, what I’m really telling you is this:  I’m a guy.  Just a regular guy.  I’m pretty smart, and I’m fairly experienced in a few areas, but I’m still just as stupid as you are.  I’m no better than you, and I don’t deserve to be listened to any more than you do.  And there’s no editor over here monitoring what I’m saying to make sure that, in the end, it’s going to be worth your time to read it.  When you read this blog (or any blog), you’re taking a chance on whether you just wasted half an hour (or so) of your life.  Is that chance worth it?  Well, I suppose you must have figured it was, since here you are.  But don’t forget to bring your salt.  And, in the final analysis, use your own common sense to decide how much of what I say is valid, and how much is my own demented rambling.

Because, after all, I’m just a guy, and this is just a post on a blog titled Do Not Read This Blog.  What did you expect?

Sunday, November 6, 2011

Happy Birthday to Me

Seeing as how yesterday was my birthday (yes, that's right, blog fans: your humble author is a Scorpio), I'm giving myself the day off.  Around here we have a strict your-birthday-lasts-the-whole-weekend policy.  And I plan to enjoy the one time of the year when everyone has to do what I want for a change.  So go find someone else's crazed rantings to read for this week.  Next week, you can come back.

Assuming you haven't wised up by then.