So I Built a Blog
Published Sun 13 August 2023 by Daniel Playle
TL;DR
I built my own blog to share some of my technical/lifestyle projects. I've used Pelican on Cloudflare Pages with R2 storage.
The Why
I've worked on a number of projects outside of any gainful employment, such as creating a smart home sensor network or losing weight to name just two. All of these projects have involved some degree of learning, and I'm of the opinion that sharing your methods and outcomes is good for others (to learn from), but also good for yourself.
The How
I've tried a few different blogging platforms in the past, but I never found one that felt right, and my usage of them always fizzled out quickly. Maybe the problem was too little customisability, or maybe too much, or maybe it was just the paywalls and adverts.
And with that, I picked the only logical option: I built my own! Having worked in web takedown and seeing how many blogs and businesses get hacked and end up unwillingly hosting phishing sites, I point-blank refuse to use a dynamic CMS like WordPress, and so I settled on the static web hosting framework, Pelican. It's extremely simple to use, and you can think of it as a factory: markdown goes in, static HTML comes out.
Cloudflare Pages supports Pelican apps and offers pipelines that integrate with GitHub, allowing for PR preview deployments. The free tier is more than enough for a personal site like this. But the thing that sealed the deal was that it went hand-in-hand with Cloudflare R2 which also has a generous free tier and importantly no egress fees. Wonder where that video on the home page is hosted? Cloudflare R2.
Cloudflare hasn't paid me, I just really like their free tier offering. It really is just that good!
The What
As I change this site, I'll be posting updates on how it is being developed as a meta-topic, but I'd like to focus on my technical projects (such as creating a self-contained AI photo frame). That said, I will sprinkle in a few lifestyle/non-technical pieces as well, such as my recent weight loss.