Obligatory blog post to explain why I moved from SSG GitHub Pages to Ghost

Why did I move to Ghost for my personal website? TL;DR: it allows me to focus on writing

Obligatory blog post to explain why I moved from SSG GitHub Pages to Ghost

Like I said, I think you are legally required to write a blog post about it, and if not, you can be punish up to 2 weeks of house arrest, oh wait I am doing that anyway 🀣

V1: Some template + GitHub Pages + Medium

Back in maybe 2015, I created my first personal side, using a template from call KARDS from StyleShout. While technically I may have some GeoCity/Wix website back when I was a teen, I never have anything remotely meaningful to put on it. I think I was doing some company page for some friends at the time, and got to learn some basic HTML & CSS. Plus I was starting to look for a job, and having something to put my resume up is pretty useful.

A screenshot of my website back in about 2018. It writes "Developer - Louis Tsai; Android, Kotlin, Java, Sketch, Go", followed by 9 icons to different contacts such as LinkedIn, GitHub, Facabook, etc.
My website circa. 2018 maybe? And WTF am I putting so many icons!?

And in the meantime, I started to write tech (and rant) blogs on Medium, cause it's easy, free, and that seems like what everyone was using at the time. And for a very long time, that is my setup for quite a while.

V2: Gatsby + GitHub Pages + Medium (+ Dev.to)

And then A few years passed, and things starts to change: on one hand Medium start pushing really hard for the paywall, and to a point it is starting to become annoying; on the other hand I started to find my website is prety damn slow, due to a combination of

  1. It's a onepage site that loads EVERYTHING
  2. I didn't do any compression for all the photo I used, and those are photos I took with a DSLR in Berlin and Amsterdam iirc

And at about the same time, I run into the Gatsby's low tech blog starter from Mathieu Dutour somewhere on Twitter, and that just pushed me over the edge to just say "screw it" and migrated to hosting nothing but my blog posts.

Screenshot of "Louis Tsai blog", which only has a series of blog post title and headline. The whole page is super plain.
My website circa. early 2021.

Now that I look back at it, I think I may have over compensated for all the issue I have with the v1 of my website. It's also in a time where I was trying to learn more web dev (I think that is right after I finished using hoverboard for the DevFest Berlin 2019 website), and so my focus at the time is probably more on trying to build something, instead of figuring out what I need the most at the time.

A web comic that makes fun of SSG devs, who spends more time writing their setup, instead of writing actual blog posts.
I saw this on Twitter and it's kinda a wake up call. But now that I am writing yet another blog setup, so I guess I never learned? (source: https://rakhim.org/honestly-undefined/)

And unfortunately, it does not take long before I run into issue with this whole setup, and it just bothers me more and more everytime I try to write someting.

Posting new blog post on up to 3 different places
  1. My website: First of all, all blog posts must go to my site, because it's LITERALLY the one thing that it can do; and then for most blog posts,
  2. Medium: I also publish them to Medium, because it is what I have been using for the longest time, and somehow I have 95 followers (probably mostly comes from my weirdly popular post: Why am I returning my reMarkable tablet).
  3. Dev.to: And for a short period of time, I also tried to post tech blog posts to dev.to, especially after seeing a few people who swear they will never use Medium ever again.

The first one requires a PR to GitHub; the second one requires logging into their website, and the third one I usually attempt to use it's "Extract from Medium RSS" feature, but it is limited by what Medium put in the RSS, and how often that gets updated, which is usually 5+ minutes of waiting.

Keeping all of them in sync is annoying AF

Another major issue is that since they all use different system, there are so many thing that are often not working as intended. Links are often broken, and every typo I fixed also have to be fixed in up to 3 places. And each platform has it's own quarks that makes the content not rendering in the same way, and the time it takes for GitHub Action to build the whole Gatsby site is just annoying to say the least, and that is coming from an Android Dev who takes 5 minutes build time as normal πŸ˜…

My website: how to make sure pictures are not blurry?

