About this blog

These pages showcase an experimental blog built on XSLT.

A new cefn.com site

Welcome to yet another incarnation of the cefn.com site, begun 10th Feb 2007. There's nothing quite like a system you've built yourself, see below for more on the tech used. I'll be using this to manage most of my publishing from now on, I think, but then I've thought that before.

On the main homepage you can see feeds of stuff I've published. When the aggregate feeds are added, this page will include posts hosted on other systems - precursors to this one, like the official site, the crazy site, the curiosity site.

Alongside that, there will be a bunch of other feeds I like or I'm tracking for some reason. Enjoy your visit.

Why yet another cefn.com?

I've tried the process of creating blogs on cefn.com a few times with 'commodity' blogging/wiki tools (see examples using see wordpress blog, see tikiwiki blog, see phpwiki blog and I'm never fully happy with the results.

I find that the moment I want to mess around with the data stored, for example adding tagging, or an extra data field on each posts, it's not at all straightforward. So now I'm having a go at building my own tool, a few layers above XML, using a variety of bits of glue code to generate outputs in presentation standards like XHTML, SVG, PNG and so on.

It'll be very simple to start with, with an XML schema storing the post structure and html fragments, with a rapidly changing set of data fields and relations as I go. Pages can then be generated from this data as necessary, slicing and dicing the original content according to anything expressible in XPath + XSLT.

My hope is that this minimal approach will make fewer commitments to specific platforms, deployment scenarios, tools etc. and will allow me to flex both the structure and the presentation of the information in ways which I find interesting, without too much overhead and refactoring. Ideally it should be possible to download the 'site build' directory to any computer on any platform, edit it using built-in tools, and publish it automatically.

How does the site work?

Currently, the whole site is managed using the ant build tool with a few simple XSLT stylesheets to generate the XHTML web content. CSS is used for styling.

I use RSync tunnelling over SSH as described here to manage the super-efficient upload of changes between the locally maintained copy and the remote one. I use svn as briefly described here to keep track of changes and make sure it's impossible to lose anything in case of severe stupidity.

Thanks to the guys at Open Source Web Design and Studio7designs for the free XHTML and CSS template which I based the blog on. Also to the guy at Iamrice who gave a Barcamp talk and put me onto this strategy, as opposed to building my own template (which was looking really pretty ugly). There's one thing I really have to remember a lot of the time...

  • i am not a designer
  • i am not a designer
  • i am not a designer
  • i am not a designer

...although I have some not so failed experiments I generally need a lot of handholding when styling any of the systems I build.

I've also done some experiments with generating SVG from blog data - graphing the data and rasterizing to PNG. The experiments I've already undertaken would have been very hard to achieve using the PHP+MySQL approach because of the tight coupling between the data structure and presentation. Tools like Smarty help to reduce this overhead, but there's still rather too much interdependence here. XML's a better bet, since XPath queries can be consistently composed and validated right there in the page template. Couple this with ant, to be able to launch arbitrary pipelined tasks like running XSLT2.0 transformations, versioning with a CVS server, SCPing to the webserver, and a powerful framework emerges for a full editing, generating and publishing workflow, from a bunch of free tools just wired together.

What's next?

Extensions to this approach which I've already looked into include the use of XForms in the X-Smiles browser to do the structured, validated editing of the source XML against the specified data schema. Currently I'm using the Oxygen editor, which accelerates my work by inline validation and auto-completion of my XML/XHTML hybrid, but exposes rather too much of the plumbing to be suitable for regular users.


In the end, this sort of approach should permit users to manage and edit a really very complex website simply by downloading a directory. Inside, there will be executables to double click, which are really ant tasks. These can launch a validating XForms editor to prompt for input, re-process the data to regenerate the site from the new content, and then publish the whole thing to the server, all using ant tools stored in that one directory. It would be interesting to see if the system could automatically version itself, keeping its software, schemas and source data synchronised with a repository. As a finishing touch I think I'll look at using Processing to read specially formed XML data and render it in a fancy visual interactive fashion, for no good reason at all.


To go to the front page of the original cefn.com site, click here


work (8)