(Apologies for the repost of yet another old blog entry. It’s a very busy week at work. However this one is sufficiently old that most of you will have forgotten it, and it plays into the little SEO experiment I’m currently working on which has gotten me top placing on Google under the category “Goat Nipple Electrocution.”)
| Editor’s Note: I hunderstand how someone may find humor in what is a very serious problem afflicting many people in the world today. I assure you, however, that this is no laughing matter for the victims. I ask only that you attempt to suppress your completely human desire to snicker uncontrollably at someone else’s misfortune. |
You know, I hate to complain needlessly. I hate to be trendy and bash Microsoft simply for being the cold, heartless corporate machine that they are. I’m just one guy and even I can see how having to deal with so many ignorant people can lead you to do some really cruel things sometimes–and I only get a couple dozen of them, not half the damned planet, calling me with inane questions 24/7. On the other hand, somebody spent a lot of time and money training me in the fine art of computer programming. I spent years obtaining pieces of paper from accredited institutions just for the rights to say, “I’m not a moron. I know something about computers.” Right now, however, I’m thinking of calling all of those so called professors who claimed to be training and preparing me for life in the real world and making a few bold generalizations about their lineages, for nowhere in my extensive training as a computer professional did anybody prepare me for “Error 80004005.”
Maybe I’ve led a sheltered life — like somebody who has eaten a perfect diet and never broke wind until they were somewhere in their mid-40’s. I’ve been doing this stuff for something like 15 years now without having to deal with this. But now it’s driving me to drink.
This first cropped up when transferring a web application from an existing server (which I built) to a new server (which someone else built). Mind you, it has worked fine for over a year to this point, with no indications there was a “serious error condition” brewing in the background. Since the new server was top notch, running the latest and greatest software blessed and distributed by Emperor Gates himself, I figured there would be no problem.
As usual, I could not have been more completely and utterly wrong.
error ‘80004005’ Unspecified error
And not right away, nosiree. My initial tests of the application showed everything was running great. Screens were loading, data was flowing in and out, replicating, compressing, indexing, and occasionally even kicking back to watch a ball game with a tall frosty beer. No, this insidious little thing cropped up about an hour after I left the client’s site. Subtly at first, once or twice an hour, just to test the waters. By the end of the day, it was something like once every five seconds. That’s when clients start calling and insults start flying.
So fine, first thing any programmer worth his salt will do is try . This was the first sign of trouble on the horizon. You see, “error ‘80004005’” is what they call a “generic error message.” That is, they decided to write one message for about ten thousand different errors. Apparently, as with groceries, sticking to generic error messages helps keep the cost of your software down, which is why this new Windows crap is only three times more expensive than the old windows crap.
As you can see from the previous link “Error ‘80004005’” can mean “file not found”, or “DSN not found”, or “registry key not found”, or “couldn’t lock file”, or “I’m still mad at you for staying out late and drinking with your buddies so I’m not going to give you any #@%+! data, bucko”, and nauseum.
This is why Al Quaeda hates us, by the way. These lazy assed fuckwits who can’t be bothered to come up with different numbers for different errors drive around Redmon, Washington in Mazda Miatas and are richer than Saudi oil sheiks.
You will also note that there is no explanation on that page for my particular flavor of “Error 80004005”–namely the one called “Unspecified Error.” Don’t bother trying to get help from Microsoft’s phone support, because the error is, much like Dick Cheyney’s present whereabouts, completely and utterly “unspecified.” You would essentially be paying your $150 (or whatever Microsoft charges you for assistance in translating inane error messages these days) to sit on hold for a couple of hours, eventually getting hold of a semi-human being so you can say something intelligent, “Yeah, I got an error message … ummm … which one? … Well, I wish I could specify which one it was.”
Now, I don’t work for Microsoft or anything, but it seems to me that there was somebody on staff who wrote the code that traps for errors in the cold, ucaring bowels of ADO, then translates the little ones and zeroes for display, in the language of your chose, on the screen. Maybe he didn’t understand what the error meant, and was thus unable to give it a name. Maybe he got tired of specifying 428 different flavors of “error ‘80004005’ and decided to just do a catch-all.” Maybe his wife went into labor and he had to leave work suddenly. Maybe he got really good seats to see the Moody Blues that night and decided to push off early. Maybe he secretly works for Apache and this is some cunning plan to make Microsoft loyalists’ heads explode. Fine, I don’t fault him.
Instead I will fault my opposite number at Microsoft, the project manager, whose job it was to check, approve, and sign-off not only on code architecture, but also code implementation and integration. This so-called “super”-visor no doubt took his massive paycheck home that week and spent it on booze to drown out the voices of his victims as they taunt him in his sleep every night. “Whyyyyy have yoooooou forsaaaaaken uuuuuus!? Whyyyy diiiidn’t yoooooou speeeeciffffyy theeee errrroooorr!?!?” I want this man found, and I want this man shot — not fatally, mind you, just a couple of warning shots high above the knees.
I don’t know how things work at the theme park that is Microsoft, but if I did that to a client, my boss would chain me to the ceiling, clamp his car battery to my nipples, and start that sucker up. This kind of lax development is unforgivable. (That is to say, lazily leaving out error trap messages is unforgivable; not the car battery thing. I have it on good authority that at least nineteen Fortune 500 companies have adopted “nipple electrocution” as a motivational tool for both customer support and product development departments. Rising HMO costs to treat nipple burns is the main reason they’ve had to ship most of these jobs overseas to countries that have less stringent regulations regarding tensile strength of nipple and scrotal clamps, and maximum alloted voltage per testicle and/or breast.)
But, more on that later, I only mention it now because putting the words “nipple,” “scrotal clamps,” and “electrocution” multiple times on the same page is sure to generate at least 200 more hits a day from overempowered teenagers using Google to seek out dangerous Internet-porn-induced orgasms.) For you mundanes out there who came here looking for true tales of “nipple and scrotal electrocution” and have never written ADO code (or done anything else productive for that matter) in your life, allow me to elaborate…
(er … on the perils of coding, that is. There are no more “nipple references” on this page…)
You see, In a perfect world, programs take data in (in this case, the program is an interpreter that takes another program as input), and perform various operations on it. If something goes wrong, a little metaphorical error flag is raised. When the program sees this flag, it stops everthing and prints a nice, friendly message on the screen, with the implied purpose being that this message will help the programmer (that’s me) determine what went wrong. I read this in a manual somewhere.
However, nowhere in that manual did it say “Yeah, but sometimes, error messages will be ‘unspecified.'” In fact they may try to trick you into thinking you’ve done something wrong. Your code may function perfectly on one machine, but yet fail with an extremely vague ‘Unspecified Error’ on a seemingly identical machine.”
I’m not alone in this, by the way. If you pop that error message into AlltheWeb, (the second thing any programmer worth his salt will do) you will find about a hundred different instances of people pulling their hair out at “Unspecified Error.” Though there seems to be no unified support group for the victims of 80004005 (until now), many of us have shared stories of personal triumph by “rebooting the server,” “rewriting the code,” “reinstalling Windows,” etc.
80004005 is this an indiscriminate monster that strikes seemingly randomly and without purpose. While there are hopes that some day a cure can be found, treatment solution, if there is one, seems to vary from person to person. I, personally tried none of the more-drastic solutions, because I was steadfast in my belief that I have written excellent code (as always). After all, this stuff has worked fine on seemingly identical machines for the past year!!! How can there be anything wrong with the code!!! For the record, my own personal victory (after nearly a day of searching and over $1000 worth of billibile time lost) came by “re-installing the MDAC.” No wonder Apache is eating Microsoft’s lunch.
