« Safetyland: Little Red Concept Vehicle | Main | Installing the Perl Image::Magick module on CentOS 5.2 »

Saturday, December 27, 2008

Shadow Server Enters the 21st Century

It's funny how things have a way of coming around. When I originally implemented Shadow Server more than eleven years ago (it was originally posted in August 1997), some people thought it perfectly absurd to use a Perl-based CGI application to create drop-shadow images on demand for users. “Certainly, any sane user will just run an image editing program on their own computer!”, they exclaimed. Others mocked CGI applications as passé—why not use a Java applet or something equally trendy? (Answer: because you can't—Java applets run in a “sandbox” and, for security reasons, cannot access files on the local computer's file system.)

But that was last century, and now it's all Web 2.0, and the concept of a “Web application” which provides “cloud-hosted generation of corporate identity graphics” with a “browser-neutral XML compliant interface” sounds so with it that you're inclined to look up to be sure you're not about to be buried under a pile of venture capital raining from the sky. Since Shadow Server is (without the slightest change in design) now so deliciously buzzword resonant, I thought it time to update the “user experience”, while retaining the retro-look of the original Web service. All documents, request forms, and results returned by the server are now XHTML 1.0 Strict DTD documents, with Unicode text elements for special characters. PNG files are accepted as input in addition to JPEG, GIF, and the other previously-supported formats, and PNG is now the default result format (JPEG and GIF remain as options). Given the increase in speed of the Web over the last decade, I selected non-interlaced mode for all result images: this yields a smaller file size, which loads more quickly on today's faster typical Internet service.

Shadow Server is built upon the pnmshadow program also available from Fourmilab. I updated all the on-line documentation for this program to XHTML 1.0 Strict as well.

Posted at December 27, 2008 13:35