Add HTML email generator

This commit is contained in:
Pascal Le Merrer 2025-12-26 22:25:22 +01:00
parent 35b999c8c6
commit f1864d8841
14 changed files with 1748 additions and 16 deletions

View file

@ -27,32 +27,29 @@ Category: Newsletter
## Édito
Cette semaine encore, le contenu de cette newsletter est varié. Je vais en effet vous parler d'outillage, de langages fonctionnels, de recrutement, de sécurité, d'apprentissage ou de révision, et, pour finir, d'architecture basée sur des cellules. Concernant les langages fonctionnels, ceux que j'évoquerai sont mes deux langages favoris : ils associent la simplicité à un système de type qui élimine des classes entières d'erreurs. Le tout accompagné d'une expérience développeur particulièrment agréable.
Cette semaine encore, le contenu de cette newsletter est varié. Je vais en effet vous parler d'outillage, de langages fonctionnels, de recrutement, de sécurité, d'apprentissage ou de révision, et, pour finir, d'architecture basée sur des cellules. Concernant les langages fonctionnels, ceux que j'évoquerai sont mes deux langages favoris : ils associent la simplicité à un système de type qui élimine des classes entières d'erreurs. Le tout accompagné d'une expérience développeur particulièrement agréable.
Passez de bonnes fêtes de fin d'année, et bonne lecture !
## ty
Après [ruff](https://github.com/astral-sh/ruff) (linter et formateur) et [uv](https://github.com/astral-sh/uv) (un gestionnaire de dépendances), [Astral](https://astral.sh/) nous propose un troisième outil pour Python : [ty](https://docs.astral.sh/ty/), un vérificateur de types (_type checker_) et serveur de langage. Comme ruff et uv, ty est écrit en Rust, et bénéficie de performances bien meilleures que celles des outils concurrents. ruff et uv étant des réussites, ty mérite qu'on le regarde de près.
Après [Ruff](https://github.com/astral-sh/ruff) (linter et formateur) et [uv](https://github.com/astral-sh/uv) (un gestionnaire de dépendances), [Astral](https://astral.sh/) nous propose un troisième outil pour Python : [ty](https://docs.astral.sh/ty/), un vérificateur de types (_type checker_) et serveur de langage. Comme Ruff et uv, ty est écrit en Rust, et bénéficie de performances bien meilleures que celles des outils concurrents. Ruff et uv étant des réussites, ty mérite qu'on le regarde de près. Il est encore en version bêta, mais Astral s'est montré rapide à corriger les problèmes de ses produits jusqu'ici.
## Visualiser des logs avec HL
[hl](https://github.com/pamburus/hl?tab=readme-ov-file#performing-complex-queries%5D) est un outil de visualisation de log, écrit en Rust —c'est devenu un argument marketing. Il est capable de capable visualiser, filtrer et requêter rapidement des fichiers de plusieurs gigaoctets.
[hl](https://github.com/pamburus/hl?tab=readme-ov-file#performing-complex-queries%5D) est un outil de visualisation de logs, écrit en Rust —c'est devenu un argument marketing. Il est capable de capable visualiser, filtrer et requêter rapidement des fichiers de plusieurs gigaoctets.
## Une liste d'outils autour de Jujutsu
[Jujutsu](https://www.jj-vcs.dev/) —jj— est une alternative à Git, à la fois plus puissant et plus simple dutilisation. Il utilise Git comme back-end, ce qui veut dire que vous pouvez lutiliser de façon transparente sur un projet dont les autres contributeurs utilisent Git. [Awesome JJ](https://github.com/Necior/awesome-jj) liste des outils de lécosystème naissant autour de cet outil.
[Jujutsu](https://www.jj-vcs.dev/) —jj— est une alternative à Git, à la fois plus puissante et plus simple dutilisation. Il emploie Git comme back-end, ce qui veut dire que vous pouvez ladopter de façon transparente sur un projet dont les autres contributeurs utilisent Git. [Awesome JJ](https://github.com/Necior/awesome-jj) liste des outils de lécosystème naissant autour de cet outil.
Jutilise Jujutsu depuis 8 mois, sur des projets personnels pour linstant, et je le préfère largement à Git. Le nommage des commandes et options est bien plus clair, ce qui fait quon les retient ou retrouve plus facilement. Le workflow est plus simple —car il y a moins de concepts. Malgré cela, il est plus puissant que Git. Par exemple, il ne requiert de résoudre qu'une seule fois les conflits lors d'un rebase, là où Git peut vous demander de les résoudre à plusieurs reprises.
Jutilise Jujutsu depuis 8 mois, sur des projets personnels pour linstant, et je le préfère largement à Git. Le nommage des commandes et options est bien plus clair, ce qui fait quon les retient ou retrouve plus facilement. Le workflow est plus simple —car il y a moins de concepts. Malgré cela, il est plus puissant que Git. Par exemple, il ne requiert de résoudre qu'une seule fois les conflits lors d'un rebase, là où Git peut vous demander de les résoudre à plusieurs reprises. Ou encore, le fait d'avoir des conflits n'empêche pas de reporter leur résolution à plus tard, et de travailler sur une autre "branche" —j'emploie des guillemets, car ce concept n'existe pas vraiment avec JJ.
## Comment trouver des développeurs pour un langage fonctionnel
Dans sa [keynote lors des Scala Days 2025 🇬🇧](https://www.youtube.com/watch?v=9OtN4iiFBsQ), Evan Czaplicki explique comment [Elm](https://www.youtube.com/watch?v=9OtN4iiFBsQ), le langage qu'il a créé il y a bientôt 14 ans, peut servir de porte d'entrée pour des langages fonctionnels plus complexes, comme Haskell ou Scala. Elm est volontairement simple : les concepts y sont limités au strict minimum. Malgré une syntaxe qui peut intimider au départ, l'apprentissage est rapide, notamment parce que l'expérience développeur est vraiment agréable. Vous trouvez sympathiques les messages d'erreur de Rust ? Ils sont inspirés de ceux de Elm.
Dans sa [keynote lors des Scala Days 2025 🇬🇧](https://www.youtube.com/watch?v=9OtN4iiFBsQ), Evan Czaplicki explique comment [Elm](https://elm-lang.org), le langage qu'il a créé il y a bientôt 14 ans, peut servir de porte d'entrée pour des langages fonctionnels plus complexes, comme Haskell ou Scala. Elm est volontairement simple : les concepts y sont limités au strict minimum. Malgré une syntaxe qui peut intimider au départ, l'apprentissage est rapide, notamment parce que l'expérience développeur est vraiment soignée. Vous trouvez sympathiques les messages d'erreur de Rust ? Ils sont inspirés de ceux de Elm.
Evan partage dans cette keynote les stratégies de recrutement d'entreprises florissantes qui utilisent Elm. Certaines recrutent les développeurs ou développeuses de modules populaires. D'autres embauchent des débutants et les forment. Les qualités du langage font que ces juniors sont opérationnels et productifs en quelques semaines seulement —n'allez pas croire que c'est exagéré, mon expérience avec Elm me confirme que c'est une réalité. Recruter des débutants disposés à se former est une manière de s'assurer qu'ils ont la culture adéquate : leur volonté d'apprendre sera utile par la suite sur d'autres sujets. Cela répond aussi à l'inquiétude de nombreux managers : comment recruter pour une techno de niche ?
@ -68,9 +65,9 @@ Jose Zarazua utilise [une astuce pour distinguer instantanément les candidats
Des centaines d'[images Docker durcies](https://hub.docker.com/hardened-images/catalog), auparavant payantes, sont dorénavant [mises à disposition gratuitement](https://www.docker.com/blog/docker-hardened-images-for-every-developer) 🇬🇧 par Docker Inc. Une image durcie est une image dont la sécurité est renforcée, en éliminant tout ce qui nest pas indispensable, ce qui réduit la surface dattaque.
Des centaines d[images Docker durcies](https://hub.docker.com/hardened-images/catalog), auparavant payantes, sont dorénavant [mises à disposition gratuitement](https://www.docker.com/blog/docker-hardened-images-for-every-developer) 🇬🇧 par Docker Inc. Une image durcie est une image dont la sécurité est renforcée, en éliminant tout ce qui nest pas indispensable, ce qui réduit la surface dattaque.
Les images en question sont basées sur Debian et Alpine. Des [charts Helm](https://blog.stephane-robert.info/docs/conteneurs/orchestrateurs/outils/helm/) 🇫🇷 sont également disponibles aux mêmes conditions. Un chart Helm décrit le déploiement et la configuration dune application sous Kubernetes. Les charts, comme les images, sont durcis, et mis à jour en moins dune semaine quand une faille de sécurité est détectée. Ces images et charts sont sous llicense Apache 2, une license bien connue et très permissive, donc il n'y a pas de mauvaise surprise à attendre de ce côté là.
Les images en question sont basées sur Debian et Alpine. Des [charts Helm](https://blog.stephane-robert.info/docs/conteneurs/orchestrateurs/outils/helm/) 🇫🇷 sont également disponibles aux mêmes conditions. Un chart Helm décrit le déploiement et la configuration dune application sous Kubernetes. Les charts, comme les images, sont durcis, et mis à jour en moins dune semaine quand une faille de sécurité est détectée. Ces images et charts sont sous licence Apache 2, une licence bien connue et très permissive, donc il n'y a pas de mauvaise surprise à attendre de ce côté-là.
## Exposition involontaire de données avec Supabase