A Blosxom-inspired Design
For those of you who are blog-engine conesseuirs, the feature set of the gemcast engine is based upon that of blosxom, give (a few) or take (a lot) of features. As with blosxom, the entries that make up my blog are created from my web server's filesystem. The hierarchy of directories drives the hierarchy of categories that you see on my blog layout.
Using the filesystem to store weblog entries is a great way to build a weblog engine. Well, I guess it's great if you're a Unix geek, anyway. I love having my content sitting there as a bunch of text files that I can query and manipulate with standard text tools, rather than locked away in a database or strange single-file repository format.
Gemcast's URLs are also inspired by blosxom. Navigating by category and by date works just like blosxom. Gemcast does not currently support "flavours", however.
Because gemcast simply renders text out of text files, it's easy to create what I call semi-dynamic content. For example, my "SpringViz
Downloads" and "Google References" sidebars are generated from simple shell scripts scheduled as cron jobs. That content doesn't change very often, so the semi-dynamic approach is perfect.
The way I approach sidebar items in gemcast is somewhat unique. Each category directory can contain ".box" files, which are rendered into sidebar boxes when the user navigates to that specific category. That way, content can be customized for each category. Symlinks can be used to share box content between categories, although I haven't felt the need to so so.
The basic operation of the blog engine is to "pour" content from the files in the filesystem into HTML templates. The templates are very simplistic, providing only simple variable replacement into the HTML template. There's one template for each content type: body, entries, and sidebar boxes.
More to come...