Surf the DreamJustin Avery

DevOps, Technology, Wordpress

Migrate from Wordpress to Cloudflare CMS - EmDash

Wordpress has been the leading CMS on the web for more than 10 years. Now, Cloudflare have something that is faster, more secure, and more developer friendly.

Every few years I always feel the need to make a change to this site.

When it first started it was powered by Squiz Matrix, a content management system that was growing in popularity in the Australian federal and local governments along with many Universities. Squiz Matrix (called MySource Matrix at the time while they went after the “OpenSource” label) didn’t win me over with features or ease of configuration and hosting (both things incredibly hard), but instead with a couple of animated monkeys in the trees talking about content management (unfortunately I can’t find a record of the video, but it was voiced by Steve Morgan and John Paul and was AMAZING).

This is what I thought passed as good design back in the day.

Surf the Dream circa 2008.png

A lot of the content in that was migrated from the very OG blog location, https://surfthedream.blogspot.com

image.png

Squiz → Wordpress

I loved Squiz Matrix and always led a new business meeting with “Matrix is like a box of LEGO” in my most Australian accent. It was super powerful and you could create just about anything with it with very little coding knowledge… however… it went from being really hard to setup and host yourself to not possible without hosting with Squiz itself.

It was around this point that I decided to test out how well Wordpress worked in comparison, and while Wordpress wasn’t able to tick all the enterprise boxes something like a Gambling or University site required, it absolutely smashed it out of the part when it came to blogging.

Over the next few years I would update the site in Wordpress to showcase just how poor my design skills were, although from an semantic and performance point of view it was BANGING.

Surf the Dream circa 2013.png
Surf the Dream circa 2014.png
Surf the Dream circa 2016.png
Surf the Dream circa 2022.png

Wordpress → Cloudflare

Over the past five years I’ve been integrating Cloudflare more and more into my tech stack. Workers were something of a game changer for me back in 2021 when I was looking to build out realtime features that pulled in multiple API endpoints, manipulated the response, and then returned it in just about any format (with caching thrown in for free) all without having to deploy a single server…. wonderful from a Dev Ops point of view.

So, when Cloudflare released EMDash on April Fools day this year I looked on with hopeful scepticism. Now, a whole bunch of community contributed updates and many many PRs later, we’ve got an amazing CMS that is

  • Secure
  • Fast
  • Developer friendly
  • Inexpensive

Setting up the migration

As with a lot of things these days, I asked my #1 employee Claude Code Opus 5.5 to take a look at my Wordpress instance and at the capabilities of EmDash.

I had also been working a lot on how to utilise System #1 AI tools like TypeSafe’s JEV and Cloudflare’s alterative CLEF, so I was able to bring that kind of interface into the homepage to allow users to quickly find content that is of interest to them and rank them appropriately.

Search with TypeSense

I was a HUGE fan of the search engine that was shipped with ColdFusion back in the day. Yes, I am that old.

It was a revelation back then because the alternative option that the Northern Territory Government offered at the time involved you uploading the title, URL, description, and keywords for EVERY SINGLE PAGE you wanted returned on a search when using the NT Government search engine.

I. Shit. You. Not.

Fortunately I was quickly exposed to Funnelback (now Squiz Funnelback) while working with Squiz and it was instrumental in providing actual usable and capable searches for jobs when working on the Sainsbury’s Careers website.

When I left TMP to contract with NFTX (an NFT liquidity platform) I found and loved using Algolia as well (similar capabilities to Funnelback, but a much better admin and user wrapper to it)… albeit the Algolia stuff was really expensive for what it offered.

Now, through simply mistyping TypeSafe with TypeSense I now have a REALLY good search engine running on this site as well. It is a search cluster across three different servers on Hetzner and costs me around $15 a month, which otherwise would have cost me $150+ for less searches on worse servers if going with the TypeSense cloud approach.

It is a little overkill for this project as we’ve only got 600ish blogposts, but I LOVE search and I was keen to use this as a learning experience to be able to roll that tool into much larger systems (I’m looking at creating a search interface for PONS which has just under 1 million different meme coins, I also created a Token Launchpad Dashboard for them with a custom indexer and backed by a data API also rolled into Cloudflare Workers and D1).

Wordpress to EmDash Migration Skill

https://github.com/SimpleThingsLtd/wordpress-to-emdash

An agent skill for moving a WordPress site to EmDash, the CMS built on Astro and Cloudflare Workers, without losing content, media or links.

EmDash's importer reports success while dropping things: quotes, galleries, embeds, shortcodes, code blocks, classic-editor paragraph breaks and old URLs. This skill gives an AI coding agent (or you) the procedure, the scripts and the site files to find and repair every one of them. It proves the result with a page-by-page comparison against the live WordPress site.

It was built from based on the migration of this blog. A real migration of a 600-post, 18-year-old blog. Every issue that migration hit is documented, with how to detect it and fix it.

Comments

Be the first to comment

Comments are read before they appear. Your email address is never shown.

    Type to search titles and full text. ↵ opens the full results page.