This blog runs on Ghost

I have been shopping around for a home for my blog for quite a long time, and I have finally landed on Ghost as my platform of choice. How I ended up here:

Round 1: CodePen posts

When I first started using CodePen, they also provided the ability to write blog posts. It seemed like a low-friction way to keep the work I was doing in a single place.

But blogging was never really the primary focus of CodePen as a platform, and ultimately has been sunset recently. Even before they got rid of posts, I was starting to look for a way to better organize and unify them.

Round 2: Github Pages + Jekyll

GitHub pages are a great way to get a small site up and running quickly as a developer. There are even some themes for you to choose from so you don't have to build everything from scratch to begin with, and it's well-suited for blogging once you add in Jekyll.

I started to feel some friction with Pages, though, whenever I wanted to add some features to my site. Features are added via plugins, but not many plugins are officially supported by Pages; this means that to use certain plugins, you would have to change the way the site gets built and published. Managing plugins and site features requires you to touch Ruby code, and while I personally am comfortable with writing Ruby, I just didn't really want it as part of my stack. Adding blogging features was keeping me from spending more time on actually blogging.

Round 3: eleventy + Netlify

I wanted to switch to a Javascript-based static site generator to simplify the tech stack, and I also needed a new way to deploy the app since I was giving up GitHub Pages. This led me to the combination of eleventy (11ty) and Netlify.

I'd heard a lot about Netlify, and having used Heroku in the past, I wanted to compare the experience. The experience is so simple I actually didn't spend that much time looking at it! :)

I landed on eleventy pretty quickly after perusing other possible static site generators, because much like I didn't want to use Ruby, I also didn't want to use React, Vue, or Angular. While these technologies are much more of my bread and butter, they all feel like overkill for the simple blog I want. A templating language would be sufficient to enable reusability of chunks of HTML.

I also used Netlify CMS to have a slightly better authoring experience than VS Code, but as a CMS it's a bit underbaked. The UI feels rather crowded, and it's a bit awkward to add different types of media, code, or embedded content (like CodePens).

My biggest challenge, though, was that I was just having a hard time deciding what I wanted my site to look like, since I no longer had themes to choose from. I looked at different sites for inspiration and kept making changes whenever I would have some free time to spare, but I was never really satisfied. The truth is I don't actually want to be spending my free time coding, not even for my own site. So I decided enough was enough, and started looking again for a new solution.

Round 4: Exploration

I decided to explore a few options where I could outsource theming and content management, and wanted to compare some up-and-coming tools with some tried-and-true ones. Specifically, I looked at Squarespace, Notion, Wordpress, and Ghost. I didn't want to use a platform like Medium or DEV, because I want a website I can call my own.

I discarded Squarespace as an option for the sole reason that I didn't like any of the themes. :P Many of the themes are designed around the heavy use of images, and I wanted one focus more on typography.

Notion is a newish tool on the scene with seemingly infinite use cases. Since you can publish any Notion page publicly, lots of people are using it to make websites fast. With the rise of "no-code" stacks, I wanted to see what it had to offer. Stylistically it's very minimalist, taking on the look of project documentation, which seemed suitable for blogging purposes. But I tested a public page with a screen reader and was disappointed in the results. Public pages are not optimized for a read-only experience; instead you hear the same cues as if you were editing the page, which is confusing! I didn't want to choose a technology with accessibility issues, especially as someone who writes about the topic often!

That left Wordpress vs Ghost. Wordpress is the classic blogging platform still kicking it on the scene many years later, on which a huge number of sites run! It's a totally legit way to start a website, and especially if you're not a developer, probably one of the best documented ways to launch something.

Wordpress also has a free tier, and TONS has changed about its editing experience over the last several years. It's made a bunch of updates. It has a TON of features. But the way ads work on the free plan is hostile to users and blog owners can't control the type of ads that appear. :(

The winner: Ghost

Ghost wrote a nice post comparing itself to Wordpress. They have a lot in common, actually. You get a bunch of stuff out of the box, but you also have the flexibility to use them as a headless CMS should you want to customize your site fully.

Ghost's editor experience really shines, though, and it was the biggest reason I chose it in the end. It provides the features I need to write what I want without all the clutter.

I didn't evaluate other headless CMS options because again, I'm trying to optimize for less coding time. However, a common challenge of using pre-baked themes is they often aren't that accessible, so I wanted to keep the door open for me to use my own theming. With Ghost, I can choose from a set of themes, and I can even download the source code for the theme and upload a customized flavor of the theme for myself. This is a happy compromise for me – I can stop worrying about design decisions, but correct any experience issues however I want. I felt it was worth paying a small amount for the flexibility I get... for now, anyway! :)