A Short Course On The Tragedy In Act One

Back in 2003 Raymond Chen, noted Microsoftie and venerable author of the excellent Old New Thing blog, wrote a bit about the propensity programmers had for, and problems caused by, reverse-engineering Microsoft’s APIs and hooking into them in unapproved ways:

“For example, BOZOSLIVEHERE was originally the window procedure for the edit control, with the rather nondescript name of EditWndProc. Then some people who wanted to use the edit control window procedure decide that GetWindowLong(GWL_WNDPROC) was too much typing, so they linked to EditWndProc directly. Then when Windows 2.0 (I think) removed the need to export window procedures, we removed them all, only to find that programs stopped working. So we had to put them back, but they got goofy names as a way of scolding the programs that were doing these invalid things.”

He’s a pretty good writer, and this stuff makes for a good story, but this “too much typing” line is… uncharacteristically disingenuous of him; the other side of that story was told, to put it mildly, a little different.

The Microsoft of the day was the Microsoft that came to be known as the evil empire, and for good reason; the combination of a dominant market position, rapid growth across a growing number of markets and no compunction at all about using what their consulting and support arms had learned about your company to leverage their growth into your market segment was legitimate grounds for a healthy dose of fear.

If you wanted to sell software you used their compilers and their APIs to talk to their OS and you consulted their support when you had problems. So if they suddenly developed an interest in your market niche they had a pretty good idea what the shape of your business looked like already. And their ability to leverage that information was very real, so much so that Microsoft’s announcement that they had plans to eventually make a similar product was sometimes enough to run competitors out of business.

This era is where the term “FUD” comes from, also not for no reason.

Because Microsoft could, and would, run the full-court press on your market segment if they decided it was worth their while. Veterans of the technical wars of the day can vividly remember their surprise, walking through decompiled assembler to discover the reason their program’s performance was in the toilet was because going through the official, approved-for-general-consumption Win32 call meant nothing more or less than calling a delay loop before passing unchanged arguments into a private API. Not for any technical reason, but as a defensive posture; just to guarantee that you couldn’t build a product as well as Microsoft could on the off chance that they woke up one morning and decided they wanted your niche.

So it really wasn’t about how long it took to type “GetWindowLong(GWL_WNDPROC)”; it was often the fact that, if you had to call that or something like it thirty-two thousand times and didn’t run that hack, your customer’s 386SX would spend twenty unresponsive minutes off in the weeds instead of fifteen seconds. Chen’s stories about having to reverse-engineer and accommodate poor programmer behavior are epic, and technically brilliant stories to be sure, but you should remember to read them in this light – these weren’t stupid programmers crawling up an unprotected stack for no reason. The Microsoft of the era just wasn’t a trustworthy collaborator. And for all the incredible, very-nearly-miraculous, brilliant work they’ve done maintaining backwards compatibility for applications doing horrible things, they brought an awful lot of that burden on themselves.

It took a protracted antitrust investigation, the long tenacity of free software and rise of the Web (with Mozilla keeping that torch lit through some long, dark years), Apple and later the primacy of mobile to really push Microsoft to the margins of relevancy where they are today. They’re still huge, they’re not all that evil anymore and they legitimately make some great products, but nobody really cares. They’re not making much of a mark on the things people do care about these days, mostly the social and mobile spaces. People aren’t afraid of them anymore because what matters changed, and developers and customers largely moved on.

That was a long time coming, too. But it’s starting to look like somebody’s getting ready to pick up that ball and run with it. A challenger appears!

This is just one example, but it’s really been part of a trend recently, and a good one to point to: take a look at this web-based Angry Birds demo, if you can. You might not be able to – it doesn’t work in Firefox – but the thing is, everything in there runs just fine in Firefox. Google has just decided that it won’t; not for any technical reason – they check some webkit-only CSS shim, it works fine in Safari – but just to keep it from working in competing browsers. Classier still, through the magic of view-source you can see that indignity bundled up in a <div id=”roadblock”> tag, a name I’d like to think gave somebody a moment’s pause, but I doubt it.

Larry Page said, back in the day, that Google wouldn’t put their own results ahead of other people’s because that would be bad for users, but that statement is apparently no longer operative. Likewise this 2009 statement from Jonathan Rosenberg, Senior VP, Product Management about open technology and open information:

Open technology includes open source, meaning we release and actively support code that helps grow the Internet, and open standards, meaning we adhere to accepted standards and, if none exist, work to create standards that improve the entire Internet (and not just benefit Google). Open information means that when we have information about users we use it to provide something that is valuable to them, we are transparent about what information we have about them, and we give them ultimate control over their information.

I’m ready to believe there’s still a lot of people at Google who really believe in this, and I’m sure that inside Google HQ they still have that kool-aid on tap. But those people are clearly not the ones at the helm anymore, and that’s going to have some broad repercussions – people who are using Gmail pseudonymously, for example, are well-advised to start planning a defensive migration, because that day’s coming.

