Home About Me

Where Blog Tinkering Eventually Leads

A few days ago, I noticed that Nicholas C. Zakas had moved his blog from WordPress to Jekyll. By coincidence, I was doing almost the same thing at the time—except I was moving mine to Hexo. I first hosted it on GitHub, then later switched it to GitCafe.

I’ve spent years messing around with different blogging systems. I like not only using them, but also understanding how they work under the hood, writing plugins, and building themes. Since PHP was the first web backend language I learned, WordPress was the natural starting point. At first it felt small and elegant. Later I realized it was neither. Too many plugins, too many security issues, too much bloat. And when you actually look through the source code of many plugins, the quality is often disappointing. A lot of WordPress performance problems come from that plugin ecosystem.

But bloat wasn’t even the main reason I stopped using it. I was still a student back then, and I didn’t want to pay for hosting and a database just to keep a blog online. Baidu Cloud didn’t exist yet, and SAE was not a great experience either.

Before arriving here

After that, I learned to use Git. In the beginning I wasn’t comfortable with the command line at all. I still remember struggling for a long time just to set up an ssh key on GitHub. In the end I had to install the Windows version of the GitHub client and let it handle the problem of pushing code for me. Following a guide on GitHub Pages, I managed to put a blog online there.

Once I had read through Jekyll’s documentation, I built a cleaner, simpler version of my blog. On that site I added a very handy feature: if you pressed Ctrl + Shift + Enter on a page, or appended ?edit to the URL, you could jump straight to the GitHub edit page for that specific post. That meant I could almost completely stop relying on local tools and work directly in the cloud.

After getting comfortable with GitHub Pages, the next natural step was, of course, to abandon it. Programmers love to tinker.

I didn’t leave it entirely. I still updated http://hi.barretlee.com from time to time. But its content has since been merged into this site, and I won’t be maintaining it separately anymore. The GitHub Pages workflow always felt a bit too long: edit locally, push to GitHub, then wait for it to appear on the site. It worked, but it was more cumbersome than I wanted.

So eventually I moved to a blogging platform and stayed there for more than two years. The writing and sharing experience was excellent, and technical articles from that platform showed up everywhere in search results. Older pages naturally gain authority over time through SEO, but no site survives on aging pages alone—it still needs new writing. I wrote quite a lot there, and somewhat unexpectedly ended up attracting more than a thousand followers.

Maybe it’s better to just buy a server

Even then, I still wanted a site that was entirely my own—something I could control completely. I wanted custom pages, the freedom to switch the blog backend to another language if I felt like it, maybe experiment with WebSocket, and generally do whatever I wanted. So after graduation I bought a host and started playing with it seriously.

On that server I revisited Linux, which I had used alongside Windows in college. I learned more about configuring Nginx and Apache, played with load balancing, and even built a WebSocket chat room with Node.js. Naturally, I also set up a blogging system there.

This time I used Ghost, which is a really good blogging platform. I liked its admin editor a lot. It supports Markdown, handles image uploads nicely, and the overall writing experience is great. At the same time I also deployed a Hexo blog for writing about everyday life, using one of the official minimalist themes. For a while, that setup felt pretty good.

Then renewal time came around.

And when I looked back, I had to ask myself: what had I actually done with all those resources? Aside from the initial excitement right after buying the server, I barely logged into the machine for most of the following half year. It was such a waste. I was spending more than a thousand yuan a year on a very low-end configuration, just to host a few blogs that were updated only occasionally. At that point I had no motivation left to renew it.

During that period I also used SAE and BAE. SAE charged in cloud tokens, and if your site didn’t get much traffic, ten yuan could last one or even two years. BAE was a bit trickier. It billed you based on resource usage, calculated with its own rules, then sent the bill to your phone and email every month. If traffic was low, it only cost a few dozen yuan a month, and you could turn on automatic renewal. But in the end, BAE still felt like a bit of a trap too. A few hundred yuan a year isn’t a huge amount, but it still felt unnecessary.

So I gave it up again

That sent me into the next round of tinkering. About half a month before my Alibaba Cloud server expired, I decided to gather all the blog content I had scattered across different places and combine it into one site—the one you’re looking at now.

I wanted something simple and straightforward. The layout borrowed a bit from Jianshu, while the design took some cues from Ruan Yifeng’s blog. Merging content from different blogs, normalizing the formatting, writing the theme, and debugging the pages took me three full days. It was exhausting.

Still, based on how long previous blog setups had lasted for me, I felt pretty sure that this design and deployment approach would probably stay with me for at least five to ten years.

At first I deployed this Hexo-based blog on GitHub. From home, the loading speed seemed acceptable—around two or three seconds. But when I asked friends in a group chat to test it, some of them reported load times as bad as twenty seconds. That genuinely surprised me. It confirmed what I should have known already: GitHub, as a foreign service, just wasn’t ideal in our environment.

So, on Aa’an’s suggestion, I moved the deployment to GitCafe. To help GitHub users migrate smoothly, GitCafe had made itself feel almost like a clone of GitHub. Even setting up GitCafe Pages worked in nearly the same way: just create a gitcafe-pages branch in the repository. To be fair, though, the overall experience on GitCafe was slightly better.

Static blogs and the search for somewhere to host them

I’ve come to think that finding a place to host a static blog is where many of us eventually end up.

Ruan Yifeng once said that people who write blogs usually go through three stages:

  • In the first stage, blogging feels new and exciting, so you pick a free hosting space and start writing.
  • In the second stage, the limitations of free hosting become unbearable, so you buy your own domain and hosting and build an independent blog.
  • In the third stage, you realize that running an independent blog is too much trouble, and ideally you want to keep control while letting someone else handle the infrastructure so you can focus on writing.

That third stage is exactly what blogging platforms are good at. I saw plenty of beautifully designed blog layouts there, and what impressed me most was how few restrictions there were. If you understood design and CSS, you could shape the look almost any way you wanted.

But I still wanted a place where I could freely experiment. That’s why I chose tools like Hexo, Jekyll, and WordPress—while at the same time wanting somebody else to handle the maintenance side, which is why hosting platforms like GitHub and GitCafe made so much sense.

If you want your own personal site, the path can be incredibly simple:

  1. Register a GitHub account named abc
  2. Create a new repository named xxx
  3. Write one line of code This is my blog. into index.html, then commit it to the gh-pages branch
  4. Visit http://abc.github.io/xxx, and you’ll find that your personal site is already live

It’s hard not to be tempted by a workflow that efficient. And when you add GitHub’s built-in support for jekyll, it becomes even easier to see why so many people end up wanting to try it.