Articles

learning · journal

Hello, 2024

January 05, 2024

In 2022, I wrote about how my tech stack has changed. Remix had just gone open-source so I naturally I tried it and I liked it so much that I switched to it as my default React framework. Along with it, I also switched out a few other things that I've been using till that point - Chakra UI, MongoDB, SWR, and Vercel/Netlify.

I didn't change my tech stack in 2023. I was quite happy with the stack that I had chosen. In fact, I'm still happy with it. Almost.

For over 7 years, I'd been a JavaScript developer. I mainly did frontend work but I also built REST APIs and managed cloud infrastructure on AWS. But lately I'm itching to learn and use something new. Something that is not JavaScript.

I did learn some Rust, did some Advent of Code problems the last couple of years. But being a web developer, I don't really want to build web stuff with Rust. Don't get me wrong, Rust is great for backend services but I'd rather use something that's built for backend engineering.

Enter Elixir and Phoenix

If you check the StackOverflow Developer Survey results from last year, Elixir and Phoenix are only being used by about 2% of the 90000 developers who responded.

Compare that to Node.js and Express or even Next.js, the adoption is way higher than Elixir and Phoenix.

So why do I want to learn a language and framework with low adoption? Well, first off, the sample size is really small compared to the total number of developers worldwide.

More importantly, however, I've always heard great things about Elixir and Phoenix. People who use it, love it. After some research, I found that Elixir has some desirable features:

These are obviously from a beginner's point of view. Experienced Elixir devs could probably tell you more about why they love it.

Does this mean I'm ditching my beloved Remix? The answer is no. I'm going to try building my backend services in Elixir/Phoenix and keep using Remix for frontend. This means I take on a bit of additional complexity in my git repositories since they have to be monorepos now. But I tested out a monorepo setup with Moon and it's quite good. I'll write about the setup soon.

Go, please

My theme for this year is "branching out". For the past few years, I think I've settled into a specific role — the JavaScript/React/Node developer. I'll still keep doing that but I also want to explore outside this bubble. That means, adding more tools, that I have no clue about, to my tool belt. Another tool I'm planning to pick up this year is Golang.

I won't go much into why I chose Golang. It's pretty simple — it's fast, has types, has a good developer experience as far as I can tell. Apparently, it's also quite easy to learn. So I'll be alternating between Elixir and Golang for my projects' backend.

More Backend

As someone who is self-taught and started off as a frontend engineer, I feel like there's a lot more backend and general software engineering stuff that I should learn. So here's some more stuff that I want to learn this year, in no particular order:

  1. Docker
  2. Kubernetes
  3. Terraform
  4. Ansible
  5. Data Structures & Algorithms
  6. Compilers & Interpreters
  7. System Design

Learning by building

I'm a huge advocate for building side-projects as a method for learning new programming languages and technologies. So I'll do just that. I already have a few ideas lined up that I'm very excited to build. They're all gonna be breakable toys and they'll be stuff that I want to use to improve my life in someway. I'll talk more on the ideas and process in a later post.


All this stuff might seem like I have a lot to learn in 2024. I think so too but with consistency, I think I can get a lot done this year. People usually underestimate how much stuff they can get done in a year so they shoot for less. Even if I don't complete my list, I would have gotten part way there.

Shoot for the moon. Even if you miss, you'll land among the stars.

― Norman Vincent Peale

What are you hoping to learn or get better at in 2024?