Développement

Ma stack en 2024

Étant touche à tout, j'ai tendance à tester une foule de technologies, mais je vous présente mes "goto" pour cette année!

Si, ces dernières années, j'ai exploré de nouveaux langages tels que Rust, Go, ou Zig, j'ai entrepris de consolider mes connaissances dans mes langages préférés et d'arrêter de courir après la dernière mode. De même, je travaille pour une entreprise qui développe ses applications en Java, mais qui autorise le développement de tests automatisés et d'outils internes avec d'autres langages. N'étant vraiment pas fan de Java, cela explique pourquoi ma stack personnelle ne contient pas la moindre once de café.

Développement web

J'ai toujours été passionné par le développement web. Ainsi, même si ce n'est pas mon activité principale, je travaille régulièrement sur des applications web, des scripts en ligne, ou bien des sites web. Ces dernières années, j'ai beaucoup exploré SvelteKit, mais la difficulté de prévoir les coûts d'hébergement pour les applications SSR, principalement à cause des edge functions, m'a orienté un peu plus vers la JamStack. Les pages statiques permettent de réaliser la majorité des projets web, et malgré mon amour pour JavaScript, j'apprécie l'idée de minimiser son usage pour accentuer les performances et la simplicité d'utilisation. Depuis ma découverte d'Astro dans ses versions alpha il y a quelques années, je me suis passionnément intéressé à ce concept d'îlots d'interactivité et à la génération de pages statiques.

La plupart de mes nouveaux projets web sont donc réalisés avec le framework Astro, en utilisant majoritairement les composants .astro, et parfois .svelte, tout en limitant les dépendances externes. J'apprécie la sécurité des environnements statiques, la prédictibilité des coûts, et l'accent mis sur le contenu. J'utilise généralement Astro avec TailwindCSS pour accélérer le développement du design et optimiser la taille des fichiers de style, et DirectusCMS pour la gestion des données.

Pour DirectusCMS, j'ai installé une instance de Cloudron, une sorte de gestionnaire Docker, sur Digital Ocean, puis j'ai installé des instances de DirectusCMS pour mes différents projets. Ce que j'apprécie avec Directus, c'est la liberté qu'il offre dans la création des données, mais également le contrôle qu'il propose pour tout type de projets.

Développement logiciel

J'ai également besoin, pour mon mémoire et pour le développement d'utilitaires, de développer de petits logiciels, avec ou sans interface graphique. Dans la plupart des cas, j'utilise Python et/ou Godot Engine. Le second, un moteur de jeu, permet en réalité de dépasser le cadre du simple jeu vidéo pour faciliter la réalisation de logiciels complexes. La possibilité d'intégrer du C#, C++ ou même du Python élimine la plupart des limitations et problèmes de performance.

Tests automatisés

Pour les tests automatisés, j'utilise principalement PlaywrightJS ou des abstractions de Playwright pour générer dynamiquement des suites de tests. Playwright offre une panoplie de fonctionnalités et répond entièrement à mes besoins en matière de tests, tant du côté UI (plus rare dans mon travail) que pour les tests d'APIs. Bien que Playwright soit principalement orienté vers les tests UI, il est tout aussi efficace pour les tests d'API, même si cela nécessite parfois un peu plus de créativité. J'utilisais auparavant Cypress, mais la gestion chaotique de l'asynchrone et la manière dont Cypress tente de réinventer JavaScript représentent en réalité une limitation dans l'implémentation de nouvelles fonctionnalités, comme la connexion à une base de données, l'envoi d'événements dans des files d'attente ou encore le traitement de requêtes SOAP.