During these years, I have worked or learned as a hobby, different programming languages and/or different technological stacks. On this page I would like to tell you a little bit about them!
The last of the languages I have learned lately is Rust. I came to this language attracted by the idea of merging high-level libraries and concepts extracted from languages like Ruby or JS with the detail and low level that can be achieved without sacrificing performance or risking memory failures.
Maybe it was also a little bit the love I have for C++ and what seemed to me that it was wasted, both its std and the lack of tools that made it easy to develop projects with it... Rust is the language that brings it all together today, plus a concept such as borrowing
and ownership
, that although it costs to learn it, then it is very fun to program!
I have done small projects with STM32s using Rust libraries for embedded. I've done some projects with WebAssembly (like the minesweeper and snake from the games section). And more in depth, I have worked making APIs with actix_web or axum. And in all cases I can say the same... it's been a lot of fun working with Rust.
Javascript is the swiss army knife of any developer... and in 2020 I embarked on the adventure of learning to use it. Well, actually I started directly with Typescript although I have used Javascript in frontend related projects.
The first JS framework I played with was Vue
in its 3.x version. That's where I got familiar with handling states, stores and user logic. The next step was React
, directly with versions that supported functional components and the famous hooks like useState or useEffect. In fact, the first version of this website was with NextJS. But as I love learning about new frameworks... I decided to give a facelift to this website using SvelteKit
!
Despite doing some things with 2.x versions during undergrad. I started learning Python in the middle of 2018. I was coming from working on computer vision related projects and decided I wanted to learn about the artificial intelligence world where python was the default choice.
I took Stanford University's introductory courses on Coursera and started experimenting with Tensorflow v1.12. I have also worked with Pytorch
and Pytorch Lightning on object detection, semantic analysis or text generation tasks!
I have also worked with frameworks to create APIs in Python. Some time ago with Flask and the last few times with FastAPI
, which is a perfect combination to serve Machine Learning models with most of the runtimes that are commonly used!
C and C++ were the first two languages I learned during my undergraduate years. In the case of C it was oriented to embedded programming, using MCUs such as TM4C123x during my undergraduate years. In the work environment, I spent some time working with FPGAs of the Zynq family and implementing modules with Vivado HLS
for machine vision related applications.
C++ was the language where I first delved into software development concepts such as memory management, software architectures or the use of algorithms. I was working with libraries like OpenCV
or ROS together with MQTT or RabbitMQ. Always using std and C++11 or C++14.
The 4 languages above are the ones I have spent the most time with in my years working/learning. But it is also true that for one reason or another I have dedicated time to other languages...
Bash: it has always seemed to me that the ability to design your own scripts can be the great ally of the developer... and if you add Docker, you've got it made. Most of the time I've been doing things with bash has been while designing my own Dockerfiles
, but I've also been busy with some tasks in servers or in CI/CD that have allowed me to learn it.
Ruby: is my pending task. I have been involved in projects that had Ruby APIs and in which I have only been able to do maintenance tasks or resolve issues. I know the syntax but I don't feel completely comfortable with it, although I think the language has very interesting concepts.
Lua: some time ago I decided to try to make my own IDE starting from Vim (well, actually from Neovim) after seeing crazy configurations that other developers had made on the internet. And that's how I spent a few months testing the language, all my experience has to do with configuring my IDE but that's something...
Databases: I have worked with both relational (SQL) and non-relational (NoSQL) databases. In the case of the former, it has been mostly with MySQL and PostgreSQL, some with SQLite and very little with MariaDB. In the case of the non-relational ones, with MongoDB and in personal projects with Firebase.