Year end review — 2021


Hello! It’s a tradition for me to write a review for the year. I’m going to do it again this year even though I haven’t been blogging for a couple of months.

Many things happened last year so it’s easier for me to split this review up into 4 sections:

  • Work
  • Non Work
  • What I learned
  • What’s for 2022


Traffic Numbers

I’m thankful that my little corner on the internet served 1.10 Million people over 2021. This number was slightly lesser than the previous year, most probably because I stopped blogging in July.

  • 2019: 1.04 Mil
  • 2020: 1.36 Mil
  • 2021: 1.10 Mil

I haven’t produced many articles this year — only 18 articles — so I’m not surprised that traffic has reduced.

There was a significant drop in traffic since July 2021 since I stopped blogging.

Four questions popped into my mind here:

  • Why isn’t my traffic growing beyond 1 Million visitors?
  • What have I done right so far?
  • What have I done that was ineffective?
  • Should I focus on SEO going forward?
  • I don’t have answers to these questions now, but I imagine myself finding some answers in 2022.

Email Subscriber Count

Email subscriber count seems to have increased compared to past years:

  • January 2020: 22,491 subscribers
  • January 2021: 20,530 subscribers
  • January 2022: 27,503 subscribers

I don’t believe there is a huge increase in subscribers, because I may have forgotten to prune cold subscribers off my email list. There are 15,000 cold subscribers on this list right now. And honestly, this is quite depressing.

A screenshot showing the number of cold subscribers to the newsletter

I don’t want to mess with the numbers here until I complete the Learn JavaScript launch in February. There’s a high likelihood that subscribers are labelled cold because I haven’t been sending emails for the past few months.

I’m expecting around 20,000 subscribers after I pruned the list, which tells me my business hasn’t been growing for the past 3 years.

Completing Learn Javascript

My greatest achievement in 2021 is completing Learn JavaScript. I took 4 years to write this course because it was freaking huge — and I went super detailed to help beginners understand the entire process of creating things with JavaScript.

I wrote a blog post detailing the things I learned from writing Learn JavaScript, so I shall not say more here.

Two new courses — Understanding Async JS and Essential CSS

I hoped to take a few months off after finishing Learn JavaScript, but I didn’t. I went straight to announcing two new courses I’m working on:

  • Understanding Asynchronous JavaScript
  • Essential CSS

In Understanding Asynchronous JavaScript, I teach you everything you need to learn about Asynchronous JavaScript — including REST API, GraphQL, OAuth, and how to use APIs to build stuff.

In Essential CSS, we show you everything you need to know about CSS to create a basic website from scratch — including the Box model, Flexbox, Grid, Typography, and many other things.

(I say we in Essential CSS because I roped my good buddy Hui Jing in to create the course content. She’s the kind of person that reads CSS specs for fun, so the content she produces is amazingly accurate).

Preorders for both courses are open. You can snag a 25% discount if you purchase now. I haven’t had the opportunity to create a website for each course yet, so send me an email if you want information about them.

Although I kickstarted both courses in May, they’re both still on a WIP status. We’re completing the courses very soon. I’ll release more information about them as we go along.

Changing payment structures for Learn JavaScript

Revenue for Learn JavaScript dropped drastically during the July 2021 launch.

A screenshot of my revenue figures since Learn Javascript launched

This huge drop can be attributed to a change in payment structure for Learn JavaScript.

  • Before July: People can pay with a 12-month payment plan
  • July onwards: No more 12-month payment plan; switched to 4-month plan instead.

A few noteworthy points here:

  • Many people cancelled their plan halfway. This results in bad debts ranging between 27% and 62%. It’s really hard to estimate actual revenue numbers because of the variance in cancellation.
  • There were much lesser bad debts in July 2019 and January 2022 (27% and 32% respectively) — I have no idea why cancellations decreased in these two launches.
  • Revenue figures for one-time purchases in July 2021 dropped about 50% with the introduction of a 4-month payment plan — I wonder if this reduction is due to COVID finally hitting my business, or if it has a strong correlation to payment plan prices.
  • Total revenue for July 2021 dropped about 50% — I did not expect this. I had a great shock when I noticed this and I fell into depression.
  • There doesn’t seem to be a huge value in offering payment plans — I didn’t offer a payment plan in Jan 2019 launch but it still made the same amount of sales. In fact, if I don’t provide a payment plan, I get less anxiety from cancelled subscribers and also less admin overhead to worry about.

