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.