This site is being remade and I won't be updating this for a while. Expect a lot of broken links, design and functionality. If all goes well, things should be stable by the end of 2022. Thank you for understanding.


Goodbye 2021, Hello 2022

Published Updated

As 2021 ends and 2022 begins I want to reflect on how things went on my Codelab as well as my programming “career” along with my goals for 2022. In general, despite my many commitment issues, I managed to get some things done and I hope to get more done in 2022.


In 2021, I published just 4 posts on this blog (excluding links and contributions on other sites) which is far less than I have in previous years. The posts are:

Given that I don’t have analytics, I don’t know how well any of these posts did, but I think “Imagine if Doctors Relied on Google As Much As Programmers Do” got the most traction, probably more than a mega guide I published that same day (more on that in a bit). I’ve thought about this statement for years, but I put it into writing because some guy decided to be the main character again, arguing that we shouldn’t take pride in looking shit up for our jobs.

Besides these posts, I’ve also captured links of interesting content I found around the web, most interesting of which was a video on Igalia’s fundraising model. It’s a bit ironic that you need to fundraise to implement features in browsers managed by million, billion, and trillion-dollar companies, but once you hear their explanation it makes sense.

Posts On Other Websites

In 2021, I started to contribute content on other websites, specifically CSS Tricks. I remember reading how these online web development publications allow people to write on their sites, regardless of experience as long as it can help many other people. I took this up for two reasons.

  1. To gain experience in writing for others under the eye of an editor, rather than just whatever I feel like. I got this suggestion from Cal Newport who suggests that you should do things that require a gatekeeper as it will teach you more about how to do something rather than doing your own thing and hoping people will notice.
  2. They pay. I’ve been unemployed for nearly 4 years and I need to start making money. This is the easiest option I have now.

I tried to contribute a couple of articles in 2021, but they were rejected. Third (and fourth) time’s the charm as I managed to contribute two posts on CSS Tricks:

These posts took far longer than they should have to write and while they aren’t as good as they could be, I’m glad I was able to get something published on the site I use as a reference. The post on web feeds is something I hope will get more traffic in the coming years even if it didn’t spread as much as I’d hope.

Now that I know I can get published elsewhere, I want to do it more in 2022, mostly for money and experience. I’m working on another post right now and I have a few other ideas so now it’s a matter of executing them, preferably in under a month apiece.


I also started a newsletter. Honestly, I don’t know what I’m supposed to do with it. If you have any suggestions, let me know.

My Many Unpublished Posts

There aren’t as many posts on this site as there were in previous years, and that’s because I had a lot of unpublished posts in 2021. By unpublished I mean two things,

  1. unpublished as in not published, and
  2. unpublished as in I published it but then I removed it.

Concerning the posts I never got to publish, there are so many of them covering topics from image formats to armchair data analysis on RSS feeds. Some managed to get quite far even. The reason they didn’t get published is similar to why my contributed posts took so much time—I’m lazy and I fell down the rabbit hole and ended up bikeshedding things which resulted in me yak shaving.

The topics I wanted to cover are far more complicated than they looked at first and rather than accepting that I can always fix things if they aren’t perfect, I gave up and did nothing for weeks on end.

As for the posts I unpublished, I archived them on I did this to clean this site and tame my content folders. They’re still reachable through a 301 redirect as Cool URIs don’t change but if the content you want, isn’t let me know.

That’s it for writing, now onto things I programmed.


Programming-wise, I haven’t made much. Actually, I programmed a lot, I just don’t have much to show for it. Besides endless redesigns of my personal websites1, I must have made the same projects over and over again without actually publishing them.

The reason I struggle with actually publishing and iterating off that is that I’m worried about what prospective employers will think. As much as they say they like personal projects, I feel like putting the source code out there will invite a lot of nitpicking about how I did everything. Each redesign I keep hoping that things will be different, but they rarely are. In 2022, I hope to bias towards shipping and fixing things as I go.

While I haven’t got a portfolio to my name per se, I’ve learned a lot given all the experimentation I did. It’s Farai’s Codelab after all! From web workers to canvas, I’ve tinkered a lot. Just look at all the shitty CodePens I’ve made. Yeah, they’re shit but they’re a learning experience as well. Expect a write-up on that soon.