The data tells me I should stop providing a 4-month payment plan. I can try a 6-month plan and see whether the revenue numbers works out. If it doesn’t, I may revert to a launch without any payment plans.

(Good news: I’m going to offer Purchase Parity Pricing for the February 2022 launch!)

Revenue for 2021

Revenue numbers for 2021 increased slightly compared to 2020 despite July sales figures doing badly.

  • 2018: $93k
  • 2019: $78k
  • 2020: $85k
  • 2021: $95k

The $95k came from these (approximately):

  • Less bad debt from the July 2020 launch subscription. (Half of the subscription income arrives in 2021) — $10k
  • Learn JavaScript launches in 2021 — $60k
  • Learn JavaScript Evergreen funnel (so people can buy Learn JavaScript between launches if they saw it for the first time) — $10k
  • Understanding Asynchronous JavaScript: $4k
  • Essential CSS: $2k
  • Mastering Responsive Typography: $600
  • Automating Your Workflow: $300

A few notes:

  • My numbers don’t add up to $95k for some weird reason — I need a better way to crunch numbers in 2022.
  • Mastering Responsive Typography (MRT) and Automate Your Workflow (AYW) are courses I’ve written long ago. I don’t promote them actively at this point.
  • MRT is old but valuable for developers who value design. I might refresh the course this year with some changes to bring it up to speed.
  • AYW is outdated since I used Gulp 3 in the book. We also have many tools which handle the development environment nowadays, so I don’t think I would refresh the content at this point.

I’m a bit anxious about the revenue figures for 2022 since I don’t have any income stream from 2021 launch anymore. (It’s a 4-month plan so I collected all the money). I hope the introduction of new products will help with the revenue this year. Wish me luck! 💰

Depression in July

I went into a depression in July 2021 because the revenue figures fell by 50%. I wondered if the work I’ve been putting in were all useless — they weren’t even strong enough to maintain sales figures!

I was also severely burnt out at this point because I was writing content that I didn’t particularly liked, for the sake for “selling” things. The launch figures accelerated everything and I had to give up writing for a couple of months.

I sent out an email telling everyone I was depressed — this was the one of the most courageous things I did in 2021. Many people responded with well wishes and I received them warmly. Thank you, if you were one of them.

I stopped writing publicly, but I didn’t stop writing privately. I continued to work on Understanding Asynchronous JavaScript after recovering. I also launched Life Beyond Code during this period (more on this later).

I’m more or less recovered from the depression and I’m itching to write again. I have a few article ideas ready to go. So you should hear back from me again in 2022.

More content. More love! As always, I hope my content helps you grow as a developer. ❤️

Started Life Beyond Code

Life Beyond Code is a project where I write about things outside of coding. (It’s probably a lousy name that doesn’t do the content justice, but that’s the best I can come up with at this point).

Life Beyond Code gives me a place to reflect, and write interesting ideas from my reflections and observations about life. Content idea include the following:

Life Beyond Code is like a hobby project now. Prices are low — three tiers at $3, $5, and $10 per month respectively.

Life Beyond Code is behind a paywall because:

  • I’m feeling vulnerable and I needed a private place to write
  • I wanted to be more vulnerable and open than before — which is something I don’t feel safe enough to write on a blog that has a million visitors
  • I thought the ideas from my reflections may help people out, and I wanted to share these ideas with them.

I don’t want to sell Life Beyond Code here. Feel free to email me if you’re interested. I’ll also release more information about this in future when I’m ready.

Working with Jen

I hired Jen as my assistant at the start of 2021.

Working with Jen has been amazing. She helped me with things like:

  • Crunching the numbers you saw above — so I have a good idea of my financials
  • Helping with customer service — so I can spend more time creating than replying emails
  • Consolidating my invoices — so I don’t have to spend time doing something I dislike.
  • Fixing typos — so the blog posts look slightly better without stupid mistakes.

