Notebook Heavy is Now Static

The site you’re reading is now statically hosted on AWS S3.

Because the only thing that doesn’t change is change and my site doesn’t change that much so I decided to change it to something that doesn’t change. - me

I decided to switch Notebook Heavy from a dynamically generated, traditional blogging engine, to one that is written offline and statically rendered. The reasons are both financial and operational, so read on to find out more about what I did and why.

Hugo

I looked a few different static site generators and ended up going with Hugo. There’s a lot of options, depending on what you’re looking for. The primary machine I develop and write on is a Microsoft Surface Book, so I wanted something that would be a relatively minimal install on that platform.

Sure, I could’ve gone the JavaScript route with something like Hexo, but I just wanted something easy. Hugo seemed to fit the bill and had all the standard features such as watch mode and a development server. A huge influence on me was how alive the community and the project itself seem. Hugo is getting constant contributions and not just by a single person.

There was even an importer from my previous system (Ghost), which took my export file and spit it out in Hugo form.

S3

I’m moving most of my cloud resources over to Amazon Web Services, so S3 is the right place for the right price. Hugo renders my blog very quickly (less than than the time it takes me to switch to the console to see if it rebuilt), and uploading to S3 via the AWS CLI is a breeze.

CloudFlare

I use CloudFlare in front of Vinyl Deals and it has handled the traffic with aplomb. I’ve used it to keep out certain people that shouldn’t be hammering away at my site, so putting Notebook Heavy on it was an easy decision. CloudFlare not only provides CDN capabilities, but you get SSL for free. Sure, there’s not a lot going on this site that could really require SSL — the site is read only — but everything should be SSL these days. When the site was dynamically hosted, I was paying for an SSL cert; CloudFlare provides a basic (read: Good Enough) one it for free.

I could have used an AWS CloudFront CDN network, given its supremely integration with S3 backends, but I didn’t need any additional features that CloudFront provides. It would have cost me more money to run that system. Shane Stillwell has a good writeup on how to do it all for free in AWS.

I did run into a little problem serving from S3 on both notebookheavy.com and www.notebookheavy.com, but a post from Will Vincent steered me in the right direction.

But Why?

Before, the site was running as one of many websites on an Windows Azure App Services instance. It ran Ghost, processing everything live. Since I first brought that up, a couple things have changed.

First, I no longer get Azure for free. Because my business was part of the BizSpark program, I didn’t have to pay for Azure resources for many years. Late last year, that changed and I started getting charged (the company had graduated many months earlier).

The blog ran on the same instance as Vinyl Deals and my goal is to rearchitect Vinyl Deals and move it to AWS in a way that I think will give me more for less money. Before I can turn off the Azure server that runs Vinyl Deals, I need to get the other resources moved off as well.

Perhaps more importantly, my writing workflow changed. I no longer open up a web page and write my articles in the browser. I write in Markdown in a text editor and later copy the post to the admin tool. The blog has no dynamic content, so there’s no reason to be serving up dynamic content when it never changes. The recent advances in static site generators over the past few years made this simple.

Using source control as the file system/database (I use GitLab.com for my personal projects), I treat the blog posts like code. When I’m done with a post, I can push it to Git and have a continuous integration process pick up the change and deploy the latest version of the site.

Resources:

  1. Will Vincent Static Site Hosting with S3 and CloudFlare
  2. Shane Stillwell Using Free SSL And Cloudfront For An Angular React Site