Blog migration, alternatives, and other thoughts

There’s tons of ideas and drafts scattered around my six note keeping apps, yet my blog averages about one post per year, not to mention the proliferation of Generative AIs. what’s going on here? It’s not like there’s nothing to write and whine about.

Let me skip the long story that “I was hosting a dozen WordPress sites in early 2000 as a freelancer…” and jump straight into 2025.

“The landscape changed a lot” is an understatement. Not only the good old WordPress, Drupal, Joomla are still alive and well-maintained, the freedom to choose different parts in the JAMstack is mind-blowing:

For starters, you could use Hexo as your Static Site Generator (SSG), and Strapi as your API and CMS; or Jekyll + Notion; or Hugo + Ghost. After that, you could do the good old Apache, Nginx, or Cloudflare, or, just host it on GitHub pages.

For now, let’s just find something works and let me start writing! it’s too huge of a rabbit hole for now. But there’s some criteria so this migration could last for a while:

  • Static Site Generation – there’s few feature I need for a dynamic blog, and it’d be great if there’s one less stack I need to patch from 0-day.
  • WYSIWYG CMS with somewhat decent media asset management – context switching between writing and uploading images breaks the flow of writing.
  • Ownership – you own your data, not some company, which is the primary reason I moved away from Blogger.

I have tested a few combinations:

  • Jekyll + jekyll-admin: Almost there, the dealbreaker is I cannot upload and insert image directly in the web editor.
  • Jekyll + Notion: Editing is a breeze, images went to S3, might need some extra hack to make it work. Notion is also vendor lock-in (you “own” your data, until you don’t) Also need some extra massaging to convert Notion data to markdown.
  • WordPress + Simply Static: Some learning curve with the new editor. Everything else works fine. 3rd party plugin handles the static generation part, it works now, but there’s a possibility it goes outdated / unmaintained. Original post data also not markdown (looks like HTML + WordPress special sauce)

A few more systems seems promising, plan to test some other time:

  • Ghost (CMS)
  • Hexo (SSG)
  • Hugo (SSG)

For now, seems WordPress would fit the bill – as long as I am using it as a CMS rather than serving directly from it. It’s pretty straightforward to rsync and serve the blog as a static site from nginx. If the other JAM combination turns out working, the migration from WordPress to the new stack is also straight forward.