If you are reading this, then the mad scheme which has embroiled me for the past few days is complete. Soon, my army of atomic supermen shall destroy—
Let me try that again.
I’ve spent the past week or so rewriting the backend which manages the web log portion of ZedneWeb, and I think I’ve managed to put together pretty much everything I need. In particular, unlike previous revisions, this one does not move anything around. All the old URIs are still good.
The major changes are:
- Everything except the actual file serving now happens locally on my computer. This is actually a common strategy among web log systems, and it’s particularly nice for me because I don’t have to keep archives in three places any more.
- I’ve switched from having all the posts on a given day on the same page to having each post live in its own page. This only applies to new posts; in order to keep the URIs from changing, I have left the older posts in place. (This also means that those number signs won’t be appearing in new posts.)
- No more per-page calendars. Taking Matthew Thomas’s advice, I have cheerfully stolen Mark Pilgrim’s design of having a single calendar per month which lists each day’s posts by title. This works with old-style and new-style posts.
- Instead, each page directly links to the preceeding and following pages at its level.
Actually, the old design had that too, but only in the
linktags, which meant that only iCab or Mozilla users could take advantage of them. I still have hopes that more browsers will support site-level navigation, but clearly it won’t be coming any time soon.
- Posts now can have descriptions, which appear in places like the RSS feed and the new per-day archives. This general pattern was inspired by Tim Bray. (Mr Bray also inspired the binary search at the heart of the CMS, which allows the code to make requests like “find the first post on or after this date”. This turns out to be more useful than you might think.)
- The code itself is now written in Python instead of Perl. For all the goodness of Perl, I have to say that it doesn’t provide much support for larger projects. Python, too, has a “working without a net” feeling at times, but at least it doesn’t have hidden, non-local side effects everywhere. (On the other hand, give me a good set of libraries and see if I can’t make a more powerful version in Haskell.)
I may have some tweaking left to do, but I think this new framework will last me for a while. I’m already thinking about how to add support for topics.