Lessons of Failure
Humans + Software Development = Always Interesting

Archive for September 2010



Language Flamewars and the Blub Paradox

Try this little exercise sometime.  In Google, enter your favorite language, followed by the word “sucks”.  And then do the same with a language that you just despise.  If you can stomach the results for the first page in both cases, you’ll notice:

  • Each language always has its strong Fan Boys (or Girls I suppose, but this seems to be primarily male dominated)
  • No resolution ever comes of ANY flame war

…despite the fact there are no end to the results that are relevant to the war at hand.  We all know flame wars are pointless, and yet we get some perverse satisfaction watching them in the same way people slow down on the highway when they see an accident with an ambulance present.  Why is it you can’t seem to get away from them?

That would be the Blub Paradox.  First posited by Paul Graham close to a decade ago, I came across it for the first time (yes, I live under a rock sometimes) recently and had an “Aha!” moment with it. Maybe you’ve known about it for years because you crawled out from the rock ages ago.  I don’t think it’s all that well known, considering just how many flame wars continue to pop up on blogs, discussion threads and forums.

The Blub Paradox

If you’ve never heard of it before, here’s a brief summary:

(Paul) argues that some languages are more powerful than others and posits a hypothetical middle of the road language called Blub. He describes the gist of the paradox thus:

As long as our hypothetical Blub programmer is looking down the power continuum, he knows he’s looking down. Languages less powerful than Blub are obviously less powerful, because they’re missing some feature he’s used to. But when our hypothetical Blub programmer looks in the other direction, up the power continuum, he doesn’t realize he’s looking up. What he sees are merely weird languages. He probably considers them about equivalent in power to Blub, but with all this other hairy stuff thrown in as well. Blub is good enough for him, because he thinks in Blub.

Most people without the experience of them can’t see language features as really useful things. I know an otherwise extremely talented programmer who can’t see the value of garbage collection and thinks it simply encourages “lazy programming” even as he struggles to find the right location to delete objects shared and referenced by many others. Are you claiming to be such a renaissance person as to be able instantly to recognize the value and worth of every new programming feature to which you are exposed?

Furthermore, I posit that the language developers spend the most time in becomes their Blub.  Meaning that, after some magical point in your development career, switching languages becomes more difficult because you’re trapped in the Blub Paradox.

Flame On, When You’re Stuck with Blub

If you’re stuck on your Blub, you’re going to have that same cynic view of newer programming languages.  And there are plenty around today that are getting press that, depending on your perspective, you may have that same “well, they’re probably powerful but they have all that hairy stuff in there I don’t understand” reaction.  That’s Blub at work.

I’ve become painfully aware that Java is my Blub.  You can see evidence of me stuck in the Blub Paradox in my posts about Google Go.  The continuum viewing paradigm above is absolutely bang-on:  Spotting a more powerful language is incredibly difficult once you have a long series of programming habits in a particular language.  Maybe it’s just a consequence of a long programming career.  Could be mental inertia.  It doesn’t really matter where it comes from, as long as you are aware of the effect.

You can probably spot any programmer’s Blub, just by asking what he or she works in daily.  Jeff Atwood’s is probably C# or ASP by now.  Larry Wall’s is perl.  Bjarne’s is C++.*  The list goes on and on.  If you’ve been programming more than 5-7 years in a language, you’ve probably got a Blub too.

What makes this even harder is that your day-to-day work totally absorbs your programming time, particularly as you get older with a family.  Finding time for new programming projects on the side gets squeezed and you find yourself falling back on things you already know instead of digging into something you view as weird, but potentially useful.  That squeeze may ultimately turn into, “Well, why bother with X when I already have Blub?”  That’s the danger of Blub.

It’s OK to have a blind spot.  But, you should be aware that it exists and avoid the prejudice filter that comes with it.

The next time you’re tempted to look down on a language because it’s weird, as opposed to just inferior, remember the Blub Paradox and maybe spend some time in it before you strike the match and grab the gasoline.  You can bet that I will.

* I am completely guessing on these, based solely on the fact of what I read about their current exploits.  I reserve the right to be wrong about any particular programmer’s Blub, while still retaining the right to assert that Blub Paradox is still in effect.

