My blogging workflow

I started to blog around the end of 2015, 3 years later it has been an interesting journey. I think I benefited quite a lot from it and thought I'd share my experience and some of my blogging practices with people who are looking to start blogging or simply want some inspirations.

Why blog

One main reason for me to start blogging at the time was to start building my own "brand". Just like Github account with a lot of open source contributions, this blog was meant to help me along in my career. 3 years later, I can confirm it was a good decision.

For people who are already in a comfortable job that they'll never see themselves leave, there are other reasons to blog too. I didn't have these as goals when I decided to blog, instead, I discovered them along the way:

Improves writing

Surprise, surprise, writing blogs helps to improve written communication skills. Simply blogging a couple of times a month, I can feel my writing getting better over time. At work, I also found writing up documentation or meeting notes a lot easier than before.


Setting up the blog requires time and effort, but maintaining it is more stressful. I initially tried to blog using an open source software called Ghost Blog. But it turns out it is a lot of hassle to go in and update the software every few weeks. The update process (at the time) required SSH into the virtual server and enter terminal commands. Then I move on to Hexo static site generator and hosting it on Github Pages, I also tried Hugo and finally settled on the current solution with Gatsby.

Would I have learned all this if I didn't blog? Maybe, but that would be very unlikely since there's very little reason to touch these kinds of tech stack at work. Setting up a blog is a personal project in a way that requires nurturing. Thinking of ways to improve it will test and improve your technical abilities along the way.

Some other things I learned as part of the blog set up:

  • Google Analytics (GA)
  • Search Engine Optimisation (SEO)
  • Preserve URL after site migration through redirects
  • JAMstack and benefits of static sites
  • And etc

I hope the above reasons are enough to convince people that they should start blogging. Don't worry if you haven't done it before. If you've seen my previous blog posts then you'd know my blog at the start felt more like tweets than actual posts because they were so short. At the start just do the best you can, because with practice you can do it as well as anyone.

Coming up a blog idea

You probably have seen blogs on Medium being shared around like crazy and getting thousands of likes. How can they think of good topics to blog about? What if no one likes what you write about?

My blog heading is called "Hao's learning log" for a reason. I intended it to be a place where I write down my own thoughts, in another word it is for me. If I write something that I care about and no one else finds it interesting, then that's fine. Until today most of my posts don't get any views. But when I look back I can see what I was thinking at a time and how my views have changed over time.

If you really find it hard to think of a cool topic, here is where I get my ideas from:

  • What are you working on at the moment? Anything cool? Anything different? Challenges? Did you learn anything new? All these could be a blog post, if you start paying attention you might find that you have too many ideas to blog about.
  • Check out the trending topics online. What is the most popular framework? What is becoming popular? In my experience, the blog posts I got most of my views on are Vue related. That was only because I started blogging about it at the early stages and it scored high on search engine ranking.
  • If you find a popular topic or discussion and find yourself with a different perspective on it. Rather than writing a long message that boosts other people's popularity consider writing a blog post about it.
  • Watch YouTube videos, listen to Podcasts, read books and etc. There are plenty of places to find inspirations from.

Write it

Most of the time I do too much thinking and not enough writing, so I recommend others not to be like me. If you have an idea start jotting down points and if you find there's enough content then just write up a draft. If you really don't like the content after that, then you don't have to post it. But most of the time, getting it out of your head is the important first step.

You'll want to do this in a way that is quick and clean. I personally prefer to use Markdown because I will then focus on the writing instead of wasting time tweaking font size, colour and etc. Another reason for using Markdown is because Contentful and Gatsby both support Markdown, so works even better for me.

If you never used Markdown before here are a few nice tools to write in Markdown:

  • VS Code is a text editor, so it is just as good for writing Markdown content
  • StackEdit is an online-only Markdown Editor, so great for people switch between machines all the time.
  • typora is a desktop application available on Window, Linux and Mac (beta).
  • Notion is more than just a markdown editor, it might be an overkill for some. The only downside is that copying text out of Notion has always been a pain for me. Since their format messes up Markdown links.


Sometimes it is hard to find someone to proofread your content for you. I am always posting blogs at weird times, and I don't like to bother people. I used to just post whatever I write online, and often I'd find mistakes later. If you are like me, I'd recommend using a tool called Grammarly which could correct some simple grammar and spelling mistakes.

It means I often need to copy what I write around, I am looking to find a good way around this. But so far, this is my workflow:

  • Write up content in Markdown
  • Copy it into Grammarly for simple Checks
  • When I'm happy, copy it into Contentful which is what I'm using to store my blog posts

One thing I'd like to mention which can be stressful is working with images. Because I need to copy my content around a few times, it means I cannot insert the images into the article as I write. I normally add in placeholders for images and then add them in when the content is in Contentful. So I always find there is some assembling work in the end.

With this workflow, I normally find I prefer to write shorter posts that can be done in a few hours instead of a longer article which may span over a few days. It is not impossible, just I prefer to sit down and have everything done in one session.


Deployment is very easy with my current setup it is one of the reasons why I settled with it. I won't go in too much detail here but get in touch if you'd like to know more. I've also written a blog post on this already and explained why I decided to change to it.

The tech stack includes:

  • Github
  • Netlify
  • Contentful
  • Gatsby

When I add a blog post into Contentful and press publish. It will trigger a Netlify build via webhook, which takes the Gatsby blog code and generates a static site using the data coming from Contentful. So apart from the initial setup and some bug fixes here and there. There is very little technical maintenance work.