9 min read

2022 Reflections and 2023 Goals

Now that 2022 is closed, it’s natural to reflect on the past 12 months and look to the new year.

2022

Reflection

Looking back at 2022, it was a year full of learning new technologies, processes, and lessons.

I started the year working as the sole developer of a new machine-learning-based project at my first company out of university. At the time, I had limited web experience, but I had a good amount of machine-learning expertise. I was ready to be self-directed in learning and creating software.

Before the team expanded, I completed several tasks, such as applying an object detection model to infrared images for heat detection and developing a NextJS & Typescript web application, including authentication to limit access to the machine learning pipelines. Additionally, I learned about GIS and used this knowledge to build a solution for converting pixels to GPS coordinates. All of these components were deployed to the cloud using Terraform and, at the time, AWS amplify (though I only recommend Amplify if you are okay with 30-minute deployments on large apps).

Once the team expanded, I gained a lot of knowledge about processes and best practices regarding scaling and testing. Additionally, with the drastic increase in stress and deadlines, I learned some lessons about taking breaks, managing expectations, and the importance of empathy and accountability.

Make Tests Early

Make sure you set up the test framework for your app early in its lifetime. If this is skipped, it is harder to go back and create tests for existing features. The project manager will likely not want to allocate the extra time for you to go back and work on tests if the app is already working. They might not understand the importance of this even once things are breaking and you feel overworked.

Scaling Mentality

While working on the back-end cloud components for a machine learning system, I ran into scaling issues due to needing to fully understand how AWS batch works with computing environments. While jobs scale horizontally, the compute environments did not, and each would need to be defined individually or through some hacky-feeling Terraform. I did not have the prior knowledge to have foreseen this at the time, but now it gives me the idea that thinking about scaling when designing systems is extremely important, even for smaller apps. Your “small app” might be the next Flappy Bird, Lensa, or one of the many games that take off but cannot handle the user load and lose traction.

Take Breaks

This should be a given; not taking breaks leads to burnout and your job feeling unrewarding. You don’t own the company, and your boss should not expect you to work more than you are paid for. Even if your company does not ask/require you to fill out a timesheet, it is good practice to fill one out anyways. It is an easy way to see the hours you are working and put things into perspective. It is easy to see those extra 15-30 minutes a day end up being a day or two worth of overtime by the end of the month.

Manage Expectations

Early in my career, I was too keen to deliver software quickly and prove my development strength. I put in a lot of extra time outside work hours to get the product to market. Couple this with project management that does not know the complexities of software development, and you set an expectation that developing software is quick and easy. Next thing you know, you have a long list of features you need to build with tight timelines. Learning to push back on something as long as you can provide reasoning is something I wish I had understood when I started.

Empathy and Accountability

The end of 2022 was difficult for me. I ended up quitting my job without another lined up due to a lack of empathy, respect, and accountability from those who hold power. I learned from this how vital these qualities are to me and how these values need to align when I look for new companies to work at. The last thing you should hear when you voice your concern about how you are being spoken to is, “I am sorry you feel this way.”

Another thing to note. Look to work for someone who has something more important than work. Someone in power should not be displeased with holidays and weekends because it stops “forward progress.” They should see it as a time for everyone to relax and reset.

Technologies

The following is a list of technologies I used or was learning in 2022.

  • NextJS and Typescript
  • Terraform
  • DynamoDB
  • Pytorch and Pytorch Lightning
  • Unreal Engine 5 and Unity

2023

It is time to start thinking about this new year. There are many technologies that I enjoyed using in 2022 and a few new ones that I want to learn in 2023. I wish to read at least three of the numerous tech books I own. My interest in different databases increased due to a job posting asking what my favourite was, which I could not answer. My machine learning direction moves from object detection to tabular and natural language processing. I have stopped learning UE5 and am moving my cloud services from AWS to GCP.

Books

I own a lot of tech books. Most of these books are in the machine-learning domain. I want to read at least three this year. The books I own now are:

  • Software Engineering at Google by Titus Winters, Tom Manshreck & Hyrum Wright
  • The Kaggle Book by Konrad Banachewicz and Luca Massaron
  • Hands-On Gradient Boosting with XGBoost and Scikit-learn by Corey Wade
  • Effective Pandas by Matt Harrison
  • Machine Learning with PyTorch and Scikit-Learn by Sebastian Raschka, Yuxi (Hayden) Liu, and Vahid Mirjalili
  • Deep Learning with Python by Francois Chollet
  • Approaching (Almost) Any Machine Learning Problem by Abhishek Thakur
  • Designing Machine Learning Systems by Chip Huyen

Technologies

The following is a list of technologies I will use or learn in 2023.

  • NextJS and Typescript
  • TailwindCSS
  • MySQL, PostgreSQL, Redis
  • Pytorch and Scikit-learn
  • Kotlin and Android Studio
  • Google Cloud Platform

Web Development

I still enjoy working with NextJS, and I like where they are taking their technologies. TailwindCSS is still a first choice, but I need to use their theming plugins more.

In December 2022, I cloned the portfolio & blog site template on Vercel by Lee Robinson. It is a great starter site, though adding blog posts is clunky-feeling with Sanity. I plan to expand this site with more metrics from sites I use and add an AI subdomain to learn more about mixing web development and machine learning solutions in a production environment.

The AI subdomain to the site will house much of the AI-related work I play around with. It is based on another Vercel template that uses Upstash and its queue feature to bypass the hobby version timeout limit on the NextJS API. The current template uses the OpenAI API and Dall-E 2. Still, I am unsure if I should continue to use OpenAI just yet because there should be a mechanism to prevent usage abuse (monthly tokens, like many of the stable-diffusion and ai art sites use?). Utilizing Huggingface API could be a way of showing off a model.

Databases

Regarding databases, I usually default to using AWS DynamoDB and Lambda, but I realized how hard it was to work with during my previous job. I only have a little experience with other databases, which is an area I need to improve, so I will learn about other databases in 2023.

Machine Learning

When it comes to machine-learning frameworks, I still like using Pytorch. Tensorflow and Keras can work, and I will learn them at some point, but it isn’t a priority for now.

When it comes to improving my machine learning and data science skills, I will use Kaggle and participate in its coding competitions. I previously worked on some Kaggle notebooks but still needed to go into detail on tabular datasets and their respective competitions. This year, I aim to build my Kaggle profile by completing five competitions in the 80th percentile. I have already started working on tabular data competitions, but I have a ways to go before I can consistently get into the desired percentile.

Mobile Development

I am interested in mobile development. Seeing how Lensa and their AI profile images took off like a rocket shows that creating mobile-first experiences gives the masses access to your app compared to a desktop app. This interest allows me to look into Kotlin and Android Studio.

To supplement the idea to begin learning Kotlin, I saw that Block Inc. was advertising for an Android Developer with experience in Kotlin. It is fitting to learn Kotlin since it is now the primary language for Android apps.

Cloud Infrastructure

I am confident in my ability to navigate and set up cloud services for an app using AWS. I want to expand this and use GCP(and maybe later Azure)

Udemy Courses

There are two courses that I am interested in finishing in 2023. They are:

  • Statistics for Data Science and Business Analysis by the 365 Careers Team.
  • Functional Programming for Beginners, JavaScript by James Moore.