We've been here before.
About two years ago, Ghost was my primary blogging platform, running on a DigitalOcean droplet. At the time, I really liked Ghost, but didn't like the $5 fee. I searched for an alternative blogging platform, and finally settled on Jekyll and GitHub Pages.
At the time, it seemed like the perfect compromise. GitHub ate the hosting fee, everything was static content so loading times were fast, and the only additional step I had to do was upload my changes to GitHub's repository. GitHub Pages would then automatically run Jekyll, and push the artifacts to the CDNs. Life was good.
Then came the acquisition of GitHub by Microsoft. Naturally, I got in on the bandwagon of developers running away to GitLab. I wasn't worried that Microsoft was going to start "ruining" GitHub or anything - I just wanted an excuse to try out a different Git hosting platform. This was a good opportunity as any, so I imported all of my GitHub repositories to GitLab.
After I went through the hassle of editing DNS zone entries, waiting for DNS changes to propagate, I had to deal with GitLab's new way of setting up static websites. I had to write a configuration file to tell GitLab how to build my website - something GitHub did automatically. I had to go through a lot of trial and error with the configuration file before it finally started working. I thought I was done then. I don't have to do anything else, right? I can just starting blog posts like before?
Nope. For starters, I didn't like GitLab's layout. I missed GitHub - gotten used to their traditional layout, that I considered anything else ugly. Editing an article or creating a new one on GitLab's interface were horrible experiences I'd rather not repeat. My blog posts slowed down - I just didn't want to write.
The most aggravating part of the transition, however, was GitLab's lacking infrastructure. Sometimes, Jekyll builds would fail for no reason. I usually chalked it up to hardware issues on GitLab's servers, and restarted the builds, which usually fixed things. Sometimes, Jekyll would finish building the blog, but the changed artifacts would never reach the CDNs. This was a head-scratcher I spent hours on until I realized there was no sure-fire fix. I could submit a bug report on GitLab's bug tracker, but it seemed like too much of a hassle, just for a blog. The only solution I came up with was to make a fake article stub (a Markdown file with nothing in it), commit it to the repository and then revert the commit.
Finally, in 2018, I relented and switched back to GitHub Pages. But in the process, the import failed, and my blog articles didn't make it through. I kept a zipped copy of my GitLab repository just in case, but at that point, I was done with Jekyll and static blog generators. I wanted to create something of my own - a blog coded entirely from scratch! Doable, right?
Well... web development is not my forte. And considering there are thousands of browser + device combinations out there that I would have to test and develop for, I didn't want to learn web development. At least not right now.
But I really, really needed a blog, right now. I had to blog about regular development I did with Java and Android. I was planning to start programming iOS apps, and one of my most viewed articles on my previous blog dealt with Swift's "File Open..." dialog code snippet.
Again, I changed my mind. This blog is running on Ghost, on a DigitalOcean droplet.
Moving comes with a cost, and that cost for me is lost SEO and permalinks. (I don't put any ads on my website, though, so not really sure why SEO is important, but anyway) I really hate links on websites dying - which is why I'm striving to keep this platform alive as long as possible. It's not a promise, but at least I can try.
Maybe if something better comes out, I'll take a glance or two, but I really don't want to disturb things as-is. Ghost is pretty good for a blogging platform, and that's all I ever wanted.