Definition of Insanity (I Migrated to Ghost)
"Did I ever tell you what the definition of insanity is? Insanity is switching between different CMSs, over and over again, expecting shit to change. That. Is. Crazy."
Hello everyone, welcome to the new new website. You may be getting a strange sense of deja vu or wondering how something can be “new new.” That’s because we’ve been here already! Less than a couple of months ago I launched a fancy new website built on another platform called...
Oh prior me, truer words have never been spoken. They’ve taken this ironic twist considering, if you look around, this website looks different again. I have yet again migrated to another CMS - from old and busted WordPress to the new hotness Ghost. That isn’t entirely fair to WordPress (Ghost happily admits WP is better in many cases), but it’s certainly how I feel after using it for a couple of months. I’ve had my eye on Ghost since Platformer, Casey Newton’s tech publication, migrated to it from Substack. Substack is another service that is not relevant for this post, but here's a not-so-friendly reminder that it has an unfortunate tendency to host, platform, and signal boost Nazis. Quick aside, aside, my point was that Ghost always seemed cool to me. I wanted to use it initially, but I waved the idea off after initial exploration. At first glance, it seemed that hosting would be more expensive and complicated than WordPress. My limited budget would lock me into a Digital Ocean droplet that would barely function—a tough sell compared to the sea of budget WordPress hosting providers. On top of that, all of the portfolio themes I've found are premium, with prices that range from $60 to $120. That single $120 purchase would be more than all of the web hosting I have ever paid for, in my entire life, combined. But growing frustrations with WordPress led to another round of research and well, here we are.
Dave vs. WordPress
I have two main problems with WordPress: its barren, plugin-oriented architecture and motherfucking Gutenberg. Let’s start with the latter. Any initial WordPress install purposefully comes with the minimum amount of features installed. You can create posts and your website will generate pages, but that's it. It's purposefully not ready for primetime on the internet. This a core part of WordPress' ethos: it handles the technical foundation and leaves gaps for the community to fill with plugins. The community, it argues, will do a much better job of finding and updating these features than any one organization ever could. It's not a bad idea, there's certainly some merit to it, but dude they mean it. One of those gaps is SEO, which is charlatan-speak for ensuring Google can find your website and display it in its search product. This is a non-negotiable, essential component for most websites. I obviously want my own website to appear (preferably first but we're working on it) when someone searches my name. This is a basic feature that I never had to think about on other services, and has now become a mini-project all on its own. Now, I have to find and compare multiple plugins that each have their own gotchas in their “free” tiers. Now, I have to learn a mini-app living inside of a miserable sidebar in the WordPress editor. Additionally, the only way to learn this SEO plugin is by placing it on my live site and seeing how Google reacts. Google hates this strategy. Switching between SEO plugins completely changes how that information is structured. These changes cause Google to list it at the bottom of the rankings, underneath my Instagram and old FilmFreeway account. But how else was I supposed to learn that I prefer the interface for RankMath over Yoast? Or that JetPack, WordPress' own SEO plugin, is easy to understand but tanks the performance of my website? Now, imagine that same painful process for security. Backups. Redirects. The community approach may be great for longevity but boy howdy does it make for a frustrating set-up experience. Oh, and now my WordPress dashboard is filled with ads - one for each “free” plugin.
I have written four paragraphs of a gratuitous blow-by-blow of Gutenberg’s failings, but it's just the same frustrations as above but now about the interface. Gutenberg is WordPress’ response to drag and drop website builders like Wix and Squarespace. Very infamously it replaced the classic editor and this universally pissed everyone off. In my experience, with the latest version of WordPress, it is at best confusing and at worst broken. It has this fun tendency to crash and then reset all of the content in the post I was writing. That bug has led to me re-formatting entire posts/pages multiple times. I was also using a up-to-date install of WordPress with supported plugins, that wasn't causing the crashes. It’s also missing several features that I consider essential for any modern web design tool. The biggest omission is the ability to designate different layout or spacing options based on whether your website will be viewed on desktop or mobile. Those are two very different use cases and any design will require tweaking to ensure it looks correct across both options. It is impossible to make visual tweaks that granular in Gutenberg without injecting CSS that you have to write yourself. Having to research and write code defeats the purpose of a "user-friendly" no-code tool!
As a whole, WordPress is a long road of confusing and broken UI/UX decisions paved with good, even great, intentions. It's hard to give it too much flack considering it's free, open-source, and powers damn near half the web. But for newcomers, especially those who are not familiar with web development, face a mountain to climb. This should have been a no-brainer for me. I am a tech-oriented dweebn I love diving into the minutiae and details of any app. But even for me, WordPress was too frustrating to learn.
The Friendly Ghost
At a certain point I snapped and started looking into migrating over to Ghost. The major breakthrough was finding Pikapods, a hosting provider that’s even cheaper than the one I was using for Wordpress. After using Ghost for a couple of months, I'm happy to report that the grass really is greener over here. Ghost has addressed almost every frustration I had with WordPress. The SEO crisis? Solved. The editor crashing and deleting all my content? No more. Confusing and borked drag and drop interface? Okay, well, about that one.
One potential downgrade with Ghost is we've moved from having a shitty drag and drop interface to not having one at all. Ghost does not have a visual page builder (it does have an editor for posts, but you can't create a custom page layout with it). If you want changes to your theme or create a custom layout for a page, sorry buck-o, you're diving into the code. Editing theme code is a terrifying proposition in WordPress. If you want to access any of your post's content (say create a list of your most recent blog posts), now you have to dive into PHP server code on top of the usual HTML/CSS. Ghost, thankfully, hides all of that server stuff from you. On the homepage, I can replace the post dates with tags by just opening up the index file and replacing the {{Tags}}
HTML with {{Date}}
. I have some rudimentary web development experience, so I fell in love with just committing and sticking my pinkie toe into the code. Again, it's important that you can't escape the code forever in WordPress. It will find you eventually. But thankfully, Ghost's usage of Handlebars let me match, even exceed, months of WordPress theme customizations in a manner of weeks with Ghost. There's even this easy to follow guide to set-up a local copy of Ghost on your computer. This lets me easily experiment and break things without having to worry about that affecting my live website. Now, I'm fully cosplaying as a web-developer. I have a GitHub repo of my custom version of the Solo theme. I make different forks to test things out without having to worry about deleting the stable version of my project. It's a much better system.
v4, In Memoriam
This project was, yet again, no small feat. I have changed almost every provider I was using with v4. I have switched domain providers from Google Domains to Cloudflare after that awful SquareSpace acquisition. I have changed hosting providers from Nixihost (who I highly recommend as a WordPress host!) to Pikapods. And, of course, I have switched from WordPress to Ghost. I’m hoping this will be my final move and I can finally start focusing on updating my portfolio (I know, I know, I'm going to keep on tweaking the design. But it's fun to dream).
While my experience with WordPress was negative, I do not regret my decision to switch to it first. That experience taught me what I valued in regards to web design and a CMS. WordPress may have been the wrong option for me, but I was spot-on with the importance I placed on switching to an open-source system. It was that open-source ethos that let me migrate fully to Ghost, with all of my content intact, in under a day. There's even a Ghost migration tool in the WordPress plugins store. Ghost will let me continue this trend and switch over to another system if I find an even better option for me... or if I get bored and decide to ruin my life for another month. Plus, I'm excited about the ActivityPub integration they're working on, but that's a blog post for another day. Welcome to the Portfolio v5 - Kratos. Named after a stubborn god who refuses to die, just like this project (name subject to change).