First post

After several false starts and and lots of procrastination, this blog may actually stick around for a while. I’ve dabbled with blogging off and on, but recently I’ve decided that I really need to start writing some things down and make an attempt to share. So here we are.

First up, a few words on my choices of platform are in order. As I thought through how I’d go about doing this a handful of principles rose to the top:

  • I want to have complete control over my content and how it’s presented
  • I do not want to be subject to the whims of a platform operator when it comes to structure or publishing mechanics
  • I want to have the ability to archive and reconstitute my content as needed
  • I prefer to have the content be static and immutably-deployed, for performance, reliability, and security reasons
  • I want the toolset and mechanisms involved to be reasonably straightforward and non-opaque
  • I want to use the process to learn something new

With these principles in mind I went through a few iterations of framework options. I tried but quickly ruled out Wordpress, as while it’s a rich and full-featured platform it really does require MySQL or MariaDB to function (I started down the road of trying SQLite as the backing store, but that road seems quite overgrown at this point). Further, its reliance on PHP goes against the “static content” principle. I looked at Jekyll, Hugo, and a few other more esoteric static frameworks like FlatPress. Ultimately Hugo won out, mostly due to simplicity, availability of good themes, and a structure that made sense to me pretty quickly.

For hosting of the static content (sans images) I’m relying on NearlyFreeSpeech.net. I’ve been a customer of theirs for years. It’s inexpensive, fully-featured, and always just works. As an added benefit they are set up to make the use of LetsEncrypt certificates quick and painless. If you’re hosting your own site or email domain I highly recommend checking them out. They do domain registration too and don’t gouge on the annual fees.

For image hosting I decided to use AWS S3 fronted by CloudFront with a custom access URL. I’m doing this for two reasons - one, as inexpensive as NearlyFreeSpeech.net is, S3 is cheaper for storage of large assets like images; and two, I wanted to be able to cleanly separate the storage of binary assets from the text assets which are persisted in a GitHub repo. Win/win.

The publishing process with Hugo is pretty simple. I write the posts, iterate on them locally using the hugo server functionality, and once everything is ready I have a short script that builds the content and uploads it to my hosting site via rsync. Once I’m done I commit & push the source tree to a GitHub repo and tag it with the date. If I ever need to roll back or recover it’s a simple matter of pulling down the tagged version of the content and doing a clean push of the site. No need for backups or extensive rebuilds like would be required with Wordpress and MySQL. At some point I may build a triggered workflow that keys on the tag event in GitHub, but for now the manual process is sufficient.

Lastly, a shout out to Razon Yang for the awesomely simple yet elegant Bootstrap theme that I’m using for the blog. I’ve made a few minor customizations to it for my own purposes, but it was an excellent base from which to start.

Hopefully there will be something here now or in the future that you find helpful and/or interesting. I’ve decided that for now I won’t enable comments, so if you have feedback or questions reach out to me by email, Twitter, or LinkedIn.

Thanks for reading!

Comments


Copyright

CC BY-NC-ND 4.0