nullprogram.com/blog/2011/08/05/
If you see this post, then you’re receiving null program from its new
host: GitHub. The end of the month marks 4 years of my blog
(the last such announcement was two years ago), and what was
going to be the 2-year renewal with my old host. I took the
opportunity to reassess my hosting situation and reorganize my
back-end.
The repository that houses my entire blog is here,
You can run an entirely local version of my blog from that repository.
You could also make corrections, commit them, and give me a pull
request — not that I’m expecting that to happen.
Initially I considered going in the opposite direction. I looked into
renting out a VM, rebuilding my site from scratch as a Java Servlet,
and hosting it from the VM. That would double my monthly costs, but
give me a cool new thing to play with. It would also be a lot of work
building a back-end from scratch.
Ultimately I wanted to work entirely within Git. I wanted to write a
new post on my local machine, view it using a local web server, and,
when I was satisfied, commit it and push it as a commit to the real
server. My old situation had me checking out new posts by posting them
live on the real server. I didn’t like that.
I eventually discovered GitHub Pages. GitHub will host your
static content for free. Not only that, but they’ll process it with
Jekyll. That means I can push “source” files to GitHub and
they’ll “compile” them into my website for me. My blog is very
well-suited for static hosting, so this is everything I needed. And
the price is right: this is a free service!
Going back through each of my old posts, refitting them for Jekyll,
was a very time consuming process. Every video, image, and highlighted
bit of source code needed to be reworked. In addition to moving them
into place for Jekyll, I improved the organization of my videos and
images. At my old host, I highlighted source code with the
htmlize Emacs extension. Jekyll has a much nicer solution:
Pygments. However, this required stripping away all of the
htmlize HTML code, reversing all of the HTML entities, and placing the
Pygments delimiters; this was a process that couldn’t be automated
because it required a lot of human judgment.
One thing I did notice from reworking all my source code samples,
particularly more recent entries, was that most of my in-line code is
Lisp! Common Lisp syntax highlighting was the most common, though it
was really highlighting Elisp. My very early posts are dominated by
Octave syntax highlighting.
Due to static hosting, for comments I went to Disqus. It was
very easy and painless to integrate into my static blog. Unfortunately
I haven’t yet looked into the import/export situation with my old
comments. It looks like it should be possible to do. I can export to
the WordPress XML format and import them into Disqus.
Update: I have now imported all of the old comments. The process went
very smoothly and took very little effort on my part, since I had
already been storing exactly the right information in the right form.
For comments, I actually considered the pull request thing. If you
wanted to leave a comment, you would clone my blog’s repository, edit
in a comment, and ask me to pull in your change. That’s a very large
barrier to commenting, and I doubt anyone would do it, so I skipped
that idea.
So this is my new blog situation. I’ve completely moved away from
blosxom now. I trimmed some fat in the transition, so it currently
weighs in at about 128MB. I’d like to keep it under 300MB, but that’s
not overly important. Hopefully you can’t really tell the difference
between the new and the old. The RSS feed is in the same place, so you
don’t need to change anything to keep following. I did break my
“short” and “long” permalinks but no one was using them anyway. Even
though I’m now using GitHub, I’m not actually too dependent on
them. My transformation to Jekyll gives me more freedom than ever. I
could very easily move to any host at this point.