1

Initial commit

This commit is contained in:
2025-03-28 12:57:37 +01:00
commit ed9ddcfdc8
1841 changed files with 42303 additions and 0 deletions

View File

@@ -0,0 +1,117 @@
---
date: '2023-01-03'
title: Je suis membre d'Infoclimat !
---
## L'explication simple
J'aime la météorologie, et c'est loin d'être nouveau.
J'ai monté plusieurs "stations météo" - je mets désormais des guillemets parce que mes stations météo ne peuvent pas être considérées comme professionnelles - dont la première date probablement d'il y a une dizaine d'années et je suis même en train de concevoir la suivante (à l'étude [depuis février 2022](/interets/informatique/2022/02/14/la-station-meteo-parfaite/), mais maintenant je passe à l'étape suivante).
C'est peut-être parce que je suis geek, ou neuro-atypique, mais j'aime mesurer mon environnement, en tirer des hypothèses, y voir des relations.
Si je le pouvais, je mettrais toutes sortes de capteurs partout, pour mesurer tout et n'importe quoi ; on verra après ce qu'on fait de ces données !
J'utilise les données d'[InfoClimat](https://www.infoclimat.fr/) sur ma tablette domotique depuis quelques semaines.
Je cherchais une alternative viable à Météo-France, qui autorise des appels API simples.
Je connaissais InfoClimat depuis longtemps, mais vu que je ne suis pas du genre grégaire, je ne voyais pas trop l'intérêt de m'en soucier.
Je change donc mon fusil d'épaule pour 2023.
J'ai décidé d'essayer d'être un peu plus ouvert à la notion de communauté.
## L'explication complexe
Quand on sait d'où je viens, on comprend que ce n'est pas un acte anodin.
Je suis réputé misanthrope, asocial, anti-conformiste, élitiste, entre autres.
Et les quelques tentatives de "fédération" disséminées au cours de mon histoire personnelle, qui se sont toutes soldées par de cuisants échecs, souvent suivis d'épisodes dépressifs, ne m'ont pas vraiment incité à renouveler l'expérience.
En particulier dans le domaine de l'informatique.
Qu'on se le dise : ça fait depuis 35 ans que je suis passionné d'informatique, je suis dégoûté de ses communautés qui sont toutes plus toxiques les unes que les autres.
Il me fallait donc trouver une communauté en dehors.
Heureusement pour moi, je suis passionné par plein de domaines, en particulier toutes les sciences ou presque (physique, astronomie, mathématiques, anthropologie, paléontologie, etc.)
Et parmi toutes les sciences, la météorologie est un domaine qui m'est accessible sans bagage académique, c'est-à-dire un peu plus ouvert que les autres.
J'imagine qu'à partir du moment où on achète une station météo, aussi basique soit-elle, on s'intéresse un peu à la météorologie, au-delà de simplement regarder "la météo" à la télé.
La météorologie a ceci de particulier qu'elle peut faire appel à plein de compétences qui m'intéressent tout autant.
Pour concevoir ma station météo actuelle (et la suivante), j'ai besoin de savoir faire de l'électronique, de l'embarqué, de l'informatique, du développement, et un peu d'ingénierie, voire de la modélisation 3D.
Et tout ça, juste pour récolter les données : il faut encore savoir quoi en faire, et c'est là qu'interviennent les mathématiques, les statistiques, etc.
Ainsi, la météorologie me semble être un bon point de départ vers plein de choses intéressantes.
## Rejoindre une association ?
Comme dit, normalement, ce n'est pas trop mon truc.
J'ai travaillé pour une association en tant que salarié (merci belle-maman !) mais je ne peux pas dire que je sais comment fonctionne une association (ceci-dit, je n'ai pas l'impression d'avoir compris comment fonctionne une société non plus...).
Ce que je sais, ou que je crois savoir, c'est que, normalement, une association poursuit un objectif différent d'une société capitaliste.
Certes, il faut rentrer de l'argent parce qu'il y a des dépenses, mais dans mon imaginaire romantique, une association doit bénéficier à tous.
Elle doit être d'un intérêt général, sinon elle n'en a pas du tout.
Et c'est, je crois, [ce qu'est InfoClimat](https://asso.infoclimat.fr/).
Une association dont le but est d'un intérêt général.
Ce but est d'ailleurs multiple, puisqu'il s'agit en fait de "*favoriser l'échange de données et de connaissances autour de la météo et du climat*".
Or, mieux connaître le climat, son fonctionnement et sa fragilité, c'est déjà chercher à contribuer à sa préservation.
On peut toujours se dire que c'est trop tard, on a déjà scié la branche sur laquelle on est assis, mais on peut aussi faire preuve d'optimisme et conserver sa foi en l'humanité (tout en étant misanthrope - oui, c'est le bordel dans ma tête, mon épouse me demande souvent combien nous sommes là-dedans 😁).
## Ce qu'InfoClimat peut m'apporter
En ce qui me concerne, mon adhésion à InfoClimat a été le résultat d'un gros brainstorming avec moi-même sur ce qu'on pouvait mutuellement s'apporter.
Autrement dit, et dans un premier temps, qu'est-ce que j'attends d'une association (pourquoi j'y adhère) en général, et d'InfoClimat en particulier.
D'une association en général, j'attends de la transparence, et un bilan financier sain.
La transparence, on est censés l'avoir en consultant les rapports d'assemblée générale, où tout est censé être détaillé, notamment les recettes et les dépenses.
Et c'est là qu'on voit si l'association semble saine ou non, pas dans le sens où "elle va mettre la clé sous la porte si on ne donne pas 2€" mais dans le sens "les associés n'en profitent pas pour s'enrichir sur le dos d'une cause perdue".
La consultation des [rapports d'AG d'InfoClimat](https://asso.infoclimat.fr/adherents/assemblees-generales.php) semblent bien indiquer une association saine : ils ne dégagent pas énormément d'argent, l'association en réinvesti une partie dans l'acquisition de stations météo professionnelles, ils ne passent pas leur temps à faire des banquets, bref, ça parait clean.
Ensuite, j'attends de la technicité.
Je veux apprendre plein de choses, le vrai vocabulaire, les vraies mathématiques, la vraie "science dure" comme je l'aime.
Là encore, InfoClimat semble respecter mon cahier des charges.
[Le site principal](https://www.infoclimat.fr) regorge d'informations intéressantes : il y a de quoi s'émerveiller du contenu de chaque rubrique.
Outre l'indispensable [lexique](https://www.infoclimat.fr/apprendre-lexique-meteo.html), on découvre tout un volet consacré à la pédagogie (ce qui ne m'étonne pas vraiment venant du milieu associatif), à destination aussi bien des écoles, collèges et lycées qu'au milieu scientifique.
Il y en a pour tous les goûts, et qu'on ait l'intention d'adhérer ou non, tout le contenu est intéressant.
Enfin, j'attends une [communauté](https://forums.infoclimat.fr/) saine, des membres "sains", c'est-à-dire pas toxiques, bienveillants.
Évidemment, je ne le verrais qu'à force d'interactions, et j'espère que je ne serai pas, à leurs yeux, ce que je ne veux pas qu'ils soient aux miens.
Ça, seul le temps nous le dira.
Pour résumer :
- améliorer mes connaissances techniques
- rejoindre une communauté intéressante
## Ce que je peux apporter à InfoClimat
La réponse facile : de l'argent.
On peut adhérer à partir de 20€ par an, j'ai choisi de payer 50€.
La réponse de l'argent est toujours facile, surtout quand on sait qu'on payera moins d'impôts grâce à ça.
Une autre façon de voir les choses, c'est que s'il n'y avait pas de réduction d'impôts, les associations auraient beaucoup plus de mal à vivre (voire, ne pourrait pas vivre du tout).
À vous de déterminer si vous préférez voir ça comme de l'optimisation fiscale (on parle de 66% de 50€, faut pas déconner non plus) ou comme une contribution à une association d'intérêt général (enfin, pas encore mais [ça semble être en cours](https://asso.infoclimat.fr/adherents/pdf/PV-AGE-04-2022.pdf)).
Quoiqu'il en soit, je ne sais pas encore si j'ai autre chose à apporter à InfoClimat pour le moment.
Je ne peux pas affirmer être en capacité de faire quoi que ce soit, mais j'ai des idées.
Pour commencer, je suis développeur web.
Il y a peut-être quelque chose à proposer de ce côté, d'autant que je cherche, et je crois qu'eux aussi.
Ensuite, je suis dans une zone qui semble peu couverte (a priori, nommée la "diagonale du vide").
Si ma station météo "personnelle" ne répond évidemment pas aux critères d'une station professionnelle, et que je ne dispose pas d'un terrain qui respecte ces critères, je peux néanmoins tenter de me rapprocher de l'administration de ma commune afin de voir si une mise à disposition de terrain serait possible.
C'est un peu brouillon dit comme ça et ça dépend de pas mal de choses sur lesquelles je n'ai pas vraiment de contrôle, et surtout je devrai faire appel à des compétences sociales qui me sont, pour l'heure, inconnues.
Mais **ça fait partie de mon projet personnel**.
Le but de cette adhésion est aussi de me forcer à faire des choses, à communiquer, et ultimement, que cela apporte quelque chose à la "communauté", tout en améliorant mes compétences sociales.
En résumé :
- j'espère pouvoir contribuer techniquement au projet (via mes compétences de développeur web et/ou par l'installation d'une station météo professionnelle)
- j'ai apporté une première contribution financière à l'association
## Conclusion
Je démarre 2023 sur une action forte (selon mes critères) : rejoindre une association.
J'espère qu'il en découlera de bonnes choses, de meilleures choses que dans les diverses communautés informatiques où je suis intervenu depuis 1998, année de ma première connexion à Internet.
Je ne m'attends à rien d'extraordinaire : juste faire partie d'un projet utile à tous, d'une façon ou d'une autre.
Même si je n'ai aucun espoir pour l'Humanité (ni même la motivation d'en avoir), il n'empêche que je peux pas rester sans rien faire.
C'est peut-être un coup d'épée dans l'eau, ou le point de départ d'une grande aventure.
Encore une fois, seul le temps nous le dira.
Mais on ne pourra pas dire que j'ai rien foutu.

View File

@@ -0,0 +1,2 @@
file: images/BkZvrb.jpg
title: Mon coffret *Jurassic Park Ultimate Collector*

View File

@@ -0,0 +1,2 @@
file: images/dtluTW.jpg
title: Mon coffret *Back to the Future*

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

View File

@@ -0,0 +1,169 @@
---
date: '2023-01-05'
title: Le blu-ray est mort
---
Cest certainement une évidence pour nombre dentre vous, mais ce nétait pas le cas pour moi, jusquà ce que je veuille renouveler mon équipement.
## Contexte
Détenteur dune platine [Sony BDP-S490](https://www.homecine-compare.com/lecteur-SONBDPS490-SONY-BDP-S490.htm) depuis quelques années, jen suis très satisfait.
Elle fonctionne toujours aussi bien, mais elle est incapable de lire ou de sortir du 4K.
Étant donné que nous disposons dun téléviseur 4K, cest un peu dommage (surtout quà lheure actuelle, nous navons pas encore la fibre).
Pour contextualiser un peu, on a une belle collection de Blu-ray, et japprécie davoir un support physique.
Cest surtout le plaisir davoir des coffrets qui mattire dans les Blu-ray (et dans les DVD, auparavant).
Je dispose notamment de deux coffrets particulièrement intéressants : celui de la saga *Jurassic Park* (la première trilogie), qui contient une très belle statuette de *T. rex* qui défonce les portes du parc, et celui de la saga *Back to the Future*, comprenant un magnifique modèle réduit de la DeLorean.
![BkZvrb](images/BkZvrb.jpg)
![dtluTW](images/dtluTW.jpg)
En ce qui concerne la saga *Jurassic Park*, je me fais un marathon par mois (incluant évidemment *Jurassic World*).
Cest juste un exemple, qui savère également vrai pour *The Martian*, et dautres films.
Ma “consommation” de blu-ray est donc relativement importante (pour moi à la fois en terme de temps consacré mais aussi à titre personnel, sentimental).
Le problème, cest que cest usant, à la fois pour les blu-ray (si le support de la platine saffaisse, ou que la tête de lecture est usée, elle raye le blu-ray, sans compter les chutes dues aux boîtiers pourris), mais aussi pour la platine.
Remplacer les blu-ray, cest facile, en particulier pour la saga *Jurassic Park* : on fête les 30 ans du premier film cette année, et la deuxième trilogie est complète.
Le coffret intégral est déjà sorti.
Reste plus quà changer de platine (puis les autres de mes films préférés que jaimerais avoir en 4K).
## Passer à la 4K
Sauf que là, cest un peu la douche froide.
[Une bonne platine 4K, cest dans les 300€+](https://www.homecinesolutions.fr/p/17808-panasonic-dp-ub820efk?utm_campaign=&utm_content=&utm_source=Bing+Ads&utm_medium=cpc&utm_term=Panasonic+DP-UB820EFK&msclkid=fbb47cc09bf0167b6d081f7686db3f98).
Le double de ce que jai payé la BDP-S490 que je trouvais déjà pas donnée.
Mais bon, vu lusage que jen fais et mon niveau dexigence, je suis prêt à mettre la main à la poche.
Cest alors que jai regardé un peu les reviews des blu-ray, ce qui confirme ce que jai déjà constaté sans pour autant comprendre le phénomène, ni y chercher une solution.
Il existe plusieurs versions dun même film (ou plusieurs versions de coffrets de sagas), et toutes ces éditions ne se valent pas.
Évidemment, jai envie de dire, il existe une corrélation entre la popularité du film et le nombre de versions disponibles sur le marché (il suffit de penser à *Star Wars* pour sen convaincre).
Si encore les différences entre ces versions se limitaient à la qualité de la jaquette, ou à la quantité de bonus présents sur le support, ou encore la présence ou non de plusieurs langues, voire une édition standard et une version longue, ça ne serait pas problématique.
Le vrai problème des blu-ray (qui, rétrospectivement, existait déjà du temps des DVD), cest que la qualité du film-même est variable.
Dune édition à lautre, on peut se retrouver avec un film dont limage est altérée, le son mauvais, bref, de basse qualité.
Et, malheureusement, ça arrive aussi dans des coffrets “exclusifs” vendus une blinde.
Par exemple, nous avons le coffret intégral de *Harry Potter* sous la forme dune sacoche en carton, assez belle et bien faite.
Au contraire des jaquettes des films, réduites à peau de chagrin, de mauvaise qualité, et depuis longtemps inutilisables.
En ce qui concerne ma saga préférée, *Jurassic Park*, jai noté deux problèmes majeurs : du grain, partout et tout le temps, et une bande son inégale, où le 5.1 peine à sexprimer.
Pourtant, mes blu-ray viennent dun coffret estampillé ”*Ultimate Collector*”, et rien nindique sur les pochettes que je dois mattendre à des artefacts visuels (particulièrement visibles notamment lors de la réunion dans la salle des diapositives et lors de lévasion du *T. rex* dans le premier film) ou à un son dénaturé (en particulier dans le troisième film).
Or, il existe des éditions des blu-ray de *Jurassic Park* qui ne sont pas affectés par ces problèmes.
Je suppose que pour les connaisseurs cest une évidence, mais pour moi, cétait létat normal de mes films sur blu-ray !
Et je croyais aussi, naïvement, quétant les plus chères, les éditions *Steelbook*, présentées dans un beau boitier métal, devaient contenir le film dans sa meilleure qualité possible.
Or, daprès les commentaires que jai pu lire ici ou là, les éditions *Steelbook* des films de la saga semblent être affectés par un bruit visuel particulièrement désagréable, le même que celui que jai sur mon édition *Collector*, alors que là on parle du coffret intégral comprenant aussi les trois films de *Jurassic World*.
En plus de ça, les remarques faites sur le coffret collector comprenant une statuette de *Blue* et de sa fille sont peu élogieux, et évoquent un plastique fragile et de mauvaise qualité.
Du coup, jai renoncé à acquérir le coffret *Collector*, et jai cherché à me procurer les films individuels.
Et là, cest la même galère : le *Steelbook* de *Jurassic Park* est mauvais, il vaut mieux prendre la version “standard”.
Pour *The Lost World*, cest la version de base qui propose la meilleure image mais avec un son dégradé.
Etc.
En gros, tomber sur le bon blu-ray, offrant la meilleure qualité dimage possible (fournie par les masters 4K, dans le jargon) et la meilleure qualité de son possible (pas un Dobly tout dégueux sans profondeur, le vrai DTS de la bande son originale promue par Spielberg) relève plus de la chance que de la sélection éclairée.
## Limposition du dématérialisé
Cest alors que je me fis une réflexion, probablement avec dix ou vingt ans de retard sur tout le monde : ça pourrait être pas mal de les acheter en dématérialisé.
Encore une fois, ce nest pas une évidence pour moi.
Autant, 100% de mes jeux sont sur Steam, et je nai aucune copie physique.
Pareil pour la musique, jai quelques CD mais de toute façon, je nen écoute pas tant que ça, et quand jen ai envie, jai Amazon Music avec mon compte Prime.
Et pareil pour les livres, qui se trouvent essentiellement dans Apple Books (mais pas tous).
Alors, quest-ce qui mempêche dacheter les versions dématérialisées de mes films préférés, en fin de compte ?
Direction le store dAppleTV, pour y découvrir lintégrale des six films *Jurassic Park* et *Jurassic World* pour… 39.99€, soit la moitié du coffret physique que jai sélectionné sur Amazon.
Je vérifie quand même quelques trucs importants pour moi : ils sont bien disponibles en 4K (donc quand jaurai la fibre, la montée en définition se fera toute seule), avec la bande-son originale en anglais et sous-titres en français.
Cest parfait.
Il faut dire que javais déjà acheté quelques films sur la plateforme, je suis donc en confiance.
Après à peine une demi-journée de réflexion, je saute le pas, et je commence à explorer ce que je venais dacheter.
Et là, je découvre un tout autre monde.
## Quelques points de comparaison
Un blu-ray, vous le savez, cest presque aussi chiant à lancer quune VHS.
Le chargement du blu-ray peut déjà prendre un certain temps, en fonction du blu-ray mais aussi de la platine.
On se tape plein de séquences impossible à passer pour nous dire que le piratage, cest pas bien, parfois pour nous dire que lindustrie nous remercie de ne pas avoir piraté, nous affiche des avertissements légaux qui ne sont même plus dactualité (en tout cas, dans les mêmes termes).
Ensuite, quelques bandes annonces dont on se fout royalement.
On arrive enfin au menu, parfois tellement générique quon ne comprend pas sur quoi on appuie, avec une interface absolument immonde.
Et ce nest quaprès avoir passé tout cela quon peut profiter de son film.
Je sais bien que cest lun des points daccroche pour justifier le piratage, et je ne peux pas tellement leur donner tort.
Le streaming (quil soit légal ou non), tu sélectionne ton film, tu le lance, tu es tout de suite dedans.
Cest virtuellement instantané.
En pratique il y a évidemment un petit temps de chargement, deux à trois secondes sur ma connexion ADSL, probablement inexistant sur une connexion fibre.
La première chose qui minterpelle dans la version vendue sur lAppleTV, cest la liste des bonus sur le côté.
En fait, jai *tout* ce qui sest fait autour de *Jurassic Park*.
Il y a au bas mot trois heures de bonus, pour *chaque* film.
Ils sont tellement nombreux quil faut naviguer dans des catégories pour tous les lire !
Jai quelques blu-ray qui offrent un peu de contenu exclusif, mais ce nest jamais aussi exhaustif.
Je suis bluffé.
Je naurai jamais pu avoir accès à lintégralité de ces bonus en achetant la moindre édition spéciale des coffrets des trilogies.
Jen suis persuadé, parce que là on parle des making-of officiels parus entre 1993 et 2001.
Les quelques bonus de ma version *Ultimate Collector* de la première trilogie ne contient même pas ces documentaires.
Donc, premier bon point : du contenu additionnel exhaustif.
Rien que pour ça, je suis déjà conquis.
Ensuite, la qualité dimage et de son est exemplaire.
Aucun bruit ni *banding* dans la scène dans la salle des diapositives, ni lors de lévasion du *T. rex*.
Limage et le son sont parfaits, du début à la fin.
Je redécouvre mon film préféré.
Et je nai pas eu à me prendre la tête ou paniquer à lachat pour être bien sûr que javais acheté la bonne version.
Cest juste “de base” la meilleure image et le meilleur son, et tous les bonus possibles et imaginables.
**Les versions longues sont aussi incluses !**
## Questions/réponses fictives
> Et si un jour Apple fait faillite, tas plus tes films
Apple ? faillite ? On peut aussi se dire “Si Steam fait faillite, tas plus tes jeux”, je ny croirai pas plus.
Et puis, si Apple ou Steam fait faillite, jirais peler des châtaignes en forêt en attendant la mort.
> Et si un jour taimes plus Apple et que tu veux quitter son écosystème ?
Je nai besoin que dun seul périphérique pour accéder à mes films, quil sagisse dune tablette ou dune AppleTV.
Je me coltine bien une tablette sous Android de merde pour piloter ma maison, je ferai leffort de garder lune des meilleures box TV pour regarder mes films préférés.
> Et si un jour tas plus Internet ?
Je suis passé au forfait à 15 euros pour ce cas de figure.
Et mettons que je nai plus Internet pour des raisons dargent, jaurai dautres soucis que regarder la télé.
Et avant den arriver là, jaurai pris soin de télécharger mes films sur mon AppleTV 4K, puisque **jai le droit de le faire**.
> Et si un jour le monde disparaît ?
Bah ça sera bien fait pour vos tronches.
## Conclusion
Ma barrière psychologique concernant les films en dématérialisé est bel et bien tombée.
- Jai fait léconomie dune platine à plus de 300€, donc simplification des câblages, pas de vérification de compatibilité avec mon 5.1 et ma TV (actuelle et future), économies dénergie.
- Jai fait léconomie de temps de recherche pour trouver LA bonne édition pour CHAQUE film que je voulais en physique
- Jai fait une économie substantielle (moitié moins cher) à lachat de lintégrale
Et au final, malgré toutes ces économies, jai tout ce que je veux : meilleure qualité dimage possible, meilleure qualité de son possible, des bonus tout le tour du bide, le tout sur une plateforme que japprécie et qui nest pas prête de mettre la clé sous la porte.
Le blu-ray est mort.
Pour moi, il na plus de raison de vivre dans ces conditions.
Et en sortant de ma bulle, cest pareil : le piratage massif de ces dernières années à montré que les gens voulaient consommer les films *plus facilement*, pas forcément *gratuitement*.
Pas étonnant que Netflix et Amazon (et tous les autres, évidemment) sont aussi des acteurs majeurs sur le marché.
Certains sont prêts à payer plusieurs abonnements sur ces plateformes pour bénéficier de leurs contenus.
Le dématérialisé a été la meilleure réponse au piratage, tout comme elle la été pour la musique (vraiment grâce à Apple du coup).
Alors, cest certain, cela nous prive de quelques libertés que je ne vais pas détailler ici parce que ça me gonfle (cest bien expliqué ailleurs sur Internet).
Perso, je men tape du marché gris, je men tape des goodies physiques si elles sont en plastique tout pourri, et ça me fait ça de moins à stocker dans mes étagères.
Je ne regrette pas cet achat, et je suis désormais pour la décentralisation totale de mes médias.
Je nachèterai plus jamais de blu-ray, jachèterai tous mes films sur la plateforme dApple.
Et je vous encourage à faire de même si vous êtes encore au stade de réflexion, voire dopposition au dématérialisé.
Le simple rapport ```prix/(qualité+quantité)``` pèse forcément dans la balance, et en dématérialisé, chez Apple en tout cas, ce rapport penche totalement pour Apple et non pour des blu-ray physiques.
La messe est dite.
Jy retourne, jai pas fini les bonus de *Jurassic Park*.

View File

@@ -0,0 +1,2 @@
file: images/0Ukpv6.jpg
title: '© [AdaFruit](https://www.adafruit.com/)'

View File

@@ -0,0 +1,2 @@
file: images/4xCW2P.jpg
title: '© [AdaFruit](https://www.adafruit.com/)'

View File

@@ -0,0 +1,2 @@
file: images/6bcvJ0.jpg
title: '© [AdaFruit](https://www.adafruit.com/)'

View File

@@ -0,0 +1,2 @@
file: images/LbQjsr.jpg
title: '© [AdaFruit](https://www.adafruit.com/)'

View File

@@ -0,0 +1 @@
file: images/WV5olM.png

View File

@@ -0,0 +1,2 @@
file: images/X56Dng.jpg
title: '© [AdaFruit](https://www.adafruit.com/)'

View File

@@ -0,0 +1,2 @@
file: images/YbI73t.jpg
title: '© [AdaFruit](https://www.adafruit.com/)'

View File

@@ -0,0 +1,2 @@
file: images/t43NNW.jpg
title: '© [AdaFruit](https://www.adafruit.com/)'

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 693 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 667 KiB

View File

@@ -0,0 +1,155 @@
---
date: '2023-01-07'
title: La station météo parfaite
---
## Prérogatives
Afin de me simplifier la vie, je vais choisir des composants qui sont supportés par [ESPHome](https://esphome.io/).
Évidemment, cela limite le choix des capteurs disponibles, mais le matériel que je me procurerai sera supporté par au moins une plateforme.
À noter que je n'achèterai pas tout le matériel d'un coup, pour des raisons financières.
## Contrôleur
J'ai le choix entre l'ESP8266 et l'ESP32.
Le premier est plus ancien, moins puissant, et offre moins d'options de connectivité, mais il est plus économe en énergie.
L'ESP32 serait donc une option plus long-termiste.
En pratique, le choix définitif se fera en considérant la quantité de capteurs que je veux intégrer, et les possibilités d'évolutions futures.
Et c'est la raison pour laquelle je vais me procurer le matériel chez [AdaFruit](https://www.adafruit.com/), et opter pour des composants supportant l'interface [Stemma QT](https://learn.adafruit.com/introducing-adafruit-stemma-qt) : une "standardisation" du câblage pour le protocole [I2C](https://fr.wikipedia.org/wiki/I2C), qui facilite l'interconnexion entre le micro-contrôleur et les périphériques.
J'aurai pu faire la même chose à la main (et c'est d'ailleurs ce que j'ai fait sur ma station actuelle), mais cela va m'apporter un certain confort quand il va s'agir d'ajouter ou remplacer des capteurs puisque je n'aurai rien d'autre à faire que débrancher/rebrancher, alors qu'à l'heure actuelle, je n'ai aucune possibilité d'extension de ma station.
Certes, AdaFruit est un peu cher, mais je crois en la qualité "supérieure" de leurs produits.
Je rappelle que certains composants de la station sont à l'air libre, et que l'une des raisons pour lesquelles je mets à jour ma station météo est l'oxydation de ses circuits que j'ai fabriqué moi-même, mais sur lequel je n'ai pas appliqué de verni protecteur.
**Je rappelle, à toute fin utile, que je ne suis pas sponsorisé par AdaFruit, que les liens que je fourni dans cet article ne sont pas suivis et que je ne perçois aucune commission d'aucune sorte, d'AdaFruit ou de qui que ce soit d'autre.
Vous allez trouver ça pompeux, mais je suis complètement intègre...**
Bref, je vais opter pour leur ESP32-S3, qui présente quelques caractéristiques intéressantes :
- il dispose d'un connecteur STEMMA QT natif
- il dispose d'un connecteur, d'un circuit de charge et de mesure pour une batterie externe
Je n'ai pas les moyens financiers de réaliser une station météo autonome en énergie dans l'immédiat.
Mais le fait que le micro-contrôleur embarque la "logistique" requise est un atout que j'exploiterai à l'avenir.
![LbQjsr](images/LbQjsr.jpg)
## Capteurs
### Température, pression, humidité relative
Des données classiques pour une station météo.
Je vais rester sur le bon vieux [BME280](https://www.adafruit.com/product/2652) de Bosch.
Quoique plus tout jeune, [j'en ai toujours été satisfait](/interets/informatique/2022/02/14/la-station-meteo-parfaite/#multiplication-des-capteurs).
![X56Dng](images/X56Dng.jpg)
J'aurai pu passer sur le [BME680](https://www.adafruit.com/product/3660), mais je préfère confier la détection de gaz à d'autres capteurs plus spécialisés et destinés à un usage extérieur.
### Lumière
Ces données sont peut-être moins utilisées dans une station météo, mais j'ai différents usages actuels et futurs.
Par exemple, je m'en sert pour déterminer l'allumage automatique des lumières en fonction d'un seuil de luminance extérieure, mais aussi pour me rappeler d'ouvrir ou fermer le poulailler.
Je vais passer à un [TSL2591](https://www.adafruit.com/product/1980) pour remplacer le TSL2561 que j'utilise actuellement et qui est désormais obsolète.
![4xCW2P](images/4xCW2P.jpg)
Je vais l'épauler d'un second capteur : un [LTR390](https://www.adafruit.com/product/4831), dont l'objectif sera de fournir un indice UV.
![YbI73t](images/YbI73t.jpg)
Un troisième capteur viendra compléter l'analyse de la lumière : un [APDS9960](https://www.adafruit.com/product/3595), qui va me permettre de déterminer la couleur ambiante.
![0Ukpv6](images/0Ukpv6.jpg)
Comme je l'ai dit dans mon article introductif, je ne sais pas encore où je vais avec ce capteur, mais je le veux !
J'imagine par exemple que je pourrais utiliser sa sortie pour définir la couleur de l'éclairage de la maison, ou peut-être déterminer la couleur du ciel, et en déduire si le temps est plutôt beau ou plutôt couvert.
En outre, je suis curieux de voir ce qu'il peut ressortir de ce genre de capteurs durant la nuit.
En fonction de sa sensibilité, je pourrais peut-être détecter des couleurs intéressantes pour l'esthétique de mon tableau de bord.
Je pourrais peut-être également avoir un capteur configuré pour gérer les fortes luminances et un autre plus précis pour les basses luminances, en jouant sur les paramètres d'exposition.
## Magnétomètre
Utilisé pour déterminer le nord magnétique.
Intéressant pour détecter ses fluctuations.
J'utiliserai un [QMC5883L](http://wiki.sunfounder.cc/images/7/72/QMC5883L-Datasheet-1.0.pdf), déjà en ma possession.
## Détecteur d'orage
J'ai déjà eu l'occasion de jouer avec l'[AS3935](https://cdn.sparkfun.com/assets/learn_tutorials/9/2/1/AS3935_Datasheet_EN_v2.pdf) par le passé, mais il ne me donnait pas entière satisfaction.
Je vais retenter son intégration, mais pas tout de suite.
## Anémomètre, girouette
Grands absents de ma station actuelle, je suis toujours en galère pour trouver quelque chose de "potable".
J'ai bien vu [ce modèle](https://www.gotronic.fr/art-jeu-de-capteurs-meteo-33052.htm) chez Go Tronic, mais j'ai des doutes sur sa solidité et sa précision.
Néanmoins, le package est complet et comprend également un pluviomètre basique.
Je rajouterai ces composants plus tard.
## Détecteur de pluie
Je pense partir sur un [Hydreon RG11](https://rainsensors.com/products/rg-11/).
Cependant, vu son prix, je l'intégrerai au cours d'une prochaine intervention.
J'aime bien l'idée d'avoir une information immédiate et binaire, en plus de la quantité de pluie fournie par un pluviomètre séparé.
## Compteur Geiger
[Ce compteur Geiger](https://mightyohm.com/interets/informatique/products/geiger-counter/) est mon petit plaisir, juste parce que je peux (et je vais) l'assembler moi-même, mais aussi parce qu'il est bien conçu : il peut fonctionner de façon autonome, mais aussi avec un micro-contrôleur.
Vu son prix, qui représente tout mon budget initial (une centaine d'euros), il ne sera pas intégré tout de suite au projet.
## GPS
Je vais me procurer le [PA1010D](https://www.adafruit.com/product/4415), et sa [pile](https://www.adafruit.com/product/380).
Je m'en servirai principalement pour obtenir l'heure que je diffuserai ensuite à mon réseau via NTP.
J'espère aussi avoir une mesure de l'altitude, permettant de calibrer le BME280 automatiquement (alors qu'à l'heure actuelle, j'ajoute simplement 41hPa aux valeurs mesurées pour compenser l'altitude), et, évidemment, obtenir les coordonnées de la station, que je peux ensuite exploiter ailleurs.
![t43NNW](images/t43NNW.jpg)
## Autres composants
Quoi de mieux que [ce multiplexeur](https://www.adafruit.com/product/5626) pour illustrer tout l'intérêt de l'architecture de ma nouvelle station météo ?
J'ai huit ports à disposition, dont trois libres pour de futurs ajouts, sans compter que derrière, je peux partir avec autre chose que des câbles STEMMA QT.
Il s'agira de la multiprise sur laquelle viendront se connecter tous les autres composants.
C'est autrement plus confortable et pratique que mon système actuel, beaucoup trop rigide...
![6bcvJ0](images/6bcvJ0.jpg)
Il me faudra également une certaine quantité de câbles STEMMA QT, évidemment.
## BoM du mois de janvier
Du coup, ma commande se présente comme suit :
![WV5olM](images/WV5olM.png)
On note la TVA et les frais de port qui font un peu mal, mais bon.
Ça vient des États-Unis, c'est de la qualité, et, normalement, le colis ne devrait pas se perdre en chemin ni mettre six mois à arriver.
La livraison devrait se faire la semaine prochaine ou la semaine suivante.
Ce qu'il me reste à acheter :
- 1x AS3935 (environ 40€), sauf si je remets la main sur celui que je suis censé avoir...
- anémomètre, girouette, pluviomètre (a priori une centaine d'euros), quand j'aurai trouvé des modèles qui me conviennent
- 1x Hydreon RG11 ($60 + les frais de port)
- 1x compteur Geiger (une centaine de dollars + les frais de port)
- les boîtiers, câbles, et divers accessoires
- un système de stockage des données peut toujours être utile, je verrais comment articuler ça autour d'un simple module de carte SD qui se trouve un peu partout
Ces achats seront étalés sur l'année.
En plus, l'idée c'est de commencer à jouer avec les capteurs de base, et surtout avec les nouveaux capteurs que je ne connais pas encore.
## Conclusion
Il y a pas mal de choses que j'ai besoin de tester avant de me lancer dans la conception des boîtiers et de l'organisation du matériel, et notamment la question de la distribution d'énergie à travers tous les capteurs.
Prochain article sur le sujet : quand j'aurai reçu le matériel, et que j'aurais commencé à travailler sur le firmware.

View File

@@ -0,0 +1 @@
file: images/h8kJHM.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,226 @@
---
date: '2023-01-16'
title: 'Rant : Android, c''est de la merde'
---
Allez, après le [Raspberry Pi 4](/interets/informatique/2021/02/28/rant-raspberry-pi-4/), après [Hugo et Tailwind](/interets/informatique/2022/02/12/rant-hugo-et-tailwind/) (que j'utilise toujours ; oui je suis moi-même un peu hypocrite sur ce coup-là), et après [Javascript](/interets/informatique/2022/12/17/javascript-c-est-de-la-merde/) (contre lequel j'ai chaque jour de nouveaux griefs), aujourd'hui, je m'attaque à Android.
Je vais même me risquer à faire de la propagande pour Apple, vous voilà prévenus.
## Liberté !
Vous vous souvenez du temps où Android se plaçait comme une alternative Libre à iOS et Windows Phone ?
Android est sorti pour offrir aux utilisateurs une option qui ne les confine ni dans l'univers d'Apple, ni dans celui de Microsoft.
Manque de bol, c'est pour être confiné chez Google, mais pas seulement.
Commençons par la supposée ouverture du système.
Alors, oui, les sources sont Libres, c'est ce qui permet de créer des ROMs custom.
Sauf que voilà, les constructeurs de tablettes et de téléphones portables ne jouent pas toujours le jeu.
Chaque périphérique embarque du matériel fourni par des tiers (Qualcomm, Broadcom, Intel, etc.), et, parfois (souvent ?) ces tiers ne fournissent pas leur code source.
Ça, si vous suivez l'actualité mobile, vous le savez sans doute déjà et vous connaissez les implications : on peut avoir du matériel qui fonctionne bien mais dont le logiciel est obsolète, ne s'installe pas sur une version moderne de l'OS, est grévé de bugs qui ne seront jamais corrigés, etc.
En plus de ça, les constructeurs s'amusent à rajouter une surcouche à un Android déjà bien bloaté de base.
Certains, comme Samsung, semble assurer un support plus ou moins pérenne de cette surcouche (sans pour autant en fournir les sources).
D'autres, comme Lenovo, font durer le plaisir avant de fournir les sources (notamment du bootloader par exemple, ce qui empêche artificiellement le développement de ROMs custom).
Évidemment, d'autres ne fournissent rien du tout (et parfois, violent les licences libres...)
## Fragmentation
Tout ça contribue à un problème bien connu mais contre lequel rien n'est fait (pas par fainéantise, mais parce que ce n'est tout simplement pas possible) : la fragmentation.
Il n'y a aucune garantie qu'une tablette moderne puisse faire tourner la dernière version d'Android, parce que le constructeur de la tablette peut choisir de se focaliser sur d'autres produits.
J'appelle ça de l'obsolescence programmée (pas par un calendrier mais par le bon vouloir du constructeur).
Tel que je vois les choses, il y a trois cas de figure :
- soit on verrouille tout, matériel et logiciel, et on assure le support logiciel pendant une durée conséquente
- soit on ne verrouille rien, et on laisse complètement la communauté se débrouiller
- soit on verrouille l'un et pas l'autre, c'est le cas de figure actuel
Apple a choisir la première solution.
Certes, on n'a pas accès au code source, mais Apple permet à des machines relativement anciennes d'installer les dernières versions de ses OS.
Par exemple, le téléphone le plus ancien sur lequel on peut installer la dernière version majeure d'iOS (16, à l'heure où j'écris ces lignes) est l'iPhone 8 qui date de 2017 (et qui a donc 6 ans).
La même "durée de vie logicielle" est accordée aux Mac et iPad.
En passant sur Android, [Samsung promet 4 ans de support](https://www.frandroid.com/marques/samsung/845144_samsung-garantit-desormais-4-ans-de-mises-a-jour-a-ses-galaxy-les-2-pieges-de-cette-annonce) de mises à jour de sécurité : ça ne veut pas dire qu'on peut installer la dernière version d'Android sur un périphérique vieux de 4 ans.
Et Samsung peut largement se le permettre : c'est juste [le plus gros vendeur de smartphones](https://www.cnetfrance.fr/news/part-de-marche-smartphone-39884221.htm) devant Apple.
On en déduit deux choses :
1. Si on veut être pérenne avec un système Android, le meilleur choix, c'est Samsung
2. Un téléphone Apple s'amorti mieux que n'importe quel téléphone Android
## Coût de possession
Allez-y, accusez-moi de prendre des raccourcis, c'est juste mathématique.
**Hors promotion**, [un iPhone 14 coûte 1019 euros](https://www.apple.com/fr/shop/buy-iphone/iphone-14), [un Galaxy S22 coûte 859 euros](https://www.samsung.com/fr/smartphones/galaxy-s22/buy/) (je crois que c'est son concurrent direct).
Ramenons ce prix à un coût de possession annuel, basé sur le nombre d'années de support (je vais être gentil et partir du principe que les 4 ans de support de Samsung permettent d'installer les dernières versions d'Android, **alors que ce n'est pas le cas**) :
- 1019/6 = 169 euros par an pour un iPhone 14
- 859/4 = 215 euros pour un Galaxy S22
Vous me direz, vous ne trouvez pas où un Samsung Galaxy S22 est vendu ce prix-là : c'est marqué sur la page de Samsung.
![h8kJHM](images/h8kJHM.png)
Donc soit Samsung se fout de notre gueule, soit c'est une promo applicable à tout les revendeurs au moment où j'écris ces lignes.
Pour enfoncer le clou, je dispose d'un iPad Air 2, sorti en 2014.
Il fait tourner iPadOS 15 sans le moindre accro (donc l'avant-dernière version majeure d'iPadOS).
Je pense ne pas trop m'avancer en prétendant qu'une tablette sous Android achetée en 2014 (donc sous Android 5) a peu de chances de faire tourner Android 12 aujourd'hui sans problèmes de performances.
Je rajouterai que j'ai fait ces calculs avec mon intention de garder un produit le plus longtemps possible.
Or, le taux de renouvellement des périphériques mobiles est absurdement élevé.
Je n'ai pas - encore - trouvé d'étude à ce sujet, mais la moyenne mondiale se situe entre un an et demi et deux ans.
Et, d'expérience, je confirme que mon entourage non-proche renouvelle son smartphone à peu près à ce rythme.
Du coup, le coût de possession explose : un Galaxy S22 remplacé au bout de deux ans aura coûté 430 euros par an (contre 170 pour un iPhone équivalent)...
Après, il faudrait s'intéresser aux motifs de remplacement : j'ai rarement vu (simplement en regardant autour d'une table de convives) des smartphones avec un écran qui ne soit pas rayé ou carrément cassé, et puis il y a les offres des opérateurs qui incitent fortement à la consommation - au renouvellement.
Évidemment, le problème n'est pas spécifique à Android, je faisais juste une observation.
## Mon expérience personnelle
Bon, tout ce topo, et je n'ai pas encore abordé des cas concrets qui me concernent.
[Je suis en train de développer une interface web pour piloter ma maison en remplacement de HomeAssistant](/interets/informatique/2022/12/17/javascript-c-est-de-la-merde/).
J'ai donc quelques prérogatives, bien que je ne pensais pas être obligé de les formuler de façon aussi formelle.
### Gestion de la batterie
La tablette sera alimentée quasiment en permanence par USB.
Elle siège sur mon bureau, et hors cas spécifiques où je veux pouvoir l'emmener ailleurs dans la maison, elle y reste.
Problème : Android me casse les couilles une fois par jour pour activer le mode de protection de la batterie, sans aucune possibilité de lui fermer sa gueule définitivement.
**Je ne veux pas activer le mode de protection de la batterie.**
Petit rappel de conception électronique : un appareil fonctionnant sur batterie doit être capable de recharger la batterie lorsqu'une source d'alimentation fixe est disponible, si et seulement si la batterie n'est pas pleinement chargée.
Dans le cas contraire (si la batterie est pleinement chargée et si l'appareil est branché sur le secteur), l'appareil ne doit être alimenté que par le secteur, sans passer par la batterie.
Règle de préservation des accus de base.
C'est pas compliqué de mettre un condensateur pour fournir l'alimentation lors du passage du secteur à la batterie...
Ben non : Android ne veut pas que je laisse ma tablette branchée en permanence, parce que le matériel n'est pas capable de faire ça tout seul.
Ça ne me dérangerait pas s'il me faisait la remarque **une fois**, et me laissait la possibilité de ne plus me poser la question ultérieurement.
Non : périodiquement, je suis obligé de fermer la notification, faute de quoi le passage en mode protection de la batterie se fait sans mon accord.
Le problème, c'est que si je le laisse faire, la consommation de la tablette **triple** pendant la recharge, passant de 440mA en moyenne à 1.5A, soit le maximum que mon chargeur peut fournir (c'est lui qui m'affiche en temps réel sur son écran une mesure de la consommation des huit périphériques qu'il peut recharger).
Je préfère envoyer 440mA à ma batterie que 1500, personnellement.
Surtout alors que la batterie n'est pas censée se décharger puisque la tablette est branchée en permanence sur le secteur.
En gros, la batterie de ma tablette doit se comporter comme un onduleur.
### OS bloaté
Bon, de base, Android est bloaté par Google jusqu'à la moelle, c'est connu.
Lenovo en a rajouté une couche.
Des notifications partout, tout le temps, pour "terminer la configuration de ma tablette".
C'est truffé de *dark-patterns* pour me faire culpabiliser de ne pas avoir créé un compte Google, créé un compte Lenovo, et lier les deux.
C'est intrusif, omniprésent, impossible à évacuer.
Sur un tout autre sujet, je suis consterné par l'ergonomie du système.
Subjectivement, c'est moche.
J'en peux plus du *material-design* que tout le monde a adopté partout.
C'est insupportable de laideur.
Et c'est pas les quelques options de "personnalisation" qui sauvent ça.
Subjectivement, encore une fois, le système Apple est beau, propre, et cohérent de base.
Il n'a pas "besoin" d'être personnalisé...
Il y a du Google partout, tout le temps.
Je ne leur en veux pas vraiment, c'est leur produit, et il y a Apple partout dans iPadOS.
Mais j'ai cet affreux sentiment que je ne peux rien faire sans que Google soit au courant.
Il faut dire qu'ils se traînent une sale réputation, [surtout chez moi](/interets/informatique/2016/07/27/alphabet-une-entreprise-pas-comme-les-autres/), et qui n'est pas usurpée.
Je n'ai confiance en **rien**.
C'est des conneries du genre me laisser choisir le serveur NTP local plutôt que prendre ça comme prétexte pour pinguer les serveurs de Google, passer par des serveurs DNS tiers que je ne connais pas sans me laisser la possibilité de les choisir, ou de désactiver DoH (ce qui permet à Google et aux tiers d'outrepasser mon blocage DNS réseau en me faisant croire que c'est pour ma sécurité alors que c'est pour leur data).
Et quand on examine ce qui circule rien qu'en requêtes DNS dès que la machine est connectée au Wifi (même pas encore à Internet), il y a de quoi devenir parano.
Il y a littéralement des dizaines d'applications installées, non-désinstallables, et je ne sais pas à quoi elles servent.
C'est simple, [j'ai l'impression d'être sous Windows](/interets/informatique/2022/04/15/mon-nouveau-pc-de-jeu-est-arrive/#windows-11-cest-de-la-merde)...
### OS non remplaçable
J'ai vraiment fait une connerie en achetant une tablette Lenovo.
Du moins, j'aurai dû mieux me renseigner sur les possibilités d'installer autre chose qu'Android.
Je partais naïvement du principe que puisqu'Android, c'est (plus ou moins) libre, je n'aurai aucun mal à installer Linux.
Après tout, même ma vieille [Asus T100TA](/interets/informatique/2021/11/17/installer-nixos-sur-une-tablette-asus-t100ta/) pouvait faire tourner NixOS, mais à la différence de la Lenovo, l'Asus faisait tourner Windows à la base...
Il y a bien [Ubuntu Touch](https://devices.ubuntu-touch.io/device/x605), mais il faut downgrader Android à la version 9 pour pouvoir l'installer.
Sauf que c'est absurdement compliqué (il faut installer des tas d'outils, démarrer dans un mode spécial, flasher des trucs, risquer de bricker la tablette, bref, c'est la merde).
Et c'est encore plus la merde quand on part de macOS.
N'ayant pas de machine sous Windows et n'ayant pas envie de bloater mes Linux avec des merdes pour Android, je considère que l'OS de la Lenovo M10 n'est pas remplaçable.
D'ailleurs, je suis bloqué sur Android 10.
J'ai acheté la tablette en janvier 2022.
Je ne ferai plus jamais ça.
Pourtant, au niveau du matériel, la tablette fonctionne pas trop mal.
C'est pas un iPad c'est certain, mais pour l'usage auquel je la destine (tablette domotique), elle fait le job.
Pourtant, après à peine un an, je vais la remplacer à cause des défauts d'Android.
### Chrome, c'est de la merde
En tout cas, sur Android.
Je n'ai jamais utilisé Chrome en dehors de cette tablette.
Mon navigateur, c'est Safari sur périphériques Apple, et Firefox (devenu un moindre mal avec le temps, d'ailleurs... on en reparlera peut-être un jour) partout ailleurs.
Sur Android, je me suis dit que j'allais quand même tenter l'expérience.
Au final, ce n'est pas le bon navigateur pour faire ce que je veux.
Trois exemples concrets dans le cadre du développement de mon interface web pour la domotique :
- pas de plein-écran
- certaines fonctions ou méthodes nécessitent une action utilisateur
- javascript est mis en pause quand ça lui chante
Impossible d'avoir une page web en plein-écran avec Chrome sur Android.
C'est tellement basique que j'ai eu beaucoup de mal à admettre cette vérité.
Même l'astuce consistant à placer un raccourci sur l'écran d'accueil ne fonctionne pas.
Je suis obligé de passer par du javascript pour ça, ce qui m'amène au deuxième exemple.
Chrome ne permet pas l'exécution de certaines méthodes ou fonctions javascript, sans une action initiale de l'utilisateur.
Autrement dit, pour avoir ma page en plein écran, je dois cliquer sur un élément HTML qui déclenche la demande de plein-écran au navigateur.
[C'est dans la spec](https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen#security), donc ce n'est pas spécifique à Chrome ; par contre, Firefox peut démarrer d'office en plein-écran, lui...
Autre problème du même genre : je veux avoir des notifications vocales via mon application.
Je veux lui faire dire certaines phrases à la réception d'un message MQTT particulier.
Chrome le supporte bien, mais il faut que j'appuie sur un élément HTML pour ça.
Ça rend la synthèse vocale de notifications temps-réel parfaitement inenvisageable...
Un problème qui n'existe pas avec Safari sous iPadOS (ni sur macOS d'ailleurs).
Et évidemment, à ma connaissance, il n'existe pas de réglage permettant d'outrepasser ces comportements.
Enfin, et c'est le problème le plus gênant en ce qui me concerne : Chrome décide, au bout d'un certain temps (environ 5 heures je dirai, j'ai pas chronométré), de désactiver l'exécution de javascript.
Vu que ma tablette (mon application web) m'affiche l'heure, notamment, ainsi que plein de graphiques et des notifications en temps réel sur l'état de mon réseau, c'est très pénible, surtout que je n'ai pas les yeux rivés sur la tablette en permanence.
On pourrait accuser mon application, mon javascript d'être mal conçu, d'occuper trop de mémoire et de ne pas la libérer (en gros provoquer des fuites), mais non : j'avais le même problème avec HomeAssistant, dont je n'utilisais pas l'application native parce qu'elle me flinguait la batterie.
Dès que je touche l'écran, la page se met à jour (elle ne se recharge pas : c'est juste l'exécution de javascript qui reprend normalement).
Et évidemment, à ma connaissance, il n'existe pas de réglage permettant d'outrepasser ces comportements.
Je ne suis pas libre sous Android, je suis contraint, voire (et je n'ai pas peur du mot), **violé**, parce que l'écosystème Google me force à avoir des comportements qui ne sont pas naturels et dont je ne veux pas, sans m'offrir la possibilité de modifier ces comportements.
Je suis soumis à Google.
Je n'ai jamais eu ce sentiment chez Apple, qui me laisse faire ce que je veux de mes systèmes.
## Conclusion
Android présume en permanence que je ne sais pas me servir de mon périphérique.
Du coup, je comprends que pour "le commun des mortels", c'est un choix rassurant.
Mais je ne supporte pas qu'on me tienne la bite pour pisser.
Si je veux que mon périphérique fonctionne d'une certaine façon, c'est mon choix (...), c'est ma responsabilité de flinguer l'écran ou la batterie plus vite que prévu, ou d'exécuter un code que Google juge dangereux.
Qu'il m'informe, c'est une (relativement bonne) chose, mais je ne tolère pas que le système entrave mon choix.
Je suis content d'avoir toujours évité cet écosystème, et d'avoir toujours milité contre son adoption.
Et mon expérience personnelle m'encourage à continuer.
Je ne recommanderai jamais le moindre périphérique Android de ma vie.
Je critique âprement l'hypocrisie de tous ceux qui oeuvrent soi-disant pour la liberté sur les périphériques mobiles en promouvant un système aussi dangereux pour la liberté du choix individuel.
On ne peut pas accuser Apple de tous les maux en brandissant l'argument d'Android.
Et je me réjouis que ce soit de moins en moins le cas.
Par extension, je déplore tous ces constructeurs qui ont pris le système de base (certes, provenant de Google, mais sous licence GPL et Apache) et ont rajouté des surcouches propriétaires.
Je déplore également les choix matériels faits par ces constructeurs, dont les fabricants ne fournissent pas toujours le code source, ce qui réduit mécaniquement la durée de vie des périphériques.
Enfin, je suis consterné par l'impact écologique de tout cela.
Alors que je peux toujours utiliser confortablement mon iPad Air 2 de 2014, je vais devoir remplacer ma tablette Android après un an seulement.
Outre le coût écologique global, il y a aussi le coût économique individuel : aux 197 euros payés initialement il y a un an, je vais devoir ajouter le coût de son remplacement.
Même un iPad d'occasion aurait été plus économique en l'espace de deux ans.
Et il ne m'aurait pas pris la tête avec des conneries...

View File

@@ -0,0 +1,158 @@
---
date: '2023-01-20'
title: La station météo parfaite
---
## Construction
Probablement la partie qui me torture le plus : comment construire ma station en fonction de mes contraintes environnementales (je n'ai pas le terrain qui permettrait de prétendre disposer d'une station météo professionnelle) et des risques que je suis prêt à prendre (sachant que monter sur le toit n'en fait pas partie) ?
[Actuellement](/interets/informatique/2022/02/14/la-station-meteo-parfaite/#ma-station-actuelle), ma station est composée de deux boîtiers :
- le premier contient toute l'électronique dont le micro-contrôleur, et est situé sous le toit de la véranda
- le second est une construction faite de tubes PVC située à l'extérieur de la véranda et contient un BME280
Le second boîtier est distant du premier d'environ 2 mètres.
Ils sont reliés par un câble RJ45 Cat.6 qui fait transiter le signal I2C et l'alimentation pour le BME280.
Normalement, I2C n'est pas prévu pour fonctionner avec un câble aussi long à cause de sa capacitance.
Mais en pratique, je n'ai rencontré - presque - aucune difficulté en cinq ans d'exploitation, probablement parce que j'ai équipé ma station de résistances *pull-up* sur le bus I2C et parce que j'ai employé un câble de très bonne qualité (blindé).
En tout cas, ça, c'est ce que j'ai appris récemment.
Je n'ai jamais pu faire fonctionner correctement l'AS3935 (le capteur d'orage) avec cette configuration.
J'ai mis ça sur le compte de l'impossibilité de le calibrer manuellement via ESPHome.
Rétrospectivement, et grâce à mes nouvelles connaissances sur le sujet, je pense que c'est précisément dû à la capacitance de mon câble.
En outre, l'ESP8266 à l'intérieur du boîtier principal, pourtant le plus proche de la maison, a occasionnellement quelques difficultés à accrocher le Wifi (on parle d'une ou deux fois par semaine).
Du coup, je réfléchi à trois options :
1. Reprendre la même infrastructure, en espérant que le problème de l'AS3935 ne soit pas lié à la capacitance du câble
*Avantages :*
- Moins de prise de tête, tout est déjà en place, je n'ai qu'à enlever l'ancienne électronique et mettre la nouvelle à la place
*Inconvénients :*
- Si la capacitance de mon câble est réellement un problème, je ne le constaterai qu'une fois que tout sera en place, et je devrai tout réfléchir à nouveau
- Ça ne résoud pas les quelques coupures de réseau
- J'ai besoin d'un troisième boîtier pour les capteurs de lumière, donc je devrai tirer un second câble
En passant par cette solution, je n'élimine aucun de mes problèmes actuels (température du boîtier principal élevée en été, humidité relative bloquée à 100% toute l'année sur le BM280 sauf par temps très sec avec du vent, etc.)
De plus, si j'ai l'intention d'utiliser un panneau solaire ou une éolienne pour alimenter le projet, je risque d'avoir quelques problèmes en terme d'installation, et ensuite de stockage des accus car le boîtier sera trop petit pour gérer tout ça.
2. Mettre tous les capteurs dans la même "boîte" à l'extérieur de la véranda
*Avantages :*
- Ça résoud le problème de capacitance du câble qui fait transiter l'I2C
- Un seul boîtier où tout est centralisé, maintenance facilitée
- Optimisation de la précision des capteurs de lumière
*Inconvénients :*
- Ça aggraverait le problème de connexion au Wifi (mais du coup j'aurais une bonne raison d'explorer d'autres solutions comme la transmission par RF)
- L'alimentation posera problème (en l'absence de prise électrique, j'amène du 230V ou du 5V au boîtier ?)
- Je devrai réfléchir à une construction intelligente pour l'intégration des capteurs
C'est la solution que j'étudie actuellement.
Elle consisterait en l'achat d'un panneau électrique étanche de bonnes dimensions, dotés d'un disjoncteur différentiel et de deux blocs d'alimentation sur rail DIN (un qui délivre du 5V au micro-contrôleur et éventuellement un second qui fournit du 12V pour des périphériques tiers comme les ventilateurs).
Je peux tirer un câble de 230V jusqu'à l'emplacement du boîtier de façon sécurisée avec une bonne gaine et en passant sous le toit de la véranda.
Je pourrais monter ce boîtier sur un support d'antenne satellite à 90° positionné sur le côté de la véranda afin de limiter l'inertie thermique.
Sur le dessus de ce boîtier prendrait place un boîtier à couvercle transparent, toujours étanche, dans lequel seraient placés les trois capteurs de luminance + UV + couleur.
J'y mettrais sans doute un petit ventilateur et un capteur de température pour m'assurer que, même en pleine canicule, la température du boîtier reste dans des seuils acceptables.
En bas du panneau électrique se trouverait un nouveau boîtier construit avec des tuyaux en PVC, comme à l'heure actuelle, mais de dimensions réduites.
Un ventilateur y prendrait place, avec le BME280 pas loin, et fonctionnerait au plus bas régime possible.
Trop rapide, il fausserait la lecture de la température.
Trop lent, il ne corrigerait pas le problème de lecture de l'humidité relative bloquée à 100%.
Même si j'arrive à faire tout ça, il faudra résoudre la question du Wifi.
Mettre un point d'accès sous la véranda a déjà été tenté, mais n'est pas pratique.
Il reste exposé à des températures très basses l'hiver et très élevées l'été.
Je pense que je vais devoir passer par un émetteur RF, ce qui implique de disposer d'un récepteur à l'intérieur de la maison, qui va transmettre les données à mon serveur principal (ou d'utiliser directement un récepteur USB, par exemple).
Ce sont des choses que je n'ai encore jamais fait donc il me faudra un peu d'expérimentations.
Je pourrais aussi passer par LoRa, mais le ticket d'entrée est assez cher (compter une trentaine d'euros pour une paire de modules, et il faut une passerelle - comme un point d'accès sans-fil Wifi - qui n'est pas donnée).
Autre problème : peut-être que le positionnement de la station ne sera pas convenable.
Le boîtier serait situé entre la véranda et une immense haie de laurier, un espace de moins de deux mètres les séparant.
L'utilisation d'un bras pour antenne satellite permettrait de minimiser quelque peu ce problème, mais un autre surviendra : celui de la fixation du boîtier au bras, et sa stabilité en cas de coups de vents.
Néanmoins, ce bras me permettra d'installer l'anémomètre, la girouette et autres capteurs du même genre assez facilement et sans devoir tirer des kilomètres de câbles.
3. Séparer la station
Je garderai les deux boîtiers actuels, en remplaçant simplement les connecteurs du câble pour le rendre compatible avec STEMMA QT (en gros, passer à des JST-SH).
La station extérieure ne comprendrait qu'un ESP8266 et le BME280 (et ultérieurement, les autres capteurs exclusivement extérieurs comme l'anémomètre, la girouette, etc.).
Une deuxième station, placée à l'intérieur de la maison, serait équipée de l'ESP32 et de tous les autres capteurs pouvant fonctionner en intérieur (les trois capteurs de lumières, le GPS, etc.)
*Avantages :*
- Pas de prise de tête, notamment pour l'alimentation, ou la fabrication ou l'achat d'un nouveau boîtier
*Inconvénients :*
- Maintenance logicielle accrue (deux micro-contrôleurs à programmer au lieu d'un seul)
- Réduction mécanique de la précision des capteurs de lumière puisqu'ils seront positionnés à une fenêtre, derrière une vitre
- Pas vraiment possible d'avoir un ensemble à 100% indépendant du réseau électrique (à terme) sans multiplier par deux le matériel nécessaire, pas forcément abordable de base
Je partais sur un boîtier de type "pupitre" à placer devant une fenêtre, avec un panneau transparent.
Ainsi, les capteurs de luminance + UV + couleur pourraient faire leur travail.
Mais la présence d'une fenêtre, l'angle du pupitre et l'orientation des capteurs vont indubitablement altérer de façon importante la précision et l'utilité des données récoltées.
Typiquement, il suffit que mon épouse allume la lumière dans le bureau (là où le boîtier serait placé) pour que mes mesures n'aient plus aucun intérêt (et que ça coupe les lumières partout ailleurs dans la maison...).
Placer ce boîtier à l'extérieur n'est pas envisageable, n'étant pas étanche.
Cela reviendrait à partir sur l'option #2 ci-dessus.
## Stockage des données
Je réfléchi à deux possibilités évidentes :
- une base de données *time-series* du genre InfluxDB
- une base de données "traditionnelle" du genre PostgreSQL
À l'heure actuelle, les données sont périodiquement récupérées par un serveur Prometheus.
Ce système présente quelques défauts, selon moi et pour stocker des données météo :
- pas de temps réel : le serveur fait la demande (selon ma configuration, une fois par minute) des données à la station météo ; c'est un problème pour les capteurs "nécessitant" une lecture "immédiate" (typiquement, le capteur d'orage : je peux savoir combien de décharges ont eu lieu dans les dernières 60 secondes, mais pas d'avertissement en temps réel dès qu'une décharge est détectée)
- pas prévu pour le stockage à long terme : dans la théorie, une *time-series database* supprime les anciennes données ("anciennes" étant une valeur paramétrable), alors qu'une base de données traditionnelle stocke ses données "éternellement"
Je me fais aussi quelques réflexions sur la question des transferts réseau.
À l'heure actuelle, à chaque changement de valeur d'un capteur, un message est émis sur MQTT, auquel il faut ajouter les accès du serveur Prometheus (chaque minute, donc).
Je trouve que ça fait beaucoup pour de l'électronique embarquée.
A priori, les stations professionnelles ont "résolu" le problème en envoyant les données des capteurs via un réseau RF à une console de logging, qui, elle, permet d'accéder aux données.
J'ignore toutefois comment ces données y sont stockées.
J'utilise MQTT pour son immédiateté et Prometheus parce que son intégration avec Grafana est facile : je peux générer des graphiques facilement et naviguer temporellement dans ces graphiques.
Cela implique de faire tourner un serveur web sur la station météo (l'*endpoint* pour Prometheus), ce qui a un coût en terme d'énergie (et dans une moindre mesure pour un ESP32, en terme d'utilisation CPU).
À partir du moment où j'émets la valeur des capteurs en temps réel sur MQTT, je n'ai pas fondamentalement besoin d'un *endpoint* pour Prometheus sur la station météo : il suffit que, sur une autre machine (typiquement, mon serveur principal), je dispose d'une application qui se connecte à MQTT et enregistre chaque changement de valeur des capteurs, et éventuellement, effectue une action (par exemple, envoyer une alerte lorsqu'un impact de foudre est détecté).
Cette application serait donc responsable de la collecte et du stockage des données, ainsi que de l'exécution de séquences de code pré-définies.
Rien ne l'empêche d'exporter ces données vers Prometheus, ceci-dit.
Il y a évidemment un point que j'ignore volontairement, c'est la périodicité d'interrogation des capteurs.
J'ai fait le choix conscient de laisser une période d'interrogation de 60s (définie par défaut par ESPHome), mais en pratique cette période change en fonction des recommandations que l'on choisit de suivre (celles de Météo-France ou de la WMO) et de la donnée mesurée.
Cela dépend aussi de la précision que l'on cherche à atteindre.
En ce qui me concerne, je ne cherche pas une précision de laboratoire (sinon je n'utiliserai probablement pas des capteurs aussi abordables).
Par conséquent, je pourrais réduire cette périodicité afin d'économiser de l'espace de stockage et de la consommation électrique.
Et même, définir des plages horaires où des mesures plus régulières sont intéressantes : en journée, je n'ai que peu d'intérêt pour la luminance par exemple, à partir du moment où elle dépasse un certain seuil.
C'est lorsque la luminance approche de ce seuil que la précision des mesures devient intéressante (dans mon cas d'usage).
Mais je pense que là, ça serait faire de l'overengineering 😁
Néanmoins, je trouve ces réflexions intéressantes.
Pour en revenir au coeur du sujet, la stack évidente c'est Telegraf qui se place entre MQTT et InfluxDB.
Je n'aime pas cette solution pour différentes raisons :
- j'aimerais simplifier l'infrastructure en limitant les applications intermédiaires
- il est possible de se passer de Telegraf si je payais une plus-value, ce qui ne m'intéresse pas (je rappelle que je fais ça en tant que hobby)
Mais quoiqu'il arrive, j'ai de toute façon besoin d'un pont entre MQTT et une *time-series database*...

View File

@@ -0,0 +1,2 @@
file: sounds/Rz7pM4.mp3
title: Pic vert, à une trentaine de mètres

View File

@@ -0,0 +1,2 @@
file: sounds/giHuWL.mp3
title: Pie, dans le champ voisin

View File

@@ -0,0 +1,2 @@
file: sounds/lLgMhQ.mp3
title: Corneille noire, à une vingtaine de mètres

View File

@@ -0,0 +1,2 @@
file: sounds/pMWFOQ.mp3
title: Moineau, deux mètres au-dessus du micro

View File

@@ -0,0 +1,159 @@
---
date: "2023-01-24"
title: Mon RaspberryPi 4 est enfin utile
---
J'aime bien râler.
Et j'ai râlé sur le [Rapsberry Pi 4](/interets/informatique/2021/02/28/rant-raspberry-pi-4/).
J'ai aussi râlé sur [Hugo](/interets/informatique/2022/02/12/rant-hugo-et-tailwind/), et c'est ce qui m'a valu la visite d'[@Arnob](https://matrix.to/#/@arnob79:matrix.org) sur [mon salon Matrix](/contact/).
En fouillant un peu [son blog](https://arnauld.org/interets/informatique/), je suis tombé sur [BirdNET-Pi](https://arnauld.org/interets/informatique/posts/birdnetpi/).
Un Raspberry Pi 4B, un micro, un peu d'IA, et on peut déterminer quels oiseaux chantent dans son jardin !
Pour la petite histoire, j'envisageais de mettre un micro sur [ma station météo](/interets/informatique/2022/02/14/la-station-meteo-parfaite/) histoire de jouer un peu avec l'analyse spectrale et, pourquoi pas, de l'IA pour de la reconnaissance de sons.
L'idée initiale était d'équiper le futur micro-contrôleur d'un simple micro electret, et d'envoyer le flux audio à mon serveur principal pour le "traiter".
Là, avec [BirdNET-Pi](https://www.birdweather.com/birdnetpi), le "traitement" se fait directement sur le Pi4.
En arrière boutique, c'est [TensorFlow](https://www.tensorflow.org/) qui est utilisé pour reconnaître le chant des oiseaux et déterminer leur espèce.
Bon, apparemment, la version de BirdNET utilisée par BirdNET-Pi [est obsolète](https://github.com/mcguirepr89/BirdNET-Pi#introduction), mais ça constitue un bon point d'entrée.
Mais commençons par le début.
## Configuration
J'utilise un Raspberry Pi 4B avec 2G de mémoire, et une carte micro-SD Sandisk de 128G.
Comme suggéré par BirdNET-Pi, je l'ai doté d'une [carte son USB UGREEN](https://www.amazon.fr/dp/B087T5H3MQ).
Pour le micro, c'était un peu plus compliqué de choisir.
Pour le coup, ma principale contrainte était le budget.
Je suis donc parti sur un [Boya BY-MM1](https://www.amazon.fr/dp/B07175JZ27).
En vrai, je l'ai pris parce que la moumoutte me plaît bien...
Bon je sais, c'est pas très pro comme processus de sélection, mais je peux toujours passer à quelque chose de mieux quand j'aurai de nouveau un peu de budget, si jamais celui-ci ne me donne pas satisfaction.
Il fallait surtout qu'il dispose d'un connecteur jack TRRS, afin d'être supporté par la carte son USB.
Pour la partie technique, ça peut rapidement devenir compliqué à mesure qu'on veut monter en gamme.
Pour l'heure, je ne cherche pas à en faire une activité professionnelle.
Comme tout ce que je fais, c'est du hobby.
Mais des éléments comme la longeur des câbles, l'impédance, le gain, la technologie du micro, la bonette, etc., entrent en jeu quand on cherche à en avoir un véritable usage scientifique.
Et évidemment, on n'a rien sans rien : plus on paye cher, meilleur sera le matériel.
En outre, avoir un microphone pro sur une carte son à 15€ n'a pas vraiment de sens.
Mais un vrai DAC avec tout ce que ça implique d'électronique de traitement du signal n'est pas donné non plus.
Enfin, je fais aussi avec mes contraintes environnementales : pas question, pour le moment, de me lancer dans une installation waterproof sur batterie et panneau solaire.
Le micro sera installé sous le toit de la véranda, ce qui présente l'intérêt de le protéger de la pluie et du vent, mais l'inconvénient d'être couvert.
Donc je fais des compromis.
On verra après pour monter en gamme si vraiment j'en ressens l'envie.
## Raspberry Pi OS
Ça faisait des années que je n'avais pas mis les mains sur cet OS, donc j'ai fait ce que je fais d'habitude :
```shell {class=not-prose,linenos=false}
touch ssh
nano wpa_supplicant.conf
```
Pour rajouter ma config wifi, je mets le Pi en place, je le boot, je le vois, j'essaye de me connecter :
```shell {class=not-prose,linenos=false}
ssh pi@10.10.255.50
```
Merde, marche pas...
J'aurai dû [lire la doc](https://www.raspberrypi.com/documentation/computers/configuration.html#configuring-a-user)...
Bien pour la sécurité : l'utilisateur `pi` n'est plus créé par défaut : il faut ajouter un fichier `userconf.txt` pour une installation _headless_.
Je me fais pas chier : j'éteins le Pi, sors la carte SD, refait ma manip, ajoute le fichier, démarre et teste ssh : tout roule.
On passe à BirdNET-Pi.
## BirdNET-Pi
Du côté des bonnes choses : on lance le script, tout s'installe tout seul, ça redémarre, ça marche.
C'est fluide, pas d'erreur, pas de bidouille.
Tout s'installe sans intervention, et l'appli est directement accessible depuis le navigateur.
Pour un truc aussi "lourd", je suis agréablement surpris.
Du côté des choses moins bonnes, je suis un peu embêté par 2-3 trucs relativement anodins, comme le renommage de la machine, la modification du prompt, ce genre de choses.
J'aurais apprécié que le script d'installation ne touche pas à ces détails parce qu'en dehors de rajouter des éléments au `PATH`, il n'y a pas de raison de faire ces changements.
C'est d'autant plus embêtant que le script d'install est relativement complexe et éclaté en plusieurs fichiers.
Du point de vue du développeur, c'est très bien (c'est propre et tout), mais je ne peux pas le lire en diagonale pour voir ce qu'il fait (et pourquoi).
Mais c'est vraiment une remarque mineure : tout fonctionne après une ligne de commande et sans bidouillage.
Que demander de plus ?
Surtout que la configuration de l'application semble assez exhaustive, et les possibilités nombreuses.
Ça semble très bien foutu, et il me tarde d'avoir mes premiers résultats !
## Son
Le premier test consiste évidemment à s'assurer de la qualité de la captation.
Je n'ai pas vraiment de point de comparaison, mais je suis assez satisfait.
J'ignore vraiment ce que donnerait le son capté par un matériel moins abordable, mais je suis satisfait.
Et d'ailleurs, BirdNET-Pi m'a déjà détecté quelques espèces (dont j'ai pu confirmer visuellement la présence).
{{< sound "lLgMhQ" >}}
{{< sound "pMWFOQ" >}}
{{< sound "giHuWL" >}}
{{< sound "Rz7pM4" >}}
## Qualité de détection
J'ai quelques reproches à faire.
Le plus embêtant : mes poules sont détectées comme des petits-ducs ou comme des hulottes.
Même le chant du coq voisin n'est pas correctement détecté, même quand on n'entend que lui.
Ensuite, comme précisé en intro (et sur la page github du projet), les modèles utilisés pour la détection sont obsolètes.
Je dois donc faire une croix (pour le moment) sur la détection du chien, des chats, des chèvres et d'autres bruits environnementaux.
J'aurais apprécié pouvoir indiquer à l'application qu'une détection particulière correspond à une autre espèce que celle sélectionnée par l'application.
Enfin, je ne sais pas si ça serait faisable, mais il aurait été utile de pouvoir d'étendre les modèles fournis par défaut.
Je n'y connais rien en IA : je ne sais pas si l'application dépend de modèles particuliers créés pour elle, ou si les modèles sont agnostiques.
## Ergonomie
Bon, comme souvent dans les applis un peu scientifiques, le HTML/CSS/Javascript sont mal branlés (des iframes 😱) et le résultat est assez moche.
Mais au moins, ça existe.
Au moins, j'ai une interface web qui m'évite de trimbaler un écran et un clavier à l'extérieur.
Il y a quelques outils externes intégrés, comme [phpSysInfo](https://phpsysinfo.github.io/phpsysinfo/) pour garder un oeil sur l'état du Raspberry Pi, un émulateur de terminal, [adminer](https://www.adminer.org/) pour inspecter la base SQLite, un explorateur de fichiers, etc.
Tous ces outils sont dispensables pour quelqu'un qui maîtrise GNU-Linux, mais je respecte leur présence qui sera utile aux autres, ou simplement pour faciliter un peu le quotidien.
## Conclusion
Bon, déjà merci à @Arnob pour m'avoir fait découvrir BirdNET-Pi.
Ça me permet d'utiliser un Pi4 qui prenait la poussière, et de m'initier à l'analyse audio environnementale.
C'est ce que je voulais faire avec ma station météo (ou conjointement), et je cherchais un side-project pas trop chiant ni coûteux.
Donc c'est un carton plein.
Maintenant que j'ai une idée de ce qui peut être fait, je veux aller plus loin.
J'ai quelques idées pour la suite :
- remplacer le Pi4 par un Pi 0W moins énergivore (oui, du coup le Pi4 retrouvera son placard...)
- streamer l'audio vers mon serveur principal
- faire l'analyse sur mon serveur principal
- rajouter une caméra (qui ne filmera pas forcément les oiseaux détectés - ça serait intéressant mais beaucoup trop compliqué et inabordable, mais j'imagine qu'il y aurait un système PTZ avec triangulation en fonction de micros stéréoscopiques ou quelque chose du genre)
De cette façon, j'arriverai peut-être à faire des analyses plus détaillées et plus efficaces qu'avec les modèles obsolètes de BirdNET-Pi.
Comprenez-moi bien : je critique certains aspects de BirdNET-Pi mais ces critiques ne sont pas négatives.
Le projet est utile, intéressant, abouti, et avec du meilleur matériel audio, j'obtiendrai logiquement de meilleurs résultats.
Son existence est importante, et permet de découvrir son environnement du point de vue de l'ornithologie.
L'obsolescence dont je parle concerne simplement le fait que les derniers modèles d'entrainement incluent des espèces non-aviaires, mais si on reste focalisé sur les oiseaux, BirdNET-Pi fait du très bon travail.
Mais en ce qui me concerne, je veux toujours aller plus loin.
Je veux qu'un tel système soit capable de détecter davantage que des oiseaux dans le spectre sonore.
À vrai dire, si j'en ai la possibilité un jour, j'aimerais pouvoir analyser les infrasons et les ultrasons en plus de la plage couverte par un micro "classique".
Du coup, BirdNET-Pi est, pour moi, une - excellente - introduction.
Une étape vers quelque chose de plus vaste.

View File

@@ -0,0 +1,89 @@
---
date: '2023-02-10'
title: Faire du développement un artisanat
---
## Une histoire qui se répète
### L'industrie du métal
Je ne peux qu'imaginer l'enthousiasme du premier forgeron qui s'aperçu que, chauffant le métal, il pouvait lui donner toutes sortes de formes.
Il devait savoir qu'il allait changer la vie de ses congénères, en leur fournissant des outils pour faciliter leur travail, des fournitures pour améliorer le confort de la vie quotidienne, des protections contre les dangers.
Ce savoir s'est largement diffusé et, avec cette diffusion, il s'est enrichi des essais de tous les autres humains qui ont été séduits par cette voie.
L'industrialisation de la forge a entraîné une modification des techniques et des objectifs de production.
L'or, le platine, le fer, d'abord martelés à froid pour produire des bijoux, ont ensuite été chauffés pour faciliter leur travail.
Une facilitation qui a permis de produire d'autres objets, et notamment, des armes.
Alors quand les grandes guerres antiques ont éclatés, l'industrie du métal a changé.
De plus en plus de forges, de forgerons et de fours à métaux étaient nécessaires pour suivre la cadence imposée par les champs de bataille.
De rares forgerons ne prirent pas part à cette frénésie, préférant continuer à travailler des bijoux ou des objets du quotidien, avec des outils obsolètes au regard de l'industrie martiale.
La pénibilité de leur travail fut accrue, l'intérêt pour leurs productions fut réduit, car moins compétitifs que les industries métalliques de masse des grandes cités humaines.
Le forgeron devint tout à la fois le métier le plus essentiel de la chose martiale, et un métier d'artisanat dans les campagnes.
### Le ferrage
Autre travailleur bouleversé par l'industrie, subsistant toutefois encore aujourd'hui sous la forme d'un artisanat, mais autrefois essentiel au bon fonctionnement de la civilisation humaine : le maréchal-ferrant.
À une époque, pas si lointaine (moins de 200 ans), où le cheval était encore le moyen de transport de personnes le plus utilisé, empruntant toutes sortes de routes, boueuses ou pavées, c'est le maréchal-ferrant qui s'assurait de l'entretien de nos fidèles montures, et les rendait capable de traverser les terrains par lesquels on souhaitait passer.
Mais avec l'avènement des véhicules motorisés, permettant de transporter des charges plus lourdes sur de plus longues distances, beaucoup plus rapidement et sur une grande variétés de terrains, le métier devint obsolète.
On comptait déjà 250 000 automobiles sur les "routes" en 1907, et plus de 300 millions en 1975.
Devant un tel succès, le cheval a été relégué à un animal agricole, ou de loisir pour citadins en manque de nature.
Le métier de maréchal-ferrant est alors devenu un artisanat.
Une poignée de gens sont encore capables de le faire, mais ils le font avec passion et rigueur.
Une passion et une rigueur peut-être absentes chez la plupart des fabriquant automobiles...
### La pierre
Dernier exemple pour illustrer mon postulat : le travail de la pierre.
Qui réalise encore des sculptures en pierre, sinon les artistes et les artisans ?
Sans même parler de l'industrie lithique qui a précédé l'Âge du Fer, parlons du Moyen-Âge, où la production de pierre de maçonnerie a été la plus importante dans l'histoire de la civilisation humaine.
Tout le monde voulait de la pierre : pour les cathédrales, les palais royaux, mais aussi en ville, et même pour des demeures plus modestes.
Le Moyen-Âge, et dans certains cas même avant, fut à l'origine des plus belles et des plus robustes constructions en pierre.
Le travail de la pierre avait atteint un niveau de précision tel qu'encore aujourd'hui, on se demande parfois comme ils ont fait.
Constatons nos difficultés à comprendre comment les Pyramides ont été érigées, ou comment le béton romain durcirait avec le temps.
Aujourd'hui, nous employons d'autres matériaux de construction, tels que les briques, les parpaings, le bois.
Des matériaux faciles à produire en d'énormes quantités, peu chers, dont l'aspect esthétique importe peu puisqu'ils seront toujours cachés derrière un parement, et finalement impersonnels.
Des matériaux qui, certes, ont d'autres qualités, notamment en terme d'isolation.
Des qualités face auxquelles la pierre peut difficilement rivaliser.
Alors, très vite, le métier de tailleur de pierre n'était plus le métier le plus important de son industrie d'origine.
C'est devenu un artisan, qu'on appelle pour des projets spécifiques, nécessitant des connaissances spécifiques, une rigueur perdue, un talent particulier.
## Vers l'artisanat du développement
Je crois que nous avons atteint ce point où le métier de développeur en est là.
Nous sommes des millions à exercer ce métier, et nous sommes beaucoup à nous penser en fin de course.
Je vois beaucoup de témoignages sur Internet, en ce moment, de développeur se pensant en fin de carrière.
Des développeurs qui, comme moi, ont commencé quand il y avait tout à faire.
Quand les projets avaient du sens, parce que l'industrie naissait.
Mais aujourd'hui, l'industrie du développement est à son paroxysme.
Les applications sont tout à la fois disponibles en quantité ahurissante et pauvres d'intérêt.
Les projets apportant une réelle plus-value sont peu nombreux, et survivent, parfois difficilement.
Comme le forgeron, le maréchal-ferrant et le tailleur de pierre en leur temps, nous constatons que notre métier n'a plus la même valeur qu'auparavant.
Nous voyons l'industrie s'en être emparé, l'avoir transformé pour des usages hostiles aux utilisateurs, et nous ne voulons plus en être des contributeurs actifs.
Nous sommes en quête de sens à notre propre métier, celui auquel nous avons dédié nos vies, celui qui nous a donné nos lettres de noblesse.
Alors, nous devons nous préparer, pour que "développeur" devienne un métier d'artisanat, plutôt qu'un métier oublié.
Un artisanat comme ceux que j'ai mentionné dans cet article : auréolé de sentiments positifs, inspirant la rigueur, le travail d'exception, personnel, reconnaissable.
Nous n'échapperons pas à l'industrialisation ; nous y sommes même déjà confrontés puisque nous sommes déjà en quête de sens dans nos carrières professionnelles.
Ceux qui resteront ancrés dans l'industrialisation devront en embrasser les principes de production impersonnels, fades, peu attrayant et sans valeur ajoutée mais attirant de gros volumes de clients.
Les autres disparaîtront (changeront de carrière) ou deviendront artisans.
Nous sommes dans cette époque charnière, où l'industrie est à l'affût d'une technologie qui va profondément changer le métier.
On le voit dès qu'une Intelligence Artificielle remue un peu : les poids lourds de l'industrie sont sur le qui-vive, se lancent - parfois avec pertes et fracas - et espèrent une transformation radicale et inattendue, comme essayant de violer la sérendipité pour faire avancer les choses plus vite, et mettant en danger le métier de développeur au profit de solutions moins coûteuses, voire sans aucune maintenance.
Mais le danger n'est pas là, ce n'est qu'une transformation de la société qui s'est déjà vue par le passé.
Le danger, c'est de ne pas anticiper cette transformation.
La réponse à cette anticipation ne peut être qu'individuelle : ferez-vous le choix de changer de carrière, ou de transformer le métier de développeur en artisanat, comme tant d'autres professions ont réussi à le faire ?

View File

@@ -0,0 +1,167 @@
---
date: '2023-02-14'
title: 'Rant : Le son numérique, c''est de la merde'
---
Je crois que rien en informatique et dans les technos audio/vidéo ne m'a plus pris la tête que le son.
## La galère du 5.1
J'ai toujours choisi mon matériel audio/vidéo en fonction de son support du son multi-canal.
La stéréo, c'est bien pour la musique, mais moi, je veux du 5.1 pour mes films.
Je dispose de deux kits Logitech : le z5500 et le z906.
Ils prennent en entrée de l'optique, des jacks, du RCA, bref, la totale.
Je suis donc censé avoir du choix, et je suis donc censé sortir du 5.1 assez facilement.
La façon la plus sûre de sortir du **vrai** 5.1, c'est sous Windows ou GNU-Linux en passant par un câble triple-jack.
Là, on est à peu près certain que le son n'est *altéré* (transformé en 5.1 à partir d'un signal stéréo) ni par le système d'exploitation, ni par l'ampli (le décodeur - à moins de sélectionner explicitement l'option de spatialisation).
Dans tous les autres cas de figure, il est plus ou moins impossible de savoir si le son entendu est le son "d'origine" (tel que fourni par le média source) ou un son modifié par le système ou par l'ampli.
Typiquement, j'ai une source dont je sais que l'audio est en DTS mais l'ampli me la détecte comme du Dolby : le signal a été altéré par l'un des périphériques entre les deux, soit le téléviseur, soit la platine blu-ray, l'Apple TV, etc.
## Faudrait se mettre d'accord
Par exemple, depuis que je me suis équipé du z5500 il y a à peu près vingt ans, tout le monde disait que la fibre optique (toslink) c'était le top.
Aujourd'hui, je lis un peu partout que SPDIF/Toslink ne peut pas sortir autre chose que du stéréo.
Et puis, j'avoue que je ne comprends toujours pas comment un câble optique ne peut pas supporter un son en 5.1 sans compression.
D'après la [Wikipédia](https://fr.wikipedia.org/wiki/TOSLINK), un câble toslink peut supporter 250Mb/s.
Il y a sans doute une explication mais ça me gonfle de la chercher, là.
J'en ai ma claque de lire tout et son contraire, et de ne pas trouver de réponse ferme et définitive, et au-delà de ça, j'en ai ma claque des gens qui répondent n'importe quoi pour ne pas passer pour des abrutis.
Si du côté des ordinateurs sous Windows et GNU-Linux on peut trouver une solution satisfaisante (le triple-jack), tout le reste est franchement daubé du cul.
En ce qui concerne mon Mac Mini M1, il ne dispose comme sortie son que d'un unique connecteur jack pour un casque.
Apple prévoit deux scénarios :
- soit vous passez par un DAC externe (comme un ampli audio/vidéo) qui va extraire le son de la sortie HDMI ("t'as les moyens de te payer un Apple, donc t'as les moyens de te payer un DAC")
- soit vous passez par le sans-fil, par exemple via une Apple TV, ce qui ne fait que décaler le problème, ou par un HomePod, ce qui élimine le problème en oblitérant le postulat initial : "on s'en tape du 5.1, la spatialisation maison est vachement plus mieux tu vas voir" (en gros ce que font tous les constructeurs, pas qu'Apple)
Sauf que je ne passe pas par le HDMI pour la vidéo mais par l'USB-C, et que je n'ai pas spécialement envie de m'installer un ampli A/V dans mon bureau.
Du coup, la faute à qui ? Apple pour ne pas fournir de sortie audio exploitable ou Logitech pour ne pas proposer une entrée HDMI sur ses enceintes ?
## C'est la faute des TV
Mais le plus gros foutage de gueule vient du reste des périphériques A/V avec en première ligne les téléviseurs.
Non, je ne veux pas de votre DTS proprio custom qui essaye de produire du x.y (généralement 7.1 mais certains font plus exotique), peu importe le signal d'entrée.
Je veux le signal multicanal d'origine du média, je veux que ce soit l'ampli qui se débrouille avec.
C'est pas compliqué pourtant, c'est juste une suite de bits !
Vous me direz, "t'as qu'à aller dans les réglages".
OK.
C'est quoi la différence entre PCM, Passthrough, Bitstream ?
Vous allez me donner une réponse, et un autre internaute m'en donnera une autre, un troisième me dira d'aller sur Wikipédia, un quatrième me dira d'aller sur un forum A/V.
Bref, c'est le bordel, personne ne s'en sort et comme la terminologie change d'un constructeur à l'autre, personne ne se comprend.
[Exemple](https://www.samsung.com/us/support/answer/ANS00085244/) tiré de chez Samsung (fabricant de ma TV) :
> **PCM**: This stands for “pulse-code modulation.” Use this setting if the external device you've connected to the HDMI port has already processed the sound, and **you just want it to come out of your TV's speakers**.
>
> Note: **This changes the signal to 2.0 PCM as it passes through the TV**. If you select PCM even though you have a home theater system or soundbar connected, the sound system will only receive 2.0 channel sound and the result will not be multi-channel surround sound, even if the sound system is capable of multi-channel PCM audio.
>
> **Bitstream**: Use this setting if **you plan to have audio processed by a home theater system** or soundbar, after passing through the TV. This setting is required in order for a home theater system or soundbar to be able to offer multi-channel surround sound from other devices connected to the TV, if it is capable of it.
>
> Note: If you select Bitstream, but do not have a home theater system or soundbar connected, then **the TV will process the audio in addition to outputting it**. This can often result in reduced volume or other loss in audio quality. We recommend to select PCM when using the TV's speakers.
J'ai mis en gras ce qui m'interpelle.
Donc en gros, la TV altère le signal, peu importe le réglage.
Comment elle détecte si j'ai un ampli A/V derrière ?
C'est de la merde.
La seule réponse valable ici, c'est d'éviter les intermédiaires : brancher son ampli au plus près de la source A/V.
Rien de très original je vous l'accorde.
Ou sinon, utiliser la sortie ARC de la TV, donc du HDMI, donc obligé d'avoir un ampli A/V derrière ou un extracteur audio (voir ci-dessous).
Sauf que là encore, je lis des absurdités (toujours sur la même page de Samsung) :
> **PCM**: This setting is only recommended to use if your sound system experiences issues on higher settings (meaning the system may not be compatible with Dolby), or if it is the only option available for the content you are currently displaying on the TV. **This setting will only output the left and right channels** (2.0) and is not capable of multi-channel surround sound.
>
> **Dolby Digital**: This provides a multi-channel audio experience, up to 5.1 channels of sound. **It is compressed enough that it can be used with an optical cable**. Use this setting in order to enjoy multi-channel surround sound from sound systems that are capable of 5.1 processing.
Donc, soit j'ai du stéréo, soit du Dolby Digital.
Et si je veux le DTS de l'audio d'origine ?
La solution serait donc de disposer d'un "extracteur audio HDMI".
Ça tombe bien il y en a quelques uns abordables sur Amazon.
Et [j'en ai acheté un](https://www.amazon.fr/dp/B07P8RS62S).
Mais là c'est pareil : comment je peux savoir que le signal qui transite dans cet extracteur n'est pas altéré par cet extracteur avant d'arriver à mes enceintes ?
Typiquement, en mettant une source que je sais de source sûre être en stéréo, et en positionnant le commutateur de l'extracteur sur "5.1", je verrais sur les z5500 que le signal est en Dolby Digital 5.1.
D'où ça vient que le signal soit identifié comme Dolby Digital ?
Le z5500 est censé me l'identifier comme "Stéréo", l'extracteur est censé ignorer mon réglage "5.1" si la source n'est que stéréo.
J'ai aussi essayé le mode "Pass" de mon extracteur, censé envoyer le flux brut aux enceintes.
Sauf que je n'ai que de la stéréo.
Même chose sur ma platine Blu-ray, sauf que je sors en coaxial.
Là aussi, j'ai le choix entre du PCM et du Passthrough.
Et là aussi, j'ai l'impression d'être trompé sur le son.
J'entends la spatialisation.
J'entends du son sur mes six enceintes.
Mais je n'ai pas l'impression d'être enveloppé par le son.
Et puis, il me faut un extracteur supplémentaire pour la platine...
Ne venez pas me dire que le 5.1 de films AAA n'est pas correctement spatialisé.
Ni que les vidéos de test disponibles sur YouTube sont foireuses.
Ou que mon installation est merdique.
C'est juste qu'il est impossible d'avoir confiance dans ce qui est fait du son entre le moment où les données sont lues depuis la source et où elles arrivent dans l'ampli.
## Le 5.1, c'est so 1990, place aux... casques ?
Et la cause est toute trouvée : tout le monde s'en branle du 5.1.
Dès qu'on trouve la représentation d'un salon sur un site web ou dans un magazine, il y a une TV immense, et deux pauvres enceintes autour.
Ou une "barre de son"...
Pas de caisson de basse et encore moins de satellites.
J'ai un autre exemple pour étayer mon hypothèse.
L'idée serait donc de m'équiper d'un DAC, que ce soit pour mon Mac Mini ou pour mon Apple TV.
Il y a plusieurs cas de figure, aucun ne me convient.
Au plus bas de l'échelle, le DAC est une simple carte son externe qui produit un son médiocre.
Faible bande passante, bruit, faible compatibilité matérielle, bref, c'est de la merde.
Au-dessus, on trouve les DAC pour... casques.
Là, il y en a pour toutes les bourses, toutes les gammes sont représentées.
Mais je m'en tape des casques, j'ai des putain d'enceintes 5.1 !
Encore au-dessus, il y a les DAC sans-fil.
On dépasse déjà allègrement les 200 euros, et il m'en faut deux.
Le problème, c'est que quand c'est sans-fil, on a deux problèmes supplémentaires :
- la latence, on s'en tape pour de la musique mais pour le cinéma, c'est la merde
- le débit bluetooth, qui ne permet pas le 5.1...
Et encore au-dessus (à plus de 600 euros), il y a les gros amplis A/V.
Overkill pour mon usage, surtout qu'encore une fois, il m'en faut deux, et que pour mon bureau, je cherche quelque chose de compact.
Rien à foutre d'un pavé de 15 kilos qui me prendrait la moitié de mon bureau...
Pourquoi c'est si difficile de trouver un appareil qui prend en entrée de l'USB (donc, une carte son externe pour un usage PC/Mac) et qui sort directement du triple-jack, comme n'importe quel chipset son de n'importe quelle carte mère pour PC de base à moins de 50€ ?
J'acheterai volontier un appareil de ce type pour une trentaine d'euros.
Et, pourquoi pas, qui prend en entrée de l'USB-C, qui soit vu par l'OS à la fois comme une carte son et comme un moniteur (c'est bien le cas de mon Huawei MateView GT34), qui se contente d'extraire l'audio vers du triple-jack, et relaye le signal vidéo vers une sortie USB-C à laquelle est reliée mon écran ?
70 euros me paraitrait un prix pertinent, surtout que c'est technologiquement faisable : le daisy-chaining est dans les specs de l'USB-C...
Parce que tout le monde s'en fout d'avoir du 5.1.
En fait ce qui m'emmerde dans tout ça, c'est qu'il n'y a pas de solution simple entre la stéréo de base et le home-cinéma qui coûte une blinde, alors que j'ai de très bons amplis et les enceintes qui vont avec, et des sources audio qui sont capables de sortir du multicanal.
C'est entre les deux que c'est la merde et je trouve intolérable de ne rien trouver de convenable pour faire le lien.
Je suis même allé jusqu'à étudier l'installation d'un Raspberry Pi 4 équipé d'un DAC avec sortie triple-jack.
Sauf que là non plus, rien n'est simple.
Je ne vais pas détailler parce que ça me gonfle, rien que pour le coût énergétique de l'ensemble (faire tourner un OS en permanence, avec la maintenance que ça occasionne, tout ça pour avoir du son...)
Bref, pour résumer :
- je veux du 5.1 depuis mon Mac Mini vers mes z906
- je veux du 5.1 depuis mon AppleTV et ma platine blu-ray vers mes z5500
- sans altération ou décodage du signal source : c'est les amplis qui doivent se débrouiller avec le signal en entrée
La solution doit être simple, et elle ne l'est pas.
Ce n'est pas normal.
Remarque : [les gens sont capables de filmer et regarder des vidéos verticales avec leur putain de téléphone](https://www.youtube.com/watch?v=f2picMQC-9E), ça devrait pas m'étonner qu'ils n'écoutent les choses qu'en stéréo...

View File

@@ -0,0 +1,165 @@
---
date: '2023-02-16'
title: C'est quoi, un bon développeur ?
---
## Introduction
Je ne vous donne pas les clés pour trouver à coup sûr un boulot.
Ce n'est pas possible, et je n'en ai pas l'ambition.
Par contre, je vous explique comment être un bon dev, par opposition aux mauvais devs, parce que oui, selon moi, le métier du dev est manichéen.
On est attirés soit par l'argent (mauvais devs), soit par l'amour du code (bons devs).
Cet article devrait vous permettre de vous conforter dans l'une ou l'autre de ces catégories.
Il y en aura forcément pour me dire qu'on peut être un bon dev appâté par l'argent et un mauvais dev qui aime pourtant coder, et toutes les variations possibles entre les deux.
À ceux-là je réponds ceci : merde.
J'ai 40 ans, je code depuis que j'ai 5 ans.
J'ai travaillé dans le public, dans le privé, en association, en agence, etc.
Je code par amour du code et par amour du travail bien fait.
Jamais je n'ai choisi le dev pour des prérogatives financières.
Je m'estime être un excellent dev, expérimenté et spécialiste de son sujet (Laravel).
Et je suis attristé d'en être où j'en suis aujourd'hui : sans aucune reconnaissance.
Donc je le répète : cet article n'est pas un guide pour trouver un boulot, c'est une liste d'éléments que j'estime être cruciaux pour quelqu'un qui veut être un bon développeur dans son état d'esprit.
Quelqu'un qui a juste envie de pisser du code ne pourra pas apprécier cet article.
J'ai transmis à quelques devs ces principes au cours du temps.
Il me plait de croire qu'ils les exploitent aujourd'hui et contribuent à donner au métier ses lettres de noblesse.
## Une bonne répartition du temps
Un bon dev réparti son temps de la façon suivante :
- 80% de temps de réflexion en amont
- 20% de temps d'écriture de code en aval
C'est simple, ça se passe des appréciations des recruteurs.
Tout rapport différent, ou en tout cas où le temps de réflexion est inférieur au temps d'écriture, indique une entreprise qui s'en tape de la qualité, et donc hostile aux utilisateurs (et accessoirement, hostile à ses propres devs).
Mais le plus important dans ce rapport est son impact psychologique et la pénibilité du travail du dev (dont personne ne parle jamais alors qu'on est tous en burn-out en ce moment).
Tu préfères coder 2 jours et passer 5 jours à debugguer ta merde, ou passer 5 jours à réflechir et 2 jours à écrire le meilleur code du monde ?
Il y aura toujours des bugs, mais au moins, ils seront challengeants et intéressants à résoudre.
Tout le monde peut pisser du code.
Personne ne peut pisser du code de qualité supérieure.
## Pas de coding-game
Les coding-game, c'est pour les Jacky.
Un bon dev code bien, pas vite.
Les deux sont mutuellement exclusifs.
Si tu fais des coding-games pour le sport mais qu'à côté tu prends ton temps pour les projets importants, tant mieux.
Mais savoir prendre son temps est tout aussi difficile que de résoudre des challenges en temps limité.
Résoudre des coding-games ne fait pas de toi un bon développeur.
Ils font de toi un bon résolveur de problème.
L'étape entre les deux s'appelle le refactoring, et on ne te laisse pas le temps de le faire dans un coding-game.
Surtout qu'en dehors des coding-games, si tu réfléchi bien ton code en amont, tu as moins de refactoring à faire plus tard.
Et moins de refactoring = meilleur qualité de vie pour tous les devs.
## Faire de la veille
En tant que dev, on nous demande de maîtriser des dizaines de technos.
Pas seulement plusieurs langages avec des orientations différentes, mais aussi des outils pas directement liés au code (genre, docker).
C'est chiant de devoir maîtriser ces trucs parce que c'est le marché qui dicte ce qu'on doit maîtriser.
Donc, il est encore plus important de faire de la veille précisément sur ces technos.
Idéalement, tu as un ou plusieurs side-projects, de tout type et de toute taille, et tu t'en sers comme laboratoire pour tester les dernières versions de tes outils et langages préférés.
Le petit plus, c'est que ça remplit ton portfolio.
Si en plus tes side-projects sont partagés avec la communauté, c'est tout bénéf.
## Faire autre chose, de temps en temps
Voir mon article [Apologie de la procrastination](/interets/informatique/2022/02/22/apologie-de-la-procrastination/).
## Écrire du code comme s'il allait être relu (et il le sera)
Je ne suis pas certain que cette phrase n'ait pas déjà été prononcée, au moins sur Internet.
C'est dire à quel point elle est cruciale.
Par "relire du code", on entend trois choses :
- la code-review qui est censée intervenir avant la mise en situation
- le code relu plusieurs semaines/mois/années après son intégration
- le code lu par un nouvel arrivant dans l'entreprise
Ce dernier point est probablement le plus négligé et pourtant il n'est pas moins crucial qu'un nouveau collaborateur soit capable de prendre en main la codebase le plus rapidement possible.
Si le code part dans tous les sens, le nouveau dev aura du mal à prendre ses marques et prendra plus de temps à se mettre au travail.
## Standardiser les process
Le titre bien chiant à lire avec sa sémantique start-up...
Pourtant, utiliser des techniques de développement plus ou moins standardisées permet de rapidement s'approprier le code de quelqu'un d'autre.
Par exemple, pour PHP et Laravel spécifiquement (à ajuster en fonction des langages et frameworks que vous utilisez) :
- Lire les [PSR](https://www.php-fig.org/psr/), c'est les standards les plus importants du langage
- Lire [la doc du framework](https://laravel.com/docs/) avant d'essayer de dev une fonctionnalité, il contient peut-être déjà ce que vous essayez de faire
- Lire la doc du langage qui vous concerne...
"Standardiser les process", ça veut aussi - et surtout - dire de **ne pas réinventer la roue**.
En entreprise, arrêtez de coder des "frameworks maison", personne ne peut les connaître, les maîtriser ou être compétent immédiatement.
Ça veut dire aussi d'utiliser des librairies tierces, et surtout, savoir les choisir (en fonction de leur activité et de la communauté qui est derrière, mais aussi en fonction de sa taille et la façon dont elle est écrite).
Il est crucial d'embrasser des méthodes de travail qui ont fait leurs preuves depuis des dizaines d'années dans le métier :
- [DRY](https://en.wikipedia.org/wiki/Don't_repeat_yourself)
- [KISS](https://en.wikipedia.org/wiki/KISS_principle)
- [SOLID](https://fr.wikipedia.org/wiki/SOLID_%28informatique%29)
- et, dans un autre registre, [Merise](https://fr.wikipedia.org/wiki/Merise_(informatique)), probablement considérée comme obsolète par les startuppers qui ne la connaissent peut être même pas, alors qu'elle est dans les fondations de n'importe quel projet et de n'importe quel framework aujourd'hui
Enfin, et c'est le plus important, ça veut dire utiliser correctement les éléments de langage, en particulier les interfaces, en tout cas en PHP.
Les interfaces sont probablement les outils les plus importants du langage pour structurer son code et permettre à vos composants d'être facilement interchangeables.
## Respecter l'utilisateur final
Bon, là, il faut se faire pousser des couilles et savoir dire "non" quand on te demande de coder un truc que tu sais être hostile à l'utilisateur.
Faire de la veille sur les [dark-patterns](https://fr.wikipedia.org/wiki/Dark_pattern) est important, pas seulement pour refuser de le faire mais aussi pour éviter de tomber dedans sans faire exprès (c'est plus facile qu'on le pense, surtout côté frontend, et surtout quand on touche à la télémétrie).
Respecter l'utilisateur final, c'est faire en sorte que ton application fonctionne comme elle est prévue.
Qu'elle informe l'utilisateur quand elle doit l'informer, et qu'elle ait un comportement logique et intuitif (c'est quoi ce truc de faire des messages d'erreur du genre "Une erreur est survenue, réssayez plus tard", sans même un code d'erreur à remonter ?).
Tu mets tout le monde d'accord quand tu respectes l'utilisateur final : ce dernier parce qu'il est content d'utiliser une application qui fonctionne bien, le service support de ta boîte qui ne se fera pas engueuler à longueur de temps pour rien, et toi parce que ton application sera plus facile à debugguer.
## Aimer ce que tu fais
Si tu codes parce qu'on t'a dit que coder c'était bien payé, passes ton chemin.
Déjà parce que ce n'est pas forcément vrai, mais surtout parce que pour être un bon dev, la motivation principale ne peut pas être l'argent.
Ces remarques sont valables peu importe le métier, plus ou moins.
S'il n'y a que l'argent qui t'attire dans le dev, tu deviendras un mauvais développeur, hostile à l'utilisateur.
C'est une remarque parfaitement censée et éprouvée depuis que le web existe : plus tu es hostile à l'utilisateur, plus tu rapportes de l'argent à ton entreprise.
Ça ne fait pas de toi un bon développeur, ça fait de toi un bon [rabatteur](https://www.linternaute.fr/dictionnaire/fr/definition/rabatteur/).
Sauf qu'un bon développeur qui produit une application de qualité peut rapporter encore plus d'argent à son entreprise, en plus de ne pas entâcher sa renommée.
Et s'il y a une chose qu'une entreprise apprécie encore moins que perdre de l'argent, c'est d'avoir mauvaise presse.
Donc, tu dois coder parce que tu aimes coder.
Parce que tu apprécies la capacité créatrice de l'informatique, écrire des instructions de la meilleure façon possible pour transformer ces instructions en résultat tangible, et fiable.
## Du dev à l'artisan, puis à l'artiste
Si tu aimes ce que tu fais, tu vas entrer dans une boucle vertueuse, où tu vas chercher à produire le code de la meilleure qualité possible.
Tu vas passer (intellectuellement) du simple développeur à [l'artisan](/interets/informatique/2023/02/10/faire-du-developpement-un-artisanat/) quand tu commenceras à rejeter les mauvaises pratiques exercées en entreprise (sauf, évidemment, si tu as la chance de tomber rapidement sur une boîte qui valorise les bonnes pratiques).
Et un jour, longtemps après, tu finiras par être considéré comme un artiste du code par tes pairs.
Pour rester sur le thème de PHP et de Laravel, tu atteindras peut-être le niveau d'un [Taylor Otwell](https://twitter.com/taylorotwell), d'un [Nuno Maduro](https://github.com/nunomaduro/) ou encore d'un [Freek Van Der Herten](https://freek.dev/).
## Conclusion
Il y a mille choses encore à dire sur le sujet, et encore plus si je me focalisais sur ce que devrait être un bon développeur PHP,
mais on a là l'essentiel.
Si tu te reconnais dans cet article, tu es sur la bonne voie.
La voie du bien, celle du bon dev bien dans ses babouches.
Tu ne connaîtras pas forcément le succès (je ne l'ai pas connu), alors à toi de voir ce qui compte le plus pour toi.

View File

@@ -0,0 +1,26 @@
---
date: '2023-02-21'
title: Vers un code de déontologie des développeurs
---
Cela fait depuis quelques temps que je cherche à formaliser un code de déontologie à l'attention des développeurs.
Au moins depuis l'avènement de Google, de la publicité en ligne, et l'émergence des réseaux sociaux, voire depuis le commerce en ligne.
Après une longue et pénible expérience professionnelle dans des milieux variés, après avoir constaté que mon domaine de prédilection n'est pas peuplé que de gentils développeurs qui oeuvrent à améliorer la vie de toute l'humanité, c'est avec amertume, cynisme et un dédain que je ne peux cacher que j'ai fini par écrire (et publier) un article consacré à [la transformation du métier de développeur en artisanat](/interets/informatique/2023/02/10/faire-du-developpement-un-artisanat/) et sur ce qui constitue, selon moi, [un bon développeur](/interets/informatique/2023/02/16/c-est-quoi-un-bon-developpeur/).
La route sera longue pour en arriver là, mais une autre pierre que je peux apporter à l'édifice est la formalisation d'un code de déontologie à l'attention des développeurs.
Dans l'idée, je m'inspire évidemment du [serment d'Hippocrate](https://www.conseil-national.medecin.fr/medecin/devoirs-droits/serment-dhippocrate).
On pourra m'objecter qu'un médecin et un développeur n'ont pas vraiment les mêmes prérogatives.
Pourtant, notre société ne pourrait pas fonctionner sans informatique, et sans des gens qui l'entretiennent, et développent les outils dont elle a besoin.
On pourra m'objecter qu'il n'y a pas besoin de code de déontologie des développeurs.
Que ce n'est pas parce que je l'écris, moi, anonyme parmi les anonymes, qu'il sera reconnu.
Je suis un homme libre.
Libre d'écrire ce code de déontologie.
Vous êtes des gens libres.
Libres de ne pas le suivre.
Je publie ce code de déontologie [sur ma forge logicielle](https://git.dern.ovh/Livres/code-de-deontologie-des-developpeurs) dans un premier temps.
J'aviserai en fonction des retours sur cet article.

View File

@@ -0,0 +1,2 @@
file: images/PJKP4B.png
title: Périphérique de capture utilisé par le streaming depuis Steam

View File

@@ -0,0 +1,2 @@
file: images/fPUVra.png
title: Cliquez sur le bouton *Acquire EDID*

View File

@@ -0,0 +1,2 @@
file: images/ppT162.png
title: Tadam !

View File

@@ -0,0 +1,2 @@
file: images/v3upXS.png
title: Configuration de notre action rapide

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

View File

@@ -0,0 +1,211 @@
---
date: '2023-03-15'
title: Mon setup gaming
---
## Introduction
[Ma machine de jeu](/interets/informatique/2022/04/15/mon-nouveau-pc-de-jeu-est-arrive/) est un Ryzen 9 5900X avec une RTX3080 sous NixOS.
Je joue via la fonctionnalité "*Remote Play*" de Steam depuis mon Mac mini M1.
Jusqu'à présent, c'était assez inconfortable et trop rigide pour mes envies futures :
- le PC est dans la même pièce que mon Mac mini M1 et il peut devenir bruyant pendant le jeu
- le son ne fonctionnait pas en streaming, donc le PC était directement branché à mes enceintes
- la vidéo ne fonctionnait à la bonne résolution que si mon PC était branché directement à mon écran
Je rajouterai que les solutions de type switch/KVM USB ne m'ont jamais satisfait parce qu'elles déconnent toujours, à un moment où à un autre, manifestement à cause d'un défaut électrique récurrent.
À croire que ces ingénieurs ne savent pas relier des masses...
J'ai entrepris, et réussi, à résoudre tous mes problèmes pour obtenir une solution de streaming local pour Steam 100% headless qui soit pratique et confortable à l'usage.
Cela a nécessité pas mal de recherche, essais et échecs, alors j'ai pensé que vous faire part de mon setup serait intéressant.
On va partir du principe que votre PC de jeu est déjà fonctionnel (sur lequel vous pouvez déjà jouer dans des conditions normales).
Quelques précisions avant de commencer :
- l'image n'est pas aussi nette en streaming qu'en jouant directement sur le PC de jeu - Steam compresse peut-être un peu trop agressivement mais au moins, ça fonctionne (vous verrez que jouer via VNC à l'air pas mal comme ça mais à l'usage, c'est moins agréable que le streaming via Steam)
- il y a une très légère latence, mais si vous cherchez à faire du streaming, vous devez déjà être au courant (la latence via VNC est beaucoup plus problématique)
- les boutons latéraux de la souris ne fonctionnent pas
## Gestion de l'alimentation
Je commence par le plus simple : on va passer par du *Wake on LAN* assez classique pour le démarrage de la machine à la demande, et on laissera les options de mise en veille prolongée prendre le relais pour l'extinction de la machine.
Donc, sur le PC de jeu, on va dans le BIOS, et on active la fonctionnalité qui va bien.
Malheureusement, vu la quantité de machines différentes, je n'ai pas vraiment le moyen d'être précis.
Dans mon cas, c'est l'option *Wake by PCI-E event*, autrement dit, réveil par PCI-E, donc par le chipset réseau.
À noter : ça ne fonctionne que si la machine est câblée.
Inutile d'essayer en Wifi...
Il faut aussi le client *wol* sur le Mac.
J'ai appris que macOS intègre nativement Ruby, donc pas la peine de s'emmerder avec *brew*, il suffit de faire :
```shell {class=not-prose,linenos=false}
gem install wol
```
Testé sous macOS Ventura, mais si ça ne fonctionne pas pour vous, `brew install wol` fera l'affaire (à condition d'avoir installé [homebrew](https://brew.sh/), "évidemment").
Il faut noter l'adresse MAC du chipset réseau du PC de jeu.
Suite à quoi, on pourra faire :
```shell {class=not-prose,linenos=false}
wol <adresse MAC>
```
depuis le mac pour réveiller le PC de jeu.
Ça, c'est du classique, pas de quoi effrayer un sysadmin.
## Affichage
Là on monte d'un cran : il faut qu'on puisse se passer d'un écran branché sur la machine.
Quand on fait tout en console (par exemple, sur un serveur), c'est facile, mais là on a besoin d'un environnement de bureau.
Pour cette étape, on va avoir besoin de l'écran sur lequel on va vouloir jouer.
Dans mon cas, c'est mon GT34, physiquement branché sur le Mac mini.
Il faut donc brancher temporairement l'écran sur le PC de jeu, puis démarrer la machine.
Une fois sur le bureau, on lance le panneau de configuration NVidia, et on récupère l'EDID de l'écran :
![fPUVra](images/fPUVra.png)
On l'enregistrera au format texte dans le dossier de son choix.
Sous NixOS, on va ensuite spécifier au serveur X qu'on veut utiliser ce fichier sur un écran "virtuel" (ou en tout cas déclaré comme présent et connecté) :
```nix {class=not-prose,linenos=false}
services.xserver.deviceSection = ''
Option "ConnectedMonitor" "DFP-1"
Option "CustomEDID" "DFP-1:/chemin/vers/edid.txt"
'';
```
N'oubliez pas de modifier la directive `CustomEDID` pour pointer vers le fichier enregistré à l'étape précédente.
Dans mon cas, j'avais l'écran branché sur un port DisplayPort, donc remplacez `DFP-1` par votre sortie physique sur laquelle vous avez temporairement branché l'écran si elle diffère (par exemple `HDMI-1`).
Je ne suis pas sûr que ce soit requis mais autant faire ça proprement.
Profitons de la modification de notre configuration de NixOS pour ajouter le paquet `x11vnc`, par exemple via :
```nix {class=not-prose,linenos=false}
{ pkgs, ... }:
{
environment = {
systemPackages = with pkgs; [
# [...]
x11vnc
];
};
}
```
On peut ensuite appliquer les modifications et redémarrer la machine :
```shell {class=not-prose,linenos=false}
nixos-rebuild switch
reboot
```
À partir de là, on devrait pouvoir tout débrancher du PC de jeu (clavier, souris, écran, enceintes).
On va donc se connecter en SSH au PC de jeu depuis le Mac pour le reste du processus.
Sauf mention contraire, on exécutera les commandes suivantes en tant qu'utilisateur normal (celui qui peut jouer).
Une fois connecté en SSH, on lance le serveur VNC :
```shell {class=not-prose,linenos=false}
export DISPLAY=:0
x11vnc -usepw
```
Au premier démarrage, le serveur va vous demander de créer un fichier de mot de passe.
Au cours des démarrages suivants (en utilisant le même paramètre `-usepw`), ce fichier sera lu et `x11vnc` ne vous demandera plus rien.
On peut alors lancer un client VNC depuis le Mac (j'ai choisi [TigerVNC](https://tigervnc.org)), ce qui nous permettra de vérifier que la résolution est la bonne.
Si la résolution n'est pas bonne, il va falloir investiguer...
## Son
Maintenant qu'on accède au bureau via VNC, on va pouvoir configurer le son.
Au cours de mes premiers essais, je n'avais aucun son sur le Mac via le streaming de Steam.
Je sortai le son directement sur les enceintes depuis le PC de jeu.
Ça fonctionne, mais ce que je veux, c'est pouvoir m'abstenir de brancher quoique ce soit au PC (à part le câble réseau sinon pas de *WoL*) : à terme, je veux que celui-ci soit placé dans mon placard informatique et que je l'oublie.
Tout en gardant le client VNC ouvert, on lance Steam sur la machine cliente (donc, dans mon cas, le Mac mini), et on lance une session de jeu en streaming, peu importe le jeu.
Quand le jeu est lancé, on retourne dans le client VNC, et on affiche les paramètres de son.
L'astuce pour avoir le son en streaming est simple mais le comportement par défaut de pulseaudio est de couper le son du périphérique d'enregistrement de Steam qui permet le streaming.
Il suffit de l'activer, encore fallait-il le savoir !
![PJKP4B](images/PJKP4B.png)
Il faut donc aller dans l'onglet "Enregistrement", il faut activer l'option "Tous les flux" du menu déroulant "Afficher" en bas de la fenêtre, s'assurer que le "Monitor of..." corresponde bien à une sortie son qui est valable (sur laquelle on aurait du son si on branchait des enceintes dessus) et il faut s'assurer que le bouton 🔇 ne soit pas actif... sachant que tout cela n'est disponible QUE lorsqu'un jeu est en cours de streaming.
Quand ça c'est fait, on est bons !
Tous ces réglages survivront - heureusement - à l'arrêt du streaming et au reboot de la machine.
## Bonus
En bonus, j'ai pu découvrir quelques fonctionnalités bien sympathiques de macOS, et en particulier, l'application [Automator](https://support.apple.com/fr-fr/guide/automator/welcome/mac).
Celle-ci permet notamment d'ajouter des "Actions rapides" aux applications.
Ici, on va créer une action rapide pour Steam, qui va permettre de démarrer le PC de jeu via *WoL* en un clic de souris.
Après avoir lancé Automator, on créé un nouveau document, puis une nouvelle action rapide.
![v3upXS](images/v3upXS.png)
On enregistre ensuite le document, qu'on intitulera par exemple "WoL PC de jeu".
Comme par magie, dans le menu principal de Steam on obtient le résultat suivant (sans même redémarrer Steam...) :
![ppT162](images/ppT162.png)
## Conclusion
J'ai été très surpris de la difficulté de trouver les informations relatives à l'affichage et au son.
J'ignore si c'est parce que la majorité des joueurs est toujours sous Windows et que Windows est plus permissif que pulseaudio en ce qui concerne le streaming audio, ou à cause de la diversité des environnements sous GNU-Linux, ou encore parce que je veux faire un truc que personne n'a fait.
Ma solution n'est pas encore parfaite, mais elle correspond à mes envies du moment.
Je me doute que mon cas d'usage est très spécifique, néanmoins il me plait de croire que vous aurez trouvé cet article intéressant !
### Avantages
- Tout fonctionne
- En vérité, ce n'est pas si compliqué que ça, une fois qu'on a trouvé quoi faire...
### Inconvénients
- La spécification d'un EDID dans la configuration de xserver impose des caractéristiques particulières : pour le moment, je ne peux pas jouer sur un écran 4K (sur ma TV par exemple) dans des conditions optimales, parce que l'EDID de mon écran est celui d'un écran 3K
- Il faut allumer le PC de jeu via une action spécifique : une amélioration possible serait que Steam procède directement à l'allumage de la machine quand on veut démarrer une session de jeu, mais il faut reconnaître que Steam affiche la liste des jeux disponibles en streaming : il faut donc que la machine distante soit déjà allumée et Steam lancé
### Pistes suivies
J'avais trouvé une solution qui fonctionne bien si on veut un environnement dockerisé : <https://github.com/Steam-Headless/docker-steam-headless>
La solution proposée est bien foutue, pratiquement clés en main, avec le client [noVNC](https://novnc.com/info.html) bien pratique à lancer dans un navigateur.
Par contre, la mise en veille du PC physique nécessite des ajustements.
En ce qui concerne la question de la résolution de l'écran virtuel, avant d'exploiter la technique de l'EDID, j'ai testé l'usage de la commande suivante, conjointement à [Xvfb](https://fr.wikipedia.org/wiki/Xvfb) :
```shell {class=not-prose,linenos=false}
export DISPLAY=:0
xrandr --fb 3440x1440
```
Cette solution me semblait parfaite parce que très légère et très simple.
Ça fonctionne parfaitement bien dans presque tous les cas de figure (même le contrôle via VNC fonctionne), sauf certains jeux.
En l'occurrence, [Dwarf Fortress](/critiques/jeux-video/dwarf-fortress/) crash au démarrage.
En écrivant cet article, je me rends compte que c'est probablement parce que je lançais uniquement Steam via `xvfb-run`, et que le problème ne se poserait pas si je lançais carrément une session XFCE4.
Je testerai à l'occasion.
Enfin, j'aurai pu suivre une autre piste en ce qui concerne l'écran virtuel, c'est le dongle HDMI.
Celui-ci simule un écran en envoyant au PC un EDID dont le serveur X déduit les caractéristiques.
Sauf que ce n'est pas assez flexible pour moi.
Un dongle "4K" sera incapable de m'envoyer du 3440x1440, et surtout, ces dongles sont limités aux 60Hz quand moi je veux du 120Hz au minimum.
Et puis, pourquoi acheter si je peux solutionner le problème avec une ligne de configuration...

View File

@@ -0,0 +1,2 @@
file: images/6z5TuR.png
title: nperf depuis le Mac mini M1 en wifi

View File

@@ -0,0 +1,2 @@
file: images/EqqUs8.jpg
title: Une soudeuse à fibre optique

View File

@@ -0,0 +1,2 @@
file: images/PEjaCD.png
title: nperf depuis le PC de jeu câblé

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

View File

@@ -0,0 +1,272 @@
---
date: '2023-03-17'
title: Passage à la fibre optique
---
Bon ben voilà, je suis passé à la fibre.
Faut que je vous raconte !
## Teasing
Je n'ai jamais eu mieux que de l'ADSL en 16Mb/s.
Et très honnêtement, c'était largement suffisant.
Avec un bon réseau bien configuré, ça se tient bien, même pendant des visios.
Le téléchargement de jeux via Steam pouvait prendre des plombes, c'est vrai (coucou [Ark](/critiques/jeux-video/ark-survival-evolved/) !).
Je devais faire l'impasse sur la 4K pour la VoD, c'est vrai.
Mais :
1. Il suffit d'être patient et/ou télécharger la nuit, comme au bon vieux temps
2. De toute façon, je ne paye pas assez cher Netflix pour avoir de la 4K (ceci dit, j'ai Amazon Prime et AppleTV en renfort)
Étant dans un monde (l'informatique) impitoyable où, si tu n'évolue pas avec le reste du monde, tu meurs (je sais, c'est valable dans la vraie vie aussi), et à force de voir tout le monde autour de moi être tout fier de sa fibre, il faut reconnaître que ça commençait à me manquer.
Donc, quelle ne fut pas ma joie lorsqu'il y a trois ans, j'ai pu assister à une réunion d'information concernant l'arrivée de la fibre dans ma commune perdue là haut dans la campagne/montagne !
Joie de courte durée puisque seuls Orange et SFR (ou Bouygues, je ne sais plus) seront sur le marché dans un premier temps.
Bon, ça m'en touche une sans faire bouger l'autre : mon ADSL tient bien la route, je prendrai mon mal en patience.
Je suis obstiné, je refuse de passer à l'ennemi (quelque soit son nom).
Pendant cette réunion, on me fait remplir un papier pour qu'on fasse le pré-câblage, avec la menace que si je ne le fait pas tout de suite, on va me demander de payer plus tard.
Je m'exécute.
Quelques mois plus tard, l'installateur débarque, m'engueule parce que le regard est obstrué (quelques brindilles et feuilles mortes), et part en me disant qu'il peut rien faire pour moi.
Connard.
Bon, de toute façon free n'est pas sur le marché, on verra en temps voulu.
Courant 2021, je reçois un mail de free, "La fibre bientôt chez vous".
Décembre 2022, "La fibre arrive".
Et puis, 14 mars 2023 : "Prenez rendez-vous avec un technicien", ce que j'ai fait - ce que mon épouse a fait puisque c'est elle la cliente officielle - dans la foulée.
Deux jours plus tard, il débarque.
Sacré teasing de free.
Vous avez testé ma patience : je suis très patient, et fidèle 😁
## Une installation folklorique
J'ai paniqué à tous les étages :
- le technicien ne va pas vouloir fibrer parce que l'installateur n'a pas fait le pré-raccordement
- il ne va pas réussir à trouver le fourreau, ou à passer la fibre dedans
- il ne va pas réussir à poser la prise
- il ne va pas pouvoir la poser là où je la veux
Bref, loi de Murphy dans ma tête.
Trop de trucs qui peuvent se casser la gueule, ça va forcément mal se passer.
Sans parler du technicien : vu certains commentaires sur le net, je suis pas à l'abri de tomber sur un connard.
Hé ben, pour la faire courte, je crois que je suis tombé sur le meilleur technicien du monde.
La trentaine, venu d'Algérie pour faire une licence en électricité et électronique, il a fini par monter sa boîte.
Il travaille en sous-traitance pour les fournisseurs de services Internet, et ça semble parfaitement lui convenir.
Et à moi aussi, en tant qu'utilisateur final : s'il est sous-traitant, il n'est pas vraiment tenu par des impératifs de productivité.
Du coup, il peut prendre son temps pour faire correctement son travail.
Il me raconte les abrutis (parfois violents) sur lesquels il a pu tomber dans sa carrière.
Je ne peux qu'être empathique.
Je me doute que les utilisateurs finaux (nous) on est parfois de sacrés cons.
La génération d'avant, celle qui me disait "arrête l'ordi, va jouer dehors".
Une génération incapable de se passer d'Internet pendant deux jours.
Moi, je suis un gros nerd, je pars en vacances, j'ai pas de téléphone, je ne vais pas sur Internet.
Je suis en vacances.
Bref.
On ne trouve pas le regard au bord de la route pour raccorder la maison...
Il remonte la rue dans les deux sens, moi je commence à paniquer sérieusement.
On avait fait refaire le goudron à l'entrée de la maison.
Je me dis que je suis niqué, ils ont coulé le goudron par-dessus la dalle.
Par dépit, comme dans les films, je balance une branche tombée là suite au dernier coup de vent.
Un bruit métallique.
La dalle était en fait planquée sous un gros tas de feuilles mortes.
Il ouvre.
Soulagement, c'est l'arrivée de la fibre.
On regarde ensuite où elle doit arriver.
Merde, tout a été encastré dans le mur.
Obligé d'ouvrir le mur dans la cave.
Heureusement, ce sont des panneaux de contre-plaqué vissés, et heureusement, ça ne fait qu'une largeur d'environ un mètre.
Bon je note au passage que l'isolation thermique a été oubliée, pas étonnant que ça caille dans mon entrée...
Il passe la fibre dans la gaine, et environ un mètre avant de sortir de l'autre côté, ça coince.
Je me dis : merde, quand ils ont refait le goudron, ils ont écrasé la gaine.
Il force, je vois la fibre qui sort de l'autre côté.
Explosion de joie : même le technicien semblait heureux pour moi !
Le dernier gros obstacle qui pouvait m'empêcher d'avoir la fibre était tombé.
J'ai gagné le gros lot, je peux mourir heureux.
Oui bon, j'exagère...
Bon ensuite, il faut trouver où placer la prise.
Logiquement, ça se fait là où il y a déjà l'ADSL pour faciliter le passage du câble.
Sauf que moi évidemment, j'aimerais la prise sous l'escalier, dans le placard informatique.
Là où il n'y a pas d'ADSL.
J'ai cinq prises pour l'ADSL dans ma maison (l'ancienne propriétaire voulait des téléphones partout, y compris dans la cuisine...), pas une là où je la veux, ce qui m'a causé des migraines à répétitions quand j'ai tout installé pour la première fois...
Une installation dégueulasse avec des goulottes un peu partout.
Je vois bien que ça chafouine un peu le technicien, d'autant que le rez-de-chaussé où se trouve mon bureau et le placard sous l'escalier constitue le gros des fondations de la maison : c'est du béton armé (ce n'est pas une image).
Mais, comme je suis tombé sur le meilleur technicien du monde, il a bien observé par où passaient les autres câbles, et m'a proposé de percer un seul trou dans un seul mur.
Le câble serait apparent, mais j'aurai la prise où je veux.
À ce moment de l'histoire, il faut que je précise qu'on se racontait nos vies pendant l'installation.
Et j'apprends (sans trop de surprise) deux choses :
- faire ce métier exerce pas mal la reconnaissance rapide du caractère des gens (quand il arrive chez un utilisateur, il sait assez vite s'il va l'emmerder ou être cool ; moi il m'a vu d'office en panique 😅)
- peu importe le métier, on tombe toujours sur des gens qui demandent l'impossible, et qui pensent qu'il n'y a pas de lois universelles de la physique
Donc, comme je suis plutôt le bon gars avec qui on peut papoter, il a accepté de faire comme je voulais.
Il aurait très bien pu refuser.
Il aurait très bien pu poser la prise optique là où ça lui causait le moins de problèmes.
En plus, il a galéré à percer ce trou dans mon mur de 30cm de béton armé, il s'est blessé à la main et a faillit se casser la gueule de son escabeau.
Mais, je ne sais pas si c'est le fait de voir mon visage s'illuminer après la suppression de tous les problèmes précédents, ou si c'est parce qu'il avait pitié ou quoi, mais il l'a fait.
Il a posé la prise **exactement** où je la voulais.
Pour la petite histoire, il s'est occupé d'un stagiaire.
Et moi, tout fasciné que j'étais par tout ce qu'il faisait, il s'est pris au jeu du maître de stage.
Il me montrait ce qu'il faisait, il m'expliquait, sans jamais faire preuve de condescendance.
Il pouvait me parler technique, et il ne s'en privait pas.
Je l'ai toujours dit : à partir du moment où quelqu'un est passionné par son domaine, il peut m'en parler pendant des heures, même si ce domaine est très éloigné de ce qui m'intéresse en temps normal.
Ça m'a donné l'occasion de voir un truc qui m'a fasciné.
Je le voyais trimballer une boîte, intriguante parce que manifestement dotée d'électronique, d'un écran, et de parties mécaniques, un peu comme un vieux boîtier photo ou une puzzle-box.
Un bel objet, en tout cas à mes yeux.
On appelle ça une soudeuse à fibre optique, et ça coûte une blinde (la sienne était achetée d'occasion pour 1500 euros).
![EqqUs8](images/EqqUs8.jpg)
Malgré mon intérêt pour l'informatique, dans mon imaginaire romantique, tu connectes la fibre optique avec des câbles genre *aviator coil* (deux embouts que tu visses l'un à l'autre).
En fait, pas du tout : la fibre optique, ça se soude.
Et c'est hyper précis.
La soudeuse est un appareil portatif, donc doté d'une grosse batterie, et d'un écran.
Les parties mécaniques sont protégées par divers couvercles.
Le technicien met les deux bouts de la fibre dénudée (aussi fine qu'un cheveu une fois privée de sa gaine protectrice) au sein du mécanisme, ferme le couvercle, et sur l'écran apparait une vue au microscope de la fibre.
Il appuie sur un bouton, l'appareil s'assure de l'alignement des deux bouts (à une échelle inférieure au millimètre, hein).
Un deuxième appui provoque la soudure.
Au premier essai, il voit grâce à cette vue microscopique qu'il a un peu abîmé la fibre d'un côté.
C'est épatant parce qu'on peut voir des anomalies physiques sur une fibre grosse comme un cheveu, avec une machine portative !
Il coupe, il ajuste, il remet la fibre dans l'appareil.
Deuxième essai, la soudure merde, et ça se voit : les deux bouts sont complètement cramés.
Mais vu que c'est de l'ordre du milimètre, c'est pas grave : il coupe les bouts, et recommence.
Troisième essai, c'est bon.
L'écran affiche une fibre parfaitement soudée.
Il m'a montré tout ça, comme si j'étais un stagiaire.
C'était extraordinaire.
Magique, presque.
Je suppose que ça devait aussi le changer des clients qui le laissent tout seul dans son coin, ou pire qui le fliquent.
Moi, j'étais authentiquement intéressé, et c'était fascinant et agréable de voir tout ça.
Et le plaisir était partagé.
## Ça y est, j'ai la fibre ? C'est vrai ?
Ça faisait déjà un petit moment qu'on se tutoyait, et à ma grande surprise, c'est venu de moi, naturellement et spontanément.
Je déteste profondément qu'on me tutoie de prime-abord, mais là c'est venu d'un coup.
Une fois la fibre soudée, la prise posée, il me dit qu'il doit aller à "la centrale" pour récupérer un adaptateur.
Ayant la freebox Revolution à l'heure actuelle, et comme il existe manifestement plusieurs formats de prises optiques et que celle de la Revolution ne correspond pas à celle posée, il faut un adaptateur.
Pendant qu'il y va (l'affaire d'un gros quart d'heure), il me propose d'installer la box pour que quand il revient on puisse tester.
Sauf que...
Je n'utilise pas la box en mode routeur, le wifi est désactivé, et l'écran OLED est si fatigué qu'on ne voit plus ce qu'il affiche (un problème que j'ai déjà eu sur une autre Revolution, un problème bien connu sur ces freebox).
Donc, il faut que je réinstalle toute mon infra pour tester.
Évidemment, il revient bien avant que j'ai fini...
Je lui explique tout ça, il me dit que c'est bon, pas besoin de m'embêter, on va le voir tout de suite.
Je veux bien, on va voir que la fibre est connectée à quelque chose, mais j'ai pas encore le forfait moi.
J'ai toujours mon forfait ADSL, donc tant que je suis pas sur Internet, en train de visiter un site, je n'aurai pas la fibre.
Il insiste : "mais si, c'est automatique, si ça marche là, tu as Internet par la fibre".
On branche, on allume la box.
La synchronisation est toujours aussi longue (j'espérais que le passage à la fibre accélère le mouvement mais non, par contre le passage à la freebox Pop devrait le faire).
Au bout d'un moment, il me montre sur son smartphone : "tu vois, c'est bon, t'as Internet par la fibre !".
Pas convaincu, mais vu qu'il est venu une heure et demi en avance par rapport à l'horaire prévu, et qu'il est reparti à l'heure de fin prévue, je ne voulais pas abuser de son temps.
Je lui ai offert une infusion qu'il a pris avec plaisir, et il est parti.
Content de son travail, content de nos échanges, et de sa tisane.
Moi, toujours pas convaincu, je termine mon installation.
À ma grande surprise, tout fonctionne.
J'ai même gardé la même adresse IP, du coup je n'ai pas besoin de m'emmerder avec les DNS.
Ça "juste" marche.
## Que d'émotions !
Voilà.
C'est ça aussi d'être autiste, neuro-atypique.
Nos émotions sont décuplées dans tous les sens.
Je suis passé par l'inquiétude, l'intérêt, la joie, dans leurs extrêmes.
Je suis épuisé par cette journée, mais extraordinairement content.
J'ai rencontré un excellent technicien, gentil, agréable et compétent, il a apprécié mon accueil et mon intérêt pour ce qu'il fait, j'ai découvert des recoins insoupçonnés de ma propre maison, il a fait comme j'ai voulu le faire, je lui ai fait confiance.
Il ne se souviendra pas de moi parce que je suis un utilisateur parmi d'autres, mais au moins je ne l'ai pas menacé avec un couteau.
Mais, en tant que neuroat, je me souviendrai toujours de lui parce que j'ai un immense respect pour ceux qui font leur travail correctement (et accessoirement parce que j'ai une excellente mémoire).
Et il avait l'air de beaucoup apprécier la tisane pomme-cannelle de mon épouse...
## Bon, et la fibre ?
Bon, pour l'heure je suis dans des conditions suboptimales.
La Revolution me plafonne à 1Gb/s en téléchargement quoiqu'il arrive.
Néanmoins, je ne sais pas si le passage à la Pop va changer grand chose dans ce genre de test de débit.
En revanche, à l'usage, je sens immédiatement une différence.
Même si depuis le Mac mini M1 en wifi, c'est pas extraordinaire :
![6z5TuR](images/6z5TuR.png)
Comparé au PC de jeu câblé en 1Gb/s :
![PEjaCD](images/PEjaCD.png)
Ça reste incroyablement plus rapide que mon ADSL en 16Mb/s en dl et 1Mb/s en up...
Ça veut aussi dire que le maillon faible de mon réseau, pour une fois, n'est pas ma connexion Internet.
Il me faudra au moins deux machines au taquet pour taquiner les limites de la Revolution, des limites qui s'envoleront avec la Pop (plafonnée, elle, à 5Gb/s, 500Mb/s par périphérique en wifi).
Et la navigation sur le web s'en ressent : tout est plus réactif.
Ce n'est pas tant que les pages s'affichent plus vite, c'est juste que j'ai une sensation de... meilleure réactivité.
Après j'ai testé la lecture de vidéo en 4K sur ma TV.
J'ai pris une claque...
J'ai pris la même claque que lors du passage du DVD au Blu-ray.
Il y en a toujours pour dire qu'on ne peut pas faire de différence, s'appuyant sur des études scientifiques pour dire que l'oeil ne voit pas la différence, blablabla.
Ben, si.
C'est con pour toi si tu n'y arrives pas parce que tu rates quelque chose...
## Et maintenant ?
Mon principal projet est de rapatrier mon hébergement OVH.
Il me coûte 70 euros pour l'année, mais je l'ai vraisemblablement surdimensionné.
J'aime bien être à l'aise en même temps.
Je l'ai pris parce que je souhaitais que mes visiteurs soient à l'aise aussi en consultant mon site.
Et sur ma connexion ADSL en 1Mb/s en envoi, ça devenait trop juste.
Maintenant que j'ai un débit en upload presqu'égal à OVH, je vais de nouveau l'auto-héberger à la maison.
Non, je ne crois pas que je suis devenu OVH juste en passant à la fibre, je sais qu'il y a d'autres paramètres à prendre en compte...
Mais disons qu'avec un débit 400x plus rapide, je devrais être tranquille, et mes lecteurs aussi.
Plus prosaïquement, mon prochain projet est de me refaire l'intégrale de Jurassic Park, en 4K évidemment...
Et pour le fun, pourquoi pas, supprimer et retélécharger ma bibliothèque Steam, juste pour me rappeler l'époque où je suis passé de la disquette au CD-Rom pour lancer un jeu vidéo...
En tout cas, si jamais mon technicien se reconnait dans cet article : Merci à toi 😁

View File

@@ -0,0 +1,2 @@
file: images/ETVAb0.png
title: Un exemple de notification qui fonctionnait...

View File

@@ -0,0 +1,2 @@
file: images/OxmKa5.png
title: '...et qui ne fonctionne plus du jour au lendemain'

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,35 @@
---
date: "2023-03-24"
title: Matrix, c'est fini
---
J'ai décidé de stopper mon activité sur Matrix.
À tout moment dans nos vies, nous pesons le pour et le contre, dès lors qu'une situation se présente à nous.
Certains le font peut-être plus consciemment que d'autres.
J'estime donc désormais que faire tourner un serveur Matrix génère plus de négatif que de positif.
Premièrement parce que je n'utilisais pas Matrix comme moyen de communication initialement mais comme un outil de notification.
Bien qu'au départ, j'ai été emballé par l'idée et les possibilités, j'ai été déçu de leur implémentation.
Notamment des différents ponts depuis/vers matrix peu ou pas maintenus, devenant incompatibles avec d'autres applications sans pouvoir faire autre chose qu'attendre un correctif qui ne viendra jamais.
J'ai fini par désactiver, désinstaller, déprogrammer toutes les alertes que j'avais mis en place via Matrix.
![ETVAb0](images/ETVAb0.png)
![OxmKa5](images/OxmKa5.png)
Spécifiquement concernant ce point, étant désormais dans un environnement Apple pour tous mes clients (à l'exception de mon [PC de jeu](/interets/informatique/2023/03/15/mon-setup-gaming/)) depuis que j'ai [dégagé la tablette domotique](/interets/informatique/2023/01/16/rant-android-c-est-de-la-merde/#mon-expérience-personnelle) (remplacée par un iPad Pro de récup'), je n'ai plus besoin d'un outil tiers pour gérer mes notifications : je pourrai tout faire via l'application [Maison](https://www.apple.com/fr/home-app/).
Ensuite, parce que je n'ai plus envie de m'embêter sur le plan technique.
Par exemple, j'ai dû développer et maintenir un pont RSS/Matrix rien que pour le blog, avec toute ce que ça comporte comme désagréments, sans parler des DNS et des certificats, et de tout ce qui gravite autour.
En outre, je rejoins le mouvement de pas mal de "vieux" bloggeurs de ces derniers temps (dernières années ?) : le retour aux technologies "à l'ancienne".
C'est d'ailleurs Thibaut de [Arsouyes](https://www.arsouyes.org/), qui a [récemment franchi le pas](https://www.arsouyes.org/interets/informatique/2023//2023-03-20_Abonnements/), qui est à l'origine de ma propre décision.
Mais elle couve depuis quelques temps déjà et cet article de Thibaut est un simple élément déclencheur.
[L'arrivée de la fibre](/interets/informatique/2023/03/17/passage-a-la-fibre-optique/) est un autre facteur que je prends en considération puisque j'ai l'intention de rapatrier ce que j'ai chez OVH afin de réellement tout auto-héberger à la maison.
Par conséquent, cela va représenter une charge supplémentaire pour mon serveur (et ma facture d'électricité).
Logiquement, je coupe donc les services dont je ne reconnais plus l'utilité ou la pertinence.
Je vous invite à consulter ma page [Contact](/contact/) qui a été mise à jour en conséquence.

View File

@@ -0,0 +1,134 @@
---
date: '2023-04-06'
title: Prévisualiser des .eml dans Gitea
---
## Contexte
Voilà [un an et demi](/interets/informatique/2022/04/05/retour-d-experience-six-mois-de-stockage-dans-git/) que je stocke tout dans git, et j'en suis pleinement satisfait.
L'une des rares choses que je n'y stockais pas jusqu'à maintenant sont certains emails que j'estime être d'un intérêt particulier.
Mon objectif était de pouvoir exporter manuellement un ou plusieurs messages de mon choix (généralement, au moment où j'ai fini de les lire) dans un format plus ou moins standard, et les déposer dans ma forge logicielle via les commandes git classiques.
Jusque là, aucun soucis : sous macOS, `Fichier` puis `Enregistrer`, `git commit` et `git push`, travail accompli.
## Problématique
Sauf que les emails sont encodés, ce qui signifie qu'ils ne sont pas directement lisibles par un humain.
Un fichier eml est comme une archive contenant tout un tas d'informations, telles que les en-têtes, parfois un corps de message en texte-brut et un autre en HTML, sans compter les pièces jointes.
Il faut donc faire appel à un outil spécialisé pour extraire ces informations, et les décoder correctement.
Parce qu'avoir mes emails stockés dans git c'est bien, mais une fois qu'ils y sont, sans leur dépaquetage, sans leur décodage, ils sont difficilement exploitables, je veux surtout que Gitea m'en offre une version *human-friendly*.
## Prérogatives
- Je ne veux pas que le fichier d'origine soit altéré
- Je veux pouvoir visualiser les en-têtes du message, y compris ce qui semble inutile aux humains
- Je veux afficher la partie texte-brut du message en priorité, la partie HTML ne m'intéresse pas (sauf si c'est la seule qui existe)
- Je veux que gitea m'affiche le fichier eml comme si j'étais dans un client mail, ou en tout cas que je puisse directement lire le mail sans devoir déchiffrer des séquences de caractères comme `=C3=A9` (qui encode le caractère `é`)
- Je veux que le HTML produit soit propre ("markdownisé", en gros)
- Je veux que la solution soit légère, au point de pouvoir le faire à la demande
## Solutions
### Overengineering
La solution "évidente", c'est d'utiliser la CI pour faire une conversion lors d'un push.
C'est *apparemment* la solution la plus simple, mais en fait, non :
- je ne veux pas créer de fichiers additionnels pour des raisons de simplicité et d'espace disque
- j'ai plusieurs dépôts en fonction des contextes des emails et non en fonction des boîtes de réception, et je n'ai pas envie de m'amuser à créer des jobs pour chacun d'entre eux dans ma CI
### Gitea tout puissant
Gitea offre une fonctionnalité toute puissante que j'utilise déjà pour permettre l'affichage direct de documents au format .docx : les [*external renderers*](https://docs.gitea.io/en-us/external-renderers/).
Gitea permet de déclarer une commande qui prend en entrée le fichier en cours de prévisualisation et qui doit sortir le code HTML qui doit permettre sa prévisualisation.
Dans le contexte particulier des .docx, c'est [pandoc](https://pandoc.org) qui fait ce travail, comme parfaitement expliqué [dans la documentation de gitea](https://docs.gitea.io/en-us/external-renderers/#example-office-docx) (un exemple qui fonctionne d'ailleurs *out-of-the-box*).
C'est donc vers cette solution que je vais me tourner.
## Résolution du problème
Ça n'a pas été simple, vu que manifestement, comme d'habitude, personne n'a jamais fait ce que j'essaye de faire...
Toutes mes recherches se sont soldées par des solutions à base de Java, de docker, et surtout, d'export en PDF, sans jamais mentionner l'intégration à gitea.
Certaines évoquaient d'utiliser des outils avec interface graphique, des solutions où tu dois cliquer 12 000 fois pour avoir un fichier HTML exploitable, donc des solutions parfaitement impossibles à industrialiser.
**Aucune des solutions que j'ai trouvé n'était simple à mettre en oeuvre**.
Aucune des solutions que j'ai trouvé ne permet de prendre en entrée un flux standard et de sortir un flux standard, autrement dit en une ligne de commande utilisant les pipes (et `munpack` semble créer systématiquement des fichiers supplémentaires).
Et puis, je suis tombé sur un container docker plus vieux que les autres, plus maintenu, et surtout, beaucoup plus léger que tout ce que j'ai vu jusqu'à maintenant.
Dans ce container, un outil était mentionné, et un fichier de configuration était joint.
Cet outil, c'est [Mhonarc](https://www.mhonarc.org).
Il m'a fallut quelques secondes pour intégrer l'outil aux renderers de gitea.
Le rendu n'est pas très propre, mais après avoir digéré une partie de la (grosse) doc de l'application, j'arrive au résultat escompté.
La transformation de l'eml en HTML est presque parfaite, mais surtout, elle est quasi-instantanée.
Cerise sur le gâteau, gitea m'offre un bouton pour basculer facilement et immédiatement du fichier source d'origine à sa prévisualisation en HTML.
Voilà, c'est ça l'informatique que j'aime.
### Configuration de mhonarc
Les options par défaut de mhonarc sont assez satisfaisantes, mais je voulais aller un chouilla plus loin.
Il suffit de créer un fichier de configuration qui va substituer les paramètres à ceux par défaut, donc il peut ne faire que quelques lignes et ne cassera pas l'ensemble de ce qui est généré.
```xml
<MIMEARGS>
m2h_text_html::filter; allownoncidurls
m2h_text_plain::filter; nonfixed fancyquote maxwidth=80
</MIMEARGS>
<MIMEAltPrefs>
text/plain
text/html
</MIMEAltPrefs>
<MIMEFilters>
text/html; m2h_text_plain::filter; mhtxtplain.pl
text/x-html; m2h_text_plain::filter; mhtxtplain.pl
</MIMEFilters>
```
Honnêtement, je n'ai pas encore tout compris à ce que j'ai fait ici, mais en gros, je demande à mhonarc d'utiliser en premier lieu la partie texte-brute en priorité par rapport à la partie en HTML du message d'origine, en tout cas s'il en contient une (c'est le bloc `MIMEAltPrefs`).
Pour les messages qui ne contiennent qu'une partie en HTML, ce HTML est transformé pratiquement en texte-brut (le bloc `MIMEFilters`).
Le texte brut obtenu est alors quelque peu formaté, avec un maximum de 80 caractères par ligne et l'utilisation de la balise `blockquote` pour les citations (c'est le bloc `MIMEARGS`).
### Configuration de gitea
Avec NixOS, c'est facile :
```nix {linenos=false,class=not-prose}
{
services.gitea = {
# [...]
settings = {
# [...]
"markup.eml" = {
ENABLED = true;
FILE_EXTENSIONS = ".eml";
RENDER_COMMAND = "/run/current-system/sw/bin/mhonarc -single -rcfile /etc/nixos/environment/etc/mhonarc";
};
};
};
}
```
À noter que je sais que la spécification des chemins est sub-optimale mais je n'ai pas encore la maîtrise de nix nécessaire pour les éviter : ça fonctionne mais c'est une mauvaise pratique.
Par exemple, je crois qu'il vaudrait mieux remplacer `/run/current-system/sw/bin/mhonarc` par `${pkgs.mhonarc}/bin/mhonarc` ou quelque chose du genre, mais je ne suis pas sûr de mon coup : je laisse le soin au lecteur de me corriger au cas où, et je mettrai cet article à jour en conséquence.
### Avantages, inconvénients
Ben déjà, ça juste marche, c'est hyper léger, ça s'intègre facilement à gitea.
En revanche, j'ai des balises `<html><head></head></html>` qui traînent dans la sortie, et il y a certainement moyen de s'en débarasser mais je n'ai pas encore trouvé comment.
Et puis j'aimerais "markdownifier" le corps du message.
J'ai fait quelques essais pour piper pandoc mais je n'obtiens qu'une erreur 500 dans gitea.
Enfin, j'aimerais adapter le CSS pour utiliser une fonte monospace pour le corps du message (mais ça devrait être facile à faire).
Ce sont des améliorations futures mais pour l'heure, je suis satisfait.

View File

@@ -0,0 +1,2 @@
file: images/0mQZdR.png
title: Il est temps de changer

View File

@@ -0,0 +1,2 @@
file: images/2MQuZh.png
title: Mon site dans le navigateur links2. Ça va. Peut mieux faire.

View File

@@ -0,0 +1,2 @@
file: images/2kCA23.png
title: Un article sans feuille de style

View File

@@ -0,0 +1,2 @@
file: images/nrCkIz.png
title: J'ai *un peu* merdé l'intégration du sprite...

View File

@@ -0,0 +1,2 @@
file: images/tAd2tY.png
title: '...et celle des articles non plus'

View File

@@ -0,0 +1,2 @@
file: images/tIAVMD.png
title: La liste de mes collectables n'est pas très engageante...

View File

@@ -0,0 +1,2 @@
file: images/u5AZum.png
title: Mon site sans feuille de style. C'est de la merde.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

View File

@@ -0,0 +1,98 @@
---
date: '2023-04-08'
title: 'Rant : Mon site, c''est de la merde'
---
Aujourd'hui, c'est tentative d'auto-critique honnête.
Vous avez l'habitude de me lire râler sur tout, et bien aujourd'hui, je râle sur mon propre site.
## Esthétique
J'en peux plus de l'esthétique de ce site...
Elle n'a pratiquement pas changé depuis qu'il est en ligne, et depuis le premier jour, je me dis que c'est de la merde, mais pas non plus trop repoussante.
Juste assez esthétique pour être fonctionnelle, mais trop moche pour être personnelle.
Cette esthétique, ce n'est pas moi, alors que c'est mon site.
J'en peux plus.
![0mQZdR](images/0mQZdR.png)
Maintenant que j'arrive plus ou moins à faire des trucs relativement avancés avec [Hugo](https://gohugo.io/), je peux me focaliser sur l'identité visuelle de mon site.
Bien que très gros fan de la fonte [Fantasque](https://fontlibrary.org/en/font/fantasque-sans-mono), et bien qu'ayant apprécié la possibilité de définir des fontes personnalisées en CSS, je commence à devenir partisan de l'arrêt de leur usage.
Mais ce sujet reste conflictuel en mon for intérieur : mon site web doit posséder une identité visuelle qui me correspond, ce qui inclut les fontes utilisées, mais en même temps, quitte à utiliser une fonte qui n'est pas réellement la mienne, autant utiliser celles fournies par défaut par les systèmes, ce qui supprime la nécessité pour les clients d'en télécharger d'autres, donc amélioration de la compatibilité, délestage, etc.
Le sujet est loin d'être nouveau, évidemment, mais je me rends compte de la difficulté d'équilibrer esthétisme, originalité, identité, accessibilité, etc, de se plier à des règles d'interopérabilité, de ne pas être trop en rupture avec l'existant, respecter les habitudes et les souhaits des utilisateurs, etc.
![2MQuZh](images/2MQuZh.png)
En vérité, à terme, je souhaite revenir à un principe que je m'étais fixé dès le départ mais que j'ai rapidement perdu de vue pour me focaliser sur d'autres choses : j'aimerais que mon site puisse être visité depuis un navigateur en mode console.
Voyez cela comme un challenge personnel, plus que comme l'adhérence à une philosophie particulière, encore que...
![u5AZum](images/u5AZum.png)
Comme le montre la capture ci-dessus, au-delà de l'aspect purement esthétique du site gouverné par CSS, il y a aussi la base HTML qui n'est pas top.
![2kCA23](images/2kCA23.png)
Toujours ce sprite svg qui fout sa merde...
Je sais, ce n'est pas tant le sprite que mon incapacité à l'intégrer correctement...
Ce qui m'amène à questionner les performances de mon site.
## Performances
Je me suis rendu compte que je râlais sur le manque d'optimisation des ressources sur les sites web en général alors que mon propre site est moins optimisé que je le pensais.
![nrCkIz](images/nrCkIz.png)
1.79Mo à charger.
Selon des critères modernes, ce n'est pas énorme.
Sauf qu'à peu près 500Ko sont dûs à ce sprite chargé à de multiples reprises.
Je pensais que le navigateur pallierait à ma fénéantise et mettrait le svg en cache, mais apparemment, ce n'est pas le cas.
Les images (non svg) représentent environ 1Mo, sachant qu'il y en a 38 sur la page d'accueil.
Là par contre je trouve que j'ai fait un bon travail d'optimisation (enfin, pour être exact, je n'ai rien fait pour entraver le travail d'optimisation d'Hugo).
Il y aurait moyen de gagner quelques Ko (surtout en les dégageant mais je ne veux pas aller jusque là non plus !) mais bon à ce niveau, c'est peut-être des économies de bouts de chandelles, surtout que leur nombre ne va plus augmenter, en tout cas sur la page d'accueil.
Par contre, si je veux rester sous 1Mo par page, images comprises, il va falloir que j'envisage la pagination dans les listes.
Ce qui m'embête avec ces images, c'est le temps total de chargement de la page, visible en bas à droite (près de 500ms).
Pour moi, c'est trop.
Là, l'optimisation est à faire côté serveur web, il va falloir que je creuse le sujet.
Peut-être l'occasion de tester l'introduction d'un serveur de cache ([Varnish](https://varnish-cache.org/)), ou de jouer avec les paramètres de [Caddy](https://caddyserver.com/), je ferai mes essais.
Avec 15Ko, je trouve le CSS trop gros.
Je pourrais faire des efforts d'optimisation de Tailwind, en particulier dans le domaine des couleurs, mais j'aimerais profiter de l'occasion pour explorer d'autres possibilités, surtout que Tailwind aussi, j'en ai ma claque...
Je ne parle pas de javascript : il n'y en a pas, et il n'y en aura jamais.
## Organisation
Dans une mise à jour récente, j'ai décidé de mettre en avant les mots-clés dans les vignettes des articles.
Mais je ne suis pas enthousiasmé : bien que cela offre un certain contexte aux titres un peu évasifs, je trouve que cela casse un peu la lecture en diagonale des listes.
En sus, je trouve l'accès aux mots-clés assez pénible.
La page les listant existe, mais le chemin pour y parvenir est fastidieux (article, cliquer sur mot-clé, cliquer sur le lien "Mots-clés").
Le prochain design intègrera un lien direct vers la liste complète des mots-clés.
J'aimerais d'ailleurs ajouter une vue avec les mots-clés triés par ordre d'occurrences.
En outre, j'aimerais présenter les liens intéressants un peu différemment, en ajoutant un peu de profondeur.
Je trouve qu'ils ne sont pas assez mis en avant, en particulier en ce qui concerne le webring.
C'est un peu le bordel aussi dans mes [collections](/collections/).
Toute cette section mériterait un remaniement dans sa présentation, maintenant que je commence à avoir un peu de contenu.
![tIAVMD](images/tIAVMD.png)
Comme dit précédemment, je pense qu'il va falloir que je mette en place une pagination pour les listes.
Mais avant tout, je vais repenser l'affichage des éléments de ces listes.
Maintenant que mon contenu s'étoffe, je trouve qu'il est de moins en moins agréable de naviguer.
![tAd2tY](images/tAd2tY.png)
## Conclusion
Voilà qui annonce une grosse mise à jour prochaine.
Tout cela vient du fait que j'ai complété ma migration depuis OVH, depuis que [je suis enfin passé à la fibre optique](/interets/informatique/2023/03/17/passage-a-la-fibre-optique/) (au passage, je remercie chaleureusement mes lecteurs qui ont particulièrement apprécié cet article et qui l'ont manifesté par différents moyens !).
Je rappelle que du coup, puisque je rapatrie tout sur mon propre serveur, je suis dans une optique d'économie, aussi en relation avec mes prérogatives d'[éco-responsabilité](/interets/informatique/2021/09/25/l-eco-responsabilite-en-informatique/) : si déjà j'en parle, autant que je sois moi-même irréprochable à ce sujet...

View File

@@ -0,0 +1,2 @@
file: images/LOdjJu.png
title: Mon site, sans feuille de style

View File

@@ -0,0 +1,2 @@
file: images/SVEA5r.png
title: Mon site, dans links

View File

@@ -0,0 +1,2 @@
file: images/gz89Oe.png
title: Performances avant la refonte

View File

@@ -0,0 +1,2 @@
file: images/kIlyRg.png
title: Performances après la refonte

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 KiB

View File

@@ -0,0 +1,153 @@
---
date: "2023-04-18"
title: Refonte du site
---
Après avoir [critiqué mon blog](/interets/informatique/2023/04/06/rant-mon-site-c-est-de-la-merde/), j'ai retroussé mes manches, je suis - un peu - sorti de ma zone de confort en matière de développement front-end, et j'ai pondu une nouvelle interface, un peu plus personnalisée.
Permettez-moi de vous faire un tour d'horizon.
## Esthétique
Les goûts et les couleurs, ça ne se discute pas.
Mais je suis assez content du résultat pour aujourd'hui.
### Menu principal
Premier changement notable : les liens auparavant situés en haut et en bas de page sont désormais tous situés dans une barre toujours visible à gauche, et dotés de grosses icônes colorées.
Le texte de ces liens disparaît en fonction de la taille de l'écran afin de maximiser l'espace de lecture.
Dans le cas où la hauteur de l'écran serait insuffisante, il est possible de scroller verticalement.
Afin d'avoir toujours accès au haut de page, j'ai inclus un lien spécial directement accessible sous le lien vers la page d'accueil.
Avant, c'était un bouton en bas à droite.
Tout peut se discuter, mais je pense que cette configuration offre plus de visibilité à certains éléments (notamment les mots-clés et le webring).
En outre, ce que je gérais autrefois par un fichier de configuration se fait désormais tout seul (les liens vers les sections principales du site).
Je trouve également intéressant sur le plan visuel de disposer de cette barre à gauche : sur les hautes résolutions, c'est un menu latéral on ne peut plus classique.
Sur les écrans plus modestes (mobiles), c'est une barre de raccourcis qui n'empêche pas la lecture confortable du contenu des pages.
### Sections principales
Toutes les sections principales, y compris la page d'accueil, reposent désormais sur le même _template_.
Sous le titre principal, une section de texte que je peux personnaliser, suivie du nombre d'articles présents dans cette section, puis d'une liste des pages liées.
#### Pagination
Comme prévu, j'ai fini par mettre en place la pagination que j'avais longtemps évité pour diverses raisons.
On dispose donc de deux barres de navigation entre les pages, encadrant la liste des articles correspondants à la page en cours.
On y trouve de part et d'autre un bouton pour aller à la page précédente, et un pour accéder à la page suivante.
La disposition "traditionnelle" d'un paginateur fait consensus autour d'un groupe de page central, et à mesure qu'on s'en écarte, les pages en question s'éloignent du centre.
Exemple : `[1] ... [6] [7] [8] [9] [10] ... [16]`, admettant que la page courante est la page 8.
Comme je déteste faire comme tout le monde, et que j'ai eu 30 ans pour mûrir la question, j'estime que la meilleure façon de proposer une pagination est de virer ces liens et utiliser un menu déroulant.
Dans l'exemple ci-dessus, si je veux accéder à la page 15, soit je clique 7 fois sur le bouton _Suivant_ (8 + 7 = 15), soit je clique sur la page 16, ce qui provoquera le déplacement du lien vers le milieu de l'écran.
C'est très inconfortable, surtout pour les gens pressés qui savent exactement où ils doivent cliquer (ou plutôt, où ils _devraient_ cliquer).
Avec un menu déroulant, le menu est toujours au même endroit, on peut accéder à n'importe quelle page depuis n'importe quelle page, avec un minimum de mouvements de la souris : il s'agit simplement de scroller, ce qui est infiniment plus pratique que courir après des numéros de page dont la position change à chaque changement de page...
Je suis assez fier de mon menu déroulant.
Si j'étais un peu plus souple sur la question du javascript, il m'aurait suffit de faire quelque chose du genre :
```html
<form method="GET" action="@{{ .URL }}">
<select name="page" onchange="form.submit()">
<!-- Reste du code -->
</select>
</form>
```
Mais, considérant que je suis intraitable sur le javascript pour mon blog, cette méthode est bonne pour la poubelle : un navigateur qui désactive javascript serait incapable de choisir une page spécifique par ce moyen.
Du coup, mon sélecteur de page n'utilise que ce bon vieux composant HTML [`details`](https://developer.mozilla.org/fr/docs/Web/HTML/Element/details), que j'utilise un peu partout tant il est versatile.
Habilement maquillé par CSS, c'est un _dropdown_ on ne peut plus convainquant qui remplit parfaitement son office.
On pourra toujours me critiquer que, contrairement à un composant en javascript, il est impossible de le fermer en cliquant ailleurs sur la page, ce à quoi je répondrai : "hérétique".
### Listes
Du coup, j'ai aussi changé la façon dont les articles sont présentés sous la forme de listes.
J'ai décidé de limiter à dix articles par page.
Je trouve qu'au-delà, ça devient trop chiant de scroller.
Avec dix articles par page, le scroll est tolérable sur des résolutions modestes, et inexistant sur de plus hautes résolutions.
Au lieu d'inclure les mots-clés à chaque article, j'ai préféré proposer un court résumé autogénéré par Hugo.
Non, ce n'est pas de l'IA, c'est juste une troncature pas trop stupide.
On verra que j'ai rajouté des liens directs vers la page originale et vers la _Wayback Machine_ sous chacun de mes liens intéressants pour un accès rapide, sans passer par la page intermédiaire où je rajoute parfois mes commentaires.
### Articles
Les pages présentant un article complet ont également été revues (comme tout le reste).
Deux choses sont à noter en particulier : le sommaire, quand il existe, se présente juste sous le titre au lieu d'être intégré dans le corps de l'article, et le positionnement de l'image d'en-tête diffère selon sa forme.
Pour le premier point, c'est encore le refus de javascript qui m'a challengé : une table des matières devrait être visible en permanence.
Du coup, il faut lui réserver un espace conséquent et dont les dimensions ne peuvent pas toujours être prévues à l'avance.
C'est d'autant plus problématique pour sa largeur, puisque sa hauteur peut toujours être restreinte sans pour autant nuire à son parcours (c'est exactement ce que j'ai fait pour le menu déroulant évoqué plus haut).
En javascript, ça se fait assez simplement, et même, de différentes manières.
Sans javascript aussi, mais aucune méthode ne me convenait vraiment : positionnement _absolute_, _static_, _fixed_, _float_, _flex_, non, décidément, tout cela prend trop de place, alors qu'une balise `details` fait parfaitement l'affaire.
Je verrai ultérieurement si je peux fixer cette balise à un endroit peut-être plus approprié (genre dans la colonne de droite), mais pour l'heure, je me contenterai de ça.
Concernant le deuxième point, cela concerne plus "l'arrière-boutique" d'Hugo.
Avant, dans mes articles, je gérais différemment les images de couverture pour les livres et les films par exemple.
La variable utilisée pour stocker l'image désirée était différente dans les deux cas.
J'ai voulu uniformiser ça afin de faciliter la maintenance des articles.
Du coup, je me base sur les dimensions de l'image pour choisir où la positionner : si l'image est en mode "portrait", elle ira dans la colonne de droite, sinon elle ira dans le corps de l'article.
Simple, facile à faire.
### Fontes
J'ai décidé d'être un peu moins sage que d'habitude et surtout, de me laisser tenter par non pas une mais deux fontes custom.
Je sais, c'est un peu à contre-courant de ce que j'ai dit dans mon article précédent, mais j'ai aussi mentionné que je n'étais pas encore décidé...
On a donc une fonte que je qualifierai de plutôt mignonne pour les titres, tout en restant esthétique et lisible : il s'agit de [Jellee](https://fontlibrary.org/en/font/jellee-typeface).
L'autre fonte est utilisée pour tout ce qui code et s'ajoute à la stack "_mono_" de Tailwind : c'est ma chère [Fantasque](https://fontlibrary.org/en/font/fantasque-sans-mono) que je n'ai pu me résoudre à abandonner...
En outre, je me suis un peu laissé aller sur le choix des couleurs des titres et des liens...
On verra plus tard si je décide que ça ne me convient pas ; pour l'heure, ces couleurs ne me mettent pas mal à l'aise et ne semblent pas être trop inaccessibles (visuellement).
## Performances
Gros, gros gain de performance.
Juste avant de migrer vers la nouvelle interface, j'ai pris une capture des performances de chargement de l'ancienne, où je pointais déjà un temps de réponse de près de 500ms pour presque 2Mo de ressources transférées.
![gz89Oe](images/gz89Oe.png)
Roulement de tambour...
![kIlyRg](images/kIlyRg.png)
La nouvelle interface se charge en un peu plus de 215ms à froid et transfère 200ko de données seulement.
Et pourtant : j'ai ajouté de nouvelles couleurs (au lieu d'en enlever), et deux fontes custom.
La raison d'une telle cure d'amaigrissement tient bien évidemment à la réduction des images d'illustration sur la page d'accueil, et surtout, je n'utilise plus de sprite svg pour les icônes.
Enfin, techniquement si, mais via les feuilles de style.
Du coup, certes, la feuille de style a pris du poids (je me plaignais avant de ses 15ko, elle est passée à 16, c'est pas la mort non plus), mais mon site se trouve désormais être totalement apte à être navigué en mode console, et/ou sans feuille de style du tout :
![LOdjJu](images/LOdjJu.png)
![SVEA5r](images/SVEA5r.png)
## Le mot de la fin
["Peinture fraîche"](/interets/informatique/2021/01/01/introduction/#le-mot-de-la-fin-peinture-fraîche).
Il y a peut-être des choses qui m'ont échappé, mais j'ai l'impression d'avoir fait le tour.
C'était une refonte presque _from scratch_ parce que je voulais élaguer tout ce qui me semblait superflu.
En outre, Hugo et Tailwind continuent de me les briser, et pourtant je ne suis captif que par crainte que le boulot soit encore plus difficile pour migrer vers la concurrence.
Hugo est bourré d'absurdités, ou plus exactement, Go est bourré d'absurdités que Hugo tente désespérément de corriger, sans grand succès.
Rien ne fait sens dans le templating de Go, c'est contre-intuitif, mal documenté, la grammaire et la syntaxe en général sont imbitables.
Dès que tu veux faire un truc qui sort du cadre classique c'est la merde.
Et puis Tailwind qui, pour des raisons que j'ignore, me pond un CSS de 130ko sur mon mac et de 16ko sur ma CI alors qu'on utilise **exactement** les mêmes commandes, les mêmes paramètres et les mêmes environnements de build...
Bref, [je ne vais pas vous la refaire](/interets/informatique/2022/02/12/rant-hugo-et-tailwind/).
Au final, allez-y : cliquez partout, perdez-vous dans le millier de pages approchant, et envoyez-moi vos insultes par email.
Mais [envoyez-moi](/contact/) aussi vos félicitations, hein, je prends aussi...

View File

@@ -0,0 +1,2 @@
file: images/N6sVph.jpg
title: Le robot et sa station. &copy; Ecovacs

View File

@@ -0,0 +1,2 @@
file: images/dcCU9g.jpg
title: Le dessous du robot. &copy; Ecovacs

View File

@@ -0,0 +1,3 @@
file: images/g1zqYC.jpeg
title: Cartographie de la maison après un cycle de nettoyage, on peut voir par où
est passé (ou pas) le robot

View File

@@ -0,0 +1,4 @@
file: images/pXCOab.jpeg
title: Carte en 3D avec quelques repères mobiliers qui servent à indiquer à l'aspirateur
où intervenir ponctuellement. Il est possible de rajouter ou modifier les meubles
détectés. Ce n'est pas les Sims, mais c'est sympa !

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 KiB

View File

@@ -0,0 +1,225 @@
---
date: '2023-05-07'
title: Test de l'Ecovacs Deebot X1e Omni
---
On a cassé la tirelire pour s'offrir une aide ménagère en provenance d'[Ecovacs](https://www.ecovacs.com/fr) : le [Deebot X1e Omni](https://www.ecovacs.com/fr/deebot-robotic-vacuum-cleaner/deebot-x1e-omni) (normalement tout orthographié en majuscules mais je n'ai pas envie de crier).
Je vous livre ici mes réflexions après quelques jours d'utilisation, mais je ferai probablement un autre article dans quelques mois avec plus de recul.
Aucun de mes articles n'est sponsorisé et celui-ci ne fait pas exception : c'est un test honnête qui ne me rapporte rien.
![N6sVph](images/N6sVph.jpg)
## Cloud obligatoire
J'ai décidé d'assouplir mes règles concernant les objets connectés (qui était : aucun objet connecté ne se connecte à Internet sans que j'en sois personnellement à l'origine).
On verra plus tard si j'ai eu tort ou raison, mais dans l'absolu, une connexion Internet et un téléphone portable sont indispensables pour la configuration initiale du robot.
Cette configuration initiale est censée être facile, mais vu que j'ai un [pihole](https://pi-hole.net/) qui tourne sur le réseau, il me bloquait certains domaines utilisés par Ecovacs.
Il m'a fallut quelques minutes de stress avant d'y penser mais une fois les domaines whitelistés (j'essayerai de fournir une liste à l'occasion), ça s'est bien passé.
Si vous n'avez pas pihole ou un outil du même genre sur le réseau, vous ne devriez avoir aucun mal à terminer la première étape.
Ayant vécu toute ma vie en faisant tout ce que je peux pour ne laisser aucune trace sur le web ([parfois avec regret](/interets/informatique/2021/10/26/recuperation-d-articles-archives/)), ça fait un peu bizarre de se dire que là, je laisse la porte ouverte, mais étonnamment, je suis en confiance.
Encore une fois, on verra si l'avenir me donne tort ou raison.
Quoiqu'il en soit, il faut créer un compte chez Ecovacs, puis procéder à l'association avec l'aspirateur, ce qui se fait simplement en scannant un QR code (situé sous le capot supérieur magnétique du robot).
Cela se fait facilement depuis l'application pendant le processus d'installation.
## Cartographie initiale
Après avoir rempli le bac d'eau propre (et oublié de mettre du produit nettoyant), Yiko (c'est son nom officiel) demande à faire une cartographie rapide des locaux.
Et en effet, c'est assez rapide, grâce à tous ses capteurs ultra-modernes dopés à l'IA.
Lidar, webcam HD et tout le bordel, c'est raccoleur, mais il faut reconnaître que tout cela fonctionne plutôt bien.
Je note que la cartographie initiale, bien que rapide, est aussi très agressive : le robot fonce dans le tas, peu importe le danger.
Câbles, vide, panier à linge, il y va à fond.
Il faut donc ranger un peu avant de lancer la procédure et ne rien laisser traîner.
Un coup de stress quand je l'ai vu foncer avec confiance vers l'escalier mais il l'a bien détecté, et Yiko n'a pas eu d'expérience de mort imminente.
Les passages suivants (en mode aspiration et/ou serpillère) sont beaucoup, beaucoup plus prudents.
Par exemple, si le robot détecte un câble devant lui, il va le contourner plutôt qu'essayer de lui passer dessus.
C'est très appréciable, surtout venant d'un Roomba 860 qui lui, emmenait tout sur son passage...
![g1zqYC](images/g1zqYC.jpeg)
## L'application
Déjà, le premier truc qui m'insupporte, c'est l'app pour mobile seulement.
Pas d'app avec une meilleure ergonomie pour tablette, alors pour ordinateur de bureau, n'en parlons pas.
Ensuite, comme souvent avec les apps, l'ergonomie est moisie.
Ce n'est pas complètement pourri, mais c'est assez peu intuitif.
Mais au moins, on peut presque tout faire depuis l'application, il faut juste fouiller dans les options.
En particulier, le fuseau horaire qu'il faut régler à la fois pour la base et pour le robot.
Je note quand même qu'en tant que geek parano qui empêche ses robots de faire tout et n'importe quoi, j'ai d'office bloqué un certain nombre de demandes d'accès aux données en provenance de l'application, et notamment la géolocalisation.
Rétrospectivement, j'ai peut-être été excessif sans raison, mais je préfère prévenir que guérir.
Une fois certaines autorisations accordées, on peut débloquer tout le potentiel de la bête.
Ce qui m'embête toujours, ce sont ces appareils qui réclament des accès à certaines informations (ici le GPS ou le micro et la caméra) sans toutefois préciser le but de ces accès.
De but en blanc, l'application de mon robot aspirateur qui me réclame un accès à mes photos, ça me chafouine fortement.
Pourtant, la raison est simple et innocente : c'est juste pour stocker les photos prises par l'aspirateur.
De même, je me suis posé la question "pourquoi diable un robot aspirateur embarque une caméra, un micro et tout le nécessaire pour me fliquer ?".
Mais une fois que l'on admet que demander une détection des objets (incluant les déjections animales, ce qui est salvateur pour ce genre de produits, mon Roomba 860 en sait quelque chose) sans avoir une caméra est un non-sens et qu'en plus, on peut voir ce que le robot voit en temps réel, on a tendance à se calmer un peu 😁
Donc, comme je le disais, si l'on accorde un peu de confiance à l'application et au robot, on peut découvrir des sections intéressantes dans l'application.
La cartographie initiale a été faite rapidement, le but étant surtout de définir automatiquement les zones du logement, déterminées par les encadrements de porte.
Si l'on n'est pas trop bordélique, cette étape se fait avec une étonnante précision, l'application étant même capable de deviner de quelle pièce il s'agit (salle de bain, cuisine, etc.).
Les pièces un peu moins bien rangées peuvent être considérées comme deux pièces séparées parce que le robot pense que c'est un encadrement de porte.
Néanmoins, à chaque passage, cette cartographie s'affine, et la représentation en 2D du logement aussi.
En plus, après la cartographie initiale, on a aussi accès à une représentation en 3D, avec la possibilité de définir l'emplacement de meubles particuliers (normalement, là encore, correctement détectés par le robot).
Cela ouvre la possibilité de lui demander de nettoyer rapidement certaines zones très spécifiques, comme "autour de la table du salon".
Notons que l'on peut aussi restreindre temporairement le nettoyage à une zone particulière en la délimitant sur la carte.
![pXCOab](images/pXCOab.jpeg)
On peut disposer de trois cartes au total, par exemple pour un logement à plusieurs étages, mais la manutention rend cette possibilité virtuellement inutile, à moins de ne vouloir qu'un cycle d'aspiration.
Cette remarque est précisément le point qui diffère le X1 du X1e en ma possession : le X1 intègre un réservoir d'eau qui lui évite de retourner régulièrement à la base pour nettoyer les serpillères.
Le X1e en étant dépourvu, il pourra s'accomoder de l'absence de station en mode aspiration, mais pas en mode serpillère.
C'est là la seule différence avec le X1 vendu environ 200€ plus cher.
Depuis l'application, on peut donc afficher la caméra de l'aspirateur (qui lui permet de reconnaître des obstacles mais qui a d'autres usages que nous verrons plus loin), mais aussi prendre le contrôle du robot.
Disons-le tout de suite, ça ne se pilote pas comme un drone, mais en tant que geek, j'aime bien la possibilité de vadrouiller dans la maison avec le point de vue de mon aspirateur, et surtout, sans bouger de mon bureau 😁
Blague à part, cette possibilité s'avère bien pratique dans les - rares - cas où le robot se bloque quelque part.
À vrai dire, il n'y a bien que l'étendoir à linge qui lui pose problème, mais on peut définir, sur la carte du logement, des zones où il ne doit jamais aller, ce qui permet d'éviter ce genre de déconvenue.
Dans le même esprit, cela permet aussi d'essayer de débloquer manuellement et à distance le robot s'il était incapable de le faire tout seul.
Autre cas d'usage, même si, soyons francs, je pense que ça sera assez rare, la fonction interphone.
Il est possible d'établir une communication vocale (et visuelle pour l'un des interlocuteurs) via le robot.
Enfin : la surveillance du domicile.
Ma pensée initiale était celle du geek parano : c'est un robot aspirateur, pourquoi diable voudrais-je lui confier la surveillance du domicile ?
Mais en fait, ça fait sens dans la mesure où il dispose de toute façon de tout l'équipement pour le faire, et surtout, parce qu'il est mobile.
Il peut effectuer des rondes, enregistrer le son et l'image, et on peut consulter tout ça depuis l'application.
Du coup, ma parano change de cible : oui mon aspirateur robot peut enregistrer l'image et le son, donc autant s'en servir pour me rassurer quand personne n'est à la maison (une fois tous les dix ans).
Je n'ai pas fait une analyse poussée du trafic réseau initié par le robot ou sa base, mais je sais que les données (photos et vidéos) sont stockées sur des serveurs Amazon.
Quoiqu'il arrive, la règle est la même quel que soit le périphérique s'il peut capter des images : **on ne se met pas tout nu devant une caméra !**
Un point que je n'ai pas abordé parce que j'en fous complètement (pour l'instant), c'est la possibilité de contrôler le robot à la voix ("OK Yiko, nettoie la cuisine", ce genre de choses).
Ça peut être utile ponctuellement mais à moins d'un accident, une fois qu'on a défini un programme, je doute que je vais beaucoup me servir des commandes vocales.
L'application offre plein de réglages qu'il est pertinent de visiter, comme le degré d'humidité des lingettes, la puissance d'aspiration, etc.
Il faut essayer des combinaisons différentes pour trouver le *sweet-spot*, c'est-à-dire un équilibre acceptable entre les nuisances sonores, la fréquence d'entretien, la consommation d'eau, etc.
Et surtout : activer l'IA pour la détection des déjections afin que le robot les évite...
## Entretien
On a fait un grand bon en avant en terme d'entretien, mais c'est aussi dû à la forte montée en gamme.
La base ne sert plus seulement à recharger la batterie du robot : c'est sa propre station-service.
On y trouve un bac pour l'eau propre (qu'il vaut mieux additionner de produit nettoyant...), un bac pour l'eau sale, un tiroir à accessoires entre les deux (où se trouve une brosse fournie pour nettoyer manuellement et occasionnellement le robot et sa base, ainsi qu'un emplacement pour un flacon de solution de nettoyage à acheter séparément), et un tiroir pour le sac à poussières.
Pendant un cycle de lavage, le robot retourne régulièrement à la base pour nettoyer ses serpillères et y redéposer de l'eau propre.
Lorsque son bac à poussière interne est plein, il retourne à la base pour le vider.
À chaque fois, il reprend "évidemment" le programme là où il s'est arrêté.
Du coup, l'entretien manuel est assez limité, et simplifié au maximum.
On remplit le bac d'eau propre en y ajoutant deux bouchons de solution de nettoyage, on vide le bac d'eau sale et on le rince, et on vide le sac à poussière avant d'en remettre un autre.
Il n'y a pas de règle absolue valable pour tout le monde, mais le Deebot semble vraiment efficient.
A priori, le sac à poussières devrait tenir deux ou trois mois, le bidon d'un litre de solution de nettoyage pourrait bien tenir un an.
J'ai acheté des serpillères et des sacs supplémentaires et le kit d'accessoires comprenant les brossettes latérales et le cylindre principal, mais à l'heure actuelle, j'ignore complètement quand je vais en avoir besoin.
En tous cas, je suis davantage en confiance avec le Deebot qu'avec mon ancien Roomba.
À noter qu'en fin de cycle, la base nettoie les serpillères et les sèche à l'air chaud.
Une odeur d'électronique chaude se dégage alors de la station, une odeur qui m'est très agréable mais qui en dérangera peut-être d'autres.
En tout cas, pas de quoi s'alarmer, c'est normal (et désactivable même si je ne vois pas pourquoi on voudrait le faire).
Ce processus est censé améliorer la durée de vie des serpillères, et j'ai tendance à le croire.
On notera également que les serpillères peuvent être lavées en machine après avoir été désolidarisées du pignon aimanté.
Un bon point si, comme moi, vous n'aimez pas les trucs jetables...
![dcCU9g](images/dcCU9g.jpg)
## Efficacité
On n'a rien sans rien : n'espérez pas que tout soit parfaitement clean si vous n'êtes pas d'abord allé dans les réglages pour trouver ce qui vous sied le mieux.
En ce qui me concerne, les réglages "moyens" me conviennent parfaitement.
On ne va pas se mentir : il y aura toujours des taches que le robot sera incapable de faire disparaître.
Et râler avec des phrases du genre "Gnagnagna, pour le prix que je l'ai payé, ça doit être parfait", ça ne changera rien aux lois de la physique : la pression exercée au sol par le robot ne pourra jamais égaler celle exercée par un humain.
Donc, pour ces quelques taches tenaces, on se gardera un balais et une serpillère au cas où.
Au même titre qu'on gardera un aspirateur conventionnel pour faire les finitions qu'un robot ne peut pas faire.
Et on arrête de faire les enfants gâtés.
## Bruit
Quelques mots concernant le bruit :
- je n'ai pas tellement de point de référence, hormis les aspirateurs conventionnels et le Roomba 860
- ma sensibilité n'est pas la vôtre
- les bruits émis par le robot ou la station sont similaires à ceux produits par une machine à café
Cela étant dit, j'estime le Deebot X1 silencieux, au point qu'il m'est déjà arrivé de pouvoir faire une sieste pendant qu'il travaillait.
Deux opérations sont plus bruyantes que le robot en fonctionnement :
- le nettoyage des serpillères, mais c'est vraiment discret (un peu comme l'eau pompée par une machine à café)
- le vidage du bac à poussières vers la base, qui est vraiment bruyant mais ne dure que quelques secondes (un peu comme le broyage du café opéré par un percolateur), une fois de temps en temps (peut-être deux fois par semaine, en fin de cycle de lavage)
Rien n'est fait en dehors des cycles de lavage, donc pas de risque d'être réveillé en pleine nuit.
En outre, le robot peut nous parler pour nous informer de ses états normaux ou anormaux.
Rien de nouveau cela dit, le Roomba 860 le faisait déjà.
## Autres observations
Quand on affiche le flux de la caméra, on se rend compte qu'elle est assez versatile, et capable de s'adapter à des zones très sombres.
Certains trouveront ça gadget, moi je trouve fascinant de pouvoir explorer tous les recoins de ma maison avec un nouveau point de vue.
Dans tous les cas, c'est très utile à la reconnaissance de son environnement, donc ça me semble être une excellente chose.
Un point que je n'ai pas encore abordé c'est l'esthétique de l'ensemble.
Il faut savoir que la base est énorme, pour qui n'est pas habitué.
Ce n'est clairement pas un robot fait pour les volumes restreints et les petits appartements.
Je pense que pour de telles configuration, il existe d'autres références plus adaptées et moins chères que le X1.
Il faut prévoir de la place autour de la station, et surtout, devant pour éviter que le robot peine à s'insérer dans le "vaisseau-mère", bien que, sur ce point aussi, des progrès significatifs ont été réalisés.
Les finitions sont excellentes, l'esthétique est assez classe pour un robot d'entretien, et il ne jure pas dans son environnement.
Il ne donne pas l'impression d'un outil mais d'un produit ménager classieux.
Néanmoins, le colori blanc brillant de l'aspirateur est évidemment très salissant.
Je m'en doutais, et c'est un fait, mais n'étant pas porté sur l'aspect visuel plus que ça, je m'en fous un peu.
Ce qui compte pour moi, c'est que la maison soit propre, et qu'il me demande le moins d'entretien possible, et pour le moment, le contrat est rempli.
En ce qui concerne ses caractéristiques énergétiques, je suis très satisfait.
Sorti du carton, sa batterie était à 60% environ, j'ai pu faire la cartographie rapide de la maison et un premier passage aspirateur + serpillère sans problème.
J'ai du toutefois attendre une charge complète avant de commencer à jouer avec le flux vidéo, le contrôle manuel de l'aspirateur, etc.
Après ça, il vient à bout assez facilement de nos 100m&sup2;, avec le flux vidéo activé en permanence pendant le cycle de nettoyage (toujours aspiration + serpillère) puisqu'il lui reste un peu plus de la moitié de sa batterie à la fin du cycle.
Il faut cependant garder à l'esprit que ça dépend réellement de plusieurs facteurs : les réglages évidemment, mais aussi le type de sol.
Chez nous, l'environnement est idéal pour un robot : la maison est 100% carelée, pas de tapis ni de moquette, *open-space* à 60% de sa surface, et il n'y a rien à escalader.
Il me semble évident que dans d'autres configurations d'intérieur, la batterie sera davantage sollicitée.
On peut définir des barrières virtuelles.
C'est une possibilité très utile et pratique, qui manquait réellement au Roomba 860 (et qui se payait puisqu'il fallait acheter une barrière infrarouge).
Là, on peut définir des murs virtuels que le robot ne franchira jamais.
J'apprécie la mise à disposition de [diverses pièces détachées](https://www.ecovacs.com/fr/deebot-robotic-vacuum-cleaner/deebot-x1e-omni#accessories), en sus évidemment des brosses et du cylindre principal.
Le prix est relativement élevé, mais il faut le relativiser en se disant qu'on ne va pas changer ces pièces tous les six mois (ni même tous les ans, probablement), et que tout respire la qualité.
L'indice de réparabilité de 8/10, quoiqu'on en pense, inspire confiance quant à la durée de vie potentielle du robot et de sa base.
## Conclusion
Pour commencer, ce robot aspirateur m'aide à soigner ma paranoïa de geek.
J'ai fait certaines concessions, la plus importante étant de me passer d'une application non-mobile, et je réalise que ce n'est pas si grave que ça.
J'ai conscience des implications, des origines et des conséquences de ce que j'ai autorisé, et j'accorde une certaine confiance à Ecovacs, à eux maintenant de me prouver que j'ai bien fait.
Notez cependant que je cherche déjà des idées pour prendre totalement possession du logiciel afin d'éviter que le robot ou la base ne communique trop avec l'extérieur, et que ce que [j'ai trouvé](https://github.com/bmartin5692/bumper) est assez rassurant puisque basé sur des protocoles standards (HTTP et XMPP/MQTT, en substance).
Ensuite, à date, je suis pleinement satisfait de cet achat.
Certes, c'est une dépense conséquente, mais c'est à ça que sert l'argent : à se payer du confort.
La maison est propre en permanence, la consommation d'eau est maîtrisée (ce qui n'est pas le cas quand on nettoie manuellement).
L'impact sur le moral est énorme, le gain temporel est significatif, sans compter les avantages intrinsèques à un logement propre et sain (surtout quand vous avez des allergies comme mon épouse).
J'ai toutefois quelques idées d'améliorations pour de futurs assistants ménagers, comme un pilotage amélioré où l'on pourrait activer ou désactiver la serpillère ou l'aspirateur en temps réel, l'approvisionnement et la vidange de l'eau via les canalisations (comme une machine à laver) avec un unique réservoir que l'on remplirait de solution de nettoyage (ou sur lequel on clipserait simplement une bouteille), ou encore la possibilité d'auto-héberger le logiciel qui pilote tout ça...
Au final, mise à part l'application, je suis emballé par le Deebot X1e.
Le rapport qualité-prix me semble tout à fait convenable.
Il y en aura toujours pour dire que c'est trop cher, mais je pense être réaliste en disant que le prix de la prestation proposée est excellent, et surtout, encore une fois, qu'on n'a rien sans rien.
La conception est excellente, la navigation et la reconnaissance d'objets me semble tout à fait convaincantes, le nettoyage est efficace et efficient, la batterie me semble suffisante pour nettoyer correctement le sol de la maison, il n'y a vraiment que l'application mobile qui soit un peu en retrait mais par rapport à d'autres tests parus sur Internet, j'ai l'impression qu'elle a déjà été significativement améliorée depuis la sortie du robot il y a quelques mois.
Bref, je valide !

View File

@@ -0,0 +1,170 @@
---
date: '2023-05-26'
title: 'Réflexion : IA et moteurs de recherche'
---
Pas une journée ne passe sans qu'un nouveau grand ponte d'Internet annonce ajouter des fonctionnalités à base d'Intelligence Artificielle dans ses produits.
Inévitablement, cette frénésie s'empare des moteurs de recherche.
[Google](https://www.justgeek.fr/tout-savoir-sur-bard-le-chatbot-de-google-108594/) et [Microsoft](https://www.tomsguide.fr/apres-chatgpt-dans-bing-microsoft-ajoute-bing-a-chatgpt-pour-ecraser-google-en-intelligence-artificielle/) sont en tête de pont.
Ironiquement, [Eric Schmidt](https://www.forbes.fr/technologie/eric-schmidt-ancien-pdg-de-google-alerte-sur-la-dangerosite-de-lia/) et [Bill Gates](https://www.cnbc.com/2023/05/22/bill-gates-predicts-the-big-winner-in-ai-smart-assistants.html) (respectivement ex-patrons de ces deux entreprises) sont les premiers à avertir des dérives potentielles de l'IA (ou en tout cas, des changements profonds qu'elles vont opérer).
Mais comme d'habitude, tout le monde est pressé d'introduire de nouvelles technologies sans questionner leur **pertinence pour les utilisateurs**.
En l'occurrence, introduire l'IA dans les moteurs de recherche n'est pas fondamentalement une mauvaise idée : l'utilisateur écrit une requête en langage naturel et le moteur sort une liste de réponses "*adéquates*".
Cette idée est scindées en deux postulats :
- l'utilisateur écrit une requête en langage naturel
- le moteur de recherche sort une liste de réponses "*adéquates*"
Chacun de ces postulats introduit lui-même ses propres problèmes.
## La question du langage naturel
Soumettre une requête en langage naturel à un moteur de recherche signifie lui demander quelque chose comme on le demanderait à un humain.
Par exemple : "*combien de panneaux solaires faut-il pour alimenter une maison*".
Le moteur de recherche doit faire face à une quantité assez impressionnante de problématiques pour accomplir son objectif.
Il doit corriger les erreurs d'orthographe ou de frappe et ce, quelque soit la langue, isoler les éléments de langage utiles à la recherche (dans cet exemple, "*faut-il pour*" n'est pas un élément nécessaire de la requête), etc.
En gros, le moteur de recherche doit être capable de contextualiser la recherche.
En gros, on lui demande de lire dans nos pensées.
C'est à cette problématique qu'est censée répondre l'IA.
Pas pour le bien des utilisateurs, mais pour que les moteurs puissent dire "*chez nous, vous pouvez demander quelque chose comme si vous vous adressiez à un humain*".
L'IA est censée s'intercaler entre l'arrière-boutique technique du moteur, et l'utilisateur.
On appelle ça une **interface**.
L'IA est indéniablement douée pour ce type d'exercice parce que, comme toute chose en informatique (et sans doute dans d'autres domaines), elle a été conçue pour ça.
Les mathématiques employées par l'IA sont capables de convertir en [*tokens*](https://fr.wikipedia.org/wiki/Grand_modèle_de_langage#Tokénisation) (des objets mathématiques) des éléments de langage utilisables de façon logique (les algorithmes).
Quand on demande à des IA génératives de produire une image à partir d'une requête en langage naturel, la première étape consiste à analyser la requête, pour transmettre les *tokens* ainsi produits aux algorithmes qui, eux, vont produire une image [*potentiellement* cohérente](/interets/informatique/2022/09/21/j-ai-joue-avec-stable-diffusion-sur-mon-mac-mini-m1/).
Donc, pour l'instant, dans un moteur de recherche, l'IA n'intervient que comme interface permettant à l'utilisateur d'exprimer une requête en langage naturel.
En conséquence, ma question est la suivante : pourquoi faire ?
A-t'on réellement besoin de poser des questions à un moteur de recherche comme on le ferait à un humain ?
Dans le cas d'un assistant domotique, où l'on *parle* pour formuler une demande, je conçois que parler "comme à un humain" fasse sens.
Mais dans un moteur de recherche où l'on *écrit* une requête, je ne trouve pas ça pertinent, voire franchement contre-productif.
Avant l'effervescence de l'IA dans le domaine des moteurs de recherche, lorsque l'on cherchait quelque chose, on pouvait donner une série de mots-clé au moteur qui devait, a priori, bien se débrouiller avec.
Après tout, il s'agit simplement de donner une note à chaque page indexée en fonction, schématiquement, du nombre de mots-clé concordants.
Plus il y a de mots-clé dans la page, plus elle est sémantiquement appropriée et donc, elle devrait être plus pertinente pour l'utilisateur.
C'était, en tout cas, [leur but initial](https://html.spec.whatwg.org/multipage/semantics.html#standard-metadata-names:meta-keywords).
Pour reprendre mon exemple précédent, dans un monde pré-IA, j'aurai formulé ma requête de la façon suivante : "*panneau solaire alimenter maison*" (notez qu'il n'y a même pas besoin de s'embêter avec les pluriels).
Cette requête ne contient que le strict nécessaire pour déterminer ce que j'attends comme résultats pertinents.
Le problème qui se pose alors est évidemment connu depuis **très** longtemps, et il porte le nom de *SEO-bombing*, qui consiste "simplement" à barder ses pages web de mots-clé pas toujours en rapport avec le contenu avant de les soumettre aux moteurs de recherche.
Avec des millions de requêtes d'indexation par jour, il est impossible de s'assurer que toutes les pages ne sont pas construites spécialement pour tirer profit de cette technique.
Un revendeur de panneaux solaires va les intégrer à ses pages web indexées par les moteurs de recherche, et par conséquent, va atterrir dans les résultats de votre recherche sans jamais répondre à la question posée.
Une requête en langage naturel va même aggraver le phénomène (à cause du mot "*combien*", associé à un hypothétique *token* "*combien ça coûte*", alors que l'idée de base est "*combien de panneaux solaires [...]*").
C'est ainsi que l'on a tué les mots-clé.
Comme les mots-clé n'ont plus aucune utilité, il faut trouver autre chose pour lier des pages web à une requête sur un moteur de recherche.
Facile avec l'IA : on a vu que son rôle consistait à *tokeniser* des séquences en langage naturel (c'est-à-dire convertir ces séquences en objets mathématiques via [plusieurs procédés](https://fr.wikipedia.org/wiki/Traitement_automatique_des_langues) qui, eux, sont très complexes mais cette complexité n'est pas l'affaire des moteurs de recherche).
Il suffit de soumettre les pages de l'index à une IA qui va se charger toute seule de les *tokeniser*.
La comparaison avec les *tokens* produits par une requête d'un utilisateur se fait alors "le plus simplement du monde".
L'IA permet donc aux moteurs de recherche de résoudre plusieurs "problèmes" :
- offrir aux utilisateurs la possibilité de formuler les requêtes en langage naturel
- éviter le *SEO-bombing* en analysant directement la sémantique des pages web plutôt qu'en se référant aux outils pré-existants et utilisés à des fins "malveillantes"
- automatiser un maximum de choses, notamment au niveau de l'indexation des pages, et externaliser la complexité (en gros, sous-traiter la gestion de l'IA à un tiers comme [OpenAI](https://openai.com/) pour les moteurs basés sur [ChatGPT](https://fr.wikipedia.org/wiki/ChatGPT))
C'est bien beau tout ça mais vous me direz, en quoi c'est une mauvaise chose ?
En fait, je suis simplement attristé de la tournure des choses, des "évolutions" de l'informatique et surtout, de ses détournements à des fins monétaires.
Je l'ai dit : la formulation en langage naturel ne me paraît pas pertinente dans le cadre d'un moteur de recherche web.
Ensuite, l'emploi de l'IA va surtout profiter aux moteurs de recherche, sans pour autant améliorer "l'expérience utilisateur", qui revient finalement, toujours dans le cadre d'un moteur de recherche, à fournir des résultats pertinents.
Et c'est là que le bât blesse, car rien ne risque de changer à ce niveau.
## La question de la pertinence des réponses
Les réponses attendues à une requête à un moteur de recherche sont profondément subjectives.
Quand vous cherchez "*combien de panneaux solaires faut-il pour alimenter une maison*", il faut s'attendre à ne pas trouver de réponse satisfaisante parce que ce nombre dépend de paramètres qui vous sont propres, tels que la consommation de *votre* maison, la surface de la toiture de *votre* maison, etc.
Les moteurs de recherche doivent donc donner des résultats les plus génériques possibles, parce qu'il est pratiquement impossible de trouver une réponse directe à cette question.
Le problème de la pertinence des réponses survient lorsqu'au contraire, on cherche quelque chose de très spécifique.
Les moteurs de recherche semblent désormais partir du principe que vous ne savez pas ce que vous voulez (j'y vois [une philosophie d'entreprise](/interets/informatique/2023/01/16/rant-android-c-est-de-la-merde/) dans le cas de Google), et même si vous savez que la réponse à votre question devrait être facile à trouver, ils vont vous proposer des réponses complètement à côté de la plaque.
Déjà, la plupart du temps et en fonction de votre moteur de recherche, vous allez vous retrouver avec une page remplie uniquement de résultats sponsorisés, plus ou moins en rapport avec votre requête.
Dans mon exemple, Google me propose une pleine page de liens vers des boutiques en ligne pour acheter des panneaux solaires ou vers des entreprises qui en font l'installation.
Et [cela risque d'être pire avec l'IA](https://www.clubic.com/pro/entreprises/google/actualite-471384-nouveau-google-avec-ia-encore-plus-de-pub-dans-le-moteur-de-recherche-c-est-possible.html).
Ensuite, parce que *votre* requête va correspondre à une minorité de requêtes *similaires* (mais pas assez pour être *égales*) déjà formulées par d'autres utilisateurs.
Or, d'expérience, sur des sujets très spécifiques et/ou de niche, et peu importe le moteur de recherche, j'ai toujours l'impression d'être un idiot : les résultats donnés par le moteur sont jugés pertinents pour la majorité des utilisateurs, mais, manque de bol, je fais partie de la minorité.
Je suis obligé de fouiller parfois jusqu'à la vingtième page de résultats pour trouver *exactement* la réponse à ma question.
J'échoue à comprendre en quoi l'IA va améliorer cela.
Quoiqu'il arrive, il faut que quelqu'un, quelque chose (un algorithme) décide d'attribuer une note de pertinence aux résultats trouvés et potentiellement en rapport avec ma requête.
Cet élément décisionnel est fonction de beaucoup de choses, et notamment :
- la popularité, c'est-à-dire le nombre de visites vers une page donnée en fonction des *tokens* recherchés (donc si la majorité des utilisateurs ayant formulé la même requête que vous clique sur une page qui n'a rien à voir parce qu'elle a été spécialement conçue pour les tromper, vous tombez aussi dans le piège)
- les critères déontologiques du moteur de recherche (qui peuvent provoquer la censure de certains résultats, que cela soit estimé approprié ou non par les visiteurs n'entre pas en ligne de compte)
- les critères de sécurité du moteur de recherche
- d'autres critères non divulgués
Ces éléments existeront toujours avec l'emploi de l'IA parce qu'ils forment les *spécificités commerciales* de chaque moteur.
On pourrait croire que l'IA devrait offrir un outil objectif, détaché des considérations spécifiques de chaque entreprise.
Après tout, on n'arrête pas de parler de supprimer les biais de l'IA.
Mais en fin de compte, tout le travail de mise en place de l'IA au sein des moteurs de recherche va précisément consister à s'assurer que des biais existent toujours, parce que ce sont ces biais qui caractérisent les moteurs.
Certains moteurs pourront se permettre de modifier ces biais au passage à l'IA (ça sera probablement le cas de Google), d'autres devront faire preuve de plus de prudence (comme Microsoft qui a un passif assez lourd sur la question).
Au final, l'introduction de l'IA ne devrait malheureusement pas favoriser les sites plus pertinents, seulement ceux qui rentreront dans le cadre imposé par ces biais, comme ça a toujours été le cas.
Donc, encore une fois, l'IA servira surtout aux moteurs, et beaucoup moins aux utilisateurs.
J'ajouterai même que je suis persuadé que la pertinence des résultats va continuer de chuter avec le passage à l'IA.
Cela n'a rien de scientifique, j'en ai peur, mais j'ai constaté au fil du temps que je trouve de moins en moins facilement ce que je cherche.
Il est certain que cela dépend d'autres facteurs que les algorithmes en jeu, par exemple mes centres d'intérêts qui ont évolué, ou la quantité de personnes qui cherchent à faire les mêmes choses que moi qui s'est réduite avec mon avancée dans certains domaines spécifiques, ou le désintérêt progressif de certaines choses par la majorité des gens.
Des éléments sur lesquels je n'avais de toute façon aucun contrôle.
Des éléments qui me font me dire : "*Je ne peux pas être le seul à vouloir faire ça !*".
## Une pertinence nulle (pour l'utilisateur)
J'ai le sentiment qu'encore une fois, dans le domaine de l'informatique, on surfe sur une vague commercialement alléchante, mais qui ne profitera finalement qu'aux entreprises et non aux utilisateurs.
Pour être franc, je ne vois qu'une potentielle augmentation de l'hostilité contre les utilisateurs des moteurs de recherche, et d'Internet en général.
L'IA va simplifier beaucoup de procédures actuellement coûteuses en temps et/ou en ressources informatiques.
Ces économies vont évidemment profiter aux entreprises, mais quels seront les bénéfices pour les utilisateurs ?
Ils ne pourront pas espérer de meilleurs résultats à leurs requêtes, ni plus d'objectivité.
Ils resteront toujours enfermés dans une bulle cognitive, déterminées par les moteurs pour être ni trop grande (auquel cas leurs règles ne pourraient plus s'appliquer) ni trop petite (au risque de perdre des utilisateurs).
C'est juste que tout changement dans la taille de cette bulle sera techniquement plus facile à réaliser.
Et peut-on réellement dire que formuler des requêtes en langage naturel est un bénéfice pour l'utilisateur ?
Je sais bien que ce n'est pas parce que *moi* j'ai "appris à parler" aux moteurs de recherche que personne n'utilise le langage naturel, mais je me pose en fait la question plus profonde : pourquoi parler naturellement avec une Intelligence *Artificielle* ?
N'est-ce pas contribuer directement à la dénaturalisation de l'Homme ?
N'est-ce pas s'exposer stupidement à une auto-flagellation, comme on l'a vu récemment avec les "[petites-amies virtuelles](https://www.lefigaro.fr/secteur/high-tech/elle-n-est-plus-elle-meme-le-desarroi-des-utilisateurs-de-replika-rejetes-par-leurs-petites-amies-virtuelles-20230319)" ?
Pourquoi le [test de Turing](https://fr.wikipedia.org/wiki/Test_de_Turing) est devenu un challenge à atteindre plutôt qu'un outil "académique", scientifique ?
L'autre objectif poursuivi par l'intégration de l'IA dans les moteurs de recherche est l'apprentissage automatique.
Cela ne risque-t'il pas de porter - encore plus - préjudice aux sites intéressants mais peu populaires (un peu comme Amazon qui réduit la note de mon livre parce qu'il ne se vend pas) ?
Et, a contrario, d'augmenter - encore plus - la popularité de sites peu intéressants mais techniquement conçus pour vous inciter à cliquer sur *leurs* résultats de recherche ?
Comment ne pas voir en cela des techniques commerciales pourtant éprouvées depuis longtemps, et comment peut-on encore tomber dans ces panneaux ?
Autrement dit, je crains que l'IA ne fasse qu'amplifier les problèmes existants, sans le moindre bénéfice pour l'utilisateur final.
Mais pourquoi s'en soucier de toute façon, lorsqu'on est le moteur de recherche par défaut sur des milliards de périphériques à travers le monde, et qu'une fraction complètement marginale va manuellement choisir un autre moteur.
## Encore un immense potentiel gaspillé
Pour moi, l'IA aurait pu apporter un élément que j'estime indispensable aux moteurs de recherche : l'objectivité.
Un élément évidemment en complète opposition avec les prérogatives financières de ces moteurs, dont le but est sans équivoque : gagner de l'argent d'un côté (vous faire cliquer sur des offres commerciales sponsorisées) et en perdre le moins possible de l'autre (redistribuer juste assez d'argent pour que les véritables producteurs de contenus s'imaginent satisfaits du contrat).
Or, l'IA risque aussi de faciliter l'intégration de contenus, y compris en provenance d'auteurs qui ne veulent pas figurer dans les résultats de recherche de ces moteurs, que ce soit par éthique personnelle, par ciblage ou toute autre raison qui leurs sont propres.
Car, si l'on [recherche déjà les moyens de bloquer](https://www.adagp.fr/fr/actualites/ia-et-droit-dauteur-ladagp-en-appelle-une-regulation-sur-trois-points) l'intégration de certains contenus aux corpus d'apprentissage de ces IAs, je pense qu'ils sont tous voués à l'échec.
Il est impossible, notamment par l'usage de [stochastique](https://fr.wikipedia.org/wiki/Chaîne_de_Markov) dans les mathématiques impliquées dans la génération de contenu, de certifier qu'une oeuvre particulière (qu'elle soit textuelle ou non) a effectivement été utilisée pour en produire une "nouvelle" avec une IA.
Inversement, et pour la même raison, il est impossible de certifier qu'une oeuvre n'a pas été utilisée par une IA pour en produire une nouvelle.
Je crois que bientôt, cette caractéristique particulière servira au plagiat automatisé.
On ne parlera plus de *SEO-bombing* mais de *IA-bombing*, ce qui va nuire non seulement aux utilisateurs du moteur de recherche, mais aussi aux producteurs de contenus "authentiques".
Mises bout à bout, toutes mes remarques me conduisent à reformuler avec une nouvelle véhémence les craintes que j'ai évoqué dans mon article : [L'IA pose la question de l'identité](/interets/informatique/2022/12/24/l-ia-pose-la-question-de-l-identite/).
À mettre de l'IA partout, tout le temps même lorsque cela n'est pas pertinent et utile à l'utilisateur, nous allons finir par nous perdre.
Et je déplore ce paradigme associé à "mon monde", celui de l'informatique.

View File

@@ -0,0 +1 @@
file: images/A1Q6mO.jpg

View File

@@ -0,0 +1 @@
file: images/KqxGsR.jpg

View File

@@ -0,0 +1 @@
file: images/MA4m5T.jpg

View File

@@ -0,0 +1 @@
file: images/Rr8KVX.jpg

Some files were not shown because too many files have changed in this diff Show More