We’re now roughly two and a half weeks into 2021, and I’ve decided to take a moment to write a small article which looks back on 2020 and outlines my plans going ahead into 2021. Personally, I find that reflecting on past progress helps me shape future goals and learn from any mistakes that I may have made (which is just as important).
2020: A Year of Blogging
Early last March (just before the pandemic shut everything down), I created my blog and portfolio website, markjames.dev after being inspired by a post I read on Hacker News. Having grown tired of slow and bloated CMSes, I decided to develop my site with Jekyll and hosted on Github Pages and couldn’t be happier with it. Page load times are nearly instantaneous, articles are stored in markdown format, and site updates are simply a git push away. For the features a portfolio site requires, I couldn’t imagine needing to use anything more. Moreover, having received over 15,000 pageviews to date (with the majority of visits coming to the programming guides), the site has been a great way to connect with other developers who have reached out with positive feedback regarding various projects, and writing build logs has been great for helping me learn.
Expanding my Programming Skills
In 2020, I decided to really dive in and improve my programming skills in a number of areas. Having been normally used to working on websites, I decided to branch out, first by creating an iOs app (CU Libraries) with Swift and SwiftUI. The app even made it into the app store, but unfortunately due to the pandemic, the API the app depends on is no longer working properly and so I removed the app from the store. Next, I wrote Linnstrument-Helper, a GUI app for MacOS designed to help people learn how to play the Linnstrument, an expressive MIDI controller created by instrument designer and visionary Roger Linn. After getting comfortable with Swift, I transitioned to C# where I began working on a TUI music player known as MusicSharp. I was excited, as this project garnered quite a bit of attention from a post on Hacker News and I ended up getting 3 contributors to the project. This gave me an opportunity to learn to properly merge PRs and ensure that the project used consistent coding standards.
As a hands-on learner, these projects (and several other smaller ones) helped me learn different aspects of programming (for example, MusicSharp taught me how to properly code interfaces), and allowed me to avoid tutorial hell in the process. In addition, I also wrote detailed build logs for each of these projects. Personally, I find that Explaining programming concepts in article format really helps me cement my learning. At first, it was a little daunting having to code, problem solve, write about how you solved said problem, and then rinse and repeat, but with some practice the process began to get easier after I had a few articles under my belt.
Since I’ve gotten quite comfortable with the object-oriented programming paradigm, I’ve decided to challenging myself by learning a functional language in 2021. I’ve decided to go with F# for a number of reasons outlined in this article, and so far it has been quite a mental shift. I’ve been sticking with it however, and each day I make a point of writing at least a bit of F# code so that I can continue to familiarize myself with the language. So far, I’ve been really liking the way that F# handles nulls, and I find that the syntax is very clean and easy to reason about. I never realized how much extra C# code I had been writing just for null reference checks! In addition, as C# has increasingly been adopting concepts from F# (record types being a recent one in C# 9.0) I feel that the concepts I’ve been learning can carry over in a number of cases.
I’ve been increasingly interested in the cloud, especially since we use Azure at work. In late 2020, I was accepted into a Cloud Computing program at McGill University which I will be attending for the next year or so. The program is taught by a Google Cloud Engineer and consists of 5 courses, each covering in-depth a different area of the cloud (Docker, Kubernetes, Site Reliability Engineering, Advanced topics in the Cloud, and Devops practices). My first class is January 28 and I’m really looking forward to it!
For the past few weeks, we’ve had an 8pm curfew here in Montreal, and its been a bit of an adjustment as I’m used to taking walks later in the evening to help stimulate my mind. Despite the significant amount of restrictions we’ve faced over the past ten months to stop the spread, I’ve seen the distancing of the past year as a time hone my skills since I’ve been spending so much time at home. There’s a quote by Edward Everett Hale that I really like, and it reads:
I am only one,
but I am one.
I cannot do everything,
but I can do something.
And I will not let what I cannot do
interfere with what I can do.”
Lastly, I bought a bike in June and had an incredible time from June - November exploring the Montreal’s surrounding regions (1,600Kms according to Strava). Once spring starts again, I’m ready to keep going! For anyone thinking about biking, I leave you with the quote that convinced me to get a gravel bike:
“Get a bicycle. You will not regret it, if you live.”