An example of what we’ll be discussing in this article
This post is going to be slightly different than the ones I usually share here on this website. Rather than discussing a specific library or exploring solutions to a problem recently encountered at work, what we're going to do instead is brainstorm what I'm going to devote some of my spare time on over the next couple of years.
I spent the pandemic trying out loads of different languages and runtimes, exploring frameworks, and building small things. After a couple of years spent playing around with whatever I could put my hands on, 2023 logically felt like the right time to finally focus my efforts on something a bit more specific. I wanted to learn a language that I would be able to use both when I needed to for work as well as for personal projects. What turned out to be slightly more difficult than I thought was to pick that one language that would accompany me for the whole year.
As briefly mentioned in an article that I published here about a year ago, I eventually went for TypeScript. I already knew enough JavaScript and wanted to explore a modern, statically typed language. Two years later, I can only say how much I've been enjoying writing code in TypeScript. The language is fun, well-designed, and what I consider to be equally as important: extremely well-documented.
At the time I thought that this would be it. The last language I'd ever learn. But it seems like there's always something new to pick up, and curiosity has been one of my main drivers since I started working in the tech industry almost 15 years ago now.
The issue is, the only way I've ever been able to retain new information is through regular practice. As I'm already working hard on trying to maintain the little I know about TypeScript and the few other languages I'm sort of comfortable with, I've been feeling that I would very much struggle if I were to pick up something new again.
What now then? Would it be wise to pick a language that's halfway between Python and system languages such as C++ or Rust? Following on from an unsuccessfull but very rewarding job interview last summer, I also briefly contemplated switching to a functional language. More specifically to Elixir about which I had heard some great feedback from some former workmates.
As briefly hinted at earlier, I think I have reached the limit of what I can possibly retain. That doesn't mean that I can't learn something new. But rather, that fully investing myself into yet another language or framework would be at the detriment of what I already know.
In other words, the approach has to be different this time if I am to have an enjoyable experience.
The goal over the next few years isn't to become "good" at that new language, or to find a job that requires knowledge of it. All I want is to have some fun, and to scratch that itch that I have about learning new things.
Possible challenges:
What I should focus on:
For all the reasons I just listed, I've come up with a pre-selection of 3 languages and 1 framework that I think I'd have a ton of fun dabbling into.
Without further ado, let's get started!
Of the three languages that we're about to discuss, Nim is the one that I've been wanting to learn the longest. Its syntax is close enough to Python's, it's praised for its compilation and execution speeds, and it can transpile directly to C as well as to JavaScript. Add to those arguments the fact that it's regularly used in the cyber security field (well, mostly on the offensive side) and you get the language that I find the most appealing at the moment.
If you hadn't heard of Nim before, the following 100 second long video should hopefully convince you to give it a try:
To be honest I myself only discovered about Nim very recently, when reading through an article that compared its performance for processing data stored in local files against Python's.
The best way to get started probably is the Nim for Python Programmers page, which provides a very comprehensive tour of what the language has to offer as well as how to get easily started.
Last but not least, for those who like me want to do some light data manipulation, the ArrayMancer package seems to allow for some Pandas-like work with tabular data.
My only concern is the lack of documentation around most libraries as well as the fact that the language seems to have plateau-ed lately. That being said and as mentioned earlier, I don't intend to become a full-time Nim developper anyway.
Like Nim, Go is a statically typed and compiled language. Both are fast and loved by the developers that work with them. However and this is where the two differ, Go's popularity has been constantly increasing over the past few years. As of January 2025, Go has even made its appearance into the top 10 most popular laguages according to Tiobe index.
A rapid Google search will return tons of tutorials on how to build a server, or do some back-end automation work. And that's possibly the biggest selling point to me if I have to be honest. There are some very good free resources for getting started and go (no pun intended) beyond printing "Hello world!". I recently watched the following video and found it very clear and to the point:
By the way before I forget, I really like the "everything you need is part of the standard library" philosophy that Go has adopted from its early days. Now of course the community has developed a ton of third-party libraries, and a lot of which can be found on the Awesome Go repository.
I'm especially intested in the Excelize module. As its name might or might not suggest, it allows for the reading and writing of MS Excel files which is something I do a lot with Python at work.
My only gripe really is that I don't find the language pretty to look at. Hey, aesthetics matter too!
Ditching Google Colab a couple of years ago forced me to look for alternative platforms and even languages that would be suited for data science and analytics. Which in turn made me discover some great notebook environments such as Starboard.gg for JavaScript or Livebook for Elixir.
Discovering about Elixir then led me to read a lot about Erlang and the BEAM) virtual machine, which in turn got me interested in functional programming languages and parallel computing in general.
Elixir really looks cool:
The creator of the language, Jose Valim has put of lot of efforts into building a community that's both involved in the development of the language and welcoming. This sort of reminds me of the philosophy of Ruby:
"Matz is nice and so we are nice,"
On the plus side, Livebook seems to be a great notebook environment, developed specifically for Elixir by the language creator himself. I get the feeling that this could be a great starting point to get familiar with Elixir while having fun with some datasets I'm already familiar with.
To be honest my main concern has to do with my previous attempts at getting into functional languages. I have failed multiple times to get past doing basics stuff with a couple of Lisp family languages, and the last thing I want is to turn one of my last attempts at learning something new into a negative experience.
Those who know me are well-aware of how much of a web development enthusiast I am. I like building web interfaces for my data projects, and small websites like this one for non work-related purposes.
Though I've been a long time user of JavaScript, I've never put any effort into learning any the modern and popular front-end frameworks. When it comes to interacting with webpages, I entirely rely on vanilla JavaScript. Now don't get me wrong, this works just fine and I've never met problem that I couldn't solve this way. But this approach is a bit verbose and arguably not very suited for large scale projects.
Getting familiar with a front-end framework such as React, Svelte or Angular would probably help me update my now ageing web development skills and introduce me to more modern concepts and ways of solving problems.
Available resources are great, and I find beginner-oriented repositories like 30 Days of React offer a fast and comprehensive overview of what can be achieved with React.
This time the issue seems more around the practical use of a front-end development framework for non commercial / work purposes. Realistically, how often will I be using React if I'm not a full-time web developer? In other words, why learn something that I'd very rarely use?
I was very recently offered a great little book called Seven Obscure Languages in Seven Weeks:
Though I haven't finished it yet, it's been a ton of fun so far being introduced to some influencial languages through practical code examples.
Now for personal reasons, the language I've had my eyes on for a while is Pascal). Or rather, its open-source compiler also known as FreePascal. My dad was a software engineer back in the 80s, and I remember we had a French-language copy of Byron Gottfried's "Programming with Pascal". Its bright red, almsot menacing front cover used to fascinate me as a kid, and I'd be very interested in purchasing a second-hand copy of this now classic:
(I found this random photo on the internet, but this is the book we're talking about)
On a related-ish note, I'm aware of how frustrating toying around with legacy languages can be. Watching this video sure was a ton of fun in itself:
There we are, a brand new year has just started and I can feel the excitement of being about to embark on a new and promising journey. If you've also gone through some similar process and want to share any tip or recommendation, feel free to reach out to me!