Cause or effect? I can’t decide whether (a) bad people simply like using certain technologies in bad ways, or (b) the technologies themselves are toxic, causing brain damage and moral decay in anyone who uses them.
Data-bearing technologies seem particularly susceptible to madness; things sound good at the start of a project but (like a creeping evil) gradually subsume every spare cycle in the data center, growing to monsters that eat entire products, swallowing whole groups of engineers and spitting out beet farmers and potters who “ain’t gonna touch a computer again, ever, man.”
Case in point: Almost every time I see a product with an SQL component, the database schema and the routines that access it are screwed up to a degree that beggars the imagination. I’m not going to get into a whole litany of things that have been wrong (“This doesn’t need a re-write, it needs a can of gasoline and a match”), but it seems that very few people actually know how to use a database without some kind of Bertold Ray radiation infecting their minds.
Rules of thumb for databases:
If your stored procedure takes more than twelve hours to run, and you think that’s okay to put into production, you should seriously think of doing something else. Like maybe digging holes for fenceposts.
If you are using rows as a means of remote procedure call (where everybody is polling for new messages), consider doing something else. See above.
If your application has three thousand views on fifteen hundred tables, your installer sets up over two thousand stored procedures, and query times are measured in cups of coffee and consequent trips to the john, maybe you should use something else to hold the data on a hundred employees. I’m just sayin’.
If you thought “Um, what’s the the problem with that?” while reading any of the above, I don’t want to know about it. Please go get a job at a competitor.
Case 2: XML.
When Christ returns from vacation he’ll be suspended from angels trumpeting the glories of XML, bearing DTDs that work and XML parsers that don’t suck (or at least, that don’t completely suck; even Heaven has technological limits). Until that happy time, we’re pretty much in the stink.
Don’t get me wrong. XML is great at some things, just not the things that it’s mostly being used for. It’s terrible for RPC, it’s a hideous substitute for INI files, and it just bloody blows great globby, orbiting chunks as a makefile replacement. Twice the obscurity and eight times the syntax is a poor substitute for data portability (which it ain’t) and clarity (hoo ha).
I can think of maybe three legitimate uses of XML, and they mostly involve document markup.
Case 3: HTTP.
You haven’t lived, you haven’t really tasted the breadth of life’s possibilities, the wonders of wandering freely on this fantastic globe we live on, until you’ve given up and walked away from your attempt at an HTTP proxy. That first clean breath of pure air in the parking lot as you realize “Hey, the nightmare is over!” is a memorable experience. The thrill as you burn all of the backup tapes on the grill in the back yard (lots of lighter fluid, natch) is nearly as enjoyable. The knowledge that you’ve purged the planet of another great evil . . . well, no one will thank you, but just imagine silent applause from the Shadowy Guardians of Freedom. If only people knew. But they won’t, because you’ve destroyed it all, every last cancerous bit, and it can trouble us no more.
The problem isn’t so much HTTP; it’s an okay standard – not the best thing, not the most efficient thing in the world, but adequate. The problem is everyone else’s idea of what HTTP should be. Or rather, how HTTP wound up to be, in their hands. Sometimes the hands are caring, thoughtful and responsible hands; hands you can trust attached to brains you can count on. But sometimes the hands are cunningly evil, leading you down a pretty path until, deep in the woods, in obscure corner conditions, they turn on you and do unspeakable, bad things to your sanity.
What you wind up with are edge conditions and misinterpretations that cause you to wonder how many people read standards. “Hey, it’s got GET HTTP/1.1 and a bunch of lines with stuff . . . [sniffs the air] . . . looks good, let’s ship it!” Not that the standards documents are all that clear sometimes. But still.
I have a stored-up rant on RPC, but first I’m going to bathe the cat, just to get in the finishing mood.