The email from the finance department seemed innocuous enough. The subject line simply said "The Program," with just a few lines of text in the body of the message about an application I had never encountered before.
Little did I know those words were the opening credits for a horror movie.
[ When it comes to server virtualization, Paul Venezia has supernatural abilities. Download his "Server Virtualization Deep Dive" PDF guide. ]
You see, "The Program" was a decade-old, custom-developed tool that hadn't been used in many years but was suddenly back on the radar. And it was horribly broken -- a zombie. The server it resided on had been converted into a VM at first, then upgraded from Windows NT to Windows Server 2003 at some point. The application was "written" in FrontPage, and the FrontPage framework on that server currently resembled raw hamburger. And it looked like it had company; there were companion scripts written in VB that would take the output of this Web form and do other things to it, but nobody could recall the original output format or what those scripts actually did.
Now, mind you, this zombie wasn't a critical app -- it hadn't been used in years. But in the minds of the users, it was an app that had existed for a decade and should still "just work," although it had stopped functioning long ago. It could probably be rewritten in PHP, Ruby, or something fairly easily, but that would mean reinventing an old wheel. Ultimately, that was the only way to resurrect this zombie app. That's what I wound up doing.
Zombie apps haunt every IT shop. They were slapped together by an admin or developer to meet a need at one point, then fell out of favor, but still wander among the server racks, waiting for the moment a manager's meeting brings them back to life with a simple question: Hey, didn't we used to have some tool that did XYZ? Sometimes these apps were purchased, so the source code isn't available -- and the documentation is non-existent. The original dependencies, function, and possibly even the physical server they ran on have disappeared into the ether. But the app is still there, half alive, half dead.
Peeling apart the layers of zombie applications like this is like the work of a coroner mixed with an archeologist. If you're extremely lucky, they were written in a reasonable language like Perl or PHP (though apps written in Perl 4 and PHP 3 are somewhat worrying). If you're not lucky, they were written in some other language like Pascal or Algol. If you're extremely unlucky, it'll be SmallTalk.