Also, a little bit of website backend work to make it all, well, work.

I’ve written about my workflow before, but it changes regularly, because, y’know, what better place to test your own skills than on your own website.

I write a lot of the content I produce with Day One, and enjoy doing so. It’s a really nice interface for blogging, much nicer than anything I’ve seen for “real” blogging engines like WordPress or Movable Type. Day One also gives me free Markdown, which I adore, as I much prefer Markdown over nearly every other lightweight text markup language.

Because Day One is only available for OS X (and iOS, but I don’t have any iOS devices), when I’m not at my Mac, which is now much more often, I wrote up a little hack that mimics at least some of the functionality. It’s called (pronounced ‘jot’, which appeals to an ex-APL programmer), and it behaves a little like Jekyll itself.

I also tweet prolifically, and about 50% of my output nowadays is content aggregated via Feedly—one of the very few things I like about the Feedly mobile application is that it works much nicer than the desktop application, and allows one to tweet from within the article with minimal additional interaction.

The code that sucks all this in used to be known as rubyone, then rudyone, and in the recent past I renamed it unbeldi. I might consider releasing it if I can improve the bugs out of it—it is currently chock-full of horrible little edge cases that I don’t ever hit because I don’t use the features that would cause it to explode, and I don’t like it’s handling of Twitter content, and want to migrate to embedded tweets soon.

unbeldi is horrifying. It reads a Day One journal, dismembers a Twitter timeline and scrapes ⍳ content to collate together a webpage which is, in the loosest possible sense of the word, a timeline of my day. It does so using a number of vile and reprehensible tricks, and I would like to kill some of those off eventually.

That’s content. Styles and layout are managed separately through an infrastructure imaginatively known as look. Stylesheets, written in LESS CSS, are processed with GNU M4, then RECESS from Twitter Open Source, and merge in Bootstrap and Font Awesome. I also automatically grab the latest jQuery, which is used for oddments here and there on this website.

Elsewhere, I also have my hacked copy of Paul Rouget’s dzslides, which I occasionally use to do presentations. I’ve hacked on it a bit, so it now is written in LESS, and I can automatically generate at least some of my presentations using the normal Jekyll build system that’s used for the rest of the site.

Once upon a time, I also maintained an index page of various things I jumped to regularly; that’s now fallen apart since I moved Bootstrap and the rest of the site styling, and it occurs to me I should probably fix it: it was a tour-de-force in using XSLT to do really evil things (and I should probably use Liquid to do it all now anyway).

I’ve always had a thing for well-designed, efficient build systems (which is one of the reasons I hate the GNU Autotools, but that’s another rant for another time). As such, I’ve written dozens of website build systems over the years, the earliest of which would be, I think, saharaweb, which used Pandoc by John MacFarlane, and has only, in the last year or so, been dismissed from my web builds because it was getting a tad too slow to handle thousands of pages.

Man, I remember when I had my first crack at building a website using Bootstrap, by cloning the build system of the Bootstrap docs, which was, at the time, Moustache. That build system, which depended on Node.js, as I do recall, persisted for quite a while in my builds, although I utterly loathed it.

Elsewhere, projects started switching to Jekyll. The first time I saw Jekyll would have been when in late 2010 or so, and I fell in love with it almost immediately, to such an extent that I actually cannot remember precisely when I came across it (unlike many other bits of software which I use on a day-to-day basis: I know, for instance, I started learning Emacs in late 1997 to early 1998).

I built this website in an awful hurry in July last year when I needed a website to point at from a design job, and it’s since slowly evolved, getting less and less generic as I went along. Bootstrap came, went, and came back again. Custom styles abounded.

Anyhow, the build system currently all works thus:

  • the core stylesheet is preprocessed with M4 to produce something I can point RECESS at,
  • JavaScript plugins, fonts and images depended upon by Bootstrap, Font Awesome, jQuery Lightbox and the site itself are all migrated,
  • the latest versions of jQuery and Lightbox are migrated in,
  • newindex, the now well-aged index, is built against its now-incomprehensible XSLT magic,
  • the tag lister runs; this is nothing more than the most evil hack I’ve ever seen, mostly because I didn’t understand quite how to use Jekyll’s generators at the time I wrote it,
  • Jekyll runs, migrating all content through Liquid and Kramdown, with a twist of latent semantic indexing, and
  • rsync copies the built site to our VPS.