There is a very real reason why this blog is called “Always keep learning”: I love learning. I’m addicted to it. Since I started my career in 2016, I’ve made a habit of learning one or two new technologies each year.

In 2013, in order to contribute to the diaspora* social network, I had to learn basically everything about HTML, CSS and JS, as well as Ruby and Ruby on Rails, which powers diaspora’s backend, Handlebars, Backbone and Bootstrap which powers it’s frontend.

diaspora social network logo

I contributed to diaspora for about 3 years. It was very difficult most of the time, but also very formative. It was with this project that I learned:

  • how to work remotely with people scattered all over the world,
  • how to communicate with poeple of different culture,
  • how to contribute to free-software and respect development guidelines.

Around 2014, disatisfied with Java 7’s limitations at work, I decided to explore what other languages JVM had to offer and stumbled upon Groovy, a somewhat superset of Java with really cool features like template strings, closures, inline lists and dictionnaries and so on.

Groovy language logo

I was so amazed by how short Groovy programms were compared to their Java equivalents that I decided to adopt it for all my projects. I even developped an Android school project using it. Kotlin was still 2 years away from being officially adopted as an Android language and it was super experimental, but also tons of fun!

Overview of the Android music player I developed with Groovy

Around 2015, I started to learn Ansible for a school course. A provisionning tool I still use today to configure the server that powers this blog as well as my own personnal computer. I must confes that maintaining an Ansible playbook for my own machine has already saved me many hours of reinstallation and configuration after breaking the system.

The very next year, I was employed by a company in a developer position to participate in the development of their devops tooling, including Saltstack configuration scripts. Hopefully, learning Ansible the year before helped me to quickly be productive with Saltstack.

Around 2017, while visiting a friend in Finland, I started to contribute to Socialhome, a federated social network talking ActivityPub (Mastodon, Pleroma, Peertube…) and diaspora’s protocols. It desperatly needed a modern frontend (which was jQuery-based at the time) and Vue was trending at the time. That’s how I started to learn Python and Django, which powers Socialhome’s backend, and Vue, which was to power its frontend.

VueJS logo

In 2018, I was employed as a sys admin on a big data cluster consisting of a Hapoop stack, a Spark cluster, a Splunk instance and a few other tools that I documented on for over a year.

In 2019, I started FreshRSS Android, which, as its name states, is an Android client to the FreshRSS self-hostable RSS serveur. Then, the Groovy on Android times were over. Google had announced official support for Kotlin on Android and had been rewriting its Android support libraries in Kotlin. The language was hype… And definitely interesting. By the way, during 2020, I wrote the blog posts Starting an Android project with zero knowledge: the zen way and Tweak your Retrofit behavior with annotations to archive things I had learned developping FreshRSS Android.

And last year, I finally decided to take a look at the very hyped Rust.

Rust logo

So… it’s no small thing to say that I love learning new things. And the year 2021 was no exception to the rule. It is time for a little review of the things I learned this year.

Let’s start with the technologies I already knew and in which I have deepened my knowledge.

There’s Android, Kotlin and Gradle, of course. FreshRSS Android is still under active development and continue to follow the news features comming to Android (Jetpack compose seems very promising) and Kotlin with the Kotlin official Youtube channel. I also recently redesigned my Jenkins continuous integration pipeline. I had already written a post on it at the end of 2019, and I shall soon write a new one to detail what has changed since then.

I also improved my Ansible-fu. For 2 years now, I have been giving courses in a computer science school, in particular Ansible courses. So I regularly keep up to date with what’s new and regularly take the time to look at features I hadn’t explored yet. This year, I rewrote my course to teach about handlers and ansible-lint and explored how to write local modules.

Ansible logo

Last but no least, there’s Django. I’ve been a Django developer for almost a year now, thanks to my initial training in 2017, contributing to Socialhome. I even took the opportunity to fix two small bugs in Django itself (one and two).

Then, there’s the new things.

This year, I acquired 2 CD turntables with the idea of getting back into DJing. I’m creating my playlists on Rhythmbox, so I developed a small plugin to transfert them to USB keys and convert the tracks to MP3 (sadly, the turntables are a few years old so they don’t play FLAC). So I learned how to develop a Rhythmbox plugin and how to use PyGObject. I also learned how to spawn a notification with a progress bar on KDE Plasma, which requires messing with DBus. I shall also write an article about that.

Eventually, I plan to use my turntables with Mixxx which is a DJ software running on Linux. But I first need to finish modifiying the existing Midi controller for my turntables. Mixxx supports writing controllers in JS for any device that uses the Midi protocol. Almost anything in the software can be manipulated. It’s fascinating.

Mixxx logo

That’s all for now. Let’s meet again a one year to talk about what I learned in 2022. I plan to dig into Python’s async/await which, for now, is really puzzling me…