Colophon: Under the hood of Ersatz Genius
I’ve had more than a couple of people express interest in learning the setup behind Ersatz Genius. In the interest of having a single thing to point to and say “In there’s the stuff you want to know” no matter how many times I am asked, as well as yet another way of stroking my own ego, I’m putting up this colophon.
(If you’ve never encountered a colophon before, you should check out the colophon of S. Wolfram’s A New Kind of Science. I’ve never read the book, but I came across it years ago (while trying to figure out what a colophon was) and it blew me away. I love elegant ego-stroking mechanisms, I do.)
So, without further ado, the machinery behind Ersatz Genius.
The entries ported over from my Tumblr account were originally written using Tumblr’s dashboard in Markdown (except for reblogs, written by other Tumblr users, which tend to be in HTML fragments). These were then retrieved unto my development laptop using an in-house tool I wrote for this purpose called keel (not yet publicly available; will update this post when it is). The retrieved Tumblr posts are saved as they were received using Tumblr’s own API; i.e., XML files containing Markdown data.
The body of later entries—i.e., those that went up after the move away from Tumblr—are also written in Markdown, although the posts themselves are contained in a traditional Py/Blosxom format.
Typefaces employed throughout the site are League Gothic, Cuprum, Linux Libertine and Biolinum, and Inconsolata.
The design is an adaptation of the one I used for the Tumblr iteration of this blog, streamlined and with features (such as the list of recent posts) added, that weren’t really possible under Tumblr. The basic elements of the design were, in turn, adapted from the design of a SourceForge project I have.
The whole shebang is tied together using PyBlosxom, modified through in-house plugins that are publicly available under the GNU Affero General Public License, version 3. These plugins do work that range from creating lists of recent posts, to helping facilitate pagination, to parsing the XML containers retrieved from Tumblr.
Entries are returned marked up in HTML 5 (validate), styled using CSS 3 (which, unfortunately, fail to validate as of this writing, mostly due to the draft status of said technology).