blog.notmyidea.org/feeds/all.atom.xml

4472 lines
No EOL
825 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Alexis Métaireau</title><link href="https://blog.notmyidea.org/" rel="alternate"></link><link href="https://blog.notmyidea.org/feeds/all.atom.xml" rel="self"></link><id>https://blog.notmyidea.org/</id><updated>2024-01-23T00:00:00+01:00</updated><entry><title>2024, Semaine 3</title><link href="https://blog.notmyidea.org/2024-semaine-3.html" rel="alternate"></link><published>2024-01-23T00:00:00+01:00</published><updated>2024-01-23T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2024-01-23:/2024-semaine-3.html</id><summary type="html">
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;🗺️ &lt;a href="https://umap-projet.org"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Deux petites demi-journées de travail. Des discussions en collectif sur ce qu&amp;#8217;on attends de nos réunions hebdo, et une discussion sur les orientations techniques et sur notre manière de prendre des&amp;nbsp;décisions.&lt;/p&gt;
&lt;p&gt;Peu d&amp;#8217;avancées techniques, j&amp;#8217;ai un prototype sur comment se …&lt;/p&gt;</summary><content type="html">
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;🗺️ &lt;a href="https://umap-projet.org"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Deux petites demi-journées de travail. Des discussions en collectif sur ce qu&amp;#8217;on attends de nos réunions hebdo, et une discussion sur les orientations techniques et sur notre manière de prendre des&amp;nbsp;décisions.&lt;/p&gt;
&lt;p&gt;Peu d&amp;#8217;avancées techniques, j&amp;#8217;ai un prototype sur comment se connecter avec &lt;a href="https://github.com/yohanboniface/Leaflet.FormBuilder"&gt;Leaflet Formbuilder&lt;/a&gt;, mais j&amp;#8217;ai encore du mal à aller au bout, plutôt du à&amp;nbsp;une &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🫙 &lt;a href="https://chariotte.fr/"&gt;Chariotte&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On a pu se faire notre première réunion dev, avancer sur notre prise de décision, et défaire des nœuds de compréhension entre nous. Content de la direction que les choses&amp;nbsp;prennent.&lt;/p&gt;
&lt;h2 id="des-joies"&gt;Des joies&amp;nbsp;🤗&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Apprécier des rencontres et discussions techniques autour de la protection de la vie privée, des retours du 37C3 et des présentations de différents projets. Content de voir que des connexions continuent à se faire, et que uMap est utilisé dans des cadres&amp;nbsp;militants.&lt;/li&gt;
&lt;li&gt;Faire une proposition d&amp;#8217;organisation collective qui amène à des discussions intéressantes dans un cadre&amp;nbsp;associatif. &lt;/li&gt;
&lt;li&gt;Reprendre les ateliers d&amp;#8217;écriture avec les ami·es, c&amp;#8217;est toujours un moment de partage agréable et&amp;nbsp;créatif.&lt;/li&gt;
&lt;li&gt;Recevoir l&amp;#8217;écoute de mes proches, avec des conseils avisés et réfléchis. Sentir qu&amp;#8217;un nœud se défait, et que c&amp;#8217;est moi qui doit&amp;nbsp;bouger.&lt;/li&gt;
&lt;li&gt;Réussir à amener des sujets complexes et (un peu) chargés émotionellement sur la table, sans que ceux-ci ne prennent toute la place. Se donner le temp de démeler les choses. Je suis content de là ou en est mon collectif de&amp;nbsp;vie.&lt;/li&gt;
&lt;li&gt;Prendre le temps de mettre de l&amp;#8217;ordre dans mes notes de&amp;nbsp;confs!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="des-peines"&gt;Des peines&amp;nbsp;😬&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Je me suis senti dépassé et frustré par des blocages décisionnels, des discussions difficiles à avoir correctement. J&amp;#8217;aimerai mieux clarifier les besoins de tout le monde avant les discussions, et donner une meilleure place aux&amp;nbsp;miens.&lt;/li&gt;
&lt;li&gt;Je n&amp;#8217;ai pas réussi à calmer un moment de détresse (temporaire) à coup de méditation et de sieste, faute d&amp;#8217;outils avec moi. A mieux prévoir la prochaine&amp;nbsp;fois.&lt;/li&gt;
&lt;li&gt;J&amp;#8217;ai passé beaucoup de temps à faire en sorte que mon ordinateur (sous Asahi Linux) fonctionne correctement. Je suis à la fois plus à l&amp;#8217;aise sous Linux, et à la fois qu&amp;#8217;à moitié convaincu de devoir passer autant de temps sur de la&amp;nbsp;configuration.&lt;/li&gt;
&lt;li&gt;Je me suis senti vulnérable et retomber dans le creux de la vague suite à des discussions difficiles et des échos de situations passées. J&amp;#8217;aimerai mieux faire la part des&amp;nbsp;choses.&lt;/li&gt;
&lt;li&gt;J&amp;#8217;ai mal dormi à cause du bruit de la route dans la chambre où j&amp;#8217;étais. J&amp;#8217;aimerai mieux mesurer à quel point le calme est important pour moi et prévoir à&amp;nbsp;l&amp;#8217;avance.&lt;/li&gt;
&lt;li&gt;J&amp;#8217;ai mal au dos et mon corps me rappelle que je devrais faire du sport. J&amp;#8217;aimerai le prendre au&amp;nbsp;sérieux!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vu-lu-ecoute-citations"&gt;Vu, lu, écouté,&amp;nbsp;citations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;📽 &lt;a href="https://www.finite-film.com/"&gt;Finite&lt;/a&gt;, l&amp;#8217;histoire de plusieurs luttes en Allemagne et en Angleterre contre des mines de&amp;nbsp;charbon.&lt;/li&gt;
&lt;li&gt;⏯️ &lt;a href="https://www.youtube.com/watch?app=desktop&amp;amp;v=DEcwa68f-jY"&gt;dotJS 2019 - James Long - CRDTs for&amp;nbsp;Mortals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;📽 Oppenheimer, de Christopher Nolan (avec Cylian Murphy), assez decevant&amp;nbsp;malheureusement&lt;/li&gt;
&lt;li&gt;🎧 &lt;a href="https://www.libreavous.org/195-framasoft-un-an-de-coin-coin"&gt;Framasoft, un an de coin&amp;nbsp;coin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🎧 &lt;a href="https://www.youtube.com/watch?v=gcUzjfEJpGI"&gt;Devenir meilleur ne vous rendra pas plus&amp;nbsp;heureux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;J&amp;#8217;ai assisté à une « Conférence Poétique » de &lt;a href="https://maelledubourg.fr/"&gt;Maëlle Dubourg&lt;/a&gt; « Elle revient de lÎle des Nummes », ça fait du bien de voyager et de réver un peu&amp;nbsp;!&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Une personne peut se faire exclure à vie de certains collectifs, lieux ou associations pour des propos parfois tenus des années auparavant. Un groupe souvent auto-désigné prend en charge le conflit sans quaucune limite ne soit fixée. Il peut y avoir des effets de “surpuissance du groupe” où, sous prétexte de luttes (légitimes) contre les oppressions, on légitime absolument tout : exclusion, harcèlement, humiliations publiques, violences physiques… Et la désescalade est souvent impossible.
À mon sens, lexclusion doit toujours être cadrée dans le temps et la personne exclue, accompagnée (dans lidéal), pour quelle puisse comprendre ce qui lui est reproché et comment elle peut réparer la situation.
&amp;nbsp;https://cqfd-journal.org/Se-reapproprier-nos-conflits&lt;/p&gt;
&lt;p&gt;On s&amp;#8217;en sert comme exemple pour montrer pourquoi il ne faut jamais faire de révolution, mais la grande terreur qui à suivi la commune, les massacres des peuples [&amp;#8230;] c&amp;#8217;était pire que la terreur et c&amp;#8217;est la terreur imposée par ceux qui disent nous voulons veut garder le&amp;nbsp;pouvoir.&lt;/p&gt;
&lt;p&gt;Cela fait partie des mythes de notre histoire, « les révolutionnaires sont violents ». Non, la violence vient de la contre attaque de ceux que l&amp;#8217;on tente de déposséder, et ceux qui sont dépossédés sont ceux qui disposent du pouvoir économique et social, et la violence survient quand ils disent « nous allons garder le pouvoir ».
— Ken Loach, dans &lt;a href="https://www.film-documentaire.fr/4DACTION/w_fiche_film/69384_0"&gt;Les Héritiers de la&amp;nbsp;Commune&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content><category term="weeknotes"></category></entry><entry><title>2024, Semaine 2</title><link href="https://blog.notmyidea.org/2024-semaine-2.html" rel="alternate"></link><published>2024-01-16T00:00:00+01:00</published><updated>2024-01-16T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2024-01-16:/2024-semaine-2.html</id><summary type="html">
&lt;p&gt;De retour après trois semaines off qui m&amp;#8217;ont fait du bien, passées entre ami·es, famille et un petit passage au&amp;nbsp;37C3.&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;🗺️ &lt;a href="https://umap-projet.org"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;3 jours de travail et de discussions avec Yohan sur le projet. J&amp;#8217;ai pu lever des freins à mon avancée …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;De retour après trois semaines off qui m&amp;#8217;ont fait du bien, passées entre ami·es, famille et un petit passage au&amp;nbsp;37C3.&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;🗺️ &lt;a href="https://umap-projet.org"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;3 jours de travail et de discussions avec Yohan sur le projet. J&amp;#8217;ai pu lever des freins à mon avancée, et je crois à notre compréhension mutuelle. Des discussions qui nous permettent de mieux se comprendre, et de sortir de nos&amp;nbsp;postures.&lt;/p&gt;
&lt;p&gt;En fin de semaine, je me suis senti plus à l&amp;#8217;aise à travailler sur la base de code&amp;nbsp;actuelle.&lt;/p&gt;
&lt;h2 id="des-joies"&gt;Des joies&amp;nbsp;🤗&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🪶 Faire une sortie Ornitho à la journée, à l&amp;#8217;occasion du &lt;a href="https://www.lpo.fr/decouvrir-la-nature/loisirs-nature/agenda-nature/agenda-lpo-france/2024/comptage-annuel-des-oiseaux-d-eau"&gt;comptage annuel des oiseaux d&amp;#8217;eaux&amp;nbsp;(Wetlands)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Aller au meetup Rennes Python, et y découvrir certaines avancées de python qui m&amp;#8217;étaient passées à côté (&lt;a href="https://docs.python.org/3/reference/compound_stmts.html#match"&gt;&lt;code&gt;match&lt;/code&gt;&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Réussir à exposer mon inconfort et à en faire un sujet de discussion, plutôt que de fermer les yeux&amp;nbsp;dessus.&lt;/li&gt;
&lt;li&gt;Arriver à un niveau d&amp;#8217;énergie auquel je n&amp;#8217;avais pas été depuis… pfiou, au moins tout ça. Je retrouve de l&amp;#8217;envie et de la motivation tout en étant moi même&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;Revoir des amis de longue date le temps d&amp;#8217;une après-midi/soirée, en&amp;nbsp;simplicité.&lt;/li&gt;
&lt;li&gt;Avoir enfin une connexion digne de ce nom chez moi, je vais pouvoir me faciliter le travail à la&amp;nbsp;maison!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="des-peines"&gt;Des&amp;nbsp;peines&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Je continue de donner de l&amp;#8217;importance à ce que « les gens pourraient penser » de ce que je fais. J&amp;#8217;aimerai m&amp;#8217;en détacher&amp;nbsp;plus.&lt;/li&gt;
&lt;li&gt;Je n&amp;#8217;ai pas réussi à me donner des temps de respiration nécessaires entre plusieurs activités, ce qui m&amp;#8217;a rendu un peu grognon. J&amp;#8217;aimerai réussir à mesurer l&amp;#8217;impact d&amp;#8217;une sieste dans ce genre de situations&amp;nbsp;!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vu-lu-ecoute"&gt;Vu, lu,&amp;nbsp;écouté&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;📼 Beaucoup de conf lors du 37C3, entre autres &lt;a href="https://media.ccc.de/v/37c3-11859-operation_triangulation_what_you_get_when_attack_iphones_of_researchers"&gt;des gens de Kaspersky qui ont réussi à prendre des hackers sur le fait&lt;/a&gt;, une &lt;a href="https://media.ccc.de/v/37c3-12309-a_year_of_surveillance_in_france_a_short_satirical_tale_by_la_quadrature_du_net"&gt;revue de l&amp;#8217;année passée en terme de surveillance par &lt;span class="caps"&gt;LQDN&lt;/span&gt;&lt;/a&gt;, un &lt;a href="https://media.ccc.de/v/37c3-12040-tor_censorship_attempts_in_russia_iran_turkmenistan"&gt;retour sur la censure du réseau Tor en russie&lt;/a&gt;, une &lt;a href="https://media.ccc.de/v/37c3-12168-predator_files_how_european_spyware_threatens_civil_society_around_the_world"&gt;investigation d&amp;#8217;Amnesty International autour de l&amp;#8217;affaire « Predator »&lt;/a&gt; et un retour sur &lt;a href="https://media.ccc.de/v/37c3-11836-tractors_rockets_and_the_internet_in_belarus"&gt;la censure et l&amp;#8217;instauration d&amp;#8217;un régime autoritaure en&amp;nbsp;Bielorussie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🎧 J&amp;#8217;ai continué à écouter &lt;a href="https://darknetdiaries.com/"&gt;Darknet diaries&lt;/a&gt;, avec des discussions autour du logiciel espion &lt;a href="https://darknetdiaries.com/episode/137/"&gt;Predator&lt;/a&gt;, des &lt;a href="https://darknetdiaries.com/episode/112/"&gt;communautés qui volent du bitcoin&lt;/a&gt;, et d&amp;#8217;&lt;a href="https://darknetdiaries.com/episode/64/"&gt;affaires d&amp;#8217;espionage des &lt;span class="caps"&gt;USA&lt;/span&gt; sur la grèce autour des jeux olympiques&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</content><category term="weeknotes"></category></entry><entry><title>Format an USB disk from the command-line on MacOSX</title><link href="https://blog.notmyidea.org/format-an-usb-disk-from-the-command-line-on-macosx.html" rel="alternate"></link><published>2023-12-25T00:00:00+01:00</published><updated>2023-12-25T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-12-25:/format-an-usb-disk-from-the-command-line-on-macosx.html</id><content type="html">&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;diskutil&lt;span class="w"&gt; &lt;/span&gt;unmountDisk&lt;span class="w"&gt; &lt;/span&gt;/dev/disk5
sudo&lt;span class="w"&gt; &lt;/span&gt;diskutil&lt;span class="w"&gt; &lt;/span&gt;eraseDisk&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;MS-DOS FAT32&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Brocolis&lt;span class="w"&gt; &lt;/span&gt;/dev/disk
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="code"></category></entry><entry><title>2023, Semaine 49 et 50</title><link href="https://blog.notmyidea.org/2023-semaine-49-et-50.html" rel="alternate"></link><published>2023-12-17T00:00:00+01:00</published><updated>2023-12-17T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-12-17:/2023-semaine-49-et-50.html</id><summary type="html">
&lt;p&gt;Deux semaines de travail depuis la dernière update. Je me suis fait mal au poignet ce qui m&amp;#8217;a pas mal&amp;nbsp;ralenti.&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;🗺️ &lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai posé et déroulé les différents scenarii pour avoir de la synchronisation entre différents clients. Lu et compris comment le code …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Deux semaines de travail depuis la dernière update. Je me suis fait mal au poignet ce qui m&amp;#8217;a pas mal&amp;nbsp;ralenti.&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;🗺️ &lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai posé et déroulé les différents scenarii pour avoir de la synchronisation entre différents clients. Lu et compris comment le code s&amp;#8217;articule. Documenté certains aspects du code, et passé du temps sur des aspects techniques (intégration de modules &lt;span class="caps"&gt;ES6&lt;/span&gt;, utilisation de Web&amp;nbsp;components).&lt;/p&gt;
&lt;p&gt;De manière générale, je monte en compétences sur JavaScript, et je rattrape mon retard des quelques années sur l&amp;#8217;état du web&amp;nbsp;🤓&lt;/p&gt;
&lt;p&gt;On a pu faire un petit point d&amp;#8217;intégration, pour savoir si la manière de fonctionner convient à tout le monde. J&amp;#8217;ai proposé de changer un peu de rythme, être à 2j/semaine est assez frustrant (j&amp;#8217;ai l&amp;#8217;impression d&amp;#8217;arrêter le moteur quand il est à peine chaud). J&amp;#8217;ai proposé de travailler des semaines continues, puis de faire des semaines &lt;em&gt;off&lt;/em&gt;, on verra comment ça&amp;nbsp;marche.&lt;/p&gt;
&lt;p&gt;On à eu le « go » officiel de NLNet, ce qui veut dire que je vais pouvoir travailler sur le projet durant les prochains&amp;nbsp;mois. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🚨 &lt;a href="https://framagit.org/framasoft/framaspace/argos"&gt;Argos&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Un échange en visio avec Luc pour faire le tour des changements qu&amp;#8217;il propose sur le&amp;nbsp;projet.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai ajouté le support d&amp;#8217;&lt;a href="https://alembic.sqlalchemy.org"&gt;Alembic&lt;/a&gt;, pour permettre de faire des migrations de base de données. C&amp;#8217;était assez chouette de découvrir comment ça fonctionne : ça fait longtemps que je l&amp;#8217;utilise sur d&amp;#8217;autres projets mais ce n&amp;#8217;était pas moi qui l&amp;#8217;avait mis en&amp;nbsp;place.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai aussi passé un peu de temps à faire des petits changements à droite à gauche et de la revue de&amp;nbsp;code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;🧺 &lt;a href="https://gitlab.com/la-chariotte/"&gt;Chariotte&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai passé du temps à comprendre pourquoi les emails n&amp;#8217;étaient pas envoyés lors de la récupération de mot de passe. J&amp;#8217;ai fini par trouver en utilisant un bon vieux debugger, comme quoi c&amp;#8217;est la solution à privilégier autant que&amp;nbsp;possible.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai ajouté de la documentation au projet, et je tends des perches pour qu&amp;#8217;on puisse se former en interne sur la gestion du serveur, pour que je ne sois pas le seul à en avoir la&amp;nbsp;compréhension.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://blog.notmyidea.org"&gt;Notmyidea&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai pu faire mes premières factures, et j&amp;#8217;ai même eu mes premiers paiements&amp;nbsp;!&lt;/p&gt;
&lt;h2 id="des-joies"&gt;Des joies&amp;nbsp;🤗&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🪶 Me balader, observer les oiseaux, jouer à des jeux de société, manger des&amp;nbsp;pancakes.&lt;/li&gt;
&lt;li&gt;🧘🏼 Passer du temps seul, à plusieurs reprises, sur des périodes longues qui me permettent de me concentrer et d&amp;#8217;avancer sur des choses importantes pour&amp;nbsp;moi.&lt;/li&gt;
&lt;li&gt;🌱 Prévenir les problèmes. Provoquer un point pour être sur qu&amp;#8217;on se comprenne bien. Je suis content de l&amp;#8217;avoir fait et ça me redonne de&amp;nbsp;l&amp;#8217;envie.&lt;/li&gt;
&lt;li&gt;🤗 Avoir des bons retours sur mon travail valorise mon approche et mes compétences, je prends&amp;nbsp;😇&lt;/li&gt;
&lt;li&gt;🍅 Me remettre aux &lt;a href="https://fr.wikipedia.org/wiki/Technique_Pomodoro"&gt;pomodoro&lt;/a&gt; qui me permettent de me concentrer plus&amp;nbsp;facilement.&lt;/li&gt;
&lt;li&gt;🎹 Faire du piano et chanter avec une&amp;nbsp;amie&lt;/li&gt;
&lt;li&gt;Se prévoir du temps de qualité avec des petits groupes de&amp;nbsp;personnes.&lt;/li&gt;
&lt;li&gt;J&amp;#8217;ai pris mes places pour le 37C3 et j&amp;#8217;ai pu m&amp;#8217;organiser en avance pour le transport, content de voir le stress que ça&amp;nbsp;m&amp;#8217;enlève.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="des-peines"&gt;Des peines&amp;nbsp;😬&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🥱 Je me suis parfois senti fatigué, j&amp;#8217;ai parfois dormi en&amp;nbsp;décalé.&lt;/li&gt;
&lt;li&gt;🏸 Je me suis blessé au poignet gauche, inutilisable pour quelques jours. Ça m&amp;#8217;a mis de mauvaise humeur, je n&amp;#8217;ai pas réussi à me mettre en&amp;nbsp;arrêt.&lt;/li&gt;
&lt;li&gt;😤 Je lutte contre mon perfectionnisme. J&amp;#8217;ai peur de l&amp;#8217;ambiance que ça peut créer, je n&amp;#8217;en veux pas. Envie de trouver des artifices pour changer de&amp;nbsp;positionnement.&lt;/li&gt;
&lt;li&gt;🤓 Je me sens parfois lent parce qu&amp;#8217;en dehors de ma zone de confort, j&amp;#8217;ai envie d&amp;#8217;accepter mes temps d&amp;#8217;apprentissages, et de m&amp;#8217;assurer que personne ne s&amp;#8217;attend à ce que je règle tous les problèmes d&amp;#8217;un&amp;nbsp;coup.&lt;/li&gt;
&lt;li&gt;🫷🏼Je me suis senti triste en apprenant que certains continuent à alimenter leur version de la réalité pour ne pas se questionner sur ce qu&amp;#8217;ils alimentent. Content de ne plus en&amp;nbsp;être.&lt;/li&gt;
&lt;li&gt;Je me suis senti triste de me retrouver un week-end entre hommes et de voir le peu d&amp;#8217;attention portée aux&amp;nbsp;détails.&lt;/li&gt;
&lt;li&gt;J&amp;#8217;ai peur de proposer des changements et que les gens n&amp;#8217;osent pas dire non. Je passe beaucoup de temps à me rassurer, je ne sais pas encore trop quoi faire de ça et ça me coûte de&amp;nbsp;l&amp;#8217;énergie.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vu-lu-ecoute"&gt;Vu, lu,&amp;nbsp;écouté&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🎬 Vu &lt;a href="https://fr.wikipedia.org/wiki/Retour_%C3%A0_Reims_(Fragments)"&gt;Retours à Reims, Fragments&lt;/a&gt; de Jean Gabriel Périot, basé sur le livre de Didier Éribon et des images d&amp;#8217;archives. J&amp;#8217;ai vraiment beaucoup apprécié le format, la mise en parallèle des luttes actuelles avec les luttes ouvrières, et le regard&amp;nbsp;féministe.&lt;/li&gt;
&lt;li&gt;📖 Continué et quasi terminé la lecture de « Le conflit n&amp;#8217;est pas une agression ». J&amp;#8217;apprécie plusieurs&amp;nbsp;morceaux.&lt;/li&gt;
&lt;li&gt;📘 J&amp;#8217;ai lu d&amp;#8217;une traite les 17 premiers articles de &lt;a href="https://www.24joursdeweb.fr/"&gt;24 jours de web&lt;/a&gt;. J&amp;#8217;en&amp;nbsp;retiens: &lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.24joursdeweb.fr/2023/juste-place-vs-juste-prix/"&gt;Juste place &lt;span class="caps"&gt;VS&lt;/span&gt; juste prix&lt;/a&gt; de &lt;a href="https://juliebrillet.fr/"&gt;Julie&lt;/a&gt;, qui fait écho à des interrogations actuelles chez moi, et que je mets en parallèle avec &lt;a href="http://scopyleft.fr/blog/2023/petit-panorama-des-pratiques-de-remuneration-en-horizontalite/"&gt;un billet chez&amp;nbsp;Scopyleft&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.24joursdeweb.fr/2023/pourquoi-se-syndiquer-dans-linformatique/"&gt;Pourquoi se syndiquer dans l&amp;#8217;informatique&lt;/a&gt; qui me fait dire que j&amp;#8217;aurai sans-doute été mieux équipé si j&amp;#8217;avais été syndiqué lors de mes années à la&amp;nbsp;Brasserie.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.24joursdeweb.fr/2023/coder-a-nouveau-apres-un-harcelement-sexuel/"&gt;Coder à nouveau après un harcèlement&amp;nbsp;sexuel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.24joursdeweb.fr/2023/coder-a-nouveau-apres-un-harcelement-sexuel/"&gt;Concilier free-lance et &lt;span class="caps"&gt;TDAH&lt;/span&gt;&lt;/a&gt;. Ce n&amp;#8217;est pas la première fois que des astuces pour les &lt;span class="caps"&gt;TDAH&lt;/span&gt; me semblent utiles pour moi, et ça me questionne, en tout cas certains des outils risquent de terminer dans ma boîte à&amp;nbsp;outils.&lt;/li&gt;
&lt;li&gt;🎬 J&amp;#8217;ai terminé la série &lt;a href="https://fr.wikipedia.org/wiki/Dirk_Gently,_d%C3%A9tective_holistique_(s%C3%A9rie_t%C3%A9l%C3%A9vis%C3%A9e)"&gt;Dirk Gently&lt;/a&gt;, j&amp;#8217;ai bien aimé le côté décalé, même si l&amp;#8217;intrigue est parfois… pas très&amp;nbsp;intéressante.&lt;/li&gt;
&lt;li&gt;🎬 Vu « Le garçon et le héron » (de myazaki), j&amp;#8217;ai vu que beaucoup de personnes avaient été déçues, mais j&amp;#8217;ai tout de même passé un bon&amp;nbsp;moment.&lt;/li&gt;
&lt;li&gt;🎬 Vu « Rien à perdre », de Delphine Deloget. J&amp;#8217;ai apprécié les discussions générées, et le regard critique qui pouvait être porté par certains de mes&amp;nbsp;proches.&lt;/li&gt;
&lt;li&gt;🎶 Découvert &lt;a href="https://www.diskopunk.com/"&gt;DiscoPunk&lt;/a&gt;, &lt;a href="https://www.thesilverlinesuk.com/"&gt;The Silver&amp;nbsp;Lines &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Divers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Découvert les &lt;a href="https://code.gouv.fr/fr/bluehats/prix-bluehats/"&gt;prix blue hats&lt;/a&gt; qui cherchent à rémunérer les briques logicielles open source utils à&amp;nbsp;l&amp;#8217;état.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reefjs.com/"&gt;reefjs&lt;/a&gt; qui propose une manière simple de faire du code « réactif&amp;nbsp;»&lt;/li&gt;
&lt;/ul&gt;</content><category term="weeknotes"></category></entry><entry><title>Rescuing a broken asahi linux workstation</title><link href="https://blog.notmyidea.org/rescuing-a-broken-asahi-linux-workstation.html" rel="alternate"></link><published>2023-12-08T00:00:00+01:00</published><updated>2023-12-08T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-12-08:/rescuing-a-broken-asahi-linux-workstation.html</id><summary type="html">&lt;p&gt;On my main machine, I&amp;#8217;m currently using &lt;a href="asahilinux.org/"&gt;Asahi Linux&lt;/a&gt; (on a macbook m1). I&amp;#8217;ve recently broken my system, which wasn&amp;#8217;t able to boot because of a broken &lt;code&gt;/etc/fstab&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;On my previous setups, I was able to easily plug an usb key and boot to it to …&lt;/p&gt;</summary><content type="html">&lt;p&gt;On my main machine, I&amp;#8217;m currently using &lt;a href="asahilinux.org/"&gt;Asahi Linux&lt;/a&gt; (on a macbook m1). I&amp;#8217;ve recently broken my system, which wasn&amp;#8217;t able to boot because of a broken &lt;code&gt;/etc/fstab&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;On my previous setups, I was able to easily plug an usb key and boot to it to solve my issues, but here I wasn&amp;#8217;t sure how to deal with&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;After playing a bit (without much luck) with &lt;a href="https://github.com/leifliddy/fedora-macos-asahi-qemu/"&gt;qemu and vagrant&lt;/a&gt;, someone pointed me to the right direction: using alpine&amp;nbsp;linux.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s what I did to solve my broken&amp;nbsp;install:&lt;/p&gt;
&lt;p&gt;First, install this alpine linux on a&amp;nbsp;key.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://dev.alpinelinux.org/~mps/m1/m1-usb-alpine-install.img.xz"&gt;Download the iso image here&lt;/a&gt;, and copy it to a key. I&amp;#8217;m not sure why, but &lt;code&gt;dd&lt;/code&gt; didn&amp;#8217;t work for me, and I ended up using another tool to create the usb from the&amp;nbsp;iso. &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# When booting, press a key to enter u-boot. Then:&lt;/span&gt;
env&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;boot_efi_bootmgr
run&lt;span class="w"&gt; &lt;/span&gt;bootcmd_usb0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Which should get you a session. When connected, do the&amp;nbsp;following:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# to find the parition you want to mount, marked EFI something&lt;/span&gt;
lsblk&lt;span class="w"&gt; &lt;/span&gt;-f
mount&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;EFI - FEDOR&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/mnt
&lt;span class="c1"&gt;# Install the wifi firmware&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/lib/firmware
tar&lt;span class="w"&gt; &lt;/span&gt;xvf&lt;span class="w"&gt; &lt;/span&gt;/mnt/vendor/firmware.tar
/root/update-vendor-firmware
rm&lt;span class="w"&gt; &lt;/span&gt;/etc/modprobe.d/blacklist-brcmfmac.conf
modprobe&lt;span class="w"&gt; &lt;/span&gt;brcmfmac
&lt;span class="c1"&gt;# Connect to the wifi&lt;/span&gt;
/etc/init.d/iwd&lt;span class="w"&gt; &lt;/span&gt;start
iwctl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In my case, I wanted to mount a btrfs filesystem to fix something&amp;nbsp;inside.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;apk&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;btrfs-progs
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;btrfs&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;/etc/modules
modprobe&lt;span class="w"&gt; &lt;/span&gt;btrfs
mount&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;LABEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;fedora&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/opt/fedora
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I then could access the filesystem, and made a fix to&amp;nbsp;it.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;https://arvanta.net/alpine/install-alpine-m1/&lt;/li&gt;
&lt;li&gt;https://arvanta.net/alpine/iwd-howto/&lt;/li&gt;
&lt;li&gt;https://wiki.alpinelinux.org/wiki/Btrfs&lt;/li&gt;
&lt;/ul&gt;</content><category term="code"></category><category term="Linux"></category><category term="Asahi"></category></entry><entry><title>2023, Semaine 48</title><link href="https://blog.notmyidea.org/2023-semaine-48.html" rel="alternate"></link><published>2023-12-05T00:00:00+01:00</published><updated>2023-12-05T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-12-05:/2023-semaine-48.html</id><summary type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Quatrième semaine de travail sur uMap. J&amp;#8217;ai suivi l&amp;#8217;onboarding de NLNet (l&amp;#8217;occasion de découvrir quelques chouettes projets), puis affiné un document pour qu&amp;#8217;on se mette d&amp;#8217;accord sur le déroulé&amp;nbsp;attendu.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai commencé à enregistrer les connaissances que j&amp;#8217;ai sur la base de …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Quatrième semaine de travail sur uMap. J&amp;#8217;ai suivi l&amp;#8217;onboarding de NLNet (l&amp;#8217;occasion de découvrir quelques chouettes projets), puis affiné un document pour qu&amp;#8217;on se mette d&amp;#8217;accord sur le déroulé&amp;nbsp;attendu.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai commencé à enregistrer les connaissances que j&amp;#8217;ai sur la base de code dans de la documentation, et profité de l&amp;#8217;occasion pour « faire un peu de tri&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;Le code pour faire du merge de manière optimiste &lt;a href="https://github.com/umap-project/umap/pull/772/files"&gt;est intégré&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://framagit.org/framasoft/framaspace/argos"&gt;Argos&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Quelques revues de code pour le projet (&lt;a href="https://framagit.org/framasoft/framaspace/argos"&gt;maintenant public&lt;/a&gt;)&lt;/p&gt;
&lt;h2 id="des-joies"&gt;Des joies&amp;nbsp;🤗&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Sentir que je suis plus léger de manière générale. Content de laisser la brasserie là ou elle&amp;nbsp;est.&lt;/li&gt;
&lt;li&gt;Récolter les fruits de gestion de conflits&amp;nbsp;passées.&lt;/li&gt;
&lt;li&gt;Provoquer un appel téléphonique pour prendre quelques&amp;nbsp;nouvelles.&lt;/li&gt;
&lt;li&gt;Sentir que les rencontres me sont plus&amp;nbsp;faciles.&lt;/li&gt;
&lt;li&gt;Prendre le temps d&amp;#8217;être là pour des proches qui en avaient&amp;nbsp;besoin. &lt;/li&gt;
&lt;li&gt;Réaliser que je passe du temps à interpréter les signaux extérieurs, et que je peux simplement demander une&amp;nbsp;clarification.&lt;/li&gt;
&lt;li&gt;Jouer avec de la musique avec d&amp;#8217;autres personnes, le retour du trombone&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;Prendre le temps d&amp;#8217;écouter quelques&amp;nbsp;podcasts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="des-peines"&gt;Des peines&amp;nbsp;😬&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;J&amp;#8217;ai passé trop de temps en réunion par rapport aux deux jours de travail que j&amp;#8217;ai sur&amp;nbsp;uMap.&lt;/li&gt;
&lt;li&gt;J&amp;#8217;ai parfois eu du mal à me concentrer, peut-être l&amp;#8217;occasion de me remettre aux &lt;a href="https://www.wikiwand.com/fr/Technique_Pomodoro"&gt;pomodoros&lt;/a&gt;&amp;nbsp;🤔&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vu-lu-ecoute"&gt;Vu, lu,&amp;nbsp;écouté&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🎧 Écouté &lt;a href="https://darknetdiaries.com/episode/139"&gt;Darknet Diaries 139: D3f4ult&lt;/a&gt;, qui nous parle de hacking à l&amp;#8217;ancienne, ça fait tout bizarre de se dire que ça s&amp;#8217;est déroulé durant ma jeunesse, et que j&amp;#8217;ai beaucoup de points communs&amp;nbsp;culturels.&lt;/li&gt;
&lt;li&gt;🎧 Écouté &lt;a href="http://www.wnycstudios.org/story/shrink-2311/"&gt;Radiolab: Shrink&lt;/a&gt; qui parle de la découverte des &lt;a href="https://fr.wikipedia.org/wiki/Virus_g%C3%A9ant?"&gt;virus géants&lt;/a&gt; d&amp;#8217;une manière tout à fait&amp;nbsp;accessible. &lt;/li&gt;
&lt;li&gt;🎧 Écouté &lt;a href="http://www.wnycstudios.org/story/boy-man/"&gt;Radiolab: Boy Man&lt;/a&gt;, un témoignage sur la puberté&amp;nbsp;précoce&lt;/li&gt;
&lt;li&gt;🎵 (Oublié de dire que j&amp;#8217;avais) découvert &lt;a href="https://brulerdanser.bandcamp.com/album/bruler-danser"&gt;Bruler Danser, de Lisette Lombé et Cloé du Trèfle&lt;/a&gt;. Un album slam sur de la musique électronique, des paroles très chouettes, une histoire qu&amp;#8217;on à envie de&amp;nbsp;réécouter. &lt;/li&gt;
&lt;li&gt;📖 Continué et quasi terminé la lecture de « Le conflit n&amp;#8217;est pas une agression ». J&amp;#8217;en apprécie plusieurs morceaux, les relire les faits résonner chez&amp;nbsp;moi.&lt;/li&gt;
&lt;/ul&gt;</content><category term="weeknotes"></category></entry><entry><title>2023, Semaine 47</title><link href="https://blog.notmyidea.org/2023-semaine-47.html" rel="alternate"></link><published>2023-11-28T00:00:00+01:00</published><updated>2023-11-28T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-11-28:/2023-semaine-47.html</id><summary type="html">
&lt;p&gt;Un équilibre perso/pro qui s&amp;#8217;améliore, même si les limites sont encores poreuses. Les outils mis en place aident, je suis content de déjà récolter quelques&amp;nbsp;fruits.&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Troisième semaine de travail sur&amp;nbsp;uMap.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai pris du temps pour &lt;a href="https://github.com/umap-project/umap/pull/1413"&gt;ajouter de l&amp;#8217;intégration …&lt;/a&gt;&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Un équilibre perso/pro qui s&amp;#8217;améliore, même si les limites sont encores poreuses. Les outils mis en place aident, je suis content de déjà récolter quelques&amp;nbsp;fruits.&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Troisième semaine de travail sur&amp;nbsp;uMap.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai pris du temps pour &lt;a href="https://github.com/umap-project/umap/pull/1413"&gt;ajouter de l&amp;#8217;intégration continue&lt;/a&gt; sur le projet, et j&amp;#8217;ai avancé sur du code existant pour ajouter une fonctionnalité de merge des données&amp;nbsp;clients.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai continué d&amp;#8217;avancer sur le fond du sujet, mais pas autant que je l&amp;#8217;aurais voulu. On a aussi eu la confirmation qu&amp;#8217;on allait recevoir des sous de la part&amp;nbsp;d&amp;#8217;NLNet!&lt;/p&gt;
&lt;p&gt;Certains aspects s&amp;#8217;éclaircissent en terme de&amp;nbsp;design.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notmyidea&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai ajouté &lt;a href="https://blog.notmyidea.org/using-pelican-to-track-my-worked-and-volunteer-hours.html"&gt;un système de suivi de mes heures&lt;/a&gt; à ce blog, ce qui me permet déjà de mieux me rendre compte de mon engagement bénévole sur différents&amp;nbsp;projets.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Argos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai fait de la revue de code pour le projet, et quelques petites modifications cosmétiques. C&amp;#8217;est chouette de voir Luc s&amp;#8217;emparer du truc et l&amp;#8217;utiliser en conditions&amp;nbsp;réelles.&lt;/p&gt;
&lt;h2 id="des-joies"&gt;Des joies&amp;nbsp;🤗&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Prendre le temps d&amp;#8217;organiser ma semaine, et sentir les bénéfices en terme de sentiment d&amp;#8217;accomplissement. Ça me permet d&amp;#8217;être moins dur avec moi&amp;nbsp;même.&lt;/li&gt;
&lt;li&gt;Me coucher tôt et lire 📖, quand j&amp;#8217;y arrive&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;Passer du temps très concentré sur un sujet, jusqu&amp;#8217;à arriver au bout&amp;nbsp;🙌&lt;/li&gt;
&lt;li&gt;Utiliser ces notes pour comprendre les outils qui me sont utiles (préparer une réunion, préparer ma semaine, cadrer plus mon activité pro,&amp;nbsp;etc.)&lt;/li&gt;
&lt;li&gt;Avoir un espace calme pour me concentrer et&amp;nbsp;travailler&lt;/li&gt;
&lt;li&gt;Lire dans le salon, au coin du feu, en écoutant de la musique au&amp;nbsp;casque.&lt;/li&gt;
&lt;li&gt;Avoir des retours sur les notes que je publie pour l&amp;#8217;ajout de fonctionnalités sur&amp;nbsp;uMap.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="des-peines"&gt;Des peines&amp;nbsp;😬&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Voir une tentative d&amp;#8217;ouverture de discussion ne pas être&amp;nbsp;saisie.&lt;/li&gt;
&lt;li&gt;Beaucoup d&amp;#8217;évènements amicaux annulés pour cause de&amp;nbsp;maladie&lt;/li&gt;
&lt;li&gt;Je me sens moins efficace que ce que je voudrais: beaucoup de temps d&amp;#8217;organisation, de passage d&amp;#8217;un sujet à l&amp;#8217;autre qui ne m&amp;#8217;aide pas à me concentrer. Je me demande si travailler de manière plus linéaire sur les sujets ne m&amp;#8217;aiderait&amp;nbsp;pas.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vu-lu-ecoute"&gt;Vu, lu,&amp;nbsp;écouté&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🎧 Écouté &lt;a href="https://www.radiofrance.fr/franceculture/podcasts/france-culture-va-plus-loin-l-invite-e-des-matins/la-gauche-identitaire-contre-la-democratie-1307905"&gt;La gauche identitaire contre la démocratie ?&lt;/a&gt;. Je ne sais pas trop quoi en penser, mais j&amp;#8217;aime l&amp;#8217;idée de questioner ce qui est identitaire, pourquoi, et ce qu&amp;#8217;on y&amp;nbsp;trouve.&lt;/li&gt;
&lt;li&gt;🎧 Écouté &lt;a href="https://www.radiofrance.fr/franceculture/podcasts/serie-cancer-la-nouvelle-ere"&gt;Cancer, la nouvelle ère&lt;/a&gt; sur &lt;span class="caps"&gt;LSD&lt;/span&gt;. Les témoignages sont intéressants et me permettent une meilleure&amp;nbsp;compréhension.&lt;/li&gt;
&lt;li&gt;📖 J&amp;#8217;ai repris la lecture de « Le conflit n&amp;#8217;est pas une agression » que j&amp;#8217;avais complètement&amp;nbsp;oublié!&lt;/li&gt;
&lt;/ul&gt;</content><category term="weeknotes"></category></entry><entry><title>Using pelican to track my worked and volunteer hours</title><link href="https://blog.notmyidea.org/using-pelican-to-track-my-worked-and-volunteer-hours.html" rel="alternate"></link><published>2023-11-23T00:00:00+01:00</published><updated>2023-11-23T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-11-23:/using-pelican-to-track-my-worked-and-volunteer-hours.html</id><summary type="html">&lt;p&gt;I was tracking my hours in Datasette (&lt;a href="https://blog.notmyidea.org/using-datasette-for-tracking-my-professional-activity.html"&gt;article&lt;/a&gt; and &lt;a href="https://blog.notmyidea.org/deploying-and-customizing-datasette.html"&gt;follow-up&lt;/a&gt;), but I wasn&amp;#8217;t really happy with the editing&amp;nbsp;process.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve seen &lt;a href="https://larlet.fr/david"&gt;David&lt;/a&gt; notes, which made me want to do something&amp;nbsp;similar.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m consigning everything in markdown files and as such, was already keeping track of everything this …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I was tracking my hours in Datasette (&lt;a href="https://blog.notmyidea.org/using-datasette-for-tracking-my-professional-activity.html"&gt;article&lt;/a&gt; and &lt;a href="https://blog.notmyidea.org/deploying-and-customizing-datasette.html"&gt;follow-up&lt;/a&gt;), but I wasn&amp;#8217;t really happy with the editing&amp;nbsp;process.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve seen &lt;a href="https://larlet.fr/david"&gt;David&lt;/a&gt; notes, which made me want to do something&amp;nbsp;similar.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m consigning everything in markdown files and as such, was already keeping track of everything this way already. Tracking my hours should be simple otherwise I might just oversee it. So I hacked something together with &lt;a href="https://github.com/getpelican/pelican"&gt;pelican&lt;/a&gt; (the software I wrote for this&amp;nbsp;blog).&lt;/p&gt;
&lt;p&gt;&lt;img alt="A graph showing the worked hours and volunteer hours" src="/images/pelican/worklog.png"&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s doing the&amp;nbsp;following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Defines a specific format for my worklog&amp;nbsp;entries&lt;/li&gt;
&lt;li&gt;Parses them (using a regexp), does some computation and&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Uses a specific template to display a graph and progress&amp;nbsp;bar.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="reading-information-from-the-titles"&gt;Reading information from the&amp;nbsp;titles&lt;/h2&gt;
&lt;p&gt;I actually took the format I&amp;#8217;ve been already using in my log, and enhanced it a bit.
Basically, the files look likes this (I&amp;#8217;m writing in&amp;nbsp;french):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;---
title: My project
&lt;span class="gu"&gt;total_days: 25&lt;/span&gt;
&lt;span class="gu"&gt;---&lt;/span&gt;
&lt;span class="gu"&gt;## Mardi 23 Novembre 2023 (9h, 5/5)&lt;/span&gt;
What I did this day.
I can include [&lt;span class="nt"&gt;links&lt;/span&gt;](&lt;span class="na"&gt;https://domain.tld&lt;/span&gt;) and whatever I want.
It won&amp;#39;t be processed.
&lt;span class="gu"&gt;## Lundi 22 Novembre 2023 (8h rémunérées, 2h bénévoles, 4/5)&lt;/span&gt;
Something else.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Basically, the second titles (h2) are parsed, and should have the following structure:
&lt;code&gt;{day_of_week} {day} {month} {year} ({worked_hours}(, optional {volunteer_hours}), {fun_rank})&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The goal here is to retrieve all of this, so I asked ChatGPT for a regexp and iterated on the result which got&amp;nbsp;me:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;pattern&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;compile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sa"&gt;r&lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="sd"&gt; (\w+)\s+ # Day name&lt;/span&gt;
&lt;span class="sd"&gt; (\d{1,2})\s+ # Day number&lt;/span&gt;
&lt;span class="sd"&gt; ([\wéû]+)\s+ # Month name&lt;/span&gt;
&lt;span class="sd"&gt; (\d{4})\s+ # Year&lt;/span&gt;
&lt;span class="sd"&gt; \(&lt;/span&gt;
&lt;span class="sd"&gt; (\d{1,2})h # Hours (mandatory)&lt;/span&gt;
&lt;span class="sd"&gt; (?:\s+facturées)? # Optionally &amp;#39;facturées&amp;#39;, if not present, assume hours are &amp;#39;facturées&amp;#39;&lt;/span&gt;
&lt;span class="sd"&gt; (?:,\s*(\d{1,2})h\s*bénévoles)? # Optionally &amp;#39;volunteer hours &amp;#39;bénévoles&amp;#39;&lt;/span&gt;
&lt;span class="sd"&gt; ,? # An optional comma&lt;/span&gt;
&lt;span class="sd"&gt; \s* # Optional whitespace&lt;/span&gt;
&lt;span class="sd"&gt; (?:fun\s+)? # Optionally &amp;#39;fun&amp;#39; (text) followed by whitespace&lt;/span&gt;
&lt;span class="sd"&gt; (\d)/5 # Happiness rating (mandatory, always present)&lt;/span&gt;
&lt;span class="sd"&gt; \) # Closing parenthesis&lt;/span&gt;
&lt;span class="sd"&gt; &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;VERBOSE&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UNICODE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="the-markdown-preprocessor"&gt;The markdown&amp;nbsp;preprocessor&lt;/h2&gt;
&lt;p&gt;I&amp;#8217;m already using a custom pelican plugin, which makes it possible to have pelican behave exactly the way I want. For instance, it&amp;#8217;s getting the date from the&amp;nbsp;filesystem.&lt;/p&gt;
&lt;p&gt;I just had to add some features to it. The way I&amp;#8217;m doing this is by &lt;a href="https://docs.getpelican.com/en/3.6.2/plugins.html#how-to-create-a-new-reader"&gt;using a custom Markdown reader&lt;/a&gt;, on which I add extensions and custom&amp;nbsp;processors.&lt;/p&gt;
&lt;p&gt;In my case, I added a preprocessor which will only run when we are handling the worklog. It makes it possible to change what&amp;#8217;s being read, before the markdown lib actually transforms it to &lt;span class="caps"&gt;HTML&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Here is the code for&amp;nbsp;it:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;WorklogPreprocessor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Preprocessor&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="n"&gt;pattern&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;the regexp we&amp;#39;ve seen earlier&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="n"&gt;new_lines&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;lines&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;##&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="n"&gt;match&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pattern&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;match&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Unable to parse worklog title&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="n"&gt;day_of_week&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;payed_hours&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;volunteer_hours&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;happiness&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;match&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;groups&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;volunteer_hours&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;volunteer_hours&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;volunteer_hours&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;payed_hours&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payed_hours&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;happiness&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;happiness&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strptime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="si"&gt;%d&lt;/span&gt;&lt;span class="s2"&gt; %B %Y&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;%Y-%m-&lt;/span&gt;&lt;span class="si"&gt;%d&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="s2"&gt;&amp;quot;payed_hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;payed_hours&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="s2"&gt;&amp;quot;volunteer_hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;volunteer_hours&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="s2"&gt;&amp;quot;happyness&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;happiness&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;# Replace the line with just the date&lt;/span&gt;
&lt;span class="n"&gt;new_lines&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;## 🗓️ &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;day_of_week&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;day&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;month&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;year&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;new_lines&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;line&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;new_lines&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;It does the following when it encounters a h2&amp;nbsp;line:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;try to parse&amp;nbsp;it&lt;/li&gt;
&lt;li&gt;store the data&amp;nbsp;locally&lt;/li&gt;
&lt;li&gt;replace the line with a simpler&amp;nbsp;version&lt;/li&gt;
&lt;li&gt;If if doesn&amp;#8217;t work, error&amp;nbsp;out.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;ve also added some computations on top of it, which makes it possible to display a percentage of completion for the project, if &amp;#8220;payed_hours&amp;#8221; was present in the metadata, and makes it use a specific template (see&amp;nbsp;later).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;compute_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="n"&gt;done_hours&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;payed_hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt;&lt;span class="p"&gt;()])&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;done_hours&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;done_hours&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;template&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;worklog&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;total_days&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;total_hours&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;total_days&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="n"&gt;total_hours&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;total_hours&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;percentage&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;done_hours&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;total_hours&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="plugging-this-with-pelican"&gt;Plugging this with&amp;nbsp;pelican&lt;/h2&gt;
&lt;p&gt;Here&amp;#8217;s the code for extending a custom reader, basically adding a pre-processor and adding back its data in the document&amp;nbsp;metadata:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;is_worklog&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;source_path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;match&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;pages/worklog&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;is_worklog&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;worklog&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;WorklogPreprocessor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_md&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;preprocessors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;register&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;worklog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;worklog&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# process the markdown, and then&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;is_worklog&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;worklog&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;worklog&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;compute_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="adding-a-graph"&gt;Adding a&amp;nbsp;graph&lt;/h2&gt;
&lt;p&gt;Okay, everything is parsed, but it&amp;#8217;s not yet displayed on the pages. I&amp;#8217;m using &lt;a href="https://vega.github.io/vega-lite/docs/"&gt;vega-lite&lt;/a&gt; to display a&amp;nbsp;graph.&lt;/p&gt;
&lt;p&gt;Here is my template for this (stored in &lt;code&gt;template/worklog.html&lt;/code&gt;), it&amp;#8217;s doing a stacked bar chart with my&amp;nbsp;data.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;spec&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;$schema&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;https://vega.github.io/schema/vega-lite/v5.json&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;width&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;height&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;data&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;table&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;values&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;worklog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;date&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;{{ date }}&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;series&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Rémunéré&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;count&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;payed_hours&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}},&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;date&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;{{ date }}&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;series&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Bénévole&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;count&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;volunteer_hours&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}},&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;endfor&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;mark&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;bar&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;encoding&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;x&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;timeUnit&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;unit&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;dayofyear&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;step&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;field&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;date&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;axis&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;format&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;%d/%m&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Date&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;step&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;y&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;aggregate&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;sum&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;field&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;count&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Heures&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;color&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;field&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;series&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;scale&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;domain&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Bénévole&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Rémunéré&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;range&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;#e7ba52&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;#1f77b4&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Type d&amp;#39;heures&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;vegaEmbed&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;#vis&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// result.view provides access to the Vega View API&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;warn&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I&amp;#8217;ve also added a small progress bar, made with unicode, which looks like&amp;nbsp;this.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;▓▓░░░░░░░░ 29% (51h / 175 prévues)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Here is the code for&amp;nbsp;it:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;total_days&amp;quot;&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;page.metadata.keys&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;percentage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;page.metadata.worklog&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;percentage&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;total_blocks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;percentage_value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;percentage&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="m"&gt;100.0&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;full_blocks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;((&lt;/span&gt;&lt;span class="nv"&gt;percentage_value&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nv"&gt;total_blocks&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;floor&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nv"&gt;empty_blocks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;total_blocks&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nv"&gt;full_blocks&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;progressbar&amp;quot;&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;{# Display full blocks #}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;range&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;full_blocks&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;endfor&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;{# Display empty blocks #}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nv"&gt;i&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;range&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;empty_blocks&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;&lt;span class="cp"&gt;{%&lt;/span&gt; &lt;span class="k"&gt;endfor&lt;/span&gt; &lt;span class="cp"&gt;%}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;percentage&lt;/span&gt; &lt;span class="cp"&gt;}}&lt;/span&gt;%&lt;span class="w"&gt; &lt;/span&gt;(&lt;span class="cp"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;page.metadata.worklog&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;done_hours&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="cp"&gt;}}&lt;/span&gt;h&lt;span class="w"&gt; &lt;/span&gt;/&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="cp"&gt;{{&lt;/span&gt; &lt;span class="nv"&gt;page.metadata.worklog&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;total_hours&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="cp"&gt;}}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;prévues)
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="code"></category><category term="Pelican"></category><category term="Work"></category><category term="Vega"></category><category term="Markdown"></category></entry><entry><title>Adding Real-Time Collaboration to uMap, second week</title><link href="https://blog.notmyidea.org/adding-real-time-collaboration-to-umap-second-week.html" rel="alternate"></link><published>2023-11-21T00:00:00+01:00</published><updated>2023-11-21T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-11-21:/adding-real-time-collaboration-to-umap-second-week.html</id><summary type="html">&lt;p&gt;I continued working on &lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;, an open-source map-making tool to create and share customizable maps, based on Open Street Map&amp;nbsp;data.&lt;/p&gt;
&lt;p&gt;Here is a summary of what I&amp;nbsp;did:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I reviewed, rebased and made some minor changes to &lt;a href="https://github.com/umap-project/umap/pull/772"&gt;a pull request which makes it possible to merge geojson features together …&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;I continued working on &lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;, an open-source map-making tool to create and share customizable maps, based on Open Street Map&amp;nbsp;data.&lt;/p&gt;
&lt;p&gt;Here is a summary of what I&amp;nbsp;did:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I reviewed, rebased and made some minor changes to &lt;a href="https://github.com/umap-project/umap/pull/772"&gt;a pull request which makes it possible to merge geojson features together&lt;/a&gt;&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;I&amp;#8217;ve explored around the idea of using SQLite inside the browser, for two reasons : it could make it possible to use the &lt;a href="https://www.gaia-gis.it/fossil/libspatialite/index"&gt;Spatialite&lt;/a&gt; extension, and it might help us to implement a &lt;span class="caps"&gt;CRDT&lt;/span&gt; with &lt;a href="https://github.com/vlcn-io/cr-sqlite"&gt;cr-sqlite&lt;/a&gt;&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;I learned a lot about the &lt;span class="caps"&gt;SIG&lt;/span&gt; field. This is a wide ecosystem with lots of moving parts, which I understand a bit better&amp;nbsp;now.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-optimistic-merge-approach"&gt;The optimistic-merge&amp;nbsp;approach&lt;/h2&gt;
&lt;p&gt;There were an open pull request implementing an &amp;#8220;optimistic merge&amp;#8221;. We spent some time together with Yohan to understand what the pull request is doing, discuss it and made a few&amp;nbsp;changes.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the logic of the&amp;nbsp;changes:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;On the server-side, we detect if we have a conflict between the incoming changes and what&amp;#8217;s stored on the server (is the last document save fresher than the &lt;code&gt;IF-UNMODIFIED-SINCE&lt;/code&gt; header we get ?)&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;In case of conflict, find back the reference document in the history (let&amp;#8217;s name this the &amp;#8220;local reference&amp;#8221;)&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Merge the 3 documents together, that is&amp;nbsp;:&lt;/li&gt;
&lt;li&gt;Find what the the incoming changes are, by comparing the incoming doc to the local&amp;nbsp;reference.&lt;/li&gt;
&lt;li&gt;Re-apply the changes on top of the latest&amp;nbsp;doc.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;One could compare this logic to what happens when you do a &lt;code&gt;git rebase&lt;/code&gt;. Here is some&amp;nbsp;pseudo-code:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;merge_features&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reference&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;latest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;incoming&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;Finds the changes between reference and incoming, and reapplies them on top of latest.&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;latest&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;incoming&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;latest&lt;/span&gt;
&lt;span class="n"&gt;reference_removed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;incoming_added&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_difference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reference&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;incoming&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Ensure that items changed in the reference weren&amp;#39;t also changed in the latest.&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;removed&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;reference_removed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;removed&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;latest&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="n"&gt;ConflictError&lt;/span&gt;
&lt;span class="n"&gt;merged&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;copy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;latest&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Reapply the changes on top of the latest.&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;removed&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;reference_removed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;merged&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;delete&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;removed&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;added&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;incoming_added&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;merged&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;added&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;merged&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The pull request is not ready yet, as I still want to add tests with real data, and enhance the naming, but that&amp;#8217;s a step in the right direction&amp;nbsp;:-)&lt;/p&gt;
&lt;h2 id="using-sqlite-in-the-browser"&gt;Using SQLite in the&amp;nbsp;browser&lt;/h2&gt;
&lt;p&gt;At the moment, (almost) everything is stored on the server side as GeoJSON files. They are simple to use, to read and to write, and having them on the storage makes it easy to handle multiple&amp;nbsp;revisions.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been asked to challenge this idea for a moment. What if we were using some other technology to store the data? What would that give us? What would be the&amp;nbsp;challenges?&lt;/p&gt;
&lt;p&gt;I went with SQLite, just to see what this would&amp;nbsp;mean.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQLite is originally not made to work on a web browser, but thanks to Web Assembly, it&amp;#8217;s possible to use it. It&amp;#8217;s not &lt;strong&gt;that&lt;/strong&gt; big, but the library weights&amp;nbsp;2Mb.&lt;/li&gt;
&lt;li&gt;With projects such as &lt;a href="https://github.com/vlcn-io/cr-sqlite"&gt;&lt;span class="caps"&gt;CR&lt;/span&gt;-SQLite&lt;/a&gt;, you get a way to add CRDTs on top of SQLite databases. Meaning that the clients could send their changes to other clients or to the server, and that it would be easy to integrate&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;The clients could retrieve just some part of the data to the server (e.g. by specifying a bounding box), which gives it the possibility to not load everything in memory if that&amp;#8217;s not&amp;nbsp;needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I wanted to see how it would work, and what would be the challenges around this technology. I wrote a small application with it. Turns out writing to a local in-browser SQLite&amp;nbsp;works.&lt;/p&gt;
&lt;p&gt;Here is what it would look&amp;nbsp;like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each client will get a copy of the database, alongside a version&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;When clients send changes, you can just send the data since the last version&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Databases can be merged without loosing data, the operations done in &lt;span class="caps"&gt;SQL&lt;/span&gt; will trigger writes to a specific table, which will be used as a &lt;span class="caps"&gt;CRDT&lt;/span&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;m not sure SQLite by itself is useful here. It sure is fun, but I don&amp;#8217;t see what we get in comparison with a more classical &lt;span class="caps"&gt;CRDT&lt;/span&gt; approach, except complexity. The technology is still quite young and rough to the edges, and uses Rust and WebASM, which are still strange beasts to&amp;nbsp;me. &lt;/p&gt;
&lt;h2 id="related-projects-in-the-sig-field"&gt;Related projects in the &lt;span class="caps"&gt;SIG&lt;/span&gt;&amp;nbsp;field&lt;/h2&gt;
&lt;p&gt;Here are some interesting projects I&amp;#8217;ve found this week&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://allartk.github.io/leaflet.offline/"&gt;Leaflet.offline&lt;/a&gt; allows to store the tiles offline&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mapbox/geojson-vt"&gt;geojson-vt&lt;/a&gt; uses the concept of &amp;#8220;vector tiles&amp;#8221; I didn&amp;#8217;t know about. Tiles can return binary or vectorial data, which can be useful to just get the data in one specific bounding box This allows us for instance to store GeoJSON in vector&amp;nbsp;tiles.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mapbox/mapbox-gl-js"&gt;mapbox-gl-js&lt;/a&gt; makes it possible to render &lt;span class="caps"&gt;SIG&lt;/span&gt;-related data using WebGL (no connection with&amp;nbsp;Leaflet)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BenjaminVadant/leaflet-ugeojson"&gt;leaflet-ugeojson&lt;/a&gt; and &lt;a href="https://github.com/jieter/Leaflet.Sync"&gt;leaflet.Sync&lt;/a&gt; allows multiple people to share the same view on a&amp;nbsp;map.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Two libraries seems useful for&amp;nbsp;us:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ATran31/Leaflet-GeoSSE"&gt;Leaflet-GeoSSE&lt;/a&gt; makes it possible to use &lt;span class="caps"&gt;SSE&lt;/span&gt; (Server Sent Events) to update local data. It uses events (create, update, delete) and keys in the GeoJSON&amp;nbsp;features..&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/perliedman/leaflet-realtime"&gt;Leaflet Realtime&lt;/a&gt; does something a bit similar, but doesn&amp;#8217;t take care of the transport. It&amp;#8217;s meant to be used to track remote elements (a &lt;span class="caps"&gt;GPS&lt;/span&gt; tracker for&amp;nbsp;instance)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;m noting&amp;nbsp;that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the two libraries, unique identifiers are added to the &lt;code&gt;features&lt;/code&gt; to allow for&amp;nbsp;updates.&lt;/li&gt;
&lt;li&gt;None of these libraries makes it possible to track local changes. That&amp;#8217;s what&amp;#8217;s left to&amp;nbsp;find.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-to-transport-the-data"&gt;How to transport the&amp;nbsp;data?&lt;/h2&gt;
&lt;p&gt;One of the related subjects is transportation of the data between the client and the server. When we&amp;#8217;ll get the local changes, we&amp;#8217;ll need to find a way to send this data to the other clients, and ultimately to the&amp;nbsp;server.&lt;/p&gt;
&lt;p&gt;There are multiple ways to do this, and I spent some time trying to figure out the pros and cons of each approach. Here is a&amp;nbsp;list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WebRTC, the &lt;span class="caps"&gt;P2P&lt;/span&gt; approach&lt;/strong&gt;. You let the clients talk to each other. I&amp;#8217;m not sure where the server fits in this scenario. I&amp;#8217;ve yet to figure-out how this works out in real-case scenarii, where you&amp;#8217;re working behind a &lt;span class="caps"&gt;NAT&lt;/span&gt;, for instance. Also, what&amp;#8217;s the requirement on &lt;span class="caps"&gt;STUN&lt;/span&gt; / Turn servers,&amp;nbsp;etc. &lt;/li&gt;
&lt;li&gt;Using &lt;strong&gt;WebSockets&lt;/strong&gt; seems nice at the first glance, but I&amp;#8217;m concerned about the resources this could take on the server. The requirement we have on &amp;#8220;real-time&amp;#8221; is not that big (e.g. if it&amp;#8217;s not immediate, it&amp;#8217;s&amp;nbsp;okay).&lt;/li&gt;
&lt;li&gt;Using &lt;strong&gt;Server Sent Events&lt;/strong&gt; is another way to solve this, it seems lighter on the client and on the server. The server still needs to keep connexion opens, but I&amp;#8217;ve found some proxies which will do that for you, so it would be something to put between the uMap server and the &lt;span class="caps"&gt;HTTP&lt;/span&gt;&amp;nbsp;server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Polling&lt;/strong&gt; means less connexion open, but also that the server will need to keep track of the messages the clients have to get. It&amp;#8217;s easily solvable with a Redis queue for&amp;nbsp;instance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All of these scenarii are possible, and each of them has pros and cons. I&amp;#8217;ll be working on a document this week to better understand what&amp;#8217;s hidden behind each of these, so we can ultimately make a&amp;nbsp;choice.&lt;/p&gt;
&lt;h3 id="server-sent-events-sse"&gt;Server-Sent Events (&lt;span class="caps"&gt;SSE&lt;/span&gt;)&lt;/h3&gt;
&lt;p&gt;Here are some notes about &lt;span class="caps"&gt;SSE&lt;/span&gt;. I&amp;#8217;ve learned&amp;nbsp;that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="caps"&gt;SSE&lt;/span&gt; makes it so that server connections never ends (so it consumes a&amp;nbsp;process?)&lt;/li&gt;
&lt;li&gt;There is a library in Django for this, named &lt;a href="https://github.com/fanout/django-eventstream"&gt;django-eventstream&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://channels.readthedocs.io/en/latest/"&gt;Django channels&lt;/a&gt; aims at using &lt;span class="caps"&gt;ASGI&lt;/span&gt; for certain parts of the&amp;nbsp;app.&lt;/li&gt;
&lt;li&gt;You don&amp;#8217;t have to handle all this in Django. It&amp;#8217;s possible to delegate it to &lt;a href="https://github.com/fastly/pushpin"&gt;pushpin&lt;/a&gt;, a proxy, using &lt;a href="https://github.com/fanout/django-grip"&gt;django-grip&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&amp;#8217;s questioning me in terms of infrastructure&amp;nbsp;changes.&lt;/p&gt;</content><category term="code"></category><category term="Python"></category><category term="CRDT"></category><category term="Sync"></category><category term="uMap"></category></entry><entry><title>2023, Semaine 46</title><link href="https://blog.notmyidea.org/2023-semaine-46.html" rel="alternate"></link><published>2023-11-20T00:00:00+01:00</published><updated>2023-11-20T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-11-20:/2023-semaine-46.html</id><summary type="html">
&lt;p&gt;Une semaine de progrès en cartographie et stockage de données. J&amp;#8217;ai senti le besoin de mieux m&amp;#8217;organiser pour améliorer l&amp;#8217;équilibre travail /&amp;nbsp;perso.&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Je continue mon exploration autour des solutions techniques pour faire de la cartographie temps réelle. J&amp;#8217;ai pris le …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Une semaine de progrès en cartographie et stockage de données. J&amp;#8217;ai senti le besoin de mieux m&amp;#8217;organiser pour améliorer l&amp;#8217;équilibre travail /&amp;nbsp;perso.&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Je continue mon exploration autour des solutions techniques pour faire de la cartographie temps réelle. J&amp;#8217;ai pris le temps de comprendre différents concepts qui m&amp;#8217;échappaient dans le monde du &lt;span class="caps"&gt;SIG&lt;/span&gt;. Je comprends maintenant mieux à quoi servent des projets comme &lt;a href="https://docs.protomaps.com/pmtiles/"&gt;pmtiles&lt;/a&gt; par&amp;nbsp;exemple.&lt;/p&gt;
&lt;p&gt;On a fait de la revue de code avec Yohann sur une manière de faire de la résolution de conflits de manière optimiste, la &lt;span class="caps"&gt;PR&lt;/span&gt; est presque&amp;nbsp;prête.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai exploré ensuite les différentes possibilités de stockage de données, entre autres en me disant que peut-être SQLite était une bonne piste. J&amp;#8217;ai pu faire des tests d&amp;#8217;utilisation de SQLite dans le navigateur, ce qui fonctionne, &lt;a href="https://github.com/vlcn-io/cr-sqlite"&gt;et permet de la réplication en utilisant des CRDTs en interne&lt;/a&gt;&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://chariotte.fr/"&gt;Chariotte&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai passé un peu de temps à préparer la migration vers les services d&amp;#8217;AlwaysData. Je me sens rouillé. Tout marche, mais me prends plus de temps que&amp;nbsp;prévu.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le groupe, le&amp;nbsp;jeu&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;On a bossé une journée avec &lt;a href="https://www.samuelgenin.fr"&gt;Sam&lt;/a&gt;, et on a découvert &lt;a href="https://github.com/klembot/twinejs"&gt;TwineJS&lt;/a&gt;, un outil qui permet de travailler sur des histoires à choix multiples. J&amp;#8217;ai fait un outil qui permet d&amp;#8217;importer le format Twee dans notre (futur)&amp;nbsp;jeu.ÒÒ&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notmyidea&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai pris du temps cette semaine pour mettre en place une station de travail digne de ce nom. Si je n&amp;#8217;ai pas terminé, je suis content de pouvoir utiliser &lt;a href="https://asahilinux.org/"&gt;Asahi Linux&lt;/a&gt; sur mon Mac. Certains logiciels (dont Keybase) ne sont pas disponible pour cette architecture logicielle, ce qui m&amp;#8217;a donné du fil à&amp;nbsp;retordre.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;espère bientôt pouvoir migrer complètement dessus, et me faire une session de travail et une session perso comme j&amp;#8217;ai pu faire par le&amp;nbsp;passé.&lt;/p&gt;
&lt;h2 id="des-joies"&gt;Des joies&amp;nbsp;🤗&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Prendre une journée pour faire complètement autre chose. C&amp;#8217;est super de pouvoir m&amp;#8217;organiser comme je&amp;nbsp;l&amp;#8217;entends.&lt;/li&gt;
&lt;li&gt;Recommencer à faire du trombone avec d&amp;#8217;autres personnes. Je ne pensais pas que ça me donnerait autant&amp;nbsp;d&amp;#8217;énergie.&lt;/li&gt;
&lt;li&gt;J&amp;#8217;arrive à mettre des mots sur ce qui s&amp;#8217;est passé pour moi cet été. Je suis content,&amp;nbsp;j&amp;#8217;avance.&lt;/li&gt;
&lt;li&gt;Je prends toujours du plaisir à coder en&amp;nbsp;Elm.&lt;/li&gt;
&lt;li&gt;J&amp;#8217;ai pris beaucoup de plaisir à monter en compétences sur les sujets autour du stockage hors ligne et sur la synchronisation de&amp;nbsp;données.&lt;/li&gt;
&lt;li&gt;Récupérer un lit et meubler ma chambre avec une grande bibliothèque ! C&amp;#8217;est fou comme ça peut faire la&amp;nbsp;différence.&lt;/li&gt;
&lt;li&gt;Avoir un soutien émotionnel extérieur qui ne pèse pas sur mes proches. Je mesure combien ça m&amp;#8217;est précieux et ce que j&amp;#8217;en&amp;nbsp;retire.&lt;/li&gt;
&lt;li&gt;Réussir à expliciter mes besoins auprès de mes&amp;nbsp;proches. &lt;/li&gt;
&lt;li&gt;Une super soirée hors du temps à discuter, se marrer, manger. Qu&amp;#8217;est-ce que ça fait du bien&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;Sentir que l&amp;#8217;approche systémiste m&amp;#8217;aide à mieux analyser certains&amp;nbsp;conflits.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="des-peines"&gt;Des peines&amp;nbsp;😬&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;J&amp;#8217;ai culpabilisé à prendre du temps pour apprendre des choses que je ne sais pas, alors même que c&amp;#8217;est ce pour quoi je suis payé. Heureusement que l&amp;#8217;équipe est bienveillante :-) La vie n&amp;#8217;est pas une compétition&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;j&amp;#8217;ai senti les choses flotter à plusieurs reprises lors d&amp;#8217;une visio, alors que j&amp;#8217;aurais aimé plus de cadre. J&amp;#8217;ai envie de me prendre un temps de préparation pour rendre ces moments plus&amp;nbsp;utiles.&lt;/li&gt;
&lt;li&gt;J&amp;#8217;étais désorganisé durant ma semaine de travail. J&amp;#8217;ai fini par couper les sources de distractions (chat, mails). J&amp;#8217;ai envie de commencer cette semaine par une session de planning, on verra ou ça me&amp;nbsp;mène.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vu-lu-ecoute"&gt;Vu, lu,&amp;nbsp;écouté&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🎧 Écouté &lt;a href="https://www.radiofrance.fr/franceculture/podcasts/serie-israel-palestine-les-mots-de-la-guerre"&gt;une série de podcasts courts autour du conflit israélo-palestinien&lt;/a&gt; sur France Culture. Faire des définitions me parle bien et donne beaucoup du contexte que je&amp;nbsp;manquais.&lt;/li&gt;
&lt;li&gt;🫣 Je suis allé à l&amp;#8217;opéra de Rennes et j&amp;#8217;ai détesté l&amp;#8217;expérience. L&amp;#8217;impression de voir une culture de l&amp;#8217;ancien monde se reproduire en direct.&amp;nbsp;Brrr.&lt;/li&gt;
&lt;/ul&gt;</content><category term="weeknotes"></category></entry><entry><title>Importing a PostgreSQL dump under a different database name</title><link href="https://blog.notmyidea.org/importing-a-postgresql-dump-under-a-different-database-name.html" rel="alternate"></link><published>2023-11-20T00:00:00+01:00</published><updated>2023-11-20T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-11-20:/importing-a-postgresql-dump-under-a-different-database-name.html</id><summary type="html">&lt;p&gt;For &lt;a href="https://chariotte.fr"&gt;Chariotte&lt;/a&gt;, I&amp;#8217;ve had to do an import from one system to the other. I had no control on the export I received. It contained the database name and the ACLs, which I had to change to match the ones on the new&amp;nbsp;system.&lt;/p&gt;
&lt;h2 id="decrypting-the-dump"&gt;Decrypting the&amp;nbsp;dump&lt;/h2&gt;
&lt;p&gt;First off …&lt;/p&gt;</summary><content type="html">&lt;p&gt;For &lt;a href="https://chariotte.fr"&gt;Chariotte&lt;/a&gt;, I&amp;#8217;ve had to do an import from one system to the other. I had no control on the export I received. It contained the database name and the ACLs, which I had to change to match the ones on the new&amp;nbsp;system.&lt;/p&gt;
&lt;h2 id="decrypting-the-dump"&gt;Decrypting the&amp;nbsp;dump&lt;/h2&gt;
&lt;p&gt;First off, the import I received was encrypted, so I had to decrypt it. It took me some time to figure out that both my private &lt;strong&gt;and public&lt;/strong&gt; keys needed to be imported to the pgp. Once that was done, I could decrypt&amp;nbsp;with&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# Decrypt the file&lt;/span&gt;
gpg&lt;span class="w"&gt; &lt;/span&gt;--decrypt&lt;span class="w"&gt; &lt;/span&gt;hb_chariotte_prod.pgdump.asc&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;hb_chariotte_prod.pgdump
&lt;span class="c1"&gt;# Upload it to the server with scp&lt;/span&gt;
scp&lt;span class="w"&gt; &lt;/span&gt;hb_chariotte_prod.pgdump&lt;span class="w"&gt; &lt;/span&gt;chariotte:.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="importing-while-changing-acls-and-database-name"&gt;Importing while changing ACLs and database&amp;nbsp;name&lt;/h2&gt;
&lt;p&gt;On the server, here is the command to change the name of the database and the user. The file I received was using the so-called &amp;#8220;custom&amp;#8221; format, which is not editable with a simple editor, so you have to export it to &lt;span class="caps"&gt;SQL&lt;/span&gt; first, and then edit it before running the actual&amp;nbsp;queries.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# Convert to SQL, then replace the table name with the new one, and finally run the SQL statements.&lt;/span&gt;
pg_restore&lt;span class="w"&gt; &lt;/span&gt;-C&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;-&lt;span class="w"&gt; &lt;/span&gt;hb_chariotte_prod.pgdump&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;sed&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;s/hb_chariotte_prod/chariotte_temp/g&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;psql&lt;span class="w"&gt; &lt;/span&gt;-U&lt;span class="w"&gt; &lt;/span&gt;chariotte_temp&lt;span class="w"&gt; &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;chariotte_temp&lt;span class="w"&gt; &lt;/span&gt;-h&lt;span class="w"&gt; &lt;/span&gt;yourhost
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="code"></category><category term="postgresql"></category><category term="sysadmin"></category></entry><entry><title>Deploying and customizing datasette</title><link href="https://blog.notmyidea.org/deploying-and-customizing-datasette.html" rel="alternate"></link><published>2023-11-12T00:00:00+01:00</published><updated>2023-11-12T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-11-12:/deploying-and-customizing-datasette.html</id><summary type="html">&lt;p&gt;First, create the venv and install&amp;nbsp;everything&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# Create and activate venv&lt;/span&gt;
python3&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;venv&lt;span class="w"&gt; &lt;/span&gt;venv
&lt;span class="nb"&gt;source&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;venv/bin/activate
&lt;span class="c1"&gt;# Install datasette…&lt;/span&gt;
pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;datasette
&lt;span class="c1"&gt;# … and the plugins&lt;/span&gt;
datasette&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;datasette-render-markdown&lt;span class="w"&gt; &lt;/span&gt;datasette-dashboards&lt;span class="w"&gt; &lt;/span&gt;datasette-dateutil
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I was curious how much all of this was weighting. &lt;span class="caps"&gt;30MB&lt;/span&gt; seems pretty reasonable to&amp;nbsp;me.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# All of …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</summary><content type="html">&lt;p&gt;First, create the venv and install&amp;nbsp;everything&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# Create and activate venv&lt;/span&gt;
python3&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;venv&lt;span class="w"&gt; &lt;/span&gt;venv
&lt;span class="nb"&gt;source&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;venv/bin/activate
&lt;span class="c1"&gt;# Install datasette…&lt;/span&gt;
pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;datasette
&lt;span class="c1"&gt;# … and the plugins&lt;/span&gt;
datasette&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;datasette-render-markdown&lt;span class="w"&gt; &lt;/span&gt;datasette-dashboards&lt;span class="w"&gt; &lt;/span&gt;datasette-dateutil
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I was curious how much all of this was weighting. &lt;span class="caps"&gt;30MB&lt;/span&gt; seems pretty reasonable to&amp;nbsp;me.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# All of this weights 30Mb&lt;/span&gt;
du&lt;span class="w"&gt; &lt;/span&gt;-sh&lt;span class="w"&gt; &lt;/span&gt;venv
30M&lt;span class="w"&gt; &lt;/span&gt;venv
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="adding-authentication"&gt;Adding&amp;nbsp;authentication&lt;/h2&gt;
&lt;p&gt;Datasette doesn&amp;#8217;t provide authentication by default, so &lt;a href="https://docs.datasette.io/en/stable/authentication.html"&gt;you have to use a plugin for this&lt;/a&gt;. I&amp;#8217;ll be using &lt;a href="https://github.com/simonw/datasette-auth-github"&gt;Github authentication&lt;/a&gt; for now as it seems simple to&amp;nbsp;add:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;pip install datasette-auth-github
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I&amp;#8217;ve had to create a new github application and export the variables to my server, and add some configuration to my &lt;code&gt;metadata.yaml&lt;/code&gt; file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nt"&gt;allow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;gh_login&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;almet&lt;/span&gt;
&lt;span class="nt"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;datasette-auth-github&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;client_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;$env&amp;quot;&lt;/span&gt;&lt;span class="p p-Indicator"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;GITHUB_CLIENT_ID&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;client_secret&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;$env&amp;quot;&lt;/span&gt;&lt;span class="p p-Indicator"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;GITHUB_CLIENT_SECRET&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If that&amp;#8217;s useful to you, here is &lt;a href="https://gitlab.com/almet/timetracker-datasette-deploy"&gt;the git repository&lt;/a&gt; I&amp;#8217;m deploying to my&amp;nbsp;server.&lt;/p&gt;
&lt;h2 id="using-templates"&gt;Using&amp;nbsp;templates&lt;/h2&gt;
&lt;p&gt;Okay, I now want to be able to send an &lt;span class="caps"&gt;URL&lt;/span&gt; to the people I&amp;#8217;m working with, on which they can see what I&amp;#8217;ve been doing, and what I&amp;#8217;ve been using my time&amp;nbsp;on.&lt;/p&gt;
&lt;p&gt;It was pretty simple to do, and kind of weird to basically do what I&amp;#8217;ve been doing back in the days for my first &lt;span class="caps"&gt;PHP&lt;/span&gt; applications : put &lt;span class="caps"&gt;SQL&lt;/span&gt; statements in the templates !&amp;nbsp;heh.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve added a template with what I want to do. It has the side-effect of being able to propose a read-only view to a private&amp;nbsp;database.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{project}}
{% for row in sql(&amp;quot;SELECT SUM(CAST(duration AS REAL)) as total_hours FROM journal WHERE project = &amp;#39;&amp;quot; + project + &amp;quot;&amp;#39;;&amp;quot;, database=&amp;quot;db&amp;quot;) %}
({{ row[&amp;quot;total_hours&amp;quot;] }} heures)
{% endfor %}
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;dl&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
{% for row in sql(&amp;quot;select date, CAST(duration AS REAL) as duration, content from journal where project = &amp;#39;&amp;quot; + project + &amp;quot;&amp;#39; order by date DESC&amp;quot;, database=&amp;quot;db&amp;quot;) %}
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;dt&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{ row[&amp;quot;date&amp;quot;] }} ({{ row[&amp;quot;duration&amp;quot;] }} heures)&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;dt&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;dd&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{ render_markdown(row[&amp;quot;content&amp;quot;]) }}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;dd&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
{% endfor %}
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;dl&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Which looks like this&amp;nbsp;:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Alt text" src="/images/datasette/custom-template.png"&gt;&lt;/p&gt;</content><category term="code"></category><category term="Datasette"></category><category term="Deployment"></category></entry><entry><title>2023, Semaine 45</title><link href="https://blog.notmyidea.org/2023-semaine-45.html" rel="alternate"></link><published>2023-11-11T00:00:00+01:00</published><updated>2023-11-11T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-11-11:/2023-semaine-45.html</id><summary type="html">
&lt;p&gt;Une reprise après deux semaines de pause. Première semaine sur uMap, et beaucoup&amp;nbsp;d&amp;#8217;à-côtés.&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;&lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;J&amp;#8217;ai commencé à travailler sur le projet, que je rejoins pour quelques temps, aux côté de David, Yohan, Aurélie et Sophie. L&amp;#8217;idée est de travailler spécifiquement sur …&lt;/dd&gt;&lt;/dl&gt;</summary><content type="html">
&lt;p&gt;Une reprise après deux semaines de pause. Première semaine sur uMap, et beaucoup&amp;nbsp;d&amp;#8217;à-côtés.&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;&lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;J&amp;#8217;ai commencé à travailler sur le projet, que je rejoins pour quelques temps, aux côté de David, Yohan, Aurélie et Sophie. L&amp;#8217;idée est de travailler spécifiquement sur la collaboration temps réel sur les cartes. J&amp;#8217;ai commencé par lire le code existant, puis par faire un état de l&amp;#8217;art des solutions existantes. Prendre le temps de lire le code, de comparer les différents approches, et de mesurer leurs&amp;nbsp;impacts.&lt;/dd&gt;
&lt;dd&gt;David et Yohan m&amp;#8217;ont proposé de documenter mon travail, j&amp;#8217;ai donc fait &lt;a href=""&gt;un premier billet de blog, à paraître&lt;/a&gt; (en anglais) sur le&amp;nbsp;sujet.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;&lt;a href="https://framasoft.frama.io/framaspace/argos/"&gt;Argos&lt;/a&gt;&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;J&amp;#8217;ai pu échanger sur le code que j&amp;#8217;ai fait avec Matthieu. Ses yeux sont plus avertis, et j&amp;#8217;ai pu avoir des retours intéressants. J&amp;#8217;ai appris entre autres lexistence d&amp;#8217;&lt;a href="https://github.com/mozilla-services/telescope"&gt;un projet similaire&lt;/a&gt; chez Mozilla, qui recouvre une partie des mêmes usages. Quelques pistes intéressantes la bas. Je n&amp;#8217;ai pas encore pris le temps d&amp;#8217;intégrer les changements, mais j&amp;#8217;aime beaucoup l&amp;#8217;idée de faire des revues de code de ce&amp;nbsp;type.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;&lt;a href="https://chariotte.fr/"&gt;Chariotte&lt;/a&gt;&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;J&amp;#8217;ai déployé Chariotte sur l&amp;#8217;infrastructure d&amp;#8217;AlwaysData, qui nous propose &lt;a href="https://www.alwaysdata.com/fr/open-source/"&gt;un hébergement gratuit, en tant que projet open source&lt;/a&gt;. Tout s&amp;#8217;est passé très simplement et sans&amp;nbsp;accrocs.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;&lt;a href="https://notmyidea.org/"&gt;Notmyidea&lt;/a&gt;&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;J&amp;#8217;ai enfin créé la structure pour porter mon activité salariée. Pour le moment je pars sur une auto-entreprise. Le choix se fait après de nombreuses tergiversations. Je suis content d&amp;#8217;écouter mon besoin de limiter mon investissement collectif pour le&amp;nbsp;moment.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai pris le temps de mettre à jour la page &lt;a href="/projets.html"&gt;Projets&lt;/a&gt; pour la rendre plus&amp;nbsp;lisible.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai utilisé Datasette pour faire un suivi des heures que je passe sur chaque projet, et rédigé &lt;a href="/using-datasette-for-tracking-my-professional-activity.html"&gt;un article de blog sur le sujet&lt;/a&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="des-joies"&gt;Des joies&amp;nbsp;🤗&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ressentir mon envie de reprendre à faire de la technique après deux semaines à faire autre&amp;nbsp;chose.&lt;/li&gt;
&lt;li&gt;Prendre le temps de mesurer la dynamique existante d&amp;#8217;un groupe avant de faire des&amp;nbsp;propositions.&lt;/li&gt;
&lt;li&gt;Réussir ne pas me laisser envahir par des émotions qui ne sont pas les&amp;nbsp;miennes.&lt;/li&gt;
&lt;li&gt;Réunir des amis et amies pour un atelier d&amp;#8217;écriture. Être content d&amp;#8217;entendre les textes des&amp;nbsp;autres.&lt;/li&gt;
&lt;li&gt;Prendre le temps d&amp;#8217;une après-midi pour échanger en toute&amp;nbsp;simplicité.&lt;/li&gt;
&lt;li&gt;Ressentir de la joie en écoutant de la musique. C&amp;#8217;est simple, mais ça marche tellement&amp;nbsp;bien.&lt;/li&gt;
&lt;li&gt;Apprécier une session de brainstorming&amp;nbsp;technique.&lt;/li&gt;
&lt;li&gt;Recroiser des personnes du milieu brassicole sans&amp;nbsp;stresser.&lt;/li&gt;
&lt;li&gt;Faire de la revue de code avec &lt;a href="https://blog.mathieu-leplatre.info/"&gt;Matthieu&lt;/a&gt;, en profiter pour se donner des&amp;nbsp;nouvelles.&lt;/li&gt;
&lt;li&gt;Avoir du temps seul sans contraintes horaires et me sentir productif à ce moment&amp;nbsp;là.&lt;/li&gt;
&lt;li&gt;Me retrouver dans une voiture sous la pluie battante, entouré d&amp;#8217;amies, en écoutant Clara Ysé à&amp;nbsp;fond.&lt;/li&gt;
&lt;li&gt;Participer à un temps d&amp;#8217;échange de&amp;nbsp;compétences.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="des-peines"&gt;Des peines&amp;nbsp;😬&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Je me suis senti fatigué de passer une après-midi en réunion. Triste de ne pas l&amp;#8217;avoir anticipé alors qu&amp;#8217;on me l&amp;#8217;avait servi sur un&amp;nbsp;plateau.&lt;/li&gt;
&lt;li&gt;Mon rythme s&amp;#8217;améliore, mais cette semaine était trop&amp;nbsp;remplie.&lt;/li&gt;
&lt;li&gt;Peut-être la conséquence : je suis fatigué et en train de tomber&amp;nbsp;malade.&lt;/li&gt;
&lt;li&gt;Je me suis senti parfois anxieux et triste au&amp;nbsp;réveil.&lt;/li&gt;
&lt;li&gt;J&amp;#8217;ai annulé un week-end qui me donnait envie pour éviter de contaminer tout le monde. À la fois frustré et content de prendre soin (de moi et des&amp;nbsp;autres).&lt;/li&gt;
&lt;li&gt;Je me suis senti désorganisé et « flottant » durant ma dernière semaine de&amp;nbsp;pause.&lt;/li&gt;
&lt;li&gt;Ne pas prendre la distance nécessaire avec mes interlocuteurs alors que je me sentais jugé (à tord ou à&amp;nbsp;raison).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vu-lu-ecoute"&gt;Vu, lu,&amp;nbsp;écouté&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🎬 Vu &lt;a href="https://fr.wikipedia.org/wiki/The_Old_Oak"&gt;The Old Oak&lt;/a&gt;, de Ken Loach. J&amp;#8217;aime beaucoup la finesse du propos, j&amp;#8217;ai fondu en larmes à la fin du film. Ça fait autant de bien que ça questionne sur mes&amp;nbsp;engagements.&lt;/li&gt;
&lt;li&gt;🎬 Vu &lt;a href="https://fr.wikipedia.org/wiki/Victoria_(film,_2016)"&gt;Victoria&lt;/a&gt; de Justine&amp;nbsp;Triet.&lt;/li&gt;
&lt;li&gt;🎵 Vu en concert &lt;a href="https://fr.wikipedia.org/wiki/Juliette_(chanteuse)"&gt;Juliette&lt;/a&gt;. J&amp;#8217;ai bien aimé certains textes, ça me donne envie de les écouter plus en&amp;nbsp;détail.&lt;/li&gt;
&lt;li&gt;🎵 Vu en concert &lt;a href="https://fr.wikipedia.org/wiki/French_79"&gt;French79&lt;/a&gt;, ça fait du bien d&amp;#8217;avoir des vibes positives&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;📖 J&amp;#8217;ai commencé à lire Spin, de Robert Charles&amp;nbsp;Wilson.&lt;/li&gt;
&lt;li&gt;🕸️ Un article d&amp;#8217;Acrimed sur &lt;a href="https://www.acrimed.org/Conflit-israelo-palestinien-calomnies-mediatiques"&gt;le traitement du conflit israélo-palestinien dans les médias&amp;nbsp;Français&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;🎵 J&amp;#8217;ai découvert &lt;a href="https://www.youtube.com/watch?v=YvQAYUb9mu8"&gt;Clara Ysé&lt;/a&gt;. Quelle puissance&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;🎧 Écouté &lt;a href="https://www.radiofrance.fr/franceculture/podcasts/sous-les-radars/burn-out-militant-mal-ou-symptome-2399524"&gt;Burn-out militant, mal ou symptome ?&lt;/a&gt; dans l&amp;#8217;émission « sous les radars&amp;nbsp;».&lt;/li&gt;
&lt;li&gt;🎧 Écouté &lt;a href="https://www.radiofrance.fr/franceculture/podcasts/sous-les-radars/logement-la-fin-de-la-france-des-proprietaires-3511615"&gt;Logement : la fin de la France des propriétaires&amp;nbsp;?&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="technique"&gt;Technique&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;J&amp;#8217;ai lu &lt;a href="https://community.openstreetmap.org/t/overturemaps-org-big-businesses-osmf-alternative/6760/7"&gt;un thread à propos de Overturemaps sur le forum de &lt;span class="caps"&gt;OSM&lt;/span&gt;&lt;/a&gt;, assez éclairant sur ce qu&amp;#8217;est Overture Maps, et la potentielle menace pour &lt;span class="caps"&gt;OSM&lt;/span&gt;.&lt;/li&gt;
&lt;li&gt;▶︎ Simon Willison à fait &lt;a href="https://www.youtube.com/watch?v=ArnMdc-ICCM&amp;amp;t"&gt;une présentation sur les embeddings&lt;/a&gt;, comment ils fonctionnent et comment les&amp;nbsp;utiliser. &lt;/li&gt;
&lt;li&gt;▶︎ Une présentation sur &lt;a href="https://www.youtube.com/watch?v=x7drE24geUw"&gt;le fonctionnement interne et l&amp;#8217;état de l&amp;#8217;art des CRDTs&lt;/a&gt; par Martin&amp;nbsp;Kleppmann&lt;/li&gt;
&lt;li&gt;🕸️ J&amp;#8217;ai découvert &lt;a href="https://freesound.org/"&gt;Freesound&lt;/a&gt; grace à Sam : une bibliothèque de sons libres de&amp;nbsp;droits.&lt;/li&gt;
&lt;/ul&gt;</content><category term="weeknotes"></category></entry><entry><title>Adding Real-Time Collaboration to uMap, first week</title><link href="https://blog.notmyidea.org/adding-real-time-collaboration-to-umap-first-week.html" rel="alternate"></link><published>2023-11-11T00:00:00+01:00</published><updated>2023-11-11T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-11-11:/adding-real-time-collaboration-to-umap-first-week.html</id><summary type="html">&lt;p&gt;Last week, I&amp;#8217;ve been lucky to start working on &lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;, an open-source map-making tool to create and share customizable maps, based on Open Street Map&amp;nbsp;data.&lt;/p&gt;
&lt;p&gt;My goal is to add real-time collaboration to uMap, but &lt;strong&gt;we first want to be sure to understand the issue correctly&lt;/strong&gt;. There are …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Last week, I&amp;#8217;ve been lucky to start working on &lt;a href="https://github.com/umap-project/umap/"&gt;uMap&lt;/a&gt;, an open-source map-making tool to create and share customizable maps, based on Open Street Map&amp;nbsp;data.&lt;/p&gt;
&lt;p&gt;My goal is to add real-time collaboration to uMap, but &lt;strong&gt;we first want to be sure to understand the issue correctly&lt;/strong&gt;. There are multiple ways to solve this, so one part of the journey is to understand the problem properly (then, we&amp;#8217;ll be able to chose the right path&amp;nbsp;forward).&lt;/p&gt;
&lt;p&gt;Part of the work is documenting it, so expect to see some blog posts around this in the&amp;nbsp;future.&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;p&gt;I&amp;#8217;ve started by installing uMap on my machine, made it work and read the codebase. uMap is written in Python and Django, and using old school Javascript, specifically using the Leaflet library for &lt;span class="caps"&gt;SIG&lt;/span&gt;-related&amp;nbsp;interface.&lt;/p&gt;
&lt;p&gt;Installing uMap was simple. On a&amp;nbsp;mac:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create the venv and activate&amp;nbsp;it&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;python3&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;venv&lt;span class="w"&gt; &lt;/span&gt;venv
&lt;span class="nb"&gt;source&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;venv/bin/activate
pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-e&lt;span class="w"&gt; &lt;/span&gt;.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Install the deps : &lt;code&gt;brew install postgis&lt;/code&gt; (this will take some time to&amp;nbsp;complete)&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;createuser&lt;span class="w"&gt; &lt;/span&gt;umap
createdb&lt;span class="w"&gt; &lt;/span&gt;umap&lt;span class="w"&gt; &lt;/span&gt;-O&lt;span class="w"&gt; &lt;/span&gt;umap
psql&lt;span class="w"&gt; &lt;/span&gt;umap&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;CREATE EXTENSION postgis&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Copy the default config with &lt;code&gt;cp umap/settings/local.py.sample umap.conf&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# Copy the default config to umap.conf&lt;/span&gt;
cp&lt;span class="w"&gt; &lt;/span&gt;umap/settings/local.py.sample&lt;span class="w"&gt; &lt;/span&gt;umap.conf
&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;UMAP_SETTINGS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;~/dev/umap/umap.conf
make&lt;span class="w"&gt; &lt;/span&gt;install
make&lt;span class="w"&gt; &lt;/span&gt;installjs
make&lt;span class="w"&gt; &lt;/span&gt;vendors
umap&lt;span class="w"&gt; &lt;/span&gt;migrate
umap&lt;span class="w"&gt; &lt;/span&gt;runserver
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="and-youre-done"&gt;And you&amp;#8217;re&amp;nbsp;done!&lt;/h2&gt;
&lt;p&gt;On Arch Linux, I had to do some changes, but all in all it was&amp;nbsp;simple:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;createuser&lt;span class="w"&gt; &lt;/span&gt;umap&lt;span class="w"&gt; &lt;/span&gt;-U&lt;span class="w"&gt; &lt;/span&gt;postgres
createdb&lt;span class="w"&gt; &lt;/span&gt;umap&lt;span class="w"&gt; &lt;/span&gt;-O&lt;span class="w"&gt; &lt;/span&gt;umap&lt;span class="w"&gt; &lt;/span&gt;-U&lt;span class="w"&gt; &lt;/span&gt;postgres
psql&lt;span class="w"&gt; &lt;/span&gt;umap&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;CREATE EXTENSION postgis&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-Upostgres
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Depending on your installation, you might need to change the &lt;span class="caps"&gt;USER&lt;/span&gt; that connects the&amp;nbsp;database.&lt;/p&gt;
&lt;p&gt;The configuration could look like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;DATABASES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="s2"&gt;&amp;quot;default&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="s2"&gt;&amp;quot;ENGINE&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;django.contrib.gis.db.backends.postgis&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="s2"&gt;&amp;quot;NAME&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;umap&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="s2"&gt;&amp;quot;USER&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;postgres&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="how-its-currently-working"&gt;How it&amp;#8217;s currently&amp;nbsp;working&lt;/h2&gt;
&lt;p&gt;With everything working on my machine, I took some time to read the code and understand
the current code&amp;nbsp;base.&lt;/p&gt;
&lt;p&gt;Here are my findings&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;uMap is currently using a classical client/server architecture where&amp;nbsp;:&lt;/li&gt;
&lt;li&gt;The server is here mainly to handle access rights, store the data and send it over to the&amp;nbsp;clients.&lt;/li&gt;
&lt;li&gt;The actual rendering and modifications of the map are directly done in JavaScript, on the&amp;nbsp;clients.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The data is split in multiple layers. At the time of writing, concurrent writes to the same layers are not possible, as one edit would potentially overwrite the other. It&amp;#8217;s possible to have concurrent edits on different layers,&amp;nbsp;though.&lt;/p&gt;
&lt;p&gt;When a change occurs, &lt;a href="https://github.com/umap-project/umap/blob/c16a01778b4686a562d97fde1cfd3433777d7590/umap/views.py#L917-L948"&gt;each &lt;code&gt;DataLayer&lt;/code&gt; is sent by the client to the server&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The data is updated on the&amp;nbsp;server.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If the data has been modified by another client&lt;/strong&gt;, an &lt;code&gt;HTTP 422 (Unprocessable Entity)&lt;/code&gt; status is returned, which makes it possible to detect conflicts. The users are prompted about it, and asked if they want to overwrite the&amp;nbsp;changes.&lt;/li&gt;
&lt;li&gt;The files are stored as geojson files on the server as &lt;code&gt;{datalayer.pk}_{timestamp}.geojson&lt;/code&gt;. &lt;a href="https://github.com/umap-project/umap/blob/c16a01778b4686a562d97fde1cfd3433777d7590/umap/models.py#L426-L433"&gt;A history of the last changes is preserved&lt;/a&gt; (The default settings preserves the last 10&amp;nbsp;revisions).&lt;/li&gt;
&lt;li&gt;The data is stored &lt;a href="https://github.com/umap-project/umap/blob/c16a01778b4686a562d97fde1cfd3433777d7590/umap/static/umap/js/umap.js#L158-L163"&gt;in a Leaflet object&lt;/a&gt; and &lt;a href="https://github.com/umap-project/umap/blob/c16a01778b4686a562d97fde1cfd3433777d7590/umap/static/umap/js/umap.js#L1095:L1095"&gt;backups are made manually&lt;/a&gt; (it does not seem that changes are saved&amp;nbsp;automatically).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="data"&gt;Data&lt;/h3&gt;
&lt;p&gt;Each layer consists&amp;nbsp;of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;On one side are the properties (matching the &lt;code&gt;_umap_options&lt;/code&gt;), and on the other, the geojson data (the Features&amp;nbsp;key).&lt;/li&gt;
&lt;li&gt;Each feature is composed of three&amp;nbsp;keys:&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;geometry&lt;/strong&gt;: the actual geo&amp;nbsp;object&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;properties&lt;/strong&gt;: the data associated with&amp;nbsp;it&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;style&lt;/strong&gt;: just styling information which goes with it, if&amp;nbsp;any.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="JSON representation of the umap options" src="/images/umap/umap-options.png"&gt;
&lt;img alt="JSON representation of the umap features" src="/images/umap/umap-features.png"&gt;&lt;/p&gt;
&lt;h2 id="real-time-collaboration-the-different-approaches"&gt;Real-time collaboration : the different&amp;nbsp;approaches&lt;/h2&gt;
&lt;p&gt;Behind the &amp;#8220;real-time collaboration&amp;#8221; name, we have&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;strong&gt;streaming of the changes to the clients&lt;/strong&gt;: when you&amp;#8217;re working with other persons on the same map, you can see their edits at the moment they&amp;nbsp;happen.&lt;/li&gt;
&lt;li&gt;The ability to handle &lt;strong&gt;concurrent changes&lt;/strong&gt;: some changes can happen on the same data concurrently. In such a case, we need to merge them together and be able&amp;nbsp;to &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offline editing&lt;/strong&gt;: in some cases, one needs to map data but doesn&amp;#8217;t have access to a network. Changes happen on a local device and is then synced with other devices / the server&amp;nbsp;;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;Keep in mind these notes are just food for toughs, and that other approaches might be discovered on the&amp;nbsp;way&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve tried to come up with the different approaches I can follow in order to add the collaboration
features we&amp;nbsp;want.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;span class="caps"&gt;JSON&lt;/span&gt; Patch and &lt;span class="caps"&gt;JSON&lt;/span&gt; Merge Patch&lt;/strong&gt;: Two specifications by the &lt;span class="caps"&gt;IETF&lt;/span&gt; which define a format for generating and using diffs on json files. In this scenario, we could send the diffs from the clients to the server, and let it merge&amp;nbsp;everything.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Using CRDTs&lt;/strong&gt;: Conflict-Free Resolution Data Types are one of the other options we have lying around. The technology has been used mainly to solve concurrent editing on text documents (like &lt;a href="https://github.com/ether/etherpad-lite"&gt;etherpad-lite&lt;/a&gt;), but should work fine on&amp;nbsp;trees.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="json-patch-and-json-merge-patch"&gt;&lt;span class="caps"&gt;JSON&lt;/span&gt; Patch and &lt;span class="caps"&gt;JSON&lt;/span&gt; Merge&amp;nbsp;Patch&lt;/h3&gt;
&lt;p&gt;I&amp;#8217;ve stumbled on two &lt;span class="caps"&gt;IETF&lt;/span&gt; specifications for &lt;a href="https://datatracker.ietf.org/doc/html/rfc6902"&gt;&lt;span class="caps"&gt;JSON&lt;/span&gt; Patch&lt;/a&gt; and &lt;a href="https://datatracker.ietf.org/doc/html/rfc7396"&gt;&lt;span class="caps"&gt;JSON&lt;/span&gt; Merge Patch&lt;/a&gt; which respectively define how &lt;span class="caps"&gt;JSON&lt;/span&gt; diffs could be defined and&amp;nbsp;applied.&lt;/p&gt;
&lt;p&gt;There are multiple libraries for this, and at least one for &lt;a href="https://github.com/OpenDataServices/json-merge-patch"&gt;Python&lt;/a&gt;, &lt;a href="https://docs.rs/json-patch/latest/json_patch/"&gt;Rust&lt;/a&gt; and &lt;a href="https://www.npmjs.com/package/json-merge-patch"&gt;&lt;span class="caps"&gt;JS&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s even &lt;a href="https://redis.io/commands/json.merge/"&gt;supported by the Redis database&lt;/a&gt;, which might come handy in case we want to stream the changes with&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re making edits to the map without changing all the data all the time, it&amp;#8217;s possible to generate diffs. For instance, let&amp;#8217;s take this simplified data (it&amp;#8217;s not valid geojson, but it should be enough for&amp;nbsp;testing):&lt;/p&gt;
&lt;p&gt;source.json&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;features&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;key&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;not_changed&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;whatever&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And now let&amp;#8217;s add a new object right after the first one&amp;nbsp;:&lt;/p&gt;
&lt;p&gt;destination.geojson&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;features&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;key&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;key&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;another-value&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;not_changed&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;whatever&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If we generate a&amp;nbsp;diff:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;pipx&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;merge&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;patch&lt;/span&gt;
&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;merge&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;patch&lt;/span&gt; &lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;patch&lt;/span&gt; &lt;span class="n"&gt;source&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt; &lt;span class="n"&gt;destination&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="s2"&gt;&amp;quot;features&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="s2"&gt;&amp;quot;key&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="s2"&gt;&amp;quot;key&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;another-value&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Multiple things to note&amp;nbsp;here:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It&amp;#8217;s a valid &lt;span class="caps"&gt;JSON&lt;/span&gt;&amp;nbsp;object&lt;/li&gt;
&lt;li&gt;It doesn&amp;#8217;t reproduce the &lt;code&gt;not_changed&lt;/code&gt; key&lt;/li&gt;
&lt;li&gt;But… I was expecting to see only the new item to show up. Instead, we are getting two items here, because it&amp;#8217;s replacing the &amp;#8220;features&amp;#8221; key with everything&amp;nbsp;inside.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This is actually what &lt;a href="https://datatracker.ietf.org/doc/html/rfc6902#section-4.1"&gt;the specification defines&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;4.1.&amp;nbsp;add&lt;/p&gt;
&lt;p&gt;The &amp;#8220;add&amp;#8221; operation performs one of the following functions,
depending upon what the target location&amp;nbsp;references:&lt;/p&gt;
&lt;p&gt;o If the target location specifies an array index, a new value is
inserted into the array at the specified&amp;nbsp;index.&lt;/p&gt;
&lt;p&gt;o If the target location specifies an object member that does not
already exist, a new member is added to the&amp;nbsp;object&lt;/p&gt;
&lt;p&gt;o &lt;strong&gt;If the target location specifies an object member that does exist,
that member&amp;#8217;s value is&amp;nbsp;replaced.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It seems too bad for us, as this will happen each time a new feature is added to the feature&amp;nbsp;collection.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s not working out of the box, but we could probably hack something together by having all features defined by a unique id, and send this to the server. We wouldn&amp;#8217;t be using vanilla &lt;code&gt;geojson&lt;/code&gt; files though, but adding some complexity on top of&amp;nbsp;it.&lt;/p&gt;
&lt;p&gt;At this point, I&amp;#8217;ve left this here and went to experiment with the other ideas. After all, the goal here is not (yet) to have something functional, but to clarify how the different options would play&amp;nbsp;off.&lt;/p&gt;
&lt;h3 id="using-crdts"&gt;Using&amp;nbsp;CRDTs&lt;/h3&gt;
&lt;p&gt;I&amp;#8217;ve had a look at the two main CRDTs implementation that seem to get traction these days : &lt;a href="https://automerge.org/"&gt;Automerge&lt;/a&gt; and &lt;a href="https://github.com/yjs/yjs"&gt;Yjs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve first tried to make Automerge work with Python, but the &lt;a href="https://github.com/automerge/automerge-py"&gt;Automerge-py&lt;/a&gt; repository is outdated now and won&amp;#8217;t build. I realized at this point that we might not even need a python&amp;nbsp;implementation: &lt;/p&gt;
&lt;p&gt;In this scenario, the server could just stream the changes from one client to the other, and the &lt;span class="caps"&gt;CRDT&lt;/span&gt; will guarantee that the structures will be similar on both clients. It&amp;#8217;s handy because it means we won&amp;#8217;t have to implement the &lt;span class="caps"&gt;CRDT&lt;/span&gt; logic on the server&amp;nbsp;side. &lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s do some JavaScript, then. A simple Leaflet map would look like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;L&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;leaflet&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;leaflet/dist/leaflet.css&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// Initialize the map and set its view to our chosen geographical coordinates and a zoom level:&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;L&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;map&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;setView&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mf"&gt;48.1173&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.6778&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;13&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Add a tile layer to add to our map, in this case using Open Street Map&lt;/span&gt;
&lt;span class="nx"&gt;L&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;tileLayer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;maxZoom&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;19&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;attribution&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;© OpenStreetMap contributors&amp;#39;&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nx"&gt;addTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Initialize a GeoJSON layer and add it to the map&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;geojsonFeature&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;type&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Feature&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;properties&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Initial Feature&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;popupContent&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;This is where the journey begins!&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;geometry&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;type&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Point&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;coordinates&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;0.09&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;51.505&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;geojsonLayer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;L&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;geoJSON&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;geojsonFeature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;onEachFeature&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;feature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;layer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;feature&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;properties&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;feature&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;popupContent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;layer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bindPopup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;feature&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;popupContent&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nx"&gt;addTo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// Add new features to the map with a click&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;onMapClick&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;newFeature&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;type&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Feature&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;properties&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;New Feature&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;popupContent&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;You clicked the map at &amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;latlng&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;geometry&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;type&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Point&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;coordinates&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;latlng&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lng&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;latlng&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// Add the new feature to the geojson layer&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;geojsonLayer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newFeature&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;click&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;onMapClick&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nothing fancy here, just a map which adds markers when you click. Now let&amp;#8217;s add&amp;nbsp;automerge:&lt;/p&gt;
&lt;p&gt;We add a bunch of imports, the goal here will be to sync between tabs of the same browser. Automerge &lt;a href="https://automerge.org/blog/2023/11/06/automerge-repo/"&gt;announced an automerge-repo&lt;/a&gt; library to help with all the wiring-up, so let&amp;#8217;s try it&amp;nbsp;out!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;DocHandle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;isValidAutomergeUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Repo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;@automerge/automerge-repo&amp;#39;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;BroadcastChannelNetworkAdapter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;@automerge/automerge-repo-network-broadcastchannel&amp;#39;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;IndexedDBStorageAdapter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;@automerge/automerge-repo-storage-indexeddb&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;v4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;uuidv4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;uuid&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;These were just import. Don&amp;#8217;t bother too much. The next section does the&amp;nbsp;following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instantiate an &amp;#8220;automerge repo&amp;#8221;, which helps to send the right messages to the other peers if needed&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Add a mechanism to create and initialize a repository if&amp;nbsp;needed,&lt;/li&gt;
&lt;li&gt;or otherwise look for an existing one, based on a hash passed in the &lt;span class="caps"&gt;URI&lt;/span&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;// Add an automerge repository. Sync to &lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Repo&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;network&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ow"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;BroadcastChannelNetworkAdapter&lt;/span&gt;&lt;span class="p"&gt;()],&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;IndexedDBStorageAdapter&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="c1"&gt;// Automerge-repo exposes an handle, which is mainly a wrapper around the library internals.&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;handle&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;DocHandle&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;unknown&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;rootDocUrl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;substring&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isValidAutomergeUrl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;rootDocUrl&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;handle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;rootDocUrl&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// Once we&amp;#39;ve found the data in the browser, let&amp;#39;s add the features to the geojson layer.&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;features&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;feature&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;geojsonLayer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;feature&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;handle&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;change&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;features&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Let&amp;#8217;s change the &lt;code&gt;onMapClick&lt;/code&gt; function:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;onMapClick&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;uuidv4&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// ... What was there previously&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;newFeature&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;properties&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// Add the new feature to the geojson layer.&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// Here we use the handle to do the change.&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;change&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;features&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;newFeature&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And on the other side of the logic, let&amp;#8217;s listen to the&amp;nbsp;changes:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nx"&gt;handle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;change&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;patches&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// &amp;quot;patches&amp;quot; is a list of all the changes that happened to the tree.&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// Because we&amp;#39;re sending JS objects, a lot of patches events are being sent.&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// &lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// Filter to only keep first-level events (we currently don&amp;#39;t want to reflect&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// changes down the tree — yet)&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;patches&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;patches&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;inserted&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;patches&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(({&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;features&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;put&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;inserted&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(({&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;newFeature&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;features&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sb"&gt;`Adding a new feature at position &lt;/span&gt;&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;geojsonLayer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newFeature&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And… It&amp;#8217;s working, here is a little video capture of two tabs working together&amp;nbsp;:-)&lt;/p&gt;
&lt;video controls preload="none" width="100%"
poster="https://nuage.b.delire.party/s/kpP9ijfqabmKxnr"&gt;
&lt;source src="https://nuage.b.delire.party/s/kpP9ijfqabmKxnr/download"
type="video/mp4"&gt;
&lt;/video&gt;
&lt;p&gt;It&amp;#8217;s very rough, but the point was mainly to see how the library can be used, and what the &lt;span class="caps"&gt;API&lt;/span&gt; looks like. I&amp;#8217;ve found that&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;patches&lt;/code&gt; object that&amp;#8217;s being sent to the &lt;code&gt;handle.on&lt;/code&gt; subscribers is very chatty: it contains all the changes, and I have to filter it to get what I&amp;nbsp;want.&lt;/li&gt;
&lt;li&gt;I was expecting the objects to be sent on one go, but it&amp;#8217;s creating an operation for each change. For instance, setting a new object to a key will result in multiple events, as it will firstly create the object, and the populate&amp;nbsp;it.&lt;/li&gt;
&lt;li&gt;Here I need to keep track of all the edits, but I&amp;#8217;m not sure how that will work out with for instance the offline use-case (or with limited connectivity). That&amp;#8217;s what I&amp;#8217;m going to find out next week, I guess&amp;nbsp;:-)&lt;/li&gt;
&lt;li&gt;The team behind Automerge is very welcoming, and was prompt to answer me when&amp;nbsp;needed.&lt;/li&gt;
&lt;li&gt;There seem to be another &lt;span class="caps"&gt;API&lt;/span&gt; &lt;code&gt;Automerge.getHistory()&lt;/code&gt;, and &lt;code&gt;Automerge.diff()&lt;/code&gt; to get a patch between the different docs, which might prove more helpful than getting all the small&amp;nbsp;patches.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&amp;#8217;ll figure that out next week, I&amp;nbsp;guess!&lt;/p&gt;</content><category term="code"></category><category term="Python"></category><category term="CRDT"></category><category term="Sync"></category><category term="uMap"></category></entry><entry><title>Using Datasette for tracking my professional activity</title><link href="https://blog.notmyidea.org/using-datasette-for-tracking-my-professional-activity.html" rel="alternate"></link><published>2023-11-11T00:00:00+01:00</published><updated>2023-11-11T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-11-11:/using-datasette-for-tracking-my-professional-activity.html</id><summary type="html">&lt;p&gt;I&amp;#8217;ve been following Simon Willison since quite some time, but I&amp;#8217;ve actually never played with his main project &lt;a href="https://datasette.io"&gt;Datasette&lt;/a&gt;&amp;nbsp;before.&lt;/p&gt;
&lt;p&gt;As I&amp;#8217;m going back into development, I&amp;#8217;m trying to track where my time goes, to be able to find patterns, and just remember how much time …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I&amp;#8217;ve been following Simon Willison since quite some time, but I&amp;#8217;ve actually never played with his main project &lt;a href="https://datasette.io"&gt;Datasette&lt;/a&gt;&amp;nbsp;before.&lt;/p&gt;
&lt;p&gt;As I&amp;#8217;m going back into development, I&amp;#8217;m trying to track where my time goes, to be able to find patterns, and just remember how much time I&amp;#8217;ve worked on such and such project. A discussion with &lt;a href="https://thom4.net/"&gt;Thomas&lt;/a&gt; made me realize it would be nice to track all this in a spreadsheet of some sort, which I was doing until&amp;nbsp;today.&lt;/p&gt;
&lt;p&gt;Spreadsheets are nice, but they don&amp;#8217;t play well with rich content, and doing graphs with them is kind of tricky. So I went ahead and setup everything in&amp;nbsp;Datasette.&lt;/p&gt;
&lt;p&gt;First of all, I&amp;#8217;ve imported my &lt;code&gt;.csv&lt;/code&gt; file into a sqlite&amp;nbsp;database: &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sqlite3&lt;span class="w"&gt; &lt;/span&gt;-csv&lt;span class="w"&gt; &lt;/span&gt;-header&lt;span class="w"&gt; &lt;/span&gt;db.sqlite&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;.import journal.csv journal&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then, I used &lt;a href="https://sqlite-utils.datasette.io/en/stable/"&gt;sqlite-utils&lt;/a&gt; to do some tidying and changed the columns&amp;nbsp;names:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# Rename a column&lt;/span&gt;
sqlite-utils&lt;span class="w"&gt; &lt;/span&gt;transform&lt;span class="w"&gt; &lt;/span&gt;journal&lt;span class="w"&gt; &lt;/span&gt;--rename&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;quoi ?&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;content
&lt;span class="c1"&gt;# Make everything look similar&lt;/span&gt;
sqlite-utils&lt;span class="w"&gt; &lt;/span&gt;update&lt;span class="w"&gt; &lt;/span&gt;db.sqlite&lt;span class="w"&gt; &lt;/span&gt;journal&lt;span class="w"&gt; &lt;/span&gt;project&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;value.replace(&amp;quot;Umap&amp;quot;, &amp;quot;uMap&amp;quot;)&amp;#39;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Here is my database&amp;nbsp;schema:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sqlite-utils&lt;span class="w"&gt; &lt;/span&gt;schema&lt;span class="w"&gt; &lt;/span&gt;db.sqlite
CREATE&lt;span class="w"&gt; &lt;/span&gt;TABLE&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;journal&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;date&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;TEXT,
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;project&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;TEXT,
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;duration&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;TEXT,
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;where&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;TEXT,
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;content&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;TEXT,
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;paid_work&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;INTEGER
&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And then installed datasette, with a few plugins, and ran&amp;nbsp;it:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;pipx&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;datasette
datasette&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;datasette-render-markdown&lt;span class="w"&gt; &lt;/span&gt;datasette-write-ui&lt;span class="w"&gt; &lt;/span&gt;datasette-dashboards&lt;span class="w"&gt; &lt;/span&gt;datasette-dateutil
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I then came up with a few &lt;span class="caps"&gt;SQL&lt;/span&gt; queries which are&amp;nbsp;useful:&lt;/p&gt;
&lt;p&gt;How much I&amp;#8217;ve worked per&amp;nbsp;project:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;sqlite&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;utils&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqlite&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;SELECT project, SUM(CAST(duration AS REAL)) as total_duration FROM journal GROUP BY project;&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;project&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;Argos&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;total_duration&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;project&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;IDLV&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;total_duration&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;project&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;Notmyidea&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;total_duration&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;project&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;Sam&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;total_duration&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;project&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;uMap&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;total_duration&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;How much I&amp;#8217;ve worked per week, in total (I&amp;#8217;ve redacted the results for&amp;nbsp;privacy):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;sqlite&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;utils&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sqlite&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;SELECT strftime(&amp;#39;%Y-W%W&amp;#39;, date) AS week, SUM(CAST(duration AS REAL)) AS hours FROM journal GROUP BY week ORDER BY week;&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;week&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;2023-W21&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;week&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;2023-W22&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;week&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;2023-W23&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;week&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;2023-W25&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;week&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;2023-W29&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;week&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;2023-W37&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;week&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;2023-W39&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;week&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;2023-W40&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;week&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;2023-W41&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;week&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;2023-W42&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;week&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;2023-W44&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;{&lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;week&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;2023-W45&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;XX&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I then created a quick dashboard using &lt;a href="https://github.com/rclement/datasette-dashboards"&gt;datasette-dashboard&lt;/a&gt;, which looks like&amp;nbsp;this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capture d'écran du dashboard, heures par semaine" src="/images/datasette/hours-per-week.png"&gt;
&lt;img alt="Capture d'écran du dashboard, heures par projet" src="/images/datasette/hours-per-project.png"&gt;&lt;/p&gt;
&lt;p&gt;Using this&amp;nbsp;configuration:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nt"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;datasette-render-markdown&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;content&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;datasette-dashboards&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;my-dashboard&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;Notmyidea&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;filters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;project&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;Projet&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;select&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;db&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;SELECT DISTINCT project FROM journal WHERE project IS NOT NULL ORDER BY project ASC&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;layout&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;hours-per-project&lt;/span&gt;&lt;span class="p p-Indicator"&gt;]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;entries&lt;/span&gt;&lt;span class="p p-Indicator"&gt;]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;hours-per-week&lt;/span&gt;&lt;span class="p p-Indicator"&gt;]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;charts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hours-per-project&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;Nombre d&amp;#39;heures par projet&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;SELECT project, SUM(CAST(duration AS REAL)) as total FROM journal GROUP BY project;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;db&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;library&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;vega-lite&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;mark&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;{&lt;/span&gt;&lt;span class="nt"&gt; type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;arc&lt;/span&gt;&lt;span class="p p-Indicator"&gt;,&lt;/span&gt;&lt;span class="nt"&gt; tooltip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;encoding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;{&lt;/span&gt;&lt;span class="nt"&gt; field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;project&lt;/span&gt;&lt;span class="p p-Indicator"&gt;,&lt;/span&gt;&lt;span class="nt"&gt; type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;nominal&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;theta&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;{&lt;/span&gt;&lt;span class="nt"&gt; field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;total&lt;/span&gt;&lt;span class="p p-Indicator"&gt;,&lt;/span&gt;&lt;span class="nt"&gt; type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;quantitative&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;hours-per-week&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;Heures par semaine&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;SELECT strftime(&amp;#39;%Y-W%W&amp;#39;, date) AS week, SUM(CAST(duration AS REAL)) AS hours FROM journal GROUP BY week ORDER BY week;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;db&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;library&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;vega-lite&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;mark&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;{&lt;/span&gt;&lt;span class="nt"&gt; type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;bar&lt;/span&gt;&lt;span class="p p-Indicator"&gt;,&lt;/span&gt;&lt;span class="nt"&gt; tooltip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;encoding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;{&lt;/span&gt;&lt;span class="nt"&gt; field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;week&lt;/span&gt;&lt;span class="p p-Indicator"&gt;,&lt;/span&gt;&lt;span class="nt"&gt; type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;ordinal&lt;/span&gt;&lt;span class="p p-Indicator"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;{&lt;/span&gt;&lt;span class="nt"&gt; field&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;hours&lt;/span&gt;&lt;span class="p p-Indicator"&gt;,&lt;/span&gt;&lt;span class="nt"&gt; type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;quantitative&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p p-Indicator"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;Journal&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;db&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;db&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;SELECT * FROM journal WHERE TRUE [[ AND project = :project ]] ORDER BY date DESC&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;library&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l l-Scalar l-Scalar-Plain"&gt;table&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And ran datasette&amp;nbsp;with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;datasette&lt;span class="w"&gt; &lt;/span&gt;db.sqlite&lt;span class="w"&gt; &lt;/span&gt;--root&lt;span class="w"&gt; &lt;/span&gt;--metadata&lt;span class="w"&gt; &lt;/span&gt;metadata.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="code"></category><category term="Datasette"></category><category term="Graphs"></category><category term="SQL"></category></entry><entry><title>2023, Semaine 42</title><link href="https://blog.notmyidea.org/2023-semaine-42.html" rel="alternate"></link><published>2023-10-23T00:00:00+02:00</published><updated>2023-10-23T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-10-23:/2023-semaine-42.html</id><summary type="html">
&lt;p&gt;J&amp;#8217;ai passé la majeure partie de ma semaine seul, ponctuée par quelques ballades en bord de mer. J&amp;#8217;ai pu reprendre contact avec la technologie et bien avancer sur le projet&amp;nbsp;Argos.&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;Framasoft /&amp;nbsp;Argos&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;Quatrième et dernière semaine rémunérée sur le projet. Je suis …&lt;/dd&gt;&lt;/dl&gt;</summary><content type="html">
&lt;p&gt;J&amp;#8217;ai passé la majeure partie de ma semaine seul, ponctuée par quelques ballades en bord de mer. J&amp;#8217;ai pu reprendre contact avec la technologie et bien avancer sur le projet&amp;nbsp;Argos.&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;Framasoft /&amp;nbsp;Argos&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;Quatrième et dernière semaine rémunérée sur le projet. Je suis très content de là ou en est le projet. J&amp;#8217;ai pris le temps d&amp;#8217;ajouter de l&amp;#8217;intégration continue, des tests et de la&amp;nbsp;documentation.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai passé plus de temps que prévu à installer et à rendre fonctionnel PostgreSQL sur ma machine, et je me souviens que c&amp;#8217;est souvent le cas pour moi. J&amp;#8217;ai fini par écrire un mini tutoriel dans la documentation à ce propos, en espérant que ça&amp;nbsp;serve.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai pu tester l&amp;#8217;installation et l&amp;#8217;utilisation de l&amp;#8217;outil sur plusieurs systèmes d&amp;#8217;exploitation, et en même temps tester la virtualisation &lt;span class="caps"&gt;QEMU&lt;/span&gt; depuis mon&amp;nbsp;ordinateur.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai passé du temps à écrire des requêtes &lt;span class="caps"&gt;SQL&lt;/span&gt; avec SQLAlchemy, en trouvant ça beaucoup plus compliqué que de&amp;nbsp;raison…&lt;/dd&gt;
&lt;dd&gt;On a pu se faire une réunion de fin où j&amp;#8217;ai validé avec Luc que le travail effectué correspondait bien à leurs attentes. Je suis content de réaliser que les choix techniques faits permettent d&amp;#8217;avoir une performance satisfaisante et de pouvoir tester toute l&amp;#8217;infrastructure depuis une seule&amp;nbsp;machine.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Umap&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;le tuilage est presque parfait puisque je vais pouvoir commencer à travailler sur Umap début Novembre. L&amp;#8217;idée est de travailler à une solution autour de la synchronisation de données géographiques. Je vous en dis plus&amp;nbsp;bientôt.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai pris le temps d&amp;#8217;installer l&amp;#8217;outil et de commencer à me familiariser avec le&amp;nbsp;code.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai commencé à passer en revue des projets qui font de la synchronisation de données en temps&amp;nbsp;réel.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Notmyidea&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;J&amp;#8217;ai passé du temps à me renseigner sur les protocoles &lt;span class="caps"&gt;VPN&lt;/span&gt; et leurs alternatives. J&amp;#8217;ai rencontré Wireguard qui me semble être une approche minimaliste et&amp;nbsp;sécure.&lt;/dd&gt;
&lt;dd&gt;Je continue d&amp;#8217;osciller à propos du statut juridique à adopter pour mon activité pro. Je me fixe la semaine prochaine&amp;nbsp;:-)&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="des-joies"&gt;Des&amp;nbsp;joies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Passer du temps seul, apprécier le silence et le manque de sollicitations. L&amp;#8217;organisation quotidienne est quand même grandement&amp;nbsp;simplifiée.&lt;/li&gt;
&lt;li&gt;Me promener et découvrir des espèces d&amp;#8217;oiseaux que je ne connaissais pas, à mon propre&amp;nbsp;rythme.&lt;/li&gt;
&lt;li&gt;Assumer mon rapport à la technologie auprès de tiers. « Oui, je suis un geek et je crois qu&amp;#8217;il ne faut pas laisser la technologie uniquement aux puissant•es&amp;nbsp;».&lt;/li&gt;
&lt;li&gt;Rentrer chez moi et être content de retrouver certaines dynamiques&amp;nbsp;collectives.&lt;/li&gt;
&lt;li&gt;Réussir à clarifier mes besoins en avance pour permettre d&amp;#8217;éviter une frustration qui aurait pu arriver&amp;nbsp;sinon.&lt;/li&gt;
&lt;li&gt;Revenir sur des conflits passés et pouvoir en parler avec du recul, et avec une analyse différente, en utilisant une approche&amp;nbsp;systémique.&lt;/li&gt;
&lt;li&gt;Réussir à écouter une conversation et ne donner mon avis que si on me le&amp;nbsp;demande.&lt;/li&gt;
&lt;li&gt;Revivre des effluves d&amp;#8217;été, à la fois posé en haut de la pointe du Roselier (St Brieuc), à la fois en voyant &lt;a href="https://www.youtube.com/watch?v=2JEZLOaDKus&amp;amp;feature=youtu.be"&gt;l&amp;#8217;after-movie du festival l&amp;#8217;Été de&amp;nbsp;Vaour&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Avoir un remerciement pour une position pas évidente que j&amp;#8217;ai eu avec un ami il y a quelques années, avec du recul. Ça soigne&amp;nbsp;:-)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="des-peines"&gt;Des&amp;nbsp;peines&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Voir les réactions viriles et bloquantes de certains hommes dans le public durant des&amp;nbsp;concerts.&lt;/li&gt;
&lt;li&gt;Intervenir pour « gérer un mec bourré » en soirée qui semblait ne pas comprendre que son comportement était déplacé. Je suis content de la manière dont les choses se sont passées, mais triste de voir qu&amp;#8217;on en est toujours&amp;nbsp;là.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vu-lu-ecoute"&gt;Vu, lu,&amp;nbsp;écouté&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🎵 J&amp;#8217;ai découvert deux groupes en live : &lt;a href="https://fr.wikipedia.org/wiki/The_Inspector_Cluzo"&gt;The inspector Cluzo&lt;/a&gt; et &lt;a href="https://www.wikiwand.com/fr/Ko_Ko_Mo_(groupe_de_rock_fran%C3%A7ais)"&gt;Kokomo&lt;/a&gt; durant un festival. J&amp;#8217;ai beaucoup aimé l&amp;#8217;émotion qui ressortait des deux, si on mets de côté le côté un peu viril qui peut parfois en sortir. Ça fait du bien de voir de la musique&amp;nbsp;live.&lt;/li&gt;
&lt;li&gt;🗯️ &lt;a href="https://www.youtube.com/watch?v=zYoPYLqWcp4&amp;amp;themeRefresh=1"&gt;Julia Cagé, François Ruffin, Thomas Piketty sur Médiapart&lt;/a&gt;. J&amp;#8217;ai trouvé les analyses de Julia Cagé et Thomas Piketty intéressante, mais malheureusement le ton de Ruffin assez fatiguant. Ça doit être fatiguant de ne pas répondre aux questions qu&amp;#8217;on se fait poser. Malgré tout une vidéo&amp;nbsp;intéressante.&lt;/li&gt;
&lt;li&gt;📖 J&amp;#8217;ai lu &lt;a href="https://arenes.fr/livre/paroles-dhonneur/"&gt;Paroles d&amp;#8217;honneur&lt;/a&gt; de Leïla Slimani et Laetitia Coryn, qui parle du rapport à la sexualité au Maroc. J&amp;#8217;ai beaucoup aimé à la fois le discours, le ton et les&amp;nbsp;illustrations.&lt;/li&gt;
&lt;li&gt;▶︎ &lt;a href="https://www.youtube.com/watch?v=w6PLAmhjt50"&gt;La &lt;span class="caps"&gt;MISERE&lt;/span&gt; des hommes &lt;span class="caps"&gt;SOUS&lt;/span&gt; &lt;span class="caps"&gt;LES&lt;/span&gt; &lt;span class="caps"&gt;DRAPS&lt;/span&gt;&lt;/a&gt; et &lt;a href="https://www.youtube.com/watch?v=cb7zlAkiSGw"&gt;&lt;span class="caps"&gt;ETRE&lt;/span&gt; &lt;span class="caps"&gt;UN&lt;/span&gt; &lt;span class="caps"&gt;HOMME&lt;/span&gt; : L&amp;#8217;homme alpha&lt;/a&gt;, deux vidéos de Léo, qui parlent respectivement de la « misère sexuelle » et de la compétition entre hommes. Plusieurs bouts font écho chez moi, sur des questions qui m&amp;#8217;animent depuis longtemps autour de la&amp;nbsp;compétition.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="technique"&gt;Technique&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;J&amp;#8217;ai été content de lire ce document qui introduit les &lt;span class="caps"&gt;CRDT&lt;/span&gt; en 2019&amp;nbsp;https://www.inkandswitch.com/local-first/&lt;/li&gt;
&lt;li&gt;Anthropic semble réussir à &lt;a href="https://nitter.net/anthropicai/status/1709986949711200722"&gt;isoler les neurones d&amp;#8217;un réseau neuronal&lt;/a&gt; pour qu&amp;#8217;ils se spécialisent sur une seule tache, grace à de l&amp;#8217;apprentissage par dictionnaire&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Simon Willison &lt;a href="https://simonwillison.net/2023/May/2/download-esm/"&gt;à fait un outil qui permet de récupérer une version ECMAScript d&amp;#8217;une bibliothèque &lt;span class="caps"&gt;JS&lt;/span&gt; de votre choix&lt;/a&gt;, en passant par npm et jsdelivr, et David Larlet &lt;a href="https://gitlab.com/davidbgk/umap-stats/-/blob/main/npm.py"&gt;à fait quelque chose de similaire&lt;/a&gt;, qui s&amp;#8217;intègre facilement aux fichiers &lt;code&gt;pyproject.toml&lt;/code&gt; utiles en&amp;nbsp;python)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://drivendata.co/blog/python-packaging-2023"&gt;Une explication de l&amp;#8217;état du packaging en python&lt;/a&gt; qui m&amp;#8217;a fait du bien. J&amp;#8217;ai fait un &lt;abbr title="Google Summer of Code"&gt;&lt;span class="caps"&gt;GSOC&lt;/span&gt;&lt;/abbr&gt; en 2010 — il y a 13 ans ! — sur le sujet du packaging, je suis content de voir que ça à beaucoup avancé, mais malheureusement que les choses ne sont pas encore très simples à&amp;nbsp;comprendre.&lt;/li&gt;
&lt;li&gt;Une vidéo de SimonW &lt;a href="https://www.youtube.com/watch?v=qw4PrtyvJI0&amp;amp;t=24953s"&gt;ou il résumé l&amp;#8217;année qu&amp;#8217;on vient de passer du point de vue de l&amp;#8217;&lt;span class="caps"&gt;AI&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="weeknotes"></category></entry><entry><title>Using DISTINCT in Parent-Child Relationships</title><link href="https://blog.notmyidea.org/using-distinct-in-parent-child-relationships.html" rel="alternate"></link><published>2023-10-18T00:00:00+02:00</published><updated>2023-10-18T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-10-18:/using-distinct-in-parent-child-relationships.html</id><summary type="html">&lt;p&gt;Let&amp;#8217;s say you have a model defined like this, with a Parent and a Child&amp;nbsp;table:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Parent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Base&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="n"&gt;__tablename__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;parent&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Mapped&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mapped_column&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;primary_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;childs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Mapped&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Child&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;relationship&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;back_populates&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;parent&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Child&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Base&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="n"&gt;__tablename__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;child&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Mapped&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mapped_column&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;primary_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;parent_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Mapped&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mapped_column …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</summary><content type="html">&lt;p&gt;Let&amp;#8217;s say you have a model defined like this, with a Parent and a Child&amp;nbsp;table:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Parent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Base&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="n"&gt;__tablename__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;parent&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Mapped&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mapped_column&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;primary_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;childs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Mapped&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Child&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;relationship&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;back_populates&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;parent&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Child&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Base&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="n"&gt;__tablename__&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;child&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Mapped&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mapped_column&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;primary_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;parent_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Mapped&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mapped_column&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ForeignKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;parent.id&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Mapped&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Parent&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;relationship&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;back_populates&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;children&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;born_at&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Mapped&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mapped_column&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I&amp;#8217;ve tried many ways, with complex subqueries and the like, before finding out &lt;a href="https://www.sqlitetutorial.net/sqlite-distinct/"&gt;the &lt;span class="caps"&gt;DISTINCT&lt;/span&gt; &lt;span class="caps"&gt;SQL&lt;/span&gt; statement&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, if you want to retrieve the parent with it&amp;#8217;s more recent child, you can do it like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Parent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Child&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Child&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;distinct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Parent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;order_by&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Parent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;desc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Child&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;born_at&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;all&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="code"></category><category term="SQL"></category><category term="SQLAlchemy"></category><category term="Python"></category></entry><entry><title>2023, Semaine 41</title><link href="https://blog.notmyidea.org/2023-semaine-41.html" rel="alternate"></link><published>2023-10-16T00:00:00+02:00</published><updated>2023-10-16T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-10-16:/2023-semaine-41.html</id><summary type="html">
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;Framasoft /&amp;nbsp;Argos&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;Troisième semaine de travail sur le projet. Tous les &lt;strong&gt;checks&lt;/strong&gt; sont maintenant implémentés, et la structure du projet est surement&amp;nbsp;définitive.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai continué de travailler en mode chantier, à structurer ce qui devait l&amp;#8217;être, et je suis plutôt satisfait du résultat …&lt;/dd&gt;&lt;/dl&gt;</summary><content type="html">
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;Framasoft /&amp;nbsp;Argos&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;Troisième semaine de travail sur le projet. Tous les &lt;strong&gt;checks&lt;/strong&gt; sont maintenant implémentés, et la structure du projet est surement&amp;nbsp;définitive.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai continué de travailler en mode chantier, à structurer ce qui devait l&amp;#8217;être, et je suis plutôt satisfait du résultat. Les choix faits en terme de modèle de données me semblent pertinents en avançant sur le&amp;nbsp;sujet.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai passé trop de temps sur un bout de code qui est vraiment secondaire. Je l&amp;#8217;ai vu mais je n&amp;#8217;ai pas réussi à faire les choses « à moitié », pour avancer sur ce qui me paraissait&amp;nbsp;important.&lt;/dd&gt;
&lt;dd&gt;Je me suis heurté aux limites d&amp;#8217;utiliser un micro-framework comme FastAPI, dans lequel il faut faire les choses soi même, et prendre des choix éclairés pour ce qui n&amp;#8217;est pas intégré, comme par exemple l&amp;#8217;intégration avec les bases de données. Je découvre tardivement l&amp;#8217;existence d&amp;#8217;une bibliothèque qui semble faire ce que je veux de manière optimale (&lt;a href="https://github.com/encode/databases"&gt;Databases&lt;/a&gt;).&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai pris du temps pour ajouter un minimum de tests unitaires sur la base de code, et ça m&amp;#8217;a permis de detecter des&amp;nbsp;bugs.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Umap&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;Je vais sans doute travailler avec David et Yohan sur &lt;a href="https://github.com/umap-project/umap"&gt;Umap&lt;/a&gt;, pour permettre l&amp;#8217;édition collaborative de cartes en temps&amp;nbsp;réel.&lt;/dd&gt;
&lt;dd&gt;On a eu une première discussion sur le projet, pour échanger sur notre manière d&amp;#8217;envisager ce temps de travail ensemble. Je le vois comme un projet de R&amp;amp;D appliqué, et il semble possible de prendre le temps de se poser les bonnes questions avant d&amp;#8217;avancer sur une implémentation concrète. C&amp;#8217;est un bon moyen pour moi de continuer l&amp;#8217;apprentissage entamé avec Kinto sur la synchronisation de&amp;nbsp;données. &lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="des-joies"&gt;Des&amp;nbsp;joies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Voir que j&amp;#8217;arrive à parler de ce qui s&amp;#8217;est passé pour moi durant ces derniers mois avec de plus en plus de recul et de clarté&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Observer les oiseaux et profiter de la faune et la flore sauvage de Bretagne&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Passer un week-end entre amis en tout simplicité à discuter, manger, jouer se ballader… Je suis content de reprendre pied sur des choses aussi simples&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Me permettre d&amp;#8217;être plus&amp;nbsp;décousu&lt;/li&gt;
&lt;li&gt;Travailler de manière un peu décousue, sur des plages de durées pas assez longues. Je sens que j&amp;#8217;ai quand même besoin d&amp;#8217;au moins 4 heures de suite pour être&amp;nbsp;efficace.&lt;/li&gt;
&lt;li&gt;M&amp;#8217;autoriser à faire une visio depuis mon&amp;nbsp;jardin&lt;/li&gt;
&lt;li&gt;Dormir dans un nouveau lieux de mon quotidien, et me sentir reposé au&amp;nbsp;réveil…&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="des-peines"&gt;Des&amp;nbsp;peines&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;… Et en même temps ça veut dire que je ne dors pas bien dans mon logement&amp;nbsp;actuel.&lt;/li&gt;
&lt;li&gt;Ne pas avoir repris le sport. Je me trouve des excuses pour procrastiner, et je le ressens dans mon&amp;nbsp;corps.&lt;/li&gt;
&lt;li&gt;Ne pas prendre assez le temps de lire. Trop d&amp;#8217;écrans le soir&amp;nbsp;:-)&lt;/li&gt;
&lt;li&gt;Sentir que je manque de clarté quand je m&amp;#8217;exprime. J&amp;#8217;aurai aimé mieux préparer ce temps. J&amp;#8217;en sors avec une impression de discussion&amp;nbsp;décousue. &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vu-lu-ecoute"&gt;Vu, lu,&amp;nbsp;écouté&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🎧 Fabrice Arfi qui parle de l&amp;#8217;affaire Sarkozy/Kadafi et des financements de sa campagne présidentielle, ainsi que des liens avec la dictature Libyenne, dans &lt;a href="https://podcast.crapouillou.net/#ostpolitik"&gt;la matinale d&amp;#8217;&lt;span class="caps"&gt;OST&lt;/span&gt;&lt;/a&gt;. Je n&amp;#8217;avais pas suivi du tout cette affaire, et j&amp;#8217;en reste bouche&amp;nbsp;bée.&lt;/li&gt;
&lt;li&gt;🎧 Je me suis mis du coup à écouter la matinale d&amp;#8217;&lt;span class="caps"&gt;OST&lt;/span&gt; en podcast (merci Jocelyn de mettre ça à dispo). Peut-être un bon moyen d&amp;#8217;avoir de l&amp;#8217;info avec un traitement médiatique correct. A suivre&amp;nbsp;:-)&lt;/li&gt;
&lt;li&gt;🎧 J&amp;#8217;ai écouté &lt;a href="https://soundcloud.com/user-645992042/georgie-ta-polyphonie-nous-3?in=user-645992042%2Fsets%2Fgeorgie-ta-polyphonie-nous-relie"&gt;Georgie Ta Polyphonie Nous Relie, &lt;span class="caps"&gt;EP1&lt;/span&gt; La Voix Libre&lt;/a&gt;, un épisode de podcast réalisé sur des stages de chants organisés par Tinatine. J&amp;#8217;aime le rapport qui y est posé à la voix et aux&amp;nbsp;vibrations.&lt;/li&gt;
&lt;li&gt;🍿 J&amp;#8217;ai regardé quelques épisodes de la deuxième saison de &lt;a href="https://fr.wikipedia.org/wiki/The_Good_Place"&gt;The Good Place&lt;/a&gt;. Le faire avec un peu de recul lui apporte un peu de fraicheur : j&amp;#8217;ai tendance à oublier le second degré si je regarde les épisodes trop proches les uns des&amp;nbsp;autres.&lt;/li&gt;
&lt;li&gt;🃏 J&amp;#8217;ai découvert deux jeux : &lt;a href="https://www.spacecowboys.fr/splendor"&gt;Splendor&lt;/a&gt; et &lt;a href="https://www.trictrac.net/jeu-de-societe/la-gloire-de-rome"&gt;La Gloire de Rome&lt;/a&gt;. Clairement pas les meilleurs en termes d&amp;#8217;éthique (les deux sont très colonialistes et patriarcaux), mais j&amp;#8217;ai beaucoup aimé découvrir des dynamiques de jeux. Notamment avec La Gloire de Rome qui mets en avant la recherche de&amp;nbsp;combos.&lt;/li&gt;
&lt;li&gt;📖 J&amp;#8217;ai continué &lt;a href="https://editions-b42.com/produit/le-conflit-nest-pas-une-agression/"&gt;Le conflit n&amp;#8217;est pas une agression&lt;/a&gt; de Sarah&amp;nbsp;Schulmann.&lt;/li&gt;
&lt;/ul&gt;</content><category term="weeknotes"></category></entry><entry><title>Convert string to duration</title><link href="https://blog.notmyidea.org/convert-string-to-duration.html" rel="alternate"></link><published>2023-10-11T00:00:00+02:00</published><updated>2023-10-11T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-10-11:/convert-string-to-duration.html</id><summary type="html">&lt;p&gt;I found myself wanting to convert a string to a duration (int), for some&amp;nbsp;configuration.&lt;/p&gt;
&lt;p&gt;Something you can call like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;string_to_duration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;1d&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;days&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;string_to_duration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;1d&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;string_to_duration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;3m&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;string_to_duration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;3m&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;minutes&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The code&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Literal&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;string_to_duration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Literal&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;days …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</summary><content type="html">&lt;p&gt;I found myself wanting to convert a string to a duration (int), for some&amp;nbsp;configuration.&lt;/p&gt;
&lt;p&gt;Something you can call like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;string_to_duration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;1d&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;days&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;string_to_duration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;1d&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;string_to_duration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;3m&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;string_to_duration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;3m&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;minutes&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The code&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;typing&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Literal&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;string_to_duration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Literal&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;days&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;minutes&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]):&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;Convert a string to a number of hours, days or minutes&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isdigit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt;
&lt;span class="c1"&gt;# It&amp;#39;s not possible to convert from a smaller unit to a greater one:&lt;/span&gt;
&lt;span class="c1"&gt;# - hours and minutes cannot be converted to days&lt;/span&gt;
&lt;span class="c1"&gt;# - minutes cannot be converted to hours&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;days&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;h&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;m&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;mo&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)))&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;m&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;mo&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="n"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="s2"&gt;&amp;quot;Durations cannot be converted from a smaller to a greater unit. &amp;quot;&lt;/span&gt;
&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;(trying to convert &amp;#39;&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;#39; to &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;)&amp;quot;&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Consider we&amp;#39;re converting to minutes, do the eventual multiplication at the end.&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;h&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;d&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;w&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;mo&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="c1"&gt;# considers 30d in a month&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;y&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;365&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;m&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="ne"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Invalid duration value&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;hours&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;days&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;num&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="code"></category><category term="python"></category><category term="conversion"></category></entry><entry><title>2023, Semaine 40</title><link href="https://blog.notmyidea.org/2023-semaine-40.html" rel="alternate"></link><published>2023-10-08T00:00:00+02:00</published><updated>2023-10-08T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-10-08:/2023-semaine-40.html</id><summary type="html">
&lt;p&gt;Je me suis réservé les matins pour travailler, et je suis content du rythme que ça à donné à ma semaine. C&amp;#8217;était aussi le retour des pomodoros&amp;nbsp;!&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;Framasoft /&amp;nbsp;Argos&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;J&amp;#8217;ai une première version quasiment fonctionnelle, il reste maintenant à transformer l&amp;#8217;essai. J …&lt;/dd&gt;&lt;/dl&gt;</summary><content type="html">
&lt;p&gt;Je me suis réservé les matins pour travailler, et je suis content du rythme que ça à donné à ma semaine. C&amp;#8217;était aussi le retour des pomodoros&amp;nbsp;!&lt;/p&gt;
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;Framasoft /&amp;nbsp;Argos&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;J&amp;#8217;ai une première version quasiment fonctionnelle, il reste maintenant à transformer l&amp;#8217;essai. J&amp;#8217;ai pris le parti d&amp;#8217;implémenter les choses au plus direct et de laisser des commentaires sur les choses qui seront à modifier plus loin dans le&amp;nbsp;processus.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai repensé encore une fois le modèle de données pour arriver à quelque chose qui me semble plus simple et&amp;nbsp;pratique.&lt;/dd&gt;
&lt;dd&gt;La première version de l&amp;#8217;&lt;span class="caps"&gt;API&lt;/span&gt; est prête, et les workers peuvent la consommer, j&amp;#8217;ai commencé à coder les premiers &lt;em&gt;checks&lt;/em&gt;. J&amp;#8217;ai un peu galéré avec Pydantic parce que je ne connais pas encore très bien l&amp;#8217;outil, j&amp;#8217;espère que ce sont des efforts qui vont payer sur le long&amp;nbsp;terme.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Le groupe, le&amp;nbsp;jeu&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;Troisième journée de travail avec Sam sur notre projet de jeu vidéo textuel. C&amp;#8217;était toujours aussi plaisant de travailler&amp;nbsp;ensemble.&lt;/dd&gt;
&lt;dd&gt;On a mis en place des outils pour faciliter la génération des textes. Malheureusement, les modèles de données en local qu&amp;#8217;on a pu essayer n&amp;#8217;étaient pas au niveau de ce qu&amp;#8217;on arrive à sortir avec &lt;span class="caps"&gt;GPT4&lt;/span&gt;.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai commencé l&amp;#8217;interface web en utilisant Elm et c&amp;#8217;est toujours aussi&amp;nbsp;plaisant.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="des-joies"&gt;Des&amp;nbsp;joies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Profiter du soleil le temps d&amp;#8217;une conversation téléphonique avec une amie. Aimer prendre le temps de se&amp;nbsp;parler.&lt;/li&gt;
&lt;li&gt;Sentir que je suis moins exposé au stress de ces dernières années, ça me fait vraiment du bien de me dire qu&amp;#8217;un autre quotidien est&amp;nbsp;possible.&lt;/li&gt;
&lt;li&gt;Prévoir un voyage de fin d&amp;#8217;année à l&amp;#8217;avance. J&amp;#8217;étais stressé de ne pas réussir à trouver les billets que je voulais, et le faire à l&amp;#8217;avance me&amp;nbsp;décharge.&lt;/li&gt;
&lt;li&gt;Recevoir un appel où on me propose de travailler avec des gens que j&amp;#8217;affectionne, sur un projet qui me plait, à un rythme raisonnable. Je vous en dis plus bientôt, mais ça fait au moins du bien à mon&amp;nbsp;égo.&lt;/li&gt;
&lt;li&gt;Voir que temporiser et discuter permet de résoudre des conflit en cours au sein de mon collectif de vie. En créant de l&amp;#8217;empathie les un•e•s pour les autres, et sans trop arrondir les&amp;nbsp;angles.&lt;/li&gt;
&lt;li&gt;Découvrir que mon espace de travail à prévu un concert sur le temps du midi, en&amp;nbsp;profiter.&lt;/li&gt;
&lt;li&gt;M&amp;#8217;autoriser à partir dans des situations qui générent de l&amp;#8217;agacement chez moi, sans sentir de&amp;nbsp;culpabilité.&lt;/li&gt;
&lt;li&gt;Voir qu&amp;#8217;il est possible de se dire les choses sans que ce soit mal pris dans le cadre d&amp;#8217;un engagement bénévole&amp;nbsp;logiciel.&lt;/li&gt;
&lt;li&gt;Demander des clarifications sur des propositions qui em sont faites pour pouvoir mieux&amp;nbsp;décider.&lt;/li&gt;
&lt;li&gt;Imprimer mon premier prototype de coque de protection pour mon téléphone, au fablab du&amp;nbsp;coin.&lt;/li&gt;
&lt;li&gt;Expliquer le fonctionnement d&amp;#8217;outils techniques à une personne intéressée, sentir qu&amp;#8217;elle s&amp;#8217;en&amp;nbsp;empare.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="des-peines"&gt;Des&amp;nbsp;peines&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Voir plusieurs personnes qui forcent le passage durant un concert. J&amp;#8217;aimerai réussir à passer outre, ou à&amp;nbsp;réagir.&lt;/li&gt;
&lt;li&gt;Sentir que certaines plaies récentes se réactivent en présence d&amp;#8217;une personne pour qui j&amp;#8217;ai du ressentiment. Ça prendra le temps qu&amp;#8217;il&amp;nbsp;faut.&lt;/li&gt;
&lt;li&gt;Être frustré par une décision alors qu&amp;#8217;elle ne me concerne pas&amp;nbsp;vraiment.&lt;/li&gt;
&lt;li&gt;Me sentir pris au piège d&amp;#8217;une conversation qui ne m&amp;#8217;intéresse pas vraiment. Ne pas réussir à changer le&amp;nbsp;sujet.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vu-lu-ecoute"&gt;Vu, lu,&amp;nbsp;écouté&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;📖 J&amp;#8217;ai continué &lt;a href="https://editions-b42.com/produit/le-conflit-nest-pas-une-agression/"&gt;Le conflit n&amp;#8217;est pas une agression&lt;/a&gt; de Sarah Schulmann. J&amp;#8217;y ai trouvé des billes concrètes, et une mise en question du mécanisme de blocage de la conversation qui peut avoir lieu dans certains conflits (et auquel j&amp;#8217;ai pu avoir recours par le passé). J&amp;#8217;aime globalement beaucoup cette&amp;nbsp;lecture.&lt;/li&gt;
&lt;li&gt;📖 Bientôt terminé &lt;a href="https://grand-monde.fr/"&gt;Quelqu&amp;#8217;un à qui manquer&lt;/a&gt; de Yohan Boniface. J&amp;#8217;aime beaucoup me retrouver dans la peau d&amp;#8217;un enfant dans un pays que je ne connais pas. Toutes ces expressions et la manière de raconter avec des mots enfantins, c&amp;#8217;est assez&amp;nbsp;magique.&lt;/li&gt;
&lt;li&gt;📖 J&amp;#8217;ai récupéré le dernier tome de &lt;a href="https://lavilaine-edition.com/"&gt;La Vilaine&lt;/a&gt;, et je l&amp;#8217;ai dévoré. Je l&amp;#8217;ai trouvé encore plus réussi que les premiers numéros. C&amp;#8217;est très chouette de voir des intrigues se dérouler dans sa ville, et d&amp;#8217;y trouver des moments&amp;nbsp;partagés.&lt;/li&gt;
&lt;li&gt;🎧 &lt;a href="https://www.binge.audio/podcast/les-couilles-sur-la-table/05-sortir-de-la-justice-punitive"&gt;Sortir de la justice punitive (Les couilles sur la table)&lt;/a&gt; avec Elsa Deck Marsault. Ça vient questionner notre gestion du conflit dans les sphères « de gauche » et militantes. J&amp;#8217;aime beaucoup l&amp;#8217;écho entre ce podcast et le livre de Sarah&amp;nbsp;Schulmann&lt;/li&gt;
&lt;li&gt;🕸️ &lt;a href="https://lessoulevementsdelaterre.org/blog/affaire-lafarge.les-moyens-denquete-utilises-et-quelques-attentions-a-en-tirer"&gt;Un article qui explique les moyens déployés pour faire de la surveillance dans l&amp;#8217;affaire Lafarge&lt;/a&gt;. Beaucoup de choses intéressantes dans l&amp;#8217;article. En fait c&amp;#8217;est aussi effrayant que passionnant. Je ne pensais pas que les relevés téléphoniques pouvaient être utilisés aussi facilement par&amp;nbsp;exemple.&lt;/li&gt;
&lt;li&gt;🪗 Un concert de &lt;a href="https://fr.wikipedia.org/wiki/La_Yegros"&gt;La Yegros&lt;/a&gt;, et de &lt;a href="https://www.youtube.com/watch?v=Zap5hzpjp4A"&gt;Sidi Watcho&lt;/a&gt; au grand&amp;nbsp;soufflet.&lt;/li&gt;
&lt;li&gt;🪗 Un concert de &lt;a href="https://www.compagnie-aziade.fr/victoria-delaroziere/"&gt;Victoria Delarozière&lt;/a&gt; à la&amp;nbsp;Canopée&lt;/li&gt;
&lt;li&gt;🍿 J&amp;#8217;ai continué et bientôt terminé &lt;a href="https://www.france.tv/france-2/abysses/"&gt;Abysses&lt;/a&gt;. J&amp;#8217;aime bien le pitch de départ, mais les choses s&amp;#8217;essouflent un peu. C&amp;#8217;est dommage sur 8&amp;nbsp;épisodes.&lt;/li&gt;
&lt;li&gt;🍿 Vu &lt;a href="https://fr.wikipedia.org/wiki/La_Favorite_(film)"&gt;La favorite&lt;/a&gt;, avec Olivia Coleman. C&amp;#8217;était… difficile de voir toute cette manipulation à l&amp;#8217;œuvre, et en même temps intéressant de le voir&amp;nbsp;documenté.&lt;/li&gt;
&lt;/ul&gt;</content><category term="weeknotes"></category></entry><entry><title>2023, Semaine 39</title><link href="https://blog.notmyidea.org/2023-semaine-39.html" rel="alternate"></link><published>2023-09-29T00:00:00+02:00</published><updated>2023-09-29T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-09-29:/2023-semaine-39.html</id><summary type="html">
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Framasoft&lt;/dt&gt;
&lt;dd&gt;J&amp;#8217;ai commencé à travailler sur l&amp;#8217;outil de supervision, en partant bille en tête sur une solution qui s&amp;#8217;est avérée ne pas être la plus simple à mettre en place. J&amp;#8217;ai passé pas mal de temps à questionner mes choix techniques …&lt;/dd&gt;&lt;/dl&gt;</summary><content type="html">
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Framasoft&lt;/dt&gt;
&lt;dd&gt;J&amp;#8217;ai commencé à travailler sur l&amp;#8217;outil de supervision, en partant bille en tête sur une solution qui s&amp;#8217;est avérée ne pas être la plus simple à mettre en place. J&amp;#8217;ai passé pas mal de temps à questionner mes choix techniques, pour finalement en changer et me questionner sur la partie &lt;strong&gt;metier&lt;/strong&gt;, ce qui me semblait plus intéressant. A partir du moment où j&amp;#8217;ai arrêté d&amp;#8217;essayer d&amp;#8217;appliquer une solution « déjà faite » j&amp;#8217;ai pu me questionner sur le modèle de données et aller de l&amp;#8217;avant. Étrangement c&amp;#8217;est quand j&amp;#8217;ai produit le moins de code que j&amp;#8217;ai trouvé que j&amp;#8217;étais le plus&amp;nbsp;productif.&lt;/dd&gt;
&lt;dt&gt;Notmyidea&lt;/dt&gt;
&lt;dd&gt;Je n&amp;#8217;ai pas trop avancé sur la partie structure juridique, mais les choses décantent et me paraissent plus clair que la semaine passée. Je penche en ce moment pour une solution en auto-entreprise pour les quelques premières missions, quitte à remettre en question ce choix par la suite si je trouve de nouveaux·elles client·es. Je me laisse le temps pour&amp;nbsp;décider.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai &lt;del&gt;procrastiné&lt;/del&gt; passé beaucoup plus de temps que prévu sur la mise en place d&amp;#8217;outils utiles pour moi, et à peaufiné mon site web. J&amp;#8217;ai maintenant un bouncer &lt;span class="caps"&gt;ZNC&lt;/span&gt; et un &lt;span class="caps"&gt;VPN&lt;/span&gt; fait maison qui me permettent de travailler dans de meilleures conditions. Je suis à la fois content d&amp;#8217;avoir pris le temps de mettre en place des outils, et en même temps j&amp;#8217;ai une impression de&amp;nbsp;procrastination.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="des-joies"&gt;Des&amp;nbsp;joies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Avoir pris le temps d&amp;#8217;aller « à la ville » pour passer du temps avec des amis et&amp;nbsp;sociabiliser.&lt;/li&gt;
&lt;li&gt;M&amp;#8217;écouter et décider de dormir sur place pour travailler aussi sur Rennes le&amp;nbsp;lendemain.&lt;/li&gt;
&lt;li&gt;Aller à l&amp;#8217;espace de coworkig à côté de chez&amp;nbsp;moi.&lt;/li&gt;
&lt;li&gt;Prendre le temps de faire des choses peu importantes entassées dans ma todolist depuis trop&amp;nbsp;longtemps.&lt;/li&gt;
&lt;li&gt;Récolter des fruits de discussions passées lors d&amp;#8217;une soirée. Vive les todo-list&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;Voir qu&amp;#8217;une demande de modifications que j&amp;#8217;ai faite soit appréciée et intégrée&amp;nbsp;rapidement.&lt;/li&gt;
&lt;li&gt;Dépanner le serveur de &lt;a href="https://github.com/almet/copanier"&gt;copanier&lt;/a&gt;, trouver le problème rapidement et le régler&amp;nbsp;facilement.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="des-peines"&gt;Des&amp;nbsp;peines&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Je suis retombé malade en fin de semaine, et donc bien fatigué. Ca impacte mon moral et ma capacité de&amp;nbsp;concentration.&lt;/li&gt;
&lt;li&gt;Des discussions compliquées dans mon collectif de vie. Je suis content de poser des limites, mais je sens que je cherche toujours la validation des&amp;nbsp;autres.&lt;/li&gt;
&lt;li&gt;Sentir que ma posture dans les conversations est plus ferme que par le passé. Je suis à la fois content de ne pas &lt;strong&gt;toujours&lt;/strong&gt; me remettre en question, mais j&amp;#8217;aimerai réussir à faire preuve de plus d&amp;#8217;ouverture. Il faut trouver&amp;nbsp;l&amp;#8217;équilibre &lt;/li&gt;
&lt;li&gt;Triste de voir des conflits escalader alors que ça pourrait être&amp;nbsp;autrement.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vu-lu-ecoute"&gt;Vu, lu,&amp;nbsp;écouté&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;🎮 J&amp;#8217;ai continué &lt;a href="https://fr.wikipedia.org/wiki/Baba_Is_You"&gt;Baba is you&lt;/a&gt; avec Arthur. C&amp;#8217;était sympa de se faire les reflexions à deux&amp;nbsp;cerveaux.&lt;/li&gt;
&lt;li&gt;▶︎ &lt;a href="https://www.youtube.com/watch?app=desktop&amp;amp;v=dVzfNZN9NKI&amp;amp;list=PL8uoeex94UhFcwvAfWHybD7SfNgIUBRo-&amp;amp;index=128"&gt;Vu une présentation sur DuckDB&lt;/a&gt;, une base de données locale et minimaliste qui semble adaptée pour de la visualisation de données à grande&amp;nbsp;échelle.&lt;/li&gt;
&lt;/ul&gt;</content><category term="weeknotes"></category></entry><entry><title>llm command-line tips</title><link href="https://blog.notmyidea.org/llm-command-line-tips.html" rel="alternate"></link><published>2023-09-27T00:00:00+02:00</published><updated>2023-09-27T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-09-27:/llm-command-line-tips.html</id><summary type="html">&lt;p&gt;I&amp;#8217;m using &lt;a href="https://llm.datasette.io"&gt;llm&lt;/a&gt; more and more, and today I had to find back prompts I used in the past. Here is a command I&amp;#8217;ve been using, which allows me to filter the results based on what I want. It leverages &lt;a href="https://sqlutils.datasette.io"&gt;sql-utils&lt;/a&gt;, a cli tool which is able to …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I&amp;#8217;m using &lt;a href="https://llm.datasette.io"&gt;llm&lt;/a&gt; more and more, and today I had to find back prompts I used in the past. Here is a command I&amp;#8217;ve been using, which allows me to filter the results based on what I want. It leverages &lt;a href="https://sqlutils.datasette.io"&gt;sql-utils&lt;/a&gt;, a cli tool which is able to talk to a &lt;span class="caps"&gt;SQLITE&lt;/span&gt; database and answer in json, and &lt;a href="https://github.com/jqlang/jq"&gt;jq&lt;/a&gt; a command-line tool capable of doing requests for&amp;nbsp;json.&lt;/p&gt;
&lt;p&gt;All in all, it&amp;#8217;s pretty satisfying to use. I finally got a simple way to query databases! I&amp;#8217;m also using &lt;a href="https://github.com/charmbracelet/glow"&gt;glow&lt;/a&gt;, which is capable of transforming markdown into a better version on the&amp;nbsp;terminal.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sqlite-utils&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;llm&lt;span class="w"&gt; &lt;/span&gt;logs&lt;span class="w"&gt; &lt;/span&gt;path&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;SELECT * FROM responses WHERE prompt LIKE &amp;#39;%search%&amp;#39;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;jq&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.[].response&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-r&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;glow
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Which got me a colored response&amp;nbsp;:-)&lt;/p&gt;</content><category term="code"></category><category term="python"></category><category term="llm"></category><category term="bash"></category><category term="sqlite"></category></entry><entry><title>Setting up a IRC Bouncer with ZNC</title><link href="https://blog.notmyidea.org/setting-up-a-irc-bouncer-with-znc.html" rel="alternate"></link><published>2023-09-27T00:00:00+02:00</published><updated>2023-09-27T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-09-27:/setting-up-a-irc-bouncer-with-znc.html</id><summary type="html">&lt;p&gt;It&amp;#8217;s been a while since I&amp;#8217;ve used &lt;span class="caps"&gt;IRC&lt;/span&gt;, but I needed to connect to it today to discuss around &lt;a href="https://docs.peewee-orm.com"&gt;Peewee&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The main issue with &lt;span class="caps"&gt;IRC&lt;/span&gt; is that you need to be connected to see the answer, and to get the context of the conversation. Unless&amp;#8230; you set up …&lt;/p&gt;</summary><content type="html">&lt;p&gt;It&amp;#8217;s been a while since I&amp;#8217;ve used &lt;span class="caps"&gt;IRC&lt;/span&gt;, but I needed to connect to it today to discuss around &lt;a href="https://docs.peewee-orm.com"&gt;Peewee&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The main issue with &lt;span class="caps"&gt;IRC&lt;/span&gt; is that you need to be connected to see the answer, and to get the context of the conversation. Unless&amp;#8230; you set up a&amp;nbsp;bouncer.&lt;/p&gt;
&lt;p&gt;The bouncer is named &lt;a href="https://znc.in"&gt;&lt;span class="caps"&gt;ZNC&lt;/span&gt;&lt;/a&gt;, and the &lt;span class="caps"&gt;IRC&lt;/span&gt; client I use is &lt;a href="https://weechat.org"&gt;Weechat&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So, that&amp;#8217;s what I&amp;nbsp;did:&lt;/p&gt;
&lt;h2 id="installation-of-znc"&gt;Installation of &lt;span class="caps"&gt;ZNC&lt;/span&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;znc
sudo&lt;span class="w"&gt; &lt;/span&gt;-u&lt;span class="w"&gt; &lt;/span&gt;_znc&lt;span class="w"&gt; &lt;/span&gt;/usr/bin/znc&lt;span class="w"&gt; &lt;/span&gt;--datadir&lt;span class="o"&gt;=&lt;/span&gt;/var/lib/znc&lt;span class="w"&gt; &lt;/span&gt;--makeconf
sudo&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;znc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can answer the questions asked by &lt;code&gt;--makeconf&lt;/code&gt;, it will generate you a configuration file like this (stored in &lt;code&gt;/var/lib/znc/configurations/znc.conf&lt;/code&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;AnonIPLimit&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;10
AuthOnlyViaModule&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;false
ConfigWriteDelay&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;0
ConnectDelay&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;5
HideVersion&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;false
LoadModule&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;webadmin
MaxBufferSize&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;500
ProtectWebSessions&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
SSLCertFile&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;/var/lib/znc/znc.pem
SSLDHParamFile&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;/var/lib/znc/znc.pem
SSLKeyFile&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;/var/lib/znc/znc.pem
ServerThrottle&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;30
Version&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;1.8.2
&lt;span class="nt"&gt;&amp;lt;Listener&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;listener0&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;AllowIRC&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
&lt;span class="w"&gt; &lt;/span&gt;AllowWeb&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
&lt;span class="w"&gt; &lt;/span&gt;IPv4&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
&lt;span class="w"&gt; &lt;/span&gt;IPv6&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
&lt;span class="w"&gt; &lt;/span&gt;Port&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;6697
&lt;span class="w"&gt; &lt;/span&gt;SSL&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
&lt;span class="w"&gt; &lt;/span&gt;URIPrefix&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;/
&lt;span class="nt"&gt;&amp;lt;/Listener&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;User&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;alexis&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;Admin&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
&lt;span class="w"&gt; &lt;/span&gt;Allow&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;*
&lt;span class="w"&gt; &lt;/span&gt;AltNick&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;alexis_
&lt;span class="w"&gt; &lt;/span&gt;AppendTimestamp&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;false
&lt;span class="w"&gt; &lt;/span&gt;AuthOnlyViaModule&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;false
&lt;span class="w"&gt; &lt;/span&gt;AutoClearChanBuffer&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
&lt;span class="w"&gt; &lt;/span&gt;AutoClearQueryBuffer&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
&lt;span class="w"&gt; &lt;/span&gt;BindHost&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;skate.notmyidea.org
&lt;span class="w"&gt; &lt;/span&gt;ChanBufferSize&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;50
&lt;span class="w"&gt; &lt;/span&gt;DenyLoadMod&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;false
&lt;span class="w"&gt; &lt;/span&gt;DenySetBindHost&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;false
&lt;span class="w"&gt; &lt;/span&gt;Ident&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;alexis
&lt;span class="w"&gt; &lt;/span&gt;JoinTries&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;10
&lt;span class="w"&gt; &lt;/span&gt;LoadModule&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;chansaver
&lt;span class="w"&gt; &lt;/span&gt;LoadModule&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;controlpanel
&lt;span class="w"&gt; &lt;/span&gt;MaxJoins&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;0
&lt;span class="w"&gt; &lt;/span&gt;MaxNetworks&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;1
&lt;span class="w"&gt; &lt;/span&gt;MaxQueryBuffers&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;50
&lt;span class="w"&gt; &lt;/span&gt;MultiClients&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
&lt;span class="w"&gt; &lt;/span&gt;Nick&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;alexis
&lt;span class="w"&gt; &lt;/span&gt;NoTrafficTimeout&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;180
&lt;span class="w"&gt; &lt;/span&gt;PrependTimestamp&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
&lt;span class="w"&gt; &lt;/span&gt;QueryBufferSize&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;50
&lt;span class="w"&gt; &lt;/span&gt;QuitMsg&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;See&lt;span class="w"&gt; &lt;/span&gt;you&lt;span class="w"&gt; &lt;/span&gt;:)
&lt;span class="w"&gt; &lt;/span&gt;RealName&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;N/A
&lt;span class="w"&gt; &lt;/span&gt;StatusPrefix&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;*
&lt;span class="w"&gt; &lt;/span&gt;TimestampFormat&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;[%H:%M:%S]
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;Network&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;liberachat&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;FloodBurst&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;9
&lt;span class="w"&gt; &lt;/span&gt;FloodRate&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;2.00
&lt;span class="w"&gt; &lt;/span&gt;IRCConnectEnabled&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
&lt;span class="w"&gt; &lt;/span&gt;JoinDelay&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;0
&lt;span class="w"&gt; &lt;/span&gt;LoadModule&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;simple_away
&lt;span class="w"&gt; &lt;/span&gt;RealName&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;N/A
&lt;span class="w"&gt; &lt;/span&gt;Server&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;irc.libera.chat&lt;span class="w"&gt; &lt;/span&gt;+6697
&lt;span class="w"&gt; &lt;/span&gt;TrustAllCerts&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;false
&lt;span class="w"&gt; &lt;/span&gt;TrustPKI&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;true
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;Chan&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;#peewee&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/Chan&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/Network&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;Pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;password&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;Hash&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;REDACTED
&lt;span class="w"&gt; &lt;/span&gt;Method&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;SHA256
&lt;span class="w"&gt; &lt;/span&gt;Salt&lt;span class="w"&gt; &lt;/span&gt;=&lt;span class="w"&gt; &lt;/span&gt;REDACTED
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/Pass&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/User&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can access a web interface on the exposed port. I had to make a change in my Firefox configuration, in &lt;code&gt;about:config&lt;/code&gt;, set &lt;code&gt;network.security.ports.banned.override&lt;/code&gt; to &lt;code&gt;6697&lt;/code&gt;, otherwise, Firefox prevents you from connecting to these ports (which might actually be a good&amp;nbsp;idea).&lt;/p&gt;
&lt;h2 id="weechat-configuration"&gt;Weechat&amp;nbsp;configuration&lt;/h2&gt;
&lt;p&gt;Now, to use this in weechat, here are some useful commands. First, get the fingerprint of the &lt;span class="caps"&gt;SSL&lt;/span&gt; certificate generated on your&amp;nbsp;server:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;cat&lt;span class="w"&gt; &lt;/span&gt;/var/log/znc/znc.pem&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;openssl&lt;span class="w"&gt; &lt;/span&gt;x509&lt;span class="w"&gt; &lt;/span&gt;-sha512&lt;span class="w"&gt; &lt;/span&gt;-fingerprint&lt;span class="w"&gt; &lt;/span&gt;-noout&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;tr&lt;span class="w"&gt; &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;:&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;tr&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;A-Z&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;a-z&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;cut&lt;span class="w"&gt; &lt;/span&gt;-d&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-f&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then, in weechat&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;/server add znc host/6697 -tls -username=&amp;lt;username&amp;gt; -password=&amp;lt;yourpass&amp;gt; -autoconnect
/set irc.server.znc.tls_fingerprint &amp;lt;fingerprint-goes-here&amp;gt;
/connect znc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And you should be all&amp;nbsp;set!&lt;/p&gt;
&lt;p&gt;Resources : &lt;a href="https://wiki.znc.in/Weechat"&gt;The &lt;span class="caps"&gt;ZNC&lt;/span&gt; Wiki on Weechat&lt;/a&gt; and the &lt;a href="https://wiki.debian.org/ZNC"&gt;Debian page on &lt;span class="caps"&gt;ZNC&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</content><category term="code"></category><category term="ZNC"></category><category term="Weechat"></category><category term="IRC"></category></entry><entry><title>2023, Semaine 38</title><link href="https://blog.notmyidea.org/2023-semaine-38.html" rel="alternate"></link><published>2023-09-24T00:00:00+02:00</published><updated>2023-09-24T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-09-24:/2023-semaine-38.html</id><summary type="html">
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Framasoft&lt;/dt&gt;
&lt;dd&gt;J&amp;#8217;ai eu confirmation que j&amp;#8217;allais pouvoir commencer à travailler sur une mission pour &lt;a href="https://framasoft.org"&gt;Framasoft&lt;/a&gt;, pour faire un outil qui aide à la supervision de leurs services Web. C&amp;#8217;est la première fois que je vais travailler en tant qu&amp;#8217;indépendant et je …&lt;/dd&gt;&lt;/dl&gt;</summary><content type="html">
&lt;h2 id="ce-qui-sest-passe"&gt;Ce qui s&amp;#8217;est&amp;nbsp;passé&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Framasoft&lt;/dt&gt;
&lt;dd&gt;J&amp;#8217;ai eu confirmation que j&amp;#8217;allais pouvoir commencer à travailler sur une mission pour &lt;a href="https://framasoft.org"&gt;Framasoft&lt;/a&gt;, pour faire un outil qui aide à la supervision de leurs services Web. C&amp;#8217;est la première fois que je vais travailler en tant qu&amp;#8217;indépendant et je trouve ça assez&amp;nbsp;exitant.&lt;/dd&gt;
&lt;dt&gt;Le Groupe, le&amp;nbsp;jeu&lt;/dt&gt;
&lt;dd&gt;On s&amp;#8217;est vu avec &lt;a href="https://www.samuelgenin.fr/"&gt;Sam&lt;/a&gt; pour commencer à bosser sur une idée de petit jeu textuel. Une session de travail sur tableau blanc le matin pour mettre nos idées au clair, suivie d&amp;#8217;une après-midi à travailler sur des « prompts » pour des &lt;a href="https://fr.wikipedia.org/wiki/Grand_mod%C3%A8le_de_langage"&gt;&lt;span class="caps"&gt;LLM&lt;/span&gt;&lt;/a&gt;. C&amp;#8217;était vraiment un bon moment, et on a bien avancé. J&amp;#8217;ai aussi passé un peu de temps en fin de semaine à mettre en place un projet en Elm avec Vite. Je suis content que ce projet me fasse réutiliser ces&amp;nbsp;technos.&lt;/dd&gt;
&lt;dt&gt;Notmyidea&lt;/dt&gt;
&lt;dd&gt;Il va me falloir une structure juridique pour pouvoir émettre factures et devis. J&amp;#8217;ai participé à une présentation de la &lt;span class="caps"&gt;CAE&lt;/span&gt; &lt;a href="https://astrolabe.coop"&gt;Astrolabe&lt;/a&gt;, qui me permette de mieux comprendre le fonctionnement de ce type de structures. Je ne suis pas encore décidé sur le type de structure que je vais&amp;nbsp;adopter. &lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai aussi passé du temps à remettre à jour mon site web&amp;nbsp;perso.&lt;/dd&gt;
&lt;dd&gt;J&amp;#8217;ai migré mes mails vers &lt;a href="https://nubo.coop"&gt;Nubo&lt;/a&gt;, un hébergeur&amp;nbsp;coopératif.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="des-joies"&gt;Des&amp;nbsp;joies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;J&amp;#8217;ai pris le temps de faire plusieurs siestes au soleil. J&amp;#8217;aime avoir la possibilité d&amp;#8217;écouter mon&amp;nbsp;rythme.&lt;/li&gt;
&lt;li&gt;Choisir de ne pas aller à l&amp;#8217;&lt;span class="caps"&gt;AG&lt;/span&gt; d&amp;#8217;une association dont l&amp;#8217;objet me semble intéressant, mais pour laquelle je n&amp;#8217;ai pas beaucoup de temps à donner. Je suis content de faire ce&amp;nbsp;choix.&lt;/li&gt;
&lt;li&gt;Dépanner des ami·es sans que cela ne me coûte d&amp;#8217;énergie. Je suis content de retrouver une certaine quiétude au&amp;nbsp;quotidien.&lt;/li&gt;
&lt;li&gt;Avoir au téléphone de vieilles connaissances et sentir que la relation est toujours&amp;nbsp;intéressante.&lt;/li&gt;
&lt;li&gt;Aller me poser à la bibliothèque pour&amp;nbsp;travailler.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="des-peines"&gt;Des&amp;nbsp;peines&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Devoir annuler plusieurs rendez-vous qui me tenaient à cœur à cause de la&amp;nbsp;maladie.&lt;/li&gt;
&lt;li&gt;Je me suis couché trop tard, et mon rythme est&amp;nbsp;décallé.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vu-lu-ecoute"&gt;Vu, lu,&amp;nbsp;écouté&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;▶︎ &lt;a href="https://www.youtube.com/watch?v=kMb4TmhTlbk&amp;amp;list=PL8uoeex94UhFcwvAfWHybD7SfNgIUBRo-&amp;amp;index=135"&gt;Une présentation&lt;/a&gt; de ce qu&amp;#8217;il est possible de faire avec les &lt;span class="caps"&gt;LLM&lt;/span&gt; et les dernèières avancées en machine learning dans le domaine de la musique. J&amp;#8217;ai trouvé ça&amp;nbsp;bluffant.&lt;/li&gt;
&lt;li&gt;📖 J&amp;#8217;ai terminé la lecture de « Eloge de l&amp;#8217;amitié » de Geoffroy de Lagasnerie. Beaucoup de choses intéressantes. J&amp;#8217;ai publié &lt;a href="https://notes.notmyidea.org/notes-litteraires/livres/geoffroy-de-lasganerie-eloge-de-l-amitie/"&gt;quelques notes de lecture ici&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;📖 Commencé « Le conflit n&amp;#8217;est pas une agression » de Sarah Schulmann. Je sens que ça va faire bouger certaines choses chez&amp;nbsp;moi.&lt;/li&gt;
&lt;li&gt;📖 Commencé « Quelqu&amp;#8217;un à qui manquer » de Yohan Boniface. J&amp;#8217;aime beaucoup l&amp;#8217;univers et le ton&amp;nbsp;jusqu&amp;#8217;ici.&lt;/li&gt;
&lt;li&gt;🎮 Commencé « Baba is you », un petit jeu vidéo de logique. Divertissant&amp;nbsp;:-)&lt;/li&gt;
&lt;li&gt;🕸️ Un super article qui explique &lt;a href="https://jzhao.xyz/posts/bft-json-crdt"&gt;comment fonctionnent les &lt;span class="caps"&gt;CRDT&lt;/span&gt; (Conflit-free Replicated Data Types)&lt;/a&gt;, de manière très&amp;nbsp;didactique.&lt;/li&gt;
&lt;/ul&gt;</content><category term="weeknotes"></category></entry><entry><title>How to run the vigogne model locally</title><link href="https://blog.notmyidea.org/how-to-run-the-vigogne-model-locally.html" rel="alternate"></link><published>2023-09-22T00:00:00+02:00</published><updated>2023-09-22T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-09-22:/how-to-run-the-vigogne-model-locally.html</id><summary type="html">
&lt;p&gt;&lt;a href="https://github.com/bofenghuang/vigogne"&gt;Vigogne&lt;/a&gt; is a &lt;span class="caps"&gt;LLM&lt;/span&gt; model based on &lt;span class="caps"&gt;LLAMA2&lt;/span&gt;, but trained with french data. As I&amp;#8217;m working mostly in french, it might be useful. The current models that I can get locally are in&amp;nbsp;english.&lt;/p&gt;
&lt;p&gt;The information I&amp;#8217;ve found online are scarse and not so easy to follow, so …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;&lt;a href="https://github.com/bofenghuang/vigogne"&gt;Vigogne&lt;/a&gt; is a &lt;span class="caps"&gt;LLM&lt;/span&gt; model based on &lt;span class="caps"&gt;LLAMA2&lt;/span&gt;, but trained with french data. As I&amp;#8217;m working mostly in french, it might be useful. The current models that I can get locally are in&amp;nbsp;english.&lt;/p&gt;
&lt;p&gt;The information I&amp;#8217;ve found online are scarse and not so easy to follow, so here is a step by step tutorial you can follow. I&amp;#8217;m using &lt;a href="https://pipenv.pypa.io/en/latest/"&gt;pipenv&lt;/a&gt; almost everywhere now, it&amp;#8217;s so easy&amp;nbsp;:-)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;llm&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-U&lt;span class="w"&gt; &lt;/span&gt;llm-llama-cpp
wget&lt;span class="w"&gt; &lt;/span&gt;https://huggingface.co/TheBloke/Vigogne-2-7B-Chat-GGUF/resolve/main/vigogne-2-7b-chat.Q4_K_M.gguf
llm&lt;span class="w"&gt; &lt;/span&gt;llama-cpp&lt;span class="w"&gt; &lt;/span&gt;add-model&lt;span class="w"&gt; &lt;/span&gt;vigogne-2-7b-chat.Q4_K_M.gguf&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;vigogne
llm&lt;span class="w"&gt; &lt;/span&gt;models&lt;span class="w"&gt; &lt;/span&gt;default&lt;span class="w"&gt; &lt;/span&gt;vigogne
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="code"></category><category term="llm"></category></entry><entry><title>Creating a simple command line to post snippets on Gitlab</title><link href="https://blog.notmyidea.org/creating-a-simple-command-line-to-post-snippets-on-gitlab.html" rel="alternate"></link><published>2023-09-18T00:00:00+02:00</published><updated>2023-09-18T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-09-18:/creating-a-simple-command-line-to-post-snippets-on-gitlab.html</id><summary type="html">
&lt;p&gt;I&amp;#8217;m trying to get away from Github, and one thing that I find useful is the &lt;a href="https://gist.github.com"&gt;gist&lt;/a&gt; utility they&amp;#8217;re providing. Seems that gitlab provides a similar&amp;nbsp;tool.&lt;/p&gt;
&lt;p&gt;You can use it using &lt;a href="https://python-gitlab.readthedocs.io/"&gt;python-gitlab&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;pipx&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;python-gitlab
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And then&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;gitlab&lt;span class="w"&gt; &lt;/span&gt;snippet&lt;span class="w"&gt; &lt;/span&gt;create&lt;span class="w"&gt; &lt;/span&gt;--title&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;youpi&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--file-name&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;snip.py&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--content&lt;span class="w"&gt; &lt;/span&gt;snip …&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</summary><content type="html">
&lt;p&gt;I&amp;#8217;m trying to get away from Github, and one thing that I find useful is the &lt;a href="https://gist.github.com"&gt;gist&lt;/a&gt; utility they&amp;#8217;re providing. Seems that gitlab provides a similar&amp;nbsp;tool.&lt;/p&gt;
&lt;p&gt;You can use it using &lt;a href="https://python-gitlab.readthedocs.io/"&gt;python-gitlab&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;pipx&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;python-gitlab
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And then&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;gitlab&lt;span class="w"&gt; &lt;/span&gt;snippet&lt;span class="w"&gt; &lt;/span&gt;create&lt;span class="w"&gt; &lt;/span&gt;--title&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;youpi&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--file-name&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;snip.py&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--content&lt;span class="w"&gt; &lt;/span&gt;snip.py&lt;span class="w"&gt; &lt;/span&gt;--visibility&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;public&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I now wanted a small bash script which will just get the name of the file and infer all the parameters. I asked &lt;span class="caps"&gt;GPT&lt;/span&gt;-4, and iterated on its&amp;nbsp;answer.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the resulting bash&amp;nbsp;script:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="ch"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-z&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Please provide a filename&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="nv"&gt;file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;base&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;basename&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$base&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;visibility&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;public&amp;quot;&lt;/span&gt;
&lt;span class="c1"&gt;# Use `cat` to fetch the content of the file&lt;/span&gt;
&lt;span class="nv"&gt;content&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$file&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;result&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;gitlab&lt;span class="w"&gt; &lt;/span&gt;snippet&lt;span class="w"&gt; &lt;/span&gt;create&lt;span class="w"&gt; &lt;/span&gt;--title&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$title&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--file-name&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$title&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--content&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$content&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--visibility&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$visibility&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="nv"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$result&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;awk&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/id: / { print $2 }&amp;#39;&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;https://gitlab.com/-/snippets/&lt;/span&gt;&lt;span class="nv"&gt;$id&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I can now do &lt;code&gt;snip README.md&lt;/code&gt; and that will create the snippet for me&amp;nbsp;:-)&lt;/p&gt;</content><category term="code"></category></entry><entry><title>Creating an online space to share markdown files</title><link href="https://blog.notmyidea.org/creating-an-online-space-to-share-markdown-files.html" rel="alternate"></link><published>2023-09-17T00:00:00+02:00</published><updated>2023-09-17T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-09-17:/creating-an-online-space-to-share-markdown-files.html</id><summary type="html">
&lt;p&gt;I wanted to create a space on my server where I can upload markdown files and have them rendered directly, for them to be shared with other&amp;nbsp;people.&lt;/p&gt;
&lt;p&gt;I stumbled on &lt;a href="https://github.com/ukarim/ngx_markdown_filter_module"&gt;the markdown module for nginx&lt;/a&gt; which does exactly what I want, but seemed to ask for compilation of nginx …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;I wanted to create a space on my server where I can upload markdown files and have them rendered directly, for them to be shared with other&amp;nbsp;people.&lt;/p&gt;
&lt;p&gt;I stumbled on &lt;a href="https://github.com/ukarim/ngx_markdown_filter_module"&gt;the markdown module for nginx&lt;/a&gt; which does exactly what I want, but seemed to ask for compilation of nginx, which wasn&amp;#8217;t exactly what I wanted in terms of maintainability (it would make it complicated to update&amp;nbsp;it)&lt;/p&gt;
&lt;p&gt;I then thought that the &lt;a href="https://caddyserver.com/"&gt;Caddy&lt;/a&gt; server does that by default, and so I&amp;#8217;ve tested it out. Turns out it&amp;#8217;s not, but it offers ways to do this thanks to its template&amp;nbsp;mecanism.&lt;/p&gt;
&lt;p&gt;It also, &lt;a href="https://caddyserver.com/docs/automatic-https"&gt;setups automatically and transparently &lt;span class="caps"&gt;SSL&lt;/span&gt; certificates&lt;/a&gt; for you (using Let&amp;#8217;s Encrypt!), so I wanted to have a&amp;nbsp;look.&lt;/p&gt;
&lt;p&gt;Here is the Caddy configuration file I&amp;#8217;m now using&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;md.notmyidea.org {
root &lt;span class="gs"&gt;* /home/caddy/md.notmyidea.org&lt;/span&gt;
&lt;span class="gs"&gt; rewrite *&lt;/span&gt; /index.html
file_server
templates
encode zstd gzip
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And the&amp;nbsp;template:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;{{$pathParts := splitList &amp;quot;/&amp;quot; .OriginalReq.URL.Path}}
{{$markdownFilename := default &amp;quot;index&amp;quot; (slice $pathParts 1 | join &amp;quot;/&amp;quot;)}}
{{if not (fileExists $markdownFilename)}}
{{httpError 404}}
{{end}}
{{$markdownFile := (include $markdownFilename | splitFrontMatter)}}
&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;head&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;{{ $markdownFilename }}&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;head&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
{{ markdown $markdownFile.Body }}
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This is a minimalistic version, but it works&amp;nbsp;:-)&lt;/p&gt;</content><category term="code"></category></entry><entry><title>Éloge de lamitié</title><link href="https://blog.notmyidea.org/eloge-de-lamitie.html" rel="alternate"></link><published>2023-09-16T00:00:00+02:00</published><updated>2023-09-16T00:00:00+02:00</updated><author><name>Geoffroy de Lagasnerie</name></author><id>tag:blog.notmyidea.org,2023-09-16:/eloge-de-lamitie.html</id><summary type="html">&lt;h2 id="citations"&gt;Citations&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Lorsqu&amp;#8217;elle devient un mode de vie, qu&amp;#8217;elle devient l&amp;#8217;objet d&amp;#8217;une culture spécifique qui occupe le cœur de l&amp;#8217;existence, le lien d&amp;#8217;investissement des intérêts psychiques et non ce qui reste après la famille, le travail, les voisins, etc., &lt;strong&gt;l&amp;#8217;amitié pourrait être interprétée comme …&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;h2 id="citations"&gt;Citations&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Lorsqu&amp;#8217;elle devient un mode de vie, qu&amp;#8217;elle devient l&amp;#8217;objet d&amp;#8217;une culture spécifique qui occupe le cœur de l&amp;#8217;existence, le lien d&amp;#8217;investissement des intérêts psychiques et non ce qui reste après la famille, le travail, les voisins, etc., &lt;strong&gt;l&amp;#8217;amitié pourrait être interprétée comme la recherche d&amp;#8217;un dehors&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est une pratique dont le but et la finalité sont &lt;strong&gt;la possibilité de sortir des relations instituées pour reconfigurer un autre rapport à soi et aux autres&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;Faire de l&amp;#8217;amitié une culture, un style de vie demande une éthique et une transformation du sujet. Le sujet doit adopter une certaine orientation dans la vie pour pouvoir être le sujet amical — avec des dispositions, des plis psychiques, un rapport aux autres. La relationalité amicale ne peut pas être quelque chose &lt;em&gt;en plus&lt;/em&gt; par rapport aux formes traditionnelles de la vie. Elle est quelque chose d&amp;#8217;autre, car &lt;strong&gt;son déploiement s&amp;#8217;opérera nécessairement au détriment de l&amp;#8217;investissement dans d&amp;#8217;autres modes de vie&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Parce qu&amp;#8217;une relation amicale est toujours hantée par la menace de sa disparition et parce que cette disparition peut arriver si vite, elle ne peut durer que si celles et ceux qui l&amp;#8217;éprouvent s&amp;#8217;engagent dans quelque chose de l&amp;#8217;ordre de l&amp;#8217;ascèse : &lt;strong&gt;reconfigurer leur rapport à l&amp;#8217;espace et au temps, afin de placer l&amp;#8217;ami au centre de leur préoccupations et de leur&amp;nbsp;existence.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A un moment, Didier dit : &lt;strong&gt;« L&amp;#8217;un des principes fondamentaux de l&amp;#8217;amitié c&amp;#8217;est la fidélité, la loyauté. »&lt;/strong&gt; Peut-être est-ce parce que Didier à connu trop d&amp;#8217;amis qui se sont révélés capables de le trahir qu&amp;#8217;il a eu besoin [&amp;#8230;] d&amp;#8217;officialiser quelque chose de l&amp;#8217;ordre d&amp;#8217;un serment et de conjurer la peur de la possibilité d&amp;#8217;une déloyauté future. &lt;strong&gt;« Notre relation à trois n&amp;#8217;est possible que si nous faisons le serment de ne jamais nous trahir.&amp;nbsp;»&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Passer Noël,&lt;/strong&gt; ou n&amp;#8217;importe quelle autre cérémonie sociale de ce type, &lt;strong&gt;« entre amis »&lt;/strong&gt; ou « en famille » &lt;strong&gt;constitue probablement l&amp;#8217;un des critères les plus puissants pour distinguer les existences qui ont placé l&amp;#8217;amitié en leur centre&lt;/strong&gt; et celles qui restent déterminées par une forme de familialisme dominant, quand bien même l&amp;#8217;individu qui reproduit ce familialisme en souffrirait.
Lorsque nous fêtons Noël ensemble, avec Edouard et Didier, sans doute fêtons-nous aussi le fait de le fêter ensemble, comme une sorte de conquête sur la logique ordinaire du monde&amp;nbsp;social.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="le-devenir-parent-comme-norme"&gt;Le devenir-parent comme&amp;nbsp;norme&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;On ne peut nier le fait que la vie de chacun se déploie dans un monde au sein duquel le devenir-parent constitue une évidence, quelque chose comme une attente des autres et une image de soi auxquels il faut, si l&amp;#8217;on ne veut pas s&amp;#8217;y plier,&amp;nbsp;résister.&lt;/p&gt;
&lt;p&gt;Cette organisation cyclique de l&amp;#8217;existence, cette assignation dominante de l&amp;#8217;amitié à n&amp;#8217;être qu&amp;#8217;une phase avant l&amp;#8217;entrée dans la vie sérieuse, la vie adulte, montre que nos sociétés sont gouvernées par une économie psychique dans les quelles les inventions relationnelles créatrices, c&amp;#8217;est à dire autonomes par rapport aux autres cadres de la vie, même lorsqu&amp;#8217;elles atteignent leur intensité la plus grande, ont en fait toujours tendance à être vécues et éprouvées comme passagères, comme vouées à la disparition — &lt;strong&gt;comme si, au fond, un ami était toujours quelqu&amp;#8217;un d&amp;#8217;abandonnable, de sacrifiable — parce que, à un moment donné, il faudra entrer dans la « vraie vie », la vie conjugale et&amp;nbsp;familiale.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si, lorsqu&amp;#8217;elle devient un mode de vie et une culture autonome, l&amp;#8217;amitié détient une signification oppositionnelle qui permet d&amp;#8217;accéder à d&amp;#8217;autres formes de plaisirs, de saveurs et produit l&amp;#8217;émergence d&amp;#8217;un « soi » différent de celui qui aurait émergé au sein de la socialisation familiale, c&amp;#8217;est d&amp;#8217;abord parce qu&amp;#8217;elle fonctionne comme une puissance de décalage par rapport à l&amp;#8217;univers domestique. &lt;strong&gt;L&amp;#8217;amitié change le rapport au monde et la façon de se penser parce qu&amp;#8217;elle engage un décentrement physique de l&amp;#8217;existence par rapport au foyer et au privé&lt;/strong&gt; — par rapport à ce que le langage nomme si bien &lt;em&gt;la cellule familiale&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="chercher-des-relations-desinteressees"&gt;Chercher des relations désintéressées&amp;nbsp;?&lt;/h3&gt;
&lt;p&gt;Passage peut-être un peu long, mais qui pour moi est un des apprentissages les plus importants de ce livre&amp;nbsp;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nous avons appelé cette expérience « le troisième œil » : lorsque nous prenons des verres ou avons des rendez-vous, lorsque nous dînons après des conférences avec les organisateurs, il arrive que, tout à coup, nous sortions mentalement de l&amp;#8217;interaction et que nous nous mettions à nous voir évoluer à l&amp;#8217;intérieur de celle-ci comme si nous la regardions de l&amp;#8217;extérieur. Comme si nous étions dotés d&amp;#8217;un troisième œil à travers lequel nous nous voyons nous-mêmes interagir. &lt;strong&gt;Cette extériorisation conduit à rendre étrange la relation ou en tout cas à rendre le moment distant, parfois éprouvant, car tout ce qui devrait être accompli sur le mode du ça-va-de-soi, devient médiatisé, appréhendé comme un rôle, une comédie&amp;nbsp;sociale.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dans la plupart des textes sur l&amp;#8217;amitié on trouve très largement l&amp;#8217;idée selon laquelle l&amp;#8217;amitié est d&amp;#8217;autant plus pure qu&amp;#8217;elle se rapproche de la sociabilité telle que Simmel la décrit : une relation amicale atteindrait sa plus grande noblesse quand elle parviendrait à être fondée sur une sorte d&amp;#8217;accord éthique entre les êtres, et qu&amp;#8217;elle s&amp;#8217;opposerait en ce sens aux relations instrumentales que nous nouons au cours de nos vies qui, elles, seraient animées par une logique de l&amp;#8217;intérêt et de la&amp;nbsp;complémentarité.&lt;/p&gt;
&lt;p&gt;Aimer l&amp;#8217;ami, ce serait l&amp;#8217;aimer en tant que tel, pour lui-même, indépendamment de ce que cette relation pourrait apporter, de ce que nous pourrions tirer de cette relation.&amp;nbsp;[&amp;#8230;]&lt;/p&gt;
&lt;p&gt;[&amp;#8230;] Une amitié ne peut remplir une fonction créatrice qu&amp;#8217;à condition d&amp;#8217;inventer sa propre raison d&amp;#8217;être et donc d&amp;#8217;emporter avec elle et au-delà d&amp;#8217;elle-même des enjeux politiques, affectifs, créatifs pour celles et ceux qui la vivent. &lt;strong&gt;Une relation amicale ne peut se construire comme relation autonome que si les amis s&amp;#8217;apportent mutuellement quelque chose, s&amp;#8217;augment au contact de l&amp;#8217;autre&lt;/strong&gt; au sens de Spinoza, s&amp;#8217;ils retirent de la relation quelque chose qu&amp;#8217;ils ne trouveraient pas ailleurs — et donc s&amp;#8217;ils y sont&amp;nbsp;intéressés.&lt;/p&gt;
&lt;p&gt;Autrement dit, il y a une opposition entre le type de relationnalité que fait fonctionner l&amp;#8217;amitié qui entend être créatrice et ce que Simmel appelle la sociabilité. [&amp;#8230;]
Les relations dont le déploiement se fonde sur la suspension d&amp;#8217;un contenu explicite servent en fait à reconduire des liens déjà constitués et soutenus par le monde social. Ces relations ne sont pas productrices de leur propre nécessité. Elles ne font que redoubler, dans l&amp;#8217;ordre interpersonnel, ce qui est institué dans l&amp;#8217;ordre structural des appartenances (familiales, locales, etc.) ou des fonctions (professionnelles) en sorte que la relation n&amp;#8217;a rien à apporter ni à créer puisque tout est déjà là, donné, imposé… [&amp;#8230;] La sociabilité constitue un type de rapport à l&amp;#8217;autre qui entretient des relations préalablement établies (le déjeuner de famille, le dîner mondain, la soirée d&amp;#8217;entreprise). &lt;strong&gt;De ce point de vue, la sociabilité est structurellement fonctionnelle et conservatrice. Elle consolide l&amp;#8217;ordre institué des proximités et des distances, des identités et des rôles, des échanges et des intérêts. Aimer la sociabilité c&amp;#8217;est aimer le monde social et ce qu&amp;#8217;il a fait de&amp;nbsp;nous.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Et on y arrive, donc&amp;nbsp;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;À l&amp;#8217;inverse, une relationnalité qui s&amp;#8217;établit contre et en dehors des cadres institués de l&amp;#8217;existence, des routines familiales et professionnelles et de tout ce qui nous est imposé doit nécessairement se développer à travers un geste d&amp;#8217;écart avec l&amp;#8217;idée de sociabilité, avec la pratique de la socialité comme art qui n&amp;#8217;a d&amp;#8217;autres finalités qu&amp;#8217;elle-même.
[&amp;#8230;] Mais ressentant moi-même exactement ce type d&amp;#8217;affect quand je me rends parfois [&amp;#8230;] à certaines cérémonies familiales (la conversation inutile centrée sur les enfants et leur éducation puis sur l&amp;#8217;actualité professionnelle des uns et des autres et enfin sur quelques faits d&amp;#8217;actualité), &lt;strong&gt;je me demande si le caractère partagé et semblable de ces difficultés ne témoigne pas du fait que l&amp;#8217;entrée dans une vie marquée par la relationnalité amicale rend presque impossible la soumission à la sociabilité&lt;/strong&gt;, et notamment sa forme extrême qu&amp;#8217;est la sociabilité de type familial&amp;nbsp;[&amp;#8230;].&lt;/p&gt;
&lt;p&gt;Contrairement à Cicéron qui affirmait que l&amp;#8217;on ne peut pas perdre un ami car, si on le perd, c&amp;#8217;est qu&amp;#8217;il ne s&amp;#8217;agissait pas d&amp;#8217;un ami véritable puisque l&amp;#8217;amitié était alors contingente, dépendante des circonstances et donc selon lui fictive, on pourrait avancer que l&amp;#8217;idée de perte est consubstantielle à l&amp;#8217;idée d&amp;#8217;amitié véritable. Les seules relations que l&amp;#8217;on ne perd pas sont les relations qui nous sont imposées par le monde social. &lt;strong&gt;Être fidèle à l&amp;#8217;amitié comme pratique sociale et définition de soi c&amp;#8217;est donc aussi souvent savoir abandonner certaines relations qui ont pu être importantes à certain moments de sa vie, les laisser derrière soi quand elles ne produisent plus les effets de décalage d&amp;#8217;être pour en trouver d&amp;#8217;autres, nouvelles, qui remplirons à leur tour cette&amp;nbsp;fonction.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour moi deux points à retenir&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;La sociabilité (au sens de Simmel) peut être en fait vue comme quelque chose qui n&amp;#8217;est pas une amitié véritable, c&amp;#8217;est une expérience qui favorise le « troisième œil » dont il est question plus haut&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;L&amp;#8217;amitié peut aussi être vue comme fonctionnelle, comme quelque chose qui cherche à s&amp;#8217;augmenter les uns les autres, voire même ce serait son objet principal (pour aller vers ce que de Lagasnerie appelle l&amp;#8217;amitié&amp;nbsp;créatrice)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="devenir-auteur"&gt;Devenir&amp;nbsp;auteur&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Toute une économie de l&amp;#8217;image qui entour les auteurs et que ceux-ci se plaisent à faire fonctionner vise à donner une impression d&amp;#8217;éloignement, d&amp;#8217;inaccessibilité qui décourage un grand nombre d&amp;#8217;individus de la pratique de&amp;nbsp;l&amp;#8217;écriture. &lt;/p&gt;
&lt;p&gt;Très souvent, la résolution psychique de cette difficulté conduit celui ou celle qui aspire à écrire à se mettre à l&amp;#8217;abri d&amp;#8217;un auteur passé, d&amp;#8217;un paradigme ou d&amp;#8217;une discipline ,à se glisser dans des dispositifs d&amp;#8217;écriture déjà institués, à se revendique d&amp;#8217;une école… &lt;strong&gt;Comme si la condition pour devenir un auteur consistait paradoxalement à se dissoudre comme&amp;nbsp;auteur.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="la-solitude-de-lheresiarque"&gt;La solitude de&amp;nbsp;l&amp;#8217;hérésiarque&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Bourdieu soulève le problème de ce qu&amp;#8217;il appelle la « solitude de l&amp;#8217;hérésiarque ». Lorsque quelqu&amp;#8217;un décide de rompre ou est de fait conduit à rompre avec les attentes du champ dans lequel il est inscrit, il doit &lt;em&gt;a priori&lt;/em&gt; accepter, pour un temps du moins, de se retrouver seul et isolé. Il défie les lois de la reconnaissance et de la sociabilité telles qu&amp;#8217;elles fonctionnent dans son champ, il il promeut une nouvelle norme de production qui n&amp;#8217;est pas encore acceptée comme telle, et il se retrouve donc, mécaniquement, mis à l&amp;#8217;écart de&amp;nbsp;tout.&lt;/p&gt;
&lt;p&gt;Même si il est insulté, ignoré, rejeté, l&amp;#8217;hérétique doit se persuader qu&amp;#8217;il n&amp;#8217;est pas un article raté, mais un artiste maudit. Il doit se donner le droit de dire à l&amp;#8217;institution, tout en étant isolé et attaqué : c&amp;#8217;est moi qui ai raison, c&amp;#8217;est moi qui vous le&amp;nbsp;dit.&lt;/p&gt;
&lt;p&gt;Un acte hérétique suppose une capacité à défier les lois de la reconnaissance sociale, à se défaire au moins provisoirement de la force de leurs verdicts pour persévérer dans son être malgré l&amp;#8217;absence de signe mondaine&amp;nbsp;d&amp;#8217;élection.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C&amp;#8217;est la raison pour laquelle une avant-garde est toujours collective. Celui qui veut rompre avec le &lt;em&gt;nomos&lt;/em&gt; du champ auquel il appartient va nécessairement, au moins dans un premier temps, se couper de l&amp;#8217;institution et de ses espaces de sociabilité&lt;/strong&gt;. Il doit donc trouver du soutien ailleurs, à travers son inscription dans d&amp;#8217;autres cercles. Il doit non seulement créer son œuvre, mais créer aussi son propre espace de&amp;nbsp;soutien.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span class="caps"&gt;GDL&lt;/span&gt; conclut derrière en parlant du fait qu&amp;#8217;il faut sans doute chercher à vivre &lt;em&gt;au-delà de la reconnaissance&lt;/em&gt;. Plutôt que de voir ces « nouveaux cercles » comme un autre moyen d&amp;#8217;accéder à de la reconnaissance, il faudrait réussir à se détacher de ce besoin de reconnaissance. L&amp;#8217;amitié pourrait alors viser à faire vivre une autre éthique, « fondée sur les notions d&amp;#8217;affirmation et d&amp;#8217;autonomie&amp;nbsp;».&lt;/p&gt;
&lt;h3 id="au-dela-de-la-reconnaissance"&gt;Au delà de la&amp;nbsp;reconnaissance&lt;/h3&gt;
&lt;p&gt;Dans la dernière partie&amp;nbsp;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Je pense que ce que Bourdieu entend nous montrer, c&amp;#8217;est qu&amp;#8217;&lt;strong&gt;il faut nous débarrasser autant que faire se peut de l&amp;#8217;obsession de la reconnaissance, du fétichisme des titres et des rites officiels&lt;/strong&gt; — c&amp;#8217;est à dire de la façon que nous avons de nous subjectiver en fonction du regard d&amp;#8217;autrui, de nous définir nous-mêmes selon les catégorisations et les définitions&amp;nbsp;étatiques.&lt;/p&gt;
&lt;p&gt;Qui dit reconnaissance dit mystification, et aussi relégation. [&amp;#8230;] Tout acte de consécration ou de reconnaissance s&amp;#8217;opère en fonction de normes ou de critères particuliers qui ne manqueront pas d&amp;#8217;exercer des effets de relégation et de produire des misères de position à l&amp;#8217;égard de ceux qui ne sont pas en mesure de les&amp;nbsp;satisfaire.&lt;/p&gt;
&lt;p&gt;En d&amp;#8217;autres termes, tant que l&amp;#8217;on reconnaît aux institutions le pouvoir de nous reconnaître, et que l&amp;#8217;on cherche à trouver en elles des justifications d&amp;#8217;exister, on stabilise un système excluant qui implique une impossibilité de sortir de la malédiction de l&amp;#8217;Être et le Néant, de la vie symbolique des uns qui engendre la mort symbolique des&amp;nbsp;autres.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Et de conclure&amp;nbsp;: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;L&amp;#8217;amitié porte en elle l&amp;#8217;idée d&amp;#8217;une vie au-delà de la reconnaissance. Elle est le nom d&amp;#8217;une pratique du soi qui prend la forme d&amp;#8217;une politique de l&amp;#8217;affirmation, d&amp;#8217;une morale nietzschéenne de l&amp;#8217;action, de l&amp;#8217;actif, opposée au ressentiment et au réactif que ne peut pas manquer d&amp;#8217;engendrer l&amp;#8217;obsession de la reconnaissance et le fait de se juger soi-même en fonction du jugement des autres, constitué comme jugement&amp;nbsp;dernier.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="notes-durant-le-visionnage-de-la-video"&gt;Notes durant le visionnage de la&amp;nbsp;vidéo&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Pi5FwepM2T0"&gt;Lien vers la&amp;nbsp;vidéo&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="idiorythmie"&gt;Idiorythmie&lt;/h3&gt;
&lt;p&gt;Idée que l&amp;#8217;on a toustes des rapports différents au&amp;nbsp;temps.&lt;/p&gt;
&lt;p&gt;Exemples :
- La famille empêche l&amp;#8217;idiorythmie (tout le monde doit avoir le même rythme)
- Le fait de ne pas aimer le matin est un caprice.
- Les autistes ont un autre rapport au&amp;nbsp;temps. &lt;/p&gt;
&lt;p&gt;Ressources :
- Roland Barthes dit que c&amp;#8217;est bien de vivre à des autres&amp;nbsp;rythmes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Même les Anarchistes changent leur heure à l&amp;#8217;heure d&amp;#8217;été !
&amp;nbsp;Bourdieu&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="mettre-lamitie-au-centre-de-nos-vies"&gt;Mettre l&amp;#8217;amitié au centre de nos&amp;nbsp;vies&lt;/h3&gt;
&lt;p&gt;L&amp;#8217;idée principale développée est celle que l&amp;#8217;amitié devrait être au centre de nos vies. Il pense que la vie relationnelle est plus riche si elle n&amp;#8217;a « pas de centre&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;L&amp;#8217;amitié comme technique de transformation de soi par l&amp;#8217;autre : pour lui, aimer c&amp;#8217;est aimer la différence. Il considère l&amp;#8217;amour comme transformateur avant tout. Le sentiment d&amp;#8217;amour se cultive dans l&amp;#8217;absence. Il prend l&amp;#8217;exemple de gens qui vivent toujours ensemble, qui partent en vacances ensemble etc, et qui n&amp;#8217;auraient au bout d&amp;#8217;un moment plus rien à se dire parce qu&amp;#8217;iels seraient trop&amp;nbsp;similaires.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;école est un lieu de transformation parce qu&amp;#8217;on est au contact des&amp;nbsp;autres.&lt;/p&gt;
&lt;p&gt;Pour &lt;span class="caps"&gt;GDL&lt;/span&gt;, le couple est une forme qu&amp;#8217;on doit mettre en question, entre autres à travers l&amp;#8217;idée de l&amp;#8217;installation ensemble (le centre de sa vie devient alors l&amp;#8217;autre). Quand on habite ensemble, on a tendance à voir l&amp;#8217;extérieur comme quelque chose qui menace, incitant à la&amp;nbsp;jalousie.&lt;/p&gt;
&lt;p&gt;La question devient comment amicaliser l&amp;#8217;amour ? L&amp;#8217;idée étant que l&amp;#8217;amitié est plus beau que l&amp;#8217;amour ou la famille. Plus libre, plus&amp;nbsp;démocratique. &lt;/p&gt;
&lt;p&gt;C&amp;#8217;est une forme de vie précarisée, elle n&amp;#8217;est pas cadrée juridiquement, et une guerre est faire à l&amp;#8217;amitié par la&amp;nbsp;société.&lt;/p&gt;
&lt;p&gt;Critique de l&amp;#8217;idée que l&amp;#8217;amitié doit être désintéressée pour être pure. Pour &lt;span class="caps"&gt;GDL&lt;/span&gt;, on aime quelqu&amp;#8217;un parce qu&amp;#8217;on est intéressé par lui·elle : iel a des connaissances, envies, et iel nous transforme. Les amitiés sont provisoires. C&amp;#8217;est quelqu&amp;#8217;un qui vous apporte quelque chose à un moment&amp;nbsp;donné. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!hint] Définition
L&amp;#8217;intérêt, c&amp;#8217;est ce qui est entre soi et soi (ce qui nous&amp;nbsp;augmente). &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="lamitie-comme-espace-de-verite"&gt;L&amp;#8217;amitié comme espace de&amp;nbsp;vérité&lt;/h3&gt;
&lt;p&gt;Amitié = loyauté et franchise. Idée que l&amp;#8217;amitié est un lieu de complaisance, alors que l&amp;#8217;honnêteté viendrait de l&amp;#8217;anonymat. Lui pense que l&amp;#8217;amitié et l&amp;#8217;amour sont peut-être des lieux dans lesquels la confiance en l&amp;#8217;autre rend possible une forme de véridiction (dire la vérité sans&amp;nbsp;blesser).&lt;/p&gt;
&lt;p&gt;Fin d&amp;#8217;une amitié dans un cas où il y a franchise : vous ne l&amp;#8217;aimez pas suffisamment, ou il ne vous aime pas suffisamment pour se sentir mis en cause par un jugement&amp;nbsp;honnête. &lt;/p&gt;
&lt;p&gt;Quel est l&amp;#8217;espace dans le monde social ou on peut se situer hors de la concurrence et de la connivence ? On peut leur opposer la confiance, c&amp;#8217;est l&amp;#8217;espace de l&amp;#8217;Amour et de&amp;nbsp;l&amp;#8217;amitié. &lt;/p&gt;
&lt;h3 id="vie-volee-par-le-mariage"&gt;Vie volée par le&amp;nbsp;mariage&lt;/h3&gt;
&lt;p&gt;Une grande partie des femmes a l&amp;#8217;impression que leur vie leur a été volée, se sentent prisonnières de la reproduction des exigences du foyer et des taches&amp;nbsp;domestiques. &lt;/p&gt;
&lt;p&gt;Le suicide de Durkeim : le mariage est un facteur aggravant du suicide. Plus elle a d&amp;#8217;enfants plus elle se&amp;nbsp;suicide.&lt;/p&gt;
&lt;h3 id="medias"&gt;Médias&lt;/h3&gt;
&lt;p&gt;Difficile d&amp;#8217;être autonome et de porter un autre discours que celui qui est prévu d&amp;#8217;avance dans les&amp;nbsp;médias. &lt;/p&gt;
&lt;h3 id="agisme"&gt;Agisme&lt;/h3&gt;
&lt;p&gt;Beaucoup d&amp;#8217;injonctions liées à l&amp;#8217;age. Contrairement à ce qu&amp;#8217;on pense, ce n&amp;#8217;est pas transgressif de faire de la transgression à 20 ans, parce que c&amp;#8217;est un moyen de ne pas être transgressif plus tard (pour la&amp;nbsp;bourgeoisie)&lt;/p&gt;
&lt;p&gt;L&amp;#8217;une des manières de dégrader l&amp;#8217;amitié dans nos sociétés c&amp;#8217;est de la ramener à la jeunesse : dire que c&amp;#8217;est ce qu&amp;#8217;on fait quand on est jeune. Sous-entendu la vie d&amp;#8217;adulte est fondée sur le renoncement de la vie amicale. Il faut abandonner ses amis pour mettre la famille au centre, les enfants&amp;nbsp;etc.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;amitié comme mode de vie doit être&amp;nbsp;inter-générationnel. &lt;/p&gt;
&lt;h3 id="ecriture"&gt;Écriture&lt;/h3&gt;
&lt;p&gt;Pour lui c&amp;#8217;est aller chercher le point le plus loin possible dans le discible. A la limite de tomber dans l&amp;#8217;excessif, sans être&amp;nbsp;mou.&lt;/p&gt;
&lt;p&gt;On ne se sens pas légitime à&amp;nbsp;écrire. &lt;/p&gt;
&lt;p&gt;Il faut beaucoup de mémoire pour repousser le&amp;nbsp;passé.&lt;/p&gt;
&lt;h3 id="divers"&gt;Divers&lt;/h3&gt;
&lt;p&gt;Derida = la mort de l&amp;#8217;ami. Qu&amp;#8217;est-ce que je deviens quand l&amp;#8217;ami sera&amp;nbsp;mort.&lt;/p&gt;
&lt;p&gt;Nelson Mandela était aussi engagé dans la lutte armée (arrêté avec des bombes dans son&amp;nbsp;coffre)&lt;/p&gt;
&lt;h3 id="livres"&gt;Livres&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Ce qu&amp;#8217;aimer veut dire /&amp;nbsp;Foucault&lt;/li&gt;
&lt;/ul&gt;</content><category term="Lectures"></category><category term="relations"></category><category term="amitié"></category></entry><entry><title>Conversion dun fichier svg en favicon.ico</title><link href="https://blog.notmyidea.org/conversion-dun-fichier-svg-en-faviconico.html" rel="alternate"></link><published>2023-09-13T00:00:00+02:00</published><updated>2023-09-13T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-09-13:/conversion-dun-fichier-svg-en-faviconico.html</id><summary type="html">
&lt;p&gt;Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j&amp;#8217;aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant &lt;a href="https://imagemagick.org/"&gt;ImageMagick&lt;/a&gt;. Merci à &lt;a href="https://gist.github.com/azam/3b6995a29b9f079282f3"&gt;ce&amp;nbsp;gist&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;convert&lt;span class="w"&gt; &lt;/span&gt;-density&lt;span class="w"&gt; &lt;/span&gt;256x256&lt;span class="w"&gt; &lt;/span&gt;-background&lt;span class="w"&gt; &lt;/span&gt;transparent&lt;span class="w"&gt; &lt;/span&gt;favicon.svg&lt;span class="w"&gt; &lt;/span&gt;-define&lt;span class="w"&gt; &lt;/span&gt;icon:auto-resize&lt;span class="w"&gt; &lt;/span&gt;-colors&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;256 …&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</summary><content type="html">
&lt;p&gt;Il y a plusieurs sites qui permettent de faire ça automatiquement, mais j&amp;#8217;aime bien faire les choses depuis mon terminal, voici donc une commande qui permet de faire ça simplement, en utilisant &lt;a href="https://imagemagick.org/"&gt;ImageMagick&lt;/a&gt;. Merci à &lt;a href="https://gist.github.com/azam/3b6995a29b9f079282f3"&gt;ce&amp;nbsp;gist&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;convert&lt;span class="w"&gt; &lt;/span&gt;-density&lt;span class="w"&gt; &lt;/span&gt;256x256&lt;span class="w"&gt; &lt;/span&gt;-background&lt;span class="w"&gt; &lt;/span&gt;transparent&lt;span class="w"&gt; &lt;/span&gt;favicon.svg&lt;span class="w"&gt; &lt;/span&gt;-define&lt;span class="w"&gt; &lt;/span&gt;icon:auto-resize&lt;span class="w"&gt; &lt;/span&gt;-colors&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;256&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;favicon.ico
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="code"></category></entry><entry><title>Découverte de nouveaux outils pour le développement: LLM, Helix et plus</title><link href="https://blog.notmyidea.org/decouverte-de-nouveaux-outils-pour-le-developpement-llm-helix-et-plus.html" rel="alternate"></link><published>2023-09-12T00:00:00+02:00</published><updated>2023-09-12T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-09-12:/decouverte-de-nouveaux-outils-pour-le-developpement-llm-helix-et-plus.html</id><summary type="html">
&lt;h2 id="llm"&gt;&lt;span class="caps"&gt;LLM&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://localai.io/model-compatibility/"&gt;LocalAI&lt;/a&gt; permet de faire tourner des modèles en local avec la même &lt;span class="caps"&gt;API&lt;/span&gt; &lt;span class="caps"&gt;HTTP&lt;/span&gt; que celle&amp;nbsp;d&amp;#8217;OpenAI&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bofenghuang/vigogne"&gt;Le modèle Vigogne&lt;/a&gt; est un modèle entrainé (&lt;em&gt;fine-tuned&lt;/em&gt;) avec des données en Français. Notamment &lt;a href="https://huggingface.co/bofenghuang/vigogne-2-7b-chat/tree/v1.0"&gt;ce modèle&lt;/a&gt;qui prends &lt;span class="caps"&gt;LLAMA2&lt;/span&gt; en&amp;nbsp;entrée.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://python.langchain.com/docs/get_started/introduction.html"&gt;LangChain&lt;/a&gt; semble être un framework pour travailler avec les différents …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">
&lt;h2 id="llm"&gt;&lt;span class="caps"&gt;LLM&lt;/span&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://localai.io/model-compatibility/"&gt;LocalAI&lt;/a&gt; permet de faire tourner des modèles en local avec la même &lt;span class="caps"&gt;API&lt;/span&gt; &lt;span class="caps"&gt;HTTP&lt;/span&gt; que celle&amp;nbsp;d&amp;#8217;OpenAI&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bofenghuang/vigogne"&gt;Le modèle Vigogne&lt;/a&gt; est un modèle entrainé (&lt;em&gt;fine-tuned&lt;/em&gt;) avec des données en Français. Notamment &lt;a href="https://huggingface.co/bofenghuang/vigogne-2-7b-chat/tree/v1.0"&gt;ce modèle&lt;/a&gt;qui prends &lt;span class="caps"&gt;LLAMA2&lt;/span&gt; en&amp;nbsp;entrée.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://python.langchain.com/docs/get_started/introduction.html"&gt;LangChain&lt;/a&gt; semble être un framework pour travailler avec les différents concepts utiles. A&amp;nbsp;voir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour la première fois, j&amp;#8217;ai commencé à utiliser un peu plus l&amp;#8217;outil &lt;a href="https://llm.datasette.io"&gt;llm&lt;/a&gt; pour m&amp;#8217;aider dans les tâches de&amp;nbsp;programmation. &lt;/p&gt;
&lt;p&gt;!! warning
J&amp;#8217;utilise actuellement par défaut le modèle en ligne d&amp;#8217;OpenAI &amp;#8220;&lt;span class="caps"&gt;GTP4&lt;/span&gt;&amp;#8221;, à travers leur &lt;span class="caps"&gt;API&lt;/span&gt;. Cela me pose des problèmes éthiques, mais mon approche est pour le moment de voir le type de résultats que j&amp;#8217;obtiens pour ensuite comparer avec des modèles locaux type &lt;span class="caps"&gt;LLAMA2&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Deux choses que j&amp;#8217;ai trouvées utiles&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;git&lt;span class="w"&gt; &lt;/span&gt;diff&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;llm&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;write me a commit message&amp;quot;&lt;/span&gt;
git&lt;span class="w"&gt; &lt;/span&gt;diff&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;llm&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;find a branch name&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Qui peuvent faciliter la vie plutôt que de chercher à décrire des choses manuellement (le &amp;#8220;branch-name&amp;#8221;, je le trouve particulièrement&amp;nbsp;utile)&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai aussi trouvé l&amp;#8217;idée intéressante d&amp;#8217;automatiser l&amp;#8217;écrite de tests, avec pytest. Bien sur ça ne fait pas tout, mais ça donne un template de départ qui est intéressant&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;cat&lt;span class="w"&gt; &lt;/span&gt;code/test_file.py&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;llm&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;write tests for this, using pytest&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;J&amp;#8217;ai par exemple demandé à llm de me lister 20 titres pour cet article&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;cat&lt;span class="w"&gt; &lt;/span&gt;~/dev/til.notmyidea.org/content/&lt;span class="k"&gt;$(&lt;/span&gt;date&lt;span class="w"&gt; &lt;/span&gt;+%F&lt;span class="k"&gt;)&lt;/span&gt;.md&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;llm&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Liste moi 20 titres pour cet article. Quelque chose de simple&amp;quot;&lt;/span&gt;
&lt;span class="m"&gt;1&lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Découverte de nouveaux outils pour le développement: LLM, Helix et plus&amp;quot;&lt;/span&gt;
&lt;span class="m"&gt;2&lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Explorer les modèles LLM pour la génération de code&amp;quot;&lt;/span&gt;
&lt;span class="m"&gt;3&lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;L&amp;#39;amélioration du développement grâce à LLM et Helix&amp;quot;&lt;/span&gt;
&lt;span class="m"&gt;4&lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Introduction à l&amp;#39;éditeur Helix et à LLM&amp;quot;&lt;/span&gt;
&lt;span class="m"&gt;5&lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Boostez votre productivité de développement avec LLM et Helix&amp;quot;&lt;/span&gt;
&lt;span class="m"&gt;6&lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Comment j&amp;#39;intègre LLM et Helix dans mon flux de travail de développement&amp;quot;&lt;/span&gt;
&lt;span class="m"&gt;7&lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Les avantages de l&amp;#39;utilisation de LLM pour la programmation&amp;quot;&lt;/span&gt;
&lt;span class="m"&gt;8&lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Approches innovantes pour le développement de code avec LLM&amp;quot;&lt;/span&gt;
&lt;span class="m"&gt;9&lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;L&amp;#39;avenir du développement de code avec LLM et Helix&amp;quot;&lt;/span&gt;
&lt;span class="m"&gt;10&lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Optimisation des tâches de programmation avec LLM&amp;quot;&lt;/span&gt;
&lt;span class="m"&gt;11&lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Ouvrir de nouvelles possibilités de codage avec LLM et Helix&amp;quot;&lt;/span&gt;
&lt;span class="m"&gt;12&lt;/span&gt;.&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Utiliser des modèles LLM pour améliorer la qualité du code&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="helix"&gt;Helix&lt;/h2&gt;
&lt;p&gt;Je me mets à tester un peu plus l&amp;#8217;éditeur Helix. Je suis un habitué de Vim pour toutes les petites modifications que je fais depuis mon terminal, et Helix semble&amp;nbsp;intéressant.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;x&lt;/code&gt;pour sélectionner une ligne (&lt;code&gt;xd&lt;/code&gt; pour sélectionner et&amp;nbsp;supprimer)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ma&lt;/code&gt; pour sélectionner &amp;#8220;around&amp;#8221; quelque chose. &lt;code&gt;maw&lt;/code&gt; pour sélectionner le&amp;nbsp;mot&lt;/li&gt;
&lt;li&gt;&lt;code&gt;c&lt;/code&gt; pour effacer la sélection et passer en mode&amp;nbsp;insertion.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="divers"&gt;Divers&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Jai fait confiance, jai appris.
&lt;a href="https://d%C3%A9tour.studio"&gt;Thomas&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;J&amp;#8217;aime beaucoup ce que ça dit. Faire confiance est peut-être nécessaire, même si on est déçu au final, on aura au moins appris. Ça me&amp;nbsp;touche.&lt;/p&gt;</content><category term="code"></category></entry><entry><title>Running the Gitlab CI locally</title><link href="https://blog.notmyidea.org/running-the-gitlab-ci-locally.html" rel="alternate"></link><published>2023-08-19T00:00:00+02:00</published><updated>2023-08-19T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-08-19:/running-the-gitlab-ci-locally.html</id><summary type="html">
&lt;p&gt;Sometimes, I need to change how the continuous integration is setup, and I find
myself pushing to a branch to test if my changes are working. Oftentimes, it
takes me multiple commits to find the correct configuration, which is…&amp;nbsp;suboptimal.&lt;/p&gt;
&lt;p&gt;I discovered today &lt;a href="https://github.com/firecow/gitlab-ci-local"&gt;Gitlab &lt;span class="caps"&gt;CI&lt;/span&gt;
local&lt;/a&gt; which makes it possible …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Sometimes, I need to change how the continuous integration is setup, and I find
myself pushing to a branch to test if my changes are working. Oftentimes, it
takes me multiple commits to find the correct configuration, which is…&amp;nbsp;suboptimal.&lt;/p&gt;
&lt;p&gt;I discovered today &lt;a href="https://github.com/firecow/gitlab-ci-local"&gt;Gitlab &lt;span class="caps"&gt;CI&lt;/span&gt;
local&lt;/a&gt; which makes it possible to
run the &lt;span class="caps"&gt;CI&lt;/span&gt; actions locally, without having to push to the remote &lt;span class="caps"&gt;CI&lt;/span&gt;. The same
thing exists for &lt;a href="https://github.com/nektos/act"&gt;Microsoft Github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Under the hood, it&amp;#8217;s using Docker, so you need to have it running on your
system, but once it&amp;#8217;s done, you just have to issue a simple command to see the
results. Very helpful&amp;nbsp;:-)&lt;/p&gt;
&lt;p&gt;Here is an example&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;gitlab-ci-local&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;test&lt;/span&gt;
parsing&lt;span class="w"&gt; &lt;/span&gt;and&lt;span class="w"&gt; &lt;/span&gt;downloads&lt;span class="w"&gt; &lt;/span&gt;finished&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;41&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ms
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;starting&lt;span class="w"&gt; &lt;/span&gt;python:3.8-alpine&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;copied&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;docker&lt;span class="w"&gt; &lt;/span&gt;volumes&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;.05&lt;span class="w"&gt; &lt;/span&gt;s
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;apk&lt;span class="w"&gt; &lt;/span&gt;update&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;apk&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;make&lt;span class="w"&gt; &lt;/span&gt;libsass&lt;span class="w"&gt; &lt;/span&gt;gcc&lt;span class="w"&gt; &lt;/span&gt;musl-dev&lt;span class="w"&gt; &lt;/span&gt;g++
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;fetch&lt;span class="w"&gt; &lt;/span&gt;https://dl-cdn.alpinelinux.org/alpine/v3.18/main/aarch64/APKINDEX.tar.gz
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;fetch&lt;span class="w"&gt; &lt;/span&gt;https://dl-cdn.alpinelinux.org/alpine/v3.18/community/aarch64/APKINDEX.tar.gz
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;v3.18.3-55-g2ee93b9273a&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;https://dl-cdn.alpinelinux.org/alpine/v3.18/main&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;v3.18.3-56-g4a3b0382caa&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;https://dl-cdn.alpinelinux.org/alpine/v3.18/community&lt;span class="o"&gt;]&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;OK:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;19939&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;distinct&lt;span class="w"&gt; &lt;/span&gt;packages&lt;span class="w"&gt; &lt;/span&gt;available
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;libgcc&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;.2.1_git20220924-r10&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;libstdc++&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;.2.1_git20220924-r10&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;libstdc++-dev&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;.2.1_git20220924-r10&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;zstd-libs&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.5.5-r4&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;binutils&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.40-r7&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;libgomp&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;.2.1_git20220924-r10&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;libatomic&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;.2.1_git20220924-r10&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;gmp&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;.2.1-r3&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;isl26&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.26-r1&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;mpfr4&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;.2.0_p12-r0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;mpc1&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.3.1-r1&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;gcc&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;.2.1_git20220924-r10&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;musl-dev&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.2.4-r1&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;libc-dev&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.7.2-r5&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;15&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;g++&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;.2.1_git20220924-r10&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;libsass&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;.6.5-r0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;17&lt;/span&gt;/17&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;make&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;.4.1-r1&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Executing&lt;span class="w"&gt; &lt;/span&gt;busybox-1.36.1-r2.trigger
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;OK:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;246&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;MiB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;55&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;packages
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-r&lt;span class="w"&gt; &lt;/span&gt;requirements.txt
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;pelican
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;pelican-4.8.0-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.4&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.4/1.4&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;539&lt;/span&gt;.9&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;markdown
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;Markdown-3.4.4-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;94&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;94&lt;/span&gt;.2/94.2&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;540&lt;/span&gt;.1&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;typogrify
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;typogrify-2.0.7.tar.gz&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;12&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Preparing&lt;span class="w"&gt; &lt;/span&gt;metadata&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;setup.py&lt;span class="o"&gt;)&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;started
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Preparing&lt;span class="w"&gt; &lt;/span&gt;metadata&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;setup.py&lt;span class="o"&gt;)&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;finished&lt;span class="w"&gt; &lt;/span&gt;with&lt;span class="w"&gt; &lt;/span&gt;status&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;done&amp;#39;&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;pelican-search
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;pelican_search-1.1.0-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;.6&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;pelican-neighbors
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;pelican_neighbors-1.2.0-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;pelican-webassets
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;pelican_webassets-2.0.0-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;.8&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;libsass
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;libsass-0.22.0.tar.gz&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;316&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;316&lt;/span&gt;.3/316.3&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;552&lt;/span&gt;.1&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Preparing&lt;span class="w"&gt; &lt;/span&gt;metadata&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;setup.py&lt;span class="o"&gt;)&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;started
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Preparing&lt;span class="w"&gt; &lt;/span&gt;metadata&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;setup.py&lt;span class="o"&gt;)&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;finished&lt;span class="w"&gt; &lt;/span&gt;with&lt;span class="w"&gt; &lt;/span&gt;status&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;done&amp;#39;&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;docutils&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.16
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;docutils-0.20.1-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;572&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;572&lt;/span&gt;.7/572.7&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;549&lt;/span&gt;.2&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;rich&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;.1
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;rich-13.5.2-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;239&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;239&lt;/span&gt;.7/239.7&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;485&lt;/span&gt;.3&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;jinja2&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.7
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;Jinja2-3.1.2-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;133&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;133&lt;/span&gt;.1/133.1&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;342&lt;/span&gt;.6&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;pytz&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2020&lt;/span&gt;.1
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;pytz-2023.3-py2.py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;502&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;502&lt;/span&gt;.3/502.3&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;547&lt;/span&gt;.3&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;pygments&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.6
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;Pygments-2.16.1-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.2&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.2/1.2&lt;span class="w"&gt; &lt;/span&gt;MB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;551&lt;/span&gt;.4&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;unidecode&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.1
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;Unidecode-1.3.6-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;235&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;235&lt;/span&gt;.9/235.9&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;554&lt;/span&gt;.2&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;blinker&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.4
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;blinker-1.6.2-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;13&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;python-dateutil&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.8
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;python_dateutil-2.8.2-py2.py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;247&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;247&lt;/span&gt;.7/247.7&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;235&lt;/span&gt;.7&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;feedgenerator&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.9
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;feedgenerator-2.1.0-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;21&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;importlib-metadata&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;.4
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;importlib_metadata-6.8.0-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;22&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;smartypants&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.8.3
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;smartypants-2.0.1-py2.py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;.9&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;rtoml&amp;lt;&lt;span class="m"&gt;0&lt;/span&gt;.10.0,&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.9.0
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;rtoml-0.9.0-cp38-cp38-musllinux_1_1_aarch64.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;846&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;846&lt;/span&gt;.2/846.2&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;503&lt;/span&gt;.7&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;webassets&amp;lt;&lt;span class="m"&gt;3&lt;/span&gt;.0,&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.0
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;webassets-2.0-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;142&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;142&lt;/span&gt;.9/142.9&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;551&lt;/span&gt;.8&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;zipp&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.5
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;zipp-3.16.2-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;.2&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;MarkupSafe&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.0
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;six&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;.5
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;six-1.16.0-py2.py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;markdown-it-py&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;.2.0
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;markdown_it_py-3.0.0-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;87&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;87&lt;/span&gt;.5/87.5&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;561&lt;/span&gt;.7&lt;span class="w"&gt; &lt;/span&gt;kB/s&lt;span class="w"&gt; &lt;/span&gt;eta&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;:00:00
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;typing-extensions&amp;lt;&lt;span class="m"&gt;5&lt;/span&gt;.0,&amp;gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;4&lt;/span&gt;.0.0
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;typing_extensions-4.7.1-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;33&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Collecting&lt;span class="w"&gt; &lt;/span&gt;mdurl~&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.1
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Downloading&lt;span class="w"&gt; &lt;/span&gt;mdurl-0.1.2-py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;10&lt;/span&gt;.0&lt;span class="w"&gt; &lt;/span&gt;kB&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Building&lt;span class="w"&gt; &lt;/span&gt;wheels&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;collected&lt;span class="w"&gt; &lt;/span&gt;packages:&lt;span class="w"&gt; &lt;/span&gt;typogrify,&lt;span class="w"&gt; &lt;/span&gt;libsass
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Building&lt;span class="w"&gt; &lt;/span&gt;wheel&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;typogrify&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;setup.py&lt;span class="o"&gt;)&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;started
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Building&lt;span class="w"&gt; &lt;/span&gt;wheel&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;typogrify&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;setup.py&lt;span class="o"&gt;)&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;finished&lt;span class="w"&gt; &lt;/span&gt;with&lt;span class="w"&gt; &lt;/span&gt;status&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;done&amp;#39;&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Created&lt;span class="w"&gt; &lt;/span&gt;wheel&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;typogrify:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;filename&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;typogrify-2.0.7-py2.py3-none-any.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;13452&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;sha256&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4ce329903e807671102eab7fd2bc49765b6efc3a4ae68c82053318b62789083c
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Stored&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;directory:&lt;span class="w"&gt; &lt;/span&gt;/root/.cache/pip/wheels/0b/e9/98/c888501e8dd2166da059e4f8418694de9b50b48a7192712be9
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Building&lt;span class="w"&gt; &lt;/span&gt;wheel&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;libsass&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;setup.py&lt;span class="o"&gt;)&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;started
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Building&lt;span class="w"&gt; &lt;/span&gt;wheel&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;libsass&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;setup.py&lt;span class="o"&gt;)&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;still&lt;span class="w"&gt; &lt;/span&gt;running...
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Building&lt;span class="w"&gt; &lt;/span&gt;wheel&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;libsass&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;setup.py&lt;span class="o"&gt;)&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;finished&lt;span class="w"&gt; &lt;/span&gt;with&lt;span class="w"&gt; &lt;/span&gt;status&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;done&amp;#39;&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Created&lt;span class="w"&gt; &lt;/span&gt;wheel&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;libsass:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;filename&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;libsass-0.22.0-cp38-abi3-linux_aarch64.whl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;13710320&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;sha256&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3dcb4ce97c1aafc179a6343e0f312c17df88e56c4eb647ab54b09ead5ee00b92
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Stored&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;directory:&lt;span class="w"&gt; &lt;/span&gt;/root/.cache/pip/wheels/95/64/fa/47638d5037df216387cdc168e9871d5d9851fc995d636bd108
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Successfully&lt;span class="w"&gt; &lt;/span&gt;built&lt;span class="w"&gt; &lt;/span&gt;typogrify&lt;span class="w"&gt; &lt;/span&gt;libsass
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Installing&lt;span class="w"&gt; &lt;/span&gt;collected&lt;span class="w"&gt; &lt;/span&gt;packages:&lt;span class="w"&gt; &lt;/span&gt;webassets,&lt;span class="w"&gt; &lt;/span&gt;smartypants,&lt;span class="w"&gt; &lt;/span&gt;pytz,&lt;span class="w"&gt; &lt;/span&gt;zipp,&lt;span class="w"&gt; &lt;/span&gt;unidecode,&lt;span class="w"&gt; &lt;/span&gt;typogrify,&lt;span class="w"&gt; &lt;/span&gt;typing-extensions,&lt;span class="w"&gt; &lt;/span&gt;six,&lt;span class="w"&gt; &lt;/span&gt;rtoml,&lt;span class="w"&gt; &lt;/span&gt;pygments,&lt;span class="w"&gt; &lt;/span&gt;mdurl,&lt;span class="w"&gt; &lt;/span&gt;MarkupSafe,&lt;span class="w"&gt; &lt;/span&gt;libsass,&lt;span class="w"&gt; &lt;/span&gt;feedgenerator,&lt;span class="w"&gt; &lt;/span&gt;docutils,&lt;span class="w"&gt; &lt;/span&gt;blinker,&lt;span class="w"&gt; &lt;/span&gt;python-dateutil,&lt;span class="w"&gt; &lt;/span&gt;markdown-it-py,&lt;span class="w"&gt; &lt;/span&gt;jinja2,&lt;span class="w"&gt; &lt;/span&gt;importlib-metadata,&lt;span class="w"&gt; &lt;/span&gt;rich,&lt;span class="w"&gt; &lt;/span&gt;markdown,&lt;span class="w"&gt; &lt;/span&gt;pelican,&lt;span class="w"&gt; &lt;/span&gt;pelican-webassets,&lt;span class="w"&gt; &lt;/span&gt;pelican-search,&lt;span class="w"&gt; &lt;/span&gt;pelican-neighbors
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Successfully&lt;span class="w"&gt; &lt;/span&gt;installed&lt;span class="w"&gt; &lt;/span&gt;MarkupSafe-2.1.3&lt;span class="w"&gt; &lt;/span&gt;blinker-1.6.2&lt;span class="w"&gt; &lt;/span&gt;docutils-0.20.1&lt;span class="w"&gt; &lt;/span&gt;feedgenerator-2.1.0&lt;span class="w"&gt; &lt;/span&gt;importlib-metadata-6.8.0&lt;span class="w"&gt; &lt;/span&gt;jinja2-3.1.2&lt;span class="w"&gt; &lt;/span&gt;libsass-0.22.0&lt;span class="w"&gt; &lt;/span&gt;markdown-3.4.4&lt;span class="w"&gt; &lt;/span&gt;markdown-it-py-3.0.0&lt;span class="w"&gt; &lt;/span&gt;mdurl-0.1.2&lt;span class="w"&gt; &lt;/span&gt;pelican-4.8.0&lt;span class="w"&gt; &lt;/span&gt;pelican-neighbors-1.2.0&lt;span class="w"&gt; &lt;/span&gt;pelican-search-1.1.0&lt;span class="w"&gt; &lt;/span&gt;pelican-webassets-2.0.0&lt;span class="w"&gt; &lt;/span&gt;pygments-2.16.1&lt;span class="w"&gt; &lt;/span&gt;python-dateutil-2.8.2&lt;span class="w"&gt; &lt;/span&gt;pytz-2023.3&lt;span class="w"&gt; &lt;/span&gt;rich-13.5.2&lt;span class="w"&gt; &lt;/span&gt;rtoml-0.9.0&lt;span class="w"&gt; &lt;/span&gt;six-1.16.0&lt;span class="w"&gt; &lt;/span&gt;smartypants-2.0.1&lt;span class="w"&gt; &lt;/span&gt;typing-extensions-4.7.1&lt;span class="w"&gt; &lt;/span&gt;typogrify-2.0.7&lt;span class="w"&gt; &lt;/span&gt;unidecode-1.3.6&lt;span class="w"&gt; &lt;/span&gt;webassets-2.0&lt;span class="w"&gt; &lt;/span&gt;zipp-3.16.2
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;WARNING:&lt;span class="w"&gt; &lt;/span&gt;Running&lt;span class="w"&gt; &lt;/span&gt;pip&lt;span class="w"&gt; &lt;/span&gt;as&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;root&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;user&lt;span class="w"&gt; &lt;/span&gt;can&lt;span class="w"&gt; &lt;/span&gt;result&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;broken&lt;span class="w"&gt; &lt;/span&gt;permissions&lt;span class="w"&gt; &lt;/span&gt;and&lt;span class="w"&gt; &lt;/span&gt;conflicting&lt;span class="w"&gt; &lt;/span&gt;behaviour&lt;span class="w"&gt; &lt;/span&gt;with&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;system&lt;span class="w"&gt; &lt;/span&gt;package&lt;span class="w"&gt; &lt;/span&gt;manager.&lt;span class="w"&gt; &lt;/span&gt;It&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;recommended&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;use&lt;span class="w"&gt; &lt;/span&gt;a&lt;span class="w"&gt; &lt;/span&gt;virtual&lt;span class="w"&gt; &lt;/span&gt;environment&lt;span class="w"&gt; &lt;/span&gt;instead:&lt;span class="w"&gt; &lt;/span&gt;https://pip.pypa.io/warnings/venv
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;notice&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;A&lt;span class="w"&gt; &lt;/span&gt;new&lt;span class="w"&gt; &lt;/span&gt;release&lt;span class="w"&gt; &lt;/span&gt;of&lt;span class="w"&gt; &lt;/span&gt;pip&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;available:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;23&lt;/span&gt;.0.1&lt;span class="w"&gt; &lt;/span&gt;-&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;23&lt;/span&gt;.2.1
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;notice&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;To&lt;span class="w"&gt; &lt;/span&gt;update,&lt;span class="w"&gt; &lt;/span&gt;run:&lt;span class="w"&gt; &lt;/span&gt;pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;--upgrade&lt;span class="w"&gt; &lt;/span&gt;pip
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;$&lt;span class="w"&gt; &lt;/span&gt;make&lt;span class="w"&gt; &lt;/span&gt;publish
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;pelican&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/gcl-builds/content&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/gcl-builds/public&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-s&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/gcl-builds/publishconf.py&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;Done:&lt;span class="w"&gt; &lt;/span&gt;Processed&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;articles,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;drafts,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;hidden&lt;span class="w"&gt; &lt;/span&gt;articles,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;pages,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;hidden&lt;span class="w"&gt; &lt;/span&gt;pages
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;and&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;draft&lt;span class="w"&gt; &lt;/span&gt;pages&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;.50&lt;span class="w"&gt; &lt;/span&gt;seconds.
&lt;span class="nb"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;finished&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;min
PASS&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="code"></category><category term="gitlab"></category><category term="docker"></category></entry><entry><title>ArchLinux et mise à jour du keyring</title><link href="https://blog.notmyidea.org/archlinux-et-mise-a-jour-du-keyring.html" rel="alternate"></link><published>2023-08-18T00:00:00+02:00</published><updated>2023-08-18T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-08-18:/archlinux-et-mise-a-jour-du-keyring.html</id><summary type="html">
&lt;p&gt;Pour les mises à jour Arch, j&amp;#8217;utilise &lt;a href="https://github.com/Jguer/yay"&gt;yay&lt;/a&gt;. Je
ne fais les mises à jour que de manière semi-régulière, et parfois après une
longue période je me retrouve avec des soucis de clé qui ne sont plus à jour ou&amp;nbsp;manquantes.&lt;/p&gt;
&lt;p&gt;Avec une utilisation fréquente du système, aucun problème …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Pour les mises à jour Arch, j&amp;#8217;utilise &lt;a href="https://github.com/Jguer/yay"&gt;yay&lt;/a&gt;. Je
ne fais les mises à jour que de manière semi-régulière, et parfois après une
longue période je me retrouve avec des soucis de clé qui ne sont plus à jour ou&amp;nbsp;manquantes.&lt;/p&gt;
&lt;p&gt;Avec une utilisation fréquente du système, aucun problème ne se pose car un
service s&amp;#8217;occupe de faire la mise à jour des clés de manière&amp;nbsp;automatique.&lt;/p&gt;
&lt;p&gt;Pour résoudre le souci, il suffit de mettre à jour le paquet
&lt;code&gt;archlinux-keyring&lt;/code&gt;, comme décrit &lt;a href="https://wiki.archlinux.org/title/Pacman/Package_signing"&gt;dans la page Wiki qui va
bien&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo pacman -S archlinux-keyring
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="code"></category><category term="arch-linux"></category></entry><entry><title>Python packaging with Hatch, pipx and Zsh environment variables</title><link href="https://blog.notmyidea.org/python-packaging-with-hatch-pipx-and-zsh-environment-variables.html" rel="alternate"></link><published>2023-08-17T00:00:00+02:00</published><updated>2023-08-17T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-08-17:/python-packaging-with-hatch-pipx-and-zsh-environment-variables.html</id><summary type="html">
&lt;p&gt;It&amp;#8217;s been a while I didn&amp;#8217;t packaged something new. I recently remembered an old
package of mine that needed some attention :
&lt;a href="https://gitlab.com/almet/debts"&gt;debts&lt;/a&gt;. It&amp;#8217;s now time to package it, so I
discovered &lt;a href="https://hatch.pypa.io/"&gt;hatch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;hatch new&amp;nbsp;&amp;#8212;init&lt;/p&gt;
&lt;p&gt;This does the heavy-lifting for you, actually porting the &lt;code&gt;setup.py&lt;/code&gt; files …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;It&amp;#8217;s been a while I didn&amp;#8217;t packaged something new. I recently remembered an old
package of mine that needed some attention :
&lt;a href="https://gitlab.com/almet/debts"&gt;debts&lt;/a&gt;. It&amp;#8217;s now time to package it, so I
discovered &lt;a href="https://hatch.pypa.io/"&gt;hatch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;hatch new&amp;nbsp;&amp;#8212;init&lt;/p&gt;
&lt;p&gt;This does the heavy-lifting for you, actually porting the &lt;code&gt;setup.py&lt;/code&gt; files to the
new way of packaging with python (with a &lt;code&gt;pyproject.toml&lt;/code&gt; file)&lt;/p&gt;
&lt;p&gt;Then &lt;code&gt;hatch shell&lt;/code&gt; will create a development environment, install dependencies,
check the &lt;code&gt;pyproject.toml&lt;/code&gt; file in one command, and give you a shell to test
whatever you need to&amp;nbsp;test.&lt;/p&gt;
&lt;h2 id="isolating-system-packages"&gt;Isolating system&amp;nbsp;packages&lt;/h2&gt;
&lt;p&gt;I discovered that &lt;a href="https://github.com/pypa/pipx"&gt;pipx&lt;/a&gt; is a convenient way to
install user-facing applications on my system. I use multiple virtual
environments for my different projects, but not for the install that are used&amp;nbsp;system-wide.&lt;/p&gt;
&lt;p&gt;pipx seems to solve this, and avoid using &lt;code&gt;sudo pip install x&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="manipulating-env-variables-with-zsh"&gt;Manipulating env variables with&amp;nbsp;Zsh&lt;/h2&gt;
&lt;p&gt;I use &lt;a href="https://www.zsh.org/"&gt;Zsh&lt;/a&gt; as my main shell for years, and I just
discovered that it&amp;#8217;s possible to manipulate environment variables in an easy&amp;nbsp;way.&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re like me, you never remember how to add something to your path. You
can actually use &lt;code&gt;+=&lt;/code&gt;, like&amp;nbsp;this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nv"&gt;path&lt;/span&gt;&lt;span class="o"&gt;+=(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/Users/alexis/.local/bin&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;export&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;PATH
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="code"></category><category term="python"></category><category term="packaging"></category><category term="zsh"></category></entry><entry><title>Profiling and speeding up Django and Pytest</title><link href="https://blog.notmyidea.org/profiling-and-speeding-up-django-and-pytest.html" rel="alternate"></link><published>2023-08-16T00:00:00+02:00</published><updated>2023-08-16T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-08-16:/profiling-and-speeding-up-django-and-pytest.html</id><summary type="html">
&lt;p&gt;&lt;a href="https://yaal.coop/"&gt;Éloi&lt;/a&gt; made &lt;a href="https://github.com/spiral-project/ihatemoney/issues/1214"&gt;a pull request on
IHateMoney&lt;/a&gt; to
speedup the tests, with some great tooling for pytest that I wasn&amp;#8217;t aware&amp;nbsp;of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pypi.org/project/pytest-xdist/"&gt;pytest-xdist&lt;/a&gt; allows to run tests in
parallel, using &lt;code&gt;-n auto&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pypi.org/project/pytest-profiling/"&gt;pytest-profiling&lt;/a&gt; makes it easy
to get the call stack and time the function calls that take most …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">
&lt;p&gt;&lt;a href="https://yaal.coop/"&gt;Éloi&lt;/a&gt; made &lt;a href="https://github.com/spiral-project/ihatemoney/issues/1214"&gt;a pull request on
IHateMoney&lt;/a&gt; to
speedup the tests, with some great tooling for pytest that I wasn&amp;#8217;t aware&amp;nbsp;of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pypi.org/project/pytest-xdist/"&gt;pytest-xdist&lt;/a&gt; allows to run tests in
parallel, using &lt;code&gt;-n auto&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pypi.org/project/pytest-profiling/"&gt;pytest-profiling&lt;/a&gt; makes it easy
to get the call stack and time the function calls that take most of the&amp;nbsp;time.&lt;/li&gt;
&lt;li&gt;You can them analyse the &lt;code&gt;.prof&lt;/code&gt; files with
&lt;a href="https://pypi.org/project/snakeviz/"&gt;Snakeviz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So, I spent some time using these on the tests for &lt;a href="https://chariotte.fr"&gt;La
Chariotte&lt;/a&gt;, because they were&amp;nbsp;slow.&lt;/p&gt;
&lt;p&gt;I found two things&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Login calls are costly in the test, and it&amp;#8217;s possible to speed things up&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;On my machine, calls to resolve my hostname were slow, using 5s during the
tests for a lookup that wasn&amp;#8217;t even&amp;nbsp;useful.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="changing-the-hashing-algorithm-to-speedup-tests"&gt;Changing the hashing algorithm to speedup&amp;nbsp;tests&lt;/h2&gt;
&lt;p&gt;By default, Django uses a slow (but secure !) hashing mechanism for checking
the user credentials. In the tests, we don&amp;#8217;t need this security, but we need
the&amp;nbsp;speed.&lt;/p&gt;
&lt;p&gt;Changing them to use &lt;span class="caps"&gt;MD5&lt;/span&gt; turns out to be a way to greatly speed them up! Here
is how to do it with a pytest fixture&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nd"&gt;@pytest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fixture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;autouse&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;password_hasher_setup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;span class="c1"&gt;# Use a weaker password hasher during tests, for speed&lt;/span&gt;
&lt;span class="n"&gt;settings&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PASSWORD_HASHERS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;span class="s2"&gt;&amp;quot;django.contrib.auth.hashers.MD5PasswordHasher&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="speeding-dns-lookups"&gt;Speeding &lt;span class="caps"&gt;DNS&lt;/span&gt;&amp;nbsp;lookups&lt;/h2&gt;
&lt;p&gt;I&amp;#8217;m currently using a MacOSX machine, and for for whatever reason, the local
lookup was not configured properly on my machine. I don&amp;#8217;t think I did anything
specific to get this wrong, so it might be your case too. Calls to resolve the
local domain were tooking&amp;nbsp;5s.&lt;/p&gt;
&lt;p&gt;If the answer to &lt;code&gt;scutil --get LocalHostName&lt;/code&gt;, &lt;code&gt;hostname&lt;/code&gt; and &lt;code&gt;scutil --get
HostName&lt;/code&gt; differ, then you might be in this case. Here is the fix&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;scutil&lt;span class="w"&gt; &lt;/span&gt;--set&lt;span class="w"&gt; &lt;/span&gt;HostName&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;YourHostName&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content><category term="code"></category><category term="django"></category><category term="pytest"></category></entry><entry><title>Les ignorances affectives</title><link href="https://blog.notmyidea.org/les-ignorances-affectives.html" rel="alternate"></link><published>2023-06-15T00:00:00+02:00</published><updated>2023-06-15T00:00:00+02:00</updated><author><name>Jérémie Lefranc</name></author><id>tag:blog.notmyidea.org,2023-06-15:/les-ignorances-affectives.html</id><summary type="html">&lt;p&gt;Voici quelques morceaux&amp;nbsp;choisis.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cela me posait aussi la question des limites, du cadre. Si dans un tel système, dans lequel la mise en commun est la règle, dans lequel en contrepartie les individus sengagent à ne pas sexclure les uns-les autres, jusquoù lindividu peut-il aller …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;p&gt;Voici quelques morceaux&amp;nbsp;choisis.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cela me posait aussi la question des limites, du cadre. Si dans un tel système, dans lequel la mise en commun est la règle, dans lequel en contrepartie les individus sengagent à ne pas sexclure les uns-les autres, jusquoù lindividu peut-il aller ? Quand dépasse-t-il les bornes ? Et quelles sont ces bornes ? Qui les définit ? Et qui se charge du rappel à la loi au sens de règle commune&amp;nbsp;?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ça fait tout à fait écho à ma situation personnelle : les collectifs lorsqu&amp;#8217;ils sont en création ne se posent pas nécessairement les bonnes questions, entre autre la question des limites de ce qui est acceptable pour&amp;nbsp;chacun·e.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Collaborer dans ce contexte signifie être capable consciemment de laisser ponctuellement plus de place au désir de l&amp;#8217;autre qu&amp;#8217;au sien&amp;nbsp;propre.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;extrait qui suit illustre cette pratique. Le consensus devient alors « le moment où la discussion est suffisamment avancée pour qu&amp;#8217;il n&amp;#8217;y ait plus personne qui s&amp;#8217;oppose à la décision, ce qui ne veut pas dire que tout le monde est forcément d&amp;#8217;accord avec la décision, mais ce qui veut dire que les personnes qui ne sont pas d&amp;#8217;accord ou faiblement d&amp;#8217;accord avec la décision disent bah, je ne suis pas d&amp;#8217;accord ou je n&amp;#8217;aurais pas fait comme ça mais je veux bien qu&amp;#8217;on fasse comme ça et qu&amp;#8217;on essaye&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;Il me semble qu&amp;#8217;il s&amp;#8217;agit d&amp;#8217;une définition qui porte en elle implicitement un aspect important même s&amp;#8217;il peut sembler une évidence, à savoir le fait que pour qu&amp;#8217;un tel processus aboutisse, chacun des individus en présence et je dis bien chacun, doit accepter parfois de lâcher la décision, autrement dit, chacun doit être capable de savoir s&amp;#8217;abstenir d&amp;#8217;imposer son opinion, y compris et surtout peut-être, lorsqu&amp;#8217;il est convaincu d&amp;#8217;avoir&amp;nbsp;raison.&lt;/p&gt;
&lt;p&gt;Pour qu&amp;#8217;une telle conception fonctionne il me semble qu&amp;#8217;elle doit inclure une forme d&amp;#8217;accord tacite de réciprocité, à tout le moins de&amp;nbsp;non-systémiticité.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Autrement dit, une vigilance collective à ce que ce ne soit pas toujours le ou les-mêmes qui lâchent la décision&amp;#8230; Et réciproquement, que ce ne soit pas toujours le ou les mêmes qui l&amp;#8217;emportent&lt;/strong&gt;. Dire cela revient à tenter de se montrer attentif à la dimension relationnelle afin que la dimension efficacité/production ne prenne pas toute la&amp;nbsp;place.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;J&amp;#8217;ai pu malheureusement rencontrer ces situations dans certaines expériences pro. Pour moi, tout est dit ici : faire ensemble c&amp;#8217;est apprendre à décider ensemble. Mais comment faire ? Comment procéder pour que ce qui est invisible (les jeux de pouvoir) puisse être nommé&amp;nbsp;?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ce rôle informel (de leader) se construit à la croisée de besoins du groupe et de peurs de la personne qui&amp;nbsp;l&amp;#8217;assume.&lt;/p&gt;
&lt;p&gt;Ainsi l&amp;#8217;hypothèse est la suivante, le leader répond à la fois à un besoin du groupe, dans ce cas un besoin d&amp;#8217;orientation, et à la fois à ses propres peurs. Et quelles peurs peuvent conduire un individu à courir systématiquement devant les autres, à avoir toujours une idée ou une proposition d&amp;#8217;avance, à souvent en porter davantage que la plupart des autres membres&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Probablement la peur du contrôle. Peur du contrôle qui viendrait frustrer son besoin d&amp;#8217;autonomie et qui le conduirait &lt;em&gt;in fine&lt;/em&gt; à se montrer lui-même&amp;nbsp;contrôlant.&lt;/p&gt;
&lt;p&gt;Ce qui peut le pousser par exemple à effectivement avoir un temps d&amp;#8217;avance sur ses collègues en terme de propositions, afin de ne pas avoir à subir celles des autres membres du groupe. Cela lui évite certes d&amp;#8217;avoir à discuter des propositions des autres (et ainsi il a le sentiment d&amp;#8217;échapper au contrôle), mais qui en conséquence impose tacitement aux autres de discuter essentiellement de ses&amp;nbsp;propositions.&lt;/p&gt;
&lt;p&gt;Ce qui peut aussi, pour les mêmes raisons, le pousser à résister à la mise en place d&amp;#8217;un cadre formel, limitant précisément ses&amp;nbsp;fonctions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ce passage raisonne beaucoup chez moi, j&amp;#8217;aimerai en lire plus sur le&amp;nbsp;sujet.&lt;/p&gt;</content><category term="Lectures"></category><category term="collectif"></category><category term="médiation"></category></entry><entry><title>Micropolitiques des groupes</title><link href="https://blog.notmyidea.org/micropolitiques-des-groupes.html" rel="alternate"></link><published>2023-05-02T00:00:00+02:00</published><updated>2023-05-02T00:00:00+02:00</updated><author><name>David Vercauteren</name></author><id>tag:blog.notmyidea.org,2023-05-02:/micropolitiques-des-groupes.html</id><summary type="html">&lt;h2 id="artifices"&gt;Artifices&lt;/h2&gt;
&lt;p&gt;Des outils qui permettent à un groupe de sortir d&amp;#8217;un mode de fonctionnement, en faisant évoluer ses&amp;nbsp;pratiques.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Décider de faire groupe implique d&amp;#8217;en fabriquer la possibilité.&lt;/strong&gt; Dans un monde capitaliste, on a tendance à reproduire des choses issues de notre&amp;nbsp;culture.&lt;/p&gt;
&lt;p&gt;Les dangers des artifices&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;h2 id="artifices"&gt;Artifices&lt;/h2&gt;
&lt;p&gt;Des outils qui permettent à un groupe de sortir d&amp;#8217;un mode de fonctionnement, en faisant évoluer ses&amp;nbsp;pratiques.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Décider de faire groupe implique d&amp;#8217;en fabriquer la possibilité.&lt;/strong&gt; Dans un monde capitaliste, on a tendance à reproduire des choses issues de notre&amp;nbsp;culture.&lt;/p&gt;
&lt;p&gt;Les dangers des artifices&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le formalisme : tomber amoureux de la forme et ne plus penser aux contenus qu&amp;#8217;elle&amp;nbsp;libère.&lt;/li&gt;
&lt;li&gt;Le moralisme&amp;nbsp;: &lt;/li&gt;
&lt;li&gt;Le méthodisme : considérer que tout est lié à la méthode qu&amp;#8217;on utilise, et qu&amp;#8217;il faut nécessairement une&amp;nbsp;méthode.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;En ce qui concerne les artifices, ceux-ci peuvent prendre la forme dune prescription langagière (interdiction de ping-pong) ou se fabriquer autour dobjets (une statuette, par exemple, dans le cas des détours). Dans tous les cas ils tentent dobliger le groupe à faire attention à un aspect de sa vie collective qui, laissé à létat « naturel », lempoisonne&amp;nbsp;[&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="penser-le-pouvoir-comme-une-relation"&gt;Penser le pouvoir comme une&amp;nbsp;relation&lt;/h2&gt;
&lt;p&gt;Le pouvoir peut être considéré comme ce qui permet de faire évoluer le rapport de force : inciter, induire, détourner, rendre facile ou difficile, élargir, limiter, rendre plus ou moins&amp;nbsp;probable.&lt;/p&gt;
&lt;p&gt;On a tendance à remplacer &lt;strong&gt;la relation&lt;/strong&gt; (le pouvoir comme rapport entre les personnes) &lt;strong&gt;par l&amp;#8217;identité&lt;/strong&gt; (le pouvoir comme étant l&amp;#8217;attribut de&amp;nbsp;quelqu&amp;#8217;un)&lt;/p&gt;
&lt;p&gt;On se focalise alors sur les conséquences des jeux de pouvoir, &lt;strong&gt;en oubliant de venir en questionner les causes, les mécanismes qui produisent les rapports de pouvoir actuels&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;En cherchant à comprendre comment se créent et se produisent les relations de pouvoir, on peut réussir à déjouer les ressentiments personnels (l&amp;#8217;envie de « couper des têtes ») pour essayer de comprendre les mécaniques à l&amp;#8217;œuvre dans le&amp;nbsp;groupe.&lt;/p&gt;
&lt;p&gt;Les enjeux de pouvoir ne sont pas les phénomènes de violence en eux-mêmes, mais un système qui est en place : on peut questionner l&amp;#8217;ensemble des acteurs du&amp;nbsp;groupe.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!hint] Clarifier ses désirs avant de rejoindre un groupe
Puis les comparer avec la réalité du groupe, avant de le rejoindre, peut permettre d&amp;#8217;éviter les mauvaises&amp;nbsp;surprises.&lt;/p&gt;
&lt;p&gt;[!warning] Garder en tête que
L&amp;#8217;analyse, lélaboration, la remise en question des relations de pouvoir, et leur rapport à la liberté est une tâche politique&amp;nbsp;incessante.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="scission"&gt;Scission&lt;/h2&gt;
&lt;p&gt;Les scissions se ressemblent souvent&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Psychologisation : personnalisation de la responsabilité de ce qui à pu se passer / enfermement des uns et des autres dans des postures. Fixation de rôles,&amp;nbsp;binarisation.&lt;/li&gt;
&lt;li&gt;Idéologisation : On cherche à voir ce qui est vrai. On cherche à comprendre quelles sont les différences de&amp;nbsp;valeur.&lt;/li&gt;
&lt;li&gt;Des rumeurs : on sollicite nos proches et on fait exister une version des faits qui nous arrange, et de laquelle on a du mal à se défaire par la suite. On prends nos proches en otage. Cela a pour effet d&amp;#8217;alimenter la haine et de former des alliances extra&amp;nbsp;groupales.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;À ce titre, il y a les mécanismes de déplacement de la parole vers des lieux déjà connus : fonction de lidéologisation où le langage assure la production de camps affirmant détenir la (seule) vérité ; fonction de la psychologisation, par la fixation de rôles, par lattribution de positions liée à « lêtre » et par la binarisation ; fonction du langage, et à travers lui de la rumeur, assurant une circulation de linformation qui a pour seul enjeu de réalimenter la haine et de provoquer sous le même mode des formes dalliances extra-groupales. Ces mécanismes peuvent illustrer ou annoncer des points vitaux, là où est en train de sopérer la bascule du groupe, le passage des limites vers le&amp;nbsp;seuil.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="parler"&gt;Parler&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Les mots performatifs (« nous fonctionnons en autogestion » par exemple) peuvent inciter à des comportements / à des&amp;nbsp;fonctionnements.&lt;/li&gt;
&lt;li&gt;Cet aspect performatif va potentiellement nous laisser désilusioné si les pratiques ne suivent pas ce qu&amp;#8217;on s&amp;#8217;est&amp;nbsp;imaginé.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Idée : prendre du recul sur nos mots d&amp;#8217;ordre, pour voir ce qui nous&amp;nbsp;traverse.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La question se situe donc du côté des capacités dun groupe à faire fuir sa propre langue majeure et à inventer de nouveaux mots capables de lentraîner dans un devenir bâtard, étranger en somme à sa propre culture&amp;nbsp;langagière.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="auto-dissolution"&gt;Auto&amp;nbsp;dissolution&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Mais pourquoi faudrait-il quil soit mis fin à une expérience pour que se produisent les possibilités de sa transformation ? Pourquoi cette capacité de se transformer ne peut-elle pas se penser dans le processus même qui innerve le projet, cest-à-dire dans son milieu ? La réponse est peut-être toute simple : &lt;strong&gt;Lourau ne pense pas les groupes à partir de leur milieu, de leurs devenirs possibles, de leurs mutations mais à partir soit dune vérité qui les fonde, soit dune finalité à réaliser, deux termes qui écrasent, réduisent et binarisent les processus&lt;/strong&gt;. Lorsque lon diminue ainsi lespace de respiration des groupes, ceux-ci peuvent difficilement éviter de suffoquer, de se fatiguer et de nentrevoir quune ou deux portes de sortie : la « fuite individuelle » et larrêt&amp;nbsp;collectif.&lt;/p&gt;
&lt;p&gt;Prenons maintenant un autre point de vue sur cette idée darrêt et situons-le pour commencer dans un type de pratique collective. Ici, limportant se situe dans les processus en cours et dans les manières de les raccorder entre eux. &lt;strong&gt;Une direction existe mais elle est secondaire par rapport aux trajets. Les critères sont liés aux affections de joies ou de tristesses et aux forces actives ou réactives rencontrées à même le chemin. Cest cela qui déterminera les poursuites, les bifurcations et les passages à effectuer.&lt;/strong&gt; On narrête ni ne commence jamais vraiment, on devient tout le temps autre&amp;nbsp;chose.&lt;/p&gt;
&lt;p&gt;Il reste quà « larrêt » on laura compris, nous préférons le « mouvement » et les « mutations ». Recommencer si le chemin sépuise, expérimenter de nouveau là où nous avons arrêté : ça sent le renfermé dans le groupe, ça fritte régulièrement, on na plus envie de venir, autant de critères , alors essayons autrement. &lt;strong&gt;En se disant quil ny a là rien de catastrophique, que lon peut se tromper, et que se le dire, se lavouer et le prendre en compte constituent les meilleurs préalables pour vouloir recommencer&lt;/strong&gt;, ni au début, ni à la fin, mais au milieu, là où la vie se&amp;nbsp;meut…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="souci-de-soi"&gt;Souci de&amp;nbsp;soi&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Une question insiste dans cet écho.Quest-ce qui, dans la constitution de la subjectivité moderne et de la figure du militant qui en découle, rend impensable ou scandaleux ce lien entre politique et spiritualité, entre politique et « technique de soi » ? En quoi cette séparation nous rend vulnérables&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Un groupe peut acquérir un souci du moindre geste, porter une attention aux rotations, à la fertilisation des cultures pour éviter dépuiser le sol, au calendrier des plantations et à leurs associations… tout en développant une expérimentation par à-coups, un savoir et une recherche dans ce domaine. &lt;strong&gt;Et en même temps être plus ou moins incapable dexercer ce même souci à propos de sa pratique collective. Impuissant à penser quil existe également une écologie du groupe et que celle-ci requiert des techniques et des savoirs singuliers en vue de soigner, nourrir, cultiver le biotope&amp;nbsp;collectif.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ce savoir, que Foucault appelle « spiritualité », postule que la connaissance nest jamais donnée au sujet de plein droit mais quil faut que le sujet se modifie, se transforme, devienne dans une certaine mesure autre que lui-même pour avoir droit à cette connaissance. Et celle-ci ne peut sacquérir quà travers un certain nombre dexercices, de techniques de&amp;nbsp;soi.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="reunions"&gt;Réunions&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://micropolitiques.collectifs.net"&gt;micropolitiques des groupes - pour une écologie des pratiques&amp;nbsp;collectives&lt;/a&gt;&lt;/p&gt;</content><category term="Lectures"></category></entry><entry><title>Méditer</title><link href="https://blog.notmyidea.org/mediter.html" rel="alternate"></link><published>2023-04-23T00:00:00+02:00</published><updated>2023-04-23T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-04-23:/mediter.html</id><summary type="html">
&lt;p&gt;Au printemps et à l&amp;#8217;été dernier, j&amp;#8217;ai du traverser une période de vie assez turbulente, et je me suis mis à des séances quotidiennes de&amp;nbsp;méditation.&lt;/p&gt;
&lt;p&gt;Je navais jamais fait ça auparavant, et je dois avouer que je partais un peu sceptique. Traversant une période difficile, j …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Au printemps et à l&amp;#8217;été dernier, j&amp;#8217;ai du traverser une période de vie assez turbulente, et je me suis mis à des séances quotidiennes de&amp;nbsp;méditation.&lt;/p&gt;
&lt;p&gt;Je navais jamais fait ça auparavant, et je dois avouer que je partais un peu sceptique. Traversant une période difficile, jétais vraiment en recherche doutils pour maider à cadrer mes&amp;nbsp;émotions.&lt;/p&gt;
&lt;p&gt;Je nai absolument pas été déçu. Je fais 30 mn de méditation par jour, et ce que je pensais être une contrainte est en fait devenu un plaisir, une vraie&amp;nbsp;ressource.&lt;/p&gt;
&lt;p&gt;Après une séance, je me sens plus calme, centré sur moi-même, moins en prise avec mes émotions. La méditation moffre un endroit où je ne suis pas en train de réfléchir. Je vois les pensées se former, et je contrôle la place que je leur&amp;nbsp;donne.&lt;/p&gt;
&lt;p&gt;Je médite sans être guidé. Lidée pour moi est de me créer un moment de bulle durant laquelle je ne suis pas dérangé, et dont lobjectif est de ne pas donner trop dimportance à mes&amp;nbsp;pensées.&lt;/p&gt;
&lt;p&gt;Bien sur, je ne pense pas que ça fonctionne pour tout le monde et que ce n&amp;#8217;est pas un outil magique, mais il m&amp;#8217;a aidé, alors je&amp;nbsp;partage.&lt;/p&gt;
&lt;p&gt;Voici comment je procède&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Je me mets une ambiance sonore&lt;/strong&gt;, ça maide à me concentrer (détails plus&amp;nbsp;loin).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Je mets tous mes appareils en silencieux&lt;/strong&gt; pour ne pas être&amp;nbsp;dérangé.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Je me mets dans un endroit où je me sens bien&lt;/strong&gt; et je me couvre dune&amp;nbsp;couverture&lt;/li&gt;
&lt;li&gt;Cest parti&amp;nbsp;!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ce-que-je-fais"&gt;Ce que je&amp;nbsp;fais&lt;/h2&gt;
&lt;p&gt;En fin de compte, cest assez simple : jessaye de ne pas penser, ou plutôt, daccepter mes pensées sans leur donner trop dimportance, et sans les&amp;nbsp;minimiser.&lt;/p&gt;
&lt;p&gt;Récemment, je visualise mes pensées comme une sorte de flux, et la méditation est un moyen de men extraire temporairement. Cest une image que jai en tête quand je médite, je mimagine au bord de la rivière de mes idées, et je les vois défiler, parfois certaines memportent avec elles, jessaye de le voir et de men&amp;nbsp;extraire.&lt;/p&gt;
&lt;p&gt;Parfois, je compte mes inspirations, avec lenvie de ne pas me laisser emporter pas les pensées qui arrivent. Au bout dun moment, jai limpression de réussir à mettre mon cerveau en&amp;nbsp;pause.&lt;/p&gt;
&lt;p&gt;Ça ressemble pour moi à ce qui se passe quand je fais une sieste : à un moment mon cerveau décroche et menvoie une sorte de choc de plaisir. La méditation me fait le même effet, mais il est possible détendre ce moment de&amp;nbsp;plaisir.&lt;/p&gt;
&lt;p&gt;Parfois, même, je souris&amp;nbsp;!&lt;/p&gt;
&lt;h2 id="ambiance-sonore"&gt;Ambiance&amp;nbsp;sonore&lt;/h2&gt;
&lt;p&gt;Jutilise le site &lt;a href="https://mynoise.net/"&gt;myNoise&lt;/a&gt; qui propose des générateurs qui fonctionnent bien pour moi (on peut venir modifier les niveaux sonores de chaque son). Jaime bien ce site parce quil regorge de sons, et quil est possible de faire varier dun jour sur lautre le cadre sonore de la&amp;nbsp;méditation.&lt;/p&gt;
&lt;p&gt;Je me mets un timer sur le site, avec un « gong » toutes les 10mn, et un &lt;em&gt;fade-out&lt;/em&gt; au bout de&amp;nbsp;30mn.&lt;/p&gt;
&lt;p&gt;En voici quelques-uns qui fonctionnent bien pour moi&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mynoise.net/NoiseMachines/primevalEuropeanForestSoundscapeGenerator.php"&gt;Les sons de forêt primaire&lt;/a&gt; que joublie en fait assez&amp;nbsp;rapidement.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mynoise.net/NoiseMachines/singingBowlsDroneGenerator.php"&gt;Singing Bowls&lt;/a&gt; (en supprimant certains sons qui font trop « cloche » pour&amp;nbsp;moi)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mynoise.net/NoiseMachines/deepVoiceSoundscape.php"&gt;Harmoniques et&amp;nbsp;voix&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Journal"></category></entry><entry><title>Crucial Conversations</title><link href="https://blog.notmyidea.org/crucial-conversations.html" rel="alternate"></link><published>2023-03-10T00:00:00+01:00</published><updated>2023-03-10T00:00:00+01:00</updated><author><name>Kerry Patterson, Stephen R. Covey, Joseph Grenny, Ron McMillan et Al Switzler</name></author><id>tag:blog.notmyidea.org,2023-03-10:/crucial-conversations.html</id><summary type="html">&lt;p&gt;&lt;em&gt;Résumé rapide du livre, pour s&amp;#8217;y retrouver&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Une « conversation cruciale », c&amp;#8217;est une conversation dans laquelle :
- les opinions divergent
- Il y a des enjeux forts
- Les émotions ont une place&amp;nbsp;importante&lt;/p&gt;
&lt;p&gt;L&amp;#8217;idée principale du livre, c&amp;#8217;est que&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Durant ces conversations, si l&amp;#8217;idée est de faire en …&lt;/li&gt;&lt;/ol&gt;</summary><content type="html">&lt;p&gt;&lt;em&gt;Résumé rapide du livre, pour s&amp;#8217;y retrouver&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Une « conversation cruciale », c&amp;#8217;est une conversation dans laquelle :
- les opinions divergent
- Il y a des enjeux forts
- Les émotions ont une place&amp;nbsp;importante&lt;/p&gt;
&lt;p&gt;L&amp;#8217;idée principale du livre, c&amp;#8217;est que&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Durant ces conversations, si l&amp;#8217;idée est de faire en sorte que tout le monde dise ce qu&amp;#8217;il pense et participe à co-construire les décisions, alors&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Certaines personnes parfois se mettent soit en retrait (silence) soit monopolisent la conversation et forcent leur avis aux&amp;nbsp;autres.&lt;/li&gt;
&lt;li&gt;Si on détecte ces moments, il est possible de restaurer la conversation, en utilisant différentes&amp;nbsp;techniques.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="comprehension-commune"&gt;Compréhension&amp;nbsp;Commune&lt;/h2&gt;
&lt;p&gt;J&amp;#8217;ai du mal à traduire « pool of meaning », mais en gros l&amp;#8217;idée est que lors d&amp;#8217;une conversation, tout le monde participe à générer une compréhension&amp;nbsp;commune.&lt;/p&gt;
&lt;p&gt;La métaphore utilisée peut être celle du « saladier commun » dans lequel tout le monde peut ajouter des éléments pour favoriser cette compréhension&amp;nbsp;commune.&lt;/p&gt;
&lt;h2 id="le-choix-du-fou-dualisme"&gt;Le Choix Du Fou&amp;nbsp;(dualisme)&lt;/h2&gt;
&lt;p&gt;Bien souvent, on imagine qu&amp;#8217;on doit faire le choix entre deux options, par exemple « dire la vérité » et « garder un ami », mais il est possible de &lt;strong&gt;refuser ce choix et de faire les deux&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Le livre est divisé en trois parties&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Avant d&amp;#8217;ouvrir la&amp;nbsp;bouche&lt;/li&gt;
&lt;li&gt;Comment ouvrir la&amp;nbsp;bouche&lt;/li&gt;
&lt;li&gt;Comment&amp;nbsp;terminer&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="partie-1-avant-douvrir-la-bouche"&gt;Partie 1 : Avant D&amp;#8217;ouvrir la&amp;nbsp;Bouche&lt;/h2&gt;
&lt;h3 id="choisir-son-sujet"&gt;Choisir Son&amp;nbsp;Sujet&lt;/h3&gt;
&lt;p&gt;On a tendance à choisir les mauvais sujets de conversation, on a tendance à se foculaiser sur&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ce qui est facile (le sujet sur lequel on peut&amp;nbsp;gagner)&lt;/li&gt;
&lt;li&gt;les sujets récents, plutôt que ce qui est vraiment&amp;nbsp;important.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour se rendre compte qu&amp;#8217;on se trompe de discussion&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vous ressentez de la frustration parce que vous avez l&amp;#8217;impression qu&amp;#8217;on ne parle pas de la bonne chose&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;vous terminez la conversation en étant&amp;nbsp;sceptique&lt;/li&gt;
&lt;li&gt;Vous avez l&amp;#8217;impression d&amp;#8217;avoir déjà eu cette&amp;nbsp;discussion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour trouver le bon sujet, trois étapes&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Dégrouper&lt;/strong&gt;, il y a fréquemment trois choses liées&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Le contenu&lt;/strong&gt;, ce qui pose un souci de manière immédiate&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Le fait qu&amp;#8217;il y ait &lt;strong&gt;un motif qui se répète&lt;/strong&gt;&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;L&amp;#8217;impact de ces répétitions sur &lt;strong&gt;la relation&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Une fois qu&amp;#8217;on s&amp;#8217;est rendu compte des trois points, il est possible de mieux décider du sujet. A quel niveau est-ce que vous souhaitez avoir la conversation&amp;nbsp;?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Choisir&lt;/strong&gt; : qu&amp;#8217;est-ce que vous voulez réellement ? Décidez quelle est la priorité et trouvez qu&amp;#8217;est-ce qui vous bloque pour obtenir ce que vous désirez. Choisissez si vous souhaitez parler du contenu, du motif ou de la&amp;nbsp;relation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Simplifier&lt;/strong&gt; : Résumez de quoi vous souhaitez discuter. Une phrase simple. Attention : pas « comment » on va dire les choses, mais de quoi on veut&amp;nbsp;parler.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Il faut faire attention à éviter que le sujet dérive vers d&amp;#8217;autres sujets. Si le sujet change, faites le de manière&amp;nbsp;consciente&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="volonte-et-bienveillance"&gt;Volonté Et&amp;nbsp;Bienveillance&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;La seule personne que vous pouvez contrôler c&amp;#8217;est&amp;nbsp;vous-même&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Concentrez-vous sur **ce que vous voulez réellement&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quand vous vous retrouvez en train de devenir silencieux ou violent, demandez-vous quelles sont vos motivations&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;Posez-vous la question : « Est-ce que j&amp;#8217;agis de la manière que je souhaite ?&amp;nbsp;»&lt;/li&gt;
&lt;li&gt;Clarifiez ce que vous voulez réellement : pour vous, pour les autres, et pour la&amp;nbsp;relation.&lt;/li&gt;
&lt;li&gt;Demandez-vous ce que vous devriez faire pour aller vers ce que vous souhaitez réellement&amp;nbsp;?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Refusez le dualisme&lt;/strong&gt;&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alors que vous considérez ce que vous voulez, notez quand vous vous piégez vous-même dans un&amp;nbsp;dualisme.&lt;/li&gt;
&lt;li&gt;Cherchez comment faire l&amp;#8217;un &lt;strong&gt;et&lt;/strong&gt;&amp;nbsp;l&amp;#8217;autre.&lt;/li&gt;
&lt;li&gt;Clarifiez ce que vous ne souhaitez pas, ajoutez le à ce que vous voulez et demandez à votre cerveau de chercher des solutions pour retourner sur un dialogue&amp;nbsp;sain.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="decider-de-ses-histoires"&gt;Décider De Ses&amp;nbsp;Histoires&lt;/h3&gt;
&lt;p&gt;Les histoires créent des émotions. Les émotions n&amp;#8217;arrivent pas d&amp;#8217;elles-mêmes, et sont liées à des histoires qu&amp;#8217;on se&amp;nbsp;raconte.&lt;/p&gt;
&lt;p&gt;Il peut être utile de séparer les faits des histoires qu&amp;#8217;on se raconte pour pouvoir repenser nos&amp;nbsp;émotions.&lt;/p&gt;
&lt;p&gt;Le schéma peut être le suivant&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Voir et entendre (les&amp;nbsp;faits)&lt;/li&gt;
&lt;li&gt;Se raconter une&amp;nbsp;histoire&lt;/li&gt;
&lt;li&gt;Ressentir&lt;/li&gt;
&lt;li&gt;Agir&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="partie-2-comment-ouvrir-la-bouche"&gt;Partie 2 : Comment Ouvrir la&amp;nbsp;Bouche&lt;/h2&gt;
&lt;h3 id="apprendre-a-regarder"&gt;Apprendre à&amp;nbsp;Regarder&lt;/h3&gt;
&lt;p&gt;Comment se rendre compte que la sécurité est mise en jeu ? Il faut apprendre à regarder et à capter les signes. Quand une conversation devient stressante, on a tendance à faire les mauvaises choses. Apprenez à regarder&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le contenu &lt;strong&gt;et&lt;/strong&gt; les conditions de la&amp;nbsp;discussion.&lt;/li&gt;
&lt;li&gt;Se rendre compte quand les choses deviennent&amp;nbsp;cruciales&lt;/li&gt;
&lt;li&gt;Quand la conversation devient dangereuse pour l&amp;#8217;une ou l&amp;#8217;autre des&amp;nbsp;parties&lt;/li&gt;
&lt;li&gt;Se rendre compte si on est en train de se déplacer vers de la violence ou bien du&amp;nbsp;silence&lt;/li&gt;
&lt;li&gt;On peut découvrir comment reconnaître de son « style » quand on est sous&amp;nbsp;stress.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="securiser-la-conversation"&gt;Sécuriser la&amp;nbsp;Conversation&lt;/h3&gt;
&lt;p&gt;Pour sécuriser la conversation, il faut réussir à sortir du contenu de la conversation d&amp;#8217;abord. L&amp;#8217;idée étant de se rendre compte quand les gens deviennent violents ou silencieux, pour renouer le dialogue. Une fois que c&amp;#8217;est fait on peut reprendre la&amp;nbsp;discussion.&lt;/p&gt;
&lt;p&gt;Comprendre ce qui crée un risque pour la sécurité&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Objectif commun&lt;/strong&gt; : Est-ce que les autres pensent que leurs objectifs sont importants pour vous ? Est-ce qu&amp;#8217;ils ont confiance dans mes motivations&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Respect mutuel&lt;/strong&gt; : Est-ce que les autres pensent que vous les respectez&amp;nbsp;?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour commencer la discussion, &lt;strong&gt;partagez vos bonnes intentions&lt;/strong&gt; : qu&amp;#8217;est-ce que vous voulez ? Pour vous et pour l&amp;#8217;autre personne&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Excusez-vous&lt;/strong&gt; lorsque c&amp;#8217;est&amp;nbsp;approprié.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contrastez&lt;/strong&gt; pour régler les incompréhensions : Commencez par ce que vous ne voulez pas dire, puis expliquez ce que vous voulez&amp;nbsp;dire.&lt;/p&gt;
&lt;p&gt;Créez un objectif commun lorsque vous vous rendez compte que les choses sont compliquées&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dites que votre objectif est de trouver un but&amp;nbsp;commun.&lt;/li&gt;
&lt;li&gt;Reconnaissez les buts derrière les&amp;nbsp;stratégies&lt;/li&gt;
&lt;li&gt;Inventez un but&amp;nbsp;commun&lt;/li&gt;
&lt;li&gt;Brainstormez les nouvelles&amp;nbsp;stratégies&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="decrire-sa-vision-des-choses"&gt;Décrire Sa Vision Des&amp;nbsp;Choses&lt;/h3&gt;
&lt;h3 id="comprendre-les-visions-des-autres"&gt;Comprendre Les Visions Des&amp;nbsp;Autres&lt;/h3&gt;
&lt;h3 id="ecouter"&gt;Écouter&lt;/h3&gt;
&lt;h2 id="partie-3-comment-terminer"&gt;Partie 3 : Comment&amp;nbsp;Terminer&lt;/h2&gt;
&lt;h3 id="passer-a-laction"&gt;Passer à&amp;nbsp;L&amp;#8217;action&lt;/h3&gt;
&lt;h3 id="oui-mais"&gt;Oui&amp;nbsp;mais…&lt;/h3&gt;
&lt;h3 id="trucs-et-astuces"&gt;Trucs Et&amp;nbsp;Astuces&lt;/h3&gt;</content><category term="Lectures"></category></entry><entry><title>Séparation travail et loisirs</title><link href="https://blog.notmyidea.org/separation-travail-et-loisirs.html" rel="alternate"></link><published>2023-02-25T00:00:00+01:00</published><updated>2023-02-25T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-02-25:/separation-travail-et-loisirs.html</id><summary type="html">&lt;blockquote&gt;
&lt;p&gt;Plus sérieusement, le boulot est le boulot et les loisirs sont aussi la liberté des salariés de faire strictement ce quils veulent de leur temps libre.
Les trucs «conviviaux» des boites «cool», cest un moyen très calculé de brouiller la perception travail/loisir et dinduire en fait …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;blockquote&gt;
&lt;p&gt;Plus sérieusement, le boulot est le boulot et les loisirs sont aussi la liberté des salariés de faire strictement ce quils veulent de leur temps libre.
Les trucs «conviviaux» des boites «cool», cest un moyen très calculé de brouiller la perception travail/loisir et dinduire en fait du présentéisme forcené qui nest rémunéré que de manière très symbolique.
Et qué sapelerio&amp;nbsp;exploitation.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://framapiaf.org/@Monolecte/109924605965899629"&gt;Le Monolecte, sur&amp;nbsp;framapiaf&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Je me questionne sur le double rôle des barrières de protection mises en place au travail, peuvent-elles nous empêcher de créer le monde que lon veut voir advenir&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;La question de la séparation entre le travail et les loisirs est une question qui en ouvre dautres pour moi&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quelle est la place pour le loisir au travail&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;Le travail est-il nécessairement opposé aux loisirs&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;Quelle place donner aux relations professionnelles hors du milieu pro&amp;nbsp;?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rationalisation-et-culpabilite"&gt;Rationalisation et&amp;nbsp;culpabilité&lt;/h2&gt;
&lt;p&gt;Jentends largument de la technique utilisée par les grosses boites pour « paraitre cool » sans rémunérer le travail. Cest un malheureux fait à garder en&amp;nbsp;tête.&lt;/p&gt;
&lt;p&gt;Mais je me demande si derrière cette séparation, il ne se cache pas une idée de sectoriser le travail, de le séparer des aires de loisir, et je ne peux mempêcher dy voir le concept de&amp;nbsp;rationalisation.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La &lt;strong&gt;rationalisation&lt;/strong&gt; est le phénomène culturel […] constituant lapplication de la rationalité à tous les domaines de la vie et depuis tous les échelons de la société. On retrouve ici ce que lon observait dans le rationalisme : &lt;strong&gt;une propension à privilégier la raison sur toutes les autres fonctions du&amp;nbsp;psychisme.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En psychologie, psychiatrie et criminologie, cest lun des moyens pour le cerveau de « neutraliser la culpabilité » dun individu coupable dun acte délictueux ou&amp;nbsp;criminel.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://fr.wikipedia.org/wiki/Rationalisation?oldformat=true"&gt;Rationalisation —&amp;nbsp;Wikipédia&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Est-ce quen séparant le travail du reste de sa vie (pour sen protéger), on neffectue pas une gymnastique mentale dont lobjectif serait de ne pas voir les problèmes qui se déroulent au travail ? De « neutraliser la culpabilité » du travail sur nos vies&amp;nbsp;?&lt;/p&gt;
&lt;h2 id="separer-pourquoi"&gt;Séparer, pourquoi&amp;nbsp;?&lt;/h2&gt;
&lt;p&gt;À ce stade, il me paraît important de situer cette réflexion sur le plan de lidéalisme : les conditions de travail nétant pas les mêmes pour tout le&amp;nbsp;monde.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pouvoir mettre le travail à distance&lt;/strong&gt; (a.k.a ne pas mettre tous ses œufs dans le même panier) me semble être un des éléments majeurs de cette séparation. Cette aptitude est nécessaire dans un monde ou le travail est vécu comme un moyen dentretenir une&amp;nbsp;exploitation.&lt;/p&gt;
&lt;p&gt;De lautre côté du spectre, en situant la réflexion dans un monde où il est possible aux salarié·es de prendre part aux décisions stratégiques, &lt;strong&gt;un des risques de cette rationalisation est de déshumaniser le travail&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Jouer au babyfoot (pour reprendre lexemple du fil mastodon) avec les collègues permettra peut-être davoir ensuite des discussions plus détendues, permettra peut-être de créer autre chose que des relations « de travail&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;Se protéger, oui. Garder ses espaces de liberté, oui. Rationaliser ? Plutôt&amp;nbsp;pas.&lt;/p&gt;
&lt;h2 id="questions-ouvertes"&gt;Questions ouvertes&amp;nbsp;:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Est-ce que des relations créées au travail sont des relations de travail&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;Est-il alors nécessaire de séparer lun de lautre&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;Que permet et quempêche cette séparation&amp;nbsp;?&lt;/li&gt;
&lt;/ul&gt;</content><category term="Journal"></category><category term="Travail"></category><category term="Facilitation"></category><category term="Savoir-Être"></category></entry><entry><title>Tolérance, empathie et limites</title><link href="https://blog.notmyidea.org/tolerance-empathie-et-limites.html" rel="alternate"></link><published>2023-02-24T00:00:00+01:00</published><updated>2023-02-24T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2023-02-24:/tolerance-empathie-et-limites.html</id><summary type="html">&lt;p&gt;Suite à un message de Yannick sur mastodon, je me suis rendu compte que j&amp;#8217;avais une réaction que je ne comprennais pas. Son message&amp;nbsp;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Dans la voiture bar d&amp;#8217;un train Paris -&amp;gt; Quimper ;&lt;br&gt;
Ne pas entendre une blague du « barista » parce que je me suis écarté pour laisser passer …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;p&gt;Suite à un message de Yannick sur mastodon, je me suis rendu compte que j&amp;#8217;avais une réaction que je ne comprennais pas. Son message&amp;nbsp;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Dans la voiture bar d&amp;#8217;un train Paris -&amp;gt; Quimper ;&lt;br&gt;
Ne pas entendre une blague du « barista » parce que je me suis écarté pour laisser passer un passager qui retournait en 1ere classe ;&lt;br&gt;
Faire répéter le barista qui faisait une blague cynique sur la retraire ;&lt;br&gt;
Réaliser que c&amp;#8217;est &lt;a href="https://fr.wikipedia.org/wiki/Michel-%C3%89douard_Leclerc"&gt;Michel Edouard Leclerc&lt;/a&gt; qui vient de passer ;&lt;br&gt;
Se dire que j&amp;#8217;aurais aimé l&amp;#8217;entendre s&amp;#8217;exprimer sur les retraites &amp;#8230;
&lt;a href="https://framapiaf.org/@yaf/109916074251295047"&gt;Yannick François: &amp;#8220;Dans la voiture bar d&amp;#8217;un train…&amp;#8221; -&amp;nbsp;Framapiaf&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Auquel j&amp;#8217;ai&amp;nbsp;répondu&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Je suis pas sur que tu aurais aimé l&amp;#8217;entendre&amp;nbsp;😧&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;J&amp;#8217;essaye d&amp;#8217;analyser pourquoi l&amp;#8217;idée me fait réagir et ce que ça vient chercher chez&amp;nbsp;moi. &lt;/p&gt;
&lt;p&gt;D&amp;#8217;un côté j&amp;#8217;ai une envie de justice : je veux confronter ces personnes au monde qu&amp;#8217;il créent et dont ils profitent, d&amp;#8217;un autre côté ça me fait&amp;nbsp;peur. &lt;/p&gt;
&lt;p&gt;Peur de deux choses&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;D&amp;#8217;avoir de l&amp;#8217;empathie pour eux&lt;/strong&gt; au moment ou je cherche à les écouter et à les&amp;nbsp;comprendre.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Peur de ne pas réussir à les écouter&lt;/strong&gt; parce que je n&amp;#8217;arrive pas à m&amp;#8217;extraire de mon sentiment d&amp;#8217;impuissance et&amp;nbsp;d&amp;#8217;injustice.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Je lis bien ma contradiction ici, et je crois que ça cache que &lt;strong&gt;j&amp;#8217;ai peur de les comprendre&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Comme si les comprendre rajoutait au problème, comme si en les comprenant ça voulait dire que j&amp;#8217;étais d&amp;#8217;accord avec eux. Pourtant c&amp;#8217;est un des méchanismes que j&amp;#8217;aime le plus : discuter avec des gens avec qui on est en désaccord permet de mieux les comprendre, et donc d&amp;#8217;avoir une meilleure compréhension du&amp;nbsp;monde.&lt;/p&gt;
&lt;p&gt;En fait, j&amp;#8217;ai peur que ma compréhension fasse évluer ma manière de penser : que leurs idées percolent, en les écoutant. Peur que mon monde vacille petit à petit. C&amp;#8217;est une peur que j&amp;#8217;ai aussi rencontrée par le passé, lors de discussions avec des personnes dont les propos me paraissaient dépasser les limites de ce qui est acceptable pour moi, parce qu&amp;#8217;elles font vivre des violences à&amp;nbsp;d&amp;#8217;autres.&lt;/p&gt;
&lt;p&gt;Je me rends compte de ce que ça à d&amp;#8217;étrange : d&amp;#8217;un côté je veux une société libre, libertaire, une société où on écoute les points de vue des un·es et des autres avec bienveillance, où on décide ensemble; et de l&amp;#8217;autre côté je refuse des visions du monde qui ne sont pas les miennes. Mais où placer la limite&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Il me semble que c&amp;#8217;est le paradoxe de la tolérance. Mais on peut aussi voir la tolérance comme un contrat social, ce qui revient à dire que pour être tolérant envers quelqu&amp;#8217;un·e; il faut que cette personne soit tolérante envers&amp;nbsp;nous.&lt;/p&gt;
&lt;p&gt;Peut-on écouter sans tolérer ? Est-il possible / souhaitable d&amp;#8217;avoir une discussion avec des personnes intolérantes&amp;nbsp;?&lt;/p&gt;</content><category term="Journal"></category><category term="Limites"></category><category term="Savoir-Être"></category></entry><entry><title>Installation de Mosquitto, InfluxDB, Telegraf et Grafana</title><link href="https://blog.notmyidea.org/installation-de-mosquitto-influxdb-telegraf-et-grafana.html" rel="alternate"></link><published>2022-08-29T00:00:00+02:00</published><updated>2022-08-29T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2022-08-29:/installation-de-mosquitto-influxdb-telegraf-et-grafana.html</id><summary type="html">&lt;p&gt;Récemment, on a m&amp;#8217;a demandé un petit coup de main pour aider à l&amp;#8217;installation d&amp;#8217;une pile logicielle qui permet de stocker des données temporelles et en faire des&amp;nbsp;graphiques.&lt;/p&gt;
&lt;p&gt;Voici donc quelques notes prises durant l&amp;#8217;installation du système, concues pour que des personnes qui n&amp;#8217;y …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Récemment, on a m&amp;#8217;a demandé un petit coup de main pour aider à l&amp;#8217;installation d&amp;#8217;une pile logicielle qui permet de stocker des données temporelles et en faire des&amp;nbsp;graphiques.&lt;/p&gt;
&lt;p&gt;Voici donc quelques notes prises durant l&amp;#8217;installation du système, concues pour que des personnes qui n&amp;#8217;y connaissent pas grand chose puissent s&amp;#8217;y&amp;nbsp;retrouver.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;objectif, c&amp;#8217;est d&amp;#8217;avoir des cartes Arduino qui envoient des données de manière régulière sur un système qui va nous permettre de les stocker et d&amp;#8217;en faire des&amp;nbsp;graphiques.&lt;/p&gt;
&lt;p&gt;Pour ça, nous allons utiliser&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un &lt;em&gt;Broker&lt;/em&gt; &lt;a href="https://mosquitto.org/"&gt;Mosquitto&lt;/a&gt; qui va permettre de receptionner les données depuis les différents &lt;em&gt;clients&lt;/em&gt;, puis de les dispatcher à qui en a besoin&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Une base de données &lt;a href="https://www.influxdata.com/products/influxdb-overview/"&gt;InfluxDB&lt;/a&gt;, qui permet de stocker des données temporelles&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Un &lt;em&gt;agent&lt;/em&gt; &lt;a href="https://www.influxdata.com/time-series-platform/telegraf/"&gt;Telegraf&lt;/a&gt; qui va prendre les données du broker et les stocker dans la base de données&amp;nbsp;InfluxDB.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grafana.com/"&gt;Grafana&lt;/a&gt;, une &lt;em&gt;application web&lt;/em&gt; qui permet de visualiser les données stockées dans&amp;nbsp;InfluxDB.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voici donc un document qui résume les étapes que j&amp;#8217;ai suivies pour mettre en place les différents élements utiles&amp;nbsp;:&lt;/p&gt;
&lt;h2 id="installer-et-se-connecter-au-serveur"&gt;Installer et se connecter au&amp;nbsp;serveur&lt;/h2&gt;
&lt;p&gt;Dans notre cas, on est passé par un &lt;span class="caps"&gt;VPS&lt;/span&gt; chez &lt;span class="caps"&gt;OVH&lt;/span&gt;, qui tourne sous &lt;a href="https://www.debian.org/"&gt;Debian 11&lt;/a&gt;, qui a le mérite d&amp;#8217;être une distribution Linux stable, reconnue et (relativement) simple à&amp;nbsp;utiliser.&lt;/p&gt;
&lt;p&gt;Dans un terminal, vous pouvez vous connecter en utilisant la ligne de commande suivante&amp;nbsp;:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Les lignes suivantes sont des lignes d&amp;#8217;invite de commande, on les rencontre assez souvent dans les documentations sur le web. Le signe &lt;code&gt;$&lt;/code&gt; signifie le début de la ligne de commande. Le signe &lt;code&gt;#&lt;/code&gt; signifie le début des&amp;nbsp;commentaires.&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;ssh&lt;span class="w"&gt; &lt;/span&gt;utilisateur@adresseip
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Une fois connecté, on va mettre à jour les logiciels qui sont présents sur le&amp;nbsp;serveur. &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;update&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# mise à jour des dépôts (la liste des logiciels).&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;upgrade&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# mise à jour des logiciels.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="configurer-les-dns"&gt;Configurer les &lt;span class="caps"&gt;DNS&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Nous allons avoir besoin de deux sous domaines qui redirigent vers le serveur. Bien sur, il faut adapter &lt;code&gt;ndd.tld&lt;/code&gt; et le remplacer par votre nom de domaine&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;moquitto.ndd.tld&lt;/li&gt;
&lt;li&gt;graphs.ndd.tld&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Pour faire ça, chez &lt;span class="caps"&gt;OVH&lt;/span&gt; ça se passe dans la console de « &lt;span class="caps"&gt;OVH&lt;/span&gt; Cloud », direction « Noms de domaines », et puis il faut rajouter deux enregistrements de type « A » qui pointent vers l&amp;#8217;adresse &lt;span class="caps"&gt;IP&lt;/span&gt; du&amp;nbsp;serveur.&lt;/p&gt;
&lt;p&gt;En temps normal, l&amp;#8217;adresse &lt;span class="caps"&gt;IP&lt;/span&gt; vous est fournie par &lt;span class="caps"&gt;OVH&lt;/span&gt;. Si vous avez un doute, vous pouvez l&amp;#8217;obtenir depuis le serveur avec la commande &lt;code&gt;ip a&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="installer-mosquitto"&gt;Installer&amp;nbsp;Mosquitto&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;mosquitto&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# installation depuis les dépots officiels&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Une fois installé, &lt;a href="https://mosquitto.org/documentation/authentication-methods/"&gt;il faut sécuriser l&amp;#8217;installation avec un utilisateur et un mot de passe&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;mosquitto_passwd&lt;span class="w"&gt; &lt;/span&gt;-c&lt;span class="w"&gt; &lt;/span&gt;/etc/mosquitto/passwd&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;username&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ensuite dans le fichier de configuration il faut spécifier où est le fichier qui contient les mots de passe. Pour éditer je recommande l&amp;#8217;utilisation de l&amp;#8217;éditeur de texte &lt;code&gt;nano&lt;/code&gt;. &lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;nano&lt;span class="w"&gt; &lt;/span&gt;/etc/mosquitto/mosquitto.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Voici les lignes à rajouter&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;listener 1883
password_file /etc/mosquitto/passwd
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis il faut relancer le service mosquitto&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;restart&lt;span class="w"&gt; &lt;/span&gt;mosquitto
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Avant de pouvoir utiliser mosquitto, il faut &lt;a href="https://docs.ovh.com/gb/en/dedicated/firewall-network/"&gt;régler le firewall&lt;/a&gt; de chez &lt;span class="caps"&gt;OVH&lt;/span&gt; pour qu&amp;#8217;il accepte de laisser passer les messages pour le broker &lt;span class="caps"&gt;MQTT&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Il faut ajouter une règle dans le Firewall qui laisse passer toutes les connections &lt;span class="caps"&gt;TCP&lt;/span&gt;, avec l&amp;#8217;option « établie&amp;nbsp;».&lt;/p&gt;
&lt;h3 id="verifions-que-tout-fonctionne-comme-prevu"&gt;Vérifions que tout fonctionne comme prévu&amp;nbsp;:&lt;/h3&gt;
&lt;p&gt;Dans une console,&amp;nbsp;écoutons…&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;mosquitto_sub&lt;span class="w"&gt; &lt;/span&gt;-h&lt;span class="w"&gt; &lt;/span&gt;mosquitto.ndd.tld&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1883&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-u&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;username&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;-P&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;password&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;topic
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Et dans une autre envoyons un message&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;mosquitto_pub&lt;span class="w"&gt; &lt;/span&gt;-h&lt;span class="w"&gt; &lt;/span&gt;mosquitto.ndd.tld&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1883&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-u&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;username&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;-P&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;password&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;topic&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Vous deviez voir « 30 » apparaitre dans la première console. Si c&amp;#8217;est bon, tout fonctionne&amp;nbsp;!&lt;/p&gt;
&lt;h2 id="installation-dinfluxdb-et-telegraf"&gt;Installation d&amp;#8217;InfluxDB et&amp;nbsp;Telegraf&lt;/h2&gt;
&lt;p&gt;Coup de bol, InfluxDB propose directement des packets pour Debian, sur leur dépot, qu&amp;#8217;il faut donc ajouter en suivant ces quelques lignes&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;gnupg2&lt;span class="w"&gt; &lt;/span&gt;curl&lt;span class="w"&gt; &lt;/span&gt;wget
wget&lt;span class="w"&gt; &lt;/span&gt;-qO-&lt;span class="w"&gt; &lt;/span&gt;https://repos.influxdata.com/influxdb.key&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt-key&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;-
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;deb https://repos.influxdata.com/debian &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;lsb_release&lt;span class="w"&gt; &lt;/span&gt;-cs&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; stable&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;tee&lt;span class="w"&gt; &lt;/span&gt;/etc/apt/sources.list.d/influxdb.list
sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;update
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis &lt;code&gt;sudo apt install influxdb telegraf&lt;/code&gt; pour&amp;nbsp;l&amp;#8217;installer.&lt;/p&gt;
&lt;p&gt;Ensuite, vous pouvez le lancer maintenant et indiquer au système de le lancer tout seul au démarrage&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--now&lt;span class="w"&gt; &lt;/span&gt;influxdb
$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;systemctl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--now&lt;span class="w"&gt; &lt;/span&gt;telegraf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="configuration-de-telegraf"&gt;Configuration de&amp;nbsp;Telegraf&lt;/h3&gt;
&lt;p&gt;Telegraf permet de faire le lien entre les messages envoyés sur le broker &lt;span class="caps"&gt;MQTT&lt;/span&gt; et la base de données&amp;nbsp;InfluxDB.&lt;/p&gt;
&lt;p&gt;Ici, il faut rentrer un peu plus dans le vif du sujet, et ça dépends des messages que vous avez à&amp;nbsp;stocker.&lt;/p&gt;
&lt;p&gt;Dans notre cas, nous avons trois types de messages&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;/BatVoltage,&amp;nbsp;int&lt;/li&gt;
&lt;li&gt;/Temperature,&amp;nbsp;int&lt;/li&gt;
&lt;li&gt;/&lt;span class="caps"&gt;GPS&lt;/span&gt;,&amp;nbsp;string&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voici un fichier de configuration, qui reste à modifier en fonction des&amp;nbsp;données.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;[global_tags]&lt;/span&gt;
&lt;span class="k"&gt;[agent]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;interval&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;10s&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;round_interval&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;true&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;metric_batch_size&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;1000&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;metric_buffer_limit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;10000&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;collection_jitter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0s&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;flush_interval&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;10s&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;flush_jitter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0s&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;precision&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;0s&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;hostname&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;omit_hostname&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;false&lt;/span&gt;
&lt;span class="k"&gt;[[outputs.influxdb]]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;urls&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;[&amp;quot;http://127.0.0.1:8086&amp;quot;]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;database&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;telegraf&amp;quot;&lt;/span&gt;
&lt;span class="k"&gt;[[inputs.mqtt_consumer]]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;servers&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;[&amp;quot;tcp://127.0.0.1:1883&amp;quot;]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;name_override&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;mqtt_consumer_float&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;topics&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;[&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;&amp;quot;Topic/BatVoltage&amp;quot;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;&amp;quot;Topic/Temperature&amp;quot;,&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;]&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;username&amp;gt;&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&amp;lt;password&amp;gt;&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;data_format&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;value&amp;quot;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;data_type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;quot;integer&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id="installation-de-grafana"&gt;Installation de&amp;nbsp;Grafana&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;apt-get&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;apt-transport-https
sudo&lt;span class="w"&gt; &lt;/span&gt;apt-get&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;-y&lt;span class="w"&gt; &lt;/span&gt;software-properties-common&lt;span class="w"&gt; &lt;/span&gt;wget
sudo&lt;span class="w"&gt; &lt;/span&gt;wget&lt;span class="w"&gt; &lt;/span&gt;-q&lt;span class="w"&gt; &lt;/span&gt;-O&lt;span class="w"&gt; &lt;/span&gt;/usr/share/keyrings/grafana.key&lt;span class="w"&gt; &lt;/span&gt;https://packages.grafana.com/gpg.key
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;deb [signed-by=/usr/share/keyrings/grafana.key] https://packages.grafana.com/oss/deb stable main&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;tee&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;/etc/apt/sources.list.d/grafana.list
sudo&lt;span class="w"&gt; &lt;/span&gt;apt&lt;span class="w"&gt; &lt;/span&gt;update
sudo&lt;span class="w"&gt; &lt;/span&gt;apt-get&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;grafana
sudo&lt;span class="w"&gt; &lt;/span&gt;/bin/systemctl&lt;span class="w"&gt; &lt;/span&gt;daemon-reload
sudo&lt;span class="w"&gt; &lt;/span&gt;/bin/systemctl&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;enable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grafana-server
sudo&lt;span class="w"&gt; &lt;/span&gt;/bin/systemctl&lt;span class="w"&gt; &lt;/span&gt;start&lt;span class="w"&gt; &lt;/span&gt;grafana-server
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="nginx"&gt;Nginx&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo apt install nginx certbot python3-certbot-nginx
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis il faut créer un fichier de configuration dans &lt;code&gt;/etc/nginx/sites-enabled/graphs.ndd.tld&lt;/code&gt; avec le contenu suivant&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;map&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$connection_upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;default&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;close&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;upstream&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;grafana&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;localhost&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;listen&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;server_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;graphs.ndd.tld&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;root&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/usr/share/nginx/html&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;index&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;index.html&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;index.htm&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$http_host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://grafana&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;# Proxy Grafana Live WebSocket connections.&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;location&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;/api/live/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;proxy_http_version&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="s"&gt;.1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Upgrade&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Connection&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$connection_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;proxy_set_header&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;Host&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$http_host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;proxy_pass&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;http://grafana&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Une fois ces fichiers de configuration en place, il faut penser à la mise en place du &lt;span class="caps"&gt;SSL&lt;/span&gt; qui permet d&amp;#8217;avoir une connexion sécurisée&amp;nbsp;(https).&lt;/p&gt;
&lt;p&gt;Il suffit de lancer cette ligne de commande et de suivre les questions posées&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo certbot --nginx
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Voilà ! A ce moment là, tout doit être fonctionnel, il ne reste plus qu&amp;#8217;à configurer le Grafana pour grapher les données enregistrées dans&amp;nbsp;InfluxDB.&lt;/p&gt;</content><category term="code"></category><category term="Administration Système"></category></entry><entry><title>2022, lannée des concerts</title><link href="https://blog.notmyidea.org/2022-lannee-des-concerts.html" rel="alternate"></link><published>2022-08-18T00:00:00+02:00</published><updated>2022-08-18T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2022-08-18:/2022-lannee-des-concerts.html</id><summary type="html">
&lt;p&gt;Je n&amp;#8217;ai jamais autant été à des concerts de ma vie que ces derniers 6 mois ! La réouverture post-covid à coincidé avec le déménagement de la &lt;span class="caps"&gt;MJC&lt;/span&gt; L&amp;#8217;&lt;a href="https://antipode-rennes.fr/"&gt;Antipode&lt;/a&gt;, qui s&amp;#8217;est retrouvée très bien équipée pour accueillir les artistes… et le public&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Ça m&amp;#8217;avait vraiment manqué et …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Je n&amp;#8217;ai jamais autant été à des concerts de ma vie que ces derniers 6 mois ! La réouverture post-covid à coincidé avec le déménagement de la &lt;span class="caps"&gt;MJC&lt;/span&gt; L&amp;#8217;&lt;a href="https://antipode-rennes.fr/"&gt;Antipode&lt;/a&gt;, qui s&amp;#8217;est retrouvée très bien équipée pour accueillir les artistes… et le public&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Ça m&amp;#8217;avait vraiment manqué et j&amp;#8217;ai &lt;em&gt;un peu&lt;/em&gt; abusé des bonnes choses à la reprise. Mais je ne regrette rien. Vive les artistes et les salles de spectacle&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Sur l&amp;#8217;ensemble des concerts de cette année, voici les petites pépites que j&amp;#8217;ai pu rencontrer&amp;nbsp;:&lt;/p&gt;
&lt;h2 id="mad-foxes"&gt;Mad&amp;nbsp;Foxes&lt;/h2&gt;
&lt;p&gt;Sur la petite scène de l&amp;#8217;Antipode (mon repère de l&amp;#8217;année donc) c&amp;#8217;était juste parfait. Du bon gros Post-Punk, direct et groovy, mais… pas trop. Dansant en fait ! En album ça envoie et j&amp;#8217;ai du mal à ne pas les écouter et ré-écouter.&amp;nbsp;Addictif.&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/iFJHBqnmLmM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id="frankie-and-the-witch-fingers"&gt;Frankie and The Witch&amp;nbsp;Fingers&lt;/h2&gt;
&lt;p&gt;Ma découverte lors du festival Lévitation à Angers. Une grosse énergie, bien festif et groovy. Je n&amp;#8217;avais pas réalisé à quel point j&amp;#8217;allais aimer en voyant le concert, mais cet album est maintenant un indispensable pour moi&amp;nbsp;!&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/kJVQnomrNVg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id="san-salvador"&gt;San&amp;nbsp;Salvador&lt;/h2&gt;
&lt;p&gt;Dans un style complètement différent, on part sur de la polyphonie en Occitan. Le résultat est vraiment génial l&amp;#8217;energie qui s&amp;#8217;en dégage est assez magnétique. En live c&amp;#8217;est très chouette parce que prenant : des morceaux qui durent parfois 15mn, et qui passent sans qu&amp;#8217;on s&amp;#8217;en&amp;nbsp;doute…&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/0BD0dcdVBGs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id="orchestre-tout-puissant-marcel-duchamp-otmpd"&gt;Orchestre Tout Puissant Marcel Duchamp (&lt;span class="caps"&gt;OTMPD&lt;/span&gt;)&lt;/h2&gt;
&lt;p&gt;J&amp;#8217;étais fan depuis fort lontemps, et je suivais frénétiquement leurs sorties d&amp;#8217;album, mais le seul concert que j&amp;#8217;avais vu s&amp;#8217;était déroulé sous la pluie et sur une bien grosse scène. Là l&amp;#8217;expérience était plus adaptée, dans la salle « micro » du Stéréolux à Nantes. Bah, il⋅elles nous ont carrément mis en&amp;nbsp;transe.&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/7nerT2JSkFQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2 id="la-jungle"&gt;La&amp;nbsp;Jungle&lt;/h2&gt;
&lt;p&gt;A la batterie un fou furieux, et à la basse et guitare… pas mieux. Pour tout dire je les ai vu deux fois quasiment d&amp;#8217;affilée. La vidéo parle d&amp;#8217;elle même (punk, techno, rock). Génial&amp;nbsp;!&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/oSWzUDwxX4s" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;</content><category term="Musique"></category></entry><entry><title>Réveil difficile</title><link href="https://blog.notmyidea.org/reveil-difficile.html" rel="alternate"></link><published>2022-05-30T00:00:00+02:00</published><updated>2022-05-30T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2022-05-30:/reveil-difficile.html</id><summary type="html">&lt;p&gt;La discussion avait été transcendante. Difficile, même : mes repères s&amp;#8217;estompaient, semblaient flous et d&amp;#8217;un seul coup, se refermer sur moi-même. Je réalisais que ma place était ailleurs. Pas ailleurs physiquement, mais ailleurs &lt;em&gt;mentalement&lt;/em&gt;. Je réalisais que les préceptes qui « dirigeaient » ma vie, de manière tellement certaine, tellement évidente …&lt;/p&gt;</summary><content type="html">&lt;p&gt;La discussion avait été transcendante. Difficile, même : mes repères s&amp;#8217;estompaient, semblaient flous et d&amp;#8217;un seul coup, se refermer sur moi-même. Je réalisais que ma place était ailleurs. Pas ailleurs physiquement, mais ailleurs &lt;em&gt;mentalement&lt;/em&gt;. Je réalisais que les préceptes qui « dirigeaient » ma vie, de manière tellement certaine, tellement évidente, venaient de&amp;nbsp;bouger.&lt;/p&gt;
&lt;p&gt;Comme si je sortais d&amp;#8217;un ensorcellement, que mon comportement — ma perception, même — avaient étés durant des années différents, et que, enfin, je me réveillais. Avec un arrière-goût amer dans le fond du&amp;nbsp;palais.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;incantation ne commençait pas : ses effets finissaient par disparaître. Comme sorti du brouillard, une certitude : bien que je n&amp;#8217;étais pas le seul à réaliser le sort qui m&amp;#8217;avait été réservé, beaucoup d&amp;#8217;autres n&amp;#8217;en avaient pas du tout conscience. Voire même : ceux qui n&amp;#8217;en avaient pas conscience semblaient évoluer dans ce qui me semblait maintenant une béatitude &lt;em&gt;malaisante&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Certain⋅e⋅s s&amp;#8217;injectaient même volontairement des &lt;em&gt;doses&lt;/em&gt; de cette &lt;em&gt;potion&lt;/em&gt; pour que le brouillard ne se dissipe pas. Et je comprends pourquoi : les effets sont puissants, ils rendent les frontières lisses, colorent les interstices, remplacent les malaises par des joies&amp;nbsp;candides.&lt;/p&gt;
&lt;p&gt;Malgré ça, je suis content d&amp;#8217;entrevoir maintenant le monde comme il est réellement. Je suis content de refuser cette vérité qui n&amp;#8217;en est pas une, cette science occulte&amp;nbsp;destructrice.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;entrouvre les yeux par delà le brouillard, et il ne fait pas spécialement beau. J&amp;#8217;aurais voulu,&amp;nbsp;pourtant.&lt;/p&gt;</content><category term="Journal"></category><category term="Poésie"></category></entry><entry><title>LÈre de la critique</title><link href="https://blog.notmyidea.org/lere-de-la-critique.html" rel="alternate"></link><published>2022-05-07T00:00:00+02:00</published><updated>2022-05-07T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2022-05-07:/lere-de-la-critique.html</id><summary type="html">&lt;p&gt;Au détour d&amp;#8217;&lt;a href="https://tutut.delire.party/@almet/108257053355480866"&gt;une discussion sur mastodon&lt;/a&gt; je viens de retrouver ce bout de texte écrit mais jamais&amp;nbsp;publié.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;y parle de ce que formuler des critiques me fait, de la hiérarchisation qui en découle, et de ce qu&amp;#8217;elle me fait à moi mais aussi aux&amp;nbsp;producteurs⋅ices …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Au détour d&amp;#8217;&lt;a href="https://tutut.delire.party/@almet/108257053355480866"&gt;une discussion sur mastodon&lt;/a&gt; je viens de retrouver ce bout de texte écrit mais jamais&amp;nbsp;publié.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;y parle de ce que formuler des critiques me fait, de la hiérarchisation qui en découle, et de ce qu&amp;#8217;elle me fait à moi mais aussi aux&amp;nbsp;producteurs⋅ices.&lt;/p&gt;
&lt;p&gt;——&lt;/p&gt;
&lt;p&gt;Voici un chemin que je semble parcourir depuis quelques années, de manières répétées mais sans m&amp;#8217;en rendre&amp;nbsp;compte.&lt;/p&gt;
&lt;p&gt;Je commence par découvrir : tout est génial, un nouveau monde qui s&amp;#8217;explore, de nouvelles personnes, de nouveaux termes, de nouvelles&amp;nbsp;envies.&lt;/p&gt;
&lt;p&gt;Et puis je cherche mieux, plus fort, plus surprenant. Il faut désormais analyser, comparer, trouver des critères pour hiérarchiser, pour tendre vers mieux — (mais pourquoi ? peut-être pour chercher à montrer que &lt;em&gt;je suis (le) meilleur&lt;/em&gt;&amp;nbsp;?)&lt;/p&gt;
&lt;p&gt;Plusieurs choses semblent découler de ce mécanisme&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Mon niveau d&amp;#8217;attente peut s&amp;#8217;élever, à tel point qu&amp;#8217;il faudrait bientôt la perfection pour me rendre&amp;nbsp;heureux.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Les personnes qui créent ce que j&amp;#8217;écoute, ce que je lis, ce que j&amp;#8217;utilise, ce que je mange, ce que je pense; ces personnes sont comparées à d&amp;#8217;autres. D&amp;#8217;autres qui font mieux, plus grand, plus&amp;nbsp;beau.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Je me renferme sur ce que j&amp;#8217;apprécie pour ses qualités intrinsèques, sans considération pour le contexte. J&amp;#8217;en viens alors à manquer de profiter de ce qui se fait &lt;em&gt;ici&lt;/em&gt;, en y préférant ce qui se fait &lt;em&gt;là bas&lt;/em&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="ne-pas-se-mettre-la-pression"&gt;Ne pas (se) mettre la&amp;nbsp;pression&lt;/h2&gt;
&lt;p&gt;Une chose que j&amp;#8217;ai apprise en devenant brasseur, c&amp;#8217;est qu&amp;#8217;il est facile de &lt;em&gt;se comparer&lt;/em&gt; à d&amp;#8217;autres, de se mettre la pression. Je crois cette pression néfaste me fait rentrer dans un jeu de compétition — et non pas de saine émulation — où je compare toujours ce que je fais a ce que d&amp;#8217;autres font. Je n&amp;#8217;apprécie plus les choses pour ce qu&amp;#8217;elles sont, mais pour ce qu&amp;#8217;elle ne sont pas, pour ce qui leur&amp;nbsp;manque.&lt;/p&gt;
&lt;p&gt;Je produis également cette pression — sur d&amp;#8217;autres — quand je juge et&amp;nbsp;classe.&lt;/p&gt;
&lt;p&gt;Après quelques années à fabriquer de la bière, je sais maintenant «ce que je vaux » et donc les critiques extérieures m&amp;#8217;impactent moins que par le passé, mais avant d&amp;#8217;arriver à cette connaissance de moi même, ces comparaisons ne me facilitaient pas la&amp;nbsp;vie.&lt;/p&gt;
&lt;h2 id="intellectualisation-vs-emotions"&gt;Intellectualisation vs&amp;nbsp;Émotions&lt;/h2&gt;
&lt;p&gt;En cherchant à intellectualiser mes ressentis, en cherchant à analyser ce que je &lt;em&gt;vis&lt;/em&gt;, est-ce que je n&amp;#8217;oublie pas d&amp;#8217;aller puiser dans mes émotions ? En analysant &lt;em&gt;de trop&lt;/em&gt;, est-ce que je ne me prive pas de mes ressentis&amp;nbsp;?&lt;/p&gt;
&lt;h2 id="vers-une-ethique-de-la-critique"&gt;Vers une éthique de la critique&amp;nbsp;?&lt;/h2&gt;
&lt;p&gt;Il semble alors que se poser quelques questions permette d&amp;#8217;y voir plus clair&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Questionner mon niveau d&amp;#8217;attente&lt;/strong&gt; : Quel est mon niveau d&amp;#8217;attente ? Où s&amp;#8217;arrête le « bien » et où commence l&amp;#8217;exceptionnel&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sortir de la compétition&lt;/strong&gt; : Suis-je en (ou en train de rentrer en) compétition avec ce que je juge ? Pourquoi&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Questionner l&amp;#8217;impact de mes critiques&lt;/strong&gt; sur les autres et sur&amp;nbsp;moi-même;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rechercher le plaisir&lt;/strong&gt; : Est-ce que je trouve du plaisir dans le fait de faire une critique ? et si oui est-ce sain ? Est-ce une critique constructive&amp;nbsp;?&lt;/li&gt;
&lt;/ol&gt;</content><category term="Journal"></category><category term="Savoir-Être"></category></entry><entry><title>Fatigue relationnelle</title><link href="https://blog.notmyidea.org/fatigue-relationnelle.html" rel="alternate"></link><published>2022-05-06T00:00:00+02:00</published><updated>2022-05-06T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2022-05-06:/fatigue-relationnelle.html</id><summary type="html">&lt;p&gt;Depuis peu, je me retrouve confronté à mon manque d&amp;#8217;envie d&amp;#8217;être avec d&amp;#8217;autres personnes. Comme si mon quota dinteractions sociales était plus rapidement atteint qu&amp;#8217;il y a quelques&amp;nbsp;années.&lt;/p&gt;
&lt;p&gt;Je ne sais pas exactement d&amp;#8217;où cela vient : si c&amp;#8217;est un des nombreux effets …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Depuis peu, je me retrouve confronté à mon manque d&amp;#8217;envie d&amp;#8217;être avec d&amp;#8217;autres personnes. Comme si mon quota dinteractions sociales était plus rapidement atteint qu&amp;#8217;il y a quelques&amp;nbsp;années.&lt;/p&gt;
&lt;p&gt;Je ne sais pas exactement d&amp;#8217;où cela vient : si c&amp;#8217;est un des nombreux effets psychologiques que le &lt;span class="caps"&gt;COVID&lt;/span&gt; à eu sur moi, si j&amp;#8217;accorde trop de place aux collectifs dans ma vie (travail, habitation, ami⋅es), ou si simplement mes envies ne sont plus les mêmes qu&amp;#8217;il y a quelques années, mais le résultat est bel et bien&amp;nbsp;là.&lt;/p&gt;
&lt;p&gt;Malgré tout j&amp;#8217;ai envie d&amp;#8217;être disponible pour les personnes qui comptent pour moi, et je réfléchis donc à différentes solutions : déménager et habiter en solo, faire moins d&amp;#8217;activités extérieures ou bien m&amp;#8217;isoler plus souvent dans les espaces&amp;nbsp;collectifs.&lt;/p&gt;
&lt;p&gt;Le fait de retourner potentiellement habiter en solo vient questionner mon rapport au collectif omniprésent dans ma vie, et qui jouit d&amp;#8217;un statut particulier pour moi. Le collectif semble être quasiment un &lt;em&gt;objectif en soi&lt;/em&gt;, et donc quelque-part partir de ces espaces collectifs serait une sorte&amp;nbsp;d&amp;#8217;échec.&lt;/p&gt;
&lt;p&gt;Entrouvrir cette possibilité me plaît parce-que ça me pousse à accepter mes limites et à mettre en balance ma qualité de relation aux autres avec mes valeurs collectivistes. Du collectif, oui, mais peut-être avec un mix différent&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Ça fait également écho à ma &lt;a href="conflit.html"&gt;gestion du conflit&lt;/a&gt;. Je me rends compte que j&amp;#8217;ai besoin d&amp;#8217;évoluer dans des collectifs qui partagent cette culture de la gestion du conflit (plutôt que de son&amp;nbsp;évitement).&lt;/p&gt;</content><category term="Journal"></category><category term="Coopération"></category><category term="Savoir-Être"></category><category term="Fatigue"></category><category term="Conflit"></category></entry><entry><title>Conflit</title><link href="https://blog.notmyidea.org/conflit.html" rel="alternate"></link><published>2021-11-11T00:00:00+01:00</published><updated>2021-11-11T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2021-11-11:/conflit.html</id><summary type="html">&lt;p&gt;J&amp;#8217;ai pensé durant de nombreuses années que je savais gérer le conflit, alors que c&amp;#8217;était en fait&amp;nbsp;impensé.&lt;/p&gt;
&lt;p&gt;Ne pas être en conflit signifie parfois s&amp;#8217;adapter aux autres, parfois ne pas (assez) s&amp;#8217;écouter, et ne pas se faire&amp;nbsp;entendre. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Alors que je pensais gérer le conflit …&lt;/strong&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;J&amp;#8217;ai pensé durant de nombreuses années que je savais gérer le conflit, alors que c&amp;#8217;était en fait&amp;nbsp;impensé.&lt;/p&gt;
&lt;p&gt;Ne pas être en conflit signifie parfois s&amp;#8217;adapter aux autres, parfois ne pas (assez) s&amp;#8217;écouter, et ne pas se faire&amp;nbsp;entendre. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Alors que je pensais gérer le conflit, je l&amp;#8217;évitais&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;apprends donc à définir mes attentes de manière claire, à nommer mes désaccords de manière à en faire des sujets de discussion, plutôt que de les lisser pour « tomber d&amp;#8217;accord », quitte à m&amp;#8217;oublier au&amp;nbsp;passage.&lt;/p&gt;
&lt;p&gt;Il me semble maintenant indispensable de me questionner afin de connaître ma position &lt;em&gt;avant&lt;/em&gt; de considérer que mon avis n&amp;#8217;est pas important, et parfois &lt;strong&gt;oser tenir tête&lt;/strong&gt; quand j&amp;#8217;estime que l&amp;#8217;enjeu le&amp;nbsp;justifie.&lt;/p&gt;
&lt;p&gt;Toute la question devient donc la question de la stratégie à adopter pour que les sujets importants à mes yeux soient perçus comme tels pour mes&amp;nbsp;interlocuteurs⋅rices.&lt;/p&gt;
&lt;p&gt;Je suis content de faire cette découverte&amp;nbsp;:-)&lt;/p&gt;</content><category term="Journal"></category><category term="Savoir-Être"></category><category term="Coopération"></category><category term="Conflit"></category></entry><entry><title>Coopération et travail</title><link href="https://blog.notmyidea.org/cooperation-et-travail.html" rel="alternate"></link><published>2021-11-01T00:00:00+01:00</published><updated>2021-11-01T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2021-11-01:/cooperation-et-travail.html</id><summary type="html">&lt;p&gt;Je parle souvent de coopération, que j&amp;#8217;imagine comme « un fonctionnement collectif, dans lequel chacun⋅e y trouve son compte&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;Or je me rends aujourd&amp;#8217;hui compte que cette définition mets de côté les interactions entre les concerné⋅es, et (surtout) leurs&amp;nbsp;modalités.&lt;/p&gt;
&lt;p&gt;Autrement dit : la coopération ne devrait pas …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je parle souvent de coopération, que j&amp;#8217;imagine comme « un fonctionnement collectif, dans lequel chacun⋅e y trouve son compte&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;Or je me rends aujourd&amp;#8217;hui compte que cette définition mets de côté les interactions entre les concerné⋅es, et (surtout) leurs&amp;nbsp;modalités.&lt;/p&gt;
&lt;p&gt;Autrement dit : la coopération ne devrait pas être un moyen que chacun⋅e y trouve son compte, mais &lt;strong&gt;une capacité à faire ensemble&lt;/strong&gt;. C&amp;#8217;est une pratique, plutôt qu&amp;#8217;un&amp;nbsp;résultat.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Je découvre qu&amp;#8217;il s&amp;#8217;agit d&amp;#8217;un mode de fonctionnement qui n&amp;#8217;est pas évident pour tout le monde au quotidien&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Notre mode de fonctionnement actuel au travail est de nous séparer les tâches, décision prise pour diminuer la charge de travail de chacun : il nous faut être&amp;nbsp;efficaces.&lt;/p&gt;
&lt;p&gt;Mais cette séparation ne nous permet pas d&amp;#8217;apprendre à faire ensemble. C&amp;#8217;est une séparation des tâches, plutôt qu&amp;#8217;une réelle&amp;nbsp;coopération.&lt;/p&gt;
&lt;p&gt;Plutôt que de faire les choses en collaboration, on choisit donc de faire les choses chacun⋅e dans son coin, en ayant nos zones d&amp;#8217;expertises, nos décisions qui nous incombent et notre&amp;nbsp;responsabilité.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Je me questionne sur la culture que produit ce mode de fonctionnement&lt;/strong&gt; : j&amp;#8217;ai l&amp;#8217;impression que chez moi cela produit de l&amp;#8217;isolement. J&amp;#8217;aimerais alors plutôt chercher à cultiver le « faire ensemble », pour favoriser les moments d&amp;#8217;échange et de&amp;nbsp;transmission.&lt;/p&gt;
&lt;p&gt;Peut-être est-ce justement parce que les savoirs techniques m&amp;#8217;ennuient rapidement que &lt;strong&gt;j&amp;#8217;ai besoin de ces moments de transmission ? Ceux-cis ne seraient alors pour moi pas un moyen mais un objectif&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Je ne me sens pas toujours plainement satisfait dans mon travail actuel, et je cherche à comprendre ce qui cause cet état : il semble que je m&amp;#8217;ennuie vite quand je me retrouve seul face à des problématiques qui pourraient bénéficier d&amp;#8217;une&amp;nbsp;discussion.&lt;/p&gt;
&lt;h2 id="un-autre-travail-de-deconstruction"&gt;Un autre travail de&amp;nbsp;déconstruction&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Pour ce paragraphe j&amp;#8217;ai longuement hésité entre le « je » et le « on », ayant l&amp;#8217;impression d&amp;#8217;être parfois le sujet et parfois l&amp;#8217;observateur des comportements décrits. J&amp;#8217;ai finalement opté pour le « je » en guise d&amp;#8217;exercice de remise en question&amp;nbsp;personnelle.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Malheureusement, je — on — me mets parfois en compétition, ce qui empêche justement cette coopération / collaboration d&amp;#8217;avoir&amp;nbsp;lieu.&lt;/p&gt;
&lt;p&gt;Plutôt que d&amp;#8217;apprendre par l&amp;#8217;observation — « Ah tiens, ça c&amp;#8217;est une faiblesse chez moi, je devrais travailler dessus », « Ah tiens, c&amp;#8217;est intéressant la manière dont iel s&amp;#8217;empare de telle problématique » — je &amp;#8220;bloque&amp;#8221; parfois l&amp;#8217;apprentissage en me construisant une image de moi-même meilleure qu&amp;#8217;elle n&amp;#8217;est en réalité, peut-être pour éviter d&amp;#8217;affronter mes propres&amp;nbsp;faiblesses.&lt;/p&gt;
&lt;p&gt;Pourtant, les considérer comme des faiblesses semble une étape indispensable pour pouvoir ensuite les&amp;nbsp;soigner.&lt;/p&gt;
&lt;p&gt;Mais impossible d&amp;#8217;activer cette manière de concevoir le rapport à l&amp;#8217;autre quand je suis en compétition : je passe alors mon temps à me rassurer sur ma manière d&amp;#8217;être. Je veux absolument me trouver meilleur que je ne suis en&amp;nbsp;réalité.&lt;/p&gt;
&lt;p&gt;Pour sortir de ce mode de fonctionnement, il me faut chercher à apprendre des autres, souligner mes faiblesses pour les travailler, plutôt que de refuser de les pointer du&amp;nbsp;doigt.&lt;/p&gt;</content><category term="Journal"></category><category term="Coopération"></category><category term="Travail"></category></entry><entry><title>Rentrée</title><link href="https://blog.notmyidea.org/rentree.html" rel="alternate"></link><published>2021-09-13T00:00:00+02:00</published><updated>2021-09-13T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2021-09-13:/rentree.html</id><summary type="html">
&lt;p&gt;Trois semaines de vacances m&amp;#8217;ont fait le plus grand bien. Je suis toujours autant étonné par ma capacité à repousser mes limites quand je suis la tête dans le guidon, ce qui était le cas fin&amp;nbsp;Juillet.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai mis quasiment une semaine à retrouver un rythme « naturel » et …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Trois semaines de vacances m&amp;#8217;ont fait le plus grand bien. Je suis toujours autant étonné par ma capacité à repousser mes limites quand je suis la tête dans le guidon, ce qui était le cas fin&amp;nbsp;Juillet.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai mis quasiment une semaine à retrouver un rythme « naturel » et à ne plus me sentir fatigué, &lt;strong&gt;alors que je pensais prendre soin de moi jusqu&amp;#8217;ici&lt;/strong&gt;. Ma capacité d&amp;#8217;auto-analyse semble donc me faire défaut, il faut que je travaille&amp;nbsp;dessus.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai profité de ces trois semaines de repos pour prendre du recul et pour prendre des décisions de fond. Et ça fait du&amp;nbsp;bien.&lt;/p&gt;
&lt;h2 id="numerique"&gt;Numérique&lt;/h2&gt;
&lt;p&gt;Cette vieille rengaine de mon rapport au numérique continue à suivre son bout de chemin : je me considère comme un drogué qui n&amp;#8217;arrive pas vraiment à décrocher. Ces quelques semaines sans ordinateur ont encore nourri cette envie de m&amp;#8217;éloigner de mon mode de consommation des&amp;nbsp;écrans.&lt;/p&gt;
&lt;p&gt;Je continue ma chasse aux temps d&amp;#8217;écran non souhaités, pour éviter que des heures y disparaissent sans que ce soit quelque chose que j&amp;#8217;ai prévu et souhaité, et je cherche à les remplacer par d&amp;#8217;autres&amp;nbsp;moments.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;avantage étant que j&amp;#8217;ai bien préparé le terrain ces dernières années et que les projets numériques pour lesquels je suis indispensable sont beaucoup moins&amp;nbsp;nombreux.&lt;/p&gt;
&lt;p&gt;Il me reste un chemin non négligeable à parcourir en ce qui concerne la musique electronique : beaucoup de ma pratique se passe sur écran, et les options pour m&amp;#8217;en passer sont&amp;nbsp;couteuses.&lt;/p&gt;
&lt;p&gt;Je me suis remis à faire beaucoup de guitare durant ces trois semaines, et j&amp;#8217;y ai trouvé un plaisir différent. La piste « synthés physiques » commence à se dégager, bien qu&amp;#8217;encore trop couteuse pour que je m&amp;#8217;y&amp;nbsp;abandonne.&lt;/p&gt;
&lt;h2 id="cooperative"&gt;Coopérative&lt;/h2&gt;
&lt;p&gt;On est en train de passer le pas vers un modèle de type &lt;span class="caps"&gt;SCOP&lt;/span&gt; pour la brasserie, et c&amp;#8217;est loin d&amp;#8217;être une mince&amp;nbsp;affaire.&lt;/p&gt;
&lt;p&gt;Contrairement à ce que j&amp;#8217;imaginais au début de ma réflexion, on a fait l&amp;#8217;erreur de monter d&amp;#8217;abord une &lt;span class="caps"&gt;SARL&lt;/span&gt; et on en paye le prix (au sens propre)&amp;nbsp;aujourd&amp;#8217;hui.&lt;/p&gt;
&lt;p&gt;Aussi, ça a été un vrai travail de vouloir lâcher les rennes du bébé : ça veut dire faire un saut vers l&amp;#8217;inconnu, lâcher du contrôle et faire confiance aux autres et au&amp;nbsp;futur.&lt;/p&gt;
&lt;p&gt;Un peu moins de pouvoir mais plus de puissance&amp;nbsp;:-)&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai beaucoup apprécié la manière dont mon associé actuel pense la chose. « Puisqu&amp;#8217;on cherche à créer un lieu de travail démocratique, c&amp;#8217;est la seule solution. » (ou en tout cas c&amp;#8217;est comme ça que j&amp;#8217;ai&amp;nbsp;compris).&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai l&amp;#8217;espoir que certains rapports de pouvoir incarnés par les rôles administratifs de co-gérance vont pouvoir être transcendés par ce nouveau mode&amp;nbsp;d&amp;#8217;organisation.&lt;/p&gt;
&lt;h2 id="limites-et-travail"&gt;Limites et&amp;nbsp;travail&lt;/h2&gt;
&lt;p&gt;J&amp;#8217;ai choisi de remplacer mes semaines de 4 journées (de parfois 10h !) par 5 journées moins longues, et je ne regrette rien&amp;nbsp;jusqu&amp;#8217;ici.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;essaye de tenir des limites horaires qui me font rentrer tôt du travail pour gagner une première partie de soirée dont j&amp;#8217;avais oublié lexistence&amp;nbsp;(16h-19h).&lt;/p&gt;
&lt;p&gt;J&amp;#8217;essaye également de &lt;strong&gt;dire non plus souvent&lt;/strong&gt; aux sollicitations dans le cadre du travail. Je suis souvent étonné par le poids que les attentes extérieures font peser sur ma vie de&amp;nbsp;producteur.&lt;/p&gt;
&lt;p&gt;Le fameux « Être chef⋅fe d&amp;#8217;entreprise, c&amp;#8217;est travailler beaucoup, c&amp;#8217;est se sacrifier pour son travail », et ça passe par bien des interstices : être présent⋅e à l&amp;#8217;&lt;span class="caps"&gt;AMAP&lt;/span&gt; le soir, travailler les week-ends sur des salons, décaler ses horaires pour être arrangeant,&amp;nbsp;etc.&lt;/p&gt;
&lt;p&gt;Des temps parfois agréables et nécessaires, mais qui n&amp;#8217;en sont pas moins du travail. A moi de les considérer comme tels, quitte à les refuser si&amp;nbsp;besoin.&lt;/p&gt;
&lt;h2 id="attentes-relationnelles"&gt;Attentes&amp;nbsp;relationnelles&lt;/h2&gt;
&lt;p&gt;Une de mes révélations de ces vacances a été de me rendre compte des attentes que je fais parfois peser sur mes relations personnelles, et du stress qui en&amp;nbsp;résulte.&lt;/p&gt;
&lt;p&gt;Considérer les relations pour ce qu&amp;#8217;elles sont — plutôt que ce qu&amp;#8217;elles ne sont pas — me permet de faire baisser considérablement la pression que je crée à leur endroit, et de les laisser s&amp;#8217;exprimer de manière plus&amp;nbsp;naturelle.&lt;/p&gt;
&lt;p&gt;Ça me permet également d&amp;#8217;être plus naturel, et de faire baisser la pression que je peux parfois me mettre tout&amp;nbsp;seul.&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Faire de la musique sous Linux</title><link href="https://blog.notmyidea.org/faire-de-la-musique-sous-linux.html" rel="alternate"></link><published>2021-08-04T00:00:00+02:00</published><updated>2021-08-04T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2021-08-04:/faire-de-la-musique-sous-linux.html</id><summary type="html">
&lt;p&gt;&lt;em&gt;Update du 07/08 : ajout des infos sur le noyau temps&amp;nbsp;réel&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Faire de la musique electronique à été pour moi l&amp;#8217;occasion de réinstaller Windows pour pouvoir utiliser &lt;a href="https://www.ableton.com/en/live/"&gt;Ableton Live&lt;/a&gt;, un des logiciels les plus utilisés dans le domaine. J&amp;#8217;étais content de passer du temps à faire de …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;&lt;em&gt;Update du 07/08 : ajout des infos sur le noyau temps&amp;nbsp;réel&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Faire de la musique electronique à été pour moi l&amp;#8217;occasion de réinstaller Windows pour pouvoir utiliser &lt;a href="https://www.ableton.com/en/live/"&gt;Ableton Live&lt;/a&gt;, un des logiciels les plus utilisés dans le domaine. J&amp;#8217;étais content de passer du temps à faire de la musique plutôt que du temps à faire tomber les choses en marche, même si mon éthique n&amp;#8217;était pas tout à fait&amp;nbsp;d&amp;#8217;accord.&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est un choix que je ne regrette pas : je me suis vraiment amusé, j&amp;#8217;ai &lt;a href="https://soundcloud.com/the-lost-triangle/"&gt;fait quelques morceaux&lt;/a&gt; et j&amp;#8217;ai pu goûter au plaisir du truc. Un des avantages d&amp;#8217;apprendre en utilisant des outils &lt;em&gt;mainstrem&lt;/em&gt;, c&amp;#8217;est qu&amp;#8217;il y a beaucoup de ressources disponibles (tutoriels vidéo, ami⋅es), ce qui m&amp;#8217;a beaucoup facilité la tache dans la découverte du&amp;nbsp;domaine.&lt;/p&gt;
&lt;p&gt;Et puis, &lt;a href="https://yohanboniface.me/"&gt;Yohan&lt;/a&gt; m&amp;#8217;a parlé de &lt;a href="https://www.bitwig.com/"&gt;Bitwig&lt;/a&gt;, un logiciel de type « Digital Audio Workstation » (&lt;span class="caps"&gt;DAW&lt;/span&gt;) qui tourne nativement sous Linux, et après une petite scéance de test j&amp;#8217;ai eu envie de creuser un peu le sujet de l&amp;#8217;audio sous&amp;nbsp;Linux.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;occasion donc d&amp;#8217;installer une station musicale sous Linux (j&amp;#8217;utilise &lt;a href="https://archlinux.org/"&gt;Arch Linux&lt;/a&gt;). Ça marche plutôt bien, ce n&amp;#8217;est pas trop long à mettre en place (une fois qu&amp;#8217;on sait quoi faire), même si ça reste moins simple que sous Windows. Je suis très content du résultat&amp;nbsp;!&lt;/p&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Installer Arch n&amp;#8217;est pas très compliqué, mais passe par de la ligne de commande, c&amp;#8217;était l&amp;#8217;occasion de réviser un peu mes classiques, mais je peux comprendre que ce soit intimidant. Si vous voulez avoir un installeur graphique, il me semble que &lt;a href="https://manjaro.org/"&gt;Manjaro&lt;/a&gt; (un dérivé d&amp;#8217;Arch) en propose&amp;nbsp;un.&lt;/p&gt;
&lt;h3 id="configuration-du-noyau-linux"&gt;Configuration du noyau&amp;nbsp;Linux&lt;/h3&gt;
&lt;p&gt;Ça me paraissait compliqué, et pourtant c&amp;#8217;était très simple ! J&amp;#8217;ai utilisé le noyau « linux-zen » avec quelques options spécifiques « threadirqs » et le mode « performance » pour les&amp;nbsp;processeurs.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai du installer un paquet logiciel pour avoir des privilèges « temps réel » indispensable pour l&amp;#8217;audio : sans ça le plugin &lt;span class="caps"&gt;VST&lt;/span&gt; « Kontakt » plantait directement au&amp;nbsp;lancement.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;pacman&lt;span class="w"&gt; &lt;/span&gt;-S&lt;span class="w"&gt; &lt;/span&gt;realtime-privileges
sudo&lt;span class="w"&gt; &lt;/span&gt;gpasswd&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;realtime
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;yay&lt;span class="w"&gt; &lt;/span&gt;linux-zen
yay&lt;span class="w"&gt; &lt;/span&gt;rtirq
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Édition de &lt;code&gt;/etc/default/grub&lt;/code&gt; pour utiliser threadirqs et passer le scheduling du processeur en « performance&amp;nbsp;».&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nv"&gt;GRUB_CMDLINE_LINUX_DEFAULT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;loglevel=3 quiet threadirqs cpufreq.default_governor=performance&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# Regénérer la configuration de grub&lt;/span&gt;
grub-mkconfig&lt;span class="w"&gt; &lt;/span&gt;-o&lt;span class="w"&gt; &lt;/span&gt;/boot/grub/grub.cfg
&lt;span class="c1"&gt;# S&amp;#39;assurer que « fsync » soit bien utilisé par wine.&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;export WINEFSYNC=1&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&amp;gt;&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;~/.profile
&lt;span class="c1"&gt;# Ajout au groupe audio&lt;/span&gt;
sudo&lt;span class="w"&gt; &lt;/span&gt;gpasswd&lt;span class="w"&gt; &lt;/span&gt;-a&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$USER&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;realtime
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le &lt;span class="caps"&gt;DAW&lt;/span&gt; &lt;a href="https://www.bitwig.com/"&gt;Bitwig&lt;/a&gt; que j&amp;#8217;utilise n&amp;#8217;est pas open source, mais tourne nativement sous Linux. Son installation sous Arch est vraiment on ne peut plus simple : &lt;code&gt;yay bitwig-studio&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="vsts-instruments-virtuels"&gt;VSTs (Instruments&amp;nbsp;virtuels)&lt;/h2&gt;
&lt;p&gt;J&amp;#8217;ai acheté quelques &lt;span class="caps"&gt;VST&lt;/span&gt; qui tournent nativement sous Linux mais également d&amp;#8217;autres qui n&amp;#8217;ont pas de version Linux native. C&amp;#8217;est par exemple le cas de&amp;nbsp;Kontakt.&lt;/p&gt;
&lt;p&gt;Dans ce cas, il faut passer par le pont logiciel &lt;a href="https://github.com/robbert-vdh/yabridge"&gt;yabridge&lt;/a&gt; ainsi qu&amp;#8217;une version récente de wine : &lt;a href="https://github.com/Frogging-Family/wine-tkg-git/releases/"&gt;wine-tkg&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour installer yabridge, &lt;code&gt;yay yabridge-bin&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Installation de wine-tkg&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;wget&lt;span class="w"&gt; &lt;/span&gt;https://github.com/Frogging-Family/wine-tkg-git/releases/download/6.11.r4.g0dd44a25/wine-tkg-staging-fsync-git-6.11.r4.g0dd44a25-326-x86_64.pkg.tar.zst
sudo&lt;span class="w"&gt; &lt;/span&gt;pacman&lt;span class="w"&gt; &lt;/span&gt;-U&lt;span class="w"&gt; &lt;/span&gt;wine-tkg-staging-fsync-git-6.11.r4.g0dd44a25-326-x86_64.pkg.tar.zst
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id="installation-dun-vst-kontakt"&gt;Installation d&amp;#8217;un &lt;span class="caps"&gt;VST&lt;/span&gt;&amp;nbsp;(Kontakt)&lt;/h3&gt;
&lt;p&gt;Ensuite, installez le &lt;span class="caps"&gt;VST&lt;/span&gt; dans wine&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;wine&lt;span class="w"&gt; &lt;/span&gt;Kontakt&lt;span class="se"&gt;\ &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;.3.0&lt;span class="se"&gt;\ &lt;/span&gt;Setup&lt;span class="se"&gt;\ &lt;/span&gt;PC.exe
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;patch
wine&lt;span class="w"&gt; &lt;/span&gt;Kontakt&lt;span class="se"&gt;\_&lt;/span&gt;patch&lt;span class="se"&gt;\_&lt;/span&gt;installer&lt;span class="se"&gt;\_&lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="se"&gt;\_&lt;/span&gt;3_0.exe
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Spécifiez l&amp;#8217;emplacement pour les &lt;span class="caps"&gt;VST64&lt;/span&gt; : &lt;code&gt;C:\Program Files\Steinberg\VstPlugins&lt;/code&gt; (emplacement souvent utilisé pour les &lt;span class="caps"&gt;VST2&lt;/span&gt;), je ne sais pas pour quelle raison mais utiliser un emplacement classique peut résoudre des&amp;nbsp;bugs.&lt;/p&gt;
&lt;p&gt;Une fois installé, vous pouvez ajouter le fichier qui contient vos VSTs dans yabridge&amp;nbsp;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;yabridgectl&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/home/alexis/.wine/drive_c/Program Files/Steinberg/VstPlugins&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis faire &lt;code&gt;yabridgectl sync&lt;/code&gt; qui va générer les .&lt;code&gt;so&lt;/code&gt; (format Linux) à partir des &lt;code&gt;.dll&lt;/code&gt; (format&amp;nbsp;Windows).&lt;/p&gt;
&lt;p&gt;Il ne reste plus qu&amp;#8217;à ajouter le dossier qui contient les &lt;span class="caps"&gt;VST&lt;/span&gt; dans Bitwig et c&amp;#8217;est bon&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;J&amp;#8217;utilise sans soucis ces instruments Kontakt&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Una Corda&amp;nbsp;(Piano)&lt;/li&gt;
&lt;li&gt;Studio Drummer&amp;nbsp;(Batterie)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="bitwig-studio-studio-drummer.png" src="/images/musique-linux.png"&gt;&lt;/p&gt;
&lt;h2 id="carte-son"&gt;Carte&amp;nbsp;son&lt;/h2&gt;
&lt;p&gt;J&amp;#8217;utilise une carte son Scarlett 18i8 gen3, qui fonctionne nativement pour sortir de l&amp;#8217;audio et pour en capturer. Par contre certains controles ne sont pas exposés, et le logiciel de contrôle / configuration ne tourne pas sous&amp;nbsp;wine.&lt;/p&gt;
&lt;p&gt;Mais… (coup de bol ?) quelqu&amp;#8217;un s&amp;#8217;est motivé &lt;a href="https://github.com/geoffreybennett/scarlett-gen2"&gt;pour écrire le code noyau&lt;/a&gt; qui permet de faire ça nativement. Ça vient d&amp;#8217;être mergé dans le noyau Linux, et devrait être disponible avec le kernel 5.14, qui devrait bientôt voir le jour (c&amp;#8217;est la &lt;span class="caps"&gt;RC3&lt;/span&gt; au moment ou j&amp;#8217;écris ces&amp;nbsp;lignes).&lt;/p&gt;
&lt;h2 id="controleurs"&gt;Controleurs&lt;/h2&gt;
&lt;p&gt;J&amp;#8217;utilise un &lt;a href="https://novationmusic.com/en/keys/launchkey-mini"&gt;Novation Launchkey mini mk3&lt;/a&gt; avec les mappings proposés par &lt;a href="http://mossgrabers.de/Software/Bitwig/Bitwig.html"&gt;DrivenByMoss&lt;/a&gt; qui permettent de controller nativement Bitwig, c&amp;#8217;est assez bluffant, ça marche tout seul&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Installation&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Télécharger l&amp;#8217;archive qui contient le code depuis le site&amp;nbsp;web&lt;/li&gt;
&lt;li&gt;Extraire le fichier .bwextension dans &lt;code&gt;~/Bitwig Studio/Extensions&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Il semble aussi que &lt;a href="http://www.mossgrabers.de/Software/Bitwig/Bitwig.html"&gt;Push 2 pour Bitwig sous Linux&lt;/a&gt; soit une option interessante (mais bien plus couteuse)&amp;nbsp;!&lt;/p&gt;
&lt;h2 id="vst-natif-linux"&gt;&lt;span class="caps"&gt;VST&lt;/span&gt; natif&amp;nbsp;Linux&lt;/h2&gt;
&lt;p&gt;Il existe un tas de &lt;span class="caps"&gt;VST&lt;/span&gt; open source qui font très bien le taf. J&amp;#8217;aime beaucoup toute la collection de &lt;span class="caps"&gt;VST&lt;/span&gt; sans interface graphique (et open source !) qui est proposée par airwindows, (installables avec &lt;code&gt;yay aur/airwindows-git&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;J&amp;#8217;utilise quelques &lt;span class="caps"&gt;VST&lt;/span&gt; payants également. Ceux que j&amp;#8217;utilise actuellement, et qui sont compatibles Linux&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les instruments de chez &lt;a href="https://tal-software.com/"&gt;&lt;span class="caps"&gt;TAL&lt;/span&gt;&lt;/a&gt;. J&amp;#8217;utilise &lt;a href="https://tal-software.com/products/tal-mod"&gt;&lt;span class="caps"&gt;TAL&lt;/span&gt;-Mod&lt;/a&gt; pour faire des bonnes grosses&amp;nbsp;basses&lt;/li&gt;
&lt;li&gt;Ceux de chez &lt;a href="https://u-he.com/products/"&gt;U-he&lt;/a&gt;. J&amp;#8217;utilise &lt;a href="https://u-he.com/products/bazille/"&gt;Bazille&lt;/a&gt;, un Synthé modulaire polyphonique avec des oscillateurs numériques et de la &lt;span class="caps"&gt;FM&lt;/span&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Une grosse liste est présente sur &lt;a href="http://linux-sound.org/linux-vst-plugins.html"&gt;Linux Sound&lt;/a&gt; si vous voulez creuser&amp;nbsp;:-)&lt;/p&gt;
&lt;h2 id="configuration-pour-du-temps-reel"&gt;Configuration pour du temps&amp;nbsp;réel&lt;/h2&gt;
&lt;p&gt;Edititon du 7/08 : j&amp;#8217;ai pu jouer un peu depuis, et je me suis rendu compte que j&amp;#8217;avais quelques glitches audio quand j&amp;#8217;utilisais wine. J&amp;#8217;ai donc fait quelques changements&amp;nbsp;supplémentaires.&lt;/p&gt;
&lt;p&gt;Ressources&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/robbert-vdh/yabridge#performance-tuning"&gt;Le wiki de yabridge sur le tuning&amp;nbsp;perfomance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/raboof/realtimeconfigquickscan"&gt;Un outil pour faire un scan des problèmes de perf&amp;nbsp;connus&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Journal"></category></entry><entry><title>Vaccination et risques</title><link href="https://blog.notmyidea.org/vaccination-et-risques.html" rel="alternate"></link><published>2021-05-08T00:00:00+02:00</published><updated>2021-05-08T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2021-05-08:/vaccination-et-risques.html</id><summary type="html">&lt;p&gt;Je m&amp;#8217;intéresse un peu tardivement a la question des différents vaccins, pour pouvoir mieux comprendre comment ceux cis fonctionnent et quels sont les risques&amp;nbsp;liés.&lt;/p&gt;
&lt;p&gt;Cette réflexion n&amp;#8217;est en aucun cas pro- ou anti- vaccin, mais cherche simplement à essayer de comprendre et faire un petit tour d …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je m&amp;#8217;intéresse un peu tardivement a la question des différents vaccins, pour pouvoir mieux comprendre comment ceux cis fonctionnent et quels sont les risques&amp;nbsp;liés.&lt;/p&gt;
&lt;p&gt;Cette réflexion n&amp;#8217;est en aucun cas pro- ou anti- vaccin, mais cherche simplement à essayer de comprendre et faire un petit tour d&amp;#8217;horizon des critiques formulées à leur égard par les scientifiques. Considérez cette page comme des notes que j&amp;#8217;ai fait pour moi même et que je&amp;nbsp;publie.&lt;/p&gt;
&lt;h2 id="les-differents-types-de-virus"&gt;Les différents types de&amp;nbsp;virus&lt;/h2&gt;
&lt;p&gt;J&amp;#8217;ai d&amp;#8217;abord essayé de comprendre quels étaient les différents types de&amp;nbsp;virus.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type de virus&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Virus nus&lt;/td&gt;
&lt;td&gt;Une coque de protéine (capside), qui renferme le matériel génétique du virus.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Virus enveloppés&lt;/td&gt;
&lt;td&gt;En plus de la capside, une enveloppe avec une protéine de surface (« Spike » dans le cas de &lt;span class="caps"&gt;SARS&lt;/span&gt;-&lt;span class="caps"&gt;COV2&lt;/span&gt;). Ici « spike » permet aux virus de pénétrer dans les cellules pour y libérer son matériel génétique.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Il existe différents types de matériel génétique : l&amp;#8217;&lt;span class="caps"&gt;ADN&lt;/span&gt; et l&amp;#8217;&lt;span class="caps"&gt;ARN&lt;/span&gt;. &lt;/p&gt;
&lt;p&gt;L&amp;#8217;&lt;span class="caps"&gt;ADN&lt;/span&gt; contient des gènes, qui détiennent les « plans » pour la fabrication des protéines (qui permettent d&amp;#8217;effectuer les processus biologiques de nos cellules) ; L&amp;#8217;&lt;span class="caps"&gt;ADN&lt;/span&gt; doit d&amp;#8217;abord être transcris en ARNm (transcription) puis ensuite il y a une conversion de l&amp;#8217;&lt;span class="caps"&gt;ARN&lt;/span&gt; vers la protéine, appelée « traduction&amp;nbsp;». &lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type de matériel génétique&lt;/th&gt;
&lt;th&gt;Fonctionnement du virus&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span class="caps"&gt;ADN&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Injecte directement son matériel génétique dans la cellule qu&amp;#8217;il infecte. La cellule va ensuite transcrire l&amp;#8217;&lt;span class="caps"&gt;ADN&lt;/span&gt; en &lt;span class="caps"&gt;ARN&lt;/span&gt;, puis fabriquer les protéines virales, qui vont s&amp;#8217;assembler pour former de nouveaux virus et coloniser les autres cellules /individus en cascade.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span class="caps"&gt;ARN&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;C&amp;#8217;est le cas du &lt;span class="caps"&gt;SARS&lt;/span&gt;-&lt;span class="caps"&gt;COV2&lt;/span&gt;. Le virus injecte directement l&amp;#8217;&lt;span class="caps"&gt;ARN&lt;/span&gt;, comme au dessus.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="les-vaccins"&gt;Les&amp;nbsp;vaccins&lt;/h2&gt;
&lt;p&gt;Les vaccins stimulent notre système immunitaire pour faire face au virus / bactéries le jour ou c&amp;#8217;est utile. L&amp;#8217;idée étant de neutraliser les agents infectieux avant qu&amp;#8217;ils ne fassent des&amp;nbsp;dégâts.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type de vaccin&lt;/th&gt;
&lt;th&gt;Fonctionnement&lt;/th&gt;
&lt;th&gt;Inconvénients&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Injection du virus inactivé&lt;/td&gt;
&lt;td&gt;On injecte le virus inactivé (formaldheide ou traitement physique type irradiation aux &lt;span class="caps"&gt;UV&lt;/span&gt;). Le virus est toujours immunisant.&lt;/td&gt;
&lt;td&gt;- Souvent assez peu immunogènes. Il faut donc ajouter des adjuvants (sels d&amp;#8217;aluminium, formaldhéide…). &lt;br /&gt;- Il faut aussi multiplier les doses&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vaccin vivant&lt;/td&gt;
&lt;td&gt;Souvent, une souche thermosensible du virus, qui fait qu&amp;#8217;il n&amp;#8217;est plus capable de se multiplier à la température de notre corps. Plus immunogènes que les virus inactivés&lt;/td&gt;
&lt;td&gt;Plus grande prise de risque, notamment pour les personnes fragiles, immunodéprimées&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vaccins à protéines recombinantes&lt;/td&gt;
&lt;td&gt;Plutôt que d&amp;#8217;injecter le virus entier, on injecte une protéine du virus (par ex la protéine de surface), pour stimuler notre système immunitaire.&lt;br /&gt;&lt;br /&gt;On isole le gène qui permet de fabriquer la protéine en question, et on fait en sorte que le gène s&amp;#8217;exprime, pour le multiplier en labo (bioreacteurs, fermenteurs) puis on lui adjoint des adjuvants et on l&amp;#8217;injecte. (protéine vaccinante)&lt;/td&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="les-vaccins-genetiques-de-type-arnm"&gt;Les vaccins « génétiques » de type&amp;nbsp;ARNm&lt;/h2&gt;
&lt;p&gt;Ils consistent à injecter dans les cellules de la personne à vacciner, une partie du matériel génétique du virus, qui détient les « plans » pour fabriquer la protéine de&amp;nbsp;surface.&lt;/p&gt;
&lt;p&gt;On fait fabriquer ces protéines directement par les cellules des personnes à vacciner. Ça peut être de l&amp;#8217;&lt;span class="caps"&gt;ARN&lt;/span&gt; ou de l&amp;#8217;&lt;span class="caps"&gt;ADN&lt;/span&gt;. L&amp;#8217;&lt;span class="caps"&gt;ADN&lt;/span&gt; ou l&amp;#8217;&lt;span class="caps"&gt;ARN&lt;/span&gt; sont encapsulés dans un&amp;nbsp;vecteur.&lt;/p&gt;
&lt;p&gt;Dans le cadre de l&amp;#8217;&lt;span class="caps"&gt;ARN&lt;/span&gt;, il s&amp;#8217;agit d&amp;#8217;une nano-particule de graisse, qui vient se fixer directement sur les nos cellules (la membrane&amp;nbsp;plasmique).&lt;/p&gt;
&lt;h2 id="les-vaccins-genetiques-de-type-adn"&gt;Les vaccins « génétiques » de type &lt;span class="caps"&gt;ADN&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;Il est aussi possible d&amp;#8217;avoir des vaccins génétiques à &lt;span class="caps"&gt;ADN&lt;/span&gt;. On utilise dans ce cas un autre virus (un adénovirus, rendu inactif), comme vecteur pour pouvoir injecter l&amp;#8217;&lt;span class="caps"&gt;ADN&lt;/span&gt;. Dans ce cas on vient éliminer une partie de l&amp;#8217;&lt;span class="caps"&gt;ADN&lt;/span&gt; de l&amp;#8217;adénovirus et on le remplace par de l&amp;#8217;&lt;span class="caps"&gt;ADN&lt;/span&gt; qui code les protéines qu&amp;#8217;on cherche à reproduire (celles de surface « Spike » dans le cas du &lt;span class="caps"&gt;SARS&lt;/span&gt;-&lt;span class="caps"&gt;COV2&lt;/span&gt;).&lt;/p&gt;
&lt;p&gt;On appelle ça un virus&amp;nbsp;recombinant.&lt;/p&gt;
&lt;p&gt;l&amp;#8217;&lt;span class="caps"&gt;ARN&lt;/span&gt; du virus &lt;span class="caps"&gt;SARS&lt;/span&gt;-&lt;span class="caps"&gt;COV2&lt;/span&gt; à été converti en &lt;span class="caps"&gt;ADN&lt;/span&gt; par des enzymes virales (trouvées dans les rétrovirus) « transcriptases inverses » puis ensuite ajoutées dans&amp;nbsp;l&amp;#8217;adénovirus.&lt;/p&gt;
&lt;h3 id="risques"&gt;Risques&lt;/h3&gt;
&lt;p&gt;Selon Christian Vélot et le &lt;span class="caps"&gt;CRIIGEN&lt;/span&gt; (association anti-&lt;span class="caps"&gt;OGM&lt;/span&gt;), les risques sont les suivants&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Risques d&amp;#8217;intégration de l&amp;#8217;&lt;span class="caps"&gt;ADN&lt;/span&gt;&lt;/strong&gt; vaccinant dans nos propres chromosomes. Il y a eu des tests dans le cas de thérapies géniques (ou on essaye de remplacer un gène muté par un gène « réparateur / normal »), le problème étant qu&amp;#8217;on ne maitrise pas l&amp;#8217;endroit ou il peut s&amp;#8217;insérer. Dans certains cas, l&amp;#8217;&lt;span class="caps"&gt;ADN&lt;/span&gt; réparateur est allé s&amp;#8217;insérer dans des oncogènes, menant à des&amp;nbsp;leucémies.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Risque de réactions immunitaires inopportunes&lt;/strong&gt;&amp;nbsp;(immuno-toxicité)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="risques-communs-aux-vaccins-arnm-et-adn"&gt;Risques communs aux vaccins ARNm et &lt;span class="caps"&gt;ADN&lt;/span&gt;&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Les virus ont une grande capacité à échanger des fragments de leur matériel génétique respectif dès lors que les génomes viraux concernés sont de même nature (soit &lt;span class="caps"&gt;ADN&lt;/span&gt;, soit &lt;span class="caps"&gt;ARN&lt;/span&gt;) et quils partagent des séquences (des gènes) qui se ressemblent. Le processus bien connu qui régit ces échanges sappelle la recombinaison (et lorsque cette recombinaison a lieu entre séquences d&lt;span class="caps"&gt;ADN&lt;/span&gt; ou d&lt;span class="caps"&gt;ARN&lt;/span&gt; qui se ressemblent, on parle de recombinaison homologue). Ce phénomène de recombinaison nest pas réservé à l&lt;span class="caps"&gt;ADN&lt;/span&gt; ou l&lt;span class="caps"&gt;ARN&lt;/span&gt; viral mais les séquences virales sont connues pour faire lobjet de nombreuses recombinaisons (on dit quelles sont très « recombinogènes »). Il résulte de &lt;strong&gt;ces recombinaisons, entre matériels génétiques viraux&lt;/strong&gt;, des virus dits « recombinants » dont le ou les gène(s) qui a (ont) été le site de ces échanges sont dits « mosaïques », cest-à-dire &lt;strong&gt;constitués en partie de séquences provenant du virus 1 et de séquences provenant du virus 2&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;ce phénomène ne peut se produire que si du matériel génétique provenant dau moins deux virus se retrouve dans les mêmes cellules, ce qui est fort heureusement extrêmement rare dans la nature puisque cela implique que des mêmes cellules soient co-infectées par au moins deux&amp;nbsp;virus. &lt;/p&gt;
&lt;p&gt;&lt;a href="https://criigen.org/wp-content/uploads/2020/12/2020-09_Note-dExpertise-Vaccins-GM_C.Ve%CC%81lot-06.pdf"&gt;Christian Vélot&lt;/a&gt;, &lt;span class="caps"&gt;CRIIGEN&lt;/span&gt;, Septembre&amp;nbsp;2020&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Selon Christian Vélot, il y a un risque de recombinaison virale : les virus de même nature (&lt;span class="caps"&gt;ARN&lt;/span&gt; entre eux, &lt;span class="caps"&gt;ADN&lt;/span&gt; entre eux) aiment échanger du matériel génétique entre eux. Et c&amp;#8217;est d&amp;#8217;autant plus fréquent entre virus de la même&amp;nbsp;famille.&lt;/p&gt;
&lt;p&gt;Les virus recombinants peuvent être plus ou moins dangereux, et il est difficile de le savoir à l&amp;#8217;avance. &lt;span class="caps"&gt;H1N1&lt;/span&gt; étant par exemple un virus&amp;nbsp;recombinant.&lt;/p&gt;
&lt;p&gt;Pour que ça arrive, il faut que la même cellule soit infectée par deux virus au même moment. &lt;strong&gt;Ce qui est extrêmement peu probable&lt;/strong&gt;. Dès lors qu&amp;#8217;on introduit du matériel génétique viral dans une cellule, il suffit qu&amp;#8217;un autre virus de même nature infecte la même cellule pour qu&amp;#8217;il y ait un échange entre le matériel génétique vaccinant et&amp;nbsp;contaminant.&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est très très peu probable, mais dans le cas ou ça arriverait, cela pourrait mener à émergence d&amp;#8217;un nouveau&amp;nbsp;virus. &lt;/p&gt;
&lt;p&gt;Suite à la lecture d&amp;#8217;&lt;a href="https://www.mdpi.com/2076-393X/9/5/453"&gt;un papier sur les risques liés aux vaccins de type &lt;span class="caps"&gt;ARN&lt;/span&gt;&lt;/a&gt;, il semble qu&amp;#8217;il faille deux choses&amp;nbsp;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;As with other viral vectors, a potential hazard associated with adenoviral vector based vaccines is the reversion to replication competency following homologous recom-bination&amp;nbsp;events.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Que le virus inactivé se réactive&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Qu&amp;#8217;il y ait une recombinaison liée à la présence d&amp;#8217;un autre virus dans la même&amp;nbsp;cellule.&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;Nevertheless, the absence of replication competent adenoviruses (&lt;span class="caps"&gt;RCA&lt;/span&gt;) should be demonstrated by the manufacturers for each batch release of the adenoviral vectored vaccine candidate as part of the routine quality&amp;nbsp;control &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Il est tout de même demandé aux fabriquant de vaccins de prouver que les vaccins/virus ne peuvent pas se&amp;nbsp;reproduire.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Emergence of &lt;span class="caps"&gt;RCA&lt;/span&gt; might also occur after administration of the vaccine by homologous recombination events between the adenoviral vector based vaccine sequences and the parental wild-type virus or other related human adenovirus infecting the same host&amp;nbsp;cell.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C&amp;#8217;est pour cette raison que les adenovirus qui sont utilisés sont des virus qu&amp;#8217;on ne trouve pas chez&amp;nbsp;l&amp;#8217;homme.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the scenario that &lt;span class="caps"&gt;RCA&lt;/span&gt; and replication competent chimeric adenoviral vectors are shed by vaccinees, the general population and the environment might be exposed. Potential adverse effects on human health and the environment of replication competent chimeric viruses are unclear although a decreased replication capacity of adenovirus chime-ras from different species has been&amp;nbsp;reported.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C&amp;#8217;est donc un risque réel qui est pris, mais qui a été&amp;nbsp;étudié. &lt;/p&gt;
&lt;h2 id="les-types-de-vaccins-contre-sars-cov2"&gt;Les types de vaccins contre &lt;span class="caps"&gt;SARS&lt;/span&gt;-&lt;span class="caps"&gt;COV2&lt;/span&gt;&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Nom&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sinofarm (chinois)&lt;/td&gt;
&lt;td&gt;Vaccin inactivé&lt;/td&gt;
&lt;td&gt;Releasé avant les essais cliniques de phase 3.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Novavax&lt;/td&gt;
&lt;td&gt;Protéines recombinantes&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Medicago (Canada)&lt;/td&gt;
&lt;td&gt;Protéine recombinante&lt;/td&gt;
&lt;td&gt;Protéines de la capside, donc pas la protéine de surface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sanofi-pasteur&lt;/td&gt;
&lt;td&gt;Protéine recombinante&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pfizer-BioNTech&lt;/td&gt;
&lt;td&gt;ARNm&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Moderna&lt;/td&gt;
&lt;td&gt;ARNm&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Astrazeneca&lt;/td&gt;
&lt;td&gt;&lt;span class="caps"&gt;ADN&lt;/span&gt; et adénovirus recombinant&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spoutnik&lt;/td&gt;
&lt;td&gt;&lt;span class="caps"&gt;ADN&lt;/span&gt; et adénovirus recombinant&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</content><category term="Journal"></category><category term="Santé"></category><category term="Vaccination"></category><category term="Covid"></category></entry><entry><title>Facebook, compétition, éthique et marketing.</title><link href="https://blog.notmyidea.org/facebook-competition-ethique-et-marketing.html" rel="alternate"></link><published>2021-01-26T00:00:00+01:00</published><updated>2021-01-26T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2021-01-26:/facebook-competition-ethique-et-marketing.html</id><summary type="html">
&lt;p&gt;En créant la &lt;a href="https://www.vieuxsinge.com"&gt;brasserie du Vieux Singe&lt;/a&gt;, le fait de créer une &lt;em&gt;page facebook&lt;/em&gt; s&amp;#8217;est posé comme une évidence. Il s&amp;#8217;agit de l&amp;#8217;outil &lt;em&gt;de facto&lt;/em&gt; pour communiquer avec son « audience&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai donc créé une page pour notre nouvelle entreprise, et au fur et à mesure je …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;En créant la &lt;a href="https://www.vieuxsinge.com"&gt;brasserie du Vieux Singe&lt;/a&gt;, le fait de créer une &lt;em&gt;page facebook&lt;/em&gt; s&amp;#8217;est posé comme une évidence. Il s&amp;#8217;agit de l&amp;#8217;outil &lt;em&gt;de facto&lt;/em&gt; pour communiquer avec son « audience&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai donc créé une page pour notre nouvelle entreprise, et au fur et à mesure je me suis mis à utiliser ce compte pour « suivre » les pages des autres brasseries, question de se tenir&amp;nbsp;informé.&lt;/p&gt;
&lt;p&gt;Et puis je me suis rendu compte qu&amp;#8217;être surexposé aux nouvelles des autres brasseries à suscité chez moi un sentiment de faiblesse. Une sorte de « syndrome de la compétition ». Au début, je suis rentré un peu dans le jeu : toujours plus, toujours&amp;nbsp;mieux.&lt;/p&gt;
&lt;p&gt;Il faut tenir les gens informés, avoir toujours des nouvelles fraîches. Sans me l&amp;#8217;avouer, je crois que je cherchais quelque part à impressionner, à être &lt;em&gt;cool&lt;/em&gt;. Comme si la nouveauté était plus importante que le fait de « faire les choses bien », dans les règles de l&amp;#8217;art, en portant mes&amp;nbsp;valeurs.&lt;/p&gt;
&lt;p&gt;Je me retrouvais à créer un avatar, une marque que les gens doivent aimer. On en vient presque à oublier qu&amp;#8217;on est faillibles, parfois fragiles. Surtout, il ne faut pas montrer ce côté là. Une sorte de vision viriliste de&amp;nbsp;l&amp;#8217;entreprenariat.&lt;/p&gt;
&lt;p&gt;Je crois maintenant que reconnaître cette fragilité est important, c&amp;#8217;est ce qui me permet de voir les choses en face, de refuser une dissociation cognitive entre d&amp;#8217;un côté ce que je veux être et de l&amp;#8217;autre ce que je suis&amp;nbsp;vraiment.&lt;/p&gt;
&lt;p&gt;Je ne peux m&amp;#8217;empêcher de faire un parallèle avec Mozilla, chez qui cette dissociation — image lisse d&amp;#8217;un côté, réalité de fonctionnement pyramidal de l&amp;#8217;autre — m&amp;#8217;a posé problème durant mon passage la&amp;nbsp;bas.&lt;/p&gt;
&lt;p&gt;Les stratégies de communication demandent de maintenir tout le monde excité en permanence, amenant à une baisse de la nuance dans mon discours. Mais en suivant cette logique, que se passera-t-il ensuite ? Il devient de plus en plus compliqué d&amp;#8217;être&amp;nbsp;original…&lt;/p&gt;
&lt;h2 id="marketing-ethique"&gt;Marketing&amp;nbsp;éthique&lt;/h2&gt;
&lt;p&gt;Nous avons décidé de garder notre page Facebook, parce que — qu&amp;#8217;on le souhaite ou non — beaucoup de personnes utilisent ce média pour se tenir au courant, mais nous avons également décidé de de changer la manière dont nous l&amp;#8217;utilisons&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Facebook n&amp;#8217;est plus l&amp;#8217;endroit où nous postons nos messages, il s&amp;#8217;agit simplement d&amp;#8217;un relai d&amp;#8217;info. On envoie également des mails, et on publie les informations sur notre site&amp;nbsp;web.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nous postons rarement, mais nous essayons de poster du contenu de qualité. Bien-sûr des informations sur nos sorties de bières, mais également des retours d&amp;#8217;expérience, des projets, etc. L&amp;#8217;idée étant de sortir de la course aux&amp;nbsp;nouveautés.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Également, après un petit temps &lt;em&gt;dans la compétition&lt;/em&gt;, j&amp;#8217;ai choisi d&amp;#8217;en sortir en me désinscrivant de toutes les pages suivies sur Facebook. Si Facebook doit être un relai, très bien, mais j&amp;#8217;ai d&amp;#8217;autres sources d&amp;#8217;informations — moins toxiques — de mon côté. Radical, mais efficace&amp;nbsp;!&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Cela fait maintenant un an et demi que je suis ces quelques règles, et je pense que les effets délétères du média social se tassent&amp;nbsp;;-)&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Routine</title><link href="https://blog.notmyidea.org/routine.html" rel="alternate"></link><published>2021-01-25T00:00:00+01:00</published><updated>2021-01-25T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2021-01-25:/routine.html</id><summary type="html">
&lt;blockquote&gt;
&lt;p&gt;Si vous pensez que l&amp;#8217;aventure est dangereuse, je vous propose d&amp;#8217;essayer la routine&amp;#8230;. Elle est mortelle&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;— Paulo&amp;nbsp;Coelho&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;J&amp;#8217;ai toujours attaché une connotation négative à la&amp;nbsp;routine.&lt;/p&gt;
&lt;p&gt;La routine, c&amp;#8217;est l&amp;#8217;ennui ; c&amp;#8217;est la peur de reproduire toujours la même chose ; de me retrouver bloqué …&lt;/p&gt;</summary><content type="html">
&lt;blockquote&gt;
&lt;p&gt;Si vous pensez que l&amp;#8217;aventure est dangereuse, je vous propose d&amp;#8217;essayer la routine&amp;#8230;. Elle est mortelle&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;— Paulo&amp;nbsp;Coelho&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;J&amp;#8217;ai toujours attaché une connotation négative à la&amp;nbsp;routine.&lt;/p&gt;
&lt;p&gt;La routine, c&amp;#8217;est l&amp;#8217;ennui ; c&amp;#8217;est la peur de reproduire toujours la même chose ; de me retrouver bloqué dans un fonctionnement que je reproduis parce qu&amp;#8217;il a fonctionné un jour. Dans mon imaginaire, la routine c&amp;#8217;est se satisfaire du&amp;nbsp;status-quo.&lt;/p&gt;
&lt;p&gt;Pourtant, à y regarder de plus près il semble que je manquais une partie de&amp;nbsp;l&amp;#8217;histoire.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Capacité, faculté acquise plutôt par une longue habitude, par une longue pratique, que par le secours de létude et des&amp;nbsp;règles.&lt;/li&gt;
&lt;li&gt;Usage depuis longtemps consacré de faire une chose toujours de la même&amp;nbsp;manière.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;— Définition de « routine » sur le &lt;a href="https://fr.wiktionary.org/wiki/routine"&gt;Wikitionnaire&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Il me semble qu&amp;#8217;il n&amp;#8217;y a pas nécessairement de connotation négative derrière cette notion de routine. Je me demande si les routines ne seraient pas même un moyen pour « apprendre sans en avoir l&amp;#8217;air »&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Il me semble également que les routines permettent d&amp;#8217;obtenir une quiétude. Se questionner (une fois), décider, puis faire de manière routinière, sans se poser à nouveau la même question sans&amp;nbsp;cesse.&lt;/p&gt;
&lt;p&gt;Ça vient me questionner à beaucoup d&amp;#8217;endroits, de ma gestion quotidienne de mon temps à mon rapport à l&amp;#8217;apprentissage. Ça me&amp;nbsp;plait.&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Reconnexion ?</title><link href="https://blog.notmyidea.org/reconnexion.html" rel="alternate"></link><published>2021-01-15T00:00:00+01:00</published><updated>2021-01-15T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2021-01-15:/reconnexion.html</id><summary type="html">
&lt;p&gt;Cela fait un an que &lt;a href="https://blog.notmyidea.org/break-technologique.html"&gt;j&amp;#8217;ai décidé de me déconnecter&lt;/a&gt; pour laisser plus de place à d&amp;#8217;autres&amp;nbsp;projets.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Me détacher de la maintenance de ihatemoney ;
Supprimer la plupart des applications sur mes téléphones (pro et perso)
Éteindre mon serveur personnel ;
Ne plus ramener mon téléphone pro à la …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">
&lt;p&gt;Cela fait un an que &lt;a href="https://blog.notmyidea.org/break-technologique.html"&gt;j&amp;#8217;ai décidé de me déconnecter&lt;/a&gt; pour laisser plus de place à d&amp;#8217;autres&amp;nbsp;projets.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Me détacher de la maintenance de ihatemoney ;
Supprimer la plupart des applications sur mes téléphones (pro et perso)
Éteindre mon serveur personnel ;
Ne plus ramener mon téléphone pro à la maison ;
Avoir un ordinateur fixe au travail, et l&amp;#8217;y laisser&amp;nbsp;;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Cette partie de la liste est entièrement validée, et cela m&amp;#8217;apporte une quiétude. La frontière entre le travail et le perso est maintenant mieux définie. A la fois pour moi, pour mes collègues et pour mes ami·es. J&amp;#8217;en retire beaucoup de&amp;nbsp;repos.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Limiter mon utilisation de l&amp;#8217;ordinateur perso à 1h par jour, sauf exceptions&amp;nbsp;;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Je passe dans l&amp;#8217;ensemble beaucoup moins de temps sur l&amp;#8217;ordinateur, même si le téléphone portable à pris une place plus importante, ce que je&amp;nbsp;regrette.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai transitionné d&amp;#8217;une utilisation de l&amp;#8217;ordinateur pour écrire des logiciels à une utilisation pour fabriquer de la musique. J&amp;#8217;y découvre un plaisir, en partie parce que l&amp;#8217;outil est puissant, en partie parce que je découvre un moyen de réaliser des envies qui trottent dans ma tête depuis quelques temps.
Mais… je me retrouve encore derrière un&amp;nbsp;écran.&lt;/p&gt;
&lt;p&gt;Je creuse petit à petit l&amp;#8217;utilisation d&amp;#8217;outils qui permettent de se passer de &lt;em&gt;Digital Audio Workstation&lt;/em&gt; (&lt;span class="caps"&gt;DAW&lt;/span&gt;) — et donc d&amp;#8217;ordinateur — mais j&amp;#8217;avoue ne pas trop y croire pour&amp;nbsp;l&amp;#8217;instant.&lt;/p&gt;
&lt;p&gt;Peut-être que ce qui me gène n&amp;#8217;est pas tant l&amp;#8217;écran en tant que tel, mais la posture dans laquelle celui-ci me plonge&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Plutôt que de chercher à passer &lt;strong&gt;très peu&lt;/strong&gt; de temps derrière un écran, je peux essayer de maximiser le temps ou j&amp;#8217;y fais quelque chose qui m&amp;#8217;intéresse, et pour lequel je suis dans un usage créatif&amp;nbsp;?&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Un féminisme décolonial</title><link href="https://blog.notmyidea.org/un-feminisme-decolonial.html" rel="alternate"></link><published>2021-01-01T00:00:00+01:00</published><updated>2021-01-01T00:00:00+01:00</updated><author><name>Françoise Vergès</name></author><id>tag:blog.notmyidea.org,2021-01-01:/un-feminisme-decolonial.html</id><summary type="html">&lt;blockquote&gt;
&lt;p&gt;J&amp;#8217;ai aussi appris très tôt que si l&amp;#8217;État veut écraser un mouvement, il a recours à tous les moyens, à toutes les ressources qui sont à sa disposition d&amp;#8217;une part pour réprimer, d&amp;#8217;autre part pour diviser les opprimé·e·s. D&amp;#8217;une main il frappe, de …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;blockquote&gt;
&lt;p&gt;J&amp;#8217;ai aussi appris très tôt que si l&amp;#8217;État veut écraser un mouvement, il a recours à tous les moyens, à toutes les ressources qui sont à sa disposition d&amp;#8217;une part pour réprimer, d&amp;#8217;autre part pour diviser les opprimé·e·s. D&amp;#8217;une main il frappe, de l&amp;#8217;autre il cherche à assimiler. &lt;strong&gt;La peur est une de ses armes favorites pour produire conformise et consentement&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</content><category term="Lectures"></category><category term="sexisme"></category><category term="racisme"></category></entry><entry><title>Forum ouvert, animation et posture</title><link href="https://blog.notmyidea.org/forum-ouvert-animation-et-posture.html" rel="alternate"></link><published>2020-03-06T00:00:00+01:00</published><updated>2020-03-06T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2020-03-06:/forum-ouvert-animation-et-posture.html</id><summary type="html">&lt;p&gt;Début Février j&amp;#8217;ai participé à un Forum Ouvert. Il s&amp;#8217;agit de la troisième fois, et cette fois ci j&amp;#8217;étais particulièrement attentif aux procédés mis en place pour sa tenue, puisque je faisais partie de l&amp;#8217;équipe&amp;nbsp;d&amp;#8217;organisation.&lt;/p&gt;
&lt;h2 id="un-forum-ouvert"&gt;Un forum ouvert&amp;nbsp;?&lt;/h2&gt;
&lt;p&gt;Les forums ouverts sont des outils …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Début Février j&amp;#8217;ai participé à un Forum Ouvert. Il s&amp;#8217;agit de la troisième fois, et cette fois ci j&amp;#8217;étais particulièrement attentif aux procédés mis en place pour sa tenue, puisque je faisais partie de l&amp;#8217;équipe&amp;nbsp;d&amp;#8217;organisation.&lt;/p&gt;
&lt;h2 id="un-forum-ouvert"&gt;Un forum ouvert&amp;nbsp;?&lt;/h2&gt;
&lt;p&gt;Les forums ouverts sont des outils qui permettent de se retrouver avec un groupe de personnes et d&amp;#8217;avoir des échanges. L&amp;#8217;idée est de créer un cadre assez léger qui permette aux personnes d&amp;#8217;échanger de manière assez&amp;nbsp;horizontale.&lt;/p&gt;
&lt;p&gt;Les 4 principes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les personnes présentes sont les bonnes personnes&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;quoi qu&amp;#8217;il arrive, c&amp;#8217;est la seule chose qui pouvait arriver&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;ça commence quand ça commence&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;quand cest fini, cest&amp;nbsp;fini.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La loi de la mobilité ou loi des deux pieds : si à un moment vous vous rendez compte que vous n&amp;#8217;être ni en train dapprendre, ni de contribuer, aller voir autre chose&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Retours&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;J&amp;#8217;étais hyper surpris de voir à quel point l&amp;#8217;outil est fonctionnel en tant que tel : les discussions auxquelles j&amp;#8217;ai pu participer étaient souvent assez « poussées » alors même que les personnes ne se connaissaient pas d&amp;#8217;avant le&amp;nbsp;forum.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Durant le forum ouvert, il y avait la possibilité de prendre des notes, et de les partager avec tout le monde dans un espace prévu pour ça. Je n&amp;#8217;y croyais pas trop, mais ça à vraiment fonctionné ! On avait préparé des pads en ligne (un espace de prise de notes partagées) avant l&amp;#8217;évènement ce qui à permis de faciliter la prise de notes&amp;nbsp;;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Avoir un endroit pour afficher les notes prises durant les discussions est utile, et créé un sentiment de satisfaction collectif&amp;nbsp;;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Répartition de la parole : à un moment, on propose aux participant⋅e⋅s de venir proposer des sujets, et on s&amp;#8217;est rendu compte que c&amp;#8217;était (comme bien trop souvent) en grande partie des hommes cis (assignés hommes à la naissance) qui prenaient la parole à ce moment là. Pour éviter que ce ne soit le cas, laisser un temps de réflexion à tou⋅te⋅s avant de prendre la parole peut être&amp;nbsp;utile.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Inclusion des personnes trans et non-binaires : Faire un tour des pronoms peut permettre aux personnes trans et non-binaires d&amp;#8217;être plus incluses, ou en tout cas de visibiliser leur présence. On ne l&amp;#8217;avait pas fait lors du premier jour et ça à manqué&amp;nbsp;;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sur un plan plus pragmatique, trouver une logistique pour faire à manger de manière collective / faire le ménage / installer les tables etc, pourrait permettre aux organisateur⋅ice⋅s de participer aux&amp;nbsp;discussions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lors de la phase d&amp;#8217;organisation, il est possible de fusionner les sujets, et ça à été le cas pour au moins deux sujets proposés, ce qui à créé une situations problématique. Dans son livre qui parle des forums ouverts, Owen indique que parfois il vaut mieux ne pas fusionner les sujets, et je pense qu&amp;#8217;on aurait sûrement du ici. Les attentes des participant⋅e⋅s ne sont pas forcement les mêmes, et ça peut créer de la frustration si les choses ne sont pas forcément bien amenées. C&amp;#8217;est sûrement quelque chose à souligner aux participant⋅e⋅s lors du temps&amp;nbsp;d&amp;#8217;accueil.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="animer-etou-participer"&gt;Animer et/ou participer&amp;nbsp;?&lt;/h2&gt;
&lt;p&gt;A titre personnel, j&amp;#8217;ai été assez frustré par la posture un peu floue que j&amp;#8217;avais durant le forum : je faisais partie de l&amp;#8217;équipe d&amp;#8217;organisation mais je ne m&amp;#8217;occupais pas de l&amp;#8217;animation, nourrissant l&amp;#8217;espoir de participer aux&amp;nbsp;discussions.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai pu participer à certaines discussions, mais jamais (sauf une exception) pour une session entière, et j&amp;#8217;ai trouvé ça dommage. Après une discussion avec Thomas qui à déjà animé au moins un forum ouvert, il semble possible d&amp;#8217;« ouvrir » et de « fermer » les temps d&amp;#8217;organisation, pour permettre aux organisateur⋅ice⋅s d&amp;#8217;animer et de&amp;nbsp;participer.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;aime bien cette idée, parce que ça veut dire que tout le monde peut participer, et que la posture d&amp;#8217;animation ne signifie pas un « sacrifice », mais peut-être que cette idée à aussi ses défauts : lors d&amp;#8217;une discussion avec un⋅e des animateurs⋅rices iel m&amp;#8217;a indiqué qu&amp;#8217;iel préférait rester extérieur aux discussions, pour éviter les prises de&amp;nbsp;pouvoir.&lt;/p&gt;
&lt;p&gt;Autrement dit, faire l&amp;#8217;animation du forum ouvert conférerait un pouvoir qui pourrait être néfaste lors des discussions. Je ne sais pas trop quoi penser de cette idée, mais il me semble pertinent de pousser la réflexion. Dans une posture plus « classique » de facilitation, on s&amp;#8217;efforce de rester extérieur aux discussions, pour ne pas avoir de conflit&amp;nbsp;d&amp;#8217;intérêt.&lt;/p&gt;
&lt;p&gt;Mais dans le cas du forum ouvert, je n&amp;#8217;ai pas l&amp;#8217;impression que faire l&amp;#8217;animation confère un pouvoir sur le groupe, autre que celui d&amp;#8217;être garant⋅e des règles du fonctionnement collectif (rappel de l&amp;#8217;heure par exemple, rappel du cadre de bienveillance). Si vous avez des retours sur ce sujet je suis preneur&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Voire, je me demande même quel rapports cela génère de — justement — rester extérieur et de ne pas participer, alors même qu&amp;#8217;on est présent⋅e. Dit autrement, alors que tout le monde se rencontre à travers les discussions, se met en jeu, ce n&amp;#8217;est pas le cas des animateur⋅ice⋅s, et je me demande si ça impacte l&amp;#8217;ambiance générale&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;En tout cas, j&amp;#8217;aime bien l&amp;#8217;idée qu&amp;#8217;il soit possible d&amp;#8217;à la fois animer les temps de forums et de participer. Dans ce cas là, existe-il des stratagèmes / artifices pour permettre de visibiliser ces prises de pouvoir pendant les discussions&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Je suis preneur de tout retour d&amp;#8217;expérience sur le sujet&amp;nbsp;!&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Artfevre 2020 - Défi artistique en février</title><link href="https://blog.notmyidea.org/artfevre-2020-defi-artistique-en-fevrier.html" rel="alternate"></link><published>2020-03-01T00:00:00+01:00</published><updated>2020-03-01T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2020-03-01:/artfevre-2020-defi-artistique-en-fevrier.html</id><summary type="html">&lt;p&gt;En Février, il y a 29 Jours, et avec un ami on s&amp;#8217;est dit qu&amp;#8217;on aimerait bien utiliser chacun d&amp;#8217;entre eux pour créer — de manière intensive et sans jugement — hors de notre zone de confort, et avec des contraintes&amp;nbsp;imposées.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;idée, c&amp;#8217;est qu&amp;#8217;à la …&lt;/p&gt;</summary><content type="html">&lt;p&gt;En Février, il y a 29 Jours, et avec un ami on s&amp;#8217;est dit qu&amp;#8217;on aimerait bien utiliser chacun d&amp;#8217;entre eux pour créer — de manière intensive et sans jugement — hors de notre zone de confort, et avec des contraintes&amp;nbsp;imposées.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;idée, c&amp;#8217;est qu&amp;#8217;à la fin du mois, chacun⋅e puisse se retourner (c&amp;#8217;est une image hein) et se dire : « Ouah, jai fait tout ça !?&amp;nbsp;»&lt;/p&gt;
&lt;p&gt;Cest donc une une liste de 29 thèmes (un par jour du mois) : chaque jour, on doit faire quelque chose dartistique à partir du thème&amp;nbsp;proposé.&lt;/p&gt;
&lt;h2 id="quelques-retours"&gt;Quelques&amp;nbsp;retours&lt;/h2&gt;
&lt;p&gt;Je n&amp;#8217;ai pas réussi à faire des créations pour les 29 thèmes, mais dans l&amp;#8217;ensemble je suis très content de ce que j&amp;#8217;ai pu créer : j&amp;#8217;ai pu expérimenter des choses que je n&amp;#8217;avais pas imaginées. J&amp;#8217;ai pu faire&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Du montage vidéo&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;De la musique acoustique&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;De la musique électronique&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Du montage audio&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;De l&amp;#8217;écriture de nouvelles&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Une comptine&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;De la photo&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Du montage photo&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;De l&amp;#8217;Art Plastique&amp;nbsp;;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;C&amp;#8217;était très sympa de voir les créations des unes et des uns arriver sur notre espace de partage de fichiers, certaines créations étaient vraiment géniales ! Et j&amp;#8217;ai même carrément hâte de remettre ça l&amp;#8217;an prochain&amp;nbsp;:-)&lt;/p&gt;
&lt;h2 id="un-peu-plus-dinfos"&gt;Un peu plus&amp;nbsp;d&amp;#8217;infos&lt;/h2&gt;
&lt;p&gt;Voici des infos qu&amp;#8217;on a envoyé aux participant⋅e⋅s, et que je consigne ici question de l&amp;#8217;avoir quelque&amp;nbsp;part&lt;/p&gt;
&lt;p&gt;Voici une liste d&amp;#8217;idées de « trucs » à faire chaque jour : Faire un dessin, Composer (et enregistrer ?) une musique, Filmer quelque chose, Inventer une chorégraphie, Écrire un texte, Inventer une origami, Se faire un tatouage (en fonction du thème, pas conseillé), Inventer un exercice de théâtre, Créer un jeu, Faire une sculpture dargile, Créer une position de Yoga, Prendre une photo, inventer une recette de cuisine, Écrire un slam, etc,&amp;nbsp;etc.&lt;/p&gt;
&lt;p&gt;Vous pouvez décider de ne choisir quune forme artistique (par exemple que la musique) pour vous forcer à explorer un médium en dehors de votre zone de confort (« je sais faire une musique rapidement, mais sais-je faire 29 fois une musique différente rapidement ? »), ou alors changer dexpression artistique tous les jours. Voyez ce qui vous amuse / anime le plus&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;On aimerait mettre en commun nos productions quelque part, pour voir comment les gens différents se sont approprié un même thème ! Bien sur c&amp;#8217;est tout à fait optionnel : libre à vous de participer sans publier vos&amp;nbsp;créations.&lt;/p&gt;
&lt;p&gt;Ça vous botte ? Envoyez nous un petit mail a artfevre@notmyidea.org et on vous tient au courant !
Techniquement&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Si vous voulez poster vos créations, on vous propose de le faire sur un espace en ligne. Plusieurs choses sur ce « cloud »&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;On a préparé un dossier par jour, postez votre / vos création(s) dans le dossier qui va bien. Il y a également un dossier « Les thèmes &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; ressources » qui contient les photos, vidéos et musiques qui serviront de contraintes certains jours, ainsi qu&amp;#8217;un rappel des thèmes&amp;nbsp;;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On a aucun moyen de savoir qui poste quoi, si vous voulez être crédités, mettez votre pseudo / nom dans le nom du fichier (ex. « Sam-3-fevrier.jpg » ou « AlexCompo7Fevrier.mp3 »). Si vous préférez l&amp;#8217;ombre à la lumière, vous pouvez laisser un titre poétique comme «W33.jpg »&amp;nbsp;;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ne repostez pas les contenus d&amp;#8217;autres participant⋅es (d&amp;#8217;aucun diraient « d&amp;#8217;autrui ») sans leur accord&amp;nbsp;;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour avoir l&amp;#8217;adresse du cloud magique, envoyez nous un mail à&amp;nbsp;artfevre@notmyidea.org.&lt;/p&gt;
&lt;h2 id="invitations"&gt;Invitations&lt;/h2&gt;
&lt;p&gt;Le défi commence le samedi 1er Février, mais il est possible de nous rejoindre en route : si vous voulez en parler à des ami⋅e⋅s, n&amp;#8217;hésitez pas&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Donnez leur l&amp;#8217;adresse du site web :&amp;nbsp;https://artfevre.notmyidea.org&lt;/p&gt;
&lt;h2 id="rappels"&gt;Rappels&lt;/h2&gt;
&lt;p&gt;Pas de pression : Amusons-nous, l&amp;#8217;idée est de passer de bons&amp;nbsp;moments&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Je ne veux faire qu&amp;#8217;une seule semaine ? Pas de soucis&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;J&amp;#8217;ai pas envie de poser mes publications en public… No problem&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;J&amp;#8217;ai loupé trois jours, c&amp;#8217;est la merde ! Hakuna Matata&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;J&amp;#8217;ai envie de faire un thème à plusieurs ! No problemo&amp;nbsp;!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Personne d&amp;#8217;autre que vous ne juge ce que vous faites ! Et… à propos de ça, même vous d&amp;#8217;ailleurs n&amp;#8217;y êtes pas&amp;nbsp;obligés.&lt;/p&gt;
&lt;h2 id="des-questions-des-reponses"&gt;Des questions ? Des réponses&amp;nbsp;!&lt;/h2&gt;
&lt;h3 id="jai-envie-de-le-faire-mais-je-suis-trop-perfectionniste-pour-finir-un-truc-par-jour"&gt;Jai envie de le faire, mais je suis trop perfectionniste pour finir un truc par jour&amp;nbsp;!&lt;/h3&gt;
&lt;p&gt;Cest tout le sens du projet ! Si je dois finir cette chanson/ce dessin/ce texte aujourdhui, ça ne sera peut-être pas le meilleur des dessins, mais au moins il aura le mérite dexister. Dans mon expérience personnelle, si jattends davoir produit le meilleur objet, je finis par ne rien finir, car rien nest parfait. Là, au moins, lobjet existe, et si vous le souhaitez, il peut servir de base plus tard à un re-travail pour viser quelque chose de plus « fignolé&amp;nbsp;».&lt;/p&gt;
&lt;h3 id="mais-si-je-rate-un-jour-si-jai-pas-le-temps"&gt;Mais si je rate un jour, si jai pas le temps&amp;nbsp;?&lt;/h3&gt;
&lt;p&gt;Chacun⋅e fait comme iel veut/peut et sastreint la discipline quiel a envie de tester ! Personne ne viendra surveiller ou juger le travail des autres. Si vous prenez 2 jours par thème et que vous continuez le truc jusquà fin mars pour finir, pas de soucis&amp;nbsp;!&lt;/p&gt;
&lt;h3 id="jai-peur-de-pas-avoir-linspiration"&gt;Jai peur de pas avoir linspiration&amp;nbsp;!&lt;/h3&gt;
&lt;p&gt;Pour nous, attendre linspiration est un prétexte qu&amp;#8217;on se donne pour repousser le moment de se mettre au travail. Linspiration, ça se provoque, ça ne sattend pas. Et puis peut-être que je trouverai nulle ma création du jour, mais au moins jaurai fait quelque chose. 1 vaut mieux que 0. Et de ce truc que moi je trouve nul (cest pas pour ça que cest nul, à vrai dire), peut-être que j&amp;#8217;en tirerai une note que jaime bien, une formulation qui me plaît, un mouvement que jadore, et que je ré-utiliserai après dans une autre création. Ou alors, peut-être que je ne retirerai que la satisfaction de lavoir fait, et cest déjà pas mal&amp;nbsp;!&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Le piège du développement personnel</title><link href="https://blog.notmyidea.org/le-piege-du-developpement-personnel.html" rel="alternate"></link><published>2020-01-21T00:00:00+01:00</published><updated>2020-01-21T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2020-01-21:/le-piege-du-developpement-personnel.html</id><summary type="html">&lt;p&gt;Ces derniers temps, je me suis retrouvé à questionner mon rapport a la pratique du développement personnel. À quel point le celui ci, et la « psychologie positive » peuvent-elles jouer un rôle de « cache misère » vis à vis des différentes formes d&amp;#8217;oppression et de domination à l&amp;#8217;œuvre dans notre …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Ces derniers temps, je me suis retrouvé à questionner mon rapport a la pratique du développement personnel. À quel point le celui ci, et la « psychologie positive » peuvent-elles jouer un rôle de « cache misère » vis à vis des différentes formes d&amp;#8217;oppression et de domination à l&amp;#8217;œuvre dans notre société&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Voire même : ce courant de pensée peut-il favoriser un certain conservatisme ? Se changer soi même équivaut-il à une adaptation au système en place, supprimant alors toute volonté de révolte et de changement sociétal&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Face à un constat considéré comme « négatif » sur notre société, plusieurs manières de prendre la chose (entre autres)&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Le travail sur soi&lt;/strong&gt;, qui cherche à percevoir les choses sous le meilleur angle possible. Ici, « Toute expérience est bonne à prendre »&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;La problématisation&lt;/strong&gt; : essayer de comprendre quelles sont les normes et les valeurs qui amènent au problème&amp;nbsp;constaté.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="le-probleme"&gt;Le problème&amp;nbsp;?&lt;/h2&gt;
&lt;p&gt;« Travailler sur soi » est parfois mis en opposition avec le fait de déconstruire sociétalement notre&amp;nbsp;monde.&lt;/p&gt;
&lt;p&gt;Il est (bien sur) souhaitable de mieux vivre la violence des systèmes oppressifs, mais il semble quelque part important d&amp;#8217;en avoir d&amp;#8217;abord conscience, pour que ce « travail sur soi » ne soit pas assimilé à une « technique de l&amp;#8217;autruche&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;Il semble aussi que nous ne sommes malheureusement pas tou⋅te⋅s égaux/égales face aux violences systémiques, et « mieux vivre » ces violences, bien que possible pour certain⋅e⋅s, reste impossible pour d&amp;#8217;autres &lt;sup id="fnref:matrice-des-dominations"&gt;&lt;a class="footnote-ref" href="#fn:matrice-des-dominations"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;Plutôt que d&amp;#8217;accepter (implicitement) cette violence, il me semble utile de &lt;strong&gt;comprendre comment cette violence s&amp;#8217;applique&lt;/strong&gt;, de manière à remonter aux racines du problème, pour pouvoir le&amp;nbsp;résoudre.&lt;/p&gt;
&lt;h2 id="developpement-personnel-vs-sociologie"&gt;Développement personnel vs&amp;nbsp;sociologie&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;N&amp;#8217;acceptez pas les choses que vous ne pouvez changer, mais changez les choses que vous ne pouvez pas&amp;nbsp;accepter. &lt;/p&gt;
&lt;p&gt;— Angela&amp;nbsp;Davis&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Le développement personnel, bien qu&amp;#8217;une pratique avec des buts qui semblent nobles de prime abord, semble contenir son lot de&amp;nbsp;problèmes.&lt;/p&gt;
&lt;p&gt;Parmi ceux-cis : une minimisation des problèmes ressentis, et comme le dit Aude Vidal dans son livre « Égologie », une culpabilisation de chacun⋅e : « Si tu en est là, c&amp;#8217;est que tu choisis de voir les choses sous cet angle&amp;nbsp;».&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;« Se changer soi pour changer le monde », cette prescription […] semble au final un leurre, car travailler sur soi-même […] c&amp;#8217;est avant tout accepter une vision du monde où chacun⋅e étant capable d&amp;#8217;aller bien, chacun⋅e est responsable de son sort.
— Aude Vidal,&amp;nbsp;Égologie&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Parfois, on en vient également à « psychologiser » des situations, c&amp;#8217;est à dire essayer d&amp;#8217;expliquer des situations sociétales comme on le ferait d&amp;#8217;une personne, sans prendre en compte la société dans son ensemble et dans sa complexité, et cela vient se substituer à l&amp;#8217;approche&amp;nbsp;sociologique.&lt;/p&gt;
&lt;p&gt;On peut également voir ce déni de l&amp;#8217;approche sociologique comme une naïveté à l&amp;#8217;égard du monde, entretenue par les nombreux ouvrages qu&amp;#8217;on trouve sur le sujet. On nous dira bientôt qu&amp;#8217;il faut arrêter de se tenir au courant de ce qui se déroule dans le monde, les mauvaises nouvelles étant diablement mauvaises pour notre&amp;nbsp;Karma.&lt;/p&gt;
&lt;p&gt;Penser le monde dans sa complexité me semble une condition nécessaire pour pouvoir le faire évoluer dans une direction&amp;nbsp;intéressante. &lt;/p&gt;
&lt;h2 id="une-culture-de-la-passivite"&gt;Une culture de la&amp;nbsp;passivité&lt;/h2&gt;
&lt;p&gt;Cette manière de penser le monde nous pousse à la passivité : si plutôt que de voir les choses en face, nous décidons de changer notre manière de percevoir les problèmes, alors nous nous&amp;nbsp;dépolitisons.&lt;/p&gt;
&lt;p&gt;Elle laisse également penser que l&amp;#8217;approche sociologique nous empêcherait d&amp;#8217;agir, comme si réfléchir aux problèmes de société était un problème en soi, alors que monopole de la résolution de conflit n&amp;#8217;est pas au développement personnel&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;L&amp;#8217;approche sociologique permet quelque part de se déculpabiliser : on peut à partir du constat sociologique se dire « je suis oppréssé⋅e, c&amp;#8217;est pas de ma faute, maintenant que je le sais je peux travailler dessus plus facilement&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;Une prise de pouvoir, en quelque&amp;nbsp;sorte.&lt;/p&gt;
&lt;h2 id="ressources-pour-aller-plus-loin"&gt;Ressources / pour aller plus&amp;nbsp;loin&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.monde-diplomatique.fr/2018/08/MALET/58981"&gt;Le système Pierre Rahbi — Le monde&amp;nbsp;diplomatique&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.notmyidea.org/egologie.html"&gt;Égologie, par Aude&amp;nbsp;Vidal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://labrique.net/index.php/thematiques/politicaille/954-cyril-dion-coli-briseur-de-l-ecologie-radicale"&gt;Cyril Dion, Coli-briseur de l&amp;#8217;écologie radicale — La&amp;nbsp;brique&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="footnote"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:matrice-des-dominations"&gt;
&lt;p&gt;Comme théorisé avec la &lt;a href="https://en.wikipedia.org/wiki/Matrix_of_domination"&gt;matrice des dominations&lt;/a&gt;.&amp;#160;&lt;a class="footnote-backref" href="#fnref:matrice-des-dominations" title="Jump back to footnote 1 in the text"&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content><category term="Journal"></category></entry><entry><title>Packager du python pour Debian</title><link href="https://blog.notmyidea.org/packager-du-python-pour-debian.html" rel="alternate"></link><published>2020-01-14T00:00:00+01:00</published><updated>2020-01-14T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2020-01-14:/packager-du-python-pour-debian.html</id><summary type="html">
&lt;p&gt;Aujourd&amp;#8217;hui j&amp;#8217;ai fais un peu de packaging pour la distribution Linux Debian, avec l&amp;#8217;aide d&amp;#8217;un ami. C&amp;#8217;était assez agréable de pouvoir me faire aider dans cet objectif : j&amp;#8217;avais déjà tenté l&amp;#8217;expérience en solo par le passé, et m&amp;#8217;étais cassé les dents sur …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Aujourd&amp;#8217;hui j&amp;#8217;ai fais un peu de packaging pour la distribution Linux Debian, avec l&amp;#8217;aide d&amp;#8217;un ami. C&amp;#8217;était assez agréable de pouvoir me faire aider dans cet objectif : j&amp;#8217;avais déjà tenté l&amp;#8217;expérience en solo par le passé, et m&amp;#8217;étais cassé les dents sur le&amp;nbsp;sujet.&lt;/p&gt;
&lt;p&gt;Voici quelques notes prises durant l&amp;#8217;après-midi, qui pourront sans doute me servir pour la&amp;nbsp;suite.&lt;/p&gt;
&lt;h2 id="quest-ce-quon-fait"&gt;Qu&amp;#8217;est-ce qu&amp;#8217;on fait&amp;nbsp;?&lt;/h2&gt;
&lt;p&gt;On essaye de créer un paquet Debian pour une application Web écrite en python. Il s&amp;#8217;agit d&amp;#8217;une application assez simple, qui communique avec une base de données d&amp;#8217;un côté, et avec des utilisateurs de&amp;nbsp;l&amp;#8217;autre.&lt;/p&gt;
&lt;h2 id="y-aller-par-etapes"&gt;Y aller par&amp;nbsp;étapes&lt;/h2&gt;
&lt;p&gt;On a essayé de faire en sorte d&amp;#8217;avoir quelque chose de fonctionnel assez rapidement, même si pas entièrement fait dans les règles de l&amp;#8217;art. Ça à l&amp;#8217;avantage de garder la motivation&amp;nbsp;:-)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Produire un paquet &lt;code&gt;.deb&lt;/code&gt; qui peut s&amp;#8217;installer, et qui fait tourner l&amp;#8217;application en question&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Avoir un paquet qui passe les règles de validation de Debian&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Intégrer le paquet avec &lt;code&gt;systemd&lt;/code&gt; ;&lt;/li&gt;
&lt;li&gt;Intégrer le paquet dans un système de contrôle de version type git&amp;nbsp;;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="packaging-simple-1ere-version-fonctionnelle"&gt;Packaging « simple » - 1ère version&amp;nbsp;fonctionnelle&lt;/h2&gt;
&lt;p&gt;On commence par faire un paquet dit « natif ». C&amp;#8217;est l&amp;#8217;approche la plus simple.
Deux fichiers sont importants, pour commencer : &lt;code&gt;control&lt;/code&gt; et &lt;code&gt;changelog&lt;/code&gt;. Le fichier &lt;code&gt;control&lt;/code&gt; contient un bloc « source » et un ou plusieurs blocs « package », dans l&amp;#8217;idée de pouvoir avoir potentiellement plusieurs paquets binaires générés à partir du même package source, ce qui est utile pour les gros&amp;nbsp;paquets.&lt;/p&gt;
&lt;p&gt;Voici les étapes qu&amp;#8217;on a suivi&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Créer les fichiers &lt;code&gt;control&lt;/code&gt;, &lt;code&gt;changelog&lt;/code&gt; et &lt;code&gt;rules&lt;/code&gt; dans le répertoire &lt;code&gt;debian&lt;/code&gt;. Dans la pratique on peut les copier depuis un autre paquet qu&amp;#8217;on prends comme modèle&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Installer les dépendances de build avec &lt;code&gt;sudo apt install devscripts &amp;amp;&amp;amp; mk-build-deps -i -r --root-cmd sudo&lt;/code&gt; ;&lt;/li&gt;
&lt;li&gt;Lancer &lt;code&gt;dpkg-buildpackage -rfakeroot&lt;/code&gt; qui va construire le paquet pour nous&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Regarder la sortie de la commande pour voir les dépendances qui ne sont pas déjà prêtes pour Debian&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Pour les quelques dépendances qui n&amp;#8217;étaient pas déjà prêtes, on a répété les étapes&amp;nbsp;précédentes.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="questions-diverses-observations"&gt;Questions diverses &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;observations&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;dh-helper&lt;/code&gt; est une manière de packager « officiellement recommandée », il s&amp;#8217;agit d&amp;#8217;un ensemble d&amp;#8217;outils qui cherchent à se faciliter la tache de &lt;em&gt;packaging&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Pour les traductions : il n&amp;#8217;est pas nécessaire de faire des paquets séparés pour la traduction, c&amp;#8217;est acceptable de tout mettre dans le même&amp;nbsp;paquet.&lt;/p&gt;
&lt;p&gt;La documentation peut elle aussi être intégrée dans le même&amp;nbsp;paquet.&lt;/p&gt;
&lt;p&gt;Pour les numéros de version, si on a pas de tiret dans le numéro de version, alors il s&amp;#8217;agit de la version &lt;em&gt;upstream&lt;/em&gt;. Si on a un tiret, ce qui est après le numéro de version est la version du &lt;em&gt;packaging&lt;/em&gt; pour&amp;nbsp;Debian.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;DEB_BUILD_OPTIONS=nocheck&lt;/code&gt; permet de ne pas avoir à lancer les tests à chaque fois qu&amp;#8217;on construit le&amp;nbsp;paquet.&lt;/p&gt;
&lt;h2 id="etapes-dapres"&gt;Étapes&amp;nbsp;d&amp;#8217;après&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Peut-être utiliser&lt;code&gt;debian/missing-sources&lt;/code&gt;, en tout cas régler le souci pour les bibliothèques JavaScript et le &lt;span class="caps"&gt;CSS&lt;/span&gt; dont les sources ne sont pas distribuées actuellement (parce que versions&amp;nbsp;minifiées).&lt;/li&gt;
&lt;li&gt;Il est possible d&amp;#8217;installer des dépendances et de spécifier des liens symboliques à créer lors de&amp;nbsp;l&amp;#8217;installation.&lt;/li&gt;
&lt;li&gt;Intégrer de la documentation sous forme de &lt;code&gt;manpage&lt;/code&gt;. Il semble que certains outils permettent de le faire de manière simple / automatique, comme « help2man&amp;nbsp;»&lt;/li&gt;
&lt;li&gt;De la même manière qu&amp;#8217;on le fait pour les ressources type &lt;span class="caps"&gt;JS&lt;/span&gt; et &lt;span class="caps"&gt;CSS&lt;/span&gt;, il faut intégrer les &lt;em&gt;fonts&lt;/em&gt;, en faisant référence aux fonts empaquetées pour&amp;nbsp;Debian. &lt;/li&gt;
&lt;li&gt;Une fois que tout ça fonctionne, passer à un système de build qui comprends&amp;nbsp;git&lt;/li&gt;
&lt;li&gt;Faire une intégration avec &lt;code&gt;systemd&lt;/code&gt; pour avoir un service qui se lance automatiquement. Ce qui veut aussi dire créer un utilisateur spécifique pour notre&amp;nbsp;service.&lt;/li&gt;
&lt;/ul&gt;</content><category term="Notes"></category></entry><entry><title>Prendre le temps</title><link href="https://blog.notmyidea.org/prendre-le-temps.html" rel="alternate"></link><published>2020-01-14T00:00:00+01:00</published><updated>2020-01-14T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2020-01-14:/prendre-le-temps.html</id><summary type="html">&lt;h2 id="prendre-le-temps"&gt;Prendre le&amp;nbsp;temps&lt;/h2&gt;
&lt;p&gt;Jusqu&amp;#8217;ici, j&amp;#8217;ai souvent eu l&amp;#8217;impression que le temps s&amp;#8217;écoulait sans que je puisse avoir de prise&amp;nbsp;dessus.&lt;/p&gt;
&lt;p&gt;Depuis peu, je me rends compte que j&amp;#8217;ai l&amp;#8217;opportunité de « visiter » ce flux, de — quelque part — « naviguer » en son sein, et que ce faisant …&lt;/p&gt;</summary><content type="html">&lt;h2 id="prendre-le-temps"&gt;Prendre le&amp;nbsp;temps&lt;/h2&gt;
&lt;p&gt;Jusqu&amp;#8217;ici, j&amp;#8217;ai souvent eu l&amp;#8217;impression que le temps s&amp;#8217;écoulait sans que je puisse avoir de prise&amp;nbsp;dessus.&lt;/p&gt;
&lt;p&gt;Depuis peu, je me rends compte que j&amp;#8217;ai l&amp;#8217;opportunité de « visiter » ce flux, de — quelque part — « naviguer » en son sein, et que ce faisant, il se densifie, il prends plus de place, il s&amp;#8217;épaissit en quelque&amp;nbsp;sorte.&lt;/p&gt;
&lt;p&gt;Je prends plus de temps pour ressentir ce que je fais, et les effets semblent également se sentir sur ma relation aux autres, et sur le soin que je veux porter à mes&amp;nbsp;relations.&lt;/p&gt;
&lt;p&gt;Ça me donne l&amp;#8217;impression d&amp;#8217;avoir un contrôle sur le temps qui s&amp;#8217;écoule (et ça c&amp;#8217;est cool&amp;nbsp;:-)).&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Limites horaires</title><link href="https://blog.notmyidea.org/limites-horaires.html" rel="alternate"></link><published>2020-01-04T00:00:00+01:00</published><updated>2020-01-04T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2020-01-04:/limites-horaires.html</id><summary type="html">
&lt;p&gt;Depuis que j&amp;#8217;ai décidé de faire un break technologique, je ne m&amp;#8217;en sors pas si mal. Parmi les mesures que j&amp;#8217;avais envie de prendre, était le fait de limiter le temps d&amp;#8217;utilisation de mon ordinateur&amp;nbsp;personnel.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;utilise le logiciel &lt;a href="https://launchpad.net/timekpr-next"&gt;timekpr-next&lt;/a&gt; qui me permet de définir …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Depuis que j&amp;#8217;ai décidé de faire un break technologique, je ne m&amp;#8217;en sors pas si mal. Parmi les mesures que j&amp;#8217;avais envie de prendre, était le fait de limiter le temps d&amp;#8217;utilisation de mon ordinateur&amp;nbsp;personnel.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;utilise le logiciel &lt;a href="https://launchpad.net/timekpr-next"&gt;timekpr-next&lt;/a&gt; qui me permet de définir une limite d&amp;#8217;utilisation par jour. Le logiciel me notifie quand je dois m&amp;#8217;arrêter, et même si je peux rajouter du temps si j&amp;#8217;en ai besoin, ça semble plutôt marcher : ça me donne un moyen de percevoir le temps que je dépense derrière cet&amp;nbsp;ordinateur.&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Prendre soin</title><link href="https://blog.notmyidea.org/prendre-soin.html" rel="alternate"></link><published>2020-01-04T00:00:00+01:00</published><updated>2020-01-04T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2020-01-04:/prendre-soin.html</id><summary type="html">
&lt;p&gt;&lt;em&gt;De moi, et de ma relation aux&amp;nbsp;autres.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est peut-être l&amp;#8217;effet des deux semaines de vacances : je me retrouve à prendre plus soin de mes relations aux autres humain⋅e⋅s, à avoir plus d&amp;#8217;empathie, et j&amp;#8217;ai l&amp;#8217;impression de tisser des liens plus forts avec …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;&lt;em&gt;De moi, et de ma relation aux&amp;nbsp;autres.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est peut-être l&amp;#8217;effet des deux semaines de vacances : je me retrouve à prendre plus soin de mes relations aux autres humain⋅e⋅s, à avoir plus d&amp;#8217;empathie, et j&amp;#8217;ai l&amp;#8217;impression de tisser des liens plus forts avec les personnes que je&amp;nbsp;croise.&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est agréable&amp;nbsp;:-)&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Remettre les choses à plus tard</title><link href="https://blog.notmyidea.org/remettre-les-choses-a-plus-tard.html" rel="alternate"></link><published>2020-01-04T00:00:00+01:00</published><updated>2020-01-04T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2020-01-04:/remettre-les-choses-a-plus-tard.html</id><summary type="html">
&lt;p&gt;Une autre astuce qui me permet de retrouver du temps, c&amp;#8217;est de remettre certaines choses à plus tard. Certain⋅ne⋅s diraient que c&amp;#8217;est de la procrastination, mais je demande par exemple aux personnes de passer par les canaux qui me permettent de mieux compartimenter les&amp;nbsp;choses.&lt;/p&gt;
&lt;p&gt;Par …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Une autre astuce qui me permet de retrouver du temps, c&amp;#8217;est de remettre certaines choses à plus tard. Certain⋅ne⋅s diraient que c&amp;#8217;est de la procrastination, mais je demande par exemple aux personnes de passer par les canaux qui me permettent de mieux compartimenter les&amp;nbsp;choses.&lt;/p&gt;
&lt;p&gt;Par exemple, si je reçois un &lt;span class="caps"&gt;SMS&lt;/span&gt; qui me demande de faire quelque chose en rapport avec la technologie, je demande à la personne émettrice de m&amp;#8217;envoyer un&amp;nbsp;email.&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Au delà de la pénétration</title><link href="https://blog.notmyidea.org/au-dela-de-la-penetration.html" rel="alternate"></link><published>2020-01-01T00:00:00+01:00</published><updated>2020-01-01T00:00:00+01:00</updated><author><name>Martin Page</name></author><id>tag:blog.notmyidea.org,2020-01-01:/au-dela-de-la-penetration.html</id><summary type="html">&lt;p&gt;C&amp;#8217;est un tout petit livre de 150 pages, découpé en trois parties : une introduction, un recueil de témoignages et enfin quelques&amp;nbsp;remerciements.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;auteur vient préciser qu&amp;#8217;il existe différentes sexualités, qu&amp;#8217;avant tout une sexualité &lt;em&gt;devrait&lt;/em&gt; être une rencontre, une écoute mutuelle, une recherche des plaisirs de&amp;nbsp;chacun …&lt;/p&gt;</summary><content type="html">&lt;p&gt;C&amp;#8217;est un tout petit livre de 150 pages, découpé en trois parties : une introduction, un recueil de témoignages et enfin quelques&amp;nbsp;remerciements.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;auteur vient préciser qu&amp;#8217;il existe différentes sexualités, qu&amp;#8217;avant tout une sexualité &lt;em&gt;devrait&lt;/em&gt; être une rencontre, une écoute mutuelle, une recherche des plaisirs de&amp;nbsp;chacun⋅e.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La question est: y a t-il des pratiques obligatoires ? Si dans un couple, la pénétration (ou toute autre pratique sexuelle) n&amp;#8217;était pas (ou plus) possible (ou pas ou plus souhaitée) est-ce que &amp;#8220;ce serait vraiment une tragédie&amp;#8221; ? Si ma compagne ne veut plus être pénétrée, si mon compagnon ne bande plus, est-ce forcement la fin du désir et du plaisir ? Ou bien est-ce l&amp;#8217;occasion d&amp;#8217;être créatifs&amp;nbsp;?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Il précise que parfois (souvent ?) la pénétration n&amp;#8217;est pas une pratique qui procure du plaisir aux femmes, et que, parce que c&amp;#8217;est un tabou, la pratique n&amp;#8217;est pas vraiment remise en&amp;nbsp;question. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Et parfois, tout simplement, des femmes n&amp;#8217;aiment pas particulièrement ça, elles ne ressentent pas le plaisir incroyable qu&amp;#8217;on leur intime de ressentir lors de cet acte. Elles ne souffrent de rien, pas de blessures, pas de peur, tout simplement ce n&amp;#8217;est pas le truc le plus intéressant pour elles en matière de sexualité. C&amp;#8217;est juste sympa, voire sans&amp;nbsp;intérêt.&lt;/p&gt;
&lt;p&gt;Une amie me racontant que le problème de la pénétration vaginale c&amp;#8217;est qu&amp;#8217;elle impliquait forcément contraception et que cela coûtait aux femmes. Une charge mentale de plus, une responsabilité, un truc auquel&amp;nbsp;penser.&lt;/p&gt;
&lt;p&gt;Sans pénétration, tout le corps est hypersensible et délicieusement hyperactif. Faire l&amp;#8217;amour devrait être la rencontre des corps et leur&amp;nbsp;conversation.&lt;/p&gt;
&lt;p&gt;Finalement, la pénétration est un mode adapté au capitalisme, à nos journées volées par le travail, par les angoisses et la compétition. Comme il y a peu de temps pour penser l&amp;#8217;amour, le pénis dans le vagin est pratique, on tient un certain temps, c&amp;#8217;est calibré, il y a un début et une fin bien précise, on accomplit son devoir sans penser et sans imaginer. La société&amp;nbsp;applaudit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ce passage fait echo pour moi, et à mon rapport au&amp;nbsp;temps.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Les hommes veulent entrer dans le corps de l&amp;#8217;autre à tout prix, ils s&amp;#8217;en servent comme d&amp;#8217;un objet au service de leur jouissance et souvent le plaisir de leur partenaire est accessoire. Ils disent qu&amp;#8217;ils font l&amp;#8217;amour mais en fait ils se masturbent dans le corps des femmes
Le patriarcat règne. Souvent la pénétration reproduit la domination de l&amp;#8217;homme sur la femme : l&amp;#8217;homme tient la femme, son sexe est en elle, il décide et&amp;nbsp;dirige.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Japprécie que l&amp;#8217;analyse ne soit pas portée sur la question de la sexualité sans évoquer les problématiques féministes, qui en mon sens sont&amp;nbsp;centrales.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;En fait, l&amp;#8217;homme préfère ne pas y penser. Plus exactement: il refuse de se penser comme un être pénétrable. Il est farouchement contre sa propre pénétration. Pourquoi ? Arès tout, si la pénétration peut apporter du plaisir aux femmes, elle peut plus sûrement encore en donner aux hommes. C&amp;#8217;est un fait. L&amp;#8217;anatomie masculine est dotée d&amp;#8217;une prostate [&amp;#8230;]. Cet organe est une zone puissamment érogène et une grande source de plaisir qui peut conduire à la jouissance et à&amp;nbsp;l&amp;#8217;éjaculation. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bien sur, le massage prostatique est tabou encore plus grand (que parler de pénétration vaginale), et ce plaisir n&amp;#8217;est pas pratiqué par la grande majorité des&amp;nbsp;hommes.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Le désir de leur propre pénétration est singulièrement absent chez les hommes hétérosexuels qui paraissent ainsi comme de ridicules et paradoxales victimes de leur domination. [&amp;#8230;] Dans leurs majorité, les hommes hétérosexuels, pourtant aventureux déclarés quand il s&amp;#8217;agit du corps de l&amp;#8217;autre, se révèlent puritains concernant leur propre&amp;nbsp;corps. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Et, en parlant de l&amp;#8217;utilisation de l&amp;#8217;anus / de la prostate&amp;nbsp;: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Leur angoisse étant de ne pas être assez homme, de ne pas correspondre au cliché viril. C&amp;#8217;est bien ça l&amp;#8217;enjeu pour certains : ils pénètrent pour ne pas risquer de mettre au jour leur propre désir d&amp;#8217;avoir un doigt ou un gode dans l&amp;#8217;anus, pour ne pas devenir un être pénétrable, c&amp;#8217;est-à-dire, dans leur stupide esprit macho : une femme ou un homosexuel. Donc un dominé, un faible. &lt;strong&gt;Être considéré comme une femme ou un gay reste la grande peur des hétérosexuels&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;J&amp;#8217;aime bien les « insultes » qui sont utilisées par Martin page : « Punaise de kalenbullar de plutonium », « punaise de tragédie », etc. C&amp;#8217;est mignon et c&amp;#8217;est bien comme ça&amp;nbsp;!&lt;/p&gt;</content><category term="Lectures"></category><category term="sexualité"></category><category term="féminisme"></category></entry><entry><title>La conjuration des égos</title><link href="https://blog.notmyidea.org/la-conjuration-des-egos.html" rel="alternate"></link><published>2020-01-01T00:00:00+01:00</published><updated>2020-01-01T00:00:00+01:00</updated><author><name>Aude Vidal</name></author><id>tag:blog.notmyidea.org,2020-01-01:/la-conjuration-des-egos.html</id><summary type="html">&lt;h1 id="le-feminisme-entre-intime-et-politique"&gt;Le féminisme, entre intime et&amp;nbsp;politique&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Privées de paroles, privées d&amp;#8217;espace, les femmes sont aussi d&amp;#8217;une certaine manière privées de leur corps. C&amp;#8217;est ainsi qu&amp;#8217;est décrit le rapport des petites filles à leur corps par des sportives qui notent la faible amplitude d&amp;#8217;un geste, un …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;h1 id="le-feminisme-entre-intime-et-politique"&gt;Le féminisme, entre intime et&amp;nbsp;politique&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Privées de paroles, privées d&amp;#8217;espace, les femmes sont aussi d&amp;#8217;une certaine manière privées de leur corps. C&amp;#8217;est ainsi qu&amp;#8217;est décrit le rapport des petites filles à leur corps par des sportives qui notent la faible amplitude d&amp;#8217;un geste, un bras qui ne va pas chercher loin derrière pour envoyer une&amp;nbsp;balle.&lt;/p&gt;
&lt;p&gt;Les femmes sont les premières à se flageller, lorsqu&amp;#8217;elle ne le sont pas, disponibles : « égoïste », « tu ne pense qu&amp;#8217;à toi ». Conseils familiaux, amicaux et professionnels, émis indifféremment par des individues des deux sexes, castrent les femmes, les culpabilisent, s&amp;#8217;attaquent à leurs exigences pour leur faire rejoindre le niveau&amp;nbsp;acceptable.&lt;/p&gt;
&lt;p&gt;Le recours à la recherche en sciences humaines et sociales est ici vital pour débusquer les inégalités, tant dans le discours commun le moindre contre-exemple (« Oui, mais moi je connais des femmes qui ») démonte toute tentative de&amp;nbsp;généralisation.&lt;/p&gt;
&lt;p&gt;La disproportion entre l&amp;#8217;immensité de la tâche (détruire le patriarcat) et les luttes minuscules (le refus de l&amp;#8217;expression « mademoiselle » par exemple) pour s&amp;#8217;y atteler sans attendre le Grand Soir offre un objet de sarcasmes tout prêt à ceux qui ont intérêt à ce que rien ne change et à ce que les femmes restent ces petits être serviables et&amp;nbsp;décoratifs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="penser-ensemble-lemancipation"&gt;Penser ensemble&amp;nbsp;l&amp;#8217;émancipation&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;L&amp;#8217;objectif de changer le sort de toutes les femmes semble s&amp;#8217;être perdu en route quand le féminisme n&amp;#8217;est plus décrit par certaines camarades que comme un outil pour être « à l&amp;#8217;aise avec son identité de genre ». Ainsi une oppression ne serait problématique que parce qu&amp;#8217;elle crée du malaise, pas quand elle est si bien intégrée qu&amp;#8217;elle en paraît naturelle. Ce féminisme ne s&amp;#8217;adresse plus à toutes les femmes mais à celles qui sauront s&amp;#8217;en saisir dans leur parcours de vie. Le mouvement qui donnait une importance nouvelle au personnel pour changer le politique laisse apparaître parfois de manière marginale, parfois de manière plus prégnante, une entreprise émancipatrice individuelle ou à la dimension collective réduite, attentive aux parcours et identités des personnes qui&amp;nbsp;l&amp;#8217;investissent.&lt;/p&gt;
&lt;p&gt;Au lieu de lutter de front contre les assignations de genre, de tenter de les neutraliser — au moins le temps de l&amp;#8217;enfance, comme le proposent les féministes pour les écoles suédoises — on va plutôt chercher à les adapter aux besoins individuels et à rendre confortable l&amp;#8217;habitude (finalement plus problématique du tout !) de s&amp;#8217;adresser à chacun⋅e en fonction de son identité de genre, pourvu qu&amp;#8217;elle coïncide avec ses&amp;nbsp;souhaits.&lt;/p&gt;
&lt;p&gt;Mais cette bienveillance qui n&amp;#8217;a pour but qu&amp;#8217;elle même est aussi stérile qu&amp;#8217;un féminisme qui a vocation à permettre à des femmes de se construire des destins singuliers appréciables. Le féminisme nous aide à combattre les inégalités entre hommes et femmes, pas à construire des bulles de confort dans un monde qui va mal et qui fait&amp;nbsp;mal&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="un-genre-a-soi"&gt;Un genre à&amp;nbsp;soi&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Parallèlement à ces sommets de sexisme, alors que nous avons plus besoin de féminisme que jamais, dans les milieux radicaux s&amp;#8217;impose l&amp;#8217;idée que la catégorie « femme » est bien étriquée et qu&amp;#8217;abolir le genre passe par la remise en cause des identités genrées au niveau individuel… de même qu&amp;#8217;on sauve la planète du désastre écologique en fermant le robinet quand on se brosse les dents ? Adopter une identité non-binaire ou trans, ce serait refuser l&amp;#8217;assignation à des rôles sociaux stéréotypés et donc les détruire,&amp;nbsp;espère-t-on.&lt;/p&gt;
&lt;p&gt;Explorer les différentes manières de vivre en dehors d&amp;#8217;assignations étriquées est une démarche intéressante… pour soi même. Rappelons que personne n&amp;#8217;échappe à des assignations très binaires qui nous ont formé⋅es et dont il serait présomptueux de dire que nous les avons « déconstruites ». Mais surtout : à quoi bon exercer une grande liberté individuelle si ce n&amp;#8217;est pour rappeler que cette liberté concerne toutes les femmes et n&amp;#8217;est pas réservée à celles qui se définissent comme non-binaires ou trans&amp;nbsp;?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;J&amp;#8217;ai un peu de mal avec ce passage, peut-être parce que je ne le comprends pas tout à fait. Je tente la paraphrase, « C&amp;#8217;est bien de se remettre en question, mais il ne faudrait pas croire qu&amp;#8217;on réussit à s&amp;#8217;extraire de notre construction genrée. Et même si on avait réussi, à quoi cela servirait-il ? », ou alors « C&amp;#8217;est bien de se défaire des constructions genrées, mais ce n&amp;#8217;est pas un objectif en soi&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;Je pense que ce qui me dérange c&amp;#8217;est qu&amp;#8217;on vient « taper » sur les trans ici, et que j&amp;#8217;ai du mal à avoir une vision nuancée sur le sujet : c&amp;#8217;est (plus ou moins) discuté dans la suite du bouquin, mais il ne faudrait pas que ces considérations puissent être utilisées pour venir accuser les personnes trans, alors même que celles-ci vivent déjà une oppression importante : pourquoi on vient les accuser, et de quoi ? Qu&amp;#8217;est ce que cette accusation permet de développer en terme politique ? Quel est l&amp;#8217;objectif, et qu&amp;#8217;est-ce que cela fait vivre comme oppression, me semble aussi un point&amp;nbsp;important.&lt;/p&gt;
&lt;p&gt;Je ne suis pas sur de lire les choses correctement, mais Aude Vidal ici semble mettre un peu trop de côté ces ressentis personnels, parce que — de son point de vue — ils obstruent la prise de recul et l&amp;#8217;analyse sur le sujet : on vient mettre le &lt;em&gt;focus&lt;/em&gt; sur les relations interpersonnelles, et celles-ci prennent le pas sur l&amp;#8217;objectif. Comme elle le formule&amp;nbsp;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Le féminisme nous aide à combattre les inégalités entre hommes et femmes, pas à construire des bulles de confort dans un monde qui va mal et qui fait&amp;nbsp;mal.&lt;/p&gt;
&lt;p&gt;Le succès grandissant des identités non-binaires peut morceler la classe des femmes jusqu&amp;#8217;à les sommer daccueillir avec sororité des hommes non-binaires. [&amp;#8230;] Ces espaces sont des lieux d&amp;#8217;&lt;em&gt;empowerment&lt;/em&gt; individuel mais surtout collectif, &lt;strong&gt;ce qui requiert une approche en termes de classe qui n&amp;#8217;existe ni dans la revendication d&amp;#8217;une identité non-binaire, ni dans une critique complaisante de la masculinité&lt;/strong&gt; en tant que case trop étroite pour permettre l&amp;#8217;épanouissement des personnes qui y sont&amp;nbsp;assignées.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ce passage me fait penser aux groupes de paroles auxquels je participe, pour lesquels nous étions en non-mixité hommes à ses débuts, pour s&amp;#8217;ouvrir a une mixité pour éviter les écueils dont il est question ici. Japprécie de trouver ici le concept de « classe » qui me semble être&amp;nbsp;important.&lt;/p&gt;
&lt;h2 id="autodefinition-ou-sont-les-autres"&gt;Autodéfinition : où sont les autres&amp;nbsp;?&lt;/h2&gt;
&lt;p&gt;Mes notes ne sont pas terminées ici, mais clairement c&amp;#8217;est un passage avec lequel je ne suis pas vraiment d&amp;#8217;accord / qui me&amp;nbsp;surprends.&lt;/p&gt;
&lt;p&gt;Le droit français&amp;nbsp;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Toute personne majeure ou mineure émancipée qui démontre par une réunion suffisante de faites que la mention relative à son sexe dans les actes de l&amp;#8217;état civil ne correspond pas à celui dans lequel elle se présente et dans lequel elle est connue peut en obtenir la&amp;nbsp;modification.&lt;/p&gt;
&lt;p&gt;Le texte, qui n&amp;#8217;exige des personnes trans que de s&amp;#8217;être présenté⋅es aux autres comme la femme ou l&amp;#8217;homme qu&amp;#8217;elles savent être, définit le genre comme une expérience sociale. « Le genre est un produit du patriarcat », nous rappelle la féministe Meghan Murphy et « les notions entourant la masculinité et la féminité existent pour naturaliser la domination masculine et la subordination féminine », pas pour être des identités individuelles inventées par chacun⋅e et donnant lieu à des genres pluriels. elle conclut donc&amp;nbsp;:&lt;/p&gt;
&lt;p&gt;Les hommes ne peuvent pas s&amp;#8217;exclure aussi facilement, par simple identification, de la classe des oppresseurs, tout comme les femmes ne peuvent simplement choisir de s&amp;#8217;identifier hors d&amp;#8217;une vulnérabilité à la violence&amp;nbsp;masculine.&lt;/p&gt;
&lt;p&gt;l&amp;#8217;approche des « milieux &lt;span class="caps"&gt;LGBT&lt;/span&gt; et nouveaux féministes radicaux », qui « tiennent à ce que chacun⋅e ait la liberté de se définir pour échapper à une définition venue de l&amp;#8217;extérieur, un regard social perçu comme&amp;nbsp;oppressant.&lt;/p&gt;
&lt;/blockquote&gt;</content><category term="Lectures"></category><category term="féminisme"></category></entry><entry><title>Break technologique</title><link href="https://blog.notmyidea.org/break-technologique.html" rel="alternate"></link><published>2019-12-14T00:00:00+01:00</published><updated>2019-12-14T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-12-14:/break-technologique.html</id><summary type="html">&lt;p&gt;Comme je le soulignais il y a quelques jours dans ce journal de bord, je suis « drogué aux écrans ». Au point que je passe parfois ma journée entière sans en décrocher, en passant de l&amp;#8217;un à&amp;nbsp;l&amp;#8217;autre.&lt;/p&gt;
&lt;h2 id="les-problemes"&gt;Les&amp;nbsp;problèmes&lt;/h2&gt;
&lt;p&gt;En fait, en analysant un peu plus la situation …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Comme je le soulignais il y a quelques jours dans ce journal de bord, je suis « drogué aux écrans ». Au point que je passe parfois ma journée entière sans en décrocher, en passant de l&amp;#8217;un à&amp;nbsp;l&amp;#8217;autre.&lt;/p&gt;
&lt;h2 id="les-problemes"&gt;Les&amp;nbsp;problèmes&lt;/h2&gt;
&lt;p&gt;En fait, en analysant un peu plus la situation, et en ciblant les &lt;em&gt;usages&lt;/em&gt; plutôt que les &lt;em&gt;objets&lt;/em&gt;, je me rends compte que je suis drogué à plusieurs choses&amp;nbsp;:&lt;/p&gt;
&lt;h3 id="immediatete-des-communications"&gt;Immédiateté des&amp;nbsp;communications&lt;/h3&gt;
&lt;p&gt;Que ce soit les emails, que je vais consulter plusieurs fois par jour (quand ce n&amp;#8217;est pas en continu) ou les notifications instantanées (Signal, Whatsapp, Messenger etc), je me retrouve souvent derrière l&amp;#8217;écran pour les&amp;nbsp;lire.&lt;/p&gt;
&lt;p&gt;Avec un effet de bord assez étrange : parfois je souhaite simplement envoyer un mail à quelqu&amp;#8217;un·e, et en ouvrant mon client mail je me retrouve à… tout simplement oublier, plongé dans le flux des mails reçus et à&amp;nbsp;traiter.&lt;/p&gt;
&lt;h3 id="dependance-aux-notifications-web"&gt;Dépendance aux notifications&amp;nbsp;Web&lt;/h3&gt;
&lt;p&gt;Que ce soit sur le réseau social « Mastodon », sur lequel je ne publie pas grand chose, mais que j&amp;#8217;actualise parfois de manière frénétique pour « savoir ce qui s&amp;#8217;y raconte », ou sur des site tels que Le bon coin, Github, ou Youtube, je me retrouve à « lire le flux », sans trop réussir à en sortir.&amp;nbsp;Aspiré.&lt;/p&gt;
&lt;h3 id="le-sweet-spot-du-dev"&gt;Le « Sweet Spot » du&amp;nbsp;dev&lt;/h3&gt;
&lt;p&gt;Parfois, je code, et quand ça m&amp;#8217;arrive, je suis dans une sorte de transe assez incroyable, durant laquelle pendant plusieurs heures je ne fais rien d&amp;#8217;autre, parfois même sans manger ni bouger du canapé : il faut que je termine&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est à la fois quelque chose de « bien » parce que je progresse et les outils sur lesquels je bossent fonctionnent, mais c&amp;#8217;est au détriment bien sur d&amp;#8217;un équilibre de mon&amp;nbsp;quotidien&amp;#8230;&lt;/p&gt;
&lt;h2 id="pistes-pour-men-sortir"&gt;Pistes pour m&amp;#8217;en&amp;nbsp;sortir&lt;/h2&gt;
&lt;p&gt;J&amp;#8217;ai l&amp;#8217;impression que je peux trouver des pistes de solution à la fois techniques (technologiques) et à la fois liées à mon mode de&amp;nbsp;vie.&lt;/p&gt;
&lt;h3 id="solutions-technologiques"&gt;Solutions&amp;nbsp;technologiques&lt;/h3&gt;
&lt;p&gt;En écrivant tout ça, je me dis plusieurs choses&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Je devrais me désinscrire des services de communication type Whatsapp et&amp;nbsp;Signal.&lt;/li&gt;
&lt;li&gt;Je devrais limiter drastiquement les applications installées sur mon téléphone (plus de mails, youhou&amp;nbsp;!)&lt;/li&gt;
&lt;li&gt;Existe-il un moyen (Thunderbird ?) d&amp;#8217;écrire des mails sans voir sa liste de mails&amp;nbsp;?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="solutions-liees-a-mon-mode-de-vie"&gt;Solutions liées à mon mode de&amp;nbsp;vie&lt;/h3&gt;
&lt;p&gt;Mais… Il me semble que c&amp;#8217;est surtout une question de volonté et « d&amp;#8217;hygiène numérique » : si je me demande quelle place je veux laisser aux écrans dans ma vie, alors je doit questionner l&amp;#8217;usage que j&amp;#8217;en&amp;nbsp;ait.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Je peux limiter le nombre d&amp;#8217;outils que j&amp;#8217;utilise au&amp;nbsp;quotidien.&lt;/li&gt;
&lt;li&gt;Est-ce que je peux me passer d&amp;#8217;un smartphone&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;Est-ce que je peux me passer d&amp;#8217;une connexion internet ? Au travail ? Chez moi&amp;nbsp;?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Est-ce que je ne devrais pas simplement « arrêter de faire de l&amp;#8217;informatique », au moins pour un temps ? Ça aurait le mérite de me permettre de me désengager de certains projets qui ont des liens forts avec le numérique, et qui parfois pourrissent mon&amp;nbsp;quotidien.&lt;/p&gt;
&lt;p&gt;Des solutions radicales, mais je me posais déjà des questions similaires dans &lt;a href="https://blog.notmyidea.org/focusing-on-what-matters.html"&gt;un article de 2016 (en anglais)&lt;/a&gt;, sans avoir vraiment réussi à m&amp;#8217;y&amp;nbsp;tenir.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Check emails only once a day. Do not do it in the morning, before working, to keep my mind clear. I would say at 2pm (after lunch). (This doesn&amp;#8217;t mean I will not send mails&amp;nbsp;tho)&lt;/li&gt;
&lt;li&gt;Stay away from the Internet during the morning. I&amp;#8217;ll not connect if I don&amp;#8217;t need&amp;nbsp;to.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id="extinction-des-feux"&gt;Extinction des&amp;nbsp;feux&lt;/h2&gt;
&lt;p&gt;Voici une petite liste des choses qui semblent pouvoir réduire ma dépendance technologique&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/spiral-project/ihatemoney/issues/517"&gt;Me détacher de la maintenance de ihatemoney&lt;/a&gt;&amp;nbsp;; &lt;/li&gt;
&lt;li&gt;Supprimer la plupart des applications sur mes téléphones (pro et&amp;nbsp;perso)&lt;/li&gt;
&lt;li&gt;Éteindre mon serveur personnel&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Ne plus ramener mon téléphone pro à la maison&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Avoir un ordinateur fixe au travail, et l&amp;#8217;y laisser&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Limiter mon utilisation de l&amp;#8217;ordinateur perso à 1h par jour, sauf exceptions&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Aller voir mes emails pro une fois par jour uniquement&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Répondre au téléphone une fois par jour uniquement (et faire en sorte que mes correspondants&amp;nbsp;comprennent);&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&amp;#8217;avenir dira ce que j&amp;#8217;en fais, mais je suis content d&amp;#8217;écrire ça&amp;nbsp;:-)&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Assurance chômage</title><link href="https://blog.notmyidea.org/assurance-chomage.html" rel="alternate"></link><published>2019-12-13T00:00:00+01:00</published><updated>2019-12-13T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-12-13:/assurance-chomage.html</id><summary type="html">
&lt;p&gt;Depuis une génération, les durées et les montants d&amp;#8217;indemnisation ont régulièrement diminué en France, par étapes successives, ce qui fait que bon nombre de salariés n&amp;#8217;ont pas conscience qu&amp;#8217;il ne seront indemnisés à 57 % de leur ex-salaire en cas de chômage, et pour seulement deux ans, alors …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Depuis une génération, les durées et les montants d&amp;#8217;indemnisation ont régulièrement diminué en France, par étapes successives, ce qui fait que bon nombre de salariés n&amp;#8217;ont pas conscience qu&amp;#8217;il ne seront indemnisés à 57 % de leur ex-salaire en cas de chômage, et pour seulement deux ans, alors que les personnes de la génération précédente l&amp;#8217;on été pendant trois ans à 75 % ou 80 % de leur&amp;nbsp;ex-salaire. &lt;/p&gt;
&lt;p&gt;Évolution des durées max d&amp;#8217;indemnisations :
- 1979 : 36 mois
- 1984 : 30 mois
- 2001 : 23&amp;nbsp;mois&lt;/p&gt;
&lt;h2 id="dates-cles-et-evolution"&gt;Dates clés et&amp;nbsp;évolution&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Avant 1982&lt;/strong&gt; l&amp;#8217;indemnisation générale est de &lt;strong&gt;90 % du salaire brut&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1982&lt;/strong&gt; il y a un déficit, lié à une forte hausse du chômage (après le second choc pétrolier de&amp;nbsp;1979)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1982&lt;/strong&gt;, hausse des cotisations, baisse des indemnisations et nouveau système les faisant dépendre de la durée de&amp;nbsp;cotisation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1984&lt;/strong&gt;, &lt;strong&gt;l&amp;#8217;assistance de l&amp;#8217;État suppléé l&amp;#8217;Unédic&lt;/strong&gt; pour les chômeurs en fin de droit., via l&amp;#8217;&lt;span class="caps"&gt;ASS&lt;/span&gt; (l&amp;#8217;allocation spécifique de&amp;nbsp;solidarité),&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1988&lt;/strong&gt; : Instauration du &lt;span class="caps"&gt;RMI&lt;/span&gt; (revenu minimum d&amp;#8217;insertion) sous Michel&amp;nbsp;Rocard.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1992&lt;/strong&gt; : Suite à une crise financière de l&amp;#8217;Unédic, mesures d&amp;#8217;économie :&lt;ul&gt;
&lt;li&gt;allongement de la durée de cotisation minimum (modifiée plusieurs&amp;nbsp;fois)&lt;/li&gt;
&lt;li&gt;dégressivité des&amp;nbsp;allocations&lt;/li&gt;
&lt;li&gt;contrôle renforcé de la recherche&amp;nbsp;d&amp;#8217;emploi.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2001&lt;/strong&gt; : Le &lt;span class="caps"&gt;MEDEF&lt;/span&gt; impose la création du &lt;span class="caps"&gt;PARE&lt;/span&gt; (Plan d&amp;#8217;aide au retour à l&amp;#8217;emploi), et une forte baisse des&amp;nbsp;cotisations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2002&lt;/strong&gt; : Remontée du taux de chômage. La durée d&amp;#8217;indemnisation passe de 30 à 23 mois et durcit les conditions d&amp;#8217;accès au régime. Désormais, à peine la moitié des chômeurs sont indemnisés par&amp;nbsp;l&amp;#8217;Unédic.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2006&lt;/strong&gt; : Nouvelle convention qui durcit de nouveau les conditions d&amp;#8217;accès au régime d&amp;#8217;indemnisation, tout en instaurant le principe du guichet unique et le suivi mensuel des&amp;nbsp;chômeurs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2009&lt;/strong&gt; : Fusion Assedic + &lt;span class="caps"&gt;ANPE&lt;/span&gt; = Pôle&amp;nbsp;emploi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;2019&lt;/strong&gt; : Nouvelle réforme de l&amp;#8217;assurance chômage (Gouvernement&amp;nbsp;Macron)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le régime de l&amp;#8217;Assurance chômage est en constant déficit depuis 2009. Pour cette raison, sa dette atteint près de 26 milliards d&amp;#8217;euros fin&amp;nbsp;2015. &lt;/p&gt;
&lt;h2 id="evolution-du-taux-de-chomage"&gt;Évolution du taux de&amp;nbsp;chômage&lt;/h2&gt;
&lt;p&gt;Deux graphiques, qui montrent l&amp;#8217;évolution du taux de chômage. Durant les périodes représentées ici, les conditions pour être « ayants-droit » ont&amp;nbsp;évoluées. &lt;/p&gt;
&lt;p&gt;&lt;img alt="Personnes considérées en recherche d'emploi" src="/images/chomage/taux-chomage.png"&gt;&lt;/p&gt;
&lt;p&gt;Ce second graphique montre les personnes qui se considèrent en recherche d&amp;#8217;emploi. On voir qu&amp;#8217;il y a un écart important entre les deux&amp;nbsp;graphiques.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Personnes qui se disent en recherche d'emploi" src="/images/chomage/halo-chomage.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.insee.fr/fr/statistiques/4201123#graphique-chomage-g1-fr"&gt;sources&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="budget-de-lassurance-chomage"&gt;Budget de l&amp;#8217;assurance&amp;nbsp;chômage&lt;/h2&gt;
&lt;p&gt;&lt;img alt="Budget dette" src="/images/chomage/dette-chomage.png"&gt;&lt;/p&gt;
&lt;h2 id="financement-de-lassurance-chomage"&gt;Financement de l&amp;#8217;assurance&amp;nbsp;chômage&lt;/h2&gt;
&lt;p&gt;Les allocations chômage sont principalement financées par des cotisations prélevées sur les salaires. Les cotisations des employeurs représentent 4,05% des salaires&amp;nbsp;bruts.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;État participe également au financement, via l&amp;#8217;impôt : depuis janvier 2019, une fraction de la &amp;#8220;&lt;span class="caps"&gt;CSG&lt;/span&gt; activité&amp;#8221; est affectée à l&amp;#8217;Assurance chômage, en lieu et place des cotisations&amp;nbsp;salariales. &lt;/p&gt;
&lt;p&gt;https://www.unedic.org/a-propos/comprendre-le-financement-de-lassurance-chomage&lt;/p&gt;
&lt;h2 id="unedic"&gt;&lt;span class="caps"&gt;UNEDIC&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;L&amp;#8217;&lt;span class="caps"&gt;UNEDIC&lt;/span&gt; est une association de délégation de service public, qui s&amp;#8217;occupe de gérer l&amp;#8217;assurance chômage, en coopération avec Pôle&amp;nbsp;Emploi.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;Assurance chômage est financée par les cotisations des employeurs et par une partie de la &lt;span class="caps"&gt;CSG&lt;/span&gt; pour les salariés. Une cotisation a toutefois été maintenue pour les intermittents du&amp;nbsp;spectacle.&lt;/p&gt;
&lt;p&gt;Elle vise à assurer un revenu de remplacement aux salariés involontairement privés d&amp;#8217;emploi et à accélérer leur retour à lemploi par le financement daides et de prestations&amp;nbsp;adaptées. &lt;/p&gt;
&lt;p&gt;Obligée, par ses statuts, d&amp;#8217;équilibrer son budget, l&amp;#8217;Unedic ne peut remplir sa mission, qui porte sur le paiement régulier des allocations de chômage, que si les dépenses sont globalement alignées sur les&amp;nbsp;ressources.&lt;/p&gt;
&lt;p&gt;De ce fait, en 2002, une partie des partenaires sociaux de l&amp;#8217;Unedic (&lt;span class="caps"&gt;MEDEF&lt;/span&gt;, &lt;span class="caps"&gt;CFDT&lt;/span&gt;, &lt;span class="caps"&gt;CFTC&lt;/span&gt; et &lt;span class="caps"&gt;CFE&lt;/span&gt;-&lt;span class="caps"&gt;CGC&lt;/span&gt;) a accepté de signer une convention réduisant la durée d&amp;#8217;indemnisation de la majorité des chômeurs. Ce choix a été fait dans le souci de préserver le &lt;span class="caps"&gt;PARE&lt;/span&gt;, et de ne pas toucher au principe de non-dégressivité dans le calcul des&amp;nbsp;indemnités. &lt;/p&gt;
&lt;h2 id="plan-daide-au-retour-a-lemploi-pare"&gt;Plan d&amp;#8217;aide au retour à l&amp;#8217;emploi (&lt;span class="caps"&gt;PARE&lt;/span&gt;)&lt;/h2&gt;
&lt;p&gt;Engagement signé entre le chômeur et le Pôle emploi de tout mettre en œuvre pour que celui-ci retrouve rapidement un emploi. Les Assedic ne se bornent plus à verser un revenu de remplacement au demandeur d&amp;#8217;emploi; elles l&amp;#8217;aident à revenir vers l&amp;#8217;emploi dans le cadre d&amp;#8217;un projet défini avec lui, de manière&amp;nbsp;contractuelle.&lt;/p&gt;
&lt;p&gt;En 2000, dans un contexte d&amp;#8217;excédent budgétaire (1,3 milliard d&amp;#8217;euros), les partenaires sociaux adoptent le &lt;span class="caps"&gt;PARE&lt;/span&gt;. Prévoyant un surplus financier de 18 milliards d&amp;#8217;euros sur les trois années suivantes selon les modalités de la convention précédente, &lt;strong&gt;les partenaires décident de redistribuer cette somme au travers d&amp;#8217;une baisse des cotisations patronales&lt;/strong&gt; et d&amp;#8217;un financement de certaines structures&amp;nbsp;d&amp;#8217;insertion. &lt;/p&gt;
&lt;p&gt;Imposé par le &lt;span class="caps"&gt;MEDEF&lt;/span&gt;&amp;nbsp;?&lt;/p&gt;
&lt;h2 id="reforme-chomage-de-2019"&gt;Reforme chômage de&amp;nbsp;2019&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Il faudra avoir travaillé 6 mois (contre 4 mois) sur les 24 derniers mois (contre 28 mois) pour percevoir une allocation de retour à lemploi&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;Le rechargement des droits à lindemnisation chômage est repoussé à 6 mois (contre 1 mois avant la réforme)&amp;nbsp;;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Notes"></category></entry><entry><title>Prix libre et conscient &amp; culpabilisation</title><link href="https://blog.notmyidea.org/prix-libre-et-conscient.html" rel="alternate"></link><published>2019-12-11T00:00:00+01:00</published><updated>2019-12-11T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-12-11:/prix-libre-et-conscient.html</id><summary type="html">&lt;p&gt;J&amp;#8217;avais envie de réagir suite à la lecture d&amp;#8217;une &lt;a href="https://oncletom.io/2019/12/10/exemple-prix-libre-conscient/"&gt;note dans le journal de Thomas&lt;/a&gt; qui parle de « prix libre &lt;em&gt;et&lt;/em&gt; conscient&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;Derrière le prix libre, je vois le fait que chacun⋅e paye ce qu&amp;#8217;il ou elle veut, et ce qu&amp;#8217;il ou elle peut. J …&lt;/p&gt;</summary><content type="html">&lt;p&gt;J&amp;#8217;avais envie de réagir suite à la lecture d&amp;#8217;une &lt;a href="https://oncletom.io/2019/12/10/exemple-prix-libre-conscient/"&gt;note dans le journal de Thomas&lt;/a&gt; qui parle de « prix libre &lt;em&gt;et&lt;/em&gt; conscient&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;Derrière le prix libre, je vois le fait que chacun⋅e paye ce qu&amp;#8217;il ou elle veut, et ce qu&amp;#8217;il ou elle peut. J&amp;#8217;y vois également une sorte de solidarité entre les personnes qui peuvent donner plus et celles qui ne peuvent&amp;nbsp;pas.&lt;/p&gt;
&lt;p&gt;Pour une tenue d&amp;#8217;évènement, voici les critères qui me paraissent intéressants&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Chacun⋅e donne ce qu&amp;#8217;iel&amp;nbsp;peut;&lt;/li&gt;
&lt;li&gt;Une &lt;strong&gt;solidarité entre les personnes qui le peuvent et celles qui le veulent&lt;/strong&gt; est&amp;nbsp;effective;&lt;/li&gt;
&lt;li&gt;Les organisat⋅eurs⋅rices ne perdent pas&amp;nbsp;d&amp;#8217;argent;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Les coûts sont assumés collectivement&lt;/strong&gt; par l&amp;#8217;ensemble des personnes, et non pas&amp;nbsp;individuellement.&lt;/li&gt;
&lt;li&gt;Les personnes qui donnent moins ne sont pas&amp;nbsp;culpabilisées.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Un des effets du prix libre est de permettre à des personnes qui ne pourraient pas s&amp;#8217;offrir tel ou tel évènement de venir et de participer, &lt;strong&gt;sans les faire culpabiliser&lt;/strong&gt; en fonction de la somme déposée dans la cagnotte, même si rien n&amp;#8217;est&amp;nbsp;donné.&lt;/p&gt;
&lt;p&gt;Je trouve dommage qu&amp;#8217;une solution qui déculpabilisait les pauvres (d&amp;#8217;être pauvres…) évolue vers une solution où ceux-cis sont maintenant &lt;em&gt;conscients&lt;/em&gt; du fait qu&amp;#8217;ils ne peuvent plus participer, où alors que leur participation à un impact sur la tenue de&amp;nbsp;l&amp;#8217;évènement.&lt;/p&gt;
&lt;p&gt;En d&amp;#8217;autres termes, j&amp;#8217;ai l&amp;#8217;impression que la solution du « prix libre &lt;em&gt;et&lt;/em&gt; conscient » vient contredire les points &lt;code&gt;1&lt;/code&gt; et &lt;code&gt;5&lt;/code&gt; de ma&amp;nbsp;liste. &lt;/p&gt;
&lt;p&gt;Je me questionne donc quand aux limites du prix libre : qu&amp;#8217;est-ce qui pousse les organisateurices à choisir un « prix libre est conscient » plutôt qu&amp;#8217;un simple « prix libre »&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;De mon expérience, les participan⋅te⋅s donnent parfois pas assez. Quelques idées en vrac qui devraient permettre d&amp;#8217;avoir un système de prix qui corresponde aux critères énoncés plus haut&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quand c&amp;#8217;est possible, avoir une entrée libre avec une boîte à dons. Chacun⋅e y donne ce qu&amp;#8217;il&amp;nbsp;veut.&lt;/li&gt;
&lt;li&gt;Avoir une jauge qui indique à quel point l&amp;#8217;évènement est déficitaire ou excédentaire (particulièrement pour les évènements qui se déroulent sur plusieurs jours), et afficher cette jauge à la fin de&amp;nbsp;l&amp;#8217;évènement.&lt;/li&gt;
&lt;/ul&gt;</content><category term="Journal"></category></entry><entry><title>Écran et dépendances</title><link href="https://blog.notmyidea.org/ecran-et-dependances.html" rel="alternate"></link><published>2019-12-09T00:00:00+01:00</published><updated>2019-12-09T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-12-09:/ecran-et-dependances.html</id><summary type="html">
&lt;p&gt;Je réalise aujourd&amp;#8217;hui à quel point ma vie est faite d&amp;#8217;une multitude d&amp;#8217;écrans, et à quel point le temps passe vite quand j&amp;#8217;en &lt;em&gt;consomme&lt;/em&gt; (j&amp;#8217;utilise volontairement ce terme de &lt;em&gt;consommer&lt;/em&gt;, tant j&amp;#8217;ai le sentiment que c&amp;#8217;est un bien de&amp;nbsp;consommation).&lt;/p&gt;
&lt;p&gt;Il y a …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Je réalise aujourd&amp;#8217;hui à quel point ma vie est faite d&amp;#8217;une multitude d&amp;#8217;écrans, et à quel point le temps passe vite quand j&amp;#8217;en &lt;em&gt;consomme&lt;/em&gt; (j&amp;#8217;utilise volontairement ce terme de &lt;em&gt;consommer&lt;/em&gt;, tant j&amp;#8217;ai le sentiment que c&amp;#8217;est un bien de&amp;nbsp;consommation).&lt;/p&gt;
&lt;p&gt;Il y a quelques mois, j&amp;#8217;ai choisi de ne pas avoir d&amp;#8217;ordinateur à la maison durant une semaine. Résultat ? Je me suis remis à lire ! Depuis, j&amp;#8217;essaye de reproduire quelque chose de similaire, mais me retrouve face à un triste constat : je suis&amp;nbsp;drogué.&lt;/p&gt;
&lt;p&gt;Les écrans sont trop présents. Comment faire sans eux ? Comment limiter leur pouvoir sur mon temps ? Que de questions&amp;nbsp;:-)&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Groupe de paroles hommes</title><link href="https://blog.notmyidea.org/groupe-de-paroles-hommes.html" rel="alternate"></link><published>2019-11-23T00:00:00+01:00</published><updated>2019-11-23T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-11-23:/groupe-de-paroles-hommes.html</id><summary type="html">
&lt;p&gt;&lt;em&gt;Questionner la non-mixité&amp;nbsp;hommes&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Il y a maintenant peut-être six mois, à l&amp;#8217;appel d&amp;#8217;un ami, je me suis mis à participer à un « groupe de parole » d&amp;#8217;hommes. L&amp;#8217;idée m&amp;#8217;est d&amp;#8217;abord apparue comme intéressante pour pouvoir discuter de certaines problématiques &lt;em&gt;entre hommes&lt;/em&gt; , entre autres des …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;&lt;em&gt;Questionner la non-mixité&amp;nbsp;hommes&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Il y a maintenant peut-être six mois, à l&amp;#8217;appel d&amp;#8217;un ami, je me suis mis à participer à un « groupe de parole » d&amp;#8217;hommes. L&amp;#8217;idée m&amp;#8217;est d&amp;#8217;abord apparue comme intéressante pour pouvoir discuter de certaines problématiques &lt;em&gt;entre hommes&lt;/em&gt; , entre autres des questions de rapport à l&amp;#8217;autre dans les relations&amp;nbsp;intimes.&lt;/p&gt;
&lt;p&gt;Jappréciais alors l&amp;#8217;idée de chercher à déconstruire les dominations masculines, et en parler entre hommes me paraissait un bon moyen de venir questionner certains comportements (oppressifs), sans avoir des personnes opprimées en face pour juger des situations. Quelque part, l&amp;#8217;envie était donc de se questionner collectivement sur ce qu&amp;#8217;on (les hommes) fait vivre comme société, en tant que&amp;nbsp;groupe.&lt;/p&gt;
&lt;p&gt;Je cherchais à pouvoir discuter, dans un « cercle bienveillant », de mes questionnements par rapport aux relations intimes, mais aussi d&amp;#8217;une manière générale par rapport à notre société. À avoir des regards extérieurs sur mes ressentis, à venir questionner certains de mes comportements, à trouver des interactions intimes, et peut-être de manière inconsciente à me réconforter sur une posture que j&amp;#8217;adopte en tant&amp;nbsp;qu&amp;#8217;homme.&lt;/p&gt;
&lt;p&gt;La raison pour laquelle être « entre hommes » m&amp;#8217;a paru intéressante de prime abord est de pouvoir discuter de notre « masculinité » de manière sensible, de venir questionner notre relation aux autres et de le faire sans être jugés par des personnes opprimées par mon comportement (que celui ci soit conscient ou non). Un moyen de libérer notre parole sur des sujets pas évidents, en quelques&amp;nbsp;sorte.&lt;/p&gt;
&lt;h2 id="et-puis"&gt;Et&amp;nbsp;puis…&lt;/h2&gt;
&lt;p&gt;Au fil des rencontres, les sujets abordés ont été vastes : on a parlé de violence &lt;span class="caps"&gt;VS&lt;/span&gt; non-violence, de rapport à nos mères, de rapport à nos dépendances, de métaphysique, de sexisme. Pour moi le moment ou on à commencé à parler de sexisme marque un tournant dans l&amp;#8217;histoire du&amp;nbsp;groupe.&lt;/p&gt;
&lt;p&gt;On s&amp;#8217;est alors trouvés dans une situation où des désaccords se sont manifestés. Désaccords liés à la reconnaissance de nos privilèges en tant qu&amp;#8217;hommes. Refaire le débat ne me semble pas vraiment instructif, mais j&amp;#8217;ose croire que les discussions qui ont eu lieu ont permis à chacun de nous d&amp;#8217;évoluer dans notre auto-critique personnelle. Je crois que ces discussions étaient&amp;nbsp;utiles.&lt;/p&gt;
&lt;p&gt;Ces discussions ont également éveillé en moi l&amp;#8217;envie de questionner la non-mixité de notre groupe. Pour quelle raison(s) se réunir en non-mixité ? Pourquoi exclure les femmes de nos rendez-vous&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Notez bien que je ne questionne pas ici la question de la non-mixité dans un groupe d&amp;#8217;opprimé⋅e⋅s, mais bel et bien dans un groupe&amp;nbsp;d&amp;#8217;oppresseurs.&lt;/p&gt;
&lt;p&gt;Ne pas être confronté au regard des femmes nous permet de ne pas nous sentir coupables face à certains de nos comportements — sexistes . Cela nous permet donc d&amp;#8217;accepter d&amp;#8217;en parler, de rompre le tabou, alors même qu&amp;#8217;on les estime, quelque part, &lt;em&gt;déviants&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;On cherche à créer une sorte de cocon (douillet et chaud) pour pouvoir exprimer nos doutes sur nos comportements, sans être remis en cause, et surtout sans être&amp;nbsp;jugés.&lt;/p&gt;
&lt;p&gt;Potentiellement, le fait de se retrouver entre hommes, sans l&amp;#8217;avis de &lt;em&gt;l&amp;#8217;autre sexe&lt;/em&gt; signifie aussi qu&amp;#8217;on peut se rassurer sur la déviance de ces comportements, pour — de manière consciente ou non — se sentir mieux, et donc asseoir notre domination&amp;nbsp;masculine.&lt;/p&gt;
&lt;h2 id="questionner-la-non-mixite"&gt;Questionner la&amp;nbsp;non-mixité&lt;/h2&gt;
&lt;p&gt;J&amp;#8217;en viens donc a questionner le choix de la non-mixité pour ce groupe de parole, de manière personnelle d&amp;#8217;abord, puis ensuite de manière ouverte, au reste du&amp;nbsp;groupe.&lt;/p&gt;
&lt;p&gt;Ce qu&amp;#8217;on fait lors de notre groupe de parole me semble nouveau : se parler entre personnes d&amp;#8217;horizons différents, déconstruire nos comportements, se donner des astuces sur comment déjouer tel ou tel mécanisme chez nous me semble louable, voire même&amp;nbsp;nécessaire.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai découvert avec ce groupe de parole un outil qui me semble&amp;nbsp;utile.&lt;/p&gt;
&lt;p&gt;Mais quand je challenge l&amp;#8217;idée de la non-mixité, je ne trouve pas de raison — autre que la peur d&amp;#8217;être jugé — de refuser la mixité dans notre groupe. Je crois qu&amp;#8217;ouvrir nos discussions nous permettrait d&amp;#8217;affronter certains sujets de manière plus&amp;nbsp;juste.&lt;/p&gt;
&lt;p&gt;Lors d&amp;#8217;un de nos regroupements, nous décidons donc, après quelques discussions, d&amp;#8217;ouvrir le groupe à d&amp;#8217;autres personnes, peu importe leur sexe, tout en cherchant à conserver un groupe de petite taille, pour que la création d&amp;#8217;une confiance mutuelle soit plus simple à&amp;nbsp;obtenir.&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Ignorance et vertu</title><link href="https://blog.notmyidea.org/ignorance-et-vertu.html" rel="alternate"></link><published>2019-11-23T00:00:00+01:00</published><updated>2019-11-23T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-11-23:/ignorance-et-vertu.html</id><summary type="html">
&lt;blockquote&gt;
&lt;p&gt;Rester dans une position de &lt;em&gt;sachant&lt;/em&gt; semble me pousser à des comportements de fermeture&amp;nbsp;d&amp;#8217;esprit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Reconnaître mon ignorance me permet de découvrir de laisser mes interlocut⋅eurs⋅rices m&amp;#8217;expliquer de manière claire ce que je ne connais pas encore, là où laisser penser que je connais ne m …&lt;/p&gt;</summary><content type="html">
&lt;blockquote&gt;
&lt;p&gt;Rester dans une position de &lt;em&gt;sachant&lt;/em&gt; semble me pousser à des comportements de fermeture&amp;nbsp;d&amp;#8217;esprit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Reconnaître mon ignorance me permet de découvrir de laisser mes interlocut⋅eurs⋅rices m&amp;#8217;expliquer de manière claire ce que je ne connais pas encore, là où laisser penser que je connais ne m&amp;#8217;apporte que du flou et une posture éthiquement&amp;nbsp;bancale.&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Fatigue et compétition</title><link href="https://blog.notmyidea.org/fatigue-et-competition.html" rel="alternate"></link><published>2019-11-17T00:00:00+01:00</published><updated>2019-11-17T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-11-17:/fatigue-et-competition.html</id><summary type="html">
&lt;p&gt;Je me rends compte que la compétition est présente, dans plusieurs sphères de ma vie, et qu&amp;#8217;il s&amp;#8217;agit d&amp;#8217;une des choses qui me fait me sentir parfois en déséquilibre, voire qui me fait réagir d&amp;#8217;une manière qui me semble&amp;nbsp;étrangère.&lt;/p&gt;
&lt;p&gt;Quand je rencontre ce mode de …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Je me rends compte que la compétition est présente, dans plusieurs sphères de ma vie, et qu&amp;#8217;il s&amp;#8217;agit d&amp;#8217;une des choses qui me fait me sentir parfois en déséquilibre, voire qui me fait réagir d&amp;#8217;une manière qui me semble&amp;nbsp;étrangère.&lt;/p&gt;
&lt;p&gt;Quand je rencontre ce mode de fonctionnement chez d&amp;#8217;autres, il arrive qu&amp;#8217;il suscite un retour de ma part, comme si je ne savais pas encore désamorcer ce fonctionnement en moi, et je rentre alors dans le « jeu&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai quand même réussi à plusieurs reprises à le détecter, mais parfois un côté un peu « automatique » ressort, presque animal, et je rentre alors dans ce mode de discussion qui m&amp;#8217;est proposé, sans même m&amp;#8217;en rendre&amp;nbsp;compte.&lt;/p&gt;
&lt;p&gt;Je n&amp;#8217;y trouve pas grand intérêt, et je développe une forte envie de venir à bout de ces mécanismes ancrés en&amp;nbsp;moi.&lt;/p&gt;
&lt;p&gt;Lorsque je décèle que je rentre en compétition, je cherche à changer ma posture : je demande des précisions à mon interlocut⋅eur⋅rice plutôt que d&amp;#8217;y opposer une connaissance que je pense détenir (voire même que je créé parfois sur le moment&amp;nbsp;?).&lt;/p&gt;
&lt;p&gt;Ça me renvoie au fait qu&amp;#8217;il me semble mieux de ne pas savoir, plutôt que d&amp;#8217;affirmer quelque chose dont je ne suis pas pas certain (même avec&amp;nbsp;aplomb).&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Francis Dupuis Déri, Démocratie.</title><link href="https://blog.notmyidea.org/francis-dupuis-deri-democratie.html" rel="alternate"></link><published>2019-11-15T00:00:00+01:00</published><updated>2019-11-15T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-11-15:/francis-dupuis-deri-democratie.html</id><summary type="html">
&lt;p&gt;&lt;em&gt;Ces notes sont extraites de deux ressources : une discussion autour de la notion de « Démocratie », organisé par la Fédération Anarchiste de Rennes, avec comme invité Françis Dupuis-Déri, et &lt;a href="https://www.thinkerview.com/francis-dupuis-deri-democratie-marketing-politique-pour-les-pauvre"&gt;une vidéo sur Thinkerview&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Le discours dominant indique que, à Athènes, les fonctions sont tirées au sort. Les fonctions ont peu de …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;&lt;em&gt;Ces notes sont extraites de deux ressources : une discussion autour de la notion de « Démocratie », organisé par la Fédération Anarchiste de Rennes, avec comme invité Françis Dupuis-Déri, et &lt;a href="https://www.thinkerview.com/francis-dupuis-deri-democratie-marketing-politique-pour-les-pauvre"&gt;une vidéo sur Thinkerview&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Le discours dominant indique que, à Athènes, les fonctions sont tirées au sort. Les fonctions ont peu de pouvoir. Principe de rotation des taches. Pour éviter de développer des&amp;nbsp;privilèges. &lt;/p&gt;
&lt;p&gt;Il y a quelques situation de pouvoir avec les jurys (501 citoyens qui forment un jury), il n&amp;#8217;y a pas de juge, pas d&amp;#8217;avocat Les parties s&amp;#8217;auto-représentent, le jury prends la&amp;nbsp;décision.&lt;/p&gt;
&lt;p&gt;Puis par la suite en 1770, la démocratie à été refondée pour créer la — soit disant — démocratie moderne . Dans la civilisation moderne, la démocratie n&amp;#8217;est plus dans une citée, il faut donc faire en fonction de la nation. Les gens sont trop nombreux pour s&amp;#8217;assembler, et donc il faut la démocratie représentative. « C&amp;#8217;est la même chose, mais différent&amp;nbsp;». &lt;/p&gt;
&lt;h2 id="ce-recit-est-en-fait-fallacieux"&gt;Ce récit est en fait&amp;nbsp;fallacieux.&lt;/h2&gt;
&lt;p&gt;Il n&amp;#8217;y a pas de lien entre Athènes et le parlement qu&amp;#8217;on a maintenant (ou le congrès,&amp;nbsp;etc).&lt;/p&gt;
&lt;p&gt;Les parlements sont une création du moyen age, vers le 12eme ou 13eme siècle (voire certaine formes de proto-parlement vers le 9eme&amp;nbsp;siècle).&lt;/p&gt;
&lt;p&gt;Ce sont des moments ou le roi convoque les grands du royaume (de manière un peu arbitraire), et à ce moment il n&amp;#8217;y a pas encore de parlement en tant que tel (bâtiment). Les lieux changent, ça peut être dans un monastère, dans un château,&amp;nbsp;etc.&lt;/p&gt;
&lt;p&gt;Les grands du royaumes ont prêtés serment de protéger le roi, &lt;span class="caps"&gt;ET&lt;/span&gt; de le&amp;nbsp;conseiller.&lt;/p&gt;
&lt;p&gt;Le roi à besoin d&amp;#8217;aide pour prélever les taxes. Au moyen age, les rois ne connaissent pas leur population (pas de recensement, par ex. il y a des débats à l&amp;#8217;époque sur le nombre de personnes dans une&amp;nbsp;ville)&lt;/p&gt;
&lt;p&gt;L&amp;#8217;origine du parlementarisme est en fait ces premières rencontres. Au fil des générations et des siècles, et des crises militaires etc. ces rencontres vont donner des occasions aux grands du royaume de négocier. Des crises éclatent par ex dans ce genre de rencontres (par ex. les états&amp;nbsp;généraux).&lt;/p&gt;
&lt;p&gt;Grosso-modo, les rôles des citoyens sont les mêmes, et l&amp;#8217;executif et les parlementaires détiennent le pouvoir d&amp;#8217;une manière&amp;nbsp;générale.&lt;/p&gt;
&lt;p&gt;Il faudrait en fait nommer ces systèmes « aristocraties électives ». C&amp;#8217;est différent d&amp;#8217;une aristocratie héréditaire, mais dans les deux cas il s&amp;#8217;agit d&amp;#8217;une logique&amp;nbsp;aristocratique. &lt;/p&gt;
&lt;p&gt;C&amp;#8217;est donc un tout petit groupe, qui :
- A la prétention d&amp;#8217;être « les meilleurs » (en fonction de différents critères : remporter les élections, avoir le « sang bleu », etc).
- Représente les classes supérieures, très largement privilégiées. Impossible par exemple d&amp;#8217;avoir des chômeurs au sein de ce groupe (puisqu&amp;#8217;on est député contre un salaire); Il y a des chefs d&amp;#8217;entreprises, des les classes sup, des hommes majoritairement, des blancs, donc une disproportion des classes&amp;nbsp;privilégiées.&lt;/p&gt;
&lt;h2 id="origines-histoire-du-mot-democratie"&gt;Origines / histoire du mot&amp;nbsp;démocratie&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Dupuis-Déri indique s&amp;#8217;appuyer sur les travaux de Pierre Rozon Valon, qui a travaillé sur le mot en&amp;nbsp;France.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Lors des moments de rupture, on constate que les élites sont des parlementaires au sens large (par ex. Danton, Mauras, Robespierre, St just etc). Quand ils déclenchent leur rébellion (contre la couronne ou contre le parlement britannique par exemple), ils n&amp;#8217;utilisaient pas le mot de&amp;nbsp;démocratie.&lt;/p&gt;
&lt;p&gt;Démocrate à ce moment la faisait référence à Athènes, au pouvoir de la plèbe, considéré comme dangereux, sanguinaire et immoral. Il s&amp;#8217;agit du « pouvoir des pauvres ». Ils avaient appris à se méfier d&amp;#8217;Athènes. Le modèle dominant à l&amp;#8217;époque était . Leur modèle était à l&amp;#8217;époque&amp;nbsp;Rome.&lt;/p&gt;
&lt;p&gt;2 générations plus tard (vers 1830 aux &lt;span class="caps"&gt;US&lt;/span&gt;, 1848 pour la France), le premier candidat à la présidence fait appel à ce concept de démocratie. Tout le monde se prétends alors démocrate, à des fins électorales. &lt;a href="https://fr.wikipedia.org/wiki/Auguste_Blanqui"&gt;Auguste Blanqui&lt;/a&gt; (révolutionnaire républicain socialiste français) dit alors&amp;nbsp;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tout le monde si dit démocrate, on a mème des monarchistes démocrates. Le mot démocratie est devenu&amp;nbsp;caoutchouc.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En 1828 aux &lt;span class="caps"&gt;USA&lt;/span&gt; il y a des campagnes électorales, les présidents se présentent comme des républicains. Andrew Jackson perd les élections, et pour pouvoir gagner, ils se représente à d&amp;#8217;autres élections comme démocrate. En étant contre l&amp;#8217;aristocratie financière, et en s&amp;#8217;adressant directement au peuple, le peuple va penser que tu prends sa défense. Par la suite tous les candidats se sont dits&amp;nbsp;démocrates. &lt;/p&gt;
&lt;p&gt;Dans le cas de la France, sous la monarchie restaurée, l&amp;#8217;utilisation du mot « république » est considéré dangereux et condamné. En cherchant un mot de remplacement ils se disent&amp;nbsp;démocrates.&lt;/p&gt;
&lt;p&gt;Cette stratégie de rhétorique, de propagande, crée de la confusion. Le peuple à donc été privé de ce mot de démocratie (vidé de son&amp;nbsp;sens).&lt;/p&gt;
&lt;p&gt;On pense que la nation s&amp;#8217;incarne dans l&amp;#8217;assemblée nationale, par une sorte de pensée magique, de chamanisme. On peut voir les élections comme un rituel qui permet de fusionner ses voix avec les autres voix de la nation,&amp;nbsp;etc.&lt;/p&gt;
&lt;h2 id="des-exemples-dauto-gestion"&gt;Des exemples&amp;nbsp;d&amp;#8217;auto-gestion&lt;/h2&gt;
&lt;p&gt;Malgré tout ça, l&amp;#8217;élite politique narrive pas à empêcher des expressions de vraies démocraties aujourd&amp;#8217;hui. L&amp;#8217;humanité à expérimenté plein de situations, ou elles pratiquent ce qu&amp;#8217;on devrait appeler la démocratie&amp;nbsp;:&lt;/p&gt;
&lt;p&gt;Dans les communautés Mohawks (autochtones d&amp;#8217;Amérique du nord) ou chez &lt;a href="https://fr.wikipedia.org/wiki/Inuits"&gt;inuits&lt;/a&gt;, ils y en avait plusieurs qui vivaient de manière non-hiérarchique, il n&amp;#8217;y avait pas de propriété privée. Les chefs autochtones n&amp;#8217;ont pas de pouvoir coercitif, pas de juge, pas de prison, pas de police, la seule chose que les chefs ont est un prestige lié à par ex leurs capacités de chasseurs. Mais ils n&amp;#8217;ont pas de pouvoir réel. C&amp;#8217;est pour cette raison que les autochtones étaient pris pour des peuples « pas fiables », le chef est un simple porte parole, mais ce n&amp;#8217;est pas lui qui prends les&amp;nbsp;décisions.&lt;/p&gt;
&lt;p&gt;D&amp;#8217;autres par ex les capviles&amp;nbsp;(?)&lt;/p&gt;
&lt;p&gt;Au moyen age il y avait des assemblées d&amp;#8217;habitants. Ça ressemblait presque à de l&amp;#8217;autogestion. Des communautés paysannes. Il y avait alors des communs (moulin, séchoir, puis, église) qui était gérés par la communauté d&amp;#8217;habitants. Gérés par des assemblées d&amp;#8217;habitants (10, 12, 14 assemblées par an), pour décider des choses à&amp;nbsp;faire.&lt;/p&gt;
&lt;p&gt;Les guildes sont très importantes à l&amp;#8217;époque, les guildes décident en assemblée de comment on travaille, selon quels critères, formation, promotion, ils peuvent avoir des milices et participer à la défense de leurs villes, et se poursuivre les uns les autres, sans aucune intervention du pouvoir central. C&amp;#8217;est donc un mode de vie qui ne fonctionne pas selon les « règles du régime&amp;nbsp;».&lt;/p&gt;
&lt;h2 id="tradition-anti-parlementariste"&gt;Tradition anti&amp;nbsp;parlementariste&lt;/h2&gt;
&lt;p&gt;Plutôt que de penser que c&amp;#8217;est totalisant — il y a des ministères pour tout, une prétention de l&amp;#8217;état à tout gérer —, il y a encore la possibilité de vivre quelque chose qui ressemble à la démocratie : dans nos quartiers, sur le &lt;span class="caps"&gt;ZAD&lt;/span&gt;,&amp;nbsp;etc.&lt;/p&gt;
&lt;p&gt;Il y a une tradition anti-parlementariste, qui dit que le peuple à la capacité à s&amp;#8217;autogérer, et que les décisions ne doivent pas êtres gérées par le&amp;nbsp;parlement.&lt;/p&gt;
&lt;p&gt;Dans les grandes crises, c&amp;#8217;est ce que le peuple fait (en argentine au début des années 2000, durant le printemps arabe, dans les crises sociales et politiques). Les gens s&amp;#8217;assemblent, et ensuite décident ensemble d&amp;#8217;éviter de nommer de nouveaux chefs. Cet esprit anti-parlementariste continue d&amp;#8217;exister, et continue à faire peur. La peur est celle de&amp;nbsp;l&amp;#8217;émeute.&lt;/p&gt;
&lt;p&gt;il y a d&amp;#8217;ailleurs plein de lois contre les attroupements illégaux. C&amp;#8217;était déjà le cas à l&amp;#8217;époque des esclaves : interdiction des regroupement. En 1789, les parlementaires ont décidé d&amp;#8217;interdire aux femmes de se&amp;nbsp;rassembler.&lt;/p&gt;
&lt;p&gt;Également, il y a eu énormément d&amp;#8217;émeutes aux &lt;span class="caps"&gt;US&lt;/span&gt; à l&amp;#8217;époque de Martin Luther King, et même &lt;span class="caps"&gt;MLK&lt;/span&gt; (qui était plutôt contre) disait alors qu&amp;#8217;il y avait un sens derrière ces émeutes, et qu&amp;#8217;il fallait condamner aussi ce qui à amené à cette&amp;nbsp;situation. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;20h19&lt;/p&gt;
&lt;h1 id="questions-discussion"&gt;Questions /&amp;nbsp;Discussion&lt;/h1&gt;
&lt;p&gt;Il y a eu pas mal de questions / réponses et discussions. Je n&amp;#8217;ai pris des notes que sur une partie d&amp;#8217;entre&amp;nbsp;elles.&lt;/p&gt;
&lt;h3 id="on-est-contre-lassembleisme-quest-ce-que-ca-veut-dire"&gt;On est contre l&amp;#8217;assembléisme » ? Qu&amp;#8217;est-ce que ça veut dire&amp;nbsp;?&lt;/h3&gt;
&lt;p&gt;Il y a toujours ce débat: élection/pas élection. Il y a toujours des personnes qui veulent écrire une nouvelle constitution, un comité sur le sexisme, etc. Ce sont des choses qui se retrouvent dans la plupart des&amp;nbsp;mouvements.&lt;/p&gt;
&lt;h3 id="inclusion-et-extinction-rebellion"&gt;Inclusion et extinction&amp;nbsp;rébellion&lt;/h3&gt;
&lt;p&gt;Je n&amp;#8217;ai pas noté la question, mais elle traitait sur le fait que xR se disait inclusif et qu&amp;#8217;en fait iels ne l&amp;#8217;étaient sûrement pas&amp;nbsp;réellement.&lt;/p&gt;
&lt;p&gt;Il y a toujours — dans les groupes que je pratique — des principes, mais c&amp;#8217;est pas ça qui fait que les gens se regroupent. Les mouvements sociaux existent déjà, ce sont des groupes qui existent déjà. Quand vous avez un groupe de 10-15 personnes avec des profils similaires aux vôtres, ça va pas faire venir d&amp;#8217;autres&amp;nbsp;personnes.&lt;/p&gt;
&lt;p&gt;xR c&amp;#8217;est un collectif militant de personnes qui se connaissent au début. Un appel avec un format, un langage, qui parle à une certaine partie de la&amp;nbsp;population.&lt;/p&gt;
&lt;p&gt;Un autre intervenant indique que « les groupes sont ce qu&amp;#8217;ils sont. Qu&amp;#8217;ils existent, qu&amp;#8217;ils agissent, ça me dérange pas. Quand ça me dérange, c&amp;#8217;est quand ils prétendent représenter d&amp;#8217;autres personnes que ce qu&amp;#8217;ils sont.&amp;nbsp;»&lt;/p&gt;
&lt;h3 id="exemple-sde-systemes-democratiques"&gt;Exemple sde systèmes&amp;nbsp;démocratiques&lt;/h3&gt;
&lt;p&gt;Est-ce que vous avez connaissance d&amp;#8217;un pays qui à un système démocratique « normal »&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;La démocratie, avec 65M de personnes c&amp;#8217;est pas vraiment faisable. Ça nempêche pas d&amp;#8217;avoir des instances de fédération. Exercheia à Athènes, au Rojava mais ce sont des endroits ou la liberté est&amp;nbsp;précaire.&lt;/p&gt;
&lt;h3 id="que-penser-du-ric"&gt;Que penser du &lt;span class="caps"&gt;RIC&lt;/span&gt;&amp;nbsp;?&lt;/h3&gt;
&lt;p&gt;Ma compréhension c&amp;#8217;est qu&amp;#8217;en Suisse ou en Californie (où c&amp;#8217;est possible), ces référendums, dans le cadre de nations, quand ils sont actés dans des sociétés inégalitaires — en terme de moyens financiers, de prise de parole dans les médias etc — donnent l&amp;#8217;illusion que le camp du oui et du non sont à forces égales, alors qu&amp;#8217;en fait ce sont des campagnes électorales très inégalitaires. Ce qui favorise certaines parce que les moyens ne sont pas&amp;nbsp;égaux.&lt;/p&gt;
&lt;p&gt;De plus, les résultats sont reçus et gérés par les élus. Ma compréhension c&amp;#8217;est que certaines décisions populaires ne sont pas&amp;nbsp;adoptées.&lt;/p&gt;
&lt;h3 id="avancees-sociales-et-democratie-directe"&gt;Avancées sociales et démocratie&amp;nbsp;directe&lt;/h3&gt;
&lt;p&gt;Si on avait une démocratie directe, aurait-on eu les avancées sociales actuelles&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Autrement dit, si on donnait le pouvoir au peuple, qu&amp;#8217;est-ce que ça donnerait (dans les pays occidentaux)&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;On peut remettre en question le fait qu&amp;#8217;il y ait vraiment des avancées &lt;em&gt;partout&lt;/em&gt;. Par exemple, pour l&amp;#8217;avortement, c&amp;#8217;est l&amp;#8217;état qui l&amp;#8217;a interdit, au moyen age en premier lieu. Les femmes connaissaient les moyens de se faire avorter, alors qu&amp;#8217;aujourd&amp;#8217;hui les femmes ont très peu de compétences pour pouvoir pratiquer l&amp;#8217;avortement elles&amp;nbsp;mêmes.&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est difficile d&amp;#8217;imaginer. Il y aurait une diversité de systèmes juridiques. La république est en fait plus réactionnaire que la monarchie qui la précède (entre autre sur le sexisme, le racisme). Ce sont les mobilisations qui font évoluer les situations, ce n&amp;#8217;est pas vraiment l&amp;#8217;état qui fait progresser. L&amp;#8217;état n&amp;#8217;est pas progressiste (ou conservateur d&amp;#8217;ailleurs) par définition, il ne fait qu&amp;#8217;appliquer le&amp;nbsp;status-quo.&lt;/p&gt;
&lt;h3 id="avoir-de-meilleures-assemblees-representatives"&gt;Avoir de meilleures assemblées représentatives&amp;nbsp;?&lt;/h3&gt;
&lt;p&gt;A : Est-ce que chercher à constituer des assemblées plus représentatives, « meilleures », voir qui représentent plus les dominés peut être bénéfique&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;B : Qu&amp;#8217;est-ce qui nous dit qu&amp;#8217;avec ces assemblées on va pas se retrouver dans la même situation qu&amp;#8217;actuellement ? Ça reste de base des gens qui prennent des décisions pour d&amp;#8217;autres. Le principe est fondamentalement glissant. risque de défendre ses propres intérêts plutôt que le reste de la&amp;nbsp;population.&lt;/p&gt;
&lt;p&gt;A : Il y a la potentialité de ne pas opposer les deux modèles ? Ce sont des tentatives de bricolages, pour avoir plus de démocratie et de justice sociale dans le&amp;nbsp;système.&lt;/p&gt;
&lt;p&gt;C (Isabelle Attard ?): Le pouvoir corrompt. On pense pouvoir lui mettre des gardes fous, pour pouvoir faire le mieux. Mon expérience c&amp;#8217;est qu&amp;#8217;au bout de 6 mois, le système intègre, absorbe, il est prévu pour ça. Imaginer que nous pourrions créer cette assemblée idéale, ne marche pas. Comme beaucoup d&amp;#8217;autres personnes, j&amp;#8217;y ai&amp;nbsp;cru.&lt;/p&gt;
&lt;h3 id="ressources"&gt;Ressources&lt;/h3&gt;
&lt;p&gt;Quelques ressources citées par des personnes présentes ou par&amp;nbsp;Dupuis-Déri&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;« De la horde à l&amp;#8217;état », qui explique que seuls des petits groupes de petite taille peuvent&amp;nbsp;fonctionner.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="autres-notes-prises-durant-via-la-video"&gt;Autres notes prises durant via la&amp;nbsp;vidéo&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;Les notes de cette partie sont plus en vrac&amp;nbsp;;-)&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="pouvoir-et-systeme-electoral"&gt;Pouvoir et système&amp;nbsp;électoral&lt;/h2&gt;
&lt;p&gt;Quand on créé un groupe anarchiste, il y a des pouvoirs informels et tout le monde n&amp;#8217;est pas égal dans la réalité, mais ces groupes mettent en place des manières de réduire ces inégalités, ces jeux d&amp;#8217;influence. Il rexiste des techniques pour réduire le pouvoir&amp;nbsp;informel.&lt;/p&gt;
&lt;p&gt;A chaque fois qu&amp;#8217;il y a des gens aux pouvoir, il y a une forme de démagogie. La démagogie fait croire qu peuple qu&amp;#8217;on est là pour son bien, alors que l&amp;#8217;objectif est d&amp;#8217;asseoir le pouvoir. La démagogie est inscrite dans l&amp;#8217;&lt;span class="caps"&gt;ADN&lt;/span&gt; du système électoral. Vous voulez vous faire élire. Et donc vous souhaitez que les gens votent pour vous. Ce système électoral encourage le&amp;nbsp;mensonge.&lt;/p&gt;
&lt;h2 id="repression"&gt;Répression&lt;/h2&gt;
&lt;p&gt;L&amp;#8217;état Français, Canadien, Americain, Britanique etc ont déjà tout un arsenal pour punir les casseurs (terme foncièrement péjoratif). Ils en re-créent pour consolider, densifier leur arsenal, et c&amp;#8217;est également une opération politique. Ça donne quelques nouveaux outils à la police, mais la police à énormément de moyens déjà actuellement. Il s&amp;#8217;agit principalement d&amp;#8217;un moyen de montrer qu&amp;#8217;il se passe quelque&amp;nbsp;chose.&lt;/p&gt;
&lt;h2 id="vote-decisions-collectives"&gt;Vote / Décisions&amp;nbsp;collectives&lt;/h2&gt;
&lt;p&gt;Un endroit ou on aurait vraiment la place et le temps, ce sont les écoles […]. Mais ils nous font élire des conseils d&amp;#8217;élèves. On nous apprends à élire des personnes. L&amp;#8217;agence para-gouvernementale explique que c&amp;#8217;est pour former les enfants à voter. Quand on est adultes, on mets en scène l&amp;#8217;acte exactement dans le même lieu (les&amp;nbsp;écoles).&lt;/p&gt;
&lt;p&gt;Ce qui vient avec c&amp;#8217;est que le pouvoir politique passe par le vote. C&amp;#8217;est plus important de faire voter, que de faire élire. On essaye de convaincre les enfants que l&amp;#8217;action politique est canalisée par le&amp;nbsp;vote.&lt;/p&gt;
&lt;p&gt;Les gens qui déclarent la guerre ne la font pas (ni leurs enfants&amp;nbsp;d&amp;#8217;ailleurs)&lt;/p&gt;
&lt;p&gt;L&amp;#8217;idée n&amp;#8217;est pas de créer un n-ième parti d&amp;#8217;opposition. J&amp;#8217;ai beaucoup d&amp;#8217;espoir dans les mouvement sociaux autonomes. C&amp;#8217;est là ou il y a des choses intéressantes au niveau politique. C&amp;#8217;est en échangeant, en discutant qu&amp;#8217;on pratique de la&amp;nbsp;politique.&lt;/p&gt;
&lt;p&gt;Vous pensez que la liberté, c&amp;#8217;est le temps libre. On va penser que les assemblées sont un « perte de temps ». C&amp;#8217;est dommage parce que c&amp;#8217;est le seul moment ou on peut être libre politiquement. Alors qu&amp;#8217;on pense qu&amp;#8217;on perds du temps. Les assemblées sont là ou on peut vivre la politique concrètement. Nos activité politiques vont nous sembler inutiles parce que dans nos vies on ne contrôle pas grand chose. Les discussions sont intéressantes quand les enjeux sont au&amp;nbsp;rendez-vous.&lt;/p&gt;
&lt;p&gt;Si on avait plus de communs à gérer entre nous, là on trouverait un temps et peut être même un plaisir à s&amp;#8217;investir dans ces thèmes. Puisque rien ne nous appartiens, alors à quoi bon parler avec ses voisins ? On parlerait de quoi&amp;nbsp;?&lt;/p&gt;
&lt;h2 id="basculement"&gt;Basculement&lt;/h2&gt;
&lt;p&gt;Je ne sais pas la solution. J&amp;#8217;ai des idées. Les vraies grandes transformations dans les sociétés se sont rarement passées parce que quelqu&amp;#8217;un avec des amis à établi un plan de match. C&amp;#8217;est pas comme ça que ça se passe. Le régime est déstabilisé à un moment donné, il y a une crise dans l&amp;#8217;élite. Il faut que l&amp;#8217;élite soit déstabilisée. Quand l&amp;#8217;élite se tiens les coudes, les forces militaires tiennent, etc. Vous risquez simplement de vous faire&amp;nbsp;écraser.&lt;/p&gt;
&lt;h2 id="crise-de-la-masculinite"&gt;Crise de la&amp;nbsp;masculinité&lt;/h2&gt;
&lt;p&gt;Il y a ce discours de la crise de la masculinité. Il s&amp;#8217;agit d&amp;#8217;un discours, de rhétorique. A travers des études historiques, j&amp;#8217;ai constaté qu&amp;#8217;en occident depuis 500 ans, des hommes disent qu&amp;#8217;il y a une crise de la masculinité […] en France, en Allemagne et ailleurs […]. Ce discours est tellement permanent, tellement universel, et donc il ne peut pas être autre chose que de la propagande, une sorte d&amp;#8217;appel à l&amp;#8217;aide envers les autres hommes, pour pouvoir&amp;nbsp;contre-attaquer.&lt;/p&gt;
&lt;h2 id="violence-non-violence"&gt;Violence / Non&amp;nbsp;violence&lt;/h2&gt;
&lt;p&gt;Les mouvement sociaux sont en permanence traversés par le débat violence / non violence. Aux états-unis, en Italie et ailleurs, des conflits éclatent, par exemple parce que certain⋅e⋅s militant⋅e⋅s voulaient amener des pinces, pour faire un trou dans un&amp;nbsp;grillage.&lt;/p&gt;
&lt;p&gt;On parle donc d&amp;#8217;une pince à ciseler un clôture d&amp;#8217;un réacteur nucléaire. Il ne faut surtout pas casser les vitrines de banques parce que c&amp;#8217;est de la violence. C&amp;#8217;est incroyable. Dans les mouvement sociaux, des personnes sont tellement concernés par la violence que ça crée des débats. Le débat éthique violence / non-violence est traversé par des exemples qui sont mal compris. Par exemple Gandi et &lt;span class="caps"&gt;MLK&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Mais c&amp;#8217;est une illusion complète. Dans le mouvement d&amp;#8217;indépendance de l&amp;#8217;inde auquel participait gandi, dans le même mouvement des personnes attaquaient avec des bombes et des&amp;nbsp;mitraillettes.&lt;/p&gt;</content><category term="Notes"></category></entry><entry><title>Musique, création et partage</title><link href="https://blog.notmyidea.org/musique-creation-et-partage.html" rel="alternate"></link><published>2019-11-14T00:00:00+01:00</published><updated>2019-11-14T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-11-14:/musique-creation-et-partage.html</id><summary type="html">
&lt;p&gt;J&amp;#8217;arrive à trouver du temps libre pour faire de la musique. Après quasiment deux ans à jouer seul, je me remets à faire de la musique avec un ami, et j&amp;#8217;y (re)trouve un grand&amp;nbsp;plaisir.&lt;/p&gt;
&lt;p&gt;Composer, proposer, écouter, échanger, faire évoluer des sons et des idées se …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;J&amp;#8217;arrive à trouver du temps libre pour faire de la musique. Après quasiment deux ans à jouer seul, je me remets à faire de la musique avec un ami, et j&amp;#8217;y (re)trouve un grand&amp;nbsp;plaisir.&lt;/p&gt;
&lt;p&gt;Composer, proposer, écouter, échanger, faire évoluer des sons et des idées se passe sans encombre, retrouver cette passion que j&amp;#8217;avais mise de côté me&amp;nbsp;plaît.&lt;/p&gt;
&lt;p&gt;Je sors de ma zone de confort : je joue sur un synthé analogique et j&amp;#8217;apprends à faire un peu d&amp;#8217;enregistrement sonore par la même&amp;nbsp;occasion.&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Élitisme et apprentissage</title><link href="https://blog.notmyidea.org/elitisme-et-apprentissage.html" rel="alternate"></link><published>2019-11-01T00:00:00+01:00</published><updated>2019-11-01T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-11-01:/elitisme-et-apprentissage.html</id><summary type="html">
&lt;p&gt;Au fur et à mesure de mes apprentissages, il y a quelque chose que j&amp;#8217;ai du mal à déconstruire: le mythe du meilleur. Moi qui pense qu&amp;#8217;ensemble on va plus loin, et que la compétition n&amp;#8217;a pas de bons jours devant elle, je me retrouve parfois dans …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Au fur et à mesure de mes apprentissages, il y a quelque chose que j&amp;#8217;ai du mal à déconstruire: le mythe du meilleur. Moi qui pense qu&amp;#8217;ensemble on va plus loin, et que la compétition n&amp;#8217;a pas de bons jours devant elle, je me retrouve parfois dans des situations où j&amp;#8217;ai une &lt;em&gt;envie&lt;/em&gt; de montrer que je suis meilleur, que je sais mieux que mon voisin. Notamment lors de l&amp;#8217;apprentissage via mes&amp;nbsp;pairs.&lt;/p&gt;
&lt;p&gt;Dans les domaines dans lesquels je me spécialise (fabrication de bière, informatique et programmation) je me rends compte qu&amp;#8217;une certaine forme délitisme existe parfois, contrairement aux apparences de surface. Avoir une position de &lt;em&gt;sage&lt;/em&gt; flatte mon&amp;nbsp;égo.&lt;/p&gt;
&lt;h2 id="bonnes-pratiques-et-elitisme"&gt;Bonnes pratiques et&amp;nbsp;élitisme&lt;/h2&gt;
&lt;p&gt;Il ne faut sûrement pas confondre les bonnes pratiques avec l&amp;#8217;élitisme, mais parfois la frontière se fait ténue. En guise d&amp;#8217;exemple, dans le domaine du brassage, on va critiquer les personnes qui ne contrôlent pas la température de leurs fermentations alors qu&amp;#8217;il s&amp;#8217;agit probablement de leur apprentissage personnel. Contrôler cette température est une bonne pratique, qui constitue deux groupes: ceux qui savent et ceux qui ne savent&amp;nbsp;pas.&lt;/p&gt;
&lt;p&gt;Ceux qui savent vont alors &lt;em&gt;expliquer&lt;/em&gt; à ceux qui apprennent, et ceux qui apprennent vont être contents d&amp;#8217;apprendre. Il est à mon avis important de garder une posture d&amp;#8217;apprenant alors même qu&amp;#8217;on a des choses à transmettre. Que faut-il alors faire ? Dois-je garder du recul sur mes avis, ou dois-je les formuler comme étant des avis personnels, a prendre avec des pincettes&amp;nbsp;?&lt;/p&gt;
&lt;h2 id="connaitre-mes-limites"&gt;Connaître mes&amp;nbsp;limites&lt;/h2&gt;
&lt;p&gt;Rester dans une position de &lt;em&gt;sachant&lt;/em&gt; semble me pousser à des comportements de fermeture d&amp;#8217;esprit. La « sagesse » serait-elle la faculté à se remettre en question ? Mais quid des « fausses vérités » et des &lt;em&gt;avis de surface&lt;/em&gt;, de ce que l&amp;#8217;on croit connaître&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Peut-être que la solution est de connaître mes limites, ou en tout cas de les rechercher et de reconnaître mes zones de&amp;nbsp;flou. &lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Travail, passion et limites.</title><link href="https://blog.notmyidea.org/travail-passion-et-limites.html" rel="alternate"></link><published>2019-10-25T00:00:00+02:00</published><updated>2019-10-25T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-10-25:/travail-passion-et-limites.html</id><summary type="html">
&lt;p&gt;Je discutais avec des ami⋅e⋅s brasseurs, cavistes et barmaid du rapport que chacun⋅e entretient avec le travail, et je me suis étonné de voir que notre rapport soit aussi&amp;nbsp;différent.&lt;/p&gt;
&lt;p&gt;Notamment, ce que j&amp;#8217;estime de prime abord comme un &lt;em&gt;travail acharné&lt;/em&gt; peut également être analysé sous …&lt;/p&gt;</summary><content type="html">
&lt;p&gt;Je discutais avec des ami⋅e⋅s brasseurs, cavistes et barmaid du rapport que chacun⋅e entretient avec le travail, et je me suis étonné de voir que notre rapport soit aussi&amp;nbsp;différent.&lt;/p&gt;
&lt;p&gt;Notamment, ce que j&amp;#8217;estime de prime abord comme un &lt;em&gt;travail acharné&lt;/em&gt; peut également être analysé sous l&amp;#8217;angle de la passion, voire même être un trait de personnalité « mono-maniaque » qui explique que certain⋅e⋅s mettent le travail avant tout le reste dans leur&amp;nbsp;vie.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai tendance à analyser ça sous l&amp;#8217;angle du « travaillisme » : trouver une certaine forme de fierté au fait de travailler beaucoup (voire trop, selon ma conception&amp;nbsp;personnelle)&lt;/p&gt;
&lt;p&gt;Je me rends compte que, de mon côté, je n&amp;#8217;ai pas qu&amp;#8217;une seule passion, mais plusieurs, et me pose la question de l&amp;#8217;incidence de ces multiples passions sur ma volonté de créer un emploi qui me laisse du temps libre pour pouvoir les vivre&amp;nbsp;toutes.&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Leffondrement, parlons-en…</title><link href="https://blog.notmyidea.org/leffondrement-parlons-en.html" rel="alternate"></link><published>2019-10-01T00:00:00+02:00</published><updated>2019-10-01T00:00:00+02:00</updated><author><name>Jérémie Cravatte</name></author><id>tag:blog.notmyidea.org,2019-10-01:/leffondrement-parlons-en.html</id><summary type="html">&lt;h2 id="la-collapsologie-comme-science"&gt;La collapsologie comme&amp;nbsp;science&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;[…] Cela a pour effet de donner limpression à laudience quelle prend
connaissance dune réalité objectivée (et donc méthodologiquement vérifiable)
plutôt que dun discours. Cela implique, par exemple, que des raccourcis opérés
entre plusieurs phénomènes […] tiendraient de la méthode scientifique plutôt que …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;h2 id="la-collapsologie-comme-science"&gt;La collapsologie comme&amp;nbsp;science&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;[…] Cela a pour effet de donner limpression à laudience quelle prend
connaissance dune réalité objectivée (et donc méthodologiquement vérifiable)
plutôt que dun discours. Cela implique, par exemple, que des raccourcis opérés
entre plusieurs phénomènes […] tiendraient de la méthode scientifique plutôt que de linterprétation. Comme le souligne Elisabeth Lagasse , le melting-pot opéré entre sciences naturelles et sciences sociales induit une naturalisation des rapports sociaux qui nest plus discutée. Assumer quil sagit dinterprétations à mettre en débat serait bien plus utile. En lieu et place de cela, les personnes qui critiquent ces interprétations sont régulièrement accusées dêtre dans le « déni&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;Enfin, cette ambiguïté nourrit le sentiment que leffondrement généralisé est une
hypothèse, un modèle qui se vérifiera ou non, un événement qui aura lieu ou non.
On appelle dailleurs ces discours « théories de leffondrement ». Or, la question
nest pas là. La situation écologique et sociale nest pas une&amp;nbsp;hypothèse.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="raccourcis-confusionnisme"&gt;Raccourcis /&amp;nbsp;Confusionnisme&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Les discours collapsos amalgament malheureusement sous ce mot valise deffondrement des changements irréversibles quon ne peut, en effet, que tenter de limiter et préparer (comme la destruction de la biodiversité et lemballement climatique) avec des changements totalement réversibles (comme la montée des fascismes, le transhumanisme ou la financiarisation du&amp;nbsp;monde). &lt;/p&gt;
&lt;p&gt;« Si la finance seffondre, ça fait des effets de contagion qui font des effondrements économiques. Effondrement financier, cest quand il ny a plus rien dans les guichets automatiques, cest lArgentine en 2001. Si ça se propage à un effondrement économique par les chaînes dapprovisionnement, ben ça fait plus rien dans les magasins. Et là tu te poses des questions, est-ce quon souhaite ça ? Ça peut dégénérer, en chaos social, politique. Leffondrement politique cest l&lt;span class="caps"&gt;URSS&lt;/span&gt; en 1989, tas un retour des mafias etc. Si on va plus loin, leffondrement social cest la Lybie, cest Mad Max quoi, ya plus dÉtat, ya plus rien. Quest-ce quon souhaite, quest-ce quon souhaite pas ? [&amp;#8230;] Le problème cest que tout est inter-connecté. Tu souhaites leffondrement du capitalisme ? Mais si il seffondre, il y aura dautres choses qui vont seffondrer parce que tout est lié. » (Pablo&amp;nbsp;Servigne)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Passage qui montre qu&amp;#8217;il y a une sorte de confusionnisme dans le discours de&amp;nbsp;Servigne.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;La confusion porte sur la notion de « civilisation thermo-industrielle » et sa prétendue fin. Les discours de leffondrement présentent une série de constats angoissants (à raison) puis expliquent (à tort) que cela correspond à « leffondrement de notre civilisation thermo-industrielle ». Cette manière de présenter les choses qui associe une mauvaise et une bonne nouvelle (la fin du monde et la fin de cette « civilisation » destructrice) provoque, au mieux, une confusion entre les deux, au pire, un désir de trouver un peu de répit pour cette « civilisation » à laquelle le public&amp;nbsp;sidentifie.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="depolitisation"&gt;Dépolitisation&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Faire croire que « tout va seffondrer » dun bloc, comme un bâtiment, donner limpression aux personnes quelles nont aucune prise sur la situation présente et à venir, cest alimenter le sentiment dimpuissance, la croyance que nous sommes face à une impasse plutôt que face à une multitude de&amp;nbsp;chemins.&lt;/p&gt;
&lt;p&gt;Lapproche fourre-tout de leffondrement dépolitise la question écologique appelant, dans un élan de prétendue « lucidité », à faire le deuil de choses inévitables et de choses évitables. Sagit-il de faire le deuil des services publics tout en continuant à payer des impôts, dun climat tempéré, de la majorité des espèces vivantes, de « nos » proches, de la moitié la plus pauvre ou la plus riche de lhumanité en premier lieu, du « confort » dun système de santé équitable ou à deux vitesses&amp;#8230; ? […] il sagit un peu confusément de tout cela à la fois, sans&amp;nbsp;précisions.&lt;/p&gt;
&lt;p&gt;Pour reprendre la fameuse métaphore de lincendie, si les Colibris nous appellent
à faire notre part individuellement plutôt que le nécessaire collectivement, les récits
collapsos nous appellent (individuellement et collectivement) à accepter lincendie et
à préparer la renaissance qui y ferait suite. Ce qui brûle dans cet incendie (et, surtout,
dans quel ordre), on nen parle pas&amp;nbsp;trop.&lt;/p&gt;
&lt;p&gt;Nombre de collapsos parlent de « verrouillages » complexes de la société actuelle
(sociaux, techniques et politiques) pour justifier leur posture dacceptation. Cela pour-
rait signifier, par exemple, que lutter pour exproprier et socialiser les multinationales
de lénergie (afin de les démanteler ou de les reconvertir, selon les cas) constituerait
du « marchandage » (la troisième étape du processus de deuil), cest-à-dire une forme
de déni de laspect inextricable (verrouillé) de la&amp;nbsp;situation. &lt;/p&gt;
&lt;p&gt;Même lorsquon est convaincu·e que les choses sont « verrouillées », il est intellec-
tuellement malhonnête en plus dêtre irresponsable dinvisibiliser les interactions,
conflits, solidarités, résistances existantes (et à venir) qui modifient la situation et les
manières dont les basculements écologiques sont et seront&amp;nbsp;vécus.&lt;/p&gt;
&lt;/blockquote&gt;</content><category term="Lectures"></category><category term="écologie"></category><category term="collapsologie"></category></entry><entry><title>Refuser dêtre un homme</title><link href="https://blog.notmyidea.org/refuser-detre-un-homme.html" rel="alternate"></link><published>2019-10-01T00:00:00+02:00</published><updated>2019-10-01T00:00:00+02:00</updated><author><name>John Stolenberg</name></author><id>tag:blog.notmyidea.org,2019-10-01:/refuser-detre-un-homme.html</id><summary type="html">&lt;h2 id="mise-en-situation-historique-et-politique"&gt;Mise en situation historique et&amp;nbsp;politique&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Contrairement à ce que prétendent ses opposants, le féminisme radical n&amp;#8217;a pas jeté la pierre à une classe biologiquement déterminée, « les hommes », mais à un système de valeurs : une éthique de l&amp;#8217;injustice à laquelle on avait conditionné tout l&amp;#8217;érotisme, aussi bien …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;h2 id="mise-en-situation-historique-et-politique"&gt;Mise en situation historique et&amp;nbsp;politique&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Contrairement à ce que prétendent ses opposants, le féminisme radical n&amp;#8217;a pas jeté la pierre à une classe biologiquement déterminée, « les hommes », mais à un système de valeurs : une éthique de l&amp;#8217;injustice à laquelle on avait conditionné tout l&amp;#8217;érotisme, aussi bien celui des femmes que des&amp;nbsp;hommes.&lt;/p&gt;
&lt;p&gt;Personne n&amp;#8217;étant blanc avant d&amp;#8217;arriver en Amérique, Il a fallu des générations, et énormément de coercition, avant que ce pays ne devienne blanc. L&amp;#8217;Amerique est devenue blanche […] par nécessité de nier la présence des Noir⋅es et de justifier leur&amp;nbsp;assujettissement.&lt;/p&gt;
&lt;p&gt;[…] Le projet de différencier des « masculinités » est la plupart du temps une résistance à la critique féministe radicale du masculin en tant que tel. Car [l&amp;#8217;exploration des masculinités] reste en deça du problème de base, faute d&amp;#8217;une entière reconnaissance du mensonge sous-jacent au principe masculin — la domination politique structurelle sans laquelle le masculin n&amp;#8217;a aucun sens social ou subjectif — le paradigme des « masculinités » ne sert, au plan théorique, qu&amp;#8217;à induire en erreur une nouvelle génération de&amp;nbsp;plus.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Texte qui à été repris de « Race Traitor », 1994, 36-37, et adapté pour parler du sexisme, plutôt que du racisme. Le propos de Stolenberg est ici de dire que beaucoup est à reprendre de ce qui à été fait pour la lutte des&amp;nbsp;Noir⋅es.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Les règles du &lt;em&gt;boy&amp;#8217;s club&lt;/em&gt; ne nécessitent pas que tous ses membres soient des adeptes de la domination masculine, mais simplement qu&amp;#8217;iels se plient aux préjugés des autres&lt;/strong&gt;. La nécessité de maintenir la solidarité de classe de sexe impose une conformité étouffante aux hommes sur tout question touchant de près ou de loin au sexe.
&lt;strong&gt;La façon d&amp;#8217;abolir le principe masculin est de perturber cette conformité&lt;/strong&gt;. Si suffisamment de gens qui paraissent masculins dérogent aux règles du masculin, leur existence ne peut être passée sous silence. &lt;strong&gt;S&amp;#8217;il devient impossible pour les tenants des règles du masculin de parler au nom de tous ceux qui paraissent masculins, la classe masculine de sexe cessera d&amp;#8217;exister&lt;/strong&gt;. Combien faudra-il être ? Personne ne peut le dire à coup sur. C&amp;#8217;est un peu comme le problème de l&amp;#8217;argent : combien faut-il de fausses monnaies en circulation pour détruire la valeur de la monnaie officielle ? La réponse est bien moins que la majorité, juste assez pour miner la confiance du public dans la version&amp;nbsp;officielle. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C&amp;#8217;est le postulat même de ce bouquin dont il est question ici : si on refuse d&amp;#8217;être un homme, alors on cesse de faire exister cette scission homme/femme, et pour pouvoir refuser cette classe homme, alors il faut sortir des rangs, perturber cette&amp;nbsp;conformité.&lt;/p&gt;
&lt;h2 id="lethique-du-violeur"&gt;L&amp;#8217;éthique du&amp;nbsp;violeur&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Dans la logique tordue de l&amp;#8217;éthique du violeur, &lt;strong&gt;c&amp;#8217;est la victime qui est coupable au bout du compte&lt;/strong&gt;; la victime est responsable, &lt;strong&gt;c&amp;#8217;est elle qui a commis la faute&lt;/strong&gt;. […] Les idées reçues liées à cette éthique prolifèrent : les femmes veulent être violées, les femmes méritent d&amp;#8217;être violées, les femmes provoquent le viol […]. Le poids social de ces idées est tel que &lt;strong&gt;beaucoup de victimes de viol&lt;/strong&gt; craignent de révéler à quiconque ce qui leur est arrivé, &lt;strong&gt;s&amp;#8217;imaginant en être elles-mêmes la cause&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Il me semble que quelque part c&amp;#8217;est un mécanisme de retournement de situation assez classique. Je me demande si ce n&amp;#8217;est pas théorisé par le « Petit guide d&amp;#8217;autodéfense intellectuel »&amp;nbsp;?&lt;/p&gt;</content><category term="Lectures"></category><category term="féminisme"></category><category term="masculinisme"></category></entry><entry><title>Antisexisme ou antiracisme ? Un faux dilemme</title><link href="https://blog.notmyidea.org/antisexisme-ou-antiracisme-un-faux-dilemme.html" rel="alternate"></link><published>2019-09-01T00:00:00+02:00</published><updated>2019-09-01T00:00:00+02:00</updated><author><name>Christine Delphy</name></author><id>tag:blog.notmyidea.org,2019-09-01:/antisexisme-ou-antiracisme-un-faux-dilemme.html</id><summary type="html">&lt;blockquote&gt;
&lt;p&gt;De toutes façon, la possibilité même de la discussion avec des femmes portant le foulard est exclue expressément car, quelque soit le sens qu&amp;#8217;une femme portant le foulard donne à son acte, ce sens ne doit pas être pris en compte : le foulard est censé avoir une signification « universelle …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;blockquote&gt;
&lt;p&gt;De toutes façon, la possibilité même de la discussion avec des femmes portant le foulard est exclue expressément car, quelque soit le sens qu&amp;#8217;une femme portant le foulard donne à son acte, ce sens ne doit pas être pris en compte : le foulard est censé avoir une signification « universelle » que seules les féministes occidentales peuvent déceler. Ce sera la position de collectif national des droits des femmes. Comme la commission Stasi, qui refuse par principe d&amp;#8217;auditionner des jeunes filles « voilées ».&amp;nbsp;[p7]&lt;/p&gt;
&lt;p&gt;« C&amp;#8217;est aussi parce que les unes s&amp;#8217;y soumettent (ou y adhèrent) [au port du foulard], que celles qui le refusent sont systématiquement harcelées, traitées de « putes » — ou violées ». Elle ne rejette pas le foulard seulement en tant que symbole de soumission : elle voit les femmes qui le portent comme les complices volontaires des violeurs, puisqu&amp;#8217;elle prétend que sans elles, les violeurs ne sauraient pas exactement qui violer; pense-t-elle qu&amp;#8217;il suffirait de supprimer les foulards pour supprimer le viol ?&amp;nbsp;[p8]&lt;/p&gt;
&lt;p&gt;En somme, le foulard devient aussi le symbole de la violence sexiste. Pas de la violence sexiste en général : mais d&amp;#8217;une violence sexiste propre aux quartiers et banlieues » et aux populations qui y vivent. Le foulard est présenté comme le signe de l&amp;#8217;existence en France d&amp;#8217;une culture « autre », caractérisée par un sexisme également autre que le sexisme « ordinaire » (français) dont certaines […] mettent l&amp;#8217;existence en doute.&amp;nbsp;[p9]&lt;/p&gt;
&lt;p&gt;En dépit de la documentation importante sur le sujet, &lt;strong&gt;l&amp;#8217;excision, qui se pratique dans les régions d&amp;#8217;Afrique chrétiennes, animistes et musulmanes&lt;/strong&gt;, mais est inconnue de la majorité des pays musulmans (Maghreb, Moyen-Orient, Arabie, Yémen, Indonésie, Malaise), &lt;strong&gt;est encore couramment attribuée à l&amp;#8217;islam&lt;/strong&gt;.&amp;nbsp;[p11]&lt;/p&gt;
&lt;p&gt;On s&amp;#8217;aperçoit aussi que ces campagnes internationales concernent exclusivement les « pays du Sud ». Or, les femmes de Belgique et de Norvège auraient certainement besoin de notre soutien, comme nous avons besoin du leur. Ceci renvoie à un problème majeur dans l&amp;#8217;appréhension du monde, qui n&amp;#8217;est pas le fait des seules féministes, mais qui constitue un piège dans lequel nous tombons avec une régularité remarquable : le sort des femmes en Occident nous paraît incontestablement meilleur que partout ailleurs dans le monde.&amp;nbsp;[p12]&lt;/p&gt;
&lt;p&gt;Le débat à laissé supposer que là où apparaît le foulard, apparaîtront un peu plus tard, de façon nécessaire et inévitable, l&amp;#8217;enfermement des femmes, les mariages forcés, la lapidation, l&amp;#8217;excision, l&amp;#8217;amputation de la main des voleurs, etc. Le foulard des jeunes françaises a donc été dénoncé non pour ce qu&amp;#8217;il est ici et maintenant, mais pour ce qu&amp;#8217;il pourrait&amp;nbsp;annoncer.&lt;/p&gt;
&lt;p&gt;La violence sexiste perpétrée dans les w quartiers et banlieues », par les Arabes et les Noirs qui y vivent, est systématiquement dissociée de la violence sexiste « ordinaire ». La première est mise en exergue comme extraordinaire : tellement plus grave qu&amp;#8217;elle est considérée à part, et jamais comme un cas ou une instance de la violence ordinaire. Cette violence extraordinaire est ensuite dénationalisée 4 le « patriarcat le plus dur de la planète » ne peut venir que d&amp;#8217;ailleurs que de l&amp;#8217;hexagone; elle est africaine, elle est musulmane. Du même coup, ses auteurs, les Arabes et les Noirs, sont présentés comme extérieurs à la société française.&amp;nbsp;[p13]&lt;/p&gt;
&lt;p&gt;On a vu que pour ces féministes « partagées », tout se passe comme si établir que la loi est raciste n&amp;#8217;était pas une raison suffisante pour la refuse. C&amp;#8217;est donc qu&amp;#8217;elles acceptent l&amp;#8217;idée que des lois pourraient être bonnes pour les femmes tout en étant racistes (« raciste peut-être, mais ne pas oublier les femmes »). Mais pourraient-elles accepter cette idée, que des lois visant une population, donc racistes, pourraient être néanmoins anti-sexistes, si elles ne partageaient pas avec les féministes pro-loi une prémisse fondamentale : le sexisme serait pire dans les « quartiers », et justiciable d&amp;#8217;un traitement spécial&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;[L]es buts du féminisme […] sont non seulement de traquer le sexisme partout où il est, mais aussi de &lt;strong&gt;refuser l&amp;#8217;idée patriarcale qu&amp;#8217;il serait miraculeusement absent de certains lieux, de certaines relations, bref, qu&amp;#8217;il est localisé, et qu&amp;#8217;on peut y échapper&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;</content><category term="Lectures"></category><category term="sexisme"></category><category term="voile"></category><category term="racisme"></category></entry><entry><title>Égologie</title><link href="https://blog.notmyidea.org/egologie.html" rel="alternate"></link><published>2019-09-01T00:00:00+02:00</published><updated>2019-09-01T00:00:00+02:00</updated><author><name>Aude Vidal</name></author><id>tag:blog.notmyidea.org,2019-09-01:/egologie.html</id><summary type="html">&lt;blockquote&gt;
&lt;p&gt;Le relatif dédain pour la politique va de pair avec l&amp;#8217;espoir de voir les expérimentations alter-écolos se diffuser dans la société par la force de leur exemplarité, en étant reprises par d&amp;#8217;autres initiatives « citoyennes » mais aussi en inspirant les politiques publiques […]. Un changement sans conflictualité, qui repose sur …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;blockquote&gt;
&lt;p&gt;Le relatif dédain pour la politique va de pair avec l&amp;#8217;espoir de voir les expérimentations alter-écolos se diffuser dans la société par la force de leur exemplarité, en étant reprises par d&amp;#8217;autres initiatives « citoyennes » mais aussi en inspirant les politiques publiques […]. Un changement sans conflictualité, qui repose sur la conviction que ces « alternatives » sont désirables par tou⋅te.s. [alternatives,&amp;nbsp;p32]&lt;/p&gt;
&lt;p&gt;La société civile expérimente, teste, invente, à la manière des secteurs les plus dynamiques de l&amp;#8217;économie. Une fois les plâtres essuyés, des entrepreneurs monétisent un modèle déjà rodé. Agir sans attendre pour queles choses bougent, c&amp;#8217;est provoquer des « révolutions » mais joyeuses, « douces », des « vélorutions x ludiques qui actent la disparition des révolutions politiques. De la Commune aux communs, en somme. [alternatives,&amp;nbsp;p33]&lt;/p&gt;
&lt;p&gt;Même si les « alternatives » s&amp;#8217;adressent à tou⋅te⋅s et ont pour objectif de changer le monde, elles peinent à dépasser la sphère individuelle, autour de laquelle elles tentent d&amp;#8217;impulser le changement de l&amp;#8217;ensemble de la société. Pire, les « petits gestes » qui ont été dan sun premier temps proposés aux « éco-citoyen⋅ne⋅s » par les acteurs associatifs, sont devenus, repris par les autorités politiques ou les grandes entreprises, un moteur d&amp;#8217;intertie. Ils témoignent autant d&amp;#8217;une volonté de chacun×e de rassurer à peu de frais ses angoisses écologiques que de celle des institutions qui les promeuvent de faire oublier la toxicité de leurs activités ou leur incapacité à menere des politiques environnementales dignes de ce nom. [petits-gestes,&amp;nbsp;p34]&lt;/p&gt;
&lt;p&gt;« Se changer soi pour changer le monde », cette prescription […] semble au final un leurre, car travailler sur soi-même […] c&amp;#8217;est avant tout accepter une vision du monde où chacun⋅e étant capable d&amp;#8217;aller bien, chacun⋅e est responsable de son sort. [développement-personnel,&amp;nbsp;p42]&lt;/p&gt;
&lt;p&gt;Les pensées de droite sont friandes de responsabilité personnelle, sous-estiment contrainte et rapports de pouvoir, surestiment la marge de manœuvre des personnes (ici des civils dans un pays en guerre, des femmes en régime patriarcal, des personnes surnuméraires dans un contexte de chômage massif et durable). C&amp;#8217;est une manière de justifier un monde d&amp;#8217;inégalités et de violence, où les logiques de solidarités sont abentes. [développement-personnel,&amp;nbsp;p44]&lt;/p&gt;
&lt;p&gt;Ainsi, une écologie aux racines libertaires a pu, loin de ses ambitions de départ, suivre la marche du monde : une libéralisation des rapports sociaux qui entraîne consumérisme et individualisme. C&amp;#8217;est le sort qu&amp;#8217;ont connu d&amp;#8217;autres aspirations issues de la contre-culture des années 60 : la révolution sexuelle ouvre le marché de l&amp;#8217;industrie pornographique, la critique d&amp;#8217;un capitalisme autoritaire entraîne sa métamorphose. [capitalisme, engagement,&amp;nbsp;p51] &lt;/p&gt;
&lt;p&gt;Richard Sennet dans &lt;em&gt;La culture du nouveau capitalisme&lt;/em&gt; ou Ève Chiapelle et Luc Boltanski dans &lt;em&gt;Le Nouvel Esprit du capitalisme&lt;/em&gt; ont décrit l&amp;#8217;évolution d&amp;#8217;un régime autoritaire en un nouveau, plus libéral, où les hiérarchies et les contraintes, plus diffuses, voire insaisissables, sont d&amp;#8217;autant plus difficiles à combattre. Sans autorité visible à contester, l&amp;#8217;individu ne peut s&amp;#8217;en prendre quà lui même. Son mal-être ou son échec sont les conséquences de ce qui est perçu comme une plus grande liberté, à vrai dire une coercition plus subtile. [capitalisme,&amp;nbsp;p51]&lt;/p&gt;
&lt;p&gt;Les préoccupations politiques sont aussi absentes dans les cours de yoga offerts aux salarié⋅es de grandes entreprises que dans les annonces pour des pratiques de relaxation au magasin bio. [alternatives,&amp;nbsp;p57]&lt;/p&gt;
&lt;p&gt;Il est acquis aujourd&amp;#8217;hui qu&amp;#8217;aucune attitude positive n&amp;#8217;a de bénéfice physiologique pour les patientes, qu&amp;#8217;un mode de vie sain ne peut pas prévenir le cancer du sein et que l&amp;#8217;exposition à un environnement toxique fait l&amp;#8217;essentiel du risque mais les discours normatifs culpabilisent les patientes qui vivent leur cancer autrement qu&amp;#8217;avec une bonne volonté et un enthousiasme débordants. [cancer, positivisme,&amp;nbsp;p61]&lt;/p&gt;
&lt;p&gt;Or, la vie commune est souvent défavorable aux femmes, elles sont plus heureuses seules qu&amp;#8217;en couple. Le couple hétérosexuel permet en revanche aux homes de mieux vivre que s&amp;#8217;ils étaient célibataires, par exemple en mangeant plus sainement. Ils travaillent plus et gagnent plus à mesure qu&amp;#8217;ils s&amp;#8217;installent en couple et ont des enfants, tandis que les femmes réduisent leur temps de travail et leur revenu pour les mêmes raisons. [féminisme,&amp;nbsp;p70]&lt;/p&gt;
&lt;p&gt;Caricaturer le tavail comme une simple source de revenu et vouloir le fair edisparaître, c&amp;#8217;est accepter sa dégradation en bête labeur, dont est coupable son organisation capitaliste. [travail, revenu-de-base,&amp;nbsp;p97]&lt;/p&gt;
&lt;p&gt;Loin d&amp;#8217;être une ambition universelle, le bonheur est une « idée neuve en Europe » à la fin du 18ème siècle. Elle semble aujourd&amp;#8217;hui un but indépassable et pourtant d&amp;#8217;autres sociétés adoptent des valeurs différentes, par exemple la justice ou l&amp;#8217;harmonie avec le monde. [bonheur,&amp;nbsp;p101]&lt;/p&gt;
&lt;/blockquote&gt;</content><category term="Lectures"></category><category term="écologie"></category><category term="développement-personnel"></category></entry><entry><title>Hommes Anarchistes face au féminisme</title><link href="https://blog.notmyidea.org/hommes-anarchistes-face-au-feminisme.html" rel="alternate"></link><published>2019-09-01T00:00:00+02:00</published><updated>2019-09-01T00:00:00+02:00</updated><author><name>Françis Dupuis-Déri</name></author><id>tag:blog.notmyidea.org,2019-09-01:/hommes-anarchistes-face-au-feminisme.html</id><summary type="html">&lt;blockquote&gt;
&lt;p&gt;La féministe Catharine A. MacKinnon précise de plus que a violence contre la femme à une valeur érotique dans notre société occidentale et que les femmes en viennent à vouloir être subordonnées dans la sexualité et l&amp;#8217;amour, car elles ont intériorisé cette « valeur ». [violence,&amp;nbsp;érotisme]&lt;/p&gt;
&lt;p&gt;Pour leur part, les …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;blockquote&gt;
&lt;p&gt;La féministe Catharine A. MacKinnon précise de plus que a violence contre la femme à une valeur érotique dans notre société occidentale et que les femmes en viennent à vouloir être subordonnées dans la sexualité et l&amp;#8217;amour, car elles ont intériorisé cette « valeur ». [violence,&amp;nbsp;érotisme]&lt;/p&gt;
&lt;p&gt;Pour leur part, les hommes, anarchistes ou non, sont socialisés en tant qu&amp;#8217;hommes à considérer les femmes comme des objets sexuels, et à associer la violence et la domination à la sexualité, au désirable [violence,&amp;nbsp;érotisme]&lt;/p&gt;
&lt;p&gt;Par ailleurs, des hommes anarchistes prétendent être « victimes » du système patriarcal, considérant en conséquence que les féministes ne devraient pas cibler les hommes, mais lutter à leur côté. Contre qui ? Voilà qui n&amp;#8217;est pas très clair, puisque cette perspective laisse entendre qu&amp;#8217;il n&amp;#8217;y a personne qui contrôle le système patriarcal, qui se tiendrait comme un nuage au-dessus des hommes et des femmes.&amp;nbsp;[masculinismes]&lt;/p&gt;
&lt;p&gt;Il y a deux classes de sexe qui forment le patriarcat, […] ces deux classes ne sont pas égales et […] sont composées d&amp;#8217;individus de chair et d&amp;#8217;os, qui de par leur assignation à une classe n&amp;#8217;entretiennent pas des rapports égalitaires avec les membres de l&amp;#8217;autre classe. Les hommes anarchistes […] doivent reconnaitre le fait qu&amp;#8217;ils appartiennent à la classe dominante, et que les femmes avec qui ils entrent en relation appartiennent à une classe dominée.&amp;nbsp;[réalisation]&lt;/p&gt;
&lt;p&gt;Une variation sur le thème de la priorité stratégique peut consister à laisser entendre que la mobilisation féministe, surtout en non-mixité, représente non seulement une dissolution des forces anarchistes mais une véritable exclusion des hommes anarchistes qui se rouvent donc disciminés par ces femmes qui ne respectent plus les principes anarchistes universalites d&amp;#8217;égalité et de solidarité. Ce discours, qui me semblait un écho de la rhétorique républicaine classique, à été maintes fois reprise au sujet de la trentaine de féministes réunies en non-mixité dans le campement « Point G » en marche du Village alternatif, anticapitaliste et antiguerre (&lt;span class="caps"&gt;VAAAG&lt;/span&gt;) […] contre le sommet du G8 à Évian en 2003. [non-mixité,&amp;nbsp;hierarchisation]&lt;/p&gt;
&lt;p&gt;Placé en position de domination face aux femmes de par son appartenance à la classe des hommes, l&amp;#8217;homme anarchiste même bien intentionné aurait tendance à dominer les femmes, car la structure de classes inégalitaire entre les gommes et les femmes favorise chez lui son instinct autoritaire, sa volonté de domination. Christine Delphy explique de plus, au sujet d&amp;#8217;un homme hypothétique — il pourrait être anarchiste — qui voudrait entretenir une relation égalitaire avec un femme, « qu&amp;#8217;il ne peut à lui tout seul supprimer, détruire ce qu&amp;#8217;uil n&amp;#8217;a pas fait », c&amp;#8217;est à dire la structure inégalitaire patriarcale dans le cadre de laquelle ses relations avec les femmes prennent nécessairement place.&amp;nbsp;[réalisation]&lt;/p&gt;
&lt;p&gt;Des féministes comme Christine Delphy et Peggy McIntosh rapellent que dans notre société, les hommes jouissent en général de nombreux avantages face aux femmes, même si ces hommes sont critiques de leurs privilèges et s&amp;#8217;affichent proféministes et anarchistes.&amp;nbsp;[privilèges]&lt;/p&gt;
&lt;p&gt;« Le privé est politique », c&amp;#8217;est à dire (1) que les femmes vivent des relations de pouvoir dans leurs rapports interpersonnels avec les hommes; (2) que ce rapport de pouvoir ne relèvent pas de la psychologie individuelle et des traits de personnalité, mais d&amp;#8217;une strucutre sociale constituée de deux classes de sexe; (3) que c&amp;#8217;est dans le privé que les femmes sont le plus menacées par les hommes (inceste, viol, violence, meurtre). En somme, si les hommes anarchistes entrentn nécessairement en relation avec des femmes (anarchistes ou non) en tant que membre de la classe de sexe dominante, ces dernières sont nécessairement membres de la classe du sexe dominé. Cela aussi encourage chez l&amp;#8217;homme anarchiste son instinct de domination.&amp;nbsp;[privilèges]&lt;/p&gt;
&lt;p&gt;Les hommes anarchistes respecteront les femmes quand elles auront établi un rapport de force qui modifiera les structures inégalitaires. C4est d&amp;#8217;ailleurs ce que des militantes anarchistes et féministes s&amp;#8217;efforcent de réaliser, génération après génération, dans la société et dans le milieu militant, au gré de leurs décéptions, de leurs peines, de leurs blessures et de leurs colères.&amp;nbsp;[rapport-de-force]&lt;/p&gt;
&lt;p&gt;Pour Claire Sydner, le défi est très grand, car il s&amp;#8217;agit « de créer une égalité entre les genres alors que les femmes érotisent les relations inégalitaires et de domination, et jouissent d&amp;#8217;être réifiées, et demandent le droit de servir sexuellement les hommes » [érotisme,&amp;nbsp;réalisation]&lt;/p&gt;
&lt;p&gt;Les anarchistes sont d&amp;#8217;autant moins enclins à s&amp;#8217;ouvrir aux critiques féministes à leur endroit qu&amp;#8217;ils tirent en général un sens de supériorité morale à s&amp;#8217;identifier comme des victimes, des opprimés, ou des alliés des opprimés; les anarchistes sont donc particulièrement réfractaires à l&amp;#8217;idée qu&amp;#8217;ils seraient eux-même des privilégiés et des dominants.&amp;nbsp;[réalisation]&lt;/p&gt;
&lt;p&gt;Les hommes anarchistes devraient se considérer avant tout comme des auxiliaires des femmes et des féministes, et ils devraient aligner leurs actions (ou leur inaction) selon les volontés, les besoins et les désirs des femmes et des féministes.&amp;nbsp;[postures]&lt;/p&gt;
&lt;p&gt;&lt;span class="dquo"&gt;&amp;#8220;&lt;/span&gt;S&amp;#8217;agit-il de constituer des groupes d&amp;#8217;hommes antisexistes, pour discuter de la déconsntruction de nos scripts érotiques ? Malheureusement, de telles expériences dans les années 1970 et 1980 ont débouché sur des expressions anti-féministes; ces groupes luttant au final pour les « droits des gommes » contre les féministes et le « féminazisme ». Une telle évolution (ou régression) n&amp;#8217;est pas surprenante : placer quelques membres &amp;#8216;une classe dominante ensemble, et il y a un risque réel qu&amp;#8217;ils se solidarisent et se confortent les uns les autres dans leurs complaintes au sujet de « leurs » femmes qui contesteraient leurs privilèges et leur domination. Nous devrison plutôt entamer un processus de &lt;em&gt;disempowerment&lt;/em&gt; et pour l&amp;#8217;ensemble des hommes.&amp;#8221; [non-mixité,&amp;nbsp;groupes-hommes]&lt;/p&gt;
&lt;p&gt;Mais la théorie anarchiste prévoit que les dominants ne s&amp;#8217;engagnent dans un processus de &lt;em&gt;disempowerment&lt;/em&gt; que si les opprimées se mobilisent et luttent pour leur émancipation, et contre les dominants; la théorie anarchiste permet donc de prévoir — paradoxalement — que les hommes anarchistes le lâcherons leur prise sur des femmes que lorsque des femmes auront constitué un rapport de force les forçant justement à lâcher prise, à s&amp;#8217;engager dans un processus de &lt;em&gt;disempowerment&lt;/em&gt;. Si des hommes anarchistes trouvent cette conclusion irrecevable et cherchent les failles dans mon raisonnement, je crois que des femmes anarchistes la trouveront simplement banale.&amp;nbsp;[rapport-de-force]&lt;/p&gt;
&lt;/blockquote&gt;</content><category term="Lectures"></category><category term="féminisme"></category><category term="anarchisme"></category></entry><entry><title>Open space technology</title><link href="https://blog.notmyidea.org/open-space-technology.html" rel="alternate"></link><published>2019-09-01T00:00:00+02:00</published><updated>2019-09-01T00:00:00+02:00</updated><author><name>Harrison Owen</name></author><id>tag:blog.notmyidea.org,2019-09-01:/open-space-technology.html</id><summary type="html">&lt;h2 id="the-invitation"&gt;The&amp;nbsp;invitation&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A natural temptation […] is to try to explain everything that will happen during the event, including how and why it will work&lt;/strong&gt;. After all, we are used to sending out a full agenda in advance with a complete rationalization. Open Space makes that unnecessary. The group will prepare …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;h2 id="the-invitation"&gt;The&amp;nbsp;invitation&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A natural temptation […] is to try to explain everything that will happen during the event, including how and why it will work&lt;/strong&gt;. After all, we are used to sending out a full agenda in advance with a complete rationalization. Open Space makes that unnecessary. The group will prepare the agenda upon arrival. Thus, providing the agenda is not only unnecessary, it is impossible. So what do you say in the invitation? As little as possible. &lt;strong&gt;The objective is to stimulate the imagination of potential guests to the point that they perceive the pertinence and attractiveness of the issue&lt;/strong&gt;.&amp;nbsp;[p29]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A useful model might be the first paragraph of a really good story&lt;/strong&gt;. If you tell the whole tale at the outset, nobody would bother reading on. On the other hand, if you say nothing, or little that makes any sense, the reader will not be hooked.&amp;nbsp;[p29]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When it comes to explaining Open Space, dont&lt;/strong&gt;. Simply say that although it may be new to this group, it has been used all over the world with predictable results.&amp;nbsp;[p30]&lt;/p&gt;
&lt;p&gt;Promises :
1. Every issue of concern to anybody will have been raised, if they took responsibility for doing that.
2. All issues will have received full discussion, to the extent desired.
3. A full report of issues and discussions will be in the hands of all participants.
4. Priorities will be set and action plans will be made.&amp;nbsp;[p30]&lt;/p&gt;
&lt;p&gt;Every invitation is unique, and it should be. &lt;strong&gt;The invitation should appeal to that unique group of people who might care about the issue at hand&lt;/strong&gt;. By definition, that will exclude a whole mess of other people who couldnt care less.&amp;nbsp;[p30]&lt;/p&gt;
&lt;p&gt;I suggest four simple sections […]
1. The Theme (issue): Stated in ten words or less—preferably much less
2. Background/Rational: This should include highlights and most especially intriguing questions. But by no means should this be a full documentation of present status and desired future.
3. Logistics (Where, When, and How): Keep it simple […]
4. The Promises&amp;nbsp;[p31]&lt;/p&gt;
&lt;/blockquote&gt;</content><category term="Lectures"></category><category term="organisation"></category><category term="open-space"></category></entry><entry><title>Rupture anarchiste et trahison pro-féministe</title><link href="https://blog.notmyidea.org/rupture-anarchiste-et-trahison-pro-feministe.html" rel="alternate"></link><published>2019-08-01T00:00:00+02:00</published><updated>2019-08-01T00:00:00+02:00</updated><author><name>Léo Thiers-Vidal</name></author><id>tag:blog.notmyidea.org,2019-08-01:/rupture-anarchiste-et-trahison-pro-feministe.html</id><summary type="html">&lt;blockquote&gt;
&lt;p&gt;Très rapidement des oppositions se sont en effet révélées : les hommes engagés ressortaient joyeux des ateliers non-mixtes masculins où ils avaient par exemple abordé les premières expériences sexuelles, les fantasmes, l&amp;#8217;expression d&amp;#8217;émotions, tandis que les féministes ressortaient graves d&amp;#8217;ateliers où elles avaient abordé les violences sexuelles et …&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;blockquote&gt;
&lt;p&gt;Très rapidement des oppositions se sont en effet révélées : les hommes engagés ressortaient joyeux des ateliers non-mixtes masculins où ils avaient par exemple abordé les premières expériences sexuelles, les fantasmes, l&amp;#8217;expression d&amp;#8217;émotions, tandis que les féministes ressortaient graves d&amp;#8217;ateliers où elles avaient abordé les violences sexuelles et leurs conséquences sur leur sexualité et leur intégrité. [non-mixité,&amp;nbsp;p107]&lt;/p&gt;
&lt;p&gt;Les hommes, s&amp;#8217;ils veulent maintenir leur qualité de vie matérielle, psychologique, sexuelle et mentale, ont intérêt à se cacher à eux-mêmes le caractère oppressif de leur rapports avec les femmes. [réalisation,&amp;nbsp;p110]&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est aussi en refusant d&amp;#8217;empatiser avec les femmes que les hommes engagés demeurent liés au groupe social des hommes en général. Seul un travail théorique, politique et personnel sur cet aspect de la subjectivité masculine permettra de briser le lien avec le groupe social des hommes et d&amp;#8217;élaborer une conscience anti-masculiniste. [réalisation,&amp;nbsp;p111]&lt;/p&gt;
&lt;p&gt;J&amp;#8217;entends par « masculinisme » l&amp;#8217;idéologie politique gouvernante, structurant la société de telle façon que deux classes sociales sont produites : les hommes et le femmes. La classe sociale des hommes se fonde sur l&amp;#8217;oppression des gemmes, source d&amp;#8217;une qualité de vie améliorée. J&amp;#8217;entends par « masculinité » un nombre de pratiques — produisant une façon d&amp;#8217;être au monde et une vision du monde — structurées par le masculinisme, fondées sur et rendant possible l&amp;#8217;oppression des femmes. J&amp;#8217;entends par « hommes » les acteurs sociaux produits par le masculinisme, dont le trait commun est constitué par l&amp;#8217;action oppressive envers les femmes. &amp;#8212; Michèle Le Dœuff [masculinisme,&amp;nbsp;p126]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;La pensée &lt;em&gt;queer&lt;/em&gt; [&amp;#8230;] ne me renvoie pas vers une position privilégiée mais incite&lt;/strong&gt; par l&amp;#8217;accent qu&amp;#8217;elle met sur la performativité, la sexualité, le discursif, &lt;strong&gt;à se croire indépendant des structures sociales&lt;/strong&gt;. Comme si je pouvais aller là ou bon me semblait, et que quasi toute transgression de l&amp;#8217;ordre symbolique hétéro-normatif était politiquement pertinente. Comme si nous étions tou⋅te⋅s des atomes libres survolant genre, hétérosexualité et oppression des femmes par les hommes. Ça ne risque pas trop de faire comprendre aux hommes que c&amp;#8217;est plutôt une restriction de notre pouvoir et marge de manœuvre qui serait nécessaire&amp;#8230; [queer,&amp;nbsp;genre]&lt;/p&gt;
&lt;p&gt;Du côté des hommes, la prise de conscience de la position sociale oppressive aboutit souvent à revendiquer une &lt;em&gt;autre&lt;/em&gt; masculinité. Il me semble pourtant que nous avons (à l&amp;#8217;opposé des groupes sociaux opprimés pour lesquels la revendication identitaire reste une question de survie) à faire un chemin vers le refus d&amp;#8217;identité genrée, donc l&amp;#8217;abolition de l&amp;#8217;identité masculine. Cette abolition ne peut d&amp;#8217;ailleurs que passer par la mise en place d&amp;#8217;autres rapports sociaux abolissant progressivement le genre et créant de nouveaux ingrédients relationnels humains. L&amp;#8217;utopie du non-genre me semble d&amp;#8217;ailleurs bien plus radicale que la création de nouvelles recettes « post identitaires », à l&amp;#8217;aider d&amp;#8217;ingrédients entièrement marqués et structurés par l&amp;#8217;oppression des femmes par les hommes. [masculinisme,&amp;nbsp;queer]&lt;/p&gt;
&lt;p&gt;Si la pensée &lt;em&gt;queer&lt;/em&gt; nous interpelle dans sa remise en cause de l&amp;#8217;hétéronormativité, elle nous dérange dans la mesure où&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Elle déconnecte genre de sexe, mais néglige le fait que le genre est un système politique d&amp;#8217;organisation des humains en oppresseurs et&amp;nbsp;opprimées.&lt;/li&gt;
&lt;li&gt;Elle traite la dimension discursive de l&amp;#8217;hétéronormativité comme fondamentale, et non ses structures sociales&amp;nbsp;hiérarchiques.&lt;/li&gt;
&lt;li&gt;Elle sur-visibilise la dimension sexuelle au détriment d&amp;#8217;autres dimensions comme la division genrée du travail, l&amp;#8217;exploitation domestique, etc., ainsi que les autres axes d&amp;#8217;oppression de race, de classe, de&amp;nbsp;continent…&lt;/li&gt;
&lt;li&gt;Elle manque fondamentalement d&amp;#8217;utopie radicale et accentue avant tout les modes d&amp;#8217;actions individuels au détriment de modes d&amp;#8217;action collectifs en vue de l&amp;#8217;abolition du genre.
&amp;#8212; Sabine Masson &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Léo Thiers-Vidal&amp;nbsp;[queer]&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;</content><category term="Lectures"></category><category term="féminisme"></category><category term="anarchisme"></category><category term="masculinismes"></category></entry><entry><title>Ours</title><link href="https://blog.notmyidea.org/ours.html" rel="alternate"></link><published>2019-07-03T00:00:00+02:00</published><updated>2019-07-03T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-07-03:/ours.html</id><summary type="html">&lt;p&gt;J&amp;#8217;ai de plus en plus de mal à garder mon calme dans les situations ou je
rencontres des humains qui ont des comportements que je trouve déplacés. Je me demande à quel point le fait d&amp;#8217;être maintenant un commerçant impacte ma
capacité relationnelle&amp;nbsp;générale.&lt;/p&gt;
&lt;p&gt;De manière plus large …&lt;/p&gt;</summary><content type="html">&lt;p&gt;J&amp;#8217;ai de plus en plus de mal à garder mon calme dans les situations ou je
rencontres des humains qui ont des comportements que je trouve déplacés. Je me demande à quel point le fait d&amp;#8217;être maintenant un commerçant impacte ma
capacité relationnelle&amp;nbsp;générale.&lt;/p&gt;
&lt;p&gt;De manière plus large, est-ce normal de tolérer des comportements qu&amp;#8217;on estime anormaux, voire immoraux ? Quand est-ce que la tolérance laisse place a de l&amp;#8217;acceptation de comportements problématiques&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Suis-je en train de devenir un ours&amp;nbsp;?&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Vélo</title><link href="https://blog.notmyidea.org/velo.html" rel="alternate"></link><published>2019-06-27T00:00:00+02:00</published><updated>2019-06-27T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-06-27:/velo.html</id><summary type="html">&lt;p&gt;Depuis quelques semaines j&amp;#8217;ai décidé d&amp;#8217;utiliser le vélo pour aller au boulot. Pas forcement tous les jours, mais dès que les conditions le permettent je n&amp;#8217;hésite&amp;nbsp;pas.&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est un vrai plaisir de se déplacer en deux roues, en quasiment silence. Le trajet mets pas loin de …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Depuis quelques semaines j&amp;#8217;ai décidé d&amp;#8217;utiliser le vélo pour aller au boulot. Pas forcement tous les jours, mais dès que les conditions le permettent je n&amp;#8217;hésite&amp;nbsp;pas.&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est un vrai plaisir de se déplacer en deux roues, en quasiment silence. Le trajet mets pas loin de 35mn et passe par un parc sur la fin, c&amp;#8217;est un vrai moment de relaxation, et qui me permet de faire une jonction entre ma vie personnelle et le taf à la&amp;nbsp;brasserie.&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Un espace des communs Rennais ?</title><link href="https://blog.notmyidea.org/un-espace-des-communs-rennais.html" rel="alternate"></link><published>2019-06-26T00:00:00+02:00</published><updated>2019-06-26T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-06-26:/un-espace-des-communs-rennais.html</id><summary type="html">&lt;p&gt;&lt;em&gt;Ce document se veut surtout être quelques notes, et donc revêt un caractère « fouilli » paaaarfaitement assumé. Dailleurs, ce n&amp;#8217;est que ce que j&amp;#8217;ai bien voulu retenir.&amp;nbsp;Voilà.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Je ressors d&amp;#8217;une discussion avec quelques complices autour de deux idées :
1. Avoir un espace pour fédérer différentes personnes …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;em&gt;Ce document se veut surtout être quelques notes, et donc revêt un caractère « fouilli » paaaarfaitement assumé. Dailleurs, ce n&amp;#8217;est que ce que j&amp;#8217;ai bien voulu retenir.&amp;nbsp;Voilà.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Je ressors d&amp;#8217;une discussion avec quelques complices autour de deux idées :
1. Avoir un espace pour fédérer différentes personnes intéressées par le sujet des &lt;em&gt;communs&lt;/em&gt;;
2. Monter une structure Rennaise pour proposer de lhébergement de services&amp;nbsp;web.&lt;/p&gt;
&lt;p&gt;Élaborons un&amp;nbsp;peu&amp;#8230;&lt;/p&gt;
&lt;h2 id="1-un-espace-pour-federer"&gt;1. Un espace pour&amp;nbsp;fédérer&lt;/h2&gt;
&lt;p&gt;L&amp;#8217;idée qui à été développée est celle d&amp;#8217;avoir un espace (un ou des lieux, à différents moments dans l&amp;#8217;année) pour que les rencontres entre les projets &lt;em&gt;du libre&lt;/em&gt; à Rennes puissent se dérouler. Le constat est qu&amp;#8217;il existe différentes structures actuellement en place, mais que a) certaines personnes ne se retrouvent pas dans ces espaces et b) la porosité entre ces différents groupes est assez&amp;nbsp;faible.&lt;/p&gt;
&lt;p&gt;Pour l&amp;#8217;instant pas d&amp;#8217;idée précise de ce qui pourrait être proposé, mais quelques pistes ont été évoquées. l&amp;#8217;envie est de faire un document d&amp;#8217;intention et de proposer à d&amp;#8217;autres de rejoindre le collectif en&amp;nbsp;création.&lt;/p&gt;
&lt;h3 id="frequence"&gt;Fréquence&lt;/h3&gt;
&lt;p&gt;Deux pistes ont été&amp;nbsp;évoquées:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Faire des rencontres suffisamment espacées les unes des autres&lt;/strong&gt;, pour que leur caractère « exceptionnel » soit une force. Si la fréquence des réunions est assez faible, alors l&amp;#8217;incitation pour y prendre part est peut-être plus grande&amp;nbsp;?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ou au contraire, &lt;strong&gt;avoir des rencontres avec une fréquence assez forte&lt;/strong&gt;, pour qu&amp;#8217;en cas d&amp;#8217;incapacité à participer il n&amp;#8217;y ait pas trop longtemps à attendre&amp;nbsp;?&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="charte-ethique"&gt;Charte&amp;nbsp;éthique&lt;/h3&gt;
&lt;p&gt;Le fait d&amp;#8217;avoir un &lt;em&gt;code de conduite&lt;/em&gt; pour de tels évènements à été discuté, un des arguments évoqués étant le fait qu&amp;#8217;un tel code n&amp;#8217;est pas considéré nécessaire par certaines personnes, puisque les règles évoquées tiennent du bon&amp;nbsp;sens.&lt;/p&gt;
&lt;p&gt;Il a été précisé que l&amp;#8217;établissement de ce type de document a pour objectif de:
- Faire que des minorités et/ou oppressés se sentent protégés et considérés, et donc bienvenues à ce type d&amp;#8217;évènements;
- En cas de situations considérées comme problématiques, des personnes référentes soient désignées pour aider à leur&amp;nbsp;résolution&lt;/p&gt;
&lt;h3 id="gouvernance"&gt;Gouvernance&lt;/h3&gt;
&lt;p&gt;Le sujet de la gouvernance à été également abordé : pour avoir de tels rendez-vous, peu importe leur nature, il faut que ceux-cis soient organisés. La possibilité d&amp;#8217;avoir des organisat·rices·eurs· tournantes à été&amp;nbsp;proposé.&lt;/p&gt;
&lt;p&gt;Pour&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cela permet de ne pas reposer uniquement sur quelques&amp;nbsp;personnes;&lt;/li&gt;
&lt;li&gt;Faire des fiches explicatives qui permettent à tou·te·s de&amp;nbsp;s&amp;#8217;impliquer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Contre&amp;nbsp;: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quand tout le monde est responsable, personne ne&amp;nbsp;l&amp;#8217;est.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Peut-être que des solutions intermédiaires sont à trouver, en désignant d&amp;#8217;une fois sur l&amp;#8217;autre les personnes qui soccupent du prochain rendez-vous, par&amp;nbsp;exemple.&lt;/p&gt;
&lt;h2 id="2-hebergement-de-services-web"&gt;2. Hébergement de services&amp;nbsp;Web&lt;/h2&gt;
&lt;p&gt;On a discuté très rapidement de la possibilité de monter une structure pour faire de lhébergement de services web sur Rennes. Le sujet n&amp;#8217;a pas été vraiment développé, mais la question de la relation entre avoir un espace pour fédérer (le 1.) et être un hébergeur de service (le 2.) a été rapidement&amp;nbsp;abordé.&lt;/p&gt;
&lt;p&gt;Faut-il avoir une seule et même structure / groupe de personnes pour ces deux projets ? Dans le cas ou l&amp;#8217;un s&amp;#8217;arrête, entraînerait-il l&amp;#8217;autre dans sa « chute » ? Est-il logique de lier les deux&amp;nbsp;?&lt;/p&gt;
&lt;h2 id="et-donc"&gt;Et donc&amp;nbsp;?&lt;/h2&gt;
&lt;p&gt;Et donc c&amp;#8217;était bien chouette de prendre un peu le temps de remettre le nez dans la vie libriste Rennaise ! Ravi de voir une dynamique prendre forme, on verra bien ou ça mène&amp;nbsp;:-)&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Comment la non-violence protège létat</title><link href="https://blog.notmyidea.org/comment-la-non-violence-protege-letat.html" rel="alternate"></link><published>2019-06-01T00:00:00+02:00</published><updated>2019-06-01T00:00:00+02:00</updated><author><name>Peter Gelderloos</name></author><id>tag:blog.notmyidea.org,2019-06-01:/comment-la-non-violence-protege-letat.html</id><summary type="html">&lt;blockquote&gt;
&lt;p&gt;On peut discerner un schéma récurrent de manipulation historique et de blanchiment flagrant dans chacune des victoires revendiquées par les activistes non-violent-e-s. &lt;strong&gt;La position pacifiste requiert que le succès doit pouvoir être attribué aux tactiques pacifistes et à elles seules, alors que nous autres pensons que le changement provient de …&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;</summary><content type="html">&lt;blockquote&gt;
&lt;p&gt;On peut discerner un schéma récurrent de manipulation historique et de blanchiment flagrant dans chacune des victoires revendiquées par les activistes non-violent-e-s. &lt;strong&gt;La position pacifiste requiert que le succès doit pouvoir être attribué aux tactiques pacifistes et à elles seules, alors que nous autres pensons que le changement provient de lensemble des tactiques utilisées dans toute situation révolutionnaire, pourvu quelles soient déployées de façon efficace&lt;/strong&gt;. Parce quaucun conflit social majeur ne présente une uniformité de tactiques et didéologies autrement dit on trouve dans tous les conflits de ce genre le recours à des tactiques pacifistes et à des tactiques résolument non-pacifistes , les pacifistes doivent effacer la part dhistoire qui est en désaccord avec leurs affirmations ou au contraire attribuer leurs échecs à la présence au sein du mouvement concerné dune forme de lutte&amp;nbsp;violente.&lt;/p&gt;
&lt;p&gt;On nous raconte quen Inde, guidés par leur leader Gandhi, les gens construisirent au fil des décennies un mouvement non-violent de masse et sengagèrent dans la protestation, la non-coopération, les boycotts économiques, des grèves de la faim exemplaires et des actes de désobéissance pour bloquer la machinerie de limpérialisme britannique. Ils subirent des massacres et répliquèrent par une ou deux émeutes mais, dans lensemble, le mouvement fut non-violent et, après avoir persévéré pendant des décennies, le peuple indien gagna son indépendance, délivrant ainsi une victoire pacifiste certifiée. Lhistoire réelle est plus compliquée, puisque &lt;strong&gt;des poussées violentes ont également influencé la décision de retrait des Britanniques&lt;/strong&gt;. Ceux-ci avaient perdu la capacité de maintenir leur pouvoir colonial, après que des millions de leurs soldats meurent et qu&amp;#8217;une grande quantité de ressources diverses soient anéanties au cours de deux guerres mondiales extrêmement violentes, dont la seconde dévasta tout spécialement la « mère patrie ». Les luttes armées des militant-e-s arabes et juifs en Palestine entre 1945 et 1948 continuèrent daffaiblir lempire britannique, et rendirent alors évidente la menace que les Indien-ne-s pourraient abandonner la désobéissance civile et prendre les armes en masse si l&amp;#8217;on continuait de les ignorer encore longtemps ; tout ceci ne peut être exclu des facteurs qui déterminèrent la décision des Britanniques de renoncer à une administration coloniale directe.
On réalise que cette menace était encore plus directe lorsque lon comprend que &lt;strong&gt;lhistoire pacifiste du mouvement dindépendance indien brosse un tableau sélectif et incomplet&lt;/strong&gt; : la non-violence nétait pas universelle en Inde. La résistance à la colonisation britannique comprenait bien assez de lutte violente ou armée pour que lon considère de façon plus exacte que la méthode gandhienne était lune des différentes formes concurrentes de résistance populaire. Dans leur dérangeante démarche duniversalisation, &lt;strong&gt;les pacifistes effacent ces autres formes de résistance et contribuent à propager lhistoire fausse selon laquelle Gandhi et ses disciples étaient la seule boussole de la résistance indienne&lt;/strong&gt;. Sont ainsi passés sous silence dimportants dirigeants militants comme Chandrasekhar Azad 7 , qui combattit les armes à la main contre les colons britanniques, et &lt;strong&gt;des révolutionnaires comme Bhagat Singh, qui sattira un soutien massif en commettant des attentats à la bombe et des assassinats au profit dune lutte visant le renversement du capitalisme tant indien que britannique&lt;/strong&gt;.
Lhistoire pacifiste de la lutte indienne ne peut rendre compte du fait que Subhas Chandra Bose, le candidat favorable à l&amp;#8217;usage de méthodes de luttes non exclusivement pacifiques, fut élu deux fois président du Congrès National Indien, en 1938 et 1939. Si Gandhi fut peut-être la figure la plus remarquablement influente et populaire dans la lutte pour lindépendance de lInde, la position dirigeante quil assuma ne lui valut pas toujours un soutien unanime des masses. Il perdit tellement de soutien des Indien-ne-s lorsquil appela au calme après lémeute de 1922 que « pas le moindre murmure de protestation ne se fit entendre en Inde quand les Britanniques larrêtèrent ensuite »&amp;nbsp;.&lt;/p&gt;
&lt;p&gt;De façon significative, lhistoire se souvient de Gandhi plus que de tous les autres non pas parce quil représentait la voix unanime de lInde, mais de par lattention particulière que lui porta la presse britannique et la prééminence que lui valut le fait dêtre pris comme interlocuteur lors dimportantes négociations avec le gouvernement colonial britannique. Si lon se rappelle que lhistoire est écrite par les vainqueurs, une autre strate du mythe de lindépendance indienne&amp;nbsp;seffrite.&lt;/p&gt;
&lt;p&gt;Mais &lt;strong&gt;laspect le plus désolant de l&amp;#8217;affirmation des pacifistes&lt;/strong&gt; que lindépendance de lInde est une victoire pour la non-violence &lt;strong&gt;est quelle donne tête baissée dans la manipulation historique&lt;/strong&gt; élaborée dans lintérêt des États impérialistes et partisans de la suprématie blanche, qui ont colonisé les pays du Sud. Le mouvement de libération de lInde échoua. &lt;strong&gt;Les Britanniques ne furent pas ontraints à quitter lInde. Ils choisirent au lieu de ça de transférer le territoire d&amp;#8217;une administration coloniale directe à une administration néocoloniale&lt;/strong&gt;. Quelle sorte de victoire autorise les perdants à dicter le calendrier et les modalités de lascension des vainqueurs ? Les Britanniques rédigèrent la nouvelle constitution et remirent le pouvoir entre les mains de successeurs quils choisirent. Ils attisèrent les flammes du séparatisme ethnique et religieux afin que lInde soit affaiblie par des divisions internes, empêchée de bénéficier de la paix et de la prospérité, et dépendante de laide militaire et autres formes de soutien de la part des États&amp;nbsp;euro-américains.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LInde est toujours exploitée par des entreprises euro-américaines&lt;/strong&gt; (bien que plusieurs nouvelles entreprises indiennes, principalement des filiales, se soient jointes au pillage), et continue de fournir des ressources et des marchés aux États impérialistes. Par bien des façons, &lt;strong&gt;la pauvreté de son peuple sest aggravée et lexploitation est devenue plus efficace&lt;/strong&gt;. Lindépendance à légard du pouvoir colonial a donné à lInde plus dautonomie dans quelques zones, et a certainement permis à une poignée dIndiens de sasseoir dans les fauteuils du pouvoir, mais &lt;strong&gt;lexploitation et la marchandisation des ressources sest approfondie&lt;/strong&gt;. Qui plus est, lInde a perdu la nette opportunité que représentait une lutte démancipation riche de sens menée contre un oppresseur étranger aisément identifiable. Aujourdhui, un mouvement démancipation aurait a sopposer aux dynamiques déconcertantes du nationalisme et de la rivalité ethnique et religieuse pour abolir un capitalisme et un gouvernement domestiques bien plus développés que dans leurs formes dalors. Tout bien pesé, le mouvement dindépendance a donc bien&amp;nbsp;échoué.&lt;/p&gt;
&lt;/blockquote&gt;</content><category term="Lectures"></category><category term="non-violence"></category><category term="anarchisme"></category></entry><entry><title>Brasserie - petit bilan, après un an dexistence</title><link href="https://blog.notmyidea.org/un-an.html" rel="alternate"></link><published>2019-05-21T00:00:00+02:00</published><updated>2019-05-21T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2019-05-21:/un-an.html</id><summary type="html">&lt;h1 id="la-brasserie-du-vieux-singe-a-un-an"&gt;La brasserie du Vieux Singe a un an&amp;nbsp;!&lt;/h1&gt;
&lt;p&gt;On a l&amp;#8217;impression que c&amp;#8217;était hier tellement le temps passe vite, mais ça fait un an que notre brasserie existe&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Alors on lève un peu la tête du guidon question de voir ce qu&amp;#8217;on a accompli durant cette première …&lt;/p&gt;</summary><content type="html">&lt;h1 id="la-brasserie-du-vieux-singe-a-un-an"&gt;La brasserie du Vieux Singe a un an&amp;nbsp;!&lt;/h1&gt;
&lt;p&gt;On a l&amp;#8217;impression que c&amp;#8217;était hier tellement le temps passe vite, mais ça fait un an que notre brasserie existe&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Alors on lève un peu la tête du guidon question de voir ce qu&amp;#8217;on a accompli durant cette première année, et de faire un petit bilan&amp;nbsp;:-)&lt;/p&gt;
&lt;h2 id="quelques-dates-chiffres"&gt;Quelques dates &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;chiffres&lt;/h2&gt;
&lt;p&gt;Pour se donner un peu de perspective, voici quelques dates clés de cette première année&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Novembre 2017 : immatriculation de&amp;nbsp;l&amp;#8217;entreprise&lt;/li&gt;
&lt;li&gt;Décembre 2017 : on a les clés&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;Décembre 2017 à Mars 2018 : travaux, installation et divers&amp;nbsp;bricolages&lt;/li&gt;
&lt;li&gt;Mars 2018 : premier&amp;nbsp;brassin&lt;/li&gt;
&lt;li&gt;Mai 2018 : premières ventes&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;Août 2018 : vacances&amp;nbsp;:-)&lt;/li&gt;
&lt;li&gt;Septembre 2018 : inauguration de la brasserie &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; premier brassin&amp;nbsp;unique&lt;/li&gt;
&lt;li&gt;Décembre 2018 : second brassin&amp;nbsp;unique&lt;/li&gt;
&lt;li&gt;Mars 2019 : on se rémunère&amp;nbsp;!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Au moment décrire ces lignes, à la mi Mai 2019, on en est à notre 43ème brassin, on a travaillé sur 4 nouvelles bières, on a dû laver pas loin de 300 fûts, ouverts 700 sacs de malt… et on vous a fait boire la tasse&amp;nbsp;;-)&lt;/p&gt;
&lt;p&gt;Petit retour en&amp;nbsp;arrière…&lt;/p&gt;
&lt;h2 id="travaux-installation"&gt;Travaux &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt;&amp;nbsp;installation&lt;/h2&gt;
&lt;p&gt;En arrivant dans nos locaux, on a dabord dû réaliser quelques travaux daménagement : une grande partie de l&amp;#8217;espace était utilisé en bureaux or on a surtout besoin de place dans la partie « prod&amp;nbsp;».&lt;/p&gt;
&lt;p&gt;On a rajouté à notre local une tranchée pour lévacuation des eaux usées, une chambre chaude pour la refermentation en bouteilles, ainsi que quelques gros points délectricité et de plomberie (circuit de refroidissement des fermenteurs et plusieurs arrivées&amp;nbsp;deau).&lt;/p&gt;
&lt;p&gt;On a profité dêtre sur une zone artisanale pour récupérer quelques palettes perdues chez nos voisins et les transformer en bar, tabourets et étagères, question de pouvoir vous accueillir de manière un peu sympathique&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;&lt;img alt="Photo du bar" src="/images/un-an/bar.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Une fois les travaux daménagements terminés, on a reçu les cuves. Un moment très attendu (et un peu flippant, oui). On a dabord reçu les fermenteurs, debout, quon a pu décharger au chariot élévateur, puis les cuves de brassage, la ligne dembouteillage et enfin notre cuve de ressucrage et carbonatation. Cette dernière est arrivée couchée, on a donc du la relever à laide dune grue. Vous voyez les gouttes de sueur perler sur nos fronts&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;&lt;img alt="Photo du levage du fermenteur avec la grue" src="/images/un-an/dechargement.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Quasiment aucun problème pour décharger les fermenteurs, au final. Le plus difficile a été le déchargement de notre ligne dembouteillage, assez lourde, pour laquelle on a eu quelques déconvenues. On a la chance davoir sur la zone &lt;a href="https://www.jfblevage.fr/"&gt;une entreprise de levage très arrangeante&lt;/a&gt; qui nous a permis de décharger ça correctement, nous enlevant une belle épine du&amp;nbsp;pied.&lt;/p&gt;
&lt;p&gt;A peine les fermenteurs installés, on réceptionnait les cuves de brassage. Les Anglais de &lt;a href="https://www.pbcbreweryinstallations.com/"&gt;&lt;span class="caps"&gt;PBC&lt;/span&gt;&lt;/a&gt; sont venus sur place pour terminer linstallation et nous assister sur notre premier brassin sur cette nouvelle brasserie dont on est plutôt satisfaits.
L&amp;#8217;avantage de ce matériel c&amp;#8217;est que c&amp;#8217;est la &lt;span class="caps"&gt;2CV&lt;/span&gt; du brasseur : tout est manuel et facile à démonter &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; remplacer en cas de soucis (ce qu&amp;#8217;on a pas tardé à vérifier&amp;nbsp;!)&lt;/p&gt;
&lt;h2 id="premiers-brassins"&gt;Premiers&amp;nbsp;brassins&lt;/h2&gt;
&lt;p&gt;Sur nos premiers brassins, on a décidé dutiliser la brasserie à la moitié de sa capacité. Après tout, la moitié c&amp;#8217;était déjà dix fois plus gros que ce qu&amp;#8217;on avait l&amp;#8217;habitude de faire jusqu&amp;#8217;alors avec notre petite brasserie&amp;nbsp;100L.&lt;/p&gt;
&lt;p&gt;On est donc partis sur des brassins de 800 litres. Les premiers brassins se sont vraiment bien déroulés : 7 heures de brassage &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; nettoyage pour 800L de&amp;nbsp;moût.&lt;/p&gt;
&lt;p&gt;Au moment de passer nos recettes à l&amp;#8217;échelle, on a quand même fait quelques petits changements techniques, dont je vous passe les détails&amp;nbsp;ici.&lt;/p&gt;
&lt;p&gt;Et puis, au fur et à mesure de lannée, les recettes et procédés pour nos bières « permanentes » ont un peu bougé également (modification de l&amp;#8217;eau de brassage, changement des temps &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; températures pour l&amp;#8217;ajout du houblon lors du &lt;em&gt;dry hopping&lt;/em&gt;)&lt;/p&gt;
&lt;h2 id="preventes-puis-ventes"&gt;Préventes, puis&amp;nbsp;ventes&lt;/h2&gt;
&lt;p&gt;En parallèle du brassage, on faisait nos premières ventes avec notre système de préventes en&amp;nbsp;ligne.&lt;/p&gt;
&lt;p&gt;Le deal était assez simple : vous achetez les bières avant qu&amp;#8217;elles ne soit brassées, et vous passez les chercher à la brasserie une fois&amp;nbsp;prêtes.&lt;/p&gt;
&lt;p&gt;Double avantage pour nous : une avance de trésorerie non négligeable (on a vendu nos trois premiers brassins en vente directe !) et la possibilité de faire visiter la brasserie quand les gens passent chercher leurs bières : un bon moyen de se&amp;nbsp;rencontrer.&lt;/p&gt;
&lt;p&gt;Notre retour sur ces préventes est vraiment&amp;nbsp;positif. &lt;/p&gt;
&lt;p&gt;Une fois les premiers brassins terminés, et les préventes écoulées, il fallait commencer à mettre en place un circuit de distribution pour les gens qui ne viennent pas nous voir à la&amp;nbsp;brasserie.&lt;/p&gt;
&lt;p&gt;Et là, &lt;em&gt;le double effet kiss-cool&lt;/em&gt; de notre campagne de préventes : le bouche-à-oreilles a fait que des clients nous ont appelé directement avec l&amp;#8217;envie de travailler avec nous ! Résultat : on se retrouve aujourd&amp;#8217;hui avec un maillage de petits et moyens clients qui nous commandent de la bière plus ou moins&amp;nbsp;régulièrement.&lt;/p&gt;
&lt;p&gt;On est hyper contents de travailler avec autant de clients atypiques qui font vivre un monde qui nous parle : plusieurs cafés associatifs, des festivals engagés, des magasins de producteurs, des épiceries associatives, des groupements dachats. On n&amp;#8217;aurait vraiment pas rêvé mieux&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;On a également trois petites tireuses et des gobelets, qui nous permettent de vendre des fûts à des particuliers et associations pour des petits&amp;nbsp;évènements.&lt;/p&gt;
&lt;p&gt;En plus de ces ventes directes, on a fait le choix de passer par des petits distributeurs pour que notre bière se retrouve à des endroits où on ne va pas livrer (la Bretagne en dehors de l&amp;#8217;Ille-et-Vilaine par&amp;nbsp;ex).&lt;/p&gt;
&lt;p&gt;On s&amp;#8217;est également mis à travailler avec un transporteur pour faire des&amp;nbsp;envois.&lt;/p&gt;
&lt;h2 id="organisation-du-temps"&gt;Organisation du&amp;nbsp;temps&lt;/h2&gt;
&lt;p&gt;Autant pour fabriquer de la bière on avait un peu dexpérience, autant pour faire tourner une entreprise on avait tout à découvrir&amp;nbsp;! &lt;/p&gt;
&lt;p&gt;On passe beaucoup de temps à faire les taches administratives (téléphone, ordinateur) quon n&amp;#8217;avait pas imaginées à lorigine. Ça représente environ la moitié de notre temps de travail&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Au final, on ne travaille tous les deux ensemble qu&amp;#8217;assez rarement : on alterne sur la &lt;em&gt;production&lt;/em&gt; (brassage, mise en bouteilles, mise en fûts, et surtout nettoyage !) dune semaine sur lautre ; et quand on n&amp;#8217;est pas « de prod », on sest réparti les tâches administratives : Fred soccupe de la partie comptabilité et des fournisseurs ; Alexis des ventes, de la communication et de la gestion du&amp;nbsp;stock.&lt;/p&gt;
&lt;p&gt;En pratique ça fonctionne plutôt bien, on se fait un (indispensable !) point de synchronisation tous les lundi matin, pour lequel il faut compter au moins&amp;nbsp;3h.&lt;/p&gt;
&lt;p&gt;Le problème, cest quon reste un peu la tête dans le guidon. On essaie bien de prendre du recul, mais le boulot, lui, nattend pas&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Et cest là que les vacances prennent tout leur sens. Une des forces dêtre à Rennes cest quau mois dAoût, il ne se passe absolument rien. Le pied ! Allez hop, en vacances&amp;nbsp;!&lt;/p&gt;
&lt;h2 id="la-place-de-lexperimentation"&gt;La place de&amp;nbsp;lexpérimentation&lt;/h2&gt;
&lt;p&gt;Pour nous, faire de la bière est aussi un moyen dexpérimenter. Expérimentations qui parfois débouchent sur des brassins uniques, quand on trouve que ça vaut le coup (ou quand on teste direct en gros&amp;nbsp;!)&lt;/p&gt;
&lt;p&gt;Et quand on passe des tests à léchelle, (de 20L à 1500L), on est moyennement rassurés&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Après quelques brassins validés, on est un peu plus relax sur le sujet, et on a mis en place de quoi faire des expérimentations à petite échelle de manière simple : vu qu&amp;#8217;on produit du moût toutes les semaines, on en utilise une partie pour faire quelques tests : changement de levure, adjonctions, changement des températures de fermentation,&amp;nbsp;etc.&lt;/p&gt;
&lt;p&gt;Ah ça, cest pas les idées qui nous manquent :-) Et c&amp;#8217;est une super manière&amp;nbsp;d&amp;#8217;expérimenter.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Étiquette de la Sobacha, une lager avec une infusion de sarrasin torréfié" src="/images/un-an/sobacha.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Étiquette de Monstrueuse Normalité, une New England IPA" src="/images/un-an/monstrueuse-normalite.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="Étiquette de Chaînon Manquant, une Sour Pale Ale avec du Kiwi" src="/images/un-an/chainon-manquant.png"&gt;&lt;/p&gt;
&lt;h2 id="ouverture-au-public-evenements-et-equilibre"&gt;Ouverture au public, évènements et&amp;nbsp;équilibre&lt;/h2&gt;
&lt;p&gt;On a pris le parti d&amp;#8217;ouvrir le magasin toutes les fins de semaine (le jeudi et vendredi de 17h à 19h) et on est hyper contents de faire visiter la brasserie aux personnes qui passent de temps à autre. Pour nous, ça fait partie des plaisirs du métier. Par contre, on avait clairement sous estimé le temps que ça nous prendrait. On accueille beaucoup et les gens sont curieux. La fabrication de bière reste encore aujourdhui quelque chose de nouveau pour la plupart, et il faut satisfaire cette curiosité (il faut plus de brasseries&amp;nbsp;!).&lt;/p&gt;
&lt;p&gt;Ce qui se passe en ce moment sur la scène brassicole est génial : beaucoup de nouvelles brasseries proposent des produits exceptionnels, et les évènements se multiplient aux quatre coins de la France. On adore partager, goûter, discuter, mais on ne pensait pas être autant sollicités par des évènements extérieurs, souvent sur des week-end, et parfois loin. &lt;strong&gt;On souhaite garder un équilibre entre notre vie personnelle et notre vie professionnelle&lt;/strong&gt;. Aller aux évènements aussi par plaisir. Être partout est probablement un des maux de notre temps ;-) À force de voir des brasseurs exténués, il y a de quoi se poser des questions sur la pérennité sur le long terme dun rythme aussi&amp;nbsp;effréné.&lt;/p&gt;
&lt;p&gt;Notre choix, cest celui dêtre fiers de nos bières, mais également celui de créer un outil pour nos vies (la brasserie) qui leur rende service. Penser son travail de cette manière nous permet de garder les pieds sur&amp;nbsp;terre.&lt;/p&gt;
&lt;h2 id="bref"&gt;Bref…&lt;/h2&gt;
&lt;p&gt;…Voilà pour le petit tour d&amp;#8217;horizon de cette année écoulée. Plein de super choses dans les mois à venir, on vous donne des nouvelles très bientôt&amp;nbsp;!&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>De Mozilla à la Brasserie du Vieux Singe</title><link href="https://blog.notmyidea.org/de-mozilla-a-la-brasserie-du-vieux-singe.html" rel="alternate"></link><published>2018-05-27T00:00:00+02:00</published><updated>2018-05-27T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2018-05-27:/de-mozilla-a-la-brasserie-du-vieux-singe.html</id><summary type="html">&lt;p&gt;&lt;em&gt;Ce weekend avait lieu &lt;a href="https://sudweb.fr/2018/"&gt;SudWeb&lt;/a&gt; « la conférence Web surtout humaine », ou on m&amp;#8217;a proposé de venir parler de ma reconversion professionnelle, ou comment un passionné de Logiciels Libres choisit de créer une petite brasserie&amp;nbsp;artisanale.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Certaines parties de ce que je voulais transmettre sont passées à la trappe, alors …&lt;/em&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;em&gt;Ce weekend avait lieu &lt;a href="https://sudweb.fr/2018/"&gt;SudWeb&lt;/a&gt; « la conférence Web surtout humaine », ou on m&amp;#8217;a proposé de venir parler de ma reconversion professionnelle, ou comment un passionné de Logiciels Libres choisit de créer une petite brasserie&amp;nbsp;artisanale.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Certaines parties de ce que je voulais transmettre sont passées à la trappe, alors que d&amp;#8217;autres ont pris plus de place que prévu. J&amp;#8217;avais donc envie de reprendre mes notes pour les transformer en billet de blog, question d&amp;#8217;élaborer sur le&amp;nbsp;sujet.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;J&amp;#8217;ai toujours été motivé par mes passions. Quand j&amp;#8217;ai commencé à travailler professionnellement, je me suis rendu compte que même si je faisais quasiment la même chose qu&amp;#8217;auparavant, ça n&amp;#8217;avait plus le même goût. J&amp;#8217;étais maintenant &lt;em&gt;obligé&lt;/em&gt; de le faire, et je n&amp;#8217;en tirais pas le même&amp;nbsp;plaisir.&lt;/p&gt;
&lt;p&gt;Quand j&amp;#8217;étais plus jeune au lycée j&amp;#8217;écrivais des programmes en &lt;em&gt;Visual Basic&lt;/em&gt; que je partageais en ligne sur mon site en &lt;code&gt;.free.fr&lt;/code&gt;. Programmes que probablement personne n&amp;#8217;a lu, mais l&amp;#8217;intention était bel et bien celle de partager mes créations, et d&amp;#8217;échanger à leur&amp;nbsp;propos.&lt;/p&gt;
&lt;p&gt;Cette culture du partage — celle du logiciel libre — est celle qui&amp;nbsp;m&amp;#8217;anime.&lt;/p&gt;
&lt;p&gt;Quelques années plus tard, je découvre le langage de programmation Python, et avec lui toute une communauté, mue par ces mêmes valeurs de partage et d&amp;#8217;amélioration de nos pratiques. Puis je rencontre le Logiciel Libre, avec l&amp;#8217;écriture d&amp;#8217;un programme (&lt;a href="https://getpelican.com"&gt;pelican&lt;/a&gt;) qui reste encore largement utilisé aujourd&amp;#8217;hui. Autant dire que c&amp;#8217;est une bonne claque que de voir des inconnus contribuer à un bout de code qu&amp;#8217;eux aussi jugent&amp;nbsp;utile.&lt;/p&gt;
&lt;p&gt;À la fin de mes études, alors que je reste passionné par le développement logiciel, je ne veux ni travailler pour l&amp;#8217;industrie, ni pour la finance. Je songe même déjà à cette époque à changer de métier (avant même d&amp;#8217;avoir commencé !). Coup de bol, une structure qui m&amp;#8217;est chère cherche des développeurs Python: Mozilla. Sans trop y croire, je passe une série d&amp;#8217;entretiens qui se déroulent bien (!) et je commence quelques mois plus tard à travailler pour cette organisation incroyable, porteuse d&amp;#8217;espoir et de toute une symbolique pour&amp;nbsp;moi.&lt;/p&gt;
&lt;p&gt;Je bosse sur du Logiciel Libre, en Python, en télétravail parfois, avec une bonne paie, sans parler du côté prestigieux.&amp;nbsp;Grisant.&lt;/p&gt;
&lt;p&gt;Mais au fur et à mesure je découvre l&amp;#8217;envers du décors: une méritocratie ancrée et assumée, une hiérarchie de plus en plus importante, menant à une lourdeur administrative assez présente. À ajouter à la barrière de la langue, et aux différences culturelles. Finalement tout n&amp;#8217;est pas rose&amp;nbsp;ici.&lt;/p&gt;
&lt;p&gt;Je décide alors de (je pense) faire un de mes meilleurs choix de vie à ce jour: passer aux 4/5èmes. Je récupère tous mes vendredis. Des weekends de 3 jours, toutes les semaines. Un espace précieux pour me reposer, et pour rêver un&amp;nbsp;peu.&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est à ce moment que Fred, un ami de longue date, en revenant du Québec (ou les brasseries sont légion), me propose de faire de la bière avec lui. Moi qui ne savais même pas qu&amp;#8217;il était &lt;em&gt;possible&lt;/em&gt; de faire de la bière. On tente donc l&amp;#8217;expérience, et nos premières expériences sont des journées bien &lt;em&gt;funky&lt;/em&gt;, à faire toutes les erreurs&amp;nbsp;possibles.&lt;/p&gt;
&lt;p&gt;Peu à peu, on découvre un nouveau monde: celui des brasseurs amateurs. De nouvelles compétences sont nécessaires, de la physique à la biochimie. On se met à rencontrer des professionnels, des passionnés, à échanger sur les forums. On se forme, petit à petit. Tout comme il y a la communauté des gens qui font du Python, il y a la communauté des gens qui font de la bière. Pas encore autant fédérés, ça semble balbutiant alors mais la passion elle est bien&amp;nbsp;présente.&lt;/p&gt;
&lt;p&gt;Tout comme le monde du Logiciel Libre est constitué autour d&amp;#8217;un ennemi commun (les &lt;span class="caps"&gt;GAFA&lt;/span&gt;), le monde de la bière artisanale à la sien: les brasseries industrielles, qui uniformisent les goûts et les&amp;nbsp;processus.&lt;/p&gt;
&lt;p&gt;Je continue en parallèle mon travail chez Mozilla, pendant 4 années. Et puis un jour, une annonce d&amp;#8217;arrêt d&amp;#8217;un projet sur lequel je travaillais me fait réaliser que cette situation m&amp;#8217;épuise. La fameuse goutte de&amp;nbsp;trop.&lt;/p&gt;
&lt;p&gt;Je décide alors de partir, de faire une pause, sans trop savoir ce que l&amp;#8217;avenir me réserve. Une petite période de blanc de deux mois. Le regard des autres est parfois culpabilisant. Mes parents me demandent si « je ne veux pas attendre encore un peu ». La transition me fait peur, mais je choisis quand même de troquer mon confort matériel pour de la&amp;nbsp;cohérence.&lt;/p&gt;
&lt;p&gt;Petit à petit, l&amp;#8217;idée de monter ce qui est maintenant devenu &lt;a href="https://www.vieuxsinge.com"&gt;La Brasserie du Vieux Singe&lt;/a&gt; se pose en évidence. Mais monter une brasserie ce n&amp;#8217;est pas uniquement faire de la bière: c&amp;#8217;est se mettre d&amp;#8217;accord sur des valeurs, trouver comment les défendre, monter un projet pour, et tenir le&amp;nbsp;cap.&lt;/p&gt;
&lt;p&gt;Quelques mois après mon départ, on se retrouve donc à parler de ces valeurs de partage, de documentation, de goût. De gouvernance et de collaboration aussi.
Dans nos pratiques courantes, on décide d&amp;#8217;intégrer du temps pour documenter la vie de la&amp;nbsp;brasserie.&lt;/p&gt;
&lt;p&gt;À titre d&amp;#8217;exemple, nos étiquettes contiennent l&amp;#8217;ensemble des ingrédients que l&amp;#8217;on utilise de la manière la plus détaillée possible. On travaille aussi sur un projet de laveuse de fûts, qui sera publié sous licence libre, avec l&amp;#8217;idée de pouvoir, petit à petit, constituer un ensemble d&amp;#8217;outils utiles à tous les brasseurs, et peut être même réussir à favoriser les échanges entre toutes ces&amp;nbsp;personnes.&lt;/p&gt;
&lt;p&gt;Nous sommes deux brasseurs, deux chefs d&amp;#8217;entreprise, mais aussi deux développeurs. Nos compétences de développeurs nous sont utiles quotidiennement: pour notre laveuse de fûts, pour nos créations de recettes (j&amp;#8217;ai découvert la puissance des tableurs !), pour notre site de préventes, notre site Web, nos outils du quotidien. On se rend compte qu&amp;#8217;il s&amp;#8217;agit de compétences&amp;nbsp;précieuses.&lt;/p&gt;
&lt;p&gt;Mais monter une entreprise, c&amp;#8217;est aussi assumer une partie administrative. Vous vous rappelez cette histoire de réactions face aux activités subordonnées ? Et bien quand je fais mes déclarations aux douanes, ce n&amp;#8217;est pas de gaîté de cœur. Je sais par contre pourquoi je le fais: ce sont les règles du jeu. Des obligations, mais peut-être moins de coercition. J&amp;#8217;y trouve plus de&amp;nbsp;sens.&lt;/p&gt;
&lt;p&gt;Et, si je n&amp;#8217;avais pas réduit mon temps de travail, j&amp;#8217;aurais peut-être loupé la découverte de ce nouveau monde, celui qui me passionne&amp;nbsp;aujourd&amp;#8217;hui.&lt;/p&gt;
&lt;p&gt;Alors je vous invite à vous poser la question — indispensable — de vos valeurs: qu&amp;#8217;est-ce que vous souhaitez faire ? Qu&amp;#8217;est-ce qui vous anime ? Et peut-être à aménager du temps pour explorer vos&amp;nbsp;envies. &lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Groupement dachats &amp; partage dexpérience</title><link href="https://blog.notmyidea.org/groupement-dachats-partage-dexperience.html" rel="alternate"></link><published>2018-03-03T00:00:00+01:00</published><updated>2018-03-03T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2018-03-03:/groupement-dachats-partage-dexperience.html</id><summary type="html">&lt;p&gt;Il y a quelques années, on s&amp;#8217;est motivé entre copains copines pour créer un groupement&amp;nbsp;d&amp;#8217;achat.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;idée est&amp;nbsp;simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;commander en gros, pour faire baisser les&amp;nbsp;prix&lt;/li&gt;
&lt;li&gt;se passer d&amp;#8217;intermédiaires et favoriser les circuits&amp;nbsp;courts&lt;/li&gt;
&lt;li&gt;aller à la rencontre des producteurs locaux et&amp;nbsp;échanger&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notre groupement …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Il y a quelques années, on s&amp;#8217;est motivé entre copains copines pour créer un groupement&amp;nbsp;d&amp;#8217;achat.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;idée est&amp;nbsp;simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;commander en gros, pour faire baisser les&amp;nbsp;prix&lt;/li&gt;
&lt;li&gt;se passer d&amp;#8217;intermédiaires et favoriser les circuits&amp;nbsp;courts&lt;/li&gt;
&lt;li&gt;aller à la rencontre des producteurs locaux et&amp;nbsp;échanger&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Notre groupement dessert actuellement 18 foyers et une 60aine de&amp;nbsp;personnes.&lt;/p&gt;
&lt;p&gt;Au fur et à mesure de la vie du groupement, on a développé quelques outils pour se simplifier la vie. Voici un retour d&amp;#8217;expérience et quelques astuces / outils, au cas où l&amp;#8217;envie vous prenne à vous aussi&amp;nbsp;:)&lt;/p&gt;
&lt;h1 id="organisation"&gt;Organisation&lt;/h1&gt;
&lt;p&gt;On organise environs trois ou quatre distributions par an. Le &lt;em&gt;modus operandi&lt;/em&gt; est le&amp;nbsp;suivant:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;chaque product·eur·rice à un·e référent·e, qui s&amp;#8217;occupe de faire le&amp;nbsp;lien;&lt;/li&gt;
&lt;li&gt;une personne est désignée pour coordonner la&amp;nbsp;distribution;&lt;/li&gt;
&lt;li&gt;4 semaines avant la distribution, les référent·e·s mettent à jour les prix / produits dans le tableau de&amp;nbsp;commandes;·e·&lt;/li&gt;
&lt;li&gt;3 semaines avant la distribution, les commandes sont&amp;nbsp;ouvertes;&lt;/li&gt;
&lt;li&gt;2 semaines avant la distribution, les commandes sont&amp;nbsp;closes;&lt;/li&gt;
&lt;li&gt;Les référent·e·s ont ensuite deux semaines pour récupérer les commandes pour la&amp;nbsp;distribution&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="quels-produits"&gt;Quels produits&amp;nbsp;?&lt;/h1&gt;
&lt;p&gt;On essaye d&amp;#8217;avoir uniquement des produits qui se conservent (on a également quelques autres produits plus frais, mais avec d&amp;#8217;autres&amp;nbsp;modalités).&lt;/p&gt;
&lt;p&gt;Entre autres: bières, légumes secs, conserves, jus, miel, pâtes, semoule, café, vinaigres, pommes de terre, oignons, huiles,&amp;nbsp;farines.&lt;/p&gt;
&lt;p&gt;On essaye de faire du local puis du bio au plus proche plutôt que de trouver nécessairement les prix les plus bas. C&amp;#8217;est une discussion qui revient assez
souvent, et donc un point à évoquer lors de la création pour avoir une posture
claire sur le sujet (tout le monde n&amp;#8217;est pas animé par la même éthique&amp;nbsp;!).&lt;/p&gt;
&lt;h1 id="paiements"&gt;Paiements&lt;/h1&gt;
&lt;p&gt;Pour les paiements, on utilise autant que possible des chèques. Chaque référent·e paye la·le product·rice·eur en son nom, et lui demande d&amp;#8217;attendre la date de la distribution pour l&amp;#8217;encaissement. La plupart des producteurs acceptent d&amp;#8217;être payés sous&amp;nbsp;quinzaine.&lt;/p&gt;
&lt;p&gt;Le jour de la distribution, tout le monde apporte son chéquier. Nous avons mis
en place une moulinette qui s&amp;#8217;occupe de faire la répartition des chèques automatiquement, chaque membre se retrouve à faire en moyenne un ou deux&amp;nbsp;chèques.&lt;/p&gt;
&lt;p&gt;Chaque référent·e est ainsi remboursé·e de la somme avancée, et chaque
membre du groupement d&amp;#8217;achat paye ce qu&amp;#8217;il doit payer. Nous n&amp;#8217;avons
volontairement pas de structure juridique et pas de compte en banque. Les
paiements s&amp;#8217;effectuent directement entre&amp;nbsp;nous.&lt;/p&gt;
&lt;h1 id="transports"&gt;Transports&lt;/h1&gt;
&lt;p&gt;Chaque référent·e commande les produits, puis ensuite s&amp;#8217;occupe de les rapatrier. À Rennes, on a la chance d&amp;#8217;avoir pas mal de producteurs aux alentours, donc c&amp;#8217;est assez&amp;nbsp;simple.&lt;/p&gt;
&lt;p&gt;Le mieux est de ramener les produits juste un peu avant la distribution au lieu de distribution, ça permet d&amp;#8217;éviter de les stocker trop longtemps, et d&amp;#8217;éviter aux producteurs d&amp;#8217;attendre trop longtemps avant d&amp;#8217;encaisser les&amp;nbsp;chèques.&lt;/p&gt;
&lt;p&gt;Pour les grosses commandes, les voitures se remplissent bien, mais ma petite Clio suffit, que ce soit dit&amp;nbsp;!&lt;/p&gt;
&lt;h1 id="la-distribution"&gt;La&amp;nbsp;distribution&lt;/h1&gt;
&lt;p&gt;Un peu en amont de la distribution, il faut organiser l&amp;#8217;espace. Des tas par membre sont constitués pour faciliter les choses le jour de la&amp;nbsp;distribution.&lt;/p&gt;
&lt;p&gt;Le jour même, on se retrouve, on charge ses marchandises, on échange quelques chèques et on papote ! On en profite&amp;nbsp;pour:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;discuter de la date de la prochaine&amp;nbsp;distribution;&lt;/li&gt;
&lt;li&gt;trouver une nouvelle personne pour la&amp;nbsp;coordonner;&lt;/li&gt;
&lt;li&gt;discuter de nouveaux&amp;nbsp;produits;&lt;/li&gt;
&lt;li&gt;refaire le&amp;nbsp;monde;&lt;/li&gt;
&lt;li&gt;changer de référents pour les&amp;nbsp;producteurs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et c&amp;#8217;est reparti pour un tour&amp;nbsp;;)&lt;/p&gt;
&lt;h1 id="nos-outils"&gt;Nos&amp;nbsp;outils&lt;/h1&gt;
&lt;p&gt;On utilise un tableur en ligne pour partager les prix et prendre les commandes. On a essayé d&amp;#8217;utiliser &lt;em&gt;ethercalc&lt;/em&gt; au début mais ça ne fonctionnait pas pour nous à l&amp;#8217;époque (trop de petits bugs). On a donc préféré utiliser Google docs&amp;nbsp;(ouch).&lt;/p&gt;
&lt;p&gt;Il est d&amp;#8217;ailleurs possible d&amp;#8217;y intégrer de nouvelles fonctionnalités assez facilement, du coup Fred et Rémy ont planché sur un moyen d&amp;#8217;automatiser la répartition des chèques (qu&amp;#8217;on faisait dans un premier temps à la main - assez&amp;nbsp;péniblement).&lt;/p&gt;
&lt;p&gt;Le système n&amp;#8217;est pas parfait mais fonctionne quand même assez bien&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Quelques ressources,&amp;nbsp;donc:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/almet/8c77fafc9e487c02ded852ec4a91ae16"&gt;le code pour faire la répartition des&amp;nbsp;chèques&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.google.com/spreadsheets/d/1bnPRSvf2Q2RDxKerWnEqUyJjuCFePnVMq6pWo8LeA_k/edit?usp=sharing"&gt;une version « à remplir » de notre tableau de commandes&lt;/a&gt; (le mieux est d&amp;#8217;en faire une copie&amp;nbsp;!).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bon groupement d&amp;#8217;achat&amp;nbsp;;)&lt;/p&gt;</content><category term="code"></category></entry><entry><title>Webnotes</title><link href="https://blog.notmyidea.org/webnotes.html" rel="alternate"></link><published>2018-02-25T00:00:00+01:00</published><updated>2018-02-25T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2018-02-25:/webnotes.html</id><summary type="html">&lt;p&gt;Quand je navigue en ligne, j&amp;#8217;aime bien prendre des notes sur ce que je lis. C&amp;#8217;est utile pour les retrouver plus tard. Il existe quelques outils pour ce genre de cas, mais j&amp;#8217;ai vraiment eu du mal à trouver un outil qui faisais ce que je voulais …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Quand je navigue en ligne, j&amp;#8217;aime bien prendre des notes sur ce que je lis. C&amp;#8217;est utile pour les retrouver plus tard. Il existe quelques outils pour ce genre de cas, mais j&amp;#8217;ai vraiment eu du mal à trouver un outil qui faisais ce que je voulais, de la manière que je voulais, c&amp;#8217;est à&amp;nbsp;dire:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;enregistrer une sélection de texte ainsi que son contexte: heure, site&amp;nbsp;web.&lt;/li&gt;
&lt;li&gt;fonctionner sur&amp;nbsp;Firefox;&lt;/li&gt;
&lt;li&gt;stocker mes notes à un endroit que je contrôle (ce sont mes données, après tout&amp;nbsp;!)&lt;/li&gt;
&lt;li&gt;rester en dehors de mon chemin: je suis en train de lire, pas en train d&amp;#8217;organiser mes&amp;nbsp;notes.&lt;/li&gt;
&lt;li&gt;automatiquement partager les notes sur une page&amp;nbsp;web.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J&amp;#8217;ai donc pris un peu de temps pour fabriquer mon outil de prises de notes, que j&amp;#8217;ai baptisé « Webnotes ». C&amp;#8217;est &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/wwebnotes/"&gt;une extension Firefox&lt;/a&gt;, qui se configure assez simplement, et qui stocke les données dans une instance de &lt;a href="http://kinto-storage.org/"&gt;Kinto&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://github.com/almet/webnotes/blob/master/webnotes.gif?raw=true" /&gt;&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est aussi simple que sélectionner du texte, faire « clic droit » puis « save as webnote », entrer un tag et le tour est joué&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Mes notes sont disponibles &lt;a href="https://notes.notmyidea.org"&gt;sur notes.notmyidea.org&lt;/a&gt;, et voici &lt;a href="https://github.com/almet/webnotes"&gt;le lien vers les sources&lt;/a&gt;, si ça vous intéresse de regarder comment ça fonctionne&amp;nbsp;!&lt;/p&gt;</content><category term="code"></category></entry><entry><title>Faire moins</title><link href="https://blog.notmyidea.org/faire-moins.html" rel="alternate"></link><published>2018-01-25T00:00:00+01:00</published><updated>2018-01-25T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2018-01-25:/faire-moins.html</id><summary type="html">&lt;p&gt;L&amp;#8217;an dernier, j&amp;#8217;ai décidé de faire moins de choses, ou plus exactement d&amp;#8217;arrêter de faire de nouvelles choses. Choix assez difficile: j&amp;#8217;aime découvrir de nouvelles pratiques, échanger sur des sujets que je connais pas, et surtout je crois que découvrir de nouvelles pratiques (sans nécessairement creuser …&lt;/p&gt;</summary><content type="html">&lt;p&gt;L&amp;#8217;an dernier, j&amp;#8217;ai décidé de faire moins de choses, ou plus exactement d&amp;#8217;arrêter de faire de nouvelles choses. Choix assez difficile: j&amp;#8217;aime découvrir de nouvelles pratiques, échanger sur des sujets que je connais pas, et surtout je crois que découvrir de nouvelles pratiques (sans nécessairement creuser un sujet en particulier) est l&amp;#8217;occasion de contribuer à éviter notre société&amp;nbsp;d&amp;#8217;experts.&lt;/p&gt;
&lt;p&gt;Le hic, c&amp;#8217;est que trop, c&amp;#8217;est trop. J&amp;#8217;ai donc décidé d&amp;#8217;arrêter, tout simplement, de faire de nouvelles choses, et puis avec le temps j&amp;#8217;ai même arreté de faire des choses que j&amp;#8217;avais commencé à faire (par exemple de l&amp;#8217;escalade), me libérant du&amp;nbsp;temps.&lt;/p&gt;
&lt;p&gt;Enfin ! Je retrouve ce précieux temps. Je retrouve ces moments d&amp;#8217;ennui. Oui, je comprends bien que ça puisse parraître fou de voir quelqu&amp;#8217;un se réjouir de son ennui… Cet ennui me permet de creuser de nouvelles idées, de reprendre ce bouquin qu&amp;#8217;on avait laissé tomber sans trop de&amp;nbsp;raison.&lt;/p&gt;
&lt;p&gt;Et surtout, c&amp;#8217;est se retrouver à contrôler son&amp;nbsp;engagement.&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>NEIPA #3</title><link href="https://blog.notmyidea.org/neipa-3.html" rel="alternate"></link><published>2017-12-29T00:00:00+01:00</published><updated>2017-12-29T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2017-12-29:/neipa-3.html</id><summary type="html">&lt;p&gt;&lt;em&gt;Voici quelques prises durant un de mes brassins. L&amp;#8217;idée est de pouvoir les relire et m&amp;#8217;améliorer au fur et à&amp;nbsp;mesure.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Test autour d&amp;#8217;une New England Pale Ale; Cette fois ci avec du Mosaic et du Citra, durant une collab&amp;#8217; avec&amp;nbsp;Heiko.&lt;/p&gt;
&lt;h1 id="objectifs"&gt;Objectifs:&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Brasser une nouvelle &lt;span class="caps"&gt;NEIPA …&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;&lt;em&gt;Voici quelques prises durant un de mes brassins. L&amp;#8217;idée est de pouvoir les relire et m&amp;#8217;améliorer au fur et à&amp;nbsp;mesure.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Test autour d&amp;#8217;une New England Pale Ale; Cette fois ci avec du Mosaic et du Citra, durant une collab&amp;#8217; avec&amp;nbsp;Heiko.&lt;/p&gt;
&lt;h1 id="objectifs"&gt;Objectifs:&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Brasser une nouvelle &lt;span class="caps"&gt;NEIPA&lt;/span&gt; en appliquant les trouvailles des deux premières&amp;nbsp;versions;&lt;/li&gt;
&lt;li&gt;Hop stand de&amp;nbsp;40mn;&lt;/li&gt;
&lt;li&gt;Contrôle du pH à&amp;nbsp;5.2;&lt;/li&gt;
&lt;li&gt;Refroidissement dans&amp;nbsp;l&amp;#8217;évier;&lt;/li&gt;
&lt;li&gt;Ajouter plus&amp;nbsp;d&amp;#8217;avoine;&lt;/li&gt;
&lt;li&gt;Faire un mash&amp;nbsp;out;&lt;/li&gt;
&lt;li&gt;Augmenter un peu la quantité de&amp;nbsp;grain.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="recette"&gt;Recette:&lt;/h1&gt;
&lt;p&gt;&lt;span class="caps"&gt;DI&lt;/span&gt;: 1055 (atteint)
pH: 5.2 (5.4&amp;nbsp;mesuré)&lt;/p&gt;
&lt;h2 id="grains"&gt;Grains:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;75% de Pale&amp;nbsp;Ale&lt;/li&gt;
&lt;li&gt;12.5% de&amp;nbsp;blé&lt;/li&gt;
&lt;li&gt;12.5% flocons&amp;nbsp;d&amp;#8217;avoine&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="houblons"&gt;Houblons:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2g/L Mosaic (Hop Stand&amp;nbsp;40mn)&lt;/li&gt;
&lt;li&gt;2g/L Citra (Hop Stand&amp;nbsp;40mn)&lt;/li&gt;
&lt;li&gt;4g/L Citra à cru (en deux&amp;nbsp;fois)&lt;/li&gt;
&lt;li&gt;4g/L Mosaic à cru (en deux&amp;nbsp;fois)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="eau"&gt;Eau:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Utilisation d&amp;#8217;eau de source, pour pouvoir corriger les sulfates /&amp;nbsp;chlorures.&lt;/li&gt;
&lt;li&gt;200 Chlorures pour 100&amp;nbsp;Sulfates.&lt;/li&gt;
&lt;li&gt;
&lt;h2 id="gypse-1g"&gt;Gypse:&amp;nbsp;1g&lt;/h2&gt;
&lt;dl&gt;
&lt;dd&gt;1.8g&amp;nbsp;(=4.05ml)&lt;/dd&gt;
&lt;/dl&gt;
&lt;/li&gt;
&lt;li&gt;Acide lactique:&amp;nbsp;0.4ml&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="profil-dempatage"&gt;Profil&amp;nbsp;d&amp;#8217;empatage:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;68°C durant&amp;nbsp;40mn;&lt;/li&gt;
&lt;li&gt;75°C durant 10mn&amp;nbsp;(mash-out)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="levure"&gt;Levure&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;GigaYeast «Vermont Ale». Le nombre de cellules n&amp;#8217;est pas indiqué sur le packaging, ni en&amp;nbsp;ligne.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="deroule"&gt;Déroulé&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;12h50: empâtage à&amp;nbsp;68°C&lt;/li&gt;
&lt;li&gt;pH = 5.5. Ajout de 0.2&amp;nbsp;d&amp;#8217;acide.&lt;/li&gt;
&lt;li&gt;Pas mal de mesures du pH:&lt;ul&gt;
&lt;li&gt;5.2@23°C&amp;nbsp;(13h05)&lt;/li&gt;
&lt;li&gt;5.4@18°C&amp;nbsp;(13h05)&lt;/li&gt;
&lt;li&gt;5.2@27°C&amp;nbsp;(13h15)&lt;/li&gt;
&lt;li&gt;5.3@19°C&amp;nbsp;(13h20)&lt;/li&gt;
&lt;li&gt;5.4@25°C&amp;nbsp;(13h30)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;13h33: Mash-out à 78°C durant&amp;nbsp;10mn&lt;/li&gt;
&lt;li&gt;Test à l&amp;#8217;iode: &lt;span class="caps"&gt;OK&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;14h11: 1er rincage. Densité premier mout:&amp;nbsp;1070&lt;/li&gt;
&lt;li&gt;15h40: Hop Stand (15g Citra / 15g&amp;nbsp;Mosaic)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="fermentation"&gt;Fermentation&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;31/12/2017 - Fermentation à&amp;nbsp;20°C&lt;/li&gt;
&lt;li&gt;01/01/2018 - Ajout de 12g de Citra et 12g de Mosaic après deux&amp;nbsp;jours.&lt;/li&gt;
&lt;li&gt;10/01/2018 - 1.040 &lt;span class="caps"&gt;SG&lt;/span&gt; = 1.008&amp;nbsp;corrigé&lt;/li&gt;
&lt;li&gt;15/01/2018 - Ajout de 12g de Citra et 12g de&amp;nbsp;Mosaic&lt;/li&gt;
&lt;li&gt;15/01/2018 - Cold&amp;nbsp;Crash&lt;/li&gt;
&lt;li&gt;21/01/2018 - Mise en bouteille. Resucrage à&amp;nbsp;7g/L.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="observations"&gt;Observations:&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;En mettant 1.5ml d&amp;#8217;acide, si on mesure le pH de l&amp;#8217;eau, il est à 3.5. Ça nous à pas mal effrayé, puisque on a pas trop l&amp;#8217;habitude de monitorer le pH. On refait: 0.4ml d&amp;#8217;acide = pH de 4.1. Au final, cela ne semble pas utile de mesurer le pH de l&amp;#8217;eau avant de mettre son&amp;nbsp;grain.&lt;/li&gt;
&lt;li&gt;Je le savais déjà, mais travailler à deux en discutant n&amp;#8217;est pas vraiment une bonne idée: sur les opérations un peu technique, un manque de concentration se fait tout de suite&amp;nbsp;ressentir.&lt;/li&gt;
&lt;li&gt;BeerSmith semble proposer un outil pour calculer les modifications de pH, je devrais l&amp;#8217;utiliser la prochaine&amp;nbsp;fois.&lt;/li&gt;
&lt;li&gt;Baisser le ration d&amp;#8217;empâtage: On s&amp;#8217;est retrouvé avec beaucoup trop d&amp;#8217;eau de rincage, alors qu&amp;#8217;on était sur une bière assez faible en&amp;nbsp;densité.&lt;/li&gt;
&lt;li&gt;Au final, ajouter l&amp;#8217;acide au départ est problématique pour le pH de l&amp;#8217;eau qui baisse énormement. Après quelques recherches, il semble qu&amp;#8217;il faille faire confiance au logiciel, et prendre une seule mesure de pH à 10mn (cela devrait être stable). Le pHmetre est aussi peut-être en&amp;nbsp;cause.&lt;/li&gt;
&lt;li&gt;D&amp;#8217;une manière générale, j&amp;#8217;ai l&amp;#8217;impression d&amp;#8217;être un peu à l&amp;#8217;arrache sur la partie fermentation. Il faudrait vraiment que j&amp;#8217;ai un plan et que je m&amp;#8217;y tienne. Plusieurs questions me semblent encore à résoudre: combien de temps laisser le houblon à cru ? A quelle température&amp;nbsp;?&lt;/li&gt;
&lt;/ul&gt;</content><category term="Notes"></category></entry><entry><title>NEIPA #2</title><link href="https://blog.notmyidea.org/neipa-2.html" rel="alternate"></link><published>2017-12-18T00:00:00+01:00</published><updated>2017-12-18T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2017-12-18:/neipa-2.html</id><summary type="html">&lt;p&gt;&lt;em&gt;Voici quelques prises durant un de mes brassins. L&amp;#8217;idée est de pouvoir les relire et m&amp;#8217;améliorer au fur et à&amp;nbsp;mesure.&lt;/em&gt;&lt;/p&gt;
&lt;h1 id="objectifs"&gt;Objectifs&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Corriger les erreurs du précédent&amp;nbsp;brassin.&lt;/li&gt;
&lt;li&gt;Éviter les soucis de&amp;nbsp;filtration&lt;/li&gt;
&lt;li&gt;Mieux corriger le&amp;nbsp;pH&lt;/li&gt;
&lt;li&gt;Faire un whirlpool digne de ce nom / avoir moins de trub …&lt;/li&gt;&lt;/ul&gt;</summary><content type="html">&lt;p&gt;&lt;em&gt;Voici quelques prises durant un de mes brassins. L&amp;#8217;idée est de pouvoir les relire et m&amp;#8217;améliorer au fur et à&amp;nbsp;mesure.&lt;/em&gt;&lt;/p&gt;
&lt;h1 id="objectifs"&gt;Objectifs&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Corriger les erreurs du précédent&amp;nbsp;brassin.&lt;/li&gt;
&lt;li&gt;Éviter les soucis de&amp;nbsp;filtration&lt;/li&gt;
&lt;li&gt;Mieux corriger le&amp;nbsp;pH&lt;/li&gt;
&lt;li&gt;Faire un whirlpool digne de ce nom / avoir moins de trub dans le&amp;nbsp;fermenteur&lt;/li&gt;
&lt;li&gt;Ne pas se laisser avoir par la baisse de température durant&amp;nbsp;l&amp;#8217;empâtage.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="recette"&gt;Recette&lt;/h1&gt;
&lt;p&gt;&lt;span class="caps"&gt;DI&lt;/span&gt;: 1060 (1050 mesuré)
pH: 5.2&amp;nbsp;(atteint)&lt;/p&gt;
&lt;h2 id="grains"&gt;Grains&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;90%&amp;nbsp;Pils&lt;/li&gt;
&lt;li&gt;10% Flocons&amp;nbsp;d&amp;#8217;avoine&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="houblons"&gt;Houblons&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2g/L Wakatu (au&amp;nbsp;Whirlpool)&lt;/li&gt;
&lt;li&gt;2g/L Motueka (au&amp;nbsp;Whirlpool)&lt;/li&gt;
&lt;li&gt;4.5g/L Wakatu à cru (en deux&amp;nbsp;fois)&lt;/li&gt;
&lt;li&gt;2.5g/L Motueka à cru (en deux&amp;nbsp;fois)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="eau"&gt;Eau&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Utilisation d&amp;#8217;eau de source, pour pouvoir corriger les sulfates /&amp;nbsp;chlorures.&lt;/li&gt;
&lt;li&gt;200 Chlorures pour 100&amp;nbsp;Sulfates.&lt;/li&gt;
&lt;li&gt;Gypse:&amp;nbsp;0.9g&lt;/li&gt;
&lt;li&gt;CaCl2:&amp;nbsp;3.4g&lt;/li&gt;
&lt;li&gt;Acide lactique: Au batch précédent, j&amp;#8217;avais mesuré 5.6, donc: ajout de +2ml d&amp;#8217;acide&amp;nbsp;(=2.4g).&lt;/li&gt;
&lt;li&gt;Utilisation d&amp;#8217;Irish Moss (2g) pour coaguler les&amp;nbsp;protéines.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="profil-dempatage"&gt;Profil&amp;nbsp;d&amp;#8217;empatage&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;65°C durant 90mn (68°C au départ, 65&amp;nbsp;visé)&lt;/li&gt;
&lt;li&gt;78°C durant 10mn&amp;nbsp;(mash-out)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="levure"&gt;Levure&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;London Ale &lt;span class="caps"&gt;III&lt;/span&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="deroule"&gt;Déroulé&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;18h36 - empatage à&amp;nbsp;65°C&lt;/li&gt;
&lt;li&gt;19h16- pH =&amp;nbsp;5.2&lt;/li&gt;
&lt;li&gt;Densité 1er moût:&amp;nbsp;1070&lt;/li&gt;
&lt;li&gt;Ébullition importante pour atteindre 6,2L avec la bonne&amp;nbsp;densité.&lt;/li&gt;
&lt;li&gt;Mash-out à 78°C durant&amp;nbsp;10mn&lt;/li&gt;
&lt;li&gt;Test à l&amp;#8217;iode: &lt;span class="caps"&gt;NOK&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;1er rincage. Densité premier mout:&amp;nbsp;1070&lt;/li&gt;
&lt;li&gt;15h40: Hop Stand (15g Citra / 15g&amp;nbsp;Mosaic)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="fermentation"&gt;Fermentation&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;18/12/2017 - Fermentation à&amp;nbsp;18°C&lt;/li&gt;
&lt;li&gt;21/12/2017 - Ajout de 13.5g de Wakatu et 7.5g de&amp;nbsp;Motueka&lt;/li&gt;
&lt;li&gt;30/12/2017 - Ajout de 13.5g de Wakatu et 7.5g de&amp;nbsp;Motueka&lt;/li&gt;
&lt;li&gt;30/12/2017 - Passage à&amp;nbsp;10°C.&lt;/li&gt;
&lt;li&gt;15/01/2018 - Cold&amp;nbsp;Crash&lt;/li&gt;
&lt;li&gt;21/01/2018 - Mise en bouteille. Resucrage à&amp;nbsp;7g/L.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="observations"&gt;Observations:&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Je change de technique, et mets l&amp;#8217;acide lactique directement dans&amp;nbsp;l&amp;#8217;eau.&lt;/li&gt;
&lt;li&gt;Je concasse moins fin mais reteste quand même l&amp;#8217;avoine. Aucun souci de filtration (mais l&amp;#8217;avoine n&amp;#8217;est pas&amp;nbsp;concassé).&lt;/li&gt;
&lt;li&gt;1g de CaCl2 ~= 2.25ml en solution à&amp;nbsp;33%.&lt;/li&gt;
&lt;li&gt;Les deux thermomètres n&amp;#8217;affichent pas la même température. Super&amp;nbsp;:(.&lt;/li&gt;
&lt;li&gt;Au final, jempâte dans une casserole pour pouvoir faire un&amp;nbsp;mash-out.&lt;/li&gt;
&lt;li&gt;Le pH oscille pas mal durant l&amp;#8217;empâtage. J&amp;#8217;ai mesuré des pH de 4.9 à certains moments, mais au final la dernière lecture est de 5.2, ce qui me semble&amp;nbsp;bon.&lt;/li&gt;
&lt;li&gt;Le système que j&amp;#8217;utilise (refroidisseur en cuivre) pour refroidir mon moût n&amp;#8217;est pas génial parce que ça mélange pas mal ce qu&amp;#8217;on veut voir se déposer au fond de la cuve. Refroidir directement dans l&amp;#8217;évier est vachement plus simple (c&amp;#8217;est pratique de faire du 6L pour çà&amp;nbsp;!)&lt;/li&gt;
&lt;li&gt;Le teste à l&amp;#8217;iode était positif: tout n&amp;#8217;était pas converti. Mais à 90mn de mash, je ne crois pas pouvoir faire grand chose de&amp;nbsp;plus.&lt;/li&gt;
&lt;li&gt;Idée en vrac, à voir à la dégustation, mais ajouter un peu de cara pourrait être&amp;nbsp;sympa.&lt;/li&gt;
&lt;li&gt;L&amp;#8217;irish moss à vraiment bien fonctionné. Je me demande si je ne devrais pas même laisser décanter un peu plus longtemps durant le whirlpool pour avoir un effet encore plus&amp;nbsp;impressionnant.&lt;/li&gt;
&lt;li&gt;Je trouve que l&amp;#8217;efficacité de cette brasserie est vraiment&amp;nbsp;pourrie.&lt;/li&gt;
&lt;li&gt;Un peu d&amp;#8217;eau est venue diluer le moût (&lt;span class="caps"&gt;DI&lt;/span&gt; = 1050 au lieu de 1060&amp;nbsp;souhaité)&lt;/li&gt;
&lt;li&gt;Au goût, le moût à vraiment un goût qui m&amp;#8217;assèche la gorge. Trop de modifications de l&amp;#8217;eau ? A voir si l&amp;#8217;effet persiste après&amp;nbsp;fermentation.&lt;/li&gt;
&lt;li&gt;A priori, d&amp;#8217;après un article de Scott Janish, empâter avec de l&amp;#8217;avoine cru ne fonctionne que si on empate haut. Ca à un impact sur l&amp;#8217;efficacité générale (2h pour conversion totale, c&amp;#8217;est peut-être pour ça que mon teste à l&amp;#8217;iode était&amp;nbsp;positif)&lt;/li&gt;
&lt;li&gt;Sur l&amp;#8217;avoine toujours, il faut &lt;strong&gt;dépasser 18%&lt;/strong&gt; pour avoir un côté moelleux. Certains mettent jusqu&amp;#8217;à 40%&amp;nbsp;!&lt;/li&gt;
&lt;/ul&gt;</content><category term="Notes"></category></entry><entry><title>Larrivée du trouble (ou comment faire des NEIPA ?)</title><link href="https://blog.notmyidea.org/larrivee-du-trouble-ou-comment-faire-des-neipa.html" rel="alternate"></link><published>2017-10-17T00:00:00+02:00</published><updated>2017-10-17T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2017-10-17:/larrivee-du-trouble-ou-comment-faire-des-neipa.html</id><summary type="html">&lt;p&gt;&lt;strong&gt;Ceci est une traduction d&amp;#8217;un article paru dans le magazine « Brew Your Own » en Octobre 2016, écrit par Dave&amp;nbsp;Green&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est la saison des élections aux états unis et la bataille entre les partis politiques semble être plus controversée que d&amp;#8217;habitude. Coincidemment, les buveurs de bières « Craft …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;strong&gt;Ceci est une traduction d&amp;#8217;un article paru dans le magazine « Brew Your Own » en Octobre 2016, écrit par Dave&amp;nbsp;Green&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est la saison des élections aux états unis et la bataille entre les partis politiques semble être plus controversée que d&amp;#8217;habitude. Coincidemment, les buveurs de bières « Craft» &lt;span class="caps"&gt;US&lt;/span&gt; semblent avoir leur propre bataille qui divise au moins autant: une &lt;span class="caps"&gt;IPA&lt;/span&gt; peut elle être aussi trouble qu&amp;#8217;une hefeweizen ? En provenance du coin Nord Est des États-Unis, l&amp;#8217;&lt;span class="caps"&gt;IPA&lt;/span&gt; trouble est en passe de devenir culte depuis quelques années. Mais la mode ne vient pas sans contrecoup. En fait, tout le monde y va de son opinion chez les brasseurs artisanaux. Pour ceux qui apprécient ce type d&amp;#8217;&lt;span class="caps"&gt;IPA&lt;/span&gt;, l&amp;#8217;apparence trouble signifie que les gorgées qui suivent seront extrèmenent riches en huiles de houblons; pour les autres, l&amp;#8217;apparence est un affront à des principes ancestraux. Que vous les appeliez des rince-bouches, des soupes boueuses, brillantes ou horribles, ne vous faites pas de fausse idée: ces ales troubles sont là pour&amp;nbsp;rester.&lt;/p&gt;
&lt;p&gt;Pour commencer cette histoire, revenons un peu au début des années 1990. La scène brassicole artisanale était en train de vivre son premier boom et les nouvelles brasseries faisaient leur apparition dans tous les coins des États-Unis. Menée par Sierra Nevada Brewing Company, les American Pale Ale et les American &lt;span class="caps"&gt;IPA&lt;/span&gt; étaient en train démerger en tant que styles populaires parmi les amateurs de bière, pour leurs caractéristiques riches en&amp;nbsp;houblon.&lt;/p&gt;
&lt;p&gt;Le niveau d&amp;#8217;amertume était un trait notoire, et avoir la bonne morsure d&amp;#8217;amertume était essentiel pour une &lt;span class="caps"&gt;IPA&lt;/span&gt;. L&amp;#8217;innovation a ensuite commencée à arriver sur la cote Ouest des États Unis à la fin des années 1990, et au début des années 2000, quand quelques doubles ou impériales &lt;span class="caps"&gt;IPA&lt;/span&gt; telles que Pliny the Elder de Russian River et Ruination &lt;span class="caps"&gt;IPA&lt;/span&gt; de Stone Brewing ont commencées à sortir des fermenteurs. Alors que celles ci contenaient énormement de « morsure du houblon», ce qui séparaient ces bières de beaucoup d&amp;#8217;autres versions du style était le fait que le nez et la saveur du houblon semblaient éclater de la&amp;nbsp;bière.&lt;/p&gt;
&lt;p&gt;Du point de vue du brasseur, les huiles essentielles de ces houblons étaient bien plus présents que les acides alpha. En utilisant un profil de malt neutre et une souche de levure neutre, ces bières laissaient la part belle aux houblons. Ces brasseurs utilisaient aussi des houblons souvent critiqués, forts en acides alpha, tels que Columbus, Centennial, Simcoe et Chinook à la fin de l&amp;#8217;ébullition ou en houblonnage à cru&amp;#8230; et en grosses quantitées. Cela peut sembler comme une pratique courante pour une &lt;span class="caps"&gt;IPA&lt;/span&gt; actuellement, mais il y a à peine 15 ans, la plupart de la littérature évitaient d&amp;#8217;utiliser ces variétés de houblon pour une utilisation autre que de l&amp;#8217;amérisant. Lévolution d&amp;#8217;une nouvelle American &lt;span class="caps"&gt;IPA&lt;/span&gt; était en train de prendre forme, sur la cote Ouest des étants unis, un style que les buveurs de bière ont nommé la « West Coast &lt;span class="caps"&gt;IPA&lt;/span&gt;».&lt;/p&gt;
&lt;h1 id="la-phase-de-demarrage"&gt;La phase de&amp;nbsp;démarrage&lt;/h1&gt;
&lt;p&gt;De retour sur la cote Est des États-Unis, dans un petit brewpub de Burlington à Vermont, deux brasseurs commencent innocemment à développer un type d&amp;#8217;American &lt;span class="caps"&gt;IPA&lt;/span&gt; avec des objectifs similaires que les brasseurs de la côte Ouest, mais en utilisant une stratégie différente. Crée en 1988 par Greg Noonan et Steve Polewacyk, le « Vermont Pub &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Brewery » deviendra le berceau d&amp;#8217;une nouvelle révolution autour des &lt;span class="caps"&gt;IPA&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Souvent citée comme étant les premiers brasseurs des Black &lt;span class="caps"&gt;IPA&lt;/span&gt; modernes ainsi que des New England &lt;span class="caps"&gt;IPA&lt;/span&gt;, offrant une variété de bières qui était extrèmement rare à cette époque, le « Vermont Pub &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Brewery » a des racines provenant de la connaissance du brassage et de la chimie de Greg Noonan, ainsi que son flair pour la&amp;nbsp;créativité.&lt;/p&gt;
&lt;p&gt;Se reposant sur la révolution de la bière mondiale (menée par Michael Jackson), Greg Noonan à exploré des styles de bières qui étaient en dehors des sentiers battus, même pour les brasseurs qui étaient déjà en avance sur leur&amp;nbsp;temps.&lt;/p&gt;
&lt;p&gt;Arrive John Kimmich, qui, en 1994 à déménagé dans le Vermont avec l&amp;#8217;objectif de brasser sous la tutelle de Greg Noonan. John à travaillé un temps à Pittsburg (en Pennsylvanie) dans un &lt;em&gt;home brewshop&lt;/em&gt; nommé Country Wines. Il a travaillé avec Alexis Hartung et sa grande bibliothèque sur le brassage maison et a eu son premier éclair de génie brassicole en lisant le livre de Greg Noonan « New Brewing Lager Beer ». Un an plus tard, il commence à travailler au « Vermont Pub &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Brewery ». En quelques mois, Greg commence à avoir confiance dans les capacités de son nouveau protégé. Avec chaque bière que John travaillait, le mentor était impressionné. Après douze mois, Greg donne la liberté à John dexpérimenter seul sur les&amp;nbsp;recettes.&lt;/p&gt;
&lt;p&gt;En 1997, John part du « Vermont Pub &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Brewery » et cofonde avec sa femme Jen un brewpub en 2003, le « Alchemist Pub &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; Brewery », situé 30mn à l&amp;#8217;est de Burlington à Waterbury dans le Vermont. A cette époque, Waterbury était un petit village dormant du New England, n&amp;#8217;attirant pas grand monde autre que quelques touristes. Il était par contre assez bien situé, à un croisement des chemins, juste à la sortie d&amp;#8217;une autoroute majeure, Waterbury est facilement accessible par à la fois les voyageurs en route pour les endroits touristiques et pour les locaux en allant / revenant du travail ou pour leurs excursions shopping. Grâce à ces quelques éléments, Waterbury s&amp;#8217;est donc révélé êre un excellent spot pour Jen et&amp;nbsp;John.&lt;/p&gt;
&lt;p&gt;Une caractéristique unique des bières houblonnées de Kimmich était que lorsque servies fraîches et non filtrées, elles étaient souvent assez troubles. Il trouvait que filtrer ses bières pouvait introduire de l&amp;#8217;oxygène non souhaité, enlevant de la bière beaucoup d&amp;#8217;aspects intéressants. Il utilisait une souche nommée Conan (&lt;span class="caps"&gt;VPB1188&lt;/span&gt;), une levure que son mentor a développé et que maintenant beaucoup connaissent. Avec les dérivés Anglais, la souche de levure Conan, les bonnes connaissances en brassage de John, ainsi que son habitude à expérimenter avec les houblons, on se retrouve avec une combinaison gagnante pour une révolution du brassage sur la côte&amp;nbsp;est.&lt;/p&gt;
&lt;h1 id="la-phase-de-croissance"&gt;La phase de&amp;nbsp;croissance&lt;/h1&gt;
&lt;p&gt;En 2007, alors que j&amp;#8217;allais au festival des brasseurs du Vermont, la queue pour accéder au stand de The Alchemist était d&amp;#8217;au moins 20 minutes pour un verre. Certaines personnes remplissaient leurs verres et retournaient faire la queue pour avoir la chance de goûter une autre de ces bières tant acclamées, en particulier pour Heady Topper. Pour la première fois brassée en 2003, Heady Toper retenait alors l&amp;#8217;attention, alors qu&amp;#8217;elle n&amp;#8217;était réellement qu&amp;#8217;une parmi les nombreuses &lt;span class="caps"&gt;IPA&lt;/span&gt; acclamées de chez The Alchemist. Des histoires circulaient comme quoi certaines personnes amenaient leurs pintes aux toilettes pour remplir des bouteilles, les capsuler et les ramener chez eux, puisque le bar ne proposait pas de remplir de Growlers à l&amp;#8217;époque, ni ne vendait de bouteilles. Je pensais alors que l&amp;#8217;engouement pour ces IPAs avait atteint une sorte de paroxysme. Je n&amp;#8217;avais pas encore compris que le feu était seulement en train de se&amp;nbsp;construire.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai récemment demandé à Shaun Hill, de la brasserie « Hill Farmsted » à Greensborrow Bend dans le Vermont, classée « meilleure brasserie du monde » 3 des 4 dernières années sur RateBeer.com, quel était sa relation avec John Kimmich à l&amp;#8217;époque. Shaun brassait à l&amp;#8217;époque 30mn plus loin, à Stowe, dans un brewpub appelé « The&amp;nbsp;Shed».&lt;/p&gt;
&lt;p&gt;« En 2005, je ne tarissais pas d&amp;#8217;éolges pour les bières de John me faisait le plaisir de critiquer mes bières » me dit Hill, « Cette relation à évoluée avec le temps, plus specialement lorsque j&amp;#8217;ai déménagé au Danemark et que cette conversation est devenue une conversation entre pairs, poussant l&amp;#8217;autre dans de nouvelles directions.». Avec le decès de Greg Noonan en 2009, l&amp;#8217;ancien protégé est devenu le nouveau mentor. Lors d&amp;#8217;un échange avec Joel Mahaffey de Foundation brewing Co, à Portland à propos des IPAs influentes pour cette nouvelle révolution, il dit de The Alchemist « Quiconque réponds à cette question et oublie Heady Topper, ils sont à coté de la plaque. Il s&amp;#8217;agit de la première &lt;span class="caps"&gt;IPA&lt;/span&gt; trouble, et à laissée une marque sur la communauté&amp;nbsp;brassicole.»&lt;/p&gt;
&lt;p&gt;Ce qui à emergé dans le coin nord-est des états unis est une explosion de nouvelles brasseries produisant des Pale Ale, des &lt;span class="caps"&gt;IPA&lt;/span&gt; et des double &lt;span class="caps"&gt;IPA&lt;/span&gt; basées sur la non filtration, l&amp;#8217;explosion de saveurs, et un corps doux, un style que Greg Noonan et John Kimmich ont découvert, et qu&amp;#8217;ensuite Shaun Hill à continué à affiner. John et Shaun ont séparemment pointé du doigt le fait qu&amp;#8217;ils brassaient juste des bières à leur convenance, et qu&amp;#8217;ils appréciaient le produit fini. Le terme « Juicy &lt;span class="caps"&gt;IPA&lt;/span&gt; » s&amp;#8217;est retrouvé être un nom pour ces bières, et la texture est souvent aussi importante que le nez et le gout de houblons. Et comme les &lt;span class="caps"&gt;IPA&lt;/span&gt; de la côte Ouest se sont répendues en 2008, les bières troubles, non filtrées, les New England &lt;span class="caps"&gt;IPA&lt;/span&gt; se répendent en&amp;nbsp;2016.&lt;/p&gt;
&lt;h1 id="cest-parti"&gt;C&amp;#8217;est parti&amp;nbsp;!&lt;/h1&gt;
&lt;p&gt;Il est maintenant temps de passer à la brasserie et de regarder comment faire pour brasser une &lt;span class="caps"&gt;IPA&lt;/span&gt;, New England style. Shaun Hill dit « soyez vous mêmeet faites une bière qui goute, sent et ressemble à ce que vous voulez qu&amp;#8217;elle soit », &lt;span class="caps"&gt;JC&lt;/span&gt; Tetreault de Trillum à Boston dans le Massachussetts ajoute « la réponse courte… tout est important ! Vous devez vous concentrer sur chaque aspect pour arriver à la bière que vous souhaitez. » L&amp;#8217;objectif est d&amp;#8217;arriver à une bière douce, un peu ronde, presque tropicale, à la texture ressemblant presque à un jus de fruit, laissant une morsure subtile sur la langue en fin de bouche graçe au&amp;nbsp;houblon.&lt;/p&gt;
&lt;h2 id="les-malts"&gt;Les&amp;nbsp;malts&lt;/h2&gt;
&lt;p&gt;Tout comme les IPAs de la cote Ouest, les &lt;span class="caps"&gt;NEIPA&lt;/span&gt; sont relativement simples en malts. Le style évite les malts qui ajoutent des saveurs de pain et de crackers. Les malts cristals et autres malts au dessus de 20°L (ndt: 52 &lt;span class="caps"&gt;EBC&lt;/span&gt;) sont d&amp;#8217;une manière générale évités. Ces bières peuvent bénéficier de certains ajouts de malts cristal clairs, mais gardez les à lœil. Des flocons d&amp;#8217;avoine, d&amp;#8217;orge, de blé et autres peuvent être ajoutés pour contribuer au corps, mais ne pensez pas qu&amp;#8217;ils soient une necessité. J&amp;#8217;ai pu jouer avec des pourcentages de 15% de flocons dans mes recettes, et les résultats étaient presque excessifs. &lt;span class="caps"&gt;JC&lt;/span&gt; Tetreault dit que « à propos des ajouts de céréales non maltés et de flocons… nous ne les utilisons pas dans toutes nos bières basées sur le houblon. En fait, une proportion plutôt petite de nos bières basées sur le houblon en font usage». Les ajouts de sucre tels que les dextrose, saccharose et sucres crus augmentent la densité du moût pour s&amp;#8217;assurer de la sécheresse dans les versions plus alcoolisées. Si vous choisissez d&amp;#8217;ajouter du sucre cru, encore une fois, faites en sorte que l&amp;#8217;ajout soit modeste; j&amp;#8217;ai trouvé que certaines saveurs de mélasses avaient tendance à arriver à partir de 10% du total du grain. L&amp;#8217;objectif est de garder les houblons comme caractéristique principale de la bière, tout en ayant une base de malt douce mais&amp;nbsp;présente.&lt;/p&gt;
&lt;h2 id="les-levures"&gt;Les&amp;nbsp;levures&lt;/h2&gt;
&lt;p&gt;Et c&amp;#8217;est ici que les &lt;span class="caps"&gt;NEIPA&lt;/span&gt; dérivent des &lt;span class="caps"&gt;IPA&lt;/span&gt; de la cote Ouest. L&amp;#8217;ajout des levures ainsi que le traitement à partir de la fermentation semble être la plus grosse différence entre les deux styles. D&amp;#8217;abord, regardons comment ces bières sont fermentées. La plupart des &lt;span class="caps"&gt;NEIPA&lt;/span&gt; ne sont pas clarifiées dans le fermenteur avec des agents clarifiant tels que de la gélatine, du Biofine® ou du Polyclar™, et elles ne sont pas filtrées ou centrifugées plus tard pour clarifier la bière. La pensée derrière ce process est qu&amp;#8217;enlever les levures de la bière à également pour effet d&amp;#8217;enlever les huiles essentielles ainsi que d&amp;#8217;autres nuances subtiles qui permettent à la bière d&amp;#8217;avoir son caractère propre. Cela permet de garder un niveau d&amp;#8217;huiles assez elevé dans le produit fini. Deuxièmement, les brasseurs de New England fermentent en utilisant une souche de levure d&amp;#8217;origine anglaise. Ashton Lewis, l&amp;#8217;éditeur technique de Brew Your Own précise « D&amp;#8217;après des études &lt;span class="caps"&gt;ADN&lt;/span&gt;, la levure California Ale (White Labs &lt;span class="caps"&gt;WLP001&lt;/span&gt;, Wyeast 1056 et les autres souches de Chico) viendraient plutôt de Cologne, en Allemagne ». Ces souches américaines ont été choisies pour leur capacité à produire des bières claires, transparentes et amères sans ajouter de caractère. Les souches de levure utilisées par les brasseurs de New England &lt;span class="caps"&gt;IPA&lt;/span&gt; sont utilisées pour ajouter des esters, qui aident à produire le profil juteux de ces bières. Les IPAs brassées avec ces souches ne semblent pas être aussi transparentes que les souches Americaines lorsqu&amp;#8217;elles sont exposées à des niveaux d&amp;#8217;huiles elevés. Ceci vient en désaccord avec la plupart de la littérature sur les souches Anglaises. Si vous lisez la description de la plupart des souches de levures utilisées pour produire ces &lt;span class="caps"&gt;IPA&lt;/span&gt; troubles, la plupart sont considéeées « hautement floculantes », alors que la souche Chico, souvent utilisée pour les &lt;span class="caps"&gt;IPA&lt;/span&gt; de la cote Ouest annonce plutôt une floculation moyenne à faible. Pourquoi alors ces bières ne se clarifient pas lorsqu&amp;#8217;elles sont sujettes à des hautes doses de houblon en fin d&amp;#8217;ébullition ou en houblonnage à cru ? Cela reste encore une zone floue, j&amp;#8217;ai donc demandé à quelques personnes dans l&amp;#8217;industrie à propos de ce flou. Certains brasseurs pointent du doigt le fait que ces souches de levures floculent trop rapidement. Cela ne laisse pas le temps aux polyphénols de s&amp;#8217;attacher aux levures, laissant ces composés ainsi que d&amp;#8217;autres composés dérivés du houblon dans la solution plutôt que des les en enlever. Ashton Lewis nous rappelle aussi que le trouble trouvé dans les hefeweizen est principalement causé par les interactions entre les protéines et les polyphénols, et non pas par les&amp;nbsp;levures.&lt;/p&gt;
&lt;p&gt;Donc, quelles sont les souches de levure que vous devriez utiliser ? Le choix est en fait assez large, pour ceux qui souhaitent brasser ces types de American &lt;span class="caps"&gt;IPA&lt;/span&gt;, referez vous donc aux suggestions données dans les recettes jointes pour quelques&amp;nbsp;idées.&lt;/p&gt;
&lt;h2 id="leau"&gt;L&amp;#8217;eau&lt;/h2&gt;
&lt;p&gt;L&amp;#8217;eau joue un rôle prépondérant dans le développement des New England &lt;span class="caps"&gt;IPA&lt;/span&gt;. Concentrez vous sur les niveaux de dureté de votre eau. Si vous avez une eau assez douce, alors vous avez un bon point de départ. Si vous avez une eau plutôt dure, obtenez un relevé d&amp;#8217;eau (ndt: allez faire un tour sur le site « Eau du bassin Rennais » !). Si vous n&amp;#8217;avez pas ces relevés d&amp;#8217;eau, vous pouvez aussi faire analyser votre eau par des laboratoires, ou vous pouvez le faire vous même grâce à des kits de test de l&amp;#8217;eau. Peu importe ce que vous choisissez, utiliser de l&amp;#8217;eau distillée ou osmosée peut vous fournir une bonne base pour construire le profil d&amp;#8217;eau que vous souhaitez obtenir. Essayez de garder votre niveau de bicarbonate en dessous de 50 &lt;span class="caps"&gt;PPM&lt;/span&gt; pour votre eau dempâtage et votre eau de&amp;nbsp;rinçage.&lt;/p&gt;
&lt;p&gt;La prochaine chose sur laquelle se concentrer est vos sulfates et vos chlorures. Ceci est parfois controversé, mais encore une fois peut potentiellement être un facteur différenciant entre les &lt;span class="caps"&gt;IPA&lt;/span&gt; de la côte Est et les &lt;span class="caps"&gt;IPA&lt;/span&gt; de la côte Ouest. Quand j&amp;#8217;ai commencé à jouer avec la composition de mon eau, j&amp;#8217;ai traité l&amp;#8217;eau de mes &lt;span class="caps"&gt;IPA&lt;/span&gt; pour atteindre un rapport 2:1 de sulfates / chlorures, ce qui s&amp;#8217;est traduit par 100:50 &lt;span class="caps"&gt;PPM&lt;/span&gt;. J&amp;#8217;ai produit plusieurs bières qui pouvaient rivaliser (selon moi) avec certaines que mes idoles produisaient. Mais, dans l&amp;#8217;esprit du brassage amateur, j&amp;#8217;ai continué à expérimenter. J&amp;#8217;ai changé l&amp;#8217;équilibre de sulfate / chlorures à 200:&lt;span class="caps"&gt;50PPM&lt;/span&gt; sans que je perçoive un changement. J&amp;#8217;ai ensuite essayé 100:100 et trouvé que ça me plaisait un peu plus. Mes trouvailles ne sont pas la seule preuve anecdotique que booster le niveau de chlorures peut bénéficier à ce style de bières. Si vous cherchez à ajuster vos sulfates et for chlorures pour votre eau d&amp;#8217;empâtage et de rincage, je vous encourage à jeter un oeil à l&amp;#8217;article de Scott Janish du 7 Mars 2016 intitulé « Mouthfeel softness ». Scott y parle des effets négatifs d&amp;#8217;un taux de sulfates elevé et des aspects positifs d&amp;#8217;un niveau de chlorures&amp;nbsp;elevé.&lt;/p&gt;
&lt;h2 id="les-houblons"&gt;Les&amp;nbsp;houblons&lt;/h2&gt;
&lt;p&gt;Généralement, l&amp;#8217;amertume des houblons dans ce type d&amp;#8217;&lt;span class="caps"&gt;IPA&lt;/span&gt; joue un rôle support, qui vient équilibrer le corps et la douceur des malts. Premièrement, gardez l&amp;#8217;ajout de houblons amérisants modéré à faible. Vous pouvez expérimenter avec l&amp;#8217;ajout de houblons amérisants mais je n&amp;#8217;ai jamais eu l&amp;#8217;occasion de trouver qu&amp;#8217;une utilisation importante de houblons amérisants menait à une meilleure New-England &lt;span class="caps"&gt;IPA&lt;/span&gt;. Utilisez des houblons hauts en alpha tels que Magnum, Warrior™ ou Bravo si vous choisissez d&amp;#8217;utiliser des houblons en cône ou en pellets, et je recommande de garder les ajouts d&amp;#8217;amérisants assez faibles. D&amp;#8217;habitude, j&amp;#8217;essaye houblonner pour un rapport de 1:3 &lt;span class="caps"&gt;BU&lt;/span&gt;:&lt;span class="caps"&gt;GU&lt;/span&gt; (amertume sur densité). Cela signifie que quand je vise une densité cible de 1.066, l&amp;#8217;ajout de houblons à 60mn est de 22 IBUs. Cela est fait pour éviter d&amp;#8217;ajouter une dureté qui peut provenir d&amp;#8217;une ébullition d&amp;#8217;une quantité plus elevée de houblons. L&amp;#8217;autre option est d&amp;#8217;utiliser des extraits de houblon, qui peuvent contribuer les acides alpha nécessaires pour obtenir la bonne amertume, sans ajouter de polyphénols, que certains brasseurs pensent être à l&amp;#8217;origine d&amp;#8217;une certaine&amp;nbsp;dureté.&lt;/p&gt;
&lt;p&gt;Les ajouts de houblons en fin d&amp;#8217;ébullition jouent un rôle beaucoup plus important pour la production de New-England &lt;span class="caps"&gt;IPA&lt;/span&gt;. Des apports copieux à la fin de l&amp;#8217;ébullition ou au &lt;em&gt;flame-out&lt;/em&gt; sont utiles pour tout type d&amp;#8217;&lt;span class="caps"&gt;IPA&lt;/span&gt; hautement aromatique. Cela ajoutera des IBUs pour compléter votre apport en houblons amérisants et commencera à créer votre profil d&amp;#8217;huiles. Je trouve que des variétés plus mordantes / piquantes comme le Simcoe®, Columbus, Chinook et Apollo fonctionnent bien à cette étape. Chaque brasseur semble trouver sa technique ici, qu&amp;#8217;il s&amp;#8217;agisse de faire plusieurs ajouts à 20mn ou moins puis de baisser à une température précise pour faire un &lt;em&gt;hop stand&lt;/em&gt;, ou bien de simplement ajouter tous les houblons au &lt;em&gt;flame-out&lt;/em&gt; et de les laisser durant 20 minutes ou plus. Il ne semble pas qu&amp;#8217;il y ait de mauvaise manière de faire, juste plusieurs manières d&amp;#8217;extraire les huiles essentielles des houblons à une température pas trop&amp;nbsp;haute.&lt;/p&gt;
&lt;p&gt;Le houblonnage à cru est votre prochain objectif. J&amp;#8217;aimerais me concentrer sur les techniques plutôt que sur les quantités ou variétés puisque la technique semble être le plus important ici. Ceci dit, une chose est sure, ne soyez pas trop timide avec les ajouts durant le houblonnage à cru. 7.5g/L est certainement un bon point de départ. Vous pouvez ajuster en fonction de vos résultats. Les brasseurs Scott Janish et Michael Tonsmeir ajoutent que mettre ces bières en fûts à quelques avantages. Houblonner dans le fût, purger au &lt;span class="caps"&gt;CO2&lt;/span&gt; et le fait de ne pas avoir de période prolongée de carbonatation sont déjà deux des avantages des fûts sur les&amp;nbsp;bouteilles.&lt;/p&gt;
&lt;p&gt;Alors, quand est le meilleur moment pour faire son houblonnage à cru ? Biern que ce ne soit pas une necessité, le fait de faire son houblonnage à cru en deux fois semble être un bon choix pour ce genre d&amp;#8217;&lt;span class="caps"&gt;IPA&lt;/span&gt;. Prenez ce que vous pensiez ajouter lors du houblonnage à cru et séparez le en deux. Le premier ajout se fera durant la phase active de fermentation alors que le second se fera quand la fermentation se sera calmée et que les levures auront flocculées. Le premier ajout peut se faire à différents stades de la fermentation primaire; certains brasseurs les ajoutent au même moment qu&amp;#8217;ils ensemencent, certains autres lorsque le krausen est haut, alors que la plupart l&amp;#8217;ajoutent vers la fin de la fermentation. Je préfère faire le premier ajout une fois que le krausen est redescendu. Les hétérosides et les bio-transformations sont des éléments importants dans cette discussion à propos de comment la levure intéragit avec les huiles des houblons et les autres dérivés du houblon. Je trouve que les houblons ajoutés à la fin de l&amp;#8217;ébullition vont apporter des caractéristiques similaires que les huiles de houblons ajoutés durant le ébut de la fermentation. Pour ce qui est du second ajout, l&amp;#8217;objectif est d&amp;#8217;attendre que la fermentation se soit calmée. Le timing n&amp;#8217;est pas vraiment un facteur important ici, mais l&amp;#8217;introduction d&amp;#8217;oxygène est un point crutial. Prenez bien soin d&amp;#8217;introduire le moins possible d&amp;#8217;oxygène dans la bière à ce moment&amp;nbsp;çi.&lt;/p&gt;
&lt;p&gt;Dernièrement, quelque chose qui est nouveau pour moi: le houblonnage à cru sous pression. Cela vous demandera de l&amp;#8217;équipement supplémentaire, principalement quelque chose apellée une « Spunding Valve». Il s&amp;#8217;agit d&amp;#8217;une valve qui permet de garder une certaine pression dans le fermenteur. Si la pression dépasse la valeur cible, alors la valve s&amp;#8217;ouvre pour faire redescendre le fermenteur à la valeur souhaité. Mais, en quoi cela pourrait-être interéssant pour nous ? Parce que nous cherchons à garder un maximum de houblons aromatiques, en évitant d&amp;#8217;en perdre. Les brasseurs amateurs ainsi que les brasseurs pros se sont penchés sur la question des spuinding valve de plus en plus dernièrement pour la fermentation primaire et pour le houblonnage à&amp;nbsp;cru.&lt;/p&gt;
&lt;p&gt;La révolution de la côte Est bat son plein et si vous ne pouvez pas venir sur place pour goûter un extrait, vous pouvez maintenant au moins commencer à brasser des bières avec un caractère similaire. Et si vous n&amp;#8217;êtes pas un fan de ce type de bière, faites bien attention à laisser ceux qui apprécient déguster en&amp;nbsp;paix.&lt;/p&gt;
&lt;p&gt;Remerciements spéciaux à tous les brasseurs qui ont contribué à la production de cet article: John Kimmich de The Alchemist, Shaun Hill de Hill Farmstead, Joel Mahaffrey de Foundation Brewing, Matt Nadeau de Rock Art Brewery et &lt;span class="caps"&gt;JC&lt;/span&gt; Tetrealt de Trillium. Allez leur rendre visite&amp;nbsp;!&lt;/p&gt;</content><category term="Notes"></category></entry><entry><title>Un club des brasseurs amateurs Rennais</title><link href="https://blog.notmyidea.org/un-club-des-brasseurs-amateurs-rennais.html" rel="alternate"></link><published>2017-10-06T00:00:00+02:00</published><updated>2017-10-06T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2017-10-06:/un-club-des-brasseurs-amateurs-rennais.html</id><summary type="html">&lt;p&gt;En Mars dernier, suite à quelques discussions entre brasseurs amateurs, on à décidé de monter &lt;a href="https://framalistes.org/sympa/subscribe/brassam-rennes"&gt;une liste de diffusion&lt;/a&gt; pour faciliter les échanges autour du brassage amateur sur Rennes et ses&amp;nbsp;alentours.&lt;/p&gt;
&lt;p&gt;Un peu plus tard, &lt;a href="https://www.facebook.com/groups/899071153568179/"&gt;un groupe Facebook&lt;/a&gt; est venu s&amp;#8217;ajouter, et c&amp;#8217;est vrai qu&amp;#8217;on sent …&lt;/p&gt;</summary><content type="html">&lt;p&gt;En Mars dernier, suite à quelques discussions entre brasseurs amateurs, on à décidé de monter &lt;a href="https://framalistes.org/sympa/subscribe/brassam-rennes"&gt;une liste de diffusion&lt;/a&gt; pour faciliter les échanges autour du brassage amateur sur Rennes et ses&amp;nbsp;alentours.&lt;/p&gt;
&lt;p&gt;Un peu plus tard, &lt;a href="https://www.facebook.com/groups/899071153568179/"&gt;un groupe Facebook&lt;/a&gt; est venu s&amp;#8217;ajouter, et c&amp;#8217;est vrai qu&amp;#8217;on sent une dynamique naissante autour de la brasserie artisanale dans le&amp;nbsp;coin.&lt;/p&gt;
&lt;p&gt;En six mois, on est maintenant une grosse trentaine de personnes à être inscrits sur les listes et à se retrouver de temps à&amp;nbsp;autres.&lt;/p&gt;
&lt;p&gt;On en profite pour s&amp;#8217;échanger des bons plans, déguster nos créations, (essayer de) faire des commandes groupées de malt, et pour se rencontrer pour papoter entre&amp;nbsp;passionnés.&lt;/p&gt;
&lt;p&gt;On a pas mal d&amp;#8217;idées de trucs sympa a faire, entre&amp;nbsp;autres:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;brasser une fois en gros puis se séparer le batch en plein de petits fermenteurs pour essayer différentes levures, différents houblons en &lt;em&gt;dry hop&lt;/em&gt;,&amp;nbsp;etc.&lt;/li&gt;
&lt;li&gt;A la dernière rencontre, on s&amp;#8217;est mis d&amp;#8217;accord sur un style de bière pour se lancer un petit défi: tous brasser &lt;a href="https://blog.notmyidea.org/larrivee-du-trouble-ou-comment-faire-des-neipa.html"&gt;une &lt;span class="caps"&gt;NEIPA&lt;/span&gt;&lt;/a&gt; pour ensuite comparer nos&amp;nbsp;résultats.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bref, c&amp;#8217;est plutôt chouette ! Je me suis rendu compte qu&amp;#8217;on avait quasiment aucune existence en dehors des réseaux sociaux, alors je me permet de publier ce petit bout d&amp;#8217;article avec quelques&amp;nbsp;liens…&lt;/p&gt;
&lt;p&gt;Si tu es dans le coin et que tu souhaite nous rencontrer, n&amp;#8217;hésite pas à rejoindre &lt;a href="https://www.facebook.com/groups/899071153568179/"&gt;notre groupe de discussion Facebook&lt;/a&gt; et notre &lt;a href="https://framalistes.org/sympa/subscribe/brassam-rennes"&gt;liste de diffusion mail&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A bientôt&amp;nbsp;;)&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Brasserie du Vieux Singe — Installation en cours.</title><link href="https://blog.notmyidea.org/brasserie-du-vieux-singe-installation-en-cours.html" rel="alternate"></link><published>2017-06-26T00:00:00+02:00</published><updated>2017-06-26T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2017-06-26:/brasserie-du-vieux-singe-installation-en-cours.html</id><summary type="html">&lt;p&gt;Ça fait maintenant quelques mois que j&amp;#8217;ai décidé de &lt;a href="https://www.vieuxsinge.com"&gt;changer de métier&lt;/a&gt;. Choix à la fois difficile et excitant. Une rupture qui laisse place à quelques étoiles dans les yeux. Enfin, je retrouve l&amp;#8217;envie de créer, et je renoue avec mes rêves, ceux-la mêmes que je croyaient trop …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Ça fait maintenant quelques mois que j&amp;#8217;ai décidé de &lt;a href="https://www.vieuxsinge.com"&gt;changer de métier&lt;/a&gt;. Choix à la fois difficile et excitant. Une rupture qui laisse place à quelques étoiles dans les yeux. Enfin, je retrouve l&amp;#8217;envie de créer, et je renoue avec mes rêves, ceux-la mêmes que je croyaient trop fous pour être à portée de&amp;nbsp;main.&lt;/p&gt;
&lt;p&gt;La chose la plus frappante, c&amp;#8217;est la vitesse à laquelle passent les journées: j&amp;#8217;ai &lt;em&gt;vraiment&lt;/em&gt; l&amp;#8217;impression d&amp;#8217;avoir quitté Mozilla hier. Si les collègues me
manquent, je ne ferais machine arrière pour rien au monde: je trouve finalement ce sens qui me manquait&amp;nbsp;cruellement.&lt;/p&gt;
&lt;p&gt;Après quelques hésitations au départ, j&amp;#8217;ai décidé de mettre de côté mes activités liées à l&amp;#8217;informatique: difficile à assumer quand on croise les copin.e.s avec qui on avait l&amp;#8217;habitude de discuter énormement de ces sujets, mais ça permet de laisser plus de place pour l&amp;#8217;humain. Plus de place pour les «Au fait, comment ça va toi ?» quand j&amp;#8217;ai l&amp;#8217;occasion de les recroiser, ce qui n&amp;#8217;est pas plus désagréable&amp;nbsp;:)&lt;/p&gt;
&lt;p&gt;Les journées sont donc organisées autour de la brasserie: beaucoup plus de planification que ce que j&amp;#8217;imaginais au départ. Peut-être que c&amp;#8217;est aussi du au fait que nous soyons tous les deux des ex-informaticiens un peu perfectionnistes sur les bords. On se voit très souvent pour avancer sur des sujets de fond tout comme sur du pratico-pratique. Pour vous donner un ordre d&amp;#8217;idée des questionnements: Quelle taille d&amp;#8217;entreprise ? Quelles valeurs communes ? Quelles bières ? Quelle image donner ? Quelle place donner au confort ? Comment éviter la compétitivité ? Comment réussir à impacter les producteurs (houblon / malt) de manière positive ? Quels salaires se donner&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Un peu de production quand même (pour les amis) mais on se garde la grosse partie pour le&amp;nbsp;lancement.&lt;/p&gt;
&lt;h2 id="apprentissage"&gt;Apprentissage&lt;/h2&gt;
&lt;p&gt;Je profite de ces quelques mois pour apprendre: autour de la fabrication et de la dégustation de bière bien sûr (encore un milieu en constante évolution !), mais pas que. J&amp;#8217;ai maintenant quelques bases de gestion d&amp;#8217;entreprise, en comptabilité, en biologie et en chimie. J&amp;#8217;ai bien dit quelques &lt;em&gt;bases&lt;/em&gt;, mais qu&amp;#8217;est-ce que c&amp;#8217;est agréable&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est assez agréable de se remettre dans une posture d&amp;#8217;apprenant, et d&amp;#8217;avoir le temps pour cet&amp;nbsp;apprentissage.&lt;/p&gt;
&lt;h2 id="questionner-la-posture-de-chef-dentreprise-et-son-rapport-au-temps"&gt;Questionner la posture de «Chef d&amp;#8217;entreprise» et son rapport au&amp;nbsp;temps&lt;/h2&gt;
&lt;p&gt;Décider de créer sa boîte, c&amp;#8217;est aussi se poser la question de comment organiser son temps: combien de temps travailler ? Quel temps donner aux loisirs&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Je trouve rassurant de voir ces interrogations abordées avant-même le démarrage de l&amp;#8217;entreprise. La plupart des personnes qui nous suivent et nous guident partent du postulat qu&amp;#8217;il faudra bosser énormement, là ou nous essayons de trouver un modèle qui soit viable dans le temps, notre souhait est de bosser à 80% (4 jours par&amp;nbsp;semaine).&lt;/p&gt;
&lt;p&gt;Certes, il faut travailler pour que ça tourne, mais il faut aussi s&amp;#8217;accorder des temps de respiration pour être d&amp;#8217;autant plus efficace quand on bosse. C&amp;#8217;est d&amp;#8217;autant plus intéressant de prévoir ces aspects lors de la phase de &lt;em&gt;design&lt;/em&gt; de l&amp;#8217;activité: on organise le temps autrement ! Ceux qui me lisent de temps à autre savent que c&amp;#8217;est une constante de mes réflexions, on verra si ça fonctionne dans les&amp;nbsp;faits.&lt;/p&gt;
&lt;h2 id="les-projets-collectifs"&gt;Les projets&amp;nbsp;collectifs&lt;/h2&gt;
&lt;p&gt;Un autre point important est la place que le &lt;em&gt;collectif&lt;/em&gt; prends dans cette nouvelle expérience. Au départ, quand j&amp;#8217;imaginais le projet sur le court-terme, je mettais la composante collective au second plan dans l&amp;#8217;immédiat (au delà des intéractions avec Fred, mon associé). L&amp;#8217;occasion de travailler à la construction d&amp;#8217;un espace collectif s&amp;#8217;est présentée, et on y travaille&amp;nbsp;actuellement.&lt;/p&gt;
&lt;p&gt;C&amp;#8217;est à la fois riche (en partage de points de vue, en entre-aide) et à la fois difficile (beaucoup d&amp;#8217;heures de réunions, il faut apprendre à communiquer de manière efficace, il faut parfois faire face à des conflits). Dans l&amp;#8217;ensemble, je ne regrette pas ce choix même si il est important de ne pas perdre de vue les objectifs de la brasserie dans&amp;nbsp;l&amp;#8217;histoire.&lt;/p&gt;
&lt;p&gt;Et puis la collaboration ne s&amp;#8217;arrête pas qu&amp;#8217;au collectif d&amp;#8217;activité: le milieu brassicole est en mutation, et les valeurs de partage font bel et bien partie du lot de changements. Les rencontre avec les brasseurs du coin de Rennes le montrent bien: l&amp;#8217;esprit est plus à l&amp;#8217;entraide qu&amp;#8217;à la concurrence, au vu de la demande qui est toujours croissante. Tant mieux, on a autre chose à faire qu&amp;#8217;à se tirer dans les pâtes&amp;nbsp;;)&lt;/p&gt;
&lt;h2 id="besoin-de-concret"&gt;Besoin de&amp;nbsp;concret&lt;/h2&gt;
&lt;p&gt;Après cette phase assez énorme de réfléxion, de questionnement, de tricotage, de détricotage, de retricotage, j&amp;#8217;ai bien envie de passer à l&amp;#8217;action; et ça tombe bien, c&amp;#8217;est ce qui est à l&amp;#8217;horizon. L&amp;#8217;idée est d&amp;#8217;ouvrir la brasserie à la fin de cette année pour commencer la commercialisation en Janvier 2018. Ça fait un peu peur de voir l&amp;#8217;échéance arriver, mais c&amp;#8217;est aussi excitant que&amp;nbsp;vertigineux…&lt;/p&gt;
&lt;p&gt;Faire ensemble. Imaginer les choses en petit un peu partout. Collaborer plutôt que se tirer dans les pattes. Renverser la vapeur. Trouver des alliés. Faire levier. Inscrire ses projets dans le temps. C&amp;#8217;est peut-être un peu ça, grandir&amp;nbsp;?&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Comment est-ce que vous générez vos formulaires ?</title><link href="https://blog.notmyidea.org/comment-est-ce-que-vous-generez-vos-formulaires.html" rel="alternate"></link><published>2016-05-31T00:00:00+02:00</published><updated>2016-05-31T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2016-05-31:/comment-est-ce-que-vous-generez-vos-formulaires.html</id><summary type="html">&lt;p&gt;&lt;span class="caps"&gt;TL&lt;/span&gt;; &lt;span class="caps"&gt;DR&lt;/span&gt;: Je viens à peine de &lt;em&gt;releaser&lt;/em&gt; la première version d&amp;#8217;un service de génération de formulaires.
Allez jeter un coup d&amp;#8217;œil sur &lt;a href="https://www.fourmilieres.net"&gt;https://www.fourmilieres.net&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;En février 2012, je parlais ici &lt;a href="https://blog.notmyidea.org/carto-forms.html"&gt;d&amp;#8217;un service de génération de formulaires&lt;/a&gt;.
Depuis, pas mal d&amp;#8217;eau à coulé sous …&lt;/em&gt;&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;span class="caps"&gt;TL&lt;/span&gt;; &lt;span class="caps"&gt;DR&lt;/span&gt;: Je viens à peine de &lt;em&gt;releaser&lt;/em&gt; la première version d&amp;#8217;un service de génération de formulaires.
Allez jeter un coup d&amp;#8217;œil sur &lt;a href="https://www.fourmilieres.net"&gt;https://www.fourmilieres.net&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;En février 2012, je parlais ici &lt;a href="https://blog.notmyidea.org/carto-forms.html"&gt;d&amp;#8217;un service de génération de formulaires&lt;/a&gt;.
Depuis, pas mal d&amp;#8217;eau à coulé sous les ponts, on est passé par pas mal d&amp;#8217;étapes pour
finalement arriver à une première version de ce service de génération de
formulaires (à la &lt;/em&gt;google forms&lt;em&gt;).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;En tant qu&amp;#8217;organisateurs d&amp;#8217;évènements (petits et gros), je me retrouve souvent
dans une situation ou je dois créer des formulaires pour recueillir des
informations. Actuellement, la meilleure solution disponible est &lt;em&gt;Google Forms&lt;/em&gt;,
mais celle ci à plusieurs problèmes, à commencer par le fait que le code n&amp;#8217;est
pas libre et que les données sont stockées chez&amp;nbsp;Google.&lt;/p&gt;
&lt;p&gt;La plupart du temps, le besoin est assez simple: je veux spécifier quelques
questions, et donner un lien à mes amis pour qu&amp;#8217;ils puissent y répondre.
Je reviens ensuite plus tard pour voir la liste des réponses&amp;nbsp;apportées.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capture de l'interface de création du formulaire" src="https://blog.notmyidea.org/images/formbuilder/formbuilder-build.png"&gt;&lt;/p&gt;
&lt;h2 id="fonctionnalites"&gt;Fonctionnalités&lt;/h2&gt;
&lt;p&gt;Il existe pas mal de solutions techniques qui essayent de répondre à la même
problématique, mais la plupart d&amp;#8217;entre elles sont assez souvent compliquées,
nécessitent de se créer un compte, et/ou ne vous laisse pas la main libre sur
les données générées, voire le code est assez difficile à faire évoluer ou à&amp;nbsp;déployer.&lt;/p&gt;
&lt;p&gt;Je voulais donc quelque chose de simple à utiliser &lt;em&gt;et&lt;/em&gt; pour les créateurs de
formulaires &lt;em&gt;et&lt;/em&gt; pour les utilisateurs finaux. Pas de chichis, juste quelques
vues, et des URLs à sauvegarder une fois l&amp;#8217;opération&amp;nbsp;terminée.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capture de l'écran avec les URLs générées" src="https://blog.notmyidea.org/images/formbuilder/formbuilder-created.png"&gt;
&lt;img alt="Capture d'écran d'un exemple de formulaire" src="https://blog.notmyidea.org/images/formbuilder/formbuilder-form.png"&gt;&lt;/p&gt;
&lt;h3 id="pas-de-compte"&gt;Pas de&amp;nbsp;compte&lt;/h3&gt;
&lt;p&gt;Vous n&amp;#8217;avez pas besoin d&amp;#8217;avoir un compte sur le site pour commencer à l&amp;#8217;utiliser.
Vous créez simplement un nouveau formulaire puis envoyez le lien à vos amis pour
qu&amp;#8217;eux puissent à leur tour le&amp;nbsp;remplir.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capture de la page d'accueil, ou aucun compte n'est requis" src="https://blog.notmyidea.org/images/formbuilder/formbuilder-welcome.png"&gt;&lt;/p&gt;
&lt;h3 id="gardez-la-main-sur-vos-donnees"&gt;Gardez la main sur vos&amp;nbsp;données&lt;/h3&gt;
&lt;p&gt;Une fois que vous avez récupéré les réponses à vos questions, vous pouvez
récupérer les données sur votre machines dans un fichier &lt;code&gt;.csv&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Capture de la page de resultats, il est possible de télécharger en CSV." src="https://blog.notmyidea.org/images/formbuilder/formbuilder-results.png"&gt;&lt;/p&gt;
&lt;h3 id="api"&gt;&lt;span class="caps"&gt;API&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;L&amp;#8217;ensemble des données sont en fait stockées dans &lt;a href="https://kinto.readthedocs.org"&gt;Kinto&lt;/a&gt;
qui est interrogeable très facilement en &lt;span class="caps"&gt;HTTP&lt;/span&gt;. Ce qui fait qu&amp;#8217;il est très facile de
réutiliser les formulaires que vous avez construits (ou leurs réponses) depuis
d&amp;#8217;autres&amp;nbsp;outils.&lt;/p&gt;
&lt;h3 id="auto-hebergeable"&gt;Auto-hébergeable&lt;/h3&gt;
&lt;p&gt;Un des objectifs de ce projet est de vous redonner la main sur vos données.
Bien sur, vous pouvez utiliser l&amp;#8217;instance qui est mise à votre disposition sur
&lt;a href="https://www.fourmilieres.net"&gt;wwww.fourmilieres.net&lt;/a&gt;, mais vous pouvez
également l&amp;#8217;héberger vous même très
simplement, et vous êtes d&amp;#8217;ailleurs fortement encouragés à le faire ! Notre
objectif n&amp;#8217;est pas de stocker l&amp;#8217;ensemble des formulaires du monde, mais de
(re)donner le contrôle aux utilisateurs&amp;nbsp;!&lt;/p&gt;
&lt;h2 id="on-commence-petit"&gt;On commence&amp;nbsp;petit…&lt;/h2&gt;
&lt;p&gt;Cette &lt;em&gt;release&lt;/em&gt; n&amp;#8217;est (bien sur) pas parfaite, et il reste encore pas mal de
travail sur cet outil, mais je pense qu&amp;#8217;il s&amp;#8217;agit d&amp;#8217;une base de travail
intéressante pour un futur où Google n&amp;#8217;a pas la main sur toutes nos&amp;nbsp;données.&lt;/p&gt;
&lt;p&gt;La liste des champs supportés est pour l&amp;#8217;instant assez faible (Texte court,
Texte long, Oui/Non, choix dans une liste) mais elle à vocation à s&amp;#8217;étendre, en
fonction des besoins de&amp;nbsp;chacun.&lt;/p&gt;
&lt;p&gt;J&amp;#8217;ai d&amp;#8217;ailleurs créé &lt;a href="https://www.fourmilieres.net/#/form/cfd878264cec4ed2"&gt;un formulaire pour que vous puissiez me faire part de vos
retours&lt;/a&gt;, n&amp;#8217;hésitez pas&amp;nbsp;!&lt;/p&gt;
&lt;h2 id="et-euh-comment-ca-marche"&gt;Et, euh, comment ça marche&amp;nbsp;?&lt;/h2&gt;
&lt;p&gt;Le &lt;em&gt;formbuilder&lt;/em&gt;, comme j&amp;#8217;aime l&amp;#8217;appeler se compose en fin de compte de deux
parties&amp;nbsp;distinctes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kinto.readthedocs.org"&gt;Kinto&lt;/a&gt;, un service qui stocke
des données coté serveur et qui les expose via des &lt;strong&gt;APIs &lt;span class="caps"&gt;HTTP&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kinto/formbuilder"&gt;Le formbuilder&lt;/a&gt;, une application
JavaScript qui ne tourne que coté client (dans votre navigateur) qui permet
de construire les formulaires et d&amp;#8217;envoyer les données sur les &lt;em&gt;APIs&lt;/em&gt; coté&amp;nbsp;serveur.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Au niveau de la &lt;em&gt;stack&lt;/em&gt; technique, le &lt;strong&gt;formbuilder&lt;/strong&gt; est codé en ReactJS. Un
des points techniques intéressants du projet est qu&amp;#8217;il génère en fin de compte du
&lt;a href="http://jsonschema.net/"&gt;&lt;span class="caps"&gt;JSON&lt;/span&gt; Schema&lt;/a&gt;, un format de validation de données &lt;em&gt;&lt;span class="caps"&gt;JSON&lt;/span&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Donc, reprenons! Vous arrivez sur la page d&amp;#8217;accueil puis cliquez sur
&amp;#8220;Create a new form&amp;#8221;, puis vous vous retrouvez face à une interface ou vous pouvez
ajouter des champs de formulaire. Une fois ce travail effectué, vous appuyez sur
&amp;#8220;Create the&amp;nbsp;form&amp;#8221;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le &lt;span class="caps"&gt;JSON&lt;/span&gt; Schema est alors envoyé au serveur Kinto, qui l&amp;#8217;utilisera pour valider
les données qu&amp;#8217;il recevra par la&amp;nbsp;suite.&lt;/li&gt;
&lt;li&gt;Ce &lt;span class="caps"&gt;JSON&lt;/span&gt; Schema sera aussi utilisé lors de l&amp;#8217;affichage du formulaire aux
personnes qui le&amp;nbsp;remplissent.&lt;/li&gt;
&lt;li&gt;Un jeton d&amp;#8217;accès est généré et ajouté à l&amp;#8217;&lt;span class="caps"&gt;URL&lt;/span&gt;, il s&amp;#8217;agit de l&amp;#8217;identifiant du&amp;nbsp;formulaire.&lt;/li&gt;
&lt;li&gt;Un second jeton d&amp;#8217;accès administrateur et généré, il vous faut le garder de
coté pour avoir accès aux&amp;nbsp;réponses.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bref, en espérant que ça vous serve ! Un petit pas dans la direction des données
rendues à leurs utilisateurs&amp;nbsp;!&lt;/p&gt;</content><category term="code"></category></entry><entry><title>Cloisonnement des activités ?</title><link href="https://blog.notmyidea.org/cloisonnement-des-activites.html" rel="alternate"></link><published>2016-05-25T00:00:00+02:00</published><updated>2016-05-25T00:00:00+02:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2016-05-25:/cloisonnement-des-activites.html</id><summary type="html">&lt;p&gt;Je vous écris depuis un train, en rentrant de Bordeaux où j&amp;#8217;ai passé quelques
jours à l&amp;#8217;occasion de &lt;a href="http://sudweb.fr/"&gt;SudWeb&lt;/a&gt;. Si vous ne connaissez pas
cette conférence, il s&amp;#8217;agit d&amp;#8217;un moment avec des gens chouettes qui se posent
des questions sur leur metier, comment le vivre et …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Je vous écris depuis un train, en rentrant de Bordeaux où j&amp;#8217;ai passé quelques
jours à l&amp;#8217;occasion de &lt;a href="http://sudweb.fr/"&gt;SudWeb&lt;/a&gt;. Si vous ne connaissez pas
cette conférence, il s&amp;#8217;agit d&amp;#8217;un moment avec des gens chouettes qui se posent
des questions sur leur metier, comment le vivre et comment continuer à en faire
un plaisir. Oh, et des fois on parle un peu de technique&amp;nbsp;aussi.&lt;/p&gt;
&lt;h1 id="alors-brasserie-ou-code"&gt;Alors, brasserie ou code&amp;nbsp;?&lt;/h1&gt;
&lt;p&gt;Ces quelques jours ont été fort inspirants. Alors que je suis en train de
changer de métier (vers celui de brasseur) c&amp;#8217;était un moyen de me rendre compte
que bien que je ne souhaite plus faire du Web mon métier &lt;em&gt;la, tout de suite,
maintenant&lt;/em&gt;, je reste un passionné par la&amp;nbsp;chose.&lt;/p&gt;
&lt;p&gt;En partant de Rennes, je ne savais pas trop quoi penser de cette situation.
Prendre un week-end pour échanger avec les gens sur quelque chose dont je
m&amp;#8217;éloigne ? C&amp;#8217;est pas une perte de temps&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;Si je passe du temps à écrire des bouts de code, des logiciels, à reflechir
à comment solutionner certains problemes, ce n&amp;#8217;est pas parce que je suis payé
pour le faire, mais bel et bien parce que je me sens bien lorsque je le fais,
parce que j&amp;#8217;y trouve un équilibre et une&amp;nbsp;utilité.&lt;/p&gt;
&lt;p&gt;Alors que je ne trouvais plus cet équilibre dans mon travail, j&amp;#8217;ai choisi d&amp;#8217;en
changer, mais il n&amp;#8217;empèche que je continue à avoir des rèves d&amp;#8217;un
monde meilleur, dans lequel l&amp;#8217;informatique a sa place. Juste à voir les
discussions (ux, sécurité informatique, décentralisation, architecture
logicielle) que j&amp;#8217;ai pu avoir ce weekend, il n&amp;#8217;y a pas l&amp;#8217;ombre d&amp;#8217;un doute&amp;nbsp;!&lt;/p&gt;
&lt;p&gt;Jusqu&amp;#8217;ici je me suis dit que je devais choisir. J&amp;#8217;ai pensé naivement
que je ne pouvais pas être &lt;em&gt;et&lt;/em&gt; un brasseur &lt;em&gt;et&lt;/em&gt; un developpeur, mais la
réalité c&amp;#8217;est que c&amp;#8217;est exactement ce que je suis: les&amp;nbsp;deux.&lt;/p&gt;
&lt;p&gt;Je ne suis pas pour autant dupe sur le temps necessaire à lancer une activité
brassicole, il va falloir fournir de l&amp;#8217;énergie et avancer sur le projet, mais
il n&amp;#8217;empèche que même si je décide de faire de la bière mon metier, mes
passions pour le reste sont bien&amp;nbsp;vivantes.&lt;/p&gt;
&lt;p&gt;Bref, merci sudweb pour m&amp;#8217;avoir accompagné dans ces reflexions, à l&amp;#8217;année
prochaine, je ramène des futs&amp;nbsp;?&lt;/p&gt;</content><category term="Journal"></category></entry><entry><title>Avez vous confiance en SSL?</title><link href="https://blog.notmyidea.org/avez-vous-confiance-en-ssl.html" rel="alternate"></link><published>2016-03-25T00:00:00+01:00</published><updated>2016-03-25T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2016-03-25:/avez-vous-confiance-en-ssl.html</id><summary type="html">&lt;p&gt;Dans le cadre &lt;a href="http://autodefense-numerique.readthedocs.org/en/latest/"&gt;des ateliers d&amp;#8217;autodéfense numérique&lt;/a&gt;,
j&amp;#8217;ai passé un peu de temps à creuser sur l&amp;#8217;utilisation de &lt;span class="caps"&gt;SSL&lt;/span&gt; puisque
contrairement à ce que la plupart des personnes ont encore tendance à croire,
le petit cadenas (qui prouve qu&amp;#8217;une connexion &lt;span class="caps"&gt;SSL&lt;/span&gt; est en cours) n&amp;#8217;est …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Dans le cadre &lt;a href="http://autodefense-numerique.readthedocs.org/en/latest/"&gt;des ateliers d&amp;#8217;autodéfense numérique&lt;/a&gt;,
j&amp;#8217;ai passé un peu de temps à creuser sur l&amp;#8217;utilisation de &lt;span class="caps"&gt;SSL&lt;/span&gt; puisque
contrairement à ce que la plupart des personnes ont encore tendance à croire,
le petit cadenas (qui prouve qu&amp;#8217;une connexion &lt;span class="caps"&gt;SSL&lt;/span&gt; est en cours) n&amp;#8217;est
&lt;strong&gt;absolument&lt;/strong&gt; pas&amp;nbsp;suffisant.&lt;/p&gt;
&lt;p&gt;Allez hop, c&amp;#8217;est parti&amp;nbsp;pour:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un tour d&amp;#8217;horizon du fonctionnement de&amp;nbsp;SSl&lt;/li&gt;
&lt;li&gt;quelques moyens contourner cette &amp;#8220;protection&amp;#8221; en faisant une attaque en&amp;nbsp;pratique&lt;/li&gt;
&lt;li&gt;un tour des solutions existantes actuellement et de pourquoi je ne les trouve
pas vraiment&amp;nbsp;satisfaisantes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="comment-fonctionne-ssl"&gt;Comment fonctionne &lt;span class="caps"&gt;SSL&lt;/span&gt;?&lt;/h2&gt;
&lt;p&gt;Pour expliquer les problèmes de &lt;span class="caps"&gt;SSL&lt;/span&gt;, j&amp;#8217;ai d&amp;#8217;abord besoin d&amp;#8217;expliquer comment
tout ça&amp;nbsp;fonctionne.&lt;/p&gt;
&lt;p&gt;&lt;span class="caps"&gt;SSL&lt;/span&gt; repose sur l&amp;#8217;utilisation de certificats, qui sont générés par des autorités
de certification (&lt;em&gt;Certificate Authority&lt;/em&gt; que je nomme &lt;em&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/em&gt; dans la suite de&amp;nbsp;l&amp;#8217;article).&lt;/p&gt;
&lt;p&gt;Les certificats &lt;span class="caps"&gt;SSL&lt;/span&gt; permettent deux&amp;nbsp;choses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;De garantir que les communications entre les navigateurs (vous) et les sites
Web ne sont connues que du détenteur du certificat du site et de vous&amp;nbsp;même.&lt;/li&gt;
&lt;li&gt;De garantir que le site sur lequel vous vous connectez est bien celui que
vous&amp;nbsp;imaginez.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le navigateur, lors d&amp;#8217;une visite d&amp;#8217;un site, va télécharger le certificat
associé puis vérifier que le certificat en question a bien été généré par un
des &lt;em&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/em&gt; en qui il a&amp;nbsp;confiance.&lt;/p&gt;
&lt;p&gt;Imaginons maintenant qu&amp;#8217;une des &lt;em&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/em&gt; essaye de savoir ce qui s&amp;#8217;échange entre
mon navigateur et le site de ma banque (protégé par &lt;span class="caps"&gt;SSL&lt;/span&gt;). Comment cela se
passerait il&amp;nbsp;?&lt;/p&gt;
&lt;p&gt;N&amp;#8217;importe quel &lt;em&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/em&gt; peut donc générer des certificats pour n&amp;#8217;importe quel site,
et le navigateur vérifierait, lui, que le certificat a bien été généré par une
&lt;em&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Tout cela ne poserait pas de soucis si les &lt;em&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/em&gt; étaient gérés de manière fiable,
mais il s&amp;#8217;agit d&amp;#8217;un travail compliqué, et certains &lt;em&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/em&gt; ont par le passé montré
des&amp;nbsp;faiblesses.&lt;/p&gt;
&lt;p&gt;Par exemple, &lt;a href="https://en.wikipedia.org/wiki/DigiNotar"&gt;DigiNotar&lt;/a&gt; (un &lt;em&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/em&gt; des Pays-Bas)
a été compromise et les attaquant.e.s ont pu générer des certificats &lt;span class="caps"&gt;SSL&lt;/span&gt;
frauduleux, ce qui leur a permis d&amp;#8217;attaquer des sites tels que Facebook ou&amp;nbsp;GMail.&lt;/p&gt;
&lt;p&gt;Vous pouvez retrouver une liste des risques et menaces autour des &lt;em&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/em&gt; &lt;a href="http://wiki.cacert.org/Risk/History"&gt;sur le
wiki de CACert&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="attaque-de-lhomme-du-milieu-avec-ssl"&gt;Attaque de l&amp;#8217;homme du milieu avec &lt;span class="caps"&gt;SSL&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;A force de dire que c&amp;#8217;était très facile à faire, j&amp;#8217;ai eu envie d&amp;#8217;essayer
d&amp;#8217;espionner des connections protégées par &lt;span class="caps"&gt;SSL&lt;/span&gt;, et effectivement c&amp;#8217;est
carrément flippant tellement c&amp;#8217;est&amp;nbsp;simple.&lt;/p&gt;
&lt;p&gt;En l&amp;#8217;espace de quelques minutes, il est possible de faire une &lt;em&gt;attaque de
l&amp;#8217;homme du milieu&lt;/em&gt; en utilisant par exemple un outil nommé &lt;a href="http://docs.mitmproxy.org/en/stable"&gt;mitm-proxy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour déchiffrer l&amp;#8217;ensemble du trafic &lt;span class="caps"&gt;SSL&lt;/span&gt;, j&amp;#8217;ai simplement eu à lancer quelques
commandes et avoir un &lt;em&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/em&gt; dans lequel le navigateur de la victime a confiance.
Je l&amp;#8217;ai ajouté dans le navigateur cible pour simuler que je l&amp;#8217;avais déjà
(c&amp;#8217;est le cas si un des 1200 &lt;span class="caps"&gt;CA&lt;/span&gt; se fait pirater, ce qui me semble une surface
d&amp;#8217;attaque assez&amp;nbsp;large).&lt;/p&gt;
&lt;p&gt;Je les colle ici si ça vous&amp;nbsp;intéresse:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;$&lt;span class="w"&gt; &lt;/span&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;aptitude&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;mitmproxy
$&lt;span class="w"&gt; &lt;/span&gt;mitm-proxy&lt;span class="w"&gt; &lt;/span&gt;-T&lt;span class="w"&gt; &lt;/span&gt;--host
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il faut faire croire à votre victime que vous êtes la passerelle vers
l&amp;#8217;extérieur et à la passerelle que vous êtes la&amp;nbsp;victime:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;arpspoof&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;wlan0&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;victime&lt;span class="w"&gt; &lt;/span&gt;gateway
arpspoof&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;wlan0&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;gateway&lt;span class="w"&gt; &lt;/span&gt;victime
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Puis dire à notre fausse passerelle de rediriger le trafic des ports 80 et 443
vers notre&amp;nbsp;proxy:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;sysctl&lt;span class="w"&gt; &lt;/span&gt;-w&lt;span class="w"&gt; &lt;/span&gt;net.ipv4.ip_forward&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
sudo&lt;span class="w"&gt; &lt;/span&gt;iptables&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;nat&lt;span class="w"&gt; &lt;/span&gt;-A&lt;span class="w"&gt; &lt;/span&gt;PREROUTING&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;wlan0&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;tcp&lt;span class="w"&gt; &lt;/span&gt;--dport&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;443&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-j&lt;span class="w"&gt; &lt;/span&gt;REDIRECT&lt;span class="w"&gt; &lt;/span&gt;--to-port&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4443&lt;/span&gt;
sudo&lt;span class="w"&gt; &lt;/span&gt;iptables&lt;span class="w"&gt; &lt;/span&gt;-t&lt;span class="w"&gt; &lt;/span&gt;nat&lt;span class="w"&gt; &lt;/span&gt;-A&lt;span class="w"&gt; &lt;/span&gt;PREROUTING&lt;span class="w"&gt; &lt;/span&gt;-i&lt;span class="w"&gt; &lt;/span&gt;wlan0&lt;span class="w"&gt; &lt;/span&gt;-p&lt;span class="w"&gt; &lt;/span&gt;tcp&lt;span class="w"&gt; &lt;/span&gt;--dport&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;80&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;-j&lt;span class="w"&gt; &lt;/span&gt;REDIRECT&lt;span class="w"&gt; &lt;/span&gt;--to-port&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;4443&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Et paf, &lt;strong&gt;on voit tout ce qui passe entre la machine et le serveur &lt;span class="caps"&gt;SSL&lt;/span&gt;&lt;/strong&gt;. On peut
d&amp;#8217;ailleurs même imaginer faire tourner ces quelques commandes sur un
raspberry pi, pour aller encore plus&amp;nbsp;vite…&lt;/p&gt;
&lt;h3 id="key-pinning-dans-les-navigateurs"&gt;Key-pinning dans les&amp;nbsp;navigateurs&lt;/h3&gt;
&lt;p&gt;Actuellement, n&amp;#8217;importe quel &lt;em&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/em&gt; peut générer des certificats pour
n&amp;#8217;importe quel site, et c&amp;#8217;est en grande partie ce qui pose souci. Une des
manières de faire évoluer la situation est d&amp;#8217;épingler les certificats de
certains sites directement dans les&amp;nbsp;navigateurs.&lt;/p&gt;
&lt;p&gt;Cette approche a le mérite de fonctionner très bien &lt;a href="https://dxr.mozilla.org/mozilla-central/source/security/manager/ssl/StaticHPKPins.h?from=StaticHPKPins.h"&gt;pour un petit nombre de
sites critiques (Google, Facebook, etc)&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="http-public-key-pinning-hpkp"&gt;&lt;span class="caps"&gt;HTTP&lt;/span&gt; Public Key Pinning (&lt;span class="caps"&gt;HPKP&lt;/span&gt;)&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://developer.mozilla.org/en/docs/Web/Security/Public_Key_Pinning"&gt;&lt;em&gt;&lt;span class="caps"&gt;HTTP&lt;/span&gt; Public Key Pinning&lt;/em&gt;&lt;/a&gt;
est également une solution de &lt;em&gt;pinning&lt;/em&gt; qui permet d&amp;#8217;établir une confiance lors
de la première connexion avec le site. C&amp;#8217;est ce qu&amp;#8217;on appelle du &lt;em&gt;Trust on First
Use&lt;/em&gt; ou &lt;em&gt;&lt;span class="caps"&gt;TOFU&lt;/span&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Le navigateur va alors mettre ces informations dans un cache et vérifiera que
les certificats correspondent bien lors des prochaines&amp;nbsp;visites.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span class="caps"&gt;HPKP&lt;/span&gt;&lt;/em&gt; est disponible dans Firefox depuis Janvier 2015 et dans Chrome
depuis Octobre&amp;nbsp;2015.&lt;/p&gt;
&lt;h3 id="certificate-transparency-des-journaux-auditables"&gt;Certificate transparency: des journaux&amp;nbsp;auditables&lt;/h3&gt;
&lt;p&gt;Une autre approche est celle proposée par &lt;em&gt;certificate transparency&lt;/em&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Certificate Transparency aims to remedy these certificate-based threats by
making the issuance and existence of &lt;span class="caps"&gt;SSL&lt;/span&gt; certificates open to scrutiny by
domain owners, CAs, and domain&amp;nbsp;users.&lt;/p&gt;
&lt;p&gt;&amp;#8212; &lt;a href="https://www.certificate-transparency.org/what-is-ct"&gt;Certificate&amp;nbsp;Transparency&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Autrement dit, avec ce système les &lt;em&gt;&lt;span class="caps"&gt;CA&lt;/span&gt;&lt;/em&gt; doivent rendre public le fait qu&amp;#8217;ils
aient signé de nouveaux certificats intermédiaires. La signature est ajoutée à
un journal sur lequel il n&amp;#8217;est possible que&amp;nbsp;d&amp;#8217;écrire.&lt;/p&gt;
&lt;p&gt;Les navigateurs vont alors vérifier que les certificats utilisés sont bien des
certificats qui ont été ajoutés au&amp;nbsp;journal.&lt;/p&gt;
&lt;p&gt;Ici, toute l&amp;#8217;intelligence est dans la vérification de ces journaux, qui
permettent donc de valider/invalider des certificats racines ou&amp;nbsp;intermédiaires.&lt;/p&gt;
&lt;p&gt;Il me semble donc qu&amp;#8217;il serait possible d&amp;#8217;ajouter un certificat frauduleux le
temps d&amp;#8217;une attaque (et celui ci serait détecté et supprimé&amp;nbsp;ensuite).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Certificate-Transparency&lt;/em&gt; n&amp;#8217;est donc pas une solution contre une écoute
globale mise en place par les gouvernements par&amp;nbsp;exemple.&lt;/p&gt;
&lt;p&gt;Si vous lisez bien l&amp;#8217;anglais, je vous invite à aller lire
&lt;a href="http://security.stackexchange.com/a/52838"&gt;cette description du problème et de la solution&lt;/a&gt;
que je trouve très bien&amp;nbsp;écrite.&lt;/p&gt;
&lt;h3 id="dane-dnssec"&gt;&lt;span class="caps"&gt;DANE&lt;/span&gt; + &lt;span class="caps"&gt;DNSSEC&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;The &lt;span class="caps"&gt;DANE&lt;/span&gt; working group has developed a framework for securely
retrieving keying information from the &lt;span class="caps"&gt;DNS&lt;/span&gt; [&lt;span class="caps"&gt;RFC6698&lt;/span&gt;]. This
framework allows secure storing and looking up server public key
information in the &lt;span class="caps"&gt;DNS&lt;/span&gt;. This provides a binding between a domain
name providing a particular service and the key that can be used
to establish encrypted connection to that&amp;nbsp;service.&lt;/p&gt;
&lt;p&gt;&amp;#8212; &lt;a href="https://datatracker.ietf.org/wg/dane/charter/"&gt;Dane &lt;span class="caps"&gt;WG&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Une autre solution est appelée &amp;#8220;&lt;span class="caps"&gt;DANE&lt;/span&gt;&amp;#8221; et repose par dessus le protocole
&lt;em&gt;&lt;span class="caps"&gt;DNSSEC&lt;/span&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Je connais assez mal &lt;em&gt;&lt;span class="caps"&gt;DNSSEC&lt;/span&gt;&lt;/em&gt; donc j&amp;#8217;ai passé un peu de temps à lire des
documents. L&amp;#8217;impression finale que ça me laisse est que le problème est
exactement le même que pour &lt;span class="caps"&gt;SSL&lt;/span&gt;: un certain nombre de personnes détiennent les
clés et toute la sécurité repose sur cette confiance. Or il est possible que
ces clés soient détenues par des personnes non dignes de&amp;nbsp;confiance.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Secure &lt;span class="caps"&gt;DNS&lt;/span&gt; (&lt;span class="caps"&gt;DNSSEC&lt;/span&gt;) uses cryptographic digital signatures signed with a
trusted public key certificate to determine the authenticity of data.
&amp;#8212;&amp;nbsp;https://en.wikipedia.org/wiki/DNS_spoofing&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Et&amp;nbsp;aussi:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It is widely believed[1] that securing the &lt;span class="caps"&gt;DNS&lt;/span&gt; is critically important for
securing the Internet as a whole, but deployment of &lt;span class="caps"&gt;DNSSEC&lt;/span&gt; specifically has
been hampered (As of 22 January 2010) by several&amp;nbsp;difficulties:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The need to design a backward-compatible standard that can scale to the
size of the&amp;nbsp;Internet&lt;/li&gt;
&lt;li&gt;Prevention of &amp;#8220;zone enumeration&amp;#8221; (see below) where&amp;nbsp;desired&lt;/li&gt;
&lt;li&gt;Deployment of &lt;span class="caps"&gt;DNSSEC&lt;/span&gt; implementations across a wide variety of &lt;span class="caps"&gt;DNS&lt;/span&gt; servers
and resolvers&amp;nbsp;(clients)&lt;/li&gt;
&lt;li&gt;Disagreement among implementers over who should own the top-level domain
root keys Overcoming the perceived complexity of &lt;span class="caps"&gt;DNSSEC&lt;/span&gt; and &lt;span class="caps"&gt;DNSSEC&lt;/span&gt;&amp;nbsp;deployment&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id="solutions-basees-sur-la-blockchain"&gt;Solutions basées sur la&amp;nbsp;blockchain&lt;/h2&gt;
&lt;p&gt;Une dernière piste semble être l&amp;#8217;utilisation de la &lt;em&gt;blockchain&lt;/em&gt; pour distribuer
des clés par&amp;nbsp;site.&lt;/p&gt;
&lt;p&gt;La solution &lt;em&gt;DNSChain&lt;/em&gt; me paraissait tout d&amp;#8217;abord un bon point de départ mais
la lecture de &lt;a href="https://www.indolering.com/okturtles-dnschain-unblock-us"&gt;quelques critiques&lt;/a&gt;
et interventions du développeur du projet m&amp;#8217;ont fait changer&amp;nbsp;d&amp;#8217;avis.&lt;/p&gt;
&lt;p&gt;Reste encore la piste de &lt;em&gt;Namecoin Control&lt;/em&gt; que je n&amp;#8217;ai pas encore creusée.
Peut-être pour un prochain billet. Toute piste de réflexion est bien sur la
bienvenue sur ces&amp;nbsp;sujets!&lt;/p&gt;</content><category term="code"></category></entry><entry><title>Focusing on what matters</title><link href="https://blog.notmyidea.org/focusing-on-what-matters.html" rel="alternate"></link><published>2016-03-17T00:00:00+01:00</published><updated>2016-03-17T00:00:00+01:00</updated><author><name></name></author><id>tag:blog.notmyidea.org,2016-03-17:/focusing-on-what-matters.html</id><summary type="html">&lt;p&gt;I do have a problem with&amp;nbsp;information.&lt;/p&gt;
&lt;p&gt;You know. I &lt;strong&gt;have&lt;/strong&gt; to check my emails, irc, twitter, my feed reader
etc. I need&amp;nbsp;to.&lt;/p&gt;
&lt;p&gt;And this thing makes me feel uncomfortable at the end of the day,
because I feel that I missed something. That I missed some good time …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I do have a problem with&amp;nbsp;information.&lt;/p&gt;
&lt;p&gt;You know. I &lt;strong&gt;have&lt;/strong&gt; to check my emails, irc, twitter, my feed reader
etc. I need&amp;nbsp;to.&lt;/p&gt;
&lt;p&gt;And this thing makes me feel uncomfortable at the end of the day,
because I feel that I missed something. That I missed some good time,
away from news and&amp;nbsp;agitation.&lt;/p&gt;
&lt;p&gt;Working remotely is sometimes hard. Hard because you need to at the same
time be in the discussions channels and work on the interesting
projects. A real&amp;nbsp;myth.&lt;/p&gt;
&lt;p&gt;In practice, I&amp;#8217;m really bad at multi-tasking. I tried a few times the
&lt;em&gt;Pomodoro&lt;/em&gt; technique, which forces me to focus on a task for 25mn, but
this split of my day into slices of 25mn breaks my natural&amp;nbsp;flow.&lt;/p&gt;
&lt;p&gt;So, what do I need? I tried to change my tools, it helped a bit. Still,
I&amp;#8217;m not focused like I would like to&amp;nbsp;be.&lt;/p&gt;
&lt;p&gt;Maybe that&amp;#8217;s just me who needs some more persuasion over myself, but the
best way I found to work is to unplug the cable. Literally. At work, at
some point I was using a &lt;span class="caps"&gt;RJ45&lt;/span&gt; cable to connect to the Internet. When I
wanted to work on something, I could just unplug this&amp;nbsp;cable.&lt;/p&gt;
&lt;p&gt;And that&amp;#8217;s amazing how you find yourself in the process to &amp;#8220;check&amp;#8221;
something on the web. Mails, irc… well, you got the idea. You&amp;#8217;re
litterally, without even noticing, switching to your browser an opening
a new&amp;nbsp;tab…&lt;/p&gt;
&lt;p&gt;Of course, that Web isn&amp;#8217;t filled only with lolcats and twitter messages
(even if I would &lt;strong&gt;love&lt;/strong&gt; to see a pie chart with the repartition of
lolcats &lt;span class="caps"&gt;VS&lt;/span&gt; the rest of the web&amp;#8217;s content), so sometimes you need some
precious bit of information that&amp;#8217;s there. Fair enough. plug the cable,
do what you &lt;strong&gt;need&lt;/strong&gt; to do, and unplug. Alexis,&amp;nbsp;unplug!&lt;/p&gt;
&lt;p&gt;It also helps to have some fair bit of documentation available directly
on my machine (I used to have the python docs, I should get it&amp;nbsp;back!)&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m feeling adventurous, so I&amp;#8217;ll try something new starting tomorrow,
and I&amp;#8217;ll report back in here my findings. Here&amp;#8217;s the&amp;nbsp;challenge:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Check emails only once a day&lt;/strong&gt;. Do &lt;strong&gt;not&lt;/strong&gt; do it in the morning,
before working, to keep my mind clear. I would say at 2pm (after
lunch). (This doesn&amp;#8217;t mean I will not send mails&amp;nbsp;tho)&lt;/li&gt;
&lt;li&gt;Stay away from the Internet during the morning. I&amp;#8217;ll not connect if
I don&amp;#8217;t need&amp;nbsp;to.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let&amp;#8217;s see how it goes&amp;nbsp;:)&lt;/p&gt;</content><category term="Journal"></category></entry></feed>