For the longest time, I can't seems to figure out how to make sure pictures looks nice. I can tell that there is some plugin that shrinks the images (which generally is a good thing), but for some reason it adds artifacts to a point that some of them are not really usable.

Side-by-side screenshot of images: left hand side is after it went through processing from Gatsby's plugin, and it shows significant noise around all the text.
I know the original (RHS) not high-res to begin with, but still πŸ˜’
My website: how to put anything other than blog post?

Another thing I didn't thought through is that I might want to put other content on the website, because I sometimes I would like to pin my contact info, resume when I am looking for jobs, or something fun because that's what website should be. And with this setup, it's requires me to actually understand what I have been using for the last 9+ months. Not the end of the world, but just enough of an excuse to make me never do it 🀷

V3: Trying yet another SSG and failed

It's clear that this is not working, and so first I have to figure out what I actually want to do with all of these, right? WRONG I just jump straight into trying out another SSG template, this time Novela by Narrative. Thankfully after maybe a week (read 3 hours of setting it up, and 7 days of dreading how to move all the markdown because all the meta data needs to to changed), I decided to write down the what I actually want instead:

  1. The main goal is to write blog post, don't waste too much time on engineering it. And if I want to learn to build website, build something else. I know 11ty and Sapper SvelteKit seems cool, just keep it out of my portfolio for now.
  2. It should be possible to add non-blog pages without having to learn another whole framework/language/architecture πŸ—
  3. It doesn't need to score all 100 on Lighthouse or something, but just clicking through it should not feel slow.
  4. Minimal or no tracking. I have slowly grown to dislike all data tracking, both because I don't think it's benefit is worth it for users, plus now you also give user a ways to choose, which just makes the website uglier than it has to be. And from my personal experience, another problem I have is that I will write what is popular, instead of what I actually want to share, even if I have nothing to add to the topic. And if there is a number, I will get obsessed with it. Just ask Unsplash how many times I open it just to check the stats 😐
  5. Even though dev.to seems nice, it's probably time to drop it, because I often find myself writing non-programming-content nowadays.
  6. And if possible, drop Medium as well. There is no big deal breakers, but between it's often confusing & changing UI that makes people accidentally hide their post between paid wall, their inconsistent business practices that makes me scare of losing all the data, and them constantly changing their icons (like serious WTF are you completely changing icon every 2-3 years?).

While Novela definitely looks very nice, it violates the 1st criteria for just the time it takes to migrate it. So I keep looking into other options, and finally......

V4: Just Ghost

Screenshot of the home page of this website.
My website circa. 2021, powered by Ghost.

I first heard of Ghost when it just came out, back when I was still in secondary school (i.e. high school in US term I suppose). And I have also looked into it a few years ago, but the USD$30/month is just a bit too much for me, who is not really intending to make any money of of this blog. And I am also not interesting in hosting it myself, because it just sounds boring AF (no offense to sysadmin).

Thankfully they recently added the USD$9/month plan, and with a few days of trial, it seems like it mostly matches my criteria:

Is it perfect? Hell no, but it's good enough that I just spend almost 2 hours writing this, so I'd say it has a good start so far πŸ‘

There are also a few bonus benefits of using Ghost, such as

  • Supporting OSS project
  • A few theme I can choose from and (relatively) easily jump between
  • And if at some point I want to go the self-host route, it should be possible.

At the end, it's enough to sway me to pay for it for a year. Let's hope it will be the last blog post about my blog post setup for a while 🀞🀞🀞


Appendix: List of wishes for Ghost

  • Official tool to migrate from Medium to Ghost for $9 plan users
  • APEX domain support for more domain registrar?? I can do that with my old GitHub Pages setup, so I assume it's not the issue with my domain registrar πŸ€”
  • Open up more simple plugins for $9 users. Like iA writer is literally just calling an API to upload a Markdown, right? Having to spend $30/month seems a bit too insane for that πŸ€·β€β™€οΈ