But God knows to where you’d migrate to. The lunatic thing is that if you want the relative privacy of pseudonymous communication the way, back in the bad old days, you might have wanted basic computing functionality – that is, without kowtowing to an arbitrary, vaguely menacing megacorporation with arbitrary, vaguely menacing policies about your data – we might be getting back to the point where you need to rack your own box and learn how to roll it all yourself.

Dear Googlers: We’ve done this. It sucked. It was awful, a decade of near-total technical stagnation. It was WinCE 5.0 and Office 2003 and OSes with eight-year lifecycles and fucking Flash being the only way to deploy a new UI and everything interesting and promising and new pushed to the margins and excluded so that one company’s crown jewels stayed safe. And we might do it again, and it could be a tragedy or a farce or probably a bit of both. Trying to be more Apple than Apple and more Facebook than Facebook just means you’re trying to be less Google every single day.

It’s amazing, it is flat out astonishing, how much of the future depends on Google being the company that you, once upon a time, believed it could be. And you can still get there. To borrow a phrase, I’m not saying it’s too late for you, but the longer you wait, the closer you get to being Too Late.

But you need to do good. Saying you’re not evil isn’t good enough.


  1. Posted January 26, 2012 at 1:05 pm | Permalink

    Does it actually work in Firefox? Including Firefox 3.6 (aka, the version everyone uses because they are morons who hate change)? Because if it doesn’t work perfectly there, then I can absolutely see why it’d get blocked off from Firefox.

    And if it does… well, then I think it’s stupid. But if the purpose of that Angry Birds is to be a promo for Chrome and to get people to switch to it, then fair enough that you make it so it only works in Chrome. It’d be cooler if it worked in all browsers (i.e., it’d be a better demonstration of the idea that HTML5 can replace legacy Flash/ObjC shit), but if it’s intended to draw people into using Chrome specifically rather than HTML5 in general… I guess that’s not WRONG, really. It’s just kinda dumb.

    For the “putting their own results” thing, bitchplz. If Twitter would let Google have access to all their tweets, they’d put that right there with G+. Twitter demands millions of dollars for the privilege, though, so you can hardly blame Google if they don’t want to pay for access. (And Facebook is even trickier: How can you integrate your Facebook login into your Google login? And would it be a good idea if you could?)

  2. mhoye
    Posted January 26, 2012 at 2:27 pm | Permalink

    I wasn’t talking about just their search results, there, and I don’t think Page was either.

  3. Posted January 26, 2012 at 8:19 pm | Permalink

    Microsoft (the same bashed in the beginning of the post) released a html5 game that works just fine in all browsers – http://cuttherope.ie It just has an IE logo somewhere on the page.

    So, yeah. good point. Google out-evil-ed MS in this case.

  4. Posted January 26, 2012 at 8:34 pm | Permalink

    we might be getting back to the point where you need to rack your own box and learn how to roll it all yourself

    Admittedly this isn’t a perfect solution, but there’s plenty of smaller hosting companies that provide a shell-access server plus domain hosting, or you can even look at Amazon’s AWS (or some of the competitor cloud services that are starting to come out of the woodwork), so hosting it yourself isn’t as daunting a task these days.

  5. mhoye
    Posted January 26, 2012 at 8:36 pm | Permalink

    Yeah, it’s going to be a virtual host, not a physical box. And it’s going to use an awful lot of off-the-shelf software, but… that’s just not where the bar was supposed to be set now, you know?

  6. mhoye
    Posted January 26, 2012 at 8:37 pm | Permalink

    Mihai: That wasn’t bashing, I think? At least, I didn’t think that my assessment of them was inaccurate or unfair; they were a really aggro-scary company then, in a way that they just aren’t anymore.

  7. Posted January 26, 2012 at 9:07 pm | Permalink

    I didn’t mean to imply your description was in any way unfair – I wouldn’t know, TBH, I didn’t catch that MS as a developer.

    I consider bashing to mean expressing an overly negative, but argumented opinion on something.

  8. Posted January 26, 2012 at 10:28 pm | Permalink

    @mhoye: I don’t know about that — I don’t think that the bar’s been moved really. This same thing plays itself out in a lot of different places, and it all boils down to a lot of really big companies saying “We’ll make it really simple and convenient for you to do what’s in our best interest, at least until it’s at the point where we can start daring you to say ‘No.’” Wal-Mart, Google, Microsoft (back in the day), cell phone companies, cable companies, the list goes on.

  9. Eric S
    Posted February 8, 2012 at 8:53 pm | Permalink

    I agree with you otherwise, but why do you blame Google for the Angry Birds demo? It doesn’t seem like it’s made or promoted by Google…the share link is even a Facebook link, I see no Google+ tie in.

  10. mhoye
    Posted February 8, 2012 at 8:56 pm | Permalink

    Eric – if you open it up in Firefox, it says “Can only be played in Chrome”. Which is, of course, a lie. But hey.