New School

So, I think time is coming to move my blog, so all three of you, one inadvertent and a spambot who read this will need to update your links. I’ll update with the location when the URL loads something more than “It works!”

Anyway, in this transition I’ve decided I’m not going to use any blogging engine that makes things easy or whose extension interface is something other than code modifications on a small code base. So like any self-respecting programmer, I’ve decided to write my own.

My initial design sketch is based on a few principles:

  • Don’t reinvent the wheel
  • Use lots of small existing wheels
  • Don’t use HTTP where HTTP isn’t the answer

These somewhat paradoxical guiding principles lead to the following stack:

  • Git for the distribution and version control
  • org-mode for the internal format
  • YAML metadata
  • Raw source files for technical examples (linked through org-mode)
  • SSH for the upstream transport
  • Static HTTP for user-facing distribution
  • Simple Python text-processing middleware

This stack allows me a few simple privileges, I can maintain authentication with just SSH keys, and be assured historic integrity by git, and with the combination I gain a secure and efficient upstream transport.

Using the filesystem allows me to skip the reinvention of storage and categorization, and org-mode allows me for simple parsing of the source format with the benefit of external links. By keeping technical implementation to native formats lets me recycle formatting tools with very little integration for user-facing content. And with the sum of the toolchain, I would never need to leave Emacs to publicly express an idea in a well-formatted manner.

Hopefully, I can get at least some skeleton of this up by the end of the week, because the alternative is WordPress and I’m quite tired of even thinking of maintaining that.

Update 3/27/09:
The project is not dead. I was aiming for today as a functional prototype, quite ideally generating a post itself, but I managed to get really busy and sick at the same time. Still aiming for the end of the week, just a different accepted definition of “end”, mea culpa.

Update 4/3/09:
It lives! that blog is and will be run by the antipope engine, and Jim, includes the raw emacs string that I use to render with a brief run-through of the full rendering process. Code release coming in a few days after I patch up a few holes and make it a bit (not more, just a bit) presentable.