Keeping Up with the Kludges

There’s a very useful word in the techie sphere of influence that remains largely unknown in the wider world. It’s called kludge. According to Wikipedia, a kludge is “a clumsy or inelegant solution to a problem or difficulty.”

Kludges usually come about in programming when you either don’t have the time or the budget to deal with a certain problem. A basic example: you build a website that works just fine in all the modern versions of Mozilla Firefox, Internet Explorer, Opera, Flock, Safari, Netscape, Konqueror, etc. And then you get a call from an account rep in a different department asking in a strident tone of voice why the website is causing sparks to fly out of his client’s ancient WebTV box.

Jesus Christ, WebmasterIf Jesus Christ were your webmaster, he would clap his hands and come up with an elegant and elaborate piece of code that accounts for every browser on the market. This piece of programming legerdemain would not only deal with every WebTV and Mosaic 1.0 and Lynx browser still out there, but it would do so in a systematic way that would ensure compatibility with future unknown browsers and web services too. But you’re not Jesus Christ. Not only that, but you’ve got a million other pressing issues on your plate that are much more important than this.

On the other hand, this particular WebTV user happens to be the sister of the uncle of the CEO, and it’s worth spending ten or fifteen minutes to keep the CEO happy. So you grumble a little bit, fire up your text editor, and insert code that looks something like this:

<For all normal users...>
<Do this.>
<If the user is on a WebTV browser AND it's a Tuesday AND there's a full moon...>
<Do that.>
<Unless it's a Thursday and "Heroes" is still winning its timeslot, in which case...>
<Do something else entirely.>
<Now back to the normal code.>

Voila! You’ve created a kludge. It’s of no use to 99.9% of the world and it will slow down your application for everyone by some small fraction of a second — but on the other hand, it’s only taken you two minutes to write and the client’s happy.

Here’s a dirty little secret that the programmers don’t always tell you: all computer programs are full of kludges. Nobody ever intends to use them. Everyone’s application starts with the best of intentions and the cleanest of architectures. This is going to be the slickest widget ever! People will still be using it every day in 2035! Then life and the marketplace intervene, and the application wanders off track. You start to add kludges.

If Microsoft let you dig in to the source code for their operating systems, you’d see bazillions of kludges. Microsoft in particular is notorious for preserving backwards compatibility at all costs. Which means that in 20 years, when the only person left in the world using Lotus 1-2-3 is an old man with Alzheimer’s in Patagonia, the Windows Vista 20-Year Anniversary Edition (Now with Sherlock!) will still be able to run it.

But it’s not just computer programs that are full of kludges. Our lawbooks are full of kludges. I see from a page called Looney Laws that, in Michigan, a woman’s hair legally belongs to her husband; in Newport, Rhode Island, it’s illegal to smoke a pipe after sunset; and in Logan County, Colorado, it’s illegal for a man to kiss a woman while asleep. (Whether the same holds true if a woman kisses a sleeping man, the page does not say. In fact, it would be nice if the page would cite some references somewhere, but I won’t hold my breath.)

Braille ATMEvery time you drive up to an ATM and wonder why the hell there’s Braille on the keypad, you’re experiencing a kludge of sorts. If you ever find yourself locked in the trunk of your car, you can thank the Patron Saint of Kludges for that lever that lets you open it from the inside. Whenever you tear open your kid’s LEGO set and find a 15-page booklet telling you that LEGO is not liable if your child chooses to set the blocks on fire and wedge them down his sister’s throat, you’re seeing the results of a kludge.

But here’s the problem: the world is shrinking. Products and laws and programs that were once created with tens of thousands of relatively homogeneous white people in Middle America are now being exported all around the world.

It’s all well and good to translate your web application into Spanish and French. But are you going to translate it into Dutch, Farsi, Cantonese, Hawaiian, and Shoshone? What happens when you get an influx of web traffic from Pakistan? Are you going to rush out and create a kludge for every linguistic, cultural, geographic, religious, and political special circumstance out there? Of course not. You don’t have the time, and you don’t have the money.

The problem with kludges is that they get progressively more expensive as they pile up. It seemed like a simple thing to write a few lines of code to deal with that one WebTV user. But when it comes time to redo the website, you’re going to see a big mess of kludges for these one-off circumstances. Some of them will conflict with one another. What happens when you’ve got a WebTV user who’s also a Spanish speaker and color blind? You need to make more contingencies. You have to test each of those contingencies. You have to hire experts, put together beta user groups, deal with all the exceptions that entails.

And make no mistake about it, kludges cost money. LEGO needs to hire lawyers to vet every word of that 15-page booklet, they need to hire desktop publishers to lay it out, and they need to pay printing costs to actually make the damn thing. Then there’s the extra penny or so it’s going to add to the shipping cost, and the extra hard drive they’re going to need in their office to store all four hundred customized versions of these legal booklets included with every different LEGO set.

Microsoft Windows is on close to a billion PCs, and you can bet that there are plenty of colorblind Spanish-speaking WebTV users whose children like to set things on fire and jam them down their sister’s throat. Their new Vista operating system has somewhere north of 50 million SLOC (source lines of code). That’s a lot of kludges to sort through.

This can’t keep going on. We’re going to have to find ways to deal with the kludge problem.

It’s pretty clear to me that pushing people towards standardization will only go so far. There’s a large “English-only” movement in the United States that’s trying to force governments to stop catering to speakers of other languages, Spanish in particular. But you can only force 28 million American Spanish speakers to do so much. Besides which, what happens when English is no longer the lingua franca of business throughout the world? All it takes is a couple of economic shifts, and your kids might be learning Hindi in school and desperately trying to sound like Delhi natives on the phone, instead of the other way around.

No, I think in the long run we’re going to have to start carrying our kludges with us.

What does that mean in practical terms? It means that the burden of adapting to the world is going to shift from large corporations and governments to the individual. It means that rather than the content providers being responsible for translating text into your language, you’re going to take content from abroad and (Babel) fish the language you understand out of it.

Speaking futuristically, it means you’re going to need to find special glasses to compensate for your colorblindness. The city’s going to disclaim responsibility if you can’t tell the difference between the red light and the green one. So you’ll need a device that can continuously broadcast to the world around you that you’re colorblind. It’s probably not going to make the traffic light change colors, but it could certainly cause the ATM display to automatically switch to colorblind mode.

And along with that device, you’re going to be using a ton of middleware to constantly tweak the world to your hardware (whether that hardware be computer, phone, or neural implant). You’ll be translating content on the fly to fit your own time or place or idiom. It means you’ll be Greasemonkeying reality.

Luckily, technology is on the side of the individual. As processing power skyrockets and processor size diminishes, it’ll become easier to carry your personal solutions with you. (Although with the growth in cheap wireless networking, you might not necessarily be carrying anything.)

And this will be a good thing for everyone in the long run. Small businesses won’t have to worry so much about complying with crushing, confusing, and contradictory regulations. Software licensing agreements will shrink so that you don’t have to worry about clicking “Yes” to the fact that this software may be inappropriate for young children, despite the fact that you’re 85 and living in a retirement community. If you’re not allergic to peanuts, you won’t have to read a goddamn warning label about peanut allergies on every single product you buy.

And the sister of the uncle of the CEO will have to fend for herself. Imagine that.