2021: Year in Review

2021: Year in Review Featured Image

2021 was quite the year! COVID was in full swing. Institutions were in a permanent state of hybrid, and Bo Burnham released a banger of a special. I did some things as well. Let’s talk about them.

Table of Contents

Accomplishments in 2021

For most folks, 2021 was a hard year—myself included. As a result, I’m going to list off just about anything positive that happened as a major win:

  • Passed qualifying exam
  • Started a business bank account
  • Watched a lot of movies, series, and anime
  • Continued my Duolingo streak to 1300+ days
  • Visited family for holidays (with caution)
  • Got vaccinated against COVID three times
  • Went to an in person hackathon
  • Expanded several open-source libraries including Subete and SnakeMD
  • Published my first conference paper
  • Went camping in a tent and glamping in a cabin
  • Visited my friend’s family in Florida for the first time
  • Started learning Japanese
  • Visited home a lot
  • Passed all my classes
  • Got back into teaching

Over the span of the year, I’d have to say my proudest achievement is passing my qualifying exam. That said, I think getting the chance to finally travel a bit is the thing I’ll remember the most about 2021. What sort of things did you accomplish? Surviving is a perfectly good answer!

Favorite Photos of 2021

While brainstorming the list above, I thought it would be fun to share some of my favorite photos from the past year.

In here, you’ll find a nice mix of camping photos, pet photos, and nephew photos. Oh and don’t forget that short trip to Florida! I’d love to go down there again.

Favorite Creations of 2021

I don’t remember exactly when I moved from posting twice a week to once a week, but I do know that 2021 was a light publishing year. At most, I wrote 4 articles a month, so putting together this list was pretty easy.

At the moment, I don’t have a lot of plans for future content. I’ll be posting once a week as always, but I expect a particularly challenging semester ahead. As a result, I’ll be going with the flow.

Projects in 2021

Again, 2021 was a bit of a mess. Of course, that didn’t stop me from working on a bunch of cool and weird projects. Let’s get into it!

Sample Programs in Every Language

The Sample Programs repoOpens in a new tab. has been my baby since early 2018. It’s the first open source project that really took off for me, and I’ve enjoyed working on it ever since.

That said, it’s a project that tends to revolve around the yearly Hacktoberfest mess. Rarely do I get folks contributing to it throughout the year, and I haven’t really heard of anyone using it. So, I have no clue if it’s getting any love.

To no surprise, the past year was yet another sort of Hacktoberfest-only year. That said, I did a lot of cool things around the idea of the Sample Programs repo. For instance, I made a template repoOpens in a new tab., so folks can make their own collections.

Likewise, I did a ton of work to extract some of the cooler parts of the workflow. For instance, I automated all of the READMEs. And, I even pulled out the README automation code into its own repo! More on that next.

SnakeMD

At various points in maintaining the Sample Programs repo, I thought about ways to automate painful tasks. For example, I found the process of maintaining the READMEs for each programming language to be cumbersome. As a result, I wrote some code to automate them.

As you may know, GitHub READMEs are in Markdown. When I wrote the tools to automate the READMEs, I inadvertently wrote a Markdown generation script. Eventually, I ended up sharing that Markdown code with several of my own repos before deciding to extract it into its own library.

The resulting library ended up being called SnakeMDOpens in a new tab.. It’s a silly name because what I really wanted was PyMD, but we can’t get everything we wanted. As a result, I settled on SnakeMD which sounds like a snake doctor. Instead, it generates Markdown files for you.

I’m extremely proud of such a simple script because it’s one of the few things I’ve made that I think will actually help folks. And I’m not wrong! I’ve done basically no marketing for it and 8 repos are already making use of it. How cool is that? The wild part is I don’t even know how folks are finding the repo because I can’t seem to get it to show up in Google.

Subete

Since we’re on the topic of Sample Programs ports, another library that I put together this past year was subeteOpens in a new tab.. Subete is a silly library, but I kind of love it. It allows me to programmatically browse the Sample Programs repo in Python.

I’ve most recently used this library to automate my profile page on GitHub. Once a week, I post (automatically) a different code snippet from the repo.

I’ve also used the library to generate some pretty plots of data related to the repo. I haven’t looked at these plots in ages, but I imagine they’re cool!

Oh, I’ve also used the library to create a Discord bot that shares random code snippets from the repo. It’s a silly thing, but I love it.

Metrics 2017-2021

I’ve been tracking data about the site for a long time. These days, I don’t really pay attention to the metrics, but maybe you’ll enjoy taking a peek at them.

Page Views: Months & Years

As far as page views are concerned, all I can really say is “L + Ratio.” Joking aside, my view counts have definitely dropped over the years. That said, I think they’ve more or less stabilized, which is a positive in my eyes.

Month20172018201920202021
Jan42719.1k21.1k11.8k
Feb39716.2k24.8k11.6k
Mar1.1k31.0k21.9k13.9k
Apr3791.3k45.4k18.8k13.9k
May3171.4k52.7k17k11.5k
Jun33778026.7k13.5k11.7k
Jul2531.7k19.8k13.9k10.3k
Aug7141.9k19.9k16k12.1k
Sep5055.7k22.5k15.4k11.9k
Oct5.1k*10.9k17.8k17.3k13.7k
Nov9049.9k15.0k15.4k13.6k
Dec20213.9k11.8k12.2k12.7k
Total8,77349.6k298k208k149k
Data has been truncated to fit the width of the screen.

I don’t really have any goals for view count in 2022, but I’d be content with keep the site over 10k views a month. That seems reasonable!

Top Posts & Pages

I was a bit weirded out with the top pages this year. Surely, the Python stuff stands out. I realize that’s my niche. That said, an article I didn’t even write snuck into my top five, and that does make me sad from time to time.

Rank20172018201920202021
#1Home
2.9k views
How to Check if a File Exists in Python
27.2k views
How to Check if a File Exists in Python
148k views
How to Check if a List is Empty in Python 
19.9k views
How to Increment a Number in Python
12.3k views
#2Archives
2.1k views
How to Sum Elements of Two Lists in Python
5.4k views
How to Check if a List is Empty in Python
65.6k views
Python Code Snippets for Everyday Problems
14.4k views 
How to Performance Test Python Code
11.9k views
#3About 
430 views
How to Convert Two Lists into a Dictionary in Python 
2.7k views
How to Sum Elements of Two Lists in Python 
14k views
How to Invert a Dictionary in Python 
9.3k views
Python Code Snippets for Everyday Problems
11.4k views
#4World Domination Checklist 
282 views
How to Invert a Dictionary in Python 
1.9k views
How to Invert a Dictionary in Python
13.3k views
How to Performance Test Python Code 
8.6k views
Hello World in Brainfuck
10.6k views
#5Computer Science Email Tutoring Now Offered 
197 views
Archives
1.5k views
How to Convert Two Lists Into a Dictionary in Python
10.1k views
How to Print on the Same Line in Python
8.2k views
How to Open a File in Python
4.9k views

That said, I am pleased with the spread of top posts. Once again, I don’t really have a single post running away with the view count like in 2019. Obviously, I wouldn’t be opposed to that kind of traffic, but I prefer the stability of the current setup.

Top Sources of Traffic

There’s no surprise that my top sources of traffic are organic. That said, what I’m most pleased by is the growth of support from other search engines like Bing and DuckDuckGo. With Google, I’ve found that I’ve slowly be falling off. I don’t know why Google refuses to recommend my content, but it’s frustrating. Thankfully, we’re seeing respectable growth from other sources.

Rank20172018201920202021
#1GoogleOpens in a new tab.
2.3k views
GoogleOpens in a new tab.
39k views
GoogleOpens in a new tab.
259K views
GoogleOpens in a new tab.
92.9k views
GoogleOpens in a new tab.
74.8k views
#2Facebook
418 views
GitHub
809 views
DuckDuckGoOpens in a new tab.
4.8k views
BingOpens in a new tab.
22.3k views
BingOpens in a new tab.
24.9k views
#3Twitter
64 views
BingOpens in a new tab.
451 views
BingOpens in a new tab.
4.8k views
DuckDuckGoOpens in a new tab.
19.2k views
DuckDuckGoOpens in a new tab.
20.6k views
#4LinkedIn
30 views
Google+
266 views
WordPress Android App
1.3k views
Yahoo
3.9k views
Ecosia
3.8k views
#5StumbleUpon
20 views
WordPress Reader
247 views
GitHub
967 views
Ecosia
3.1k views
Yahoo
3.5k views
#6YahooOpens in a new tab.
14 views
Twitter
246 views
Yahoo Search
777 views
Dev
2.2k views
Dev
869 views
#7BingOpens in a new tab.
12 views
DuckDuckGoOpens in a new tab.
215 views
Ecosia
522 views
GitHub
1.3k views
GitHub
682 views
#8GitHub
9 views
Facebook
193 views
Twitter
289 views
TopDev
810 views
Yandex
557 views
#9WordPress Reader
8 views
Instagram
86 views
Qwant
160 views
Edabit
550 views
Qwant
471 views
#10DuckDuckGoOpens in a new tab.
3 views
YahooOpens in a new tab.
85 views
Yandex
144 views
Qwant
500 views
Edabit
216 views

Next year, I’d like to see DuckDuckGo and Bing (combined) take over Google. Then, I could finally prove that Google just hates my content.

Top Countries

Not much to say here. My content thrives in English speaking countries.

Rank20172018201920202021
#1United States of America
(4,037 views)
United States of America
(20,949 views)
United States of America
(115,649 views)
United States of America
(57.6k views)
United States of America
(44.3k views)
#2South Korea
(578 views)
India
(6,230 views)
India
(33,496 views)
India
(20.9k views)
India
(17.4k views)
#3France
(542 views)
United Kingdom
(2,581 views)
United Kingdom
(14,206 views)
Germany
(14.2k views)
United Kingdom
(8.4k views)
#4Russia
(221 views)
Canada
(1,716 views)
Germany
(13,664 views)
United Kingdom
(10.5k views)
Germany
(8.2k views)
#5Germany
(220 views)
Germany
(1,517 views)
Canada
(11,003 views)
Canada
(7.7k views)
Canada
(5.7k views)
#6Philippines
(189 views)
France
(1,066 views)
France
(8,636 views)
France
(5.3k views)
France
(4.4k views)
#7Canada
(183 views)
Australia
(807 views)
Brazil
(6,097 views)
Australia
(3.8k views)
Russia
(3.8k views)
#8India
(173 views)
Israel
(718 views)
Australia
(5,445 views)
Netherlands
(3.6k views)
Netherlands
(2.9k views)
#9Japan
(150 views)
Brazil
(685 views)
Netherlands
(4,847 views)
Brazil
(3.3k views)
Australia
(2.9k views)
#10Cambodia
(145 views)
Netherlands
(611 views)
Spain
(4,237 views)
Russia
(2.7k views)
Brazil
(2.5k views)

Top YouTube Videos

Despite barely publishing at all over the past year, I didn’t see much in terms of fall off that a lot of YouTube folks describe. Perhaps my content is somewhat evergreen. Let’s see what happens in 2022.

Rank201920202021
#13 Ways to Check If a List Is Empty in PythonOpens in a new tab. (232 views)3 Ways to Element-Wise Sum Two Lists in PythonOpens in a new tab. (974 views)3 Ways to Map Two Lists to a Dict in PythonOpens in a new tab. (876 views)
#24 Ways to Reverse a Dictionary in PythonOpens in a new tab. (146 views)4 Ways to Reverse a Dictionary in PythonOpens in a new tab. (571 views)3 Ways to Element-Wise Sum Two Lists in PythonOpens in a new tab. (592 views)
#33 Ways to Element-Wise Sum Two Lists in PythonOpens in a new tab. (142 views)3 Ways to Map Two Lists to a Dict in PythonOpens in a new tab. (353 views)4 Ways to Reverse a Dictionary in PythonOpens in a new tab. (511 views)
#43 Ways to Map Two Lists to a Dict in PythonOpens in a new tab. (44 views)3 Ways to Check If a List Is Empty in PythonOpens in a new tab. (214 views)3 Ways to Compare Strings in PythonOpens in a new tab. (457 views)
#5The Definitive Guide to List Comprehensions in PythonOpens in a new tab. (37 views)4 Ways to Get the Last Element of a List in PythonOpens in a new tab. (143 views)4 Ways to Get the Last Element of a List in PythonOpens in a new tab. (408 views)

Also, YouTube is nice enough to share a year in review email which included some fun 2021 stats:

  • 6,763 minutes of watch time
  • 2,941 views
  • 49 likes
  • 2 comments

Maybe I’ll have more time to post in 2022!

Total Revenue

Ah yes, the money question! As a quick overview, money was about as good this year as last year, which is saying a lot given the decrease in traffic.

That said, let’s talk about income sources in more detail. Up first is Patreon which has shown a small decrease in support over the last year. That said, I picked up two more folks that I don’t even know, so that’s cool!

Month201920202021
Jan$0.00$17.37$18.14
Feb$0.00$17.37$18.14
Mar$0.00$17.37$18.14
Apr$0.00$17.37$18.14
May$0.00$23.75$18.14
Jun$0.00$23.75$18.14
Jul$8.30$23.74$18.14
Aug$22.72$23.74$18.14
Sep$22.72$23.75$18.14
Oct$22.72$23.75$18.14
Nov$22.72$18.14$9.84
Dec$22.72$18.14$9.84
Total$121.90$248.24$201.08
Income from Patreon by year

While I’m happy with the Patreon income, we have to talk about the Amazon income. Amazon is funny one for me because 99% of it comes from my trombone site which I don’t publish on anymore. That said, it’s still bringing me a fairly decent chunk of change at the end of the year. In fact, it outperformed last year! Maybe I’m in the wrong field.

Month201920202021
Jan$0.00$1.49$4.23
Feb$0.00$0.00$14.30
Mar$0.00$12.70$8.51
Apr$0.00$11.63$8.18
May$0.00$0.90$6.09
Jun$0.00$12.78$4.12
Jul$0.00$0.98$2.66
Aug$0.00$0.94$2.20
Sep$0.00$0.62$4.37
Oct$0.20$0.38$9.84
Nov$0.00$8.59$10.84
Dec$0.00$7.24$4.39
Total$0.20$58.25$79.73
Income from Amazon by year

As you probably know, I’m not a huge fan of ads. That said, they’re a fairly stable way of earning income, so I turned them back on this year. With just a handful of ads on the site (two in the sidebar and two in the footer), I managed to make over $100 in the span of a year. I would not be surprised if that number goes up in the next year.

Month2018201920202021
Jan$0.00$12.84$0.00$2.72
Feb$0.34$8.93$0.00$8.34
Mar$1.68$21.71$0.00$9.23
Apr$1.68$28.18$0.00$8.76
May$1.49$30.53$0.00$6.27
Jun$1.05$17.00$0.00$10.98
Jul$1.94$10.67$0.00$7.67
Aug$0.56$9.78$0.00$7.23
Sep$5.87$4.99$0.00$14.55
Oct$9.28$0.00$0.00$18.63
Nov$12.19$0.00$0.00$18.99
Dec$15.56$0.00$0.00$10.89
Total$49.96$144.63$0.00$124.26
Income from ads by year

One last table I like to include is for historical reasons: the membership revenue. Prior to Patreon, I rocked a membership site. That’s long gone, thankfully.

Month20192020+
Jan$4.55$0.00
Feb$4.55$0.00
Mar$9.10$0.00
Apr$9.10$0.00
May$9.10$0.00
Jun$9.10$0.00
Jul$4.55$0.00
Aug$0.00$0.00
Sep$0.00$0.00
Oct$0.00$0.00
Nov$0.00$0.00
Dec$0.00$0.00
Total$50.05$0.00
Income from membership site by year

Outside of the big three sources of income (i.e., Patreon, Amazon, and Google Ads), I don’t really have other sources of revenue. That said, I started an official bank account for the site, and I even began investing the earnings. Maybe in the future we can talk about how those investments are going. For now, let’s call it a day.

A Look into 2022

These days, I try to move one day at a time. Between working toward candidacy and caring for family, I have little time to dedicate to the site. That said, this is one of those things that I’m proud to have said I started and continue to maintain. As a result, who knows what 2022 will bring, but I guarantee I’ll still be here.

With that said, is there anything you want to see in 2022? Let me know!

While you’re thinking about that, here are some of the other review posts for your perusal:

Otherwise, happy new year! Let’s make 2022 great.

Year in Review (6 Articles)—Series Navigation

Every year, I like to summarize what happened in the previous year. Usually, these articles focus on my efforts with The Renegade Coder, but there’s no way to get away from the fact that we’re all whole people: our lives are more than our work.

Jeremy Grifski

Jeremy grew up in a small town where he enjoyed playing soccer and video games, practicing taekwondo, and trading Pokémon cards. Once out of the nest, he pursued a Bachelors in Computer Engineering with a minor in Game Design. After college, he spent about two years writing software for a major engineering company. Then, he earned a master's in Computer Science and Engineering. Today, he pursues a PhD in Engineering Education in order to ultimately land a teaching gig. In his spare time, Jeremy enjoys spending time with his wife, playing Overwatch and Phantasy Star Online 2, practicing trombone, watching Penguins hockey, and traveling the world.

Recent Posts