Welcome to v2 of my website

You are reading this post on v2 of my website. I launched v1 back in 2011. Since then I have made a variety of minor, iterative design changes but the it was fundamentally the same static Jekyll-based site.

Back in 2012 I wrote about the benefits of static sites over alternatives. Over the ensuing years, I have found three major problems with maintaining a Jekyll site of this vintage:

  1. Installing Jekyll and my custom Ruby-based stylesheet compiler on a new computer is painful. There is always some Ruby dependency that refuses to install (e.g., the Markdown parser), making it impossible to update my site without some Terminal gymnastics.
  2. Rebuilding the static files for the site got noticeably slower as I added content, which wasn’t a big deal but was annoying.
  3. I couldn’t easily publish from iOS.

These problems were almost enough for me to switch to a more traditional blogging platform (I probably would have chosen Posthaven), but I ended up solving them instead by switching to Hugo, a Go-based static site generator. Hugo uses a single binary (installable with brew install hugo) with no dependencies. I switched to using the official SASS compiler as well, replacing my hacked-together Sprockets-based CSS compiler.

Hugo is substantially faster at building this site than Jekyll was, which made it possible to set up a shell script that rebuilds and republished the site every time a file in Dropbox changes. I can use Workflow on iOS to touch this file. This means I can edit the site’s content anywhere (it’s also stored in Dropbox), and easily trigger my computer to republish with a few taps on my phone. I use Pushover to notify me when the rebuild completes.

I’m serving the site on Nearly Free Speech, a rather unique web hosting company that provides pay-as-you-go Apache hosting, among other web-hosty things. I’ve actually been using them for a while (rather than GitHub Pages or Amazon S3, which are both more common places to host static websites). I do this mainly because I want to take advantage of some Apache configuration options that aren’t available elsewhere. And call me old fashioned, but I like the idea of Apache serving static web pages, just like the good old days.

I keep all the content for this site in Dropbox now, rather than in a git repository. I never looked at the version history in git, and I have grandfathered unlimited version history in Dropbox if there is ever a disaster. And using Dropbox lets me edit content with the excellent Editorial on iOS.

I do use a git repository for deploying the site. I used to use rsync, but it was very slow. Now, every time I trigger a site rebuild, the built site is committed automatically to a git repository, pushed to Nearly Free Speech (which sends only changes over the wire), and then the content is copied server-site into the public folder. This is a little more convoluted than I would like, but it is much faster than rsyncing or manually copying files to the server.

I also switched from styling with Bootstrap to using Tachyons, mostly because I wanted to try something new and I really like the way Tachyons handles typography.

I still want to make some more styling changes but am otherwise quite satisfied with this new setup.