After many, many years of being dissatisfied with having to use a CMS
for maintaining my blog I’ve finally switched to a static site generator.
Having to manage a CMS
was a total drainer. I don’t want to have to deal with updates, login bruteforcing attacks, or ensuring my site still works because of a change under the hood.
Goodbye, WordPress. You were pretty good, but not the best tool for me. Hello, Hugo.
Hugo
Hugo is a static site generator written in Go. It’s fast, powerful, and offers a number of conveniences that I really like… which leads me to the following:
Hugo Pipes
I’m using Hugo Pipes to build build my SCSS
files, run them through PostCSS, then minify and generate a subresource integrity hash.
It’s so easy in fact, that my entire CSS
stack is built during rendering of Hugo:
{{ $css := resources.Get "scss/index.scss" | resources.ToCSS (dict "targetPath" "css/build.css") | resources.PostCSS | resources.Fingerprint "sha512" }}
<link rel="stylesheet" href="{{ $css.Permalink }}" integrity="{{ $css.Data.Integrity }}" />
I love this because it means I don’t have to have a build tool or task runner like webpack, Gulp, Grunt, etc to handle compiling my assets. Every additional dependency used in your site (or project for that matter) is an exponentially increasing burden for you to manage. Maintaining a site should easy!
Shortcodes
A number of static site generators I played with had little to no support for HTML
in Markdown files. To me this is an absolute necessity. The trivial convenience of being able to easily add a GitHub Gist to being able to add my own shortcodes to handle HTML
<figure>
s was a really big bonus for me. Why some static site generators choose to not allow HTML
or not have support for some sort of shortcode is beyond me.
Micropub
The Micropub protocol is really taking off. IndieWeb, a community of people aiming to make the web more people-centric (as opposed to more corporate and siloed), came up with the Micropub protocol to make it really easy for one to create, update, and delete content on your own site. This means that even if you change from one CMS
to another, or change from a CMS
to a static site generator, you can still use the same apps and workflow that you would’ve used previous to the infrastructure transition.
So how does this tie in to the static site generator?
Well, I did what every typical programmer does, and made my own Micropub endpoint. Written in PHP
(my go to) and built on the Lumen micro-framework it has support for photo uploads and new posts. My plan is to clean it up a bit and open-source it. Post editing and deleting needs to be added too, but it’s not as important for me.
Rest of the Site
I’ve gone even more minimalist.
- Basic design.
- No custom fonts.
- No JavaScript (where possible, YouTube and Instagram are hold outs).
- No tracking or analytics of any kind (regrettably excluding those from the above sites).
2017 and 2018 were (and are) interesting years for the web. Web tracking and analytics have gone beyond fucking creepy. Sites are becoming increasingly larger per request, with an excess of JavaScript tracking tools burning CPU
cycles, draining batteries (if applicable), and chewing through data like there’s no tomorrow. I don’t like that web, and I don’t want to be a part of it.
Just yesterday I was looking at a single-page site built on a popular hosted site builder that weighed in at just under 7.5 MB. Seven point five fucking megabytes. For a single page website with a handful of images and a buttload of JavaScript being injected into the site.
Us developers have a responsibility to make the web a friendly place for all users, regardless of their device or internet speed. There’s no reason a site with predominently text and a few images should take up more than 3 MB. And yet here we are in a time where major sites who well and truly have the budget to invest in a properly-engineered site abuse the internet pipes we’ve come to take for granted. It’s not hard, it just takes empathy for the machine.
Micro-blogging to the Rescue
Previously this site was long-form content and YouTube music videos only. My thoughts were relegated to third-party platforms like Twitter. Ownership of data is important. Really fucking important. Manton Reece is right on the money when he explains why he made Micro.blog. Algorithmic timelines suck. Ads suck.
I want my content to be portable. To remain on a platform I control. Because I control the entire stack I don’t have to be concerned with the direction of the site, or dissatisfied with how a site is being run.
Because of this, my blog will contain short-form, long-form, image posting, and links. All in the one feed and all in the one spot. I hope you, the reader, like the new direction of the site.