During the winter holiday I managed to find time to start working on this blog. The plan was to launch before New Year’s Eve and get a head start on 2021. But as always when it comes to technology projects delays get introduced one way or another. Now in this particular case these delays were very much self-inflicted by my ability to scope-creep.
What started out as a simple blog to be hosted directly on Github Pages or from object storage such as AWS S3 quickly evolved into something else.Suddenly I was prototyping versions with different static site generators, evaluating different comment systems, performing Kubernetes deployments and configuring CI/CD pipelines. I learned a lot along the way and had fun doing it but now I am glad to pull the trigger and go live.
Another positive thing with exploring all these different areas is that it generated a lot of ideas for future posts. This aligns perfectly with the purpose of this site which is to pull my own weight after years of googling technology topics and start contributing with my own notes and thoughts.
What I ended up with
Static Site Generator: Hugo
For static site generator I choose Hugo. Main reasons being that it is written in Go, which is a language I have dabbled a bit in and intend to learn more about. That Hugo is really fast and has an active community sealed the deal.
As Hugo comes with built-in templates for Disqus comments I thought that was the obvious choice. But after some more reading about how Disqus brings it’s share of overhead, privacy and tracking implications I was no longer that convinced. Instead I started looking for other commenting solutions, ideally open sourced and possible to self-host in order to have better control over the end-to-end flow.
Talkyard checked both boxes as it’s open sourced and is containerized which makes it easy to self-host. To be fair, Talkyard is much more than a simple blog commenting solution and more like a full-scale forum and communications (dare I say platform?), which incorporates main features from Discourse, Slack and Stack Overflow. Might be a bit over-kill for my simple use-case but I liked the fact that the developer, Magnus Lindberg, is working very actively on the project and has some appealing focus points on efficient payload sizing, privacy and transparency.
I choose to deploy Talkyard to a pre-existing Kubernetes cluster. As there wasn’t any pre-made manifests/charts for k8s (that I could find) I wrote my own which are available at github.com/ChrisEke/talkyard-k8s. I have included a short quick-start in the README but I plan to do a more detailed post on this subject later on.
Hosting: Firebase Hosting
I spent least amount of time on selecting a hosting provider as most of these achieve the same goal in the end: making your static pages available over the internet. I picked Firebase Hosting mainly due to the fact that I have for awhile now been curious about the different Firebase products on Google Cloud.
Firebase also comes with a polished CLI which makes setting up a Continuous Deployment pipeline a breeze.
- CDN + AWS S3/GCP Cloud Storage/Azure Blog Storage
- Github Pages