Productive Bugs

Software is buggy. As computer programs become more complicated and more interconnected, the likelihood that there is a problem somewhere just has to increase. In general, these bugs are bad, causing things to break or otherwise create problems. But every now and then, some software bugs can do something special. If you’ve ever done any […]

Windows_9X_BSOD

Software is buggy. As computer programs become more complicated and more interconnected, the likelihood that there is a problem somewhere just has to increase. In general, these bugs are bad, causing things to break or otherwise create problems. But every now and then, some software bugs can do something special.

If you've ever done any computer programming, you'll realize how easily one can create code that is more complex than you might realize and prone to bugs. In high school, I took a computer programming course. As a side project, I decided to see if I could create a rudimentary computer game. And by rudimentary, I mean that you controlled a circle that moved horizontally and could shoot at other circles. The code I wrote for the laser blast was supposed to look like a snazzy beam moving towards its target. Instead, for reasons I don’t think I ever entirely understood, the code ended up creating a rainbow-like beam that lanced across the screen. It was a much more impressive effect, completely unexpected, and not entirely understandable, at least to a novice teenage programmer.

This bug wasn't what I expected, but was "productive" in the sense that it generated something beautiful. I learned of a bug similar to my own when I was reading the book The Fractal Geometry of Nature by Benoit Mandelbrot. In it, Mandelbrot has a fun little aside where he shows a Cubist-style computationally generated artwork. He notes that the artwork was constructed from incorrectly written computer code, designed initially to do something completely different.

But there can be productive bugs for a variety of reasons, unrelated to aesthetics. There's Galaga, a classic shooter from the Eighties where your trusty spaceship had to eliminate all the bad guys. It was one of those archaic video games with simple graphics and goofy music, but also it had an intriguing glitch. Early on in the gameplay, if you eliminated nearly all enemies, and then avoided them for several minutes, the baddies would never shoot at you again. A curious situation but one that could be nicely exploited for some satisfying high scores.

Why does this happen? The variables that hold the “shots” get confused under certain conditions and neglect to refresh. Some speculate that this was an intentional feature of the game, to allow its developer to enter an arcade and rack up high scores. But whether intentional or not, it was often exploited to get lots of points.

Or there is the case of a glitch in the online game World of Warcraft that effectively mimicked a biological virus, sweeping through thousands of players and acting like an unintentional plague—one due to an unexpected error residing in the sophistication of the program. This sounds completely negative, but it did have one very interesting productive feature: it allowed epidemiologists to study how an outbreak occurs, and has resulted in scientists discussing whether to use multiplayer games as platforms for research.

Perhaps we can view software bugs the same way biological mutations are viewed. Taking a page from molecular genetics, some mutations don't do anything (these are neutral mutations) while others are deleterious and are the ones that most easily map onto the software bugs we are familiar with. But other mutations provide the grist for natural selection, as beneficial mutations. And so too might be some software bugs. Bugs can end up being productive, whether for artistic, prestige, or scientific reasons.

Top image:Wikimedia Commons/Public Domain