Finally I’ve got most of the “Lentil 1.0” redesign of Sam-I-Am.com uploaded. This blog (and the others) still need proper templates, but its 99% there otherwise.
I’ve gone with a content-driven model, where the html I store on my server is my structured content, data and meta information all in one standardized and well known format: (x)html. Navigation is built off of an xml structure I build of the directory tree, and transformed via XSLT to make my left nav, and queried to build the breadcrumbs, sitemap and so on.
An apache Handler is defined to route requests for html files through my perl cgi script. It does several jobs, extracting metadata, splicing the content into its presentation template and including the static and navigation pieces. A cacheing layer ensures this expense is only paid when a necessary - checking the content, template and a few other lastModified dates before retrieving the stored, pre-built page from a filesystem based cache.
I got to use a lot of great modules (e.g CGI::Application, HTML::Template, XML::LibXML/XSLT, Cache::FileCache) and wrote a few of my own, gaining significant code reuse across the main handler cgi, the admin interface, 404 handler, directoryIndex handler etc.
Client-side coding: its an all CSS layout; validating XHTML (bar the use of a few iframes); flexible width; highly accessible - with user-scalable fonts, a sensible content flow (roughly: page heading, synopsis, breadcrumbs, main content, main nav and persistent nav) augmented with jump-to links to quickly reach the navigation. Some sparing use of DHTML adds rollovers on the navigation, without cluttering the markup with event handlers.
IA: I’ve reorganized a little, grouping content under 3 main silos: Work, Personal and Play. The physical directory structure is changed in some areas, others not. My 404 handler uses a moved URL lookup file to attempt to either redirect to a new location or suggest a starting point where a 1:1 match cant be made. Its all a part of my “No Page Left Behind” philosophy, fighting link rot at its source - home pages like this.
Phew. It wont pretend it came easy. But it was fun, I learnt lots, and hopefully it’ll make whats already here easier to use and allow for pain-free growth and evolution.