June 7, 2017
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:
- 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.
- Rebuilding the static files for the site got noticeably slower as I added content, which wasn’t a big deal but was annoying.
- 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 rsync
ing 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.
Comments? Please send me a message.