· ·

There’s a wide sense of lament since Oracle has taken over Sun and their intellectual property, including MySQL, Java, Solaris and their hardware sales business.  I’d say the average observer of this process might use the terms “slow moving train wreck”.  I doubt they are far off on this one.

You know what?  I think Oracle taking over Sun and acting stupid is actually a GOOD THING.

No, really I do.  Let me explain.

Sun has a long history of innovation with Java.  They also have a long history of missteps (take your pick, but I personally like the layoffs that happened biannually but basically culled the best folks who took packages to get out of the toxic environment)  and flat out screw ups (Hello?  Selling off your $1B/year professional services business because you’re not a “software company”?  Wish I had those kind of problems).  I have a number of personal friends who worked there (mostly past tense, but there are still a few stragglers left) and I don’t wish their employer to crater.  No, not at all.

So why is Oracle’s behavior regarding the death of Open Solaris or suing the crap out of Google for the use of Java in Android a good thing?  Easy:  We now have an opportunity to spur the development world into action.

The Empire Formerly Known As Evil

Flashback to 1995:  Microsoft (the former and still ranking Evil Empire) was king of the developer world.  Open source was a twinkle in the eyes of a few idealists.  Developers paid handsomely to Attack of the Clippy Zombiesbuy into the Visual Studio paradigm.  Or they bought from a competitor (Borland).  C++ and C were the de rigeur choices of language at the time.  Enter Java and the entire development world was turned upside down.  No one saw Sun as the disruptive innovator at the time.

Of course, other factors played into it over the years:  the rise of the internet, the Dot Com boom and server sales tied into Java usage, the rise of open source and the overwhelming support from the community regarding Java, driving huge amounts of frameworks still in use today.  But there was always a motive:  fight the evil empire.  We fight them because the evil empire doesn’t “get it”.  Remember Microsoft’s internet strategy in the late 90s? (From a blog post regarding the missteps of Microsoft, particularly Project Blackbird)

Adobe’s Mark Anders about his time at Microsoft. Anders is well known as one of the inventors of ASP.NET, along with his colleague Scott Guthrie. However, when he joined Microsoft in the mid nineties he worked initially on the project codenamed Blackbird. This was a kind of Windows-specific internet, and was surfaced to some extent as the MSN client in Windows 95. Although the World Wide Web was already beginning to take off, Blackbird’s advocates within Microsoft considered that its superior layout capabilities would ensure its success versus HTTP-based web browsing. It was also a way to keep users hooked on Windows. Anders told me that he never believed in Blackbird and argued that Microsoft should support HTTP instead. According to him, the executives at the time did not want to listen at first, but Blackbird had severe performance problems

Darth Ellison and the EmpireStuff like this always pisses off the right people. Microsoft didn’t get it, and people got mad.  Microsoft’s stupidity in thinking they could control the internet spurred lots of innovation from other companies to make the *real* internet even more valuable.  Eventually Microsoft capitulated and followed suit with everyone else. 

And that’s precisely what I’m counting on here for the Oracle debacle. Because Oracle isn’t getting it either (at least for developers). Tim Bray’s article today has a great quote from the Empire itself:

“You don’t get it. The central relationship between Oracle and its customers is a business relationship, between an Oracle business expert and a customer business leader. The issues that come up in their conversations are business issues.

“The concerns of developers are just not material at the level of that conversation; in fact, they’re apt to be dangerous distractions. ‘Developer mindshare’… what’s that, and why would Oracle care?

Let’s Shake Things Up

Java not good enough for Android?  Fine, let’s make a new language that finally innovates on the mobile device, unlocking us from the collective disasters of Objective C, mobile Windows, and bloated Java ME.  If Java 7 is going to die at the hands of Oracle, maybe that will motivate some development group to actively fork it in a meaningful way.  Or finally develop the successor language to Java that revolutionizes the software community the way Java did in the mid-90s.

This complacency about Java, MySQL, and the state of Sun products has got to stop.  It’s time to shake things up.  And the last time that happened, exciting times were had by all.

I can’t wait.

· · · ·