Hello! I’m back from a three-month posting hiatus. Together, the Haskell Platform OSX installer I’ve been working on and getting married have left me with precious little leftover project time.

In the last post in this series, we discussed the design of this website, which was a simple static happstack app with some dynamically-generated content.

In this post, I’ll describe the new simple content management system (code-named “Blaaargh”1) I’m now using to power the site.

Features & Requirements

I don’t need too many fancy features for this personal site. I don’t have much use for admin consoles or post editors; I’m most comfortable doing my editing in Emacs, and working with flat files. What I do need:

  • the ability to take a collection of marked-up text (pages/posts/articles) in a “content area” on the filesystem and have it published in HTML format using templates. (I chose markdown format on the basis of its ubiquity and the very convenient pandoc library)

  • the ability to syndicate an RSS/Atom feed for posts in a subdirectory, while excluding parts of the tree (static files, etc).

  • templatable, via a tree of cascading templates corresponding to the content area files — for example, requesting content/foo/bar/baz.md would cause us to search, in order:
    • templates/foo/bar/baz.st
    • templates/foo/bar/post.st
    • templates/foo/post.st
    • templates/post.st
  • the ability to deal with static files

  • requesting a directory will serve an “index template” instead, if it exists

  • reads configurable parameters (site title, base URL, hostname, directories to exclude from the feed, etc.) from a conf file.

Taking a look at the code…

You can check out my github page to take a look at the current source for this website, as well as the source for Blaaargh, both of which are a bit of a mess right now.

In a few days I’ll write another post about the basic design of Blaaargh (and clean up the code a little!).


  1. short for “weblaaargh”, of course, and chosen for its zombie feel