2023 tech journey

#erranto #game-of-life #chip-8 #Java #react

Time is our most valuable resource. In fact, it is the only resource we consume regardless of the actions we take. We can only optimize the way we spend our time, but we can never get it back.

In 2023, I have definitely been more careful with that. I have reduced the amount of times I am going out, the amount of TV programs I watch, and the amount of games I am playing. I have never been a gamer in the “correct” definition of the word; however, I would sometimes spend hours playing a useless game on my phone. And don’t get me wrong, there are still times I get distracted and I end up down the rabbit whole (YouTube is definitely one reason), I just think I am now a bit more aware when that happens. So, what did I do with the newly available resources?

Throughout the entire year, I have spent approximately two months at home (in London) together with my family, most of which was while working remotely. This was a great reminder of how privileged I am to be able to do that. Sometimes, we take our privileges for granted and forget to appreciate them, or we start to develop a sense of entitlement.

In that regard, 2023 was a “return to office” year, and I witnessed a lot of resistance, especially in the IT world. Things got so out of hand that it became an ideological war. Some companies took extreme measures to get their employees back to the office by mandating specific days when they had to be in. For the most part, they used a one-size-fits-all approach. I know of a case where an engineer was mandated to commute to the office just to sit in Zoom calls all day because the rest of the team was in another location. The reasoning was “we mandate all our employees to be in the office three times a week,” regardless of team structure. That is just absurd! Are we entitled? Yes. Are some company policies debatable? Also yes. Anyway, I digressed, so let’s get back on track.

I started this project (erranto.com) in November 2022 and I was planning to have consistent contributions to it. Unfortunately, I have not written as much as I would have liked, and I even archived some of the older posts. However, one of the nice changes I’ve made was to move the site from Gatsby to Astro after one of my new colleagues introduced me to it. I love the simplicity of Astro and how I can write components that are pretty similar to Svelte. On top of that, I can actually use any frontend framework I want, and more than one at a time. During the transition, I also reworked the entire design (based on Flowbite) and removed the comments section. That’s something I am considering bringing back to make the site a little more interactive. You might have also noticed that the About page needs some proper love. I should definitely improve it but I struggle with describing myself or giving any LinkedIn recommendations to my former colleagues.

Apart from Erranto, I have been shuffling through a few personal projects. One of them is a simple implementation of Game of Life. Ever since I was introduced to it, I was curious to write my own implementation, and I finally took the time to do so. Note: if you are accessing it on a desktop computer, you can hold the “Ctrl” key and hover the cells with the mouse to paint. After that, you can use the two sliders to add more speed or more “fuzziness”.

Another project I have been tinkering with involves reverse engineering Node.js Path and FileSystem modules inside the browser. I ended up creating an in-memory file system using an ArrayBuffer to hold data. This journey was a great experience in gaining more proficiency in working with Buffers and Streams in JavaScript.

In October, I played around with a simple fetch limiter implementation after reading a blog post online, which is linked in one of the articles. I even published it as an npm package in case someone finds it useful.

The last hobby project of the year was done during the winter break after I found an incredible article written by Tobias V. Langhoff about writing a CHIP-8 emulator. I spent a few days writing my own version, which was a lot of fun. While I haven’t implemented all the instructions needed, you might still find some ROMs out there that will give you an error. If you come across such a ROM, feel free to contribute and add it yourself. I’ll also try to find some time and have it hosted on Github pages.

On the professional side, I transitioned from being a frontend-focused team lead working with React into a consultancy role. I still spend about 50% of my time on React, and the rest is dedicated to Java Spring Boot backend. To be honest, there have been quite a few challenges and learning experiences along the way, especially because I took on the task of upgrading Java from version 8 to 17. I can definitely say that dependencies management in Java is as messy as it is in Node.js, maybe even worse. I should set aside some time to write an article about it.

This has pretty much been my tech journey in 2023. I look forward for the challenges to come in this new year, both professionally and as hobby projects. And I will definitely try to put more time in writing and sharing my experience with you.

/Elvis