Moving to Ghost
Recently, I moved my blog to a self-hosted Ghost instance. This finally ended my long search for the ideal solution for hosting a blog.
Some things I've tried include:
A Zola-generated static site: This didn't work too well, mostly because the customization language was not very good.
A Pollen book, generated as a static site: I was really excited about using Pollen, mostly because I always thought Racket/Scribble was the perfect "web template" technology stack. Unfortunately, these hopes didn't pan out...
- Despite using Racket's language system,
#lang pollen
files did not behave in the way I expect: they weren't self-contained programs that used Racket's excellent module system to import other files. Instead, the whole "book" needed to be encoded implicitly in a directory structure - The "book" structure is very opinionated, and getting it to generate a proper blog was difficult.
- Nothing was properly documented. Detailed tutorials are no replacement for references.
A hosted GitBook website: This at least got me a nice WYSIWYG editor and easy ways of embedding things like "hints" and images without worrying about hosting. Unfortunately, GitBook is not made for blogs. I actually prefer posts to be organized by category rather by time; what I really miss are comment sections and RSS feeds or other "subscription" means.
Just use Substack: This has most of what I need. I especially like the integrated email subscription system and sharing a community with other Substack users. But:
- I don't quite like Substack's typography, and it's not possible to really customize it
- Overall, I prefer the freedom and decentralization of self-hosting
Ghost, on the other hand, is basically self-hosted Substack, with very easy customization. This makes it easy to eventually add stuff like multilingual support (once I get around to writing in Chinese...) and integration with custom code.