Background

My first homepage can be tracked back to summer of 2000. I owned my first domain of chagel.com and published my writings before I moved to cnblogs.com and tublr.com. After the wave of blog, everybody started using social network and Microblogging. I moved my lengthy writings back to personal website again. Tha’t gchen.cn.

A few blog engines were used, such as wordpress, octopress, and also self-developed ones. Until I found Ghost, I settled down for a while(around 10 years actually) and have been hosting my blog on Linode since then.

I’m not a frequent writer, but I do have a lot of thoughts and ideas to share. To generate more content is more important than hopping around different platforms. Ghost serves me well, I didn’t have too much compains, because I was not a heavy user. Sometimes I even forgot the management entry.

Until earlier of this year, I found the Ghost upgrade stopped working. Then I was not able to backup my data. I even tried a fresh installation and start over. But I was frustrated to see the community edition involved too much unnecessary features. I don’t want to deal with the complexity, like setting up Email integration or I couldn’t have an admin account.

I have been waitnessing the success of Ghost from very early stage as an open source project. I was happy to see it grow and become a commercial product. It’s great, but nowadays it’s not what I want. I want a simple blog engine that works, where I can focus on writing.

Workflow

I have two choices. Either to pay for a cloud writing platform, or to host my own by picking up another open source project. I’m not a serious writer and I want to customize my work and own my data. Maybe I will choose a cloud service for my professional writing one day, but not now.

Simplicity is the key. To serve my purpose, I don’t need a lot of features. It’s very mature to use markdown to write, and there are a few open source solutions of markdown blog engine. I have already used cloud storage and the experience of writing on my macOS and Linux desktop is appealing.

I choose Jekyll. Write in markdown, publish to anywhere.

weblog-flow

Markdown

I am a long time user of Vim. Nowaday I use Neovim. 20 years of muscle memory to manipulate text is fundamental for my writing. The syntax highlighting of markdown is good enough for me. I don’t need a fancy editor to write. I can write anywhere, anytime.

When write in local, I can use Git to manage my workspace. It’s quite straightforward as an engineer. I can use Git to publish my work to anywhere. I host my code and posts on Github.

Bonus: Enable Copilot/ChatGPT in Neovim to help me write in Zen mode(See screenshot below).

markdown-vim

Jekyll

I know Jekyll for a while, and I like it. It generates static pages from markdown files, and also provide simple templating. The documentation is good and the community is active even after a decade(since 2008).

Simple, fast, and flexible. My programming background on Ruby and Rails is another reason to choose Jekyll. Jekyll is written in Ruby. I’m quite familiar with the Ruby ecosystem and I can customize my blog easily. Furthermore, Github supports Jekyll natively. I can host my blog on Github Pages. Github bridges the gap between my writings and my blog website.

Github

You have two choices to host your Jekyll blog. One is to host on your own server, another is to host on Github Pages. I choose the latter.

It’s just natural for me to manage my content with version control and Git. I can write in local, preview in local, and publish to Github. When you enable Github Pages, it will automatically build and deploy your Jekyll blog. Under the hood, Github uses Jekyll to build your blog from your markdown commits. By configuring your domain, Github Pages will be public under your control. It takes less than 1 miniute to serve your last post from local to the world-class hosting cloud. Compare to self-hosting, it’s much easier and cheaper. No more headache of nginx conf, ssl cert renewal, and database backup.

github-pages

I want to focus on writing, not managing the blog engine. I shall patch my blog and website only when necessary, and slowly. My configs and setup will be open sourced on Github when it’s ready. But I’m always ready to share if you have any questions.

Thanks for reading.

-mgc