Goodbye WordPress, Hello Craft

Twenty years and seven months ago I switched from MovableType to WordPress, escaping the MT founders’ drama of the time and as importantly, escaping Perl. WordPress as a platform was a breath of fresh air, and the community was fantastic (and remains so for the most part). I’ve spun up and redesigned countless sites, both for fun and for a time, as my primary income. I’ve met some fantastic people who shared my love for the ecosystem, who I count as friends today.

Notice that "Member Since" date: May 28th, 2004

But the dust-up over the last few months has made it clear that I don’t want to support Matt Mullenweg’s treatment of businesses and people in the WordPress community. There are plenty of resources tracking the drama so I won’t go into the details, but as someone who has wanted to work at both Automattic and WPEngine at different times, I will say that it’s painful to watch Matt tear it all down.

Moving on

These days, I don’t have a ton of time for large projects, but I decided to migrate this site off of WordPress in the pockets of time I could grab. I evaluated myriad content management systems (Astro, Craft, Django, Ghost, Kirby, Statamic, etc.) built with PHP, JavaScript, or Python and eventually landed on Craft by Pixel & Tonic. Honestly, at this point, I couldn’t tell you how each of the systems compares to each other, but Craft feels right for my goals and way of thinking.

Early on, I decided to do more than move to a new system — I wanted to truly rebuild, which included:

  • reworking the underlying content structure, breaking it into smaller, atomic pieces that I could remix at will
  • redesigning it from scratch — no templates as a starting point
  • rebuilding the presentation layer with little-to-no JavaScript. I like JavaScript, but I wanted to keep page size as small as possible while learning about recent capabilities added to CSS
  • selecting a new host (Dreamhost isn’t bad, but they haven’t been great either)

This also provided the opportunity for me to rewrite some utility scripts that I use to pull content from external sites, like the bookmarks I save to Raindrop and the highlights stored in Reeder, as well as those I use to send data out to my social channels via Buffer.

So yeah, a lot of change. I won’t get into all of it now, but here are a few things that some folks may find of interest.

Technicalities

Arcustech (Hosting)

I selected Arcustech for my new host as they had a Craft-optimized plan, that would still let me run those scripts I noted above (my scripts are Python, while Craft is PHP). The team at Arcustech has been great, and I love that they’re active in the community. My site is fast and responsive, and while I was hesitant to move somewhere without a control panel, it’s been a breath of fresh air not dealing with it. What few things I can’t do directly, they’ve quickly handled for me.

Craft

It took a bit for me to shift my mental model for development, including using containers and Orbstack as recommended in the getting started guide, but I got there quickly enough. I will say that I initially over-complicated things as I read various tutorials and guides meant for agencies with multiple people touching code. Ultimately, I decided not to use git for deploys nor worry about config migrations and the like. I get why a lot of developers go that route, and I would too if this wasn’t my personal site, but honestly, the overhead just isn’t worth it for me. I do use git for version control and still develop and test locally before pushing to prod, but I’m not maintaining additional tooling when, honestly, FTP works well.

Craft released their WordPress import after I had made substantial headway on my rebuild, so I didn’t use them. In many ways, I’m glad the timing didn’t work out, as the effort to rebuild my content and the need to understand Craft will pay off in the long run.

Plugins

I’m ‘keeping my plugin use to a minimum, but there are a few that are useful:

  • Admin Bar by Will Browar provides a handy set of tools at the top of the site for logged-in users, similar to that provided by WordPress
  • CKEditor provides rich content editing. It should be installed by default.
  • Cloudflare makes it easy to purge the CDN if needed
  • Feed Me makes life so much easier. It was critical for importing two decades worth of posts from WordPress and is a key part of my workflow to automatically import my bookmarks and highlights.
  • SEOmatic by nystudio107 is the first plugin I’ve paid for, but it saved me hours if not days of research and effort. Well worth the investment.
  •  

Cloudflare

Adding Cloudflare to the mix wasn’t in my initial plan, but they provide SSL cert and CDN services for free and the setup was minimal, so it was a no-brainer. So far, it’s been working very well.

Looking ahead

There’s a lot more to do, but I look forward to experimenting and building. If nothing else, this feels like a great way to roll into 2025.