Open Source

As for open-source, while I haven’t contributed any code, I made a few bug reports to a few projects I use, namely Hugo, LCH Color Picker and the Recursive Font. It isn’t respected as much as code, but I like to think that I’m helping developers triage issues.

In 2022, I hope to be a better open-source user and make bug reports whenever I find issues. I also want to help improve Hugo’s documentation since it has a lot to improve upon. The first thing to document is Hugo’s XML unmarshalling.


I’ve got two YouTube channels, Farai’s Codelab which is supposed to be my main channel and Farai’s Codelab Notes, which is meant to hold archives to live streams and throwaway videos.

On the “main” channel, I’ve only published content I made years ago and I haven’t published anything new on it. Interestingly, the “secondary” channel has more uploads which are mostly me going through Cracking The Coding Interview. Despite the fact my friend bought it for me as a Christmas gift, I’ve never used it until now. I hope to go through this book and finish it.

As for analytics, just know that I only got 20 minutes of watch time and 14 views on the secondary channel and 4 hours of watch time and 308 views on my main channel. I was surprised that I got 4 hours of watch time on my secondary channel, but I realized that’s because of the one post I made which embedded two videos. Glad to see that they were watched.


It’s still nonexistent, but there are some embers, mostly thanks to the posts I wrote for CSS Tricks which have resulted in me making the most money since graduation in 2018. The job search process is very discouraging which is why I haven’t bothered to try for a long time. In 2022, I want to give it one last shot. If it doesn’t work, I’ll try something else. It’s unlikely, but unlikely things happen.

I also managed to get some contract work through connections, but they mostly failed. For one, I managed to get an MVP running and I fogot about the project only to meet the client in a bank where he paid me for what I did. Next year I hope to be more disciplined when it comes to such projects. Word of mouth is powerful and the best way for people to say nice things about you is to be dependable, which is something I need to work on.

Another thing I’ll need to work on is financial management, but that’s another post altogether.

Lesson of The Year: Embrace Experimentation and Iteration

The reason I called this site Farai’s Codelab was to give myself a license to experiment with code and share what I’ve learned. Over the years, that experimental fervor has faded as I got worried that what I produce won’t look good to others, which they don’t. After many random redesigns, spontanious project ideas and ugly CodePens, I’ve realized just how rewarding experimentation is. There’s a rush I get in figuring things out and though it’s ugly, I’ve learned a lot from it.

As I go into 2022, I not only want to continue experimenting, I want to embrace iteration more. Rather than perfection upfront, I want to ensure that my projects and articles improve over time. Interestingly enough, this very article is an example of that. I initially published it without this section but decided to add it just to share the biggest lesson I learned in 2021.


In all, I’m still languishing. While I haven’t accomplished all I wanted to do, I managed to get some things done and make a little money while a lot in the process. 2022 is the year I hope to turn things around, become financially independent, and start a career.

As for what I want to achieve next year, there’s a few things:

  • I want to write more content. Between my unpublished drafts, overactive minds, and possible guest articles, I want to put more content out there.
  • Take YouTube seriously. Besides putting my posts in video form, I’ve got plenty of ideas that could do well on YouTube. I just need to take it seriously.
  • Figure out what I’m supposed to do with my newsletter.
  • Make the projects I’ve wanted to make for years.
  • Understand the basics of web development, lest I make more ugly sites like the one you’re looking at now.
  • Contribute more to open source, mostly bug reports and improving Hugo’s documentation.
  • Finally, and biggest of all, I want to get a job (preferably outside Zim) and start my tech career either programming or writing technical content.

That’s a lot, but if you break it down and work on it consistently over many years, it’s doable, I hope.

Thanks for reading! If you got this far down, you should know that there’ll be another post going through the projects and posts I plan to make in 2022. It’ll be a premium exclusive, so sign up to my Patreon if you want to read it. I might also make a post going through my old projects which will also be a premium exclusive.

  1. Yes this site looks like ass right now. It’s undergoing yet another redesign. ↩︎