We talked about increasing the amount of time she works for me — from 10 hours to 20 hours per week — early at the start of this year, and she agreed!

I’m looking forward to see how these 10 extra hours leads to improving the business and offerings I can provide for you.

Not Work

Oi Movement

I contributed many hours into a volunteer movement called the Oi Movement. It’s a social movement aimed to improve the lives of 10,00 people by helping them create more authentic connections with people.

When we started Oi Movement this year, there wasn’t any directions. I was tasked to be the head of marketing and I set most of the direction and focus for the year.

Unfortunately, we didn’t hit our target. We failed abysmally and only managed to help 200 people out of our 10,000 target.

I learned many things about teamwork and leading teams here, even though we didn’t hit the target. It was both an enjoyable and painful experience with the team dynamics and goals we were reaching for.

I’ve left the Oi Movement at the start of 2022 to concentrate on other areas of my life (mostly to work on the business and family). I believe leaving is a good decision for my life and for the movement, considering how I can’t contribute in the same capacity anymore this year.


Besides Oi Movement, I also joined a thing called the CSG. Basically, this consists of people who came together to work on certain projects together. It’s like a mastermind, but structured differently.

I led a group of 10 people in the first 6 months, then a group of 5 in the next 6 months.

I learned how to facilitate both small and large groups while focusing on growth and momentum. I gained some successes and had to deal with some failures too.

Overall, I felt it was a good experience that helped me become a better leader. I also learned how important social interaction actually is to help people come together.

Going through 13 courses

I go through courses with Live your mark every year. This year, I took on more than I intended — 13 courses in total.

These courses changed the way I look at life and how I handle things. I felt I understand myself more and have more control over my responses.


I always wanted to be able to draw. While I managed to create a life-like picture with Charcoal (once, after several hours of work with a teacher), I still feel I’m unable to draw.

So, during one of the programs I took with Live Your Mark, I took a stab at drawing. I’m able to draw with more confidence now.

Here are some of my creations.

These pictures definitely aren’t world-class, and they won’t sell for anything. But I think they are pretty amazing for someone who feels repressed when it comes to drawings.

I still feel fear and inadequacy when it comes to drawing, and this is something I want to work on in 2022.

What I learned in 2021

I don’t want to focus my life on helping people

I genuinely love to help people, but I don’t want to focus my life on helping people.

The problem is I do too much when I focus on helping people — I bend over backwards to help, sacrificing myself in the process for their happiness or progress.

Sacrificing myself was the “right thing to do” in order not to be selfish, in order to be generous, and to be accepted. But it hurts me, so I feel more hollow with each assistance I gave someone, even though I felt some relief at the same time.

This was one of the reasons that fed my depression.

I don’t want to lie to myself that I want to help people.

I realized I want to help myself more than anyone else. By helping others, I was hoping that someone would help me. I was also hoping I would gain the strength to help myself. So I was compensating for my weakness, but the “plan” backfired since I sacrificed myself to help others.

I don’t know what to think about “helping people” at this point. I still find myself supporting and helping people, but it comes from a different place from what I mentioned above.

What I know is two things are going to change for sure:

  • I’m going to be helping myself from now on
  • If I help people, I will not sacrifice myself for them. I will make sure I’m also fulfilled at the same time.

I don’t know if this is a hard journey. Even if it is, I’m going to find a way. It’s a game I have to play.

This is hard to disclose publicly since it may work against me. But I did it anyways because I believe in transparency and honesty. It’s hard to tell people you’re not as good or kind as they want you to be.

I don’t really know what I want

Related to the above — if helping people isn’t what I want, then what do I really want?

In 2021, I discovered I don’t know a lot about myself, but I assumed I knew. I just pushed myself and worked hard because that was the right thing to do.

But there are many instances where I feel a deep pain in my heart and I have no idea where that was coming from. there was friction between what I said I wanted and what I really wanted.

So what do I really want?

Of the things that I said I wanted, which ones comes from the depths of my heart? Which ones are there because I forced myself to want them for the sake for survival and acceptance?

If I have no need for survival and acceptance, no need for proving, no need for anything, what do I want? What is important to me?

