A Year in Review: 2021
I accomplished more than I expected this year, but at the same time nowhere near enough. It seems that is always the case. I had hoped to write a lot more blog posts while at home over the pandemic, but the greatest challenge here was "putting the pen to the paper."
I've seen other people do "year in review" posts, and decided that I should start this as a tradition for myself as well.
Most people write about their highlights, problems, books, projects, and more. I'll start with what I accomplished this year.
Improving Programming Skills
I've definitely improved this year when it comes to understanding how to model problems in my mind. An issue that has always occurred to me is not knowing "where to start," but once I have I can rocket through the problem. It seems that modeling the problem is my ideal solution.
My skills in Rust, C, and Python have gotten better.
I attended my first ever conference (albeit virtually) in March when I went to LibrePlanet. After that, I decided I really want to speak at a conference, but bet myself that I would be too afraid to apply to a call for sessions. My coworker convinced me that I should apply, and I ended up speaking at EmacsConf 2021 (a blog post I should eventually write)! I look forward to more conferences to speak at and attend in the future, even if they are virtual.
Enough was enough, and I was done with my old ThinkPad. It had served me well, running every UNIX distribution under the sun over the years, but I needed something that better suited my workflow. I purchased the 2021 MacBook Pro 16" with an M1 Pro, 32GB of RAM, and a 1TB SSD. I hope to have many years worth of new memories with this machine!
I'm happy to continue working at Quub, and have made progress on projects there. I look forward to what we do in the future!
Goals Not Accomplished
It's unreasonable to expect all goals to be achieved.
Writing More Posts
As is obvious, I didn't get around to writing any posts except for this one (and even this in a new year). Something I need to improve!
Despite my best efforts and life-long goal, I did not get into MIT. I am happy that I got denied instead of deferred, as at least I don't have to sit around anxiously. I also did not get accepted into Carnegie Mellon, which was disappointing. It's important however to keep moving, so I have already applied to new universities and am researching all other possibilities.
Improving Clojure Skills
I barely worked in Clojure this year. Clojure has been one of my favorite languages (and my favorite LISP) for quite some time, but I never seem to find a project it's better suited for than Rust or C. I also didn't finish reading Getting Clojure.
I worked on quite a few projects this past year, from programming one to playing with my homelab.
Prior to January, I had been using the same Gmail address for years. It was full of spam, especially with notifications from various colleges, and I decided it was time to try something new. I was on the fence with a few different services, but decided that Posteo was the most affordable, and their mission statement coincided with my beliefs. I wish I had moved over earlier!
I took the time around July to migrate all of my work to Sourcehut. I believe in their model more than that of Github and Gitlab, but still mirror my projects to Github for visibility. I find the pricing for Sourcehut to be reasonable, and their CI/CD server is spectacular.
Android Kotlin Certification
In school this year, I was offered the opportunity to take the Android Kotlin Certification as a course. I've had a blast with this so far, and although I still have more interest in embedded systems, mobile development is fun.
Around August, I decided that I want to transition away from a total reliance on Spotify. An issue with this was that I listen to way too many songs, and am constantly looking for new music. A bridge for this was to download my Spotify playlists to my homelab, so that I could still use Spotify's discovery features.
Spotsync is a program written in Rust that automatically downloads your Spotify playlists every so often (as defined in the env vars), and can be run in Docker. It's been running perfectly for almost six months on my server!
An ambition program, FeStats was an attempt to take all the statistics functions of my TiNspire CX CAS and write them into a TUI Rust program. Spoiler alert: it was never finished. I got stuck (eventually permanently) at implementing various distributions in Rust, and decided the project wasn't worth pursuing. I did however learn a significant amount about Rust from that project, and am happy I attempted it (the TUI portion itself was finished).
This year, I finally went all in and purchased a rack-mounted server. I had been trying out Proxmox and Windows Server on my ThinkStation D20, but it was showing its age. Around May timeframe, I found a used HP DL360P G9 for a really low price, so I decided that was the time to go through with it. I found a Firebox M400 in a local electronics store, and installed a WD Velociraptor 10k RPM drive in it with pfSense. I received a Cisco L3 switch (only 10/100), and a HPE OfficeConnect 1820 PoE+ switch. The last issue I had was that the HP was a SFF, so I couldn't put in my existing 6TB drives. I found a Synology DS918+ on r/HomelabSales for a price I could afford, and finally had a complete environment.
There were still two annoyances, however: I only had 32GB of RAM (which isn't that much with Proxmox and the amount of VMs I wanted), and I didn't have a rack. Luckily I had a Lack table (the long one) and stacked my gear in the meantime. I couldn't afford the RAM, so I went with RHEL on my server (without VMs) and this Christmas got a 15U rack!
I'm sure I'll write about more of my experiences with Docker, Kubernetes, and UNIX eventually™️.
Goals For This Year
My goal is to read 24 books this year. I think I can handle two a month! I also decided that I will start using Goodreads more (profile linked).
I've written down some of the books I'd like to read below, and am excited to find new ones as the year progresses!
- The C Programming Language, Second Edition by Kernighan & Ritchie
- Star Wars Thrawn Ascendancy: Book Three, Lesser Evil by Zahn
- Structure and Interpretation of Computer Programs, Second Edition by Abelson & Sussman
- The Art of Electronics, Third Edition Improved by Horowitz & Hill
- Making Embedded Systems by White
- Getting Clojure by Olsen
- An Introduction to Programming in Emacs Lisp by Chassell
- Nicomachean Ethics by Aristotle
Keep Moving Forward!
As the film "Meet the Robinsons" always said, keep moving forward. I hope that my family stays healthy in the upcoming year, the world gets a little closer to the pre-pandemic state, and I keep working on my goals!