I have been frustrated with Wordpress for awhile. It had been home to my blog for... seven years? Wow. However, in between, I grew quite fond of Markdown. I love how minimal and consistent it is when rendering in different environments. I love how it displays code, and I often write with code snippets. I've grown to detest other rich text editors, including Wordpress.
Wordpress stayed tolerable for me as long as it did because it developed a feature for authors to write in Markdown and have their posts and pages automatically converted to the underyling Wordpress implementation. It was pretty good for the most part, but what frustrated me was I couldn't easily copy and paste entire Markdown documents to and from Wordpress...
Another interesting feature Wordpress developed in my time as a blogger there was the concept of Blocks. When I started writing on Wordpress, posts and pages were single entities. You could copy entire paragraphs, pictures, and other elements and move them around within the entity as you edit. While this feature provided a lot of flexibility, it also required you to be careful about what you highlight to move around. Just like any other text editor out there, you needed to carefully highlight just the right paragraphs or picture blocks, cut them, then paste them in the right spot. Or, if you wanted to be more careful, you'd have to copy, then paste, then delete the original artifact.
Blocks, in contrast, treated individual paragraphs, picture groups, lists, and other common elements of a page or post as individual components that can easily be moved around by clicking on an arrow button. So cool! Like modular code!
HOWEVER, this new model became annoying when I wanted to paste entire documents from another source into Wordpress, and vice versa. It just wasn't a smooth experience. Wordpress still supported the legacy "Document" format (what I described before as a page or post being a single large entity like other traditional text editors) alongside the "Blocks" format, but it was clunky.
Additionally, the Markdown support was not smooth as butter. It just never felt like a core, native feature; it felt like a side plugin for niche users, which could be true (that I was a niche user) but still made me frustrated.
Finally, Wordpress just always felt bloated. Maybe it's the PHP or the Cloudfare something. I don't know. It wasn't that fast. I'm not talking about the plugins; I had a very minimal amount on my website and admin portal. Just the whole general experience felt slow and bloated. And yet for all that speed, I also couldn't customize that much – at least without paying much more.
I dealt with these gripes for a time, but recently I ran into a snag that got me so frustrated that I more seriously started looking for alternatives.
I looked for a lightweight content management system host that supported Markdown as a core feature, and ideally handled hosting because I just didn't want to deal with that [insert snarky lazy software engineer comment here]. Ghost seemed like the best for this. I signed up for the trial version, and I really liked it! The pricing was reasonable as well at $9/month.
However, as I neared the end of my two-week trial, I realized that it didn't come with a search engine out of the box. wtf? Its docs recommended three solutions: Algolia, an open-source local search solution, and a Google plugin. I played with the first two since I still feel odd about having enterprise search engines index my website. I just couldn't get the second solution to work for me, and Algolia just seemd too heavy-weighted for my simple blog.
I instead built my own simple local search solution using their Ghost Content API. I'll write about it in detail sometime, but in any case, implementing that caused me to create a custom theme out of one of the base themes.
I was happy! I had my Markdown-first CMS hosted by the folks who built the CMS, and the pricing was reasonable. I was ready to get on board with a pro account of Ghost... when I found that using a custom theme bumped me from $9/month (with an annual upfront cost; or $11/month, month-to-month) to the next-expensive pricing tier of $25/month. What?! The cost went up 1.5 times just because I had to implement a pretty common website feature you didn't have for me? There was also no warning about this when I activated the custom theme?
I was pissed. I had invested this time into experimenting with and getting to know Ghost... and then I felt like I got tricked.
Enter Digital Ocean
Thankfully, one thing I like about Ghost's CMS is that it is open-source. While they offer a hosting plan, I could always use their software for free by hosting it elsewhere.
Ghost's docs so far have been great. In them they detail the specs you need to self-host, and also recommended DigitalOcean.com as a cloud host provider. Digital Ocean's pricing seemed reasonable, too. It's $5/month for a very basic plan.
After setting up my server on Digital Ocean, I also needed to work on pointing my domain jasna.me from the Wordpress server to the DO one. I originally bought my domain name through Wordpress, which of course smoothly worked with my Wordpress-hosted blog. Unfortunately it seemed that Wordpress domains only worked with Wordpress-hosted blogs. Thus, I quickly searched for recommended domain registration sites that allow integration with other webhosts. Namecheap.com, Google Domains, and GoDaddy.com, were the three that stood out to me. I didn't want Google because
- Google has a tendency of discarding services that don't perform well over time, and since domain registration is not (I don't think) a core or popular service of thiers, I didn't want to deal with that risk
- Google could track my information with my domain name, and I didn't want that
It was down to GoDaddy.com and Namecheap.com. I simply settled on GoDaddy.com because a few past employers of mine used it, other folks on the Internet said it was fine enough, and if it was good enough for my employers, that weighed it out slightly more ahead of Namecheap.com for me. Arbitrary reason, but whatever.
GoDaddy.com's prices were good for me. I had a domain transfer with 4 years of registration and domain privacy for $89.54.
Pricing compared to Wordpress
My new world:
- Domain transfer: $27.98
- Domain registration and privacy for 4 years: $61.56 ($1.28/month)
- Webhosting: $5/month, billed monthly
- Total: $6.28/month, with one-time transfer fee
Compared to Wordpress:
- Webhosting: $4/month, billed annually
- Domain registration: $25/year
- Total: $6.08/month
Assuming webhosting costs remain stable, I'll be paying $0.20 more a month, but seems worth it for more control.
What about Github Pages?
I also briefly looked at this. It's free, after all, and the
.github.io subdomain was one of a few I didn't mind (including
.ghost.io :( ). I set up the barest Jekyll page (which also supports Markdown) and then quickly didn't like it. I recalled why I wanted a CMS to begin with: to simplify my blog workflow. With Github Pages, or at least with Jekyll, I would need to manually update the index page with DOM elements pointing to my new post, in addition to writing my new post. I just... no, I'm too lazy for that manual labor now! I can afford some luxury in my life to avoid that. I was also turned off by the not-so-smooth setup. I needed correct the Gemfile, which involved a lot of annoying googling (plus I'm not a Ruby person). I became pessimistic at the future problems I would face had I stuck with Jekyll. There are others, like Hugo, but meh. I was done at this point.