What's changed?
Website
SSG: Switched from hugo to zola
I had no particular issues with hugo, but with zola, I'm more comfortable with reading the (Rust) source code in case I wonder how a feature works or to contribute in case I find a bug.
Template: switched from a more involved template to zola-bearblog
My old website was basically a second, not very well maintained CV, whereas my new vision for the website is a minimalistic blog. People who care about my CV can just request it on LinkedIn, no need to have a whole website for that. zola-bearblog is really minimalistic, focussed on readable blogs and comes with a dark mode. It also contained a lot of pictures hosted by third parties for technology logos, which was nice and colorful, but broke far too often. I also wanted to use something I understood properly, so I could hack on the template without having to be a CSS expert. It's also so small that it gets a perfect 100 on google pagespeed!
Infrastructure
Hosting: Cloudflare Pages instead of GitHub Pages
GitHub pages with a private repository would no longer be free, since my Github Education license had since timed out. Pushing the compiled artifacts to a different git branch also always felt a bit clunky.
First, I tried out Netlify. The feature of different branches being deployed as test pages on a different subdomain is quite useful. But when I tried out their DNS management, which is required to host something at the apex domain, I suddenly couldn't make any changes to the DNS setup anymore because of "Maintenance", for hours, without any information when I would be able to manage my DNS again. This was not reflected at all on their status page, which did not exactly make me very confident about their reliability.
So I tried out Cloudflare Pages instead. In features, it's on par with netlify for my intents and purposes and event beter for sites that grow in complexity as it's free build contingent is based on total builds, not build minutes.
There were some issues with the documentation on setting up the website:
- Cloudflare has rolled out a new "build system 2" that doesn't support building with zola easily (yet?)
- Build system 2 is the default for new projects so following the official Cloudflare docs for zola results in build failures
- using zola requires selecting the old "build system 1", but this isn't documented
- alternatively, asdf can be used to install zola, but this is only mentioned in some GitHub issue instead of being officially documented
- Sadly, the build system image is also closed source, so no contributions are possible there.
- The docs on the other hand are open-source, so I will try to contribute a fix to their documentation
With that out of the way, however, it worked like a charm. The build is now completely automated without draining my free Github Actions contingent.
DNS: Cloudflare DNS instead of namecheap
If you've ever namecheap, you probably know it's a pain to manage your DNS records on that platform. The UI is hard to navigate, even reaching the DNS record management requires a long time. They do have a terraform provider for managing the DNS, but it requires an API key that you can only receive when your account passes a certain revenue threshold - no obscene amounts, but still more than I spend.
Cloudflare on the other hand has a much nicer user interface and using the terraform provider has no further requirements.
I've also started using the blog.
subdomain instead of serving the website at the apex domain.
This makes future migration of the website easier, if I'm ever not happy with Cloudflare Pages' offering anymore,
since using the apex domain requires you to manage the DNS over the same service for Pages and many other static hosting services.
New lessons learned
I have to admit it's difficult to let go of the professional approach to choosing technologies that will be used for a long time on the workplace when working on private projects. Scalability, licensing, if there's a sufficient skill base among colleagues or a hiring pool for the technology or the opportunity cost of not having used $even_better_technology all don't really matter when working on a fun side-project.
Consequently, I sometimes get stuck in analysis paralysis, evaluating half a dozen technologies instead of commiting to any single one and actually getting done what I originally set out to do. I really had to stop myself from also trying out render or vercel for static hosting, or testing various DNS hosting services in the chase for perfection.
Exactly not having to worrying about these is the beauty of side projects So don't be afraid to commit to potentially imperfect technologies, focus on what you actually want to do and have fun getting things done.