A look back at 2023

December 31, 2023 (2mo ago)

I would say this year has been quite interesting. I finished my school, joined a startup as an intern, left it, redesigned my site four times, traveled alone, started attending a university, dropped out a few months later, turned 19, switched places, and much more.

I've kept things short and in points here because writing the reasons behind some decisions will require another blog. I don't want to include that in the year's review.

♨️

Additionally, all opinions are mine, and they can change as I gain more experience and learn new things. This post is not some sort of advice or guide but just a reflection.

Before getting into the details, I want to take a moment to reflect some things.

My top 3 good decisions this year:

  • Learning Vim (I am writing this blog from Neovim right now).
  • Completely switching to Linux, No dual-boot¹ (Arch + dwm + st).
  • Limiting my daily internet bandwidth usage.²

My top 3 mistakes this year:

  • Riding the hype train, which you can never keep pace with (Wasting my time trying every new shiny tech out there).
  • Joining a university, which ended up being a waste of time.
  • Not doing enough competitive programming

Languages Review

These are all the programming languages I have tried over time and made some use.

Shell

  • I wonder why I haven't used it until now.
  • A good replacement for Python (not fully but in some cases).
  • Easy to read, hard to write.
  • Well-suited for system task automation and string processing.
  • Very intuitive for experienced Linux terminal users.

Go

  • Simplicity and speed.
  • Some basic list utilities are missing.
  • Still has one of the robust standard libraries.
  • Surprisingly vast ecosystem.
  • I am going to use it for my backend.

TypeScript

  • I don't think I'll touch JavaScript ever again.
  • Optional typing seemed a bit weird at first.
  • It will be my primary language for a few more years, I guess.

C++

  • For as much as I have tried, I really liked and hated it.
  • I have learned a lot of computer fundamentals from this low-level language.
  • Memory management nightmares: Hello, leaks!
  • OOP obsession taken to an extreme.
  • STL is like a double-edged sword; Golang is pretty reasonable here.
  • Pointers and references were a bit confusing at first glance.
  • Multi-threading complexities, which I still haven't fully utilized yet.
  • Debugging is a pain in the ass.
  • There are still many things I have to figure out (also try game development.)
  • C++ is the language I want to use in my competitive programming journey, other than Python.

Python

  • Shell Scripting can some times be better than using Python.
  • Slow but reliable.
  • I am going to use it for easy prototyping.
  • Also if I got my interest in Machine Learning.

Tools

Neovim

  • The best thing that ever happened.
  • Still using VScodium for my web projects.
  • I also switched from Obsidian for my notes.

VSCodium

  • The Vim extension became the most used one.
  • It is just convenient in some projects to just use it.
  • No more VSCode; I am using the open-source builds of it which don't have Microsoft spyware.
  • At least I didn't get many issues switching, and there were almost all the extensions I needed available.

DWM + ST

  • I couldn't imagine using anything other than that (maybe hyprland, but Wayland doesn't yet seem to be stable enough, at least on my system, so X11 is what I am still going to be using in 2024. I have read reddit posts about Wayland hyprland on Nvidia, but I am skeptical about that just yet).

Git

  • I used to use GitHub Desktop while on Windows; now in my terminal workflow, I don't even have it installed on my system.
  • Wish I had made the switch to window managers before.

Others

  • dmenu
  • ffmpeg
  • pass (with xclip and dmenupass)

JavaScript Frameworks

My takes on the JavaScript frameworks which I have personally used.

React/Next.js

  • Server components are great.
  • I am too used to using the JSX style.
  • I completely love it, but the virtual DOM strategy becomes slow; signals are the new huge thing.

Svelte/Sveltekit

  • The compiler is great.
  • But I really hated their syntax, the way they are reinventing JavaScript in their .svelte files.
  • I don't think I am personally going to use it in any of my serious projects.

Solid.js/Solidstart

  • Their reactive programming style, signal approach is really awesome.
  • Loved the React syntax similarity.
  • Solidstart follows the UNIX philosophy, uses Nitro and Vinxi, which I'm absolutely a fan of.
  • I really loved it and am absolutely looking forward to using it and contributing to it in 2024.

Astro

  • I don't mind using it if I need to make a content-heavy site.
  • Was also an option while making this site.

I haven't yet played around with others yet, so can't talk about them. Qwik, Nuxt, and even HTMX are some of the ones I want to try.

Some of My Hot Takes This Year

In no particular order, I think these are the ones that in some way made me think about life. Your mileage might differ.

  • Abstractions are not always good.
  • Sleep is really important.
  • Sugar and caffeine affect mood.
  • You should get into nature often.
  • None of the friends stick always.
  • Writing is thinking; journaling really helps organize your thoughts.
  • Celebrate the small things.
  • You should read more books (books > videos).
  • Mainstream media isn't always right.
  • Always have something you're working on.
  • Money or any material thing can never bring you happiness as much as creating your own thing.
  • Self-hosting/having your own VPS.
  • Monoliths are much easier for your brain, only if you are the only one working.
  • Time will heal everything.
  • Life is beautiful.

Some of my goals for the new year ✨

  • Become a better programmer; learn more about web technologies.
  • Get into systems programming.
  • Learn about security and cryptography.
  • Take commitments more seriously in 2024.
  • Learn about Design Patterns
  • Gain understanding of different complex architectures and database operations.
  • Contribute to open source projects.
  • Learn more about animations.
  • Be consistent in my competitive programming journey.
  • Regularly attend the gym.
  • Make some good friends.
  • Learn more about LLMs and dig into Machine Learning.
  • Plan another solo travel.
  • Achieve self-dependence.
  • Keep this blog alive with at least one new post per month.
  • Make my parents proud.
  • Learn Japanese.

And that's a wrap. Thanks for sticking with me until now. There are also certain things on my mind, but hey, life is a journey. Here's a beautiful playlist I was enjoying while writing this, and I thought to share it.

I'll wrap up this post with a quote by Albert Einstein:

Life is like riding a bicycle. To keep your balance, you must keep moving.

Wishing you all the best for the upcoming year. Cheers.


¹: I either use my old laptop, still running Windows, or I boot up a Windows virtual machine using QEMU when experimenting with Windows-specific software (though I generally avoid it). For minor video and audio processing, I rely on Kdenlive and Audacity.

²: Many have asked about how I limit my internet bandwidth. The process is straightforward – I adjusted my WiFi router settings, specifically for my devices using their MAC addresses. By setting data limits for each device and blocking connection to new MAC addresses, it prevents any attempts to cheat by using random MAC addresses. You can then change your WiFi router dashboard password and share it with a trusted individual, such as your parents. Additionally, you can enhance control by utilizing a DNS blocklist to block ads and specific websites. A popular and regularly updated blocklist can be found here.

Gradient background