Source code of my website
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

🛠️ : add missing non-breaking spaces

+166 -166
+2 -2
content/posts/2025/2025-06-19-cfp-tips-and-tricks/index.md
··· 254 254 255 255 * [Préparez et donnez votre première conférence (quand ce n’est pas votre métier)](https://votre-premiere-conference.fr/) : ce livre de Pascal Martin donne beaucoup de très bon conseils. L'envoi de la proposition à un CFP fait l'objet d'un chapitre complet. 256 256 * [Proposer une conférence – la réponse au CFP](https://devfesttoulouse.fr/2025/03/18/proposer-une-conference-le-cfp/) : un chouette billet de blog écrit par Sylvain Wallez ; on y retrouve des conseils similaires. 257 - * [Comment écrire un CFP que les conférences tech ne peuvent pas refuser !](https://youtu.be/bKuVZYQnnX4) : une vidéo intéressante avec des tips supplémentaires, et des conseils assez concrets 258 - * [Comment être refusé à coup sûr à un CFP ?](https://www.webofmars.com/blog/2025-10-29_comment-etre-refuser-a-un-cfp/) : une jolie liste de pièges à éviter. 257 + * [Comment écrire un CFP que les conférences tech ne peuvent pas refuser !](https://youtu.be/bKuVZYQnnX4) : une vidéo intéressante avec des tips supplémentaires, et des conseils assez concrets 258 + * [Comment être refusé à coup sûr à un CFP ?](https://www.webofmars.com/blog/2025-10-29_comment-etre-refuser-a-un-cfp/) : une jolie liste de pièges à éviter.
+19 -19
content/posts/2025/2025-07-11-md-to-docx/index.md
··· 19 19 20 20 ## _pandoc_ et _markdown_ 21 21 22 - _pandoc_ est un outil de conversion de documents. Il gère de nombreux formats en entrée et en sortie, dont le _markdown_ et le _docx_ ! 22 + _pandoc_ est un outil de conversion de documents. Il gère de nombreux formats en entrée et en sortie, dont le _markdown_ et le _docx_ ! 23 23 24 - Après avoir installé l'outil, on peut convertir des documents. L'option `-o` permet de préciser le fichier de sortie, le format est détecté à partir de l'extension du fichier : 24 + Après avoir installé l'outil, on peut convertir des documents. L'option `-o` permet de préciser le fichier de sortie, le format est détecté à partir de l'extension du fichier : 25 25 26 26 ```shell 27 27 # générer un doc html ··· 33 33 34 34 La génération par défaut en format _docx_ est tout à fait correcte et prend en compte les différents niveaux de titre, la gestion du gras et de l'italique, le code et les blocs de citation, ainsi que les listes, tableaux et images. Bref, tout ce qu'on peut basiquement faire en _markdown_. 35 35 36 - Le markdown suivant : 36 + Le markdown suivant : 37 37 38 38 ~~~markdown 39 39 # Content ··· 82 82 83 83 est transformé en _docx_ avec la commande `pandoc sample.md -o sample.docx` 84 84 85 - Le résultat n'est pas des plus stylés, mais est déjà plutôt pas mal, on voit bien que markdown est bien supporté : 85 + Le résultat n'est pas des plus stylés, mais est déjà plutôt pas mal, on voit bien que markdown est bien supporté : 86 86 87 87 ![sample.webp](sample.webp) 88 88 [sample.docx](sample.docx) ··· 99 99 100 100 À noter que le code source inline est représenté par le style de caractères _Verbatim Char_, et le code source en blocs prendra le style de paragraphe _Source Code_ (qui n'est pas créé par défaut dans le document de référence). 101 101 102 - Pour redimensionner les images, il est aussi possible de préciser leur taille en attribut : 102 + Pour redimensionner les images, il est aussi possible de préciser leur taille en attribut : 103 103 104 104 ```markdown 105 105 ![cover.webp](cover.webp){ width=50% } 106 106 ``` 107 107 108 - Une fois ce document personnalisé, on génére les fichiers _docx_ en utilisant l'option `--reference-doc=custom-reference.docx` : 108 + Une fois ce document personnalisé, on génére les fichiers _docx_ en utilisant l'option `--reference-doc=custom-reference.docx` : 109 109 110 110 ```shell 111 111 pandoc sample.md -o sample-with-style.docx --reference-doc=custom-reference.docx ··· 116 116 117 117 ## Pré-processing 118 118 119 - L'utilisation du format texte markdown étant donc possible, je souhaitais pouvoir pré-processer mes fichiers markdown pour : 119 + L'utilisation du format texte markdown étant donc possible, je souhaitais pouvoir pré-processer mes fichiers markdown pour : 120 120 121 121 * inclure du code source réel dans le document 122 122 * générer mes diagrammes au format drawio en png et les inclure dans le document généré ··· 127 127 128 128 Il est possible avec _pandoc_ d'exécuter des filtres pendant l'exécution de la transformation. L'utilisation des filtres n'est cependant pas très bien documentée, et s'appuie sur la manipulation d'un AST au format JSON. Cette approche, bien que plutôt propre, me semblait quand même compliquée pour simplement inclure du code dans mes fichiers. 129 129 130 - J'ai donc trouvé une autre solution plus simple : dans mes fichiers _markdown_, j'utilise une syntaxe de _Commentaires_ pour recréer une espèce de macro, que je fais pré-processer par un script shell. 130 + J'ai donc trouvé une autre solution plus simple : dans mes fichiers _markdown_, j'utilise une syntaxe de _Commentaires_ pour recréer une espèce de macro, que je fais pré-processer par un script shell. 131 131 132 - La macro d'inclusion de code que j'ai utilisée est celle-ci : 132 + La macro d'inclusion de code que j'ai utilisée est celle-ci : 133 133 134 134 ```markdown 135 135 [//]: # (INCLUDECODE FICHIER_A_INCLURE) ··· 139 139 J'ai alors simplement utilisé un commentaire `INCLUDECODE` devant être suivi du nom du fichier à inclure. 140 140 141 141 Pour pré-processer ces _macros_, j'utilise la puissance du shell et le fait que _pandoc_ accepte le contenu du document à transformer sur `STDIN`. 142 - Les 2 commandes suivantes ont un comportement identique (au delta de l'exécution d'un `cat` en plus) : 142 + Les 2 commandes suivantes ont un comportement identique (au delta de l'exécution d'un `cat` en plus) : 143 143 144 144 ```shell 145 145 # direct ··· 149 149 $ cat sample.md | pandoc -o sample.docx 150 150 ``` 151 151 152 - Avec ce fonctionnement, il est facile de glisser un script shell entre deux : 152 + Avec ce fonctionnement, il est facile de glisser un script shell entre deux : 153 153 154 154 ```shell 155 155 $ cat sample.md | ··· 157 157 pandoc -o sample.docx 158 158 ``` 159 159 160 - Le script shell intercepte les lignes correspondant à la macro et insère le contenu du fichier référencé : 160 + Le script shell intercepte les lignes correspondant à la macro et insère le contenu du fichier référencé : 161 161 162 162 ```shell 163 163 #!/bin/bash ··· 191 191 192 192 ### Générer des diagrammes _drawio_ et les inclure 193 193 194 - Pour gérer des diagrammes _drawio_ à la volée, j'ai simplement suivi le même principe : une syntaxe de type _macro_ et un script pour la traiter. 194 + Pour gérer des diagrammes _drawio_ à la volée, j'ai simplement suivi le même principe : une syntaxe de type _macro_ et un script pour la traiter. 195 195 196 - La macro pour extraire un diagramme est du même type : 196 + La macro pour extraire un diagramme est du même type : 197 197 198 198 ```markdown 199 199 [//]: # (DIAGRAM FICHIER_A_INCLURE) 200 200 ``` 201 201 202 - Et le script est aussi similaire, il utilise le CLI de _drawio_ pour exporter le diagramme dans un `.webp`, qui est ensuite inclus dans le markdown : 202 + Et le script est aussi similaire, il utilise le CLI de _drawio_ pour exporter le diagramme dans un `.webp`, qui est ensuite inclus dans le markdown : 203 203 204 204 ```shell 205 205 regex='\[\/\/\]: # \(DIAGRAM (.*)\)' ··· 227 227 exit 0 228 228 ``` 229 229 230 - J'aurais aussi pu utiliser directement une directive d'image de cette manière : 230 + J'aurais aussi pu utiliser directement une directive d'image de cette manière : 231 231 232 232 ```markdown 233 233 ![](mon_diagramme.drawio) ··· 239 239 240 240 ### La commande définitive 241 241 242 - En cumulant tout ce qu'on a vu, la commande suivante fait l'inclusion du code, la génération des diagrammes à la volée, et la conversion en `.docx` avec un style fourni : 242 + En cumulant tout ce qu'on a vu, la commande suivante fait l'inclusion du code, la génération des diagrammes à la volée, et la conversion en `.docx` avec un style fourni : 243 243 244 244 ```shell 245 245 $ cat sample.md | ··· 248 248 pandoc -o sample-final.docx --reference-doc=custom-reference.docx 249 249 ``` 250 250 251 - Le document généré par cette commande est maintenant complet : 251 + Le document généré par cette commande est maintenant complet : 252 252 253 253 ![sample-final.webp](sample-final.webp) 254 254 [sample-final.docx](sample-final.docx) ··· 258 258 _pandoc_ permet de générer des documents Word assez propres de mon point de vue. 259 259 Avec un peu de travail sur la feuille de style, il est assez facile de personnaliser le rendu des documents. 260 260 261 - C'est d'ailleurs cette façon de générer les documents que j'ai utilisée pour écrire (et compiler) mon livre ! 261 + C'est d'ailleurs cette façon de générer les documents que j'ai utilisée pour écrire (et compiler) mon livre ! 262 262 263 263 En utilisant la puissance du shell, il est relativement facile de scripter l'inclusion d'éléments externes comme du code source, des diagrammes ou d'autres fichiers. 264 264
+10 -10
content/posts/2025/2025-07-25-split-kbd/index.md
··· 26 26 27 27 Je vais devoir monter le clavier (les deux parties séparément), puis flasher le firmware de chaque contrôleur. Ensuite, ce sera le moment de paramétrer le mapping des touches, et aussi de (ré)apprendre à taper au clavier (ouch). 28 28 29 - C'est parti ! 29 + C'est parti ! 30 30 31 31 ## Le kit 32 32 ··· 37 37 Le kit contient donc les deux cartes du clavier, les switches (compatibles MX), un kit de touches, les plaques de protection du clavier avec pour chaque côté une mousse, une plaque décorative en aluminium et une base en plexi. On a aussi les câbles USB-C, les deux modules, et un peu de visserie. 38 38 39 39 La carte de chaque partie du clavier contient le contrôleur déjà soudé, avec une puce RP2040 et deux ports USB-C. 40 - Ici la partie gauche du clavier : 40 + Ici la partie gauche du clavier : 41 41 42 42 ![](20250711_090103.webp) 43 43 ··· 57 57 58 58 ![](20250711_091424.webp) 59 59 60 - Cette première étape était plutôt facile, ça commence à prendre forme ! 60 + Cette première étape était plutôt facile, ça commence à prendre forme ! 61 61 62 62 ## Les switches 63 63 ··· 81 81 82 82 ![](20250711_093125.webp) 83 83 84 - L'étape suivante, c'est le petit module avec l'écran ! 84 + L'étape suivante, c'est le petit module avec l'écran ! 85 85 86 86 ## Le module 87 87 88 88 Pour limiter les soudures, les modules sont déjà assemblés, et s'installent avec un petit cable de type _nappe_. 89 89 C'est un peu plus technique ici. 90 90 91 - Un tout petit écran ! 91 + Un tout petit écran ! 92 92 93 93 ![](20250711_093432.webp) 94 94 ![](20250711_093441.webp) ··· 163 163 164 164 ## La suite 165 165 166 - Il faut maintenant que je m'habitue à deux choses : le QWERTY, qui semble quand même plus pratique pour ce type de clavier, et la disposition des touches en colonne. Mon cerveau va avoir du taf dans les prochains mois. 166 + Il faut maintenant que je m'habitue à deux choses : le QWERTY, qui semble quand même plus pratique pour ce type de clavier, et la disposition des touches en colonne. Mon cerveau va avoir du taf dans les prochains mois. 167 167 168 168 Je vais passer un peu de temps à m'entrainer sur https://www.keybr.com/. 169 169 170 170 J'ai aussi un peu galéré à trouver le bon mapping qui me permet d'avoir toutes les touches que je veux, en particulier le support des accents. 171 171 172 - J'en suis à une semaine d'utilisation et pour le moment, j'ai environ atteint 20% de mes capacités de frappe sur mon clavier précédent sur lequel je tape à 70 wpm avec 95% de précision. La marge de progression est énorme ! 172 + J'en suis à une semaine d'utilisation et pour le moment, j'ai environ atteint 20% de mes capacités de frappe sur mon clavier précédent sur lequel je tape à 70 wpm avec 95% de précision. La marge de progression est énorme ! 173 173 174 174 ## Liens et références 175 175 176 - * https://splitkb.com/ : le site sur lequel j'ai acheté mon clavier 177 - * https://docs.splitkb.com/product-guides/halcyon-series/build-guide/introduction : la doc de montage de mon clavier 178 - * https://www.keybr.com/ : pour s'entraîner 176 + * https://splitkb.com/ : le site sur lequel j'ai acheté mon clavier 177 + * https://docs.splitkb.com/product-guides/halcyon-series/build-guide/introduction : la doc de montage de mon clavier 178 + * https://www.keybr.com/ : pour s'entraîner
+35 -35
content/posts/2025/2025-08-01-bilan/index.md
··· 27 27 28 28 ## Conférences et talks 29 29 30 - Cette saison, j'ai eu le plaisir d'assister à pas mal de conférences : 30 + Cette saison, j'ai eu le plaisir d'assister à pas mal de conférences : 31 31 32 - * Cloud Nord le 10 octobre 2024 (en tant qu'orga) ; 33 - * Clever Cloud Fest le 7 février (j'ai fait un passage express) ; 34 - * Devoxx France du 16 au 18 avril (en tant que speaker) ; 35 - * DevLille les 12 et 13 juin (en tant que speaker) ; 32 + * Cloud Nord le 10 octobre 2024 (en tant qu'orga) ; 33 + * Clever Cloud Fest le 7 février (j'ai fait un passage express) ; 34 + * Devoxx France du 16 au 18 avril (en tant que speaker) ; 35 + * DevLille les 12 et 13 juin (en tant que speaker) ; 36 36 * Sunny-Tech les 26 et 27 juin (en tant que speaker). 37 37 38 38 Ça représente un total de neuf jours en conf, c'est pas mal du tout. ··· 42 42 43 43 ### Mes talks 44 44 45 - Pour la saison, j'avais travaillé trois sujets de talk : 45 + Pour la saison, j'avais travaillé trois sujets de talk : 46 46 47 - * "OpenTofu - 2 ans après" : pour dresser le bilan après le _drama_ et le _fork_ ; 48 - * ["Rebase d'image Docker/OCI avec crane"](talks/talk-rebase-crane) : une démo technique d'un concept qui me travaillait depuis près de deux ans ; 49 - * ["Let's play Factorio"](talks/talk-lets-play-factorio) : un talk de vulgarisation fun, dans un de mes jeux préférés. 47 + * "OpenTofu - 2 ans après" : pour dresser le bilan après le _drama_ et le _fork_ ; 48 + * ["Rebase d'image Docker/OCI avec crane"](talks/talk-rebase-crane) : une démo technique d'un concept qui me travaillait depuis près de deux ans ; 49 + * ["Let's play Factorio"](talks/talk-lets-play-factorio) : un talk de vulgarisation fun, dans un de mes jeux préférés. 50 50 51 - J'ai soumis ces talks un peu partout, et j'ai eu la chance de pouvoir donner 3 sessions : 51 + J'ai soumis ces talks un peu partout, et j'ai eu la chance de pouvoir donner 3 sessions : 52 52 53 - * "Rebase d'image Docker/OCI avec crane" à Devoxx France (30 minutes) ; 54 - * "Rebase d'image Docker/OCI avec crane" au DevLille (45 minutes) ; 53 + * "Rebase d'image Docker/OCI avec crane" à Devoxx France (30 minutes) ; 54 + * "Rebase d'image Docker/OCI avec crane" au DevLille (45 minutes) ; 55 55 * "Let's play Factorio" à SunnyTech (50 minutes). 56 56 57 57 ![](jwk-devlille.webp) ··· 65 65 66 66 Le sujet sur OpenTofu n'a été accepté à aucune conf, mais je le retravaillerai pour le reproposer l'année prochaine. J'ai aussi arrêté de le soumettre quand mes deux autres sujets ont été acceptés, pour ne pas (trop) me mettre en difficulté. 67 67 68 - Du point de vue du temps de préparation de ces talks, j'ai une métrique qui semble correcte d'année en année : une heure de prépa par minute sur scène. 68 + Du point de vue du temps de préparation de ces talks, j'ai une métrique qui semble correcte d'année en année : une heure de prépa par minute sur scène. 69 69 70 70 J'ai donc passé une trentaine d'heure à préparer la première session de "Rebase d'image Docker/OCI avec crane" et une dizaine d'heures pour l'adapter au format un peu plus long du DevLille. 71 71 "Let's play Factorio" m'a demandé pas loin de cent heures de préparation. C'est ce que j'imaginais, car ce talk a un format bien particulier. J'espère pouvoir le rejouer plusieurs fois l'année prochaine pour essayer de "l'amortir". ··· 114 114 115 115 Une des activités que j'apprécie également est l'enseignement. 116 116 117 - Cette année, j'ai donné : 117 + Cette année, j'ai donné : 118 118 119 - * 68 heures à l'Université de Lille sur les thèmes Java / Spring ; 119 + * 68 heures à l'Université de Lille sur les thèmes Java / Spring ; 120 120 * 88 heures dans des écoles privés sur le thème IaC / Terraform. 121 121 122 122 J'aurais au total enseigné mon art (ahaha) à près de 70 étudiants de diverses formations. 123 123 124 - Pour ces cours, j'ai la chance d'être soutenu par un sponsor qui finance une organisation dans laquelle mes étudiants déploient leurs TPs : Clever Cloud. 124 + Pour ces cours, j'ai la chance d'être soutenu par un sponsor qui finance une organisation dans laquelle mes étudiants déploient leurs TPs : Clever Cloud. 125 125 Pour la saison prochaine, Scaleway a également accepté de sponsoriser cette activité avec des crédits pour les TPs de mes étudiants. 126 126 127 127 J'estime le coût de ces sponsorings à environ 300 euros au total. 128 128 C'est clairement un coût que je pourrais prendre à ma charge, mais le sponsoring permet d'éviter de devoir surveiller en permanence le billing associé à ces comptes, donc c'est un véritable plus. 129 129 130 - Clever Cloud, Scaleway, si vous lisez ces lignes : un énorme merci à vous 💙 130 + Clever Cloud, Scaleway, si vous lisez ces lignes : un énorme merci à vous 💙 131 131 132 132 ## Mon site 133 133 ··· 159 159 160 160 ## Mes réseaux sociaux 161 161 162 - J'ai réduit ma présence sur les réseaux sociaux à deux réseaux : [LinkedIn](https://www.linkedin.com/in/julien-wittouck/) et [Bluesky](https://bsky.app/profile/codeka.io). 162 + J'ai réduit ma présence sur les réseaux sociaux à deux réseaux : [LinkedIn](https://www.linkedin.com/in/julien-wittouck/) et [Bluesky](https://bsky.app/profile/codeka.io). 163 163 Je n'ai pas désactivé mon compte [Twitter](https://x.com/CodeKaio) (je n'arrive pas à dire "X"), mais je ne publie plus dessus, et je m'y connecte très rarement, trop de bots, de contenu p*rn et de racisme. 164 164 165 165 Je poste principalement le contenu de ma veille, ainsi que mes articles. Sur Bluesky, je poste aussi du contenu plus "perso", comme les jeux auxquels je joue ou les séries que je regarde. Mon LinkedIn ne contient pas ce type de contenu plus perso. 166 166 167 - J'ai extrait mes stats LinkedIn pour la rédaction de ce bilan, et je suis plutôt impressionné par le résultat : 275k vues sur la saison. 167 + J'ai extrait mes stats LinkedIn pour la rédaction de ce bilan, et je suis plutôt impressionné par le résultat : 275k vues sur la saison. 168 168 169 169 ![](stats-linkedin-views.webp) 170 170 ··· 201 201 202 202 ## Podcasts 203 203 204 - Au-delà de la promo de mon livre, j'ai pu participer avec Romain à l'enregistrement de quelques épisodes de ses podcasts. Certains des enregistrements ont plus d'un an, mais sont parus cette saison : 204 + Au-delà de la promo de mon livre, j'ai pu participer avec Romain à l'enregistrement de quelques épisodes de ses podcasts. Certains des enregistrements ont plus d'un an, mais sont parus cette saison : 205 205 206 206 * [Méfiez-vous de la hype](https://youtu.be/QFUwKoq9Rmc) avec William Leemans 207 207 * [Craftmanship](https://youtu.be/NJ-lLdRbS2k) avec Edouard Cattez 208 208 * [L'IA ça existe depuis des années](https://youtu.be/7RDcsUYK-1Q) avec Deniz Pekin 209 209 * [Ils sont organisateurs d'événements techs](https://youtu.be/Sp1o_nFMtvM) avec Emmanuel Demey 210 - * [Devoxx 25 : le débrief](https://youtu.be/XpEhtay8qXQ) avec Romain 210 + * [Devoxx 25 : le débrief](https://youtu.be/XpEhtay8qXQ) avec Romain 211 211 212 212 ![](youtube-devoxx.webp) 213 213 214 214 ## Jeux vidéos 215 215 216 - Pour finir ce bilan, les jeux vidéos auxquels j'ai joué cette saison, il y en a une paire : 216 + Pour finir ce bilan, les jeux vidéos auxquels j'ai joué cette saison, il y en a une paire : 217 217 218 - * Factorio (sans blague) ; 219 - * Death Stranding 2 : On the beach (mon jeu du moment) ; 220 - * Monster Hunter Wilds ; 221 - * Need For Speed Hot Pursuit ; 222 - * Gran Turismo 7 (toujours de temps en temps, au volant) ; 223 - * Balatro (quel enfer ce jeu) ; 224 - * Humanity (platiné) ; 225 - * The Stanley Parable ; 226 - * Robocop rogue city (platiné) ; 227 - * Dynasty Warriors 9 (ne me jugez pas) ; 228 - * Dave the Diver (platiné) ; 229 - * God of War Ragnarock (platiné) ; 218 + * Factorio (sans blague) ; 219 + * Death Stranding 2 : On the beach (mon jeu du moment) ; 220 + * Monster Hunter Wilds ; 221 + * Need For Speed Hot Pursuit ; 222 + * Gran Turismo 7 (toujours de temps en temps, au volant) ; 223 + * Balatro (quel enfer ce jeu) ; 224 + * Humanity (platiné) ; 225 + * The Stanley Parable ; 226 + * Robocop rogue city (platiné) ; 227 + * Dynasty Warriors 9 (ne me jugez pas) ; 228 + * Dave the Diver (platiné) ; 229 + * God of War Ragnarock (platiné) ; 230 230 * Star Wars Jedi Survivor. 231 231 232 232 ![](ds2.webp) 233 233 234 - J'ai une affection particulière pour Death Stranding, donc c'est sans aucun doute mon jeu préféré de cette année. J'avais même précommandé la manette, que je trouve très cool. Une fois terminé, je m'attaquerai à Clair Obscur : Expedition 33. 234 + J'ai une affection particulière pour Death Stranding, donc c'est sans aucun doute mon jeu préféré de cette année. J'avais même précommandé la manette, que je trouve très cool. Une fois terminé, je m'attaquerai à Clair Obscur : Expedition 33. 235 235 236 236 ## Conclusion 237 237
+22 -22
content/posts/2025/2025-10-17-mi-veille-special-devfest-nantes/index.md
··· 40 40 ![Photo du hall principale, prise en hauteur, noir de monde.](hall.webp) 41 41 42 42 Entre deux conférences, le hall est plein à craquer. J'ai été agréablement surpris, même s'il y a beaucoup de monde, le hall n'est pas si bruyant que ça, et on arrive à tenir une conversation à un niveau de voix raisonnable. 43 - Le lieu a l'air plutôt accessible (même si je ne suis pas directement concerné, ça me semble important), j'ai l'impression que plusieurs personnes circulaient en fauteuil de manière plutôt fluide, donc c'est aussi un très bon point pour le lieu ! 43 + Le lieu a l'air plutôt accessible (même si je ne suis pas directement concerné, ça me semble important), j'ai l'impression que plusieurs personnes circulaient en fauteuil de manière plutôt fluide, donc c'est aussi un très bon point pour le lieu ! 44 44 45 45 ## Une expérience parfaite en tant que speaker 46 46 47 - Une chose est certaine, les orgas sont aux petits soins pour les speakers. L'accueil particulier réservé aux speakers est très confortable : salle au calme avec massages, café et petit-déjeuner, et petits cadeaux. On se sent réellement privilégiés. 47 + Une chose est certaine, les orgas sont aux petits soins pour les speakers. L'accueil particulier réservé aux speakers est très confortable : salle au calme avec massages, café et petit-déjeuner, et petits cadeaux. On se sent réellement privilégiés. 48 48 La salle speaker permet de passer un moment calme et relaxant, aussi bien pour se préparer à son talk, mais aussi pour faire une pause entre deux sessions et souffler un peu (ou écrire son article de blog). 49 49 Nous avions également une zone réservée pour nos repas, ce qui nous permet de ne pas avoir à faire la queue si on veut manger rapidement et retourner se concentrer ou s'isoler. 50 50 Les discussions entre speakers sont bienveillantes et toujours agréables, c'est toujours sympa de re-croiser des speakers avec qui on avait fait connaissance à d'autres confs, et de rencontrer de nouvelles personnes. ··· 59 59 60 60 L'organisation dans les différentes salles est impeccable techniquement. Les branchements sont simples et efficaces, deux écrans sont disponibles en retour pour le speaker, pour y afficher un retour simple d'écran, et un compteur de temps pour pouvoir bien gérer le timing de sa présentation. 61 61 62 - Pour ma part, je n'ai eu aucun problème technique, le flux vidéo et sonore a bien fonctionné. L'ingénieur son qui m'a équipé était très efficace, on a pu faire quelques tests de son (pour la musique du jeu) avant que le public rentre dans la salle, pour s'assurer que tout aller bien marcher, et c'était le cas. Bravo ! 62 + Pour ma part, je n'ai eu aucun problème technique, le flux vidéo et sonore a bien fonctionné. L'ingénieur son qui m'a équipé était très efficace, on a pu faire quelques tests de son (pour la musique du jeu) avant que le public rentre dans la salle, pour s'assurer que tout aller bien marcher, et c'était le cas. Bravo ! 63 63 64 64 Ce côté pro aide beaucoup, on se sent rassuré, et on peut ainsi se concentrer sur son talk en toute sérénité. 65 65 ··· 84 84 85 85 On y a vu notamment certaines pratiques DIY, comme mettre son téléphone dans un sachet congélation pour pouvoir écouter de la musique sous la douche, ou utiliser du dentifrice pour réparer des micro-rayures sur les écrans (là je pense qu'on est clairement sur du Folklore Tech). 86 86 On a aussi vu l'interview d'une personne dont le téléphone s'éteint à chaque fois qu'il rentre dans son lieu de travail. 87 - Quelques phrases un peu marquantes, à propos de FaceID également : "Tout le monde l'utilise, donc ça doit aller", ou "Le côté pratique l'emporte beaucoup trop sur les questions de fond". 87 + Quelques phrases un peu marquantes, à propos de FaceID également : "Tout le monde l'utilise, donc ça doit aller", ou "Le côté pratique l'emporte beaucoup trop sur les questions de fond". 88 88 89 89 De quoi se poser quelques questions sur la perte de connaissance par rapport à ces outils dont on dépend tant, et dont le fonctionnement pourra finir par être assimilé à de la magie. 90 90 ··· 104 104 105 105 > Bravo à Kévin pour son sang-froid, puisqu'il a malheureusement subi des problèmes de clignotement d'écran lors de son talk. Il a particulièrement bien géré la situation, et a même réussi à nous expliquer certains concepts sans slides pendant quelques minutes. 106 106 107 - ### Détectives de la prod : résoudre l'enquête avant le crash par Sébastien Ferrer 107 + ### Détectives de la prod : résoudre l'enquête avant le crash par Sébastien Ferrer 108 108 109 - Sébastien nous présente les enjeux de son quotidien : faire tourner en production une cinquantaine d'applications. 109 + Sébastien nous présente les enjeux de son quotidien : faire tourner en production une cinquantaine d'applications. 110 110 111 111 ![Photo de Sébastier Ferrer sur scène, juste avant le démarrage de son talk.](detectives.webp) 112 112 113 - Après avoir rappelé quelques principes et acronymes, comme le _TTA_ / _TTR_ (_Time To Ack_ et _Time To Restore_) et les différents niveaux de priorité, il a utilisé quelques cas d'exemple liés à ses expériences d'incidents survenus en production pour illustrer l'enjeu principal : restaurer le service avant tout. La résolution des problèmes (avec l'analyse de la cause racine _via_ une méthode des 5 Whys) pouvant être faite plus tard. 113 + Après avoir rappelé quelques principes et acronymes, comme le _TTA_ / _TTR_ (_Time To Ack_ et _Time To Restore_) et les différents niveaux de priorité, il a utilisé quelques cas d'exemple liés à ses expériences d'incidents survenus en production pour illustrer l'enjeu principal : restaurer le service avant tout. La résolution des problèmes (avec l'analyse de la cause racine _via_ une méthode des 5 Whys) pouvant être faite plus tard. 114 114 115 - Il a également partagé quelques astuces simples pour avoir des logs exploitables : utiliser des champs structurés pour avoir le plus de données de contexte. 115 + Il a également partagé quelques astuces simples pour avoir des logs exploitables : utiliser des champs structurés pour avoir le plus de données de contexte. 116 116 Il a aussi donné quelques bonnes pratiques de monitoring et des exemples de dashboards intéressants pour surveiller les services, ou avoir un résumé de l'état d'une application lors d'un changement d'équipe jour/nuit. 117 117 118 118 Un talk que tous les _Devs_ devraient avoir vu pour prendre conscience des enjeux du _Run_. 119 119 120 120 > Ce talk était plein d'humour, et d'humilité. J'ai beaucoup apprécié le ton employé par Sébastien. J'ai aussi eu le plaisir de pouvoir échanger quelques mots avec lui directement. Quelqu'un que je recroiserai avec plaisir à l'avenir. 121 121 122 - ### État des lieux de la Souveraineté du Cloud : Des Clouds Publics aux Clouds Confidentiels par Seifeddin Mansri 122 + ### État des lieux de la Souveraineté du Cloud : Des Clouds Publics aux Clouds Confidentiels par Seifeddin Mansri 123 123 124 - Seifeddin a d'abord commencé par présenté quelques enjeux autour de la souveraineté du Cloud : Juridique (adapté au territoire où sont stockées les données et à l'éventuelle extra-territorialité), Technique avec les outils utilisés et la sécurité associé, Opérationnel avec les entités de confiance pour la gestion, et ce qu'il a qualifié de Sémantique, regroupant surtout les notions d'auditabilité. 124 + Seifeddin a d'abord commencé par présenté quelques enjeux autour de la souveraineté du Cloud : Juridique (adapté au territoire où sont stockées les données et à l'éventuelle extra-territorialité), Technique avec les outils utilisés et la sécurité associé, Opérationnel avec les entités de confiance pour la gestion, et ce qu'il a qualifié de Sémantique, regroupant surtout les notions d'auditabilité. 125 125 126 126 Il a ensuite évoqué les usages de Cloud Privé, Public, Hybrides et Multi-Cloud, pour ensuite parler de manière un peu plus détaillée des implémentations de Cloud de confiance (S3NS et Bleu), et le SecNumCloud. 127 127 ··· 138 138 139 139 ![Photo de l'entrée de la salle Belem du DevFest, pour mon talk. L'écran indique le titre du talk ainsi que ma photo](lets-play-factorio-1.webp) 140 140 141 - C'était pour moi la deuxième édition de mon talk. Et quelle édition incroyable ! 141 + C'était pour moi la deuxième édition de mon talk. Et quelle édition incroyable ! 142 142 143 143 Technique parfaite. Salle comble (400 personnes pour venir me voir, des personnes ont été refusées à l'entrée car la salle était pleine). MC au top. Public accroché et conquis dès les premières minutes. J'ai adoré voir les sourires et les yeux des spectateurs briller à l'affichage du menu et des différents tableaux du jeu. 144 144 ··· 151 151 152 152 J'ai même eu quelques questions. 153 153 154 - Bien qu'elles seront dans la vidéo, je les remets ici (de mémoire, ainsi que certains échanges informels que j'ai eu sur le côté) : 154 + Bien qu'elles seront dans la vidéo, je les remets ici (de mémoire, ainsi que certains échanges informels que j'ai eu sur le côté) : 155 155 156 - "Combien de temps as-tu passé sur la préparation ?" 156 + "Combien de temps as-tu passé sur la préparation ?" 157 157 > Une bonne centaine d'heures comptées. Pas forcément toutes in-game, beaucoup de temps passé à cogiter sur le talk (idée que j'avais depuis près de 2 ans), beaucoup de temps passé à manipuler le jeu pour essayer d'illustrer certains principes, et enfin au moins 80 heures dans le jeu pour préparer tous les tableaux présentés. J'ai passé pas loin de 2 heures dans le train aller vers Nantes pour améliorer la première transition en train et l'_habiller_ un peu mieux, afin d'embarquer les spectateurs dans le jeu. 158 158 159 - "As-tu pensé à représenter les notions de testing comme des TU ?" 159 + "As-tu pensé à représenter les notions de testing comme des TU ?" 160 160 > Tester c'est douter. Dans le jeu, on teste directement en production. Je pense que je vais y réfléchir un peu, mais ça me semble difficile représenter un test qui passe ou qui échoue dans le jeu. 161 161 162 - "Est-ce que tu as pensé à faire ce talk dans Satisfactory ?" 162 + "Est-ce que tu as pensé à faire ce talk dans Satisfactory ?" 163 163 > J'aime aussi beaucoup ce jeu, mais le côté 3D et vue à la première personne serait un peu compliqué à suivre pour les participants, je risquerai de me perdre dans l'usine, et ils serait impossible de pouvoir dézoomer et avoir cette représentation haut-niveau que je voulais montrer. 164 164 165 - "Combien d'heures as-tu dans le jeu ?" 165 + "Combien d'heures as-tu dans le jeu ?" 166 166 > J'ai 300 heures listées sur Steam, dont la petite centaine passées pour la préparation, les répétitions et les 2 sessions données. J'avais aussi acheté le jeu en early accès il y a très longtemps (en 2014 ou 2015 je crois), toutes ces heures je ne sais pas les dénombrer. 167 167 168 168 ![feedbacks-devfest-nantes-2025.webp](feedbacks-devfest-nantes-2025.webp) ··· 180 180 181 181 J'ai pu profiter d'un créneau libre pour me faire masser en salle speaker, et j'ai pris un peu de temps au calme pour commencer à rédiger ces lignes, et discuter avec d'autres speakers. 182 182 183 - ### Karpenter + Keda : Le duo gagnant du FinOps par Guillaume Membré et Sébastien Fourreau 183 + ### Karpenter + Keda : Le duo gagnant du FinOps par Guillaume Membré et Sébastien Fourreau 184 184 185 185 Je connaissais déjà Keda, mais pas spécialement Karpenter, donc c'était pour moi l'occasion de découvrir cet outil. 186 186 187 - Les deux speakers travaillent pour RCA qui édite l'outil "MEG : Mon Expert en Gestion", dont je suis utilisateur avec mon cabinet comptable, c'est un point de détail assez rigolo. 187 + Les deux speakers travaillent pour RCA qui édite l'outil "MEG : Mon Expert en Gestion", dont je suis utilisateur avec mon cabinet comptable, c'est un point de détail assez rigolo. 188 188 189 189 Ils ont commencé par expliquer les enjeux autour du coût d'une infrastructure Kubernetes (managée sur AWS dans leur cas), avec les différents éléments qui sont en partie non-prédictibles (load-balancing et coûts réseau). 190 190 ··· 203 203 ### Limits, Requests, QoS, PriorityClasses, on balaie ce que vous pensiez savoir sur le scheduling dans Kubernetes par Denis Germain et Quentin Joly 204 204 205 205 Denis et Quentin se sont livrés à l'exercice du talk en binôme, et ont utilisé leur relation de manager/managé avec beaucoup d'humour. 206 - Denis en a d'ailleurs profité pour mentionner son livre, _Kubernetes : 50 solutions pour les postes de développement et les clusters de production_ (que je vais lire dans les prochaines semaines), qui lui a aussi permis de découvrir des distributions Kubernetes qu'il a utilisé pour ce talk. 206 + Denis en a d'ailleurs profité pour mentionner son livre, _Kubernetes : 50 solutions pour les postes de développement et les clusters de production_ (que je vais lire dans les prochaines semaines), qui lui a aussi permis de découvrir des distributions Kubernetes qu'il a utilisé pour ce talk. 207 207 208 - Avec 6 ou 7 démos (je n'ai pas compté, et il semblerait qu'ils aient sauté une démo pendant la présentation ?), Denis et Quentin ont expliqué le fonctionnement des différents paramètres listés dans le titre de leur conférence et surtout l'impact qu'ils ont sur nos applications en particulier au niveau des performances et du scheduling. 208 + Avec 6 ou 7 démos (je n'ai pas compté, et il semblerait qu'ils aient sauté une démo pendant la présentation ?), Denis et Quentin ont expliqué le fonctionnement des différents paramètres listés dans le titre de leur conférence et surtout l'impact qu'ils ont sur nos applications en particulier au niveau des performances et du scheduling. 209 209 210 210 Ils ont commencé avec les _limits_ et _requests_ dans Kubernetes, mettre en avant les impacts de ces paramètres avec quelques schémas très clairs et plusieurs démos. 211 211 212 - ![Photo de Denis et Quentin sur scène. Un schéma "CPU Limits, il se passe quoi sous le capôt ?" présenté en arrière plan.](cpu-throlling.webp) 212 + ![Photo de Denis et Quentin sur scène. Un schéma "CPU Limits, il se passe quoi sous le capôt ?" présenté en arrière plan.](cpu-throlling.webp) 213 213 214 214 > Je ne connaissais pas l'implémentation du throttling de CPU dans les cgroups Linux, et je comprends donc maintenant mieux pourquoi mettre une limite de CPU sur un pod est une FBI (Fausse Bonne Idée). Je partageais cet avis mais pour d'autres raisons (en particulier la possibilité de Burst le CPU si besoin vu que des ressources sont peut-être disponibles sur la machine), donc ça fait une corde de plus à mon arc d'arguments. 215 215 ··· 218 218 Enfin, ils ont présenté la notion de _PriorityClasses_, que je ne connaissais pas. Ces classes arbitraires (définies par l'utilisateur), permettent de prioriser le scheduling des pods (c'est bien nommé), et donc d'aller occuper des ressources qui pourraient être réclamées d'autres pods plus prioritaires. 219 219 Denis a d'ailleurs cité un cas d'usage d'un Jobs en tâche de fond, qui occupent des ressources et qui sont dé-schedulés si un autre workload en a besoin. 220 220 221 - > En discutant avec mon voisin Guillaume Moirod pendant cette partie, il m'a évoqué un cas d'usage que je qualifierait de génie, en couplant un Pod _placeholder_ à priorité très faible, qui vient forcer les cluster auto-scalers à créer des nodes, en prévision de jobs qui seraient poussés par un GitLab Runner. On "pré-chaufferai" ici des nodes, pour booster les temps de démarrage des jobs. Il faut que j'écrive un post sur ce sujet ! 221 + > En discutant avec mon voisin Guillaume Moirod pendant cette partie, il m'a évoqué un cas d'usage que je qualifierait de génie, en couplant un Pod _placeholder_ à priorité très faible, qui vient forcer les cluster auto-scalers à créer des nodes, en prévision de jobs qui seraient poussés par un GitLab Runner. On "pré-chaufferai" ici des nodes, pour booster les temps de démarrage des jobs. Il faut que j'écrive un post sur ce sujet ! 222 222 223 223 > Un de mes talks préférés de cette conférence, et la complicité des deux speakers et leur humour (dont on ne sait pas s'il est prévu ou improvisé) m'a beaucoup fait rire. 224 224
+29 -29
content/posts/2025/2025-10-25-cloud-nord/index.md
··· 8 8 9 9 Le 23 octobre dernier, c'était la 6ème édition de [Cloud Nord](https://cloudnord.fr). 10 10 11 - Je suis un fidèle de cette conférence depuis longtemps. J'avais loupé la première édition qui avait eu lieu pendant le confinement en visio, mais j'y ai assisté dès la deuxième édition. J'ai été speaker lors de la 4ème édition, (avec mon talk ["Laissez tomber vos Dockerfile, adoptez un buildpack !"]({{<relref "talks/talk-laissez-tomber-vos-dockerfile-adoptez-un-buildpack">}})) puis depuis l'année dernière, j'en suis un des organisateurs. 11 + Je suis un fidèle de cette conférence depuis longtemps. J'avais loupé la première édition qui avait eu lieu pendant le confinement en visio, mais j'y ai assisté dès la deuxième édition. J'ai été speaker lors de la 4ème édition, (avec mon talk ["Laissez tomber vos Dockerfile, adoptez un buildpack !"]({{<relref "talks/talk-laissez-tomber-vos-dockerfile-adoptez-un-buildpack">}})) puis depuis l'année dernière, j'en suis un des organisateurs. 12 12 13 13 Ce jeudi 23 octobre 2025, j'ai eu l'honneur de faire l'ouverture de la journée pour accueillir les participants (après une mini-game de Factorio en patientant, on ne se refait pas). 14 14 ··· 18 18 19 19 ## Ce sont les bénévoles qui vont vivre la conférence 20 20 21 - Je commence cet article par un point qui est souvent oublié ou méconnu : la plupart des conférences sont organisées par des bénévoles, et c'est aussi le cas de Cloud Nord. 21 + Je commence cet article par un point qui est souvent oublié ou méconnu : la plupart des conférences sont organisées par des bénévoles, et c'est aussi le cas de Cloud Nord. 22 22 23 23 Nous (les orgas) ne nous rémunérons pas avec l'argent des sponsorings et de la billetterie. Tout le temps que nous passons à organiser la conférence se fait sur notre temps perso, ou sur notre temps pro si nos entreprises soutiennent la démarche. 24 24 Pour ma part, c'est mon statut de freelance qui me permet d'y investir beaucoup de temps. ··· 48 48 Nous nous sommes plusieurs fois posés la question si Cloud Nord aurait lieu cette année. 49 49 L'édition 2024 avait coûté pas loin de 60k€, trouver ces financements en six mois avec le contexte actuel semblait compromis. 50 50 51 - ### Est né : "Cloud Nord lite" 51 + ### Est né : "Cloud Nord lite" 52 52 53 - Après pas mal de discussions entre nous, et des échanges avec les autres conférences locales (l'AgiLille particulièrement) pour connaître leur budget, nous avons décidé de partir sur une édition de Cloud Nord "lite" : budget réduit (on a ciblé entre 15 et 20k€) et donc moins de partenaires sponsors à aller chercher. 53 + Après pas mal de discussions entre nous, et des échanges avec les autres conférences locales (l'AgiLille particulièrement) pour connaître leur budget, nous avons décidé de partir sur une édition de Cloud Nord "lite" : budget réduit (on a ciblé entre 15 et 20k€) et donc moins de partenaires sponsors à aller chercher. 54 54 55 - Le budget 2024 de Cloud Nord était grosso-modo découpé comme ceci : 55 + Le budget 2024 de Cloud Nord était grosso-modo découpé comme ceci : 56 56 57 - * 26k€ pour la location des salles et de l'atrium d'EuraTechnologies ; 58 - * 16k€ pour la captation vidéo dans les différentes salles ; 59 - * 15k€ pour la restauration (petit dèj, dèj, goûter et after) pour les 400 participants ; 60 - * 2k€ pour le dîner des speakers (pour une 40aine de personnes) ; 57 + * 26k€ pour la location des salles et de l'atrium d'EuraTechnologies ; 58 + * 16k€ pour la captation vidéo dans les différentes salles ; 59 + * 15k€ pour la restauration (petit dèj, dèj, goûter et after) pour les 400 participants ; 60 + * 2k€ pour le dîner des speakers (pour une 40aine de personnes) ; 61 61 * 1.5€ en prestations diverses (photos et sous-titrage). 62 62 63 63 Pour faire une édition à budget réduit, pas le choix, il faut quitter EuraTechnologies, qui représente 1/3 du budget 2024. 64 64 65 - Nous avons alors envisagé plusieurs options : 65 + Nous avons alors envisagé plusieurs options : 66 66 67 67 * des cinémas comme le faisait le DevFest de Lille (au Kinépolis) 68 68 * une école ou université (comme le fait l'AgiLille) ··· 70 70 Nous avons pu rapidement visiter les locaux de l'Université Catholique de Lille, qui nous a proposé plusieurs options, dans leurs différents bâtiments. Nous cherchions un hall pour pouvoir accueillir 6 à 8 stands, et 250 à 300 personnes, et 1 ou 2 salles de type amphithéatre pour pouvoir y tenir les conférences. 71 71 72 72 Nous sommes tombés sous le charme des locaux de la Faculté de Droit (bâtiment Robert Schuman), un hall suffisamment spacieux pour nos stands, et deux jolis amphithéâtres de cours, avec des sièges confortables. 73 - Et du point de vue du budget, les tarifs sont imbattables : moins de 4k€ pour la location du hall et des salles. 73 + Et du point de vue du budget, les tarifs sont imbattables : moins de 4k€ pour la location du hall et des salles. 74 74 75 75 Cloud Nord 2025 pourrait avoir lieu. 76 76 ··· 81 81 D'autres communications seront faites sur notre budget 2025 (je veux pousser une démarche de transparence, mais ça prend du temps d'écrire tout ça, pour rappel nous sommes bénévoles 😅). 82 82 Il me semblait néanmoins intéressant dans cet article de détailler un peu quelques points "pognon". 83 83 84 - ### Combien ça coûte Cloud Nord ? 84 + ### Combien ça coûte Cloud Nord ? 85 85 86 - Voici notre budget pour cette édition 2025 : 86 + Voici notre budget pour cette édition 2025 : 87 87 88 - * 4k€ pour la location du hall et des 2 amphis de l'Université Catholique De Lille ; 89 - * 8k€ pour la restauration (petit dèj, dèj, goûter et after) pour les 250 participants ; 88 + * 4k€ pour la location du hall et des 2 amphis de l'Université Catholique De Lille ; 89 + * 8k€ pour la restauration (petit dèj, dèj, goûter et after) pour les 250 participants ; 90 90 * 1500€ pour le dîner des speakers. 91 91 92 - Vous l'avez compris, environ 14k€ pour accueillir 250 personnes, en comparaison aux 60k€ pour accueillir 400 personnes l'année précédente, nous avons fait des économies ! 92 + Vous l'avez compris, environ 14k€ pour accueillir 250 personnes, en comparaison aux 60k€ pour accueillir 400 personnes l'année précédente, nous avons fait des économies ! 93 93 Donc dans le doute, nous sommes partis sur un budget très serré, en nous disant qu'au pire, on pourrait ajouter des dépenses supplémentaires. 94 94 Étant donné que le lieu nous a coûté réellement très peu cher, nous avons pu garder une restauration de qualité (c'est important pour les participants de bien manger, et la qualité des repas de notre nouveau prestataire a beaucoup plu). 95 95 96 - Au fur et à mesure de l'arrivée des ventes de packs de sponsoring, avec le budget qui s'éclaircit, on a pu activer des dépenses supplémentaires : 96 + Au fur et à mesure de l'arrivée des ventes de packs de sponsoring, avec le budget qui s'éclaircit, on a pu activer des dépenses supplémentaires : 97 97 98 - * 1000€ pour le photographe ; 98 + * 1000€ pour le photographe ; 99 99 * 1000€ de goodies. 100 100 101 101 Ce sont clairement des choses auxquelles nous avions renoncé au départ, et c'est une bonne surprise que nous ayons pu prendre un photographe, qui nous a également réalisé l'after-movie (qui arrivera bientôt sur notre chaine Youtube). ··· 106 106 107 107 Le poste "Captation Vidéo" a disparu de notre budget entre les éditions 24 et 25. Pour assurer cette édition avec le financement de seulement six sponsors physiques (le hall pouvant uniquement accueillir six stands tout juste), il semblait impossible de pouvoir financer une captation en gardant des tarifs de sponsoring corrects. 108 108 109 - ### Comment on finance tout ça ? 109 + ### Comment on finance tout ça ? 110 110 111 111 Pour assumer ces coûts, il nous faut le soutien financier de sponsors, sans qui la journée ne peut pas avoir lieu. 112 - La contrepartie est simple : les sponsors amène le financement de la conférence, on leur fait de la comm et ils peuvent discuter avec les participants le jour J (quel que soit leur objectif) et participer à la conf. 112 + La contrepartie est simple : les sponsors amène le financement de la conférence, on leur fait de la comm et ils peuvent discuter avec les participants le jour J (quel que soit leur objectif) et participer à la conf. 113 113 114 - Pour financer ces 16k€, nous avons découpé notre sponsoring comme suit : 114 + Pour financer ces 16k€, nous avons découpé notre sponsoring comme suit : 115 115 116 116 * 6 packs "physiques" à 1500€ pièce 117 117 * des packs "digital" à 750€ (en espérant en vendre 2 ou 3 au moins) ··· 126 126 Si vous êtes forts en calcul, vous aurez compris qu'on a donc eu environ 20k€ de recettes, et 16k€ de dépenses, il reste donc 4k€. 127 127 Cet argent n'ira bien entendu pas dans nos poches, mais servira de trésorerie de départ pour la prochaine édition. Cela nous permettra de pouvoir payer les premières dépenses de l'organisation avant de recevoir l'argent des sponsors, ce qui nous apportera de la sérénité (parce qu'on n'a pas envie de devoir jongler entre les factures, ou d'avancer des frais). 128 128 129 - Cette aisance budgétaire nous permettra plusieurs choses dont nous (orgas) discuterons pour la prochaine édition : 129 + Cette aisance budgétaire nous permettra plusieurs choses dont nous (orgas) discuterons pour la prochaine édition : 130 130 131 131 * revenir sur un format plus important (peu probable) 132 132 * payer un barista pour avoir des cafés haut de gamme (comme c'est fait à DevOxx) ··· 154 154 Pour regrouper toutes nos informations pratiques, nous avons aussi publié un nouveau site web vitrine, qui contient notre programme, les informations sur le lieu, les speakers, etc. 155 155 Nous avons forké le site web de Sunny Tech, adapté à nos couleurs (il reste un flammy 🦩 sur la page 404), et déployé tout sur une instance gratuite Firebase en utilisant un peu de Terraform et des GitHub Actions. 156 156 Je pense que j'ai dû passer au total une bonne semaine sur le site, entre la mise en place initiale, l'adaptation du thème et du contenu, et la mise en place du planning. 157 - Le site est d'ailleurs sur GitHub pour les curieux : https://github.com/cloud-nord/website-v2. 157 + Le site est d'ailleurs sur GitHub pour les curieux : https://github.com/cloud-nord/website-v2. 158 158 159 - Même après la conférence, le site doit être mis à jour : désactivation de la billetterie, publication des liens vers les feedbacks et les vidéos, etc. 159 + Même après la conférence, le site doit être mis à jour : désactivation de la billetterie, publication des liens vers les feedbacks et les vidéos, etc. 160 160 La prochaine mise à jour aura lieu lorsque nous aurons les photos officielles et l'after-movie. 161 161 162 162 Ensuite cette version du site sera archivé et cèdera sa place à la version 2026, probablement au mois d'avril/mai, lorsque nous aurons décidé des premiers points (date et lieu principalement). ··· 207 207 208 208 Toute l'équipe était d'accord pour que ce soit votre serviteur qui prenne la parole pour l'ouverture de la journée. C'est un exercice avec lequel je suis à l'aise, et que j'apprécie beaucoup. Donc j'avais passé un peu de temps à préparer les slides de présentation de l'ouverture de journée. 209 209 Notre keynote d'ouverture s'étant décommandé quelques jours avant (le vendredi juste avant), il nous fallait meubler le créneau d'ouverture, j'ai donc travaillé une présentation d'ouverture de journée qui tiendrait en 20 minutes. 210 - Les slides sont disponibles ici : [Ouverture de journée Cloud Nord 2025.pdf](ouverture-de-journee-cloud-nord-2025.pdf) 210 + Les slides sont disponibles ici : [Ouverture de journée Cloud Nord 2025.pdf](ouverture-de-journee-cloud-nord-2025.pdf) 211 211 212 212 Prendre la parole de bon matin devant ce public, c'était clairement mon kiff de la journée. 213 213 ··· 215 215 216 216 En l'absence de captation professionnelle, et comme j'ai un peu de matos pour mon setup de télétravail (comprendre une webcam et un micro qui ne sont pas ceux de mon ordinateur portable), je me suis proposé d'improviser la captation d'une des salles. Maxime suivi avec son matos perso. 217 217 218 - Pour l'occasion, j'ai donc préparé un de mes NUC pour pouvoir y faire l'enregistrement : un linux tout propre, un OBS tout propre avec quelques scènes pré-paramétrées et suffisamment d'espace disque pour enregistrer la journée. 218 + Pour l'occasion, j'ai donc préparé un de mes NUC pour pouvoir y faire l'enregistrement : un linux tout propre, un OBS tout propre avec quelques scènes pré-paramétrées et suffisamment d'espace disque pour enregistrer la journée. 219 219 Le but étant de minimiser le temps de montage à la fin, et de faire le maximum en live sur OBS. 220 220 221 221 J'ai également acheté (sur le compte de ma société) une carte acquisition vidéo, des câbles HDMI et USB-C longs (10m), donc 250€ de matos environ. ··· 241 241 242 242 ### Les vidéos 243 243 244 - Même si on a essayé de capter les vidéos avec pour objectif de minimiser le travail après-coup, il faut faire un peu de travail de montage : cut avant/après, ajustement du son, et intégration d'une intro et d'un outro. 244 + Même si on a essayé de capter les vidéos avec pour objectif de minimiser le travail après-coup, il faut faire un peu de travail de montage : cut avant/après, ajustement du son, et intégration d'une intro et d'un outro. 245 245 246 246 Pour l'outro, j'ai repris la vidéo que nous avions diffusé sur les écrans le jour J, à laquelle j'ai ajouté une musique de fond libre de droits. Pour les intros j'ai repris les petites vidéos Remotion qui sont générés dans OpenPlanner, et que nous avons utilisé pour la comm des talks sur nos résaux. 247 247 ··· 254 254 255 255 J'ai passé environ une quinzaine d'heures (sur 2 jours) pour tout faire. Je voulais faire ça le plus rapidement possible pour être tranquille. 256 256 257 - Les vidéos sont disponibles sur Youtube : https://www.youtube.com/playlist?list=PLVQhat0Bx0WB-fhbbQ0bQkhfTLAZIU2IU 257 + Les vidéos sont disponibles sur Youtube : https://www.youtube.com/playlist?list=PLVQhat0Bx0WB-fhbbQ0bQkhfTLAZIU2IU 258 258 259 259 ![Screenshot de la playlist youtube de Cloud Nord 2025](playlist-youtube.webp) 260 260 ··· 271 271 272 272 Car oui, dès février, nous allons reprendre le travail sur l'organisation de la prochaine édition, avec la troisième édition du Ch'ti Tremplin, qui cette année se fera avec le DevLille et l'AgiLille. 273 273 274 - Vu les feedbacks que nous avons eus de cette édition 2025, aussi bien des sponsors, des speakers, et des participants, il est vraisemblable que Cloud Nord 2026 soit de la même formule : une conf sur 2 tracks, toujours ciblée sur les sujets tech pointus, avec un public peut être un peu plus nombreux (300 personnes au lieu de 250). 274 + Vu les feedbacks que nous avons eus de cette édition 2025, aussi bien des sponsors, des speakers, et des participants, il est vraisemblable que Cloud Nord 2026 soit de la même formule : une conf sur 2 tracks, toujours ciblée sur les sujets tech pointus, avec un public peut être un peu plus nombreux (300 personnes au lieu de 250). 275 275 276 276 Mais tout ça, on en reparlera l'année prochaine 👋
+15 -15
content/posts/2025/2025-11-22-50ndk-livre-denis-germain/index.md
··· 6 6 - kubernetes 7 7 --- 8 8 9 - Il y a quelques semaines, Denis Germain (aka [Zwindler](https://blog.zwindler.fr/) sur les internets), m'a fait parvenir un exemplaire de son livre fraîchement paru : [Kubernetes : 50 solutions pour les postes de développement et les clusters de production](https://www.editions-eyrolles.com/livre/kubernetes). 9 + Il y a quelques semaines, Denis Germain (aka [Zwindler](https://blog.zwindler.fr/) sur les internets), m'a fait parvenir un exemplaire de son livre fraîchement paru : [Kubernetes : 50 solutions pour les postes de développement et les clusters de production](https://www.editions-eyrolles.com/livre/kubernetes). 10 10 11 11 L'expertise de Denis sur Kubernetes n'est plus à prouver, c'est son sujet de prédilection, et j'assiste systématiquement à ses conférences quand j'en ai l'occasion (fanboy mode 😁). 12 12 Je suis content qu'il ait proposé de m'envoyer un exemplaire de son livre, si tu lis ces lignes Denis, merci 😊 ··· 23 23 24 24 C'est le cas. 25 25 26 - Sans forcément chercher l'exhaustivité, la sélection de Denis couvre tous les usages qu'on pourrait imaginer : depuis le poste de travail, jusqu'à des usages de production, en passant par des solutions "alien" 👽 parfois originales. 27 - Pour nous guider dans la lecture, les 300 pages du livre sont structurées en 7 grandes parties (chapitres) : 26 + Sans forcément chercher l'exhaustivité, la sélection de Denis couvre tous les usages qu'on pourrait imaginer : depuis le poste de travail, jusqu'à des usages de production, en passant par des solutions "alien" 👽 parfois originales. 27 + Pour nous guider dans la lecture, les 300 pages du livre sont structurées en 7 grandes parties (chapitres) : 28 28 29 29 * les solutions destinées aux développeurs, installables sur leur machine, que Denis a regroupé sur le nom "Outils de type Desktop" 30 30 * les solutions managées par des opérateurs Cloud ··· 36 36 37 37 Dans chaque chapitre, on va donc retrouver une courte intro qui explique le but de ce regroupement de ces solutions, puis un sous-chapitre pour chacune d'entre elles, ainsi qu'une courte conclusion. 38 38 39 - Chaque solution est présentée en suivant la même structure : 39 + Chaque solution est présentée en suivant la même structure : 40 40 41 41 * un tableau récapitulatif de l'outil (systèmes supportés, licence, etc.) 42 - * une courte description ainsi que les pré-requis à l'installation ; 43 - * l'installation en elle-même à la manière d'un tutoriel ; 44 - * des pistes, liens et conseils pour aller plus loin ; 42 + * une courte description ainsi que les pré-requis à l'installation ; 43 + * l'installation en elle-même à la manière d'un tutoriel ; 44 + * des pistes, liens et conseils pour aller plus loin ; 45 45 * un tableau récapitulatif des avantages et inconvénients de l'outil. 46 46 47 47 Cette structure permet de rapidement comprendre à quel usage convient chaque solution, et l'écriture sous forme de tutoriel détaillés (ligne de commande, consoles et autres screenshots) permet de rapidement mettre le pied à l'étrier. ··· 57 57 58 58 Je me suis un peu moins concentré sur les autres chapitres, car ils couvrent des domaines sur lesquels je n'ai pas de besoin, ou en dehors de mon expertise. Mais si l'envie me prend de bidouiller, je sais que j'y trouverai la matière pour pouvoir tester et installer une solution. 59 59 60 - ## À qui s'est destiné ? 60 + ## À qui s'est destiné ? 61 61 62 62 Ce livre ne s'adresse clairement pas aux débutants sur Kubernetes. 63 63 Bien que Denis rappelle rapidement les concepts principaux de kube en intro, le but n'est pas d'apprendre Kubernetes, ses concepts et ses usages. ··· 72 72 73 73 ## Mes solutions prefs 74 74 75 - Forcément, en parcourant les différentes solutions, je suis tombé sur des solutions que j'utilise régulièrement : Minikube (qui est certes un peu lourd, mais fait bien le job), k3s qui tourne sur certaines machines que j'ai chez moi, Docker Desktop et Rancher Desktop que j'utilise parfois chez mes clients, ainsi que les différentes offres managées, et l'incontournable OpenTofu. 75 + Forcément, en parcourant les différentes solutions, je suis tombé sur des solutions que j'utilise régulièrement : Minikube (qui est certes un peu lourd, mais fait bien le job), k3s qui tourne sur certaines machines que j'ai chez moi, Docker Desktop et Rancher Desktop que j'utilise parfois chez mes clients, ainsi que les différentes offres managées, et l'incontournable OpenTofu. 76 76 77 - Mais j'ai aussi découvert (ou redécouvert) des implémentations auxquelles je n'avais jamais prêté attention et que je vais rapidement tester : _kind_ (Kubernetes IN Docker), que j'ai déjà installé sur mon poste de travail principal (il n'y a plus qu'à jouer avec pour mon prochain projet); 77 + Mais j'ai aussi découvert (ou redécouvert) des implémentations auxquelles je n'avais jamais prêté attention et que je vais rapidement tester : _kind_ (Kubernetes IN Docker), que j'ai déjà installé sur mon poste de travail principal (il n'y a plus qu'à jouer avec pour mon prochain projet); 78 78 79 79 J'adore aussi le principe de KWOK (Kubernetes WithOut Kubelet) qui consiste à simuler le comportement d'un cluster. 80 80 Comme Denis, je pense que ça peut être très pratique pour tester le bon fonctionnement de topologies, contraintes de ressources, charts Helms, etc. 81 - Je testerai probablement mes charts Helms sur cette implémentation à l'avenir (peut-être même directement dans une CI, qui sait ? 🤫) 81 + Je testerai probablement mes charts Helms sur cette implémentation à l'avenir (peut-être même directement dans une CI, qui sait ? 🤫) 82 82 83 83 Mention spéciale pour la dernière solution présentée, qui n'est autre que le contenu du talk de Denis "Démystifions Kubernetes, binaire par binaire". 84 84 Il ajoute également en référence la vidéo de cette conférence captée à Cloud Nord 2023 (j'étais dans la salle ce jour là 💙). ··· 96 96 97 97 Je pense que j'aurai aimé avoir directement dans le livre un tableau sous forme d'index, qui reprend l'ensemble des solutions avec tous les tableaux récapitulatifs détaillés en en-tête de chapitre (type d'outil, compatibilité, production-ready, etc.). 98 98 Cela permettrait de pouvoir trouver rapidement une solution en fonction d'un besoin particulier. 99 - Denis a néanmoins publié ce genre de tableau dans un article de blog il y a quelques semaines : [93 façons de déployer Kubernetes : j'ai recensé (presque) toutes les méthodes existantes](https://blog.zwindler.fr/2025/11/02/93-facons-de-deployer-kubernetes/). 99 + Denis a néanmoins publié ce genre de tableau dans un article de blog il y a quelques semaines : [93 façons de déployer Kubernetes : j'ai recensé (presque) toutes les méthodes existantes](https://blog.zwindler.fr/2025/11/02/93-facons-de-deployer-kubernetes/). 100 100 101 101 Si vous restez sur votre faim par rapport à une solution particulière, Denis fournit les liens et pointeurs (souvent vers la documentation officielle des outils) pour pouvoir "Aller plus loin" (du nom de la section dans chaque sous-chapitre). 102 102 Cette section est parfois un peu légère, mais une fois la phase "tuto" passée, il est courant de se plonger dans la documentation officielle, donc rien de très surprenant en fait. ··· 114 114 115 115 Le travail qu'a fait Denis sur ce livre est impressionnant, bravo à lui. 116 116 117 - ## Où l'acheter ? 117 + ## Où l'acheter ? 118 118 119 - C'est dispo sur toutes les bonnes plateformes au prix de 37€, je vous remets ici les liens vers mes préférées : 119 + C'est dispo sur toutes les bonnes plateformes au prix de 37€, je vous remets ici les liens vers mes préférées : 120 120 121 121 * Sur le site de l'éditeur [Eyrolles](https://www.eyrolles.com/Informatique/Livre/kubernetes-9782416022647/), en version papier ou numérique 122 122 * [Fnac](https://www.fnac.com/a21789006/Denis-Germain-Kubernetes) 123 123 * [Furet du Nord](https://www.furet.com/livres/kubernetes-denis-germain-9782416022647.html) 124 124 * [Cultura](https://www.cultura.com/p-kubernetes-50-solutions-pour-les-postes-de-developpement-et-les-clusters-de-production-9782416022647.html) 125 125 126 - Bonne lecture ! 126 + Bonne lecture !
+7 -7
content/posts/2025/2025-11-29-devfest-lyon/index.md
··· 18 18 19 19 ![Photo de Mickaël et Margaux pour l'ouverture de la journée](ouverture.webp) 20 20 21 - C'est maintenant le cas, et quel DevFest ! 21 + C'est maintenant le cas, et quel DevFest ! 22 22 23 23 Sold-out plus d'un mois à l'avance, 314 propositions reçues au CFP pour 16 créneaux de talk, on voit que le public Lyonnais était en attente de cet événement. 24 24 ··· 26 26 27 27 La traditionnelle soirée des speakers s'est déroulée au bar à vin "Les Canailles de Raphaël". 28 28 29 - On a pu y rencontrer l'équipe des orgas au grand complet, ainsi que les bénévoles, la photographe et les 2 MC (maîtres de cérémonie) venus aider pour animer la journée : Estelle Landry et Mathieu Mure. 29 + On a pu y rencontrer l'équipe des orgas au grand complet, ainsi que les bénévoles, la photographe et les 2 MC (maîtres de cérémonie) venus aider pour animer la journée : Estelle Landry et Mathieu Mure. 30 30 Je pense que c'est une bonne idée d'inviter toute l'équipe ainsi que les bénévoles qui contribuent à la réussite de la journée. C'est une belle manière de récompenser les personnes pour leur investissement personnel. Nous avons eu la même approche cette année à Cloud Nord, nous y avions invité les bénévoles qui avaient contribués aux CFP, la démarche avait été aussi appréciée. 31 31 32 32 La soirée des speakers est toujours un moment privilégié (et traditionnel). J'étais très content de croiser les autres speakers, dont certain que je connaissais déjà, et pouvoir en rencontrer d'autres que j'avais simplement aperçu lors d'autres confs 😊. 33 33 34 34 Pour le jour J, une salle speakers nous a été mise à disposition, avec boissons, bonbons, brioche à la praline (miam). 35 - Nous avons également eu le droit à un shooting photo personnel (hâte de recevoir ma future photo de profil 💙) ainsi qu'à un petit cadeau pour nous tenir chaud dans les soirées d'hiver qui approchent : un joli plaid brandé "DevFest Lyon". 35 + Nous avons également eu le droit à un shooting photo personnel (hâte de recevoir ma future photo de profil 💙) ainsi qu'à un petit cadeau pour nous tenir chaud dans les soirées d'hiver qui approchent : un joli plaid brandé "DevFest Lyon". 36 36 37 37 ![Le plaid DevFest Lyon](plaid.webp) 38 38 ··· 40 40 41 41 ## La barre est mise très haute 42 42 43 - Concernant le jour J, un seul mot : Bravo. 43 + Concernant le jour J, un seul mot : Bravo. 44 44 45 45 De mon point de vue, l'organisation est impeccable. L'équipe a pensé à tout. 46 46 ··· 62 62 63 63 Les MC animent parfaitement les transitions entre les talks, et sont aux petits soins pour aider à l'installation sur scène, apporter bouteille d'eau et vérifier que tout va bien. Un grand merci à Estelle qui a fait mon intro 💙. Ça aide vraiment à démarrer un talk dans les meilleures conditions, et à évacuer le stress en détendant l'atmosphère avec quelques blagues bien ciblées 😅. 64 64 65 - La sélection des talks est solide (et je dis pas ça parce que j'en fait partie 😅), toutes les speakeuses et tous les speakers ont assuré. Je ne fais pas le récap des confs que j'ai vues hier, mais chacune d'entre elles était impeccable, bravo à toutes et à tous ! 65 + La sélection des talks est solide (et je dis pas ça parce que j'en fait partie 😅), toutes les speakeuses et tous les speakers ont assuré. Je ne fais pas le récap des confs que j'ai vues hier, mais chacune d'entre elles était impeccable, bravo à toutes et à tous ! 66 66 67 67 Le public est souriant, bienveillant, et généreux en feedbacks et discussions. L'ambiance globale de ce DevFest est définitivement très (très) sympa. 68 68 69 - ![Les feedbacks de mon talk !](feedbacks.webp) 69 + ![Les feedbacks de mon talk !](feedbacks.webp) 70 70 71 71 Le traiteur local a proposé une nourriture très bonne et variée (mention spéciale aux ravioles 😋). 72 72 ··· 81 81 82 82 Bravo à toute l'équipe, aux MC et aux bénévoles, et aux sponsors pour leur soutien. 83 83 84 - Bravo aux speakeuses et aux speakers pour vos talks, et merci pour les échanges que j'ai pu avoir avec certains d'entre vous, j'ai hâte de vous recroiser à d'autres événements ! 84 + Bravo aux speakeuses et aux speakers pour vos talks, et merci pour les échanges que j'ai pu avoir avec certains d'entre vous, j'ai hâte de vous recroiser à d'autres événements ! 85 85 86 86 Merci pour l'accueil incroyable à Lyon, et à l'année prochaine 💙 87 87
+3 -3
content/posts/2025/2025-12-05-openrewrite-spring-boot-4/v1/index.md
··· 16 16 Le code de ce projet est écrit en Spring Boot 3 et Java 25. 17 17 Avec la sortie récente de Spring Boot 4, je voulais faire la montée de version de ce projet rapidement. 18 18 19 - Pour ça, j'ai donc deux possibilités : soit je fais la montée de version à la main, soit j'utilise un outil pour le faire automatiquement. 19 + Pour ça, j'ai donc deux possibilités : soit je fais la montée de version à la main, soit j'utilise un outil pour le faire automatiquement. 20 20 21 21 J'en ai donc profité pour tester OpenRewrite. 22 22 ··· 33 33 34 34 Une [recette de migration Spring Boot 4](https://docs.openrewrite.org/recipes/java/spring/boot4/upgradespringboot_4_0-community-edition) est disponible pour la version communautaire. 35 35 36 - En parcourant le code de la recette sur [Github](https://github.com/openrewrite/rewrite-spring/blob/main/src/main/resources/META-INF/rewrite/spring-boot-40.yml), il semble que la recette fait une grande partie de ce qui est indiqué dans le guide de migration de Spring : 36 + En parcourant le code de la recette sur [Github](https://github.com/openrewrite/rewrite-spring/blob/main/src/main/resources/META-INF/rewrite/spring-boot-40.yml), il semble que la recette fait une grande partie de ce qui est indiqué dans le guide de migration de Spring : 37 37 38 38 * la montée de version du pom `spring-boot-starter-parent` 39 39 * les modifications liées aux changements de coordonnées de certains artifacts maven ··· 41 41 * la mise à jour des properties dépréciées 42 42 * la mise à jour vers testcontainers 2 43 43 44 - La recette prend la forme d'un fichier YAML, et elle est accompagnée de code qui implémente les différentes transformations : 44 + La recette prend la forme d'un fichier YAML, et elle est accompagnée de code qui implémente les différentes transformations : 45 45 46 46 > Je ne rentre pas dans les détails du fonctionnement d'OpenRewrite, allez voir le talk de Jérôme Tama indiqué plus haut pour plus d'informations. 47 47
+12 -12
content/posts/2025/2025-12-05-openrewrite-spring-boot-4/v2/index.fr.md
··· 15 15 Le code de ce projet est écrit en Spring Boot 3 et Java 25. 16 16 Avec la sortie récente de Spring Boot 4, je voulais faire la montée de version de ce projet rapidement. 17 17 18 - Pour ça, j'ai donc deux possibilités : soit je fais la montée de version à la main, soit j'utilise un outil pour le faire automatiquement. 18 + Pour ça, j'ai donc deux possibilités : soit je fais la montée de version à la main, soit j'utilise un outil pour le faire automatiquement. 19 19 20 20 J'en ai donc profité pour tester OpenRewrite. 21 21 ··· 32 32 33 33 Une [recette de migration Spring Boot 4](https://docs.openrewrite.org/recipes/java/spring/boot4/upgradespringboot_4_0-community-edition) est disponible pour la version communautaire. 34 34 35 - En parcourant le code de la recette sur [Github](https://github.com/openrewrite/rewrite-spring/blob/main/src/main/resources/META-INF/rewrite/spring-boot-40.yml), il semble que la recette fait une grande partie de ce qui est indiqué dans le guide de migration de Spring : 35 + En parcourant le code de la recette sur [Github](https://github.com/openrewrite/rewrite-spring/blob/main/src/main/resources/META-INF/rewrite/spring-boot-40.yml), il semble que la recette fait une grande partie de ce qui est indiqué dans le guide de migration de Spring : 36 36 37 37 * la montée de version du pom `spring-boot-starter-parent` 38 38 * les modifications liées aux changements de coordonnées de certains artifacts maven ··· 44 44 > [!INFO] 45 45 > La recette évolue régulièrement, donc peut-être qu'elle fait encore plus de choses au moment où vous lisez cet article. 46 46 47 - La recette prend la forme d'un fichier YAML, et elle est accompagnée de code qui implémente les différentes transformations : 47 + La recette prend la forme d'un fichier YAML, et elle est accompagnée de code qui implémente les différentes transformations : 48 48 49 49 > Je ne rentre pas dans les détails du fonctionnement d'OpenRewrite, allez voir le talk de Jérôme Tama indiqué plus haut pour plus d'informations. 50 50 ··· 123 123 newArtifactId: spring-boot-starter-aspectj 124 124 ``` 125 125 126 - La doc d'OpenRewrite indique qu'on peut utiliser une simple commande _Maven_ pour effectuer la migration : 126 + La doc d'OpenRewrite indique qu'on peut utiliser une simple commande _Maven_ pour effectuer la migration : 127 127 128 128 ```shell 129 129 mvn -U org.openrewrite.maven:rewrite-maven-plugin:run \ ··· 134 134 135 135 > Plutôt pratique, car je n'aurai pas à modifier mon `pom.xml`, ni ajouter de fichier de configuration dans mon projet pour pouvoir effectuer cette migration en one-shot. 136 136 137 - L'exécution de la commande prend quelques secondes et affiche les opérations effectuées (j'ai beaucoup nettoyé les logs pour que ce soit plus lisible) : 137 + L'exécution de la commande prend quelques secondes et affiche les opérations effectuées (j'ai beaucoup nettoyé les logs pour que ce soit plus lisible) : 138 138 139 139 ```shell 140 140 [INFO] --- rewrite:6.25.0:run (default-cli) @ gitlab-classrooms --- ··· 174 174 [INFO] ------------------------------------------------------------------------ 175 175 ``` 176 176 177 - OpenRewrite semble s'être correctement exécuté et indique que plusieurs fichiers ont été modifiés. Un `git status` permet de se rendre compte de ce qui a été impacté : 177 + OpenRewrite semble s'être correctement exécuté et indique que plusieurs fichiers ont été modifiés. Un `git status` permet de se rendre compte de ce qui a été impacté : 178 178 179 179 ```shell 180 180 git status ··· 205 205 * les fichiers de configuration properties (certaines properties ont été renommées) 206 206 * les fichiers de test (surtout pour la dépréciation de `@MockBean` et `@SpyBean`) 207 207 208 - Un `git diff` permet de vérifier tout ça : 208 + Un `git diff` permet de vérifier tout ça : 209 209 210 210 ```shell 211 211 git diff pom.xml ··· 286 286 287 287 La nouvelle architecture modulaire de Spring Boot 4 a bien été traitée. 288 288 289 - Le code de tests a aussi bien été nettoyé des anciens `@MockBean` dépréciés : 289 + Le code de tests a aussi bien été nettoyé des anciens `@MockBean` dépréciés : 290 290 291 291 ```text 292 292 @@ -37,10 +37,10 @@ class ClassroomControllerMVCTest { ··· 324 324 import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest; 325 325 ``` 326 326 327 - car cette classe a été déplacée dans un autre package : 327 + car cette classe a été déplacée dans un autre package : 328 328 329 329 ```java 330 330 import org.springframework.boot.security.autoconfigure.actuate.web.servlet.EndpointRequest; ··· 332 332 333 333 Une fois ces petits ajustements faits, je lance mes tests unitaires. 334 334 335 - Cette fois-ci, j'obtiens un message d'erreur lié à Spring Security au démarrage : 335 + Cette fois-ci, j'obtiens un message d'erreur lié à Spring Security au démarrage : 336 336 337 337 ```text 338 338 Caused by: java.lang.IllegalArgumentException: pattern must start with a / ··· 340 340 341 341 Je n'avais pas fait attention à cette modification dans les guides de migration, donc je suis peut-être passé à travers. Quoi qu'il en soit, ce n'est pas une modification très compliquée, je l'ai facilement appliquée. 342 342 343 - Une fois ces derniers ajustements faits, les tests passent correctement 🎉 : 343 + Une fois ces derniers ajustements faits, les tests passent correctement 🎉 : 344 344 345 - ![Screenshot de mes tests unitaires qui passent !](tests.webp) 345 + ![Screenshot de mes tests unitaires qui passent !](tests.webp) 346 346 347 347 ## Conclusion 348 348
+9 -9
content/posts/2025/2025-12-19-mise-en-place/index.md
··· 395 395 396 396 Le site que vous lisez est hébergé sur Clever Cloud. J'ai donc sur mon poste des variables d'environenment `CLEVER_TOKEN` et `CLEVER_SECRET` qui traînent, un fichier `.clever.json` avec les liens vers mes apps, ainsi qu'un runtime node avec le CLI `clever-tools`. 397 397 398 - Est-ce qu'il est facile de migrer tout ça vers `mise` ? 398 + Est-ce qu'il est facile de migrer tout ça vers `mise` ? 399 399 400 400 ### L'installation du CLI `clever-tools` 401 401 402 - Installer le CLI de Clever Cloud avec `mise` se fait en une commande : `mise use npm:clever-tools`. 402 + Installer le CLI de Clever Cloud avec `mise` se fait en une commande : `mise use npm:clever-tools`. 403 403 Le préfixe `npm:` permet d'indiquer à `mise` où aller chercher le package, cela ouvre tout un tas de cas d'usages intéressants. Fini les `npm install -g` (ou pire `sudo npm install -g`) dans tous les sens, on installe juste l'outil au bon endroit, et la dépendance devient même explicite. 404 404 405 405 ```shell ··· 407 407 mise ~/workspaces/codekaio/codeka.io/mise.toml tools: npm:clever-tools@4.4.1 408 408 ``` 409 409 410 - Une fois la commande exécutée, `clever-tools` apparaît dans le fichier `mise.toml`, dans le bloc `[tools]` : 410 + Une fois la commande exécutée, `clever-tools` apparaît dans le fichier `mise.toml`, dans le bloc `[tools]` : 411 411 412 412 ```toml 413 413 [tools] ··· 417 417 ### `CLEVER_TOKEN` et `CLEVER_SECRET` 418 418 419 419 420 - Pour s'authentifier aux API, le CLI `clever-tools` utilise 2 variables d'environnement `CLEVER_TOKEN` et `CLEVER_SECRET`, qu'on peut récupérer en exécutant la commande `clever login` : 420 + Pour s'authentifier aux API, le CLI `clever-tools` utilise 2 variables d'environnement `CLEVER_TOKEN` et `CLEVER_SECRET`, qu'on peut récupérer en exécutant la commande `clever login` : 421 421 422 422 ```shell 423 423 $ clever login ··· 425 425 Login successful as Julien WITTOUCK <julien@codeka.io> 426 426 ``` 427 427 428 - Les variables sont alors récupérables depuis la fenêtre de navigateur qui sert à l'authentification, et sont déposées dans le fichier `.config/clever-tools/config.json` : 428 + Les variables sont alors récupérables depuis la fenêtre de navigateur qui sert à l'authentification, et sont déposées dans le fichier `.config/clever-tools/config.json` : 429 429 430 430 ```json 431 431 {"token":"081e54b8-853b-4e8f-a000-8f314238c5c3","secret":"6834da77-9edb-4e4a-bde8-9a6109934311","expirationDate":"2026-12-21T11:35:15.291Z"} ··· 438 438 $ jq -r '.secret' ~/.config/clever-cloud/clever-tools.json | mise set --raw --age-encrypt --prompt CLEVER_SECRET 439 439 ``` 440 440 441 - Les deux variables apparaissent bien dans mon `mise.toml` : 441 + Les deux variables apparaissent bien dans mon `mise.toml` : 442 442 443 443 ```toml 444 444 [env] ··· 446 446 CLEVER_SECRET = { age = "YYY" } 447 447 ``` 448 448 449 - J'ai fait la même chose avec mon `APP_ID` afin de pouvoir également le stocker sans souci sur git : 449 + J'ai fait la même chose avec mon `APP_ID` afin de pouvoir également le stocker sans souci sur git : 450 450 451 451 ```shell 452 452 $ mise set --raw --age-encrypt --prompt PROD_APP_ID ··· 455 455 456 456 ### La tasks 457 457 458 - Écrire les tasks pour `mise` est alors plutôt facile, il suffit d'enchaîner les deux commandes `clever link` et `clever deploy` dans un seul script : 458 + Écrire les tasks pour `mise` est alors plutôt facile, il suffit d'enchaîner les deux commandes `clever link` et `clever deploy` dans un seul script : 459 459 460 460 ```toml 461 461 [tasks."clever:deploy"] ··· 466 466 ''' 467 467 ``` 468 468 469 - Il suffit alors ensuite de lancer la commande `mise clever:deploy` et mon site est en production : 469 + Il suffit alors ensuite de lancer la commande `mise clever:deploy` et mon site est en production : 470 470 471 471 ```shell 472 472 mise clever:deploy
+3 -3
content/posts/2025/2025-12-31-mi-veille/index.md
··· 23 23 * [Split Keyboards Are Superior And The Reason I'm The Writer I Am Today](https://aftermath.site/best-split-keyboards-diy-qmk-zmk-corne/) _via_ [Molly White (@molly.wiki)](https://bsky.app/profile/molly.wiki) sur [Bluesky](https://bsky.app/profile/molly.wiki/post/3mb7v3fhcxc2b) 24 24 25 25 > Un article complet sur les split keyboards. L'auteur y présente le concept, revient sur les keymaps, la gestion de layers, et l aspect DIY (Do It Yourself) avec le choix des switches et des keycaps. 26 - > J'ai d'ailleurs monté mon propre split keyboard, il y a quelques mois, l'article est ici : [Montage d'un clavier mécanique](/2025/07/25/montage-dun-clavier-mécanique) 26 + > J'ai d'ailleurs monté mon propre split keyboard, il y a quelques mois, l'article est ici : [Montage d'un clavier mécanique](/2025/07/25/montage-dun-clavier-mécanique) 27 27 28 28 * [Firefox se dote d’une vue partagée pour afficher deux sites côte à côte - Next](https://next.ink/brief_article/firefox-se-dote-dune-vue-partagee-pour-afficher-deux-sites-cote-a-cote/?utm_source=dlvr.it&utm_medium=bluesky) _via_ [next.ink](https://next.ink) 29 29 ··· 35 35 36 36 * [Backing up Spotify](https://annas-archive.li/blog/backing-up-spotify.html) _via_ [Marme & lade (@marmelade.bsky.social)](https://bsky.app/profile/marmelade.bsky.social) sur [Bluesky](https://bsky.app/profile/marmelade.bsky.social/post/3mahhuoqp5223) 37 37 38 - > J'ai vu passer cette info et je ne sais pas quoi en penser. Au-delà de l'acte "pirate" en lui-même et de l'usage qui pourrait être fait de ces données (faire apprendre une IA ?), il semble y avoir une réelle démarche de conservation. 38 + > J'ai vu passer cette info et je ne sais pas quoi en penser. Au-delà de l'acte "pirate" en lui-même et de l'usage qui pourrait être fait de ces données (faire apprendre une IA ?), il semble y avoir une réelle démarche de conservation. 39 39 Quoi qu'il en soit, l'article détaille des informations plutôt intéressantes et des graphes sur l'écoute des morceaux et l'algo supposé "aléatoire" de Spotify. 40 40 41 41 ## 🌱 Spring Boot ··· 72 72 > Un court article qui revient sur le démarrage du Kernel Linux et une partie de son fonctionnement. Il est intéressant de voir comment on peut très facilement démarrer un Kernel dans une VM QEMU, et lancer un simple programme. 73 73 > Ça permet aussi de réfléchir au concept de distribution Linux. 74 74 75 - * [GNOME et KDE ont pris un coup de vieux : pourquoi tout le monde parle de COSMIC ?](https://goodtech.info/cosmic-desktop-rust-pop-os-system76-linux-revolution/) _via_ [Le journal du Hacker](https://www.journalduhacker.net/) 75 + * [GNOME et KDE ont pris un coup de vieux : pourquoi tout le monde parle de COSMIC ?](https://goodtech.info/cosmic-desktop-rust-pop-os-system76-linux-revolution/) _via_ [Le journal du Hacker](https://www.journalduhacker.net/) 76 76 77 77 > Je teste COSMIC depuis quelques jours, et je suis déjà séduit. Ça marche bien, c'est frais, efficace (tiling auto💙), et c'est joli. À voir sur la durée, j'aurai un avis plus poussé d'ici à quelques semaines. 78 78