One of the eternal questions for someone starting a blog is what platform to use. Let’s go through that thought process.
Self Hosted or Not
Hosting on a third-party platform would get me up and writing faster, but as someone who has previously run my own Wordpress instance, I like self hosting. My 3 main reasons:
- I enjoy the tinkering. Playing with Linux systems to get them working efficiently helps me to learn. While much of the detailed knowledge hasn’t applied directly to my day-to-day job, many of the general concepts I learned along the way have been applicable.
- Customization. While I don’t intend to do a lot of theme customization, being able to do whatever I want to the system is always a nice option. The free hosting of WordPress, Medium, Substack, and others have more limited customization options.
- Cost. Ghost hosted is more expensive than the bottom end Linode or DigitalOcean instance ($9 vs $5 /month). Medium and Substack are free, but very much limit your customization.
I knew I was likely going to self host from the start, but realizing how much those other platforms limited post styling made it a simple choice.
Static Site Generator or Not
Now that I know I’m self hosting, do I want to use a static site generator? While I like the idea of Hugo (which I’ve used before, though poorly), it was a bit too fiddly when I just wanted to write. It felt like it got in the way rather them helping me to write content. I like having a simple UI when I’m in the mood to write something. I fiddled with NetlifyCMS, which gives a UI for writing on a static site generator, but it just wasn’t as polished as other platforms.
I did not give static site generators much of a chance this time around, but I want a pretty UI and simplicity when I’m going to do a post. I want to be able to focus entirely on writing, and for me, Hugo and similar tools don’t give me that.
Paring Down My Options
At this point I went to Wordpress without much thought. My previous experience with Wordpress was pretty good, and I thought I would be comfortable with it. While it has been 12+ years since I first set Wordpress up, it still felt very much the same. I got it up and running on a Linode $5 instance without much problem. What I did forget is how much power Wordpress gives you, which ended up being too much for me. I was getting bogged down in wanting to tweak and optimize all of the various aspects of Wordpress. I started to look for alternatives.
Realizing that I didn’t actually want a full CMS, but rather a blogging tool, plus being able to have a few pages (About and Contact), I was able to look at a smaller set of tools. I looked briefly at Grav and read about a few others, but Ghost seemed to be a rather popular option that kept popping up. So I installed it.
The Ghost Experience
The Ghost cli is pretty slick, but I definitely hit some interesting issues. Running Debian testing, installing MariaDB (rather than MySQL), and running the non-distro Nginx caused it to get confused. Nicely, the Ghost cli would soft fail and continue on with the install, which allowed me to clean up after its confusion. Once I got it up and running and played with it for a few days (yes, this is limited experience thus far), here’s my views on it:
- Ghost’s primary themes are simple and very well designed. I don’t have a design bone in my body, so I’m happy to lean on others.
- The editor is great to use and gets out of your way. Obviously it is of the same ilk as Wordpress’s Gutenberg editor, which I also enjoyed.
- No plugin system. This drove me crazy at first, realizing I couldn’t get plugins to add features. Rather you do integrations, which are simple and lightly augment the system. This is very different than Wordpress which install 3rd-party PHP on your system. Many of these integrations cost money (because they are all SaaS products).
- Caching. As far as I can tell, Ghost doesn’t really do caching of any kind. To improve performance (especially for the tiny server I’m on), I would need to use a CDN solution, or throw something like Vanish or Nginx’s cache in-front of it. These are luckily rather simple, so I went with the Nginx approach.
- One true way to write posts. While I can do HTML blocks, Ghost wants you to do a block of text/image/etc, and nothing crazy. It’s an opinionated tool that I’m learning to work within, which is actually nice.
- I am not Ghost’s target audience. Small blogs work just fine on Ghost, but they are trying to make money. That means they are targeting businesses that want to get readers to subscribe to them (much like Substack). Their CEO said as much (with some extra context). Being open source, it will hopefully stay free for people like me; here’s hoping the occasional feature keeps getting added that are useful to small bloggers.
- No revision system. There is no easy-to-use revision system to see changes you’ve made to posts. Given that the system has an “editor” role, missing revision history is a bit sad. I could write in Google Docs then zap it over, but why?
- Install size.
du -sh /var/www/ghost/clocks in at 321M right now for me. I understand this is the pain that comes with nodejs, but seriously, that’s excessive.
- Memory size. I haven’t worked with nodejs at all before, but getting close to no traffic, Ghost’s nodejs process is sitting at 215MB of RSS usage.
- Minifying/combining JS/CSS. Wordpress has some great plugins to combine all your JS/CSS files together to improve the serving experience. Ghost has no such tools, unless I do it manually in the theme.
In the end, Ghost is pages and posts and not much else. No plugins begging to be updated. No caching tools asking to clear them. It’s simple, and stops me from getting distracted. While I’m a bit sad about the lack of power/customization, being able to just write is great.