November 2017

Volume 32 Number 11

[Don't Get Me Started]

Duct Tape

By David S. Platt | November 2017

David S. Platt

Duct tape. Duct tape. Where would this world be without duct tape? Its name implies usage on ducts, but I’ve never actually seen that. I have, at one time or another, seen duct tape plastered onto almost every object in the universe that I’ve ever observed. Fans of the “Red Green Show” (redgreen.com) know it as the handyman’s all-purpose secret weapon. The Apollo 13 astronauts used it to construct the air filters that saved their lives on their way back from the moon (go.nasa.gov/2yr9N7I). In Andy Weir’s superb science fiction novel, “The Martian,” astronaut Mark Watney uses it again and again to save his life while stranded on Mars: “Yes, of course duct tape works in a near-vacuum. Duct tape works anywhere. Duct tape is magic and should be worshipped.”

Yet duct tape has a darker side: the reputation of being used for unworthy hacks and kludges. “Held together with duct tape” is a pejorative phrase. The strong aluminum speed tape used for temporary repairs on airplanes (bit.ly/2wis5aQ) resembles duct tape when seen from a distance, causing passengers to freak out: “There’s duct tape on my plane!” (bit.ly/2yExbzC). And once a duct-taped hack is in place, it’s almost impossible to get rid of.

The concept of duct tape has wormed its way into our collective consciousness, even for non-tangible situations. Jim Morris sang that “Booze is the duct tape of life.” So, my geeky friends, what is the duct tape of software? What keeps patched-up Windows XP systems running today? What keeps critical applications alive long after all of their programmers have died?

One friend suggested that Google is the duct tape of software. Can’t remember something? Just Google it. The term entered the language more than a decade ago (bit.ly/2ftqCYf).

Certainly search engines, coupled with the ubiquity of smart devices, have created a world where any question of fact can be answered instantaneously. It’s an interesting foundation for a new social order, but it hasn’t been around long enough to hold the software world together.

Perhaps it’s StackOverflow. Whenever I get an exception I don’t understand, I Google it, and there it is on StackOverflow. No one could program today without StackOverflow or something similar; the programming world is just too damn complicated. But even StackOverflow doesn’t qualify as the binding energy of the software universe.

So what now? The pipe character? Shell scripts? Environment variables? VB6?

After extensive research, I’ve concluded that the duct tape of software is the infinitely abusable GOTO statement. The mere mention evokes fervent emotions both for and against its use. Edsger Dijkstra fulminated against it (bit.ly/2fwLuBU), and Frank Rubin fulminated against Dijkstra’s fulminations (bit.ly/2y8Y3uu). I’m sure you just did a double-take yourself, probably with a grimace, wondering, “Did Plattski actually write the G word?”

All the mechanisms we use to organize our software world—functions, objects, services, clouds, all of them—fall helpless before the entropy of GOTO. And yet, we can’t get rid of it. From the first BASIC compiler I used in school back in 1975, through today’s C# and Java, every tool contains GOTO. When a language developer tries to be virtuous by omitting it, some antisocial geek immediately adds it, as with Ruby (bit.ly/2yF9W8M), JavaScript (bit.ly/2xv2b7s) and Python (bit.ly/2xuMYU0)—the last allegedly an April Fools’ Day joke (hooray!), but it still works.

You can prove to me that GOTO isn’t necessary, that all Turing functions can be accomplished without it. I’ll even admit that you’re right. But as we learned from the Y2K kerfuffle, the continuing function of society depends on the continued operation of piles of code that no programmer now living has ever laid eyes on. It’s often full of GOTOs. You can’t get rid of these old systems, as they do indeed hold the world together. And it’s almost impossible to seriously refactor them. We’re stuck. So I hereby declare GOTO, that unkillable cockroach, to be the duct tape of software. Enjoy it.

One of these days I’ll write the complement to this article, a discussion of duct tape’s anti-particle, the positron to duct tape’s electron. Which is, of course, WD-40.


David S. Platt teaches programming .NET at Harvard University Extension School and at companies all over the world. He’s the author of 11 programming books, in-cluding “Why Software Sucks” (Addison-Wesley Professional, 2006) and “Introducing Microsoft .NET” (Microsoft Press, 2002). Microsoft named him a Software Legend in 2002. He wonders whether he should tape down two of his daughter’s fingers so she learns how to count in octal. You can contact him at rollthunder.com.


Discuss this article in the MSDN Magazine forum