I have inklings of the answers, but I don’t have the complete picture.

I didn’t honour my dreams

Oi Movement’s founder said something that stayed in my mind for the entire year — ”If I don’t work on my dreams, I’m being a hypocrite”. Honestly I’m not sure if she said this, but it’s the statement I remembered.

During the year, I realized I wasn’t following my dreams when I helped out with Oi Movement and CSG — I have things I really wanted to work on but I haven’t been working on them.

I realize I want to work on my own dreams more than anything else. I don’t want to be building other people’s dreams when my own dreams are unfulfilled.

This realization nagged at me. It was painful for me to continue volunteering my time and energy to the point I didn’t have enough to work on my own dreams.

During the depression in July, I stopped doing everything I didn’t want to do. I gave myself time. I spent time sulking. I gave myself time to do things I wanted to do.

And I discovered there were things I’m really happy to work on:

  • Building a Todolist App — something I said I wanted to do for years
  • Designing — I worked on designing my blog for a bit but I got busy with courses from Live Your Mark.
  • Learning — I didn’t let myself read books or take courses (other than those from Live Your Mark) because I felt I had to “focus” and prioritize on what I have.
  • Reflecting — Live Beyond Code became something really fun for me because I get the opportunity to sit down, reflect, and write something that’s useful for me, which can potentially be useful for others.

I have more than what I think I have

I’m a fortunate person.

I have many things that I love.

I have a business that lets me lead the life I want — I can wake up anytime, have the flexibility to work anytime, plan my day without disruptions (except when my daughter refuses to go to school).

I have lots of flexibility and freedom — I can choose how I spend my time. I can take a day off anytime, or even go for an occasional break like I did without much consequences.

I have the people who matter to me — my wife, my daughter, my parents, and me.

I have the freedom to express what I want and need.

I have people who are willing to read what I write.

I have people who value my work

I’m really fortunate.

And I am alive.

I tend to forget I have these things when the going gets tough. But I’m grateful for remembering these every now and then, because they are things I truly enjoy.

I’m lucky to be able to write this blog post.

I’m lucky to that you’re reading this.


My 2022 theme will sound very selfish to some people, but it rings true to me.

My theme of 2022 will be me.

This means:

  • Listening to myself
  • Learning about myself
  • Letting myself do the things I enjoy
  • Letting myself do the things I want
  • Letting myself pursue things I want
  • Being with myself
  • Letting myself guide me
  • Letting myself express what I truly feel
  • Stop throwing tantrums
  • Finding what’s important to me
  • Working on what’s important to me
  • Being with people I love
  • Writing my own story — and not other people’s stories

I want to be open, in bliss, and in abundance. I want to believe that things will always turn out right for me in the way that I need it.

I’ll work on satisfying myself first. If what I do helps other people, that’s great! But if it doesn’t, that’s fine by me too. I don’t want to chase standards that others have left behind anymore.

I want to live my life.

What does my heart say? What do I really want?

I want to take a year to follow my heart and see what comes out of it.

Regarding work in 2022

I’m itching to write again for the blog. I want to find a way that is sustainable for me — and I think I found something. I just need to test it out.

I want to complete Understanding Asynchronous JavaScript.

I want to build more courses. Perhaps one on Optimistic UI, one on Node, or perhaps refreshing Mastering Responsive Typography.

I want to make the Todolist application — but honestly I don’t think I’d release anything in 2022. I’d be building something in silence or semi-public mode when I find time to.

I’m also looking to train someone in writing articles and courses — not sure how this is going to work out, whether it’s going to be a course or hiring someone in-house and training them to write for me. I’d think about this more before making a decision.


In summary, 2021 has been a tough year for me, but I learned and grown a lot from it. I want to dedicate 2022 to myself and see what comes out for it.

Thanks for reading this length piece. Thanks for giving me your attention. I hope this piece helped or touched you in some way. Thank you.

Want to become a better Frontend Developer?

Don’t worry about where to start. I’ll send you a library of articles frontend developers have found useful!

  • 60+ CSS articles
  • 90+ JavaScript articles

I’ll also send you one article every week to help you improve your FED skills crazy fast!