Coding

My tech stack in 2024

Being a jack-of-all-trades, I tend to try out a myriad of technologies, but here are my "go-tos" for this year!

In recent years, while I've explored new programming languages such as Rust, Go, or Zig, I've also committed to consolidating my knowledge in my preferred languages and stopped chasing the latest trends. Similarly, I work for a company that develops its applications in Java but allows automated testing and the development of internal tools in other languages. Since I'm not a fan of Java, this explains why my personal stack does not contain the slightest bit of coffee.

Web Development

I've always been passionate about web development. Even though it's not my main activity, I regularly work on web applications, online scripts, or websites. In recent years, I've extensively explored SvelteKit, but the challenge of predicting hosting costs for SSR applications, mainly due to edge functions, has slightly shifted my focus towards JamStack. Static pages allow for the realization of most web projects, and despite my love for JavaScript, I appreciate minimizing its use to enhance performance and ease of use. Since discovering Astro in its alpha versions a few years ago, I've been deeply interested in this concept of islands of interactivity and static page generation.

Most of my new web projects are therefore built with the Astro framework, primarily using .astro components, and sometimes .svelte, while limiting external dependencies. I value the security of static environments, cost predictability, and the focus on content. I generally use Astro with TailwindCSS to speed up the design development and optimize the size of style files, and DirectusCMS for data management.

For DirectusCMS, I installed a Cloudron instance, a kind of Docker manager, on Digital Ocean, and then installed DirectusCMS instances for my various projects. What I appreciate about Directus is the freedom it offers in data creation, as well as the control it provides for any type of project.

Software Development

I also need, for my thesis and for developing utilities, to develop small software, with or without a graphical interface. In most cases, I use Python and/or Godot Engine. The latter, a game engine, actually allows surpassing the scope of mere video games to facilitate the creation of complex software. The possibility of integrating C#, C++ or even Python eliminates most limitations and performance issues.

Automated Testing

For automated testing, I primarily use PlaywrightJS or Playwright abstractions to dynamically generate test suites. Playwright offers a range of features and fully meets my testing needs, both UI (less common in my work) and API tests. Although Playwright is mainly focused on UI testing, it is equally effective for API testing, even if it sometimes requires a bit more creativity. I previously used Cypress, but the chaotic management of asynchronous operations and the way Cypress tries to reinvent JavaScript actually represent a limitation in implementing new features, like connecting to a database, sending events to queues, or processing SOAP requests.