I had been thinking about the site for quite some time, but actual work did not commence until my wife started taking some web development classes at the Santa Rosa JC. The basic design of the home page was hers, even though I have embellished on the concept somewhat. I still run the pages past her as a "quality check" to ensure my ideas don’t go over the top... at least not too much. A book on general web development that I inherited from her and that I really like is The Non-Designer’s Web Book, 2nd edition, by Robin Williams and John Tollett. This is a great little book, and although some of the material is geared towards the rank beginner, it has some solid advice for how to create a good website that even some professionally developed web sites could stand to follow. (Always remember: alignment, proximity, repetition, and contrast.)

The site was developed using Photoshop 6/ImageReady 3. An excellent book on this tool is Photoshop 6/ImageReady 3 Hands On Training by Jan Kabili, developed with Lynda Weinman. If my house was burning down and I could save only one technical book, this would be the one. OK, so it might not rank high in the unrestricted classification, but in its category its clearly number one! I read through much of the book not once, but twice, and felt ready to rock ’n roll with some not-so-straighforward graphic manipulations. I did find that Adobe Photoshop 5.5 Classroom in a Book gave a better presentation of Photoshop’s vector drawing tool, but otherwise I was not as impressed as I was by the Hands On Training book. CIB did emphasize a different set of skills that did HOT, so I undoubtedly benefitted by studying both. Still, in the hypothical house-burning mental exercise, HOT would come and CIB would burn.

I have attempted to use style sheets with this site, employing Cascading Style Sheets by Eric Meyer as my guide. Unfortunately, this book does not have nearly the same number of fond memories that the two previous books do. I don’t think it’s Eric’s fault. I was very frustrated trying to experiment with the CSS properties. When they didn’t work, I wouldn’t always know if it was because I had misspelled something, or did my browser simply not support that feature? Being very anal retentive, I would also be aggravated when different browsers (especially Netscape Navigator vs. Internet Explorer) had significant differences between how they displayed my pages. To be fair to the book, he does cover these subjects and attempting to cover which browsers support which CSS properties in detail would have resulted in page bloat. I probably should have printed out the CSS Master Compatibility Chart that Eric maintains and kept it handy as I tried various code snippets. Finally, I will point out that Amazon.com readers rate this book very highly (4.5/5), and it outsells the previous two books as well. (And it’s ranked the #20 bestselling Amazon book in Denmark!?)

Finally, for HTML, I used SAMS Teach Yourself Web Publishing with HTML 4 in 21 Days, 2nd edition, by Laura Lemay. (Now in the 3rd edition.) My recollection of this book was that it was one of those massive technical tomes (831 pages by the time you finish the index, 864 pages in the 3rd edition) that you grind through to get the information. There certainly is a lot of information to learn regarding HTML, and it does cover aspects of HTML other than legal syntax, such as good web design. As one of the reviewers wrote: There is seemingly a countless number of books covering beginning HTML on the market today, with some better than others. This is one of the better rather than one of the others and will give you a sound foundation in the principles of HTML, both in structure and proper use. I would certainly agree with this. Finally, I was pretty interested to find this comment on Laura’s Colophon page: People sometimes ask me why I don’t have fancier web pages: backgrounds, frames, flaming logos, whatnot. I do that intentionally. I like simplicity. Just because I wrote a book about HTML doesn’t mean I need to include every HTML doodad on my pages. I heartily agree with her sentiments, even though I have gone to great effort to include backgrounds, doodads, and whatnot on my own pages - although I have stopped short of the flaming logos. (And I had come up with the idea to do a site colophon before I discovered Laura had one on her site. Honest. No, really...)

Parade Ground Programming

When it came to the Parade Ground, you’ll notice that there is quite a bit of duplication. Each basic photo can be displayed in six different ways (small, medium, or large resolution with either frames or no frames each). Each page has the same text, but several links are to the page displaying the next or previous page in a similar manner. There are also hyperlinks between various pages, and these always link between pages displayed in a similar manner. There are the links that re-display the current page in a different frame or resolution mode. Finally, there are the little touches like the “alt” text descriptions for the images. Not to mention the image maps for six diffferent sizes of the full army photo. I think having to generate all these pages by hand would have driven me mad! Simply mad, I tell you! Yes, ha! ha! ha! There is no way I could have kept my sanity! No! Not one little bit, I tell you!...

Er, sorry. I seem to have wandered off a bit there. Anyway, the technique I used was to write Perl scripts. Perl is a scripting language that excels at things like pattern matching and replacing those matched patterns with something else. So in essence I would write template HTML files that included some special codes, like {{resolution}}. Then I would write a Perl script that would do tasks such as “generate this file with the $resolution variable set to values of ‘a’, ‘b’, and ‘c’”. Then it is very easy to make this Perl script read in each line of the template file, substitute the value of the $resolution variable for each occurrence of “{{resolution}}” in the template, and write it to an output file whose name is based on the value of $resolution. Likewise for scaling the image maps, I wrote a Perl script to recognize series of digits that followed "COORDS=", multiply them by the appropriate scaling factor, and write them back out to the HTML file for the variously scaled photos. It took longer to create the first image map in Adobe ImageReady (there are 43 separate polygons laid out) than to write the code to scale them for the other five sizes of the map. As you might be able to tell, I really like Perl. I never would have attempted this scale of parallel web pages without it!