Listen to this instead.
Subscribe to the podcast here.
In my perpetual quest to learn something new and interesting, I gave this blog a complete overhaul.
For years, I self-hosted it on Wordpress. That was a pain, primarily because (at the time) it was difficult to lock down Wordpress and protect it from getting hacked. Coupled with things like mySQL and PHP updates and stuff was breaking all the time. I spent more time tweaking it than actually writing.
I moved it to Squarespace where it ran for a long time without issues until December 2018 when I made a DNS change (at the request of Squarespace) and it made the site unreachable. Squarespace support was of no help in fixing the issue, so I decided to move it to a basic Wordpress.com site using their Squarespace import tool.
Wordpress.com is great. A fully-managed Personal blog is $4/month and, if you don’t want to use the traditional Wordpress interface, the new management interface is attractive and easy to use.
Where it started to get annoying was when I wanted to do simple things like customize my CSS or add a Google Analytics tracking tag and found that a Personal plan doesn’t allow for that - you have to upgrade to a Premium plan.
I get it - it’s SaaS and they have to price it properly to incentivize people to move up to plans with a higher ARPU. But I also know that some of these things are trivial to enable and it felt unnecessarily restrictive.
So, during my Holiday Staycation, I began to explore static site generators. Static sites are incredibly fast because there’s no server side processing of web pages - the web server simply delivers a pre-built file. More importantly, there’s no CMS running code so the attack vectors are (generally speaking) only the OS and the web server and not some insecure Wordpress plugin.
I was reading a lot of Home Assistant docs (another Staycation project) and noticed that they were using Jekyll, so I decided to give it a try. I like the simplicity of page generation using plain text files, markdown and YAML and I found a highly regarded python script to import Wordpress posts so I could migrate my current content to static files.
After some configuration, the import script worked great, but I was unable to figure out why I couldn’t get any theme other than the default to work. I finally ran out of tinker time and had to go back to the office.
A few weeks later, while my wife was attending a Yoga immersive for the weekend, I started exploring other options. As it turns out, there are a lot of static site generators out there.
Ultimately, I chose Publii. It’s an open source static site generator with a full GUI and lots of great features. There’s a built-in utility for Wordpress imports but then, as I was starting the process, I decided to take inventory of the content.
Much of it is outdated (Review of the Palm Treo 755p, anyone?) or the equivalent of what would be social media posts today.
Sure, reviewing old posts was an interesting trip down Memory Lane but in the end, I decided to simply select posts to migrate manually, updating the URL structure and media file references accordingly.
My intention is to host this on a spare Raspberry Pi on my home network, just so I can learn how to set up things like dynamic DNS, domain-based routing through the firewall and reverse proxy configuration but for now, it’s hosted on GitHub Pages.
Publii is open source. If you want to support the project, you can contribute code or make a donation. I make a monthly donation through Open Collective but you can also make a donation via PayPal.