« December 25, 2008 |
Main
| December 29, 2008 »
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
13:35