When we brought the site up live about two weeks ago, one of the first things we did was to post the “master ZIP file,” which contains all the source code, graphics, CSS, and so forth, for all of the examples in this latest edition of our book. Jeff and I both tested the file, and it unpacked perfectly on our various test machines so we figured “Problem solved. We’re good to go!” Not quite…
A week later we got an e-mail from a reader (Thanks Ed Snell!) who reported that his uncompress utility reported problems while unpacking the ZIP archive, and wouldn’t complete that task successfully. As it turns out, Jeff had created the archive on a Macintosh, and thus had also compressed resource fork information as well as what passes for “normal Windows files” these days. As our reader unpacked his files, his security software noticed the presence of “unregistered file objects” (the resource fork stuff in this case .DS_STORE files) and refused permission to perform further I/O, fearing the presence of some kind of malware.
All we had to do to fix the problem was to rebuild the ZIP archive with no resource fork elements present — a task achieved by re-packing the original source files in a ZIP archive on PC (no wacky .DS_STORE Macintosh files are included) or if we weren’t into the whole brevity thing, we could have downloaded the tainted ZIP file, unpacked it on a Macintosh, moved the files to a PC, deleted the offending files, then rebuilt the archive on a PC. Once we’d cleaned up the extraneous stuff, our reader’s machine was happy to unpack the ZIP archive and give him access to the files. Case closed.
The moral of this story, however, is that interesting cross-platform problems like these are part and parcel of the Web development process. Although you can test for things you know you should look for, testing can’t always catch everything — as was manifestly true in this particular case, where although we both checked the ZIP file on multiple test machines to “make sure everything worked OK,” we didn’t actually have the right software to detect the presence of invisible (but also unwanted and unnecessary) files in that archive. Just goes to show you that “it’s always something” applies to Web development, just as it does to so much else in life.