I've been meaning to move off of blogger for a long time now. Blogger as a platform has been in maintenance mode for a long time now and I don't trust it to stick around. On top of that, I'm not satisfied with its templates and publishing workflows. So I've started a little side project to write my own static side generator. It's been surprisingly fun so far.
First thing I did was dust off my rusty HTML and CSS knowledge and write a very basic template. Instead of deeply nested obfuscated trees of divs like blogger creates, I am using the simplest possible sematic HTML and the least amount of structure I can get away with. The HTML actually looks clean and is fun to edit directly.
My blog is an image heavy journal of my outdoor adventures. So I wanted to make images both easy to work with and efficient. A post shows small thumbnails inline and fetches full resolution images via loading='lazy' fetchpriority='low'. Works well. The large images are only ever retrieved when you actually click through into the lightbox full view.
Speaking of which, I figured out a way to make the lightbox work in pure HTML & CSS, without any JavaScript. JS is still used for additional convenience features (keyboard navigation, mousewheel support, swipe gestures), but if you have JS disabled, it degrades gracefully and still allows navigation through the images.
Blogger's mobile template sucks IMHO. The new site structure I'm using is responsive to the device form factor without using any additional markup. Modern CSS flex layouts actually make this very straightforward.
Now the next question is how do I transfer my content over from the existing blog to this new self hosted template? To this end I plan on writing a C++ feed reader that consumes my blog's ATOM feed and converts individual posts to Markdeep. Markdeep will be my canonical authoring language. Then another custom C++ site generator will consume those and turn them back into HTML and ATOM.

That's the plan. This morning I made it as far as reading the existing ATOM and parsing the XML and contained HTML. This was already a useful exercise as it revealed a bunch of unbalanced / unclosed tags in my blog posts ;-P

Anyway. I'll try to keep updating this thread with progress. And hopefully before too long all this effort will be visible live on a blog near you.

I can now generate nice and clean markdown from my HTML. Success. So much better as an authoring language than straight HTML.

One interesting side battle was generating good file names for blog posts. I want them to be derived from the blog's title, but at the same time do not end up with nasty URL percent encoded unicode characters.

"Dent du Géant (4013m)"

becomes

/2024/07/2024-07-05-dent-du-geant-4013m.md

The trick was to use Unicode Canonical Decomposition (NFD) to decompose Umlauts etc into multiple characters and then throw away any non ASCII. Preserves the meaning/shape quite well and produces nice links.

Used TinyXML for parsing not only the feed but also the contained HTML. This is not strictly correct as HTML is generally not valid XML (for example, it contains tags like <br> that are missing a corresponding closing tag). But it's sufficiently close for my simple blog structure that a bit of search and replace before parsing does the trick and I can use a single library for parsing both.
Today's battle: getting libcurl to build on Windows. Took a while of wrangling annoying linker issues (I link everything statically to get monolithic self contained binaries - a non standard setup). Eventually succeeded and now I can fetch all blog images and resources linked from the atom feed. Originally meant just as an importer of my existing blog it now occurs to me that this is also the beginning of a general purpose feed reader. Import any blog as markdown. Hmmm.
Gnaah. Going through all the dead URLs in my old posts. Basically anything I hosted on Google's infrastructure no longer works. Picasa web albums. Google Plus photo albums. GCP tech demos. Just goes to show how important it is to own your own infrastructure and bundle stuff in a way that makes it easy to migrate from one host to another. Working on it...
And of course I can't fix tags in old blog posts because they have originally been published with an shtml extension that blogger now considers invalid and refuses to save as. In theory I could revert to draft and republish with a new permalink. But this implies that a) the link isn't all that permanent after all and b) blogger screws up the back dating and makes it look as if it was a new post. le_sigh