2020 wrap-up

Is hindsight really 20/20?

At the tail end of 2019, I published a post where I summarized what I'd done in 2019 and laid plans for 2020, including a list of goals. Now that 2020 is (finally) over, I thought it'd be a good time to review the year based on those goals.

I think that for the most of us, 2020 really didn't pan out the way we'd planned. It certainly didn't for me. But despite the (still) raging pandemic and all the other stuff that the world threw at us, I'm quite content with the year. It turned out very different to what I had imagined, but that's not necessarily a bad thing.

In particular, I have gained some very close friends this year, and my social life has, contrary to what you might expect, gotten much better. A better and more active social life means less time spent alone in front of a computer and thus less time for working on the goals I set out for the year.

I also started writing articles for LogRocket, which I consider a significant step forward. However, being paid to write elsewhere naturally means that I spend less time writing for my own blog, for better or worse.

2020: Review

I set myself a number of so-called SMART (Specific, Measurable, Achievable, Relevant, Time-bound) goals last year. Some I achieved, some I made fair progress on, and others I failed completely. Let's have a look!

Programming language theory

Goal: Read Pierce's Types and Programming Languages by July.

Status: Failed.

I'd almost forgotten about this one, but not for lack of interest. I started working on the book around March or so, but found that I was missing some basic mathematical background. So I followed the book's advice and picked up a number of other books to make sure I knew what was going on: Halmos' Naive Set Theory, Winskel's /The Formal Semantics of Programming Languages/, and Davey & Priestley's Introduction to Lattices and Order.

I made it through Naive Set Theory before embarking on Introduction to Lattices and Order, which I have not yet finished. It seems this could take a while longer than I had anticipated.

Community engagement

Goal: Give at least three talks/workshops at community events and apply to speak at at least three conferences by the end of the year.

Status: Failed ... but wait!

This is the goal that was impacted the most by the pandemic this year. It started well, but the cancellation of most in-person meetups got in the way of presenting at local events. I also only applied to two conferences this year, but one of those went through, and I spoke at NDC Oslo this summer about contributing to Open Source.

So while the exact targets specified in the goal weren't met, I'd say the impact of getting that first conference talk is big enough for me to think that maybe the minutiae don't matter that much, and that the essence of the goal was achieved.


Goal: Read the Emacs manual by February 1^st.

Status: Achieved.

At least the year started off well! While the manual was much longer than I thought, I did get through it by the deadline (and wrote about it shortly thereafter), so this is an easy pass. I also read the org mode manual a bit later and picked up some more tips and tricks.

As a corollary to the goal, I mentioned that I might try and configure Emacs from the ground up (instead of basing it on Spacemacs), but that that wasn't a necessity. I'm happy to report that I did do just that around August or so. As part of configuring Emacs from the ground up, I also decided I'd try and go without Vim key bindings. That went well for about six months until I accidentally (not really) configured Evil again just a few days ago. Whoops!


Goal: Write about build.nix, default.nix, and shell.nix by the end of the year.

Status: Failed. Thoroughly.

I'm not entirely sure why I didn't get around to this. I think I was planning on doing this later in the year, at which point the pandemic was very much happening and I was busy doing other things that felt more important at the time.

I'd still like to sit down and do this at some point, but I don't know when just yet.


Goal: Pass the Red Hat Certified Specialist in OpenShift Application Development exam by the end of the year.

Status: Failed.

This is another goal that almost fell off my radar. Because I was doing this in relation to work and work got rather busy for a while, I never quite got around to working on this. Until September/October, when I spent a lot of time reading up on this and preparing.

I took the exam again on January 6^th (already too late for the goal, but close enough; I scheduled it within the deadline) and failed. Again. With the exact same score as last time. And while I did clear all the stuff that I didn't previously, I scored 0% on some of the stuff that I know really well. I blame running out of time and not reading the problem text properly.

Oh, well. At least I learned a lot, right?


Goal: Manage a Kubernetes cluster by April 1^st, run a Haskell API (built with Nix) on it by June 1^st.

Status: Failed.

I made some progress on this and did have the Kubernetes cluster up and running (on DigitalOcean) in time for the first deadline. But then I just never got around to creating or setting up the Haskell API.

2021: New goals?

So what about 2021? Do I want to set any new goals? Much like Dave Rupert, I think I'll ease up on setting myself any goals for 2021. The pandemic is still very much present and will likely shape much of the coming year, even with vaccinations being rolled out at the moment. Based on the occurrences of the past week (/looking at you, America!/), I'm also not sure whether this year is going to be any easier than the last one in other regards. So for now, I think I'll just roll with the punches and take things one at a time. I'm working on a couple things, but I'll save those for later.

So a bit late, but happy new year to all of you! You survived! Now let's make the most of it.

Thomas Heartman is a developer, writer, speaker, and one of those odd people who enjoy lifting heavy things and putting them back down again. Preferably with others. Doing his best to gain and share as much knowledge as possible.