Saturday, November 12, 2005

The Exploding Chicken Head Machine

Long before Continuous Integration became a familiar process in software circles, a group of co-worker and I at Alpha Software built, what we called, The Exploding Chicken Head Machine. The job of the Exploding Chicken Head Machine (or Chicken Head Machine for short) was simple - build the code, constantly. Once a build was done, the log was copied to a known name and location and a new build was started. There were no notification smarts or automated tests, but it served it's purpose; we always knew the basic state of the source control tip.

The name for the machine came from the intersection of two different stories. First is the common image of the a chicken running around with it's head cut off. The second story is a bit weirder. At the time, we were using Borlands C++ tools; contained within their documentation for the beep() command was an anecdote that described how some unfortunate sound technician discovered the frequency at which chickens skulls exploded when their experiments started killing chickens at a nearby farm. (This sounds like a job for Myth Busters to me).

We knew this machine was stupid. It would rebuild again and again, even if no one had checked in code to correct a problem; running around like a chicken with it's head cut off. And we knew our builds would frequently fail due to builds catching partial checkins as we continued development, oblivious to its schedule; much like the exploding chickens next to the ranch. The simple fact is none of this mattered. We didn't panic if the machine had a problem. It was just a simple metric we used to judge the state of the build. If errors persisted across many builds a red flag was raised but that was it.

The Exploding Chicken Head machine served us well. It was simplistic and stupid but it required next to no maintenance and the extra information it provided was always useful. Long live the Chicken Head.

Post a Comment
The Out Campaign: Scarlet Letter of Atheism