Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 40KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the `title` element
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Tag #open-source — David Larlet</title>
  13. <meta name="description" content="Publications relatives au tag #open-source">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f7f7f7">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
  26. <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
  27. <!-- Documented, feel free to shoot an email. -->
  28. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  29. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  30. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  31. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  32. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  36. <script>
  37. function toggleTheme(themeName) {
  38. document.documentElement.classList.toggle(
  39. 'forced-dark',
  40. themeName === 'dark'
  41. )
  42. document.documentElement.classList.toggle(
  43. 'forced-light',
  44. themeName === 'light'
  45. )
  46. }
  47. const selectedTheme = localStorage.getItem('theme')
  48. if (selectedTheme !== 'undefined') {
  49. toggleTheme(selectedTheme)
  50. }
  51. </script>
  52. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  53. <header>
  54. <h1>Publications relatives au tag #open-source</h1>
  55. </header>
  56. <nav>
  57. <p class="center">
  58. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  59. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  60. </svg> Accueil</a>
  61. • <a rel="tags" href="/david/#tags" title="Liste de toutes les étiquettes"><svg class="icon icon-tags">
  62. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-tags"></use>
  63. </svg> Étiquettes</a>
  64. </p>
  65. </nav>
  66. <hr>
  67. <main>
  68. <p>Liste des publications en ordre chronologique :</p>
  69. <h2><a href="/david/2021/01/18/" title="Lien permanent vers cet article">Textcasts</a> (2021-01-18)</h2>
  70. <details>
  71. <summary>Déplier pour lire le contenu de l’article</summary>
  72. <blockquote>
  73. <p>It’s like podcasts — but for reading.</p>
  74. <p><cite><em><a href="https://netnewswire.com/">Free and Open Source RSS Reader for Mac and iOS</a></em> (<a href="/david/cache/2021/21d3daabe37170d236d2714df3b872fb/">cache</a>)</cite></p>
  75. </blockquote>
  76. <p>C’est assez marrant qu’un agrégateur que j’utilise depuis avant l’apparition des <em>podcasts</em> puisse se définir ainsi. Et justement, je rêve d’un agrégateur qui me permette de m’abonner à un <em>podcast</em> et d’en recevoir la version texte. <strong>J’ai essayé pas mal de pistes.</strong> Il y <a href="https://hyperaud.io/">en</a> <a href="https://trint.com/">a</a> <a href="https://www.descript.com/">des</a> <a href="https://www.simonsays.ai/">payantes</a> qui supportent plus ou moins bien le français. J’ai aussi <a href="https://mastodon.social/@dav/105458605863317409">tout un fil</a> où je tente de le faire avec des outils <em>open-source</em> (notamment <a href="https://deepspeech.readthedocs.io/en/latest/">Deepspeech</a> et <a href="https://alphacephei.com/vosk/">Vosk</a>) sans arriver à quoi que ce soit de potable.</p>
  77. <p>Si jamais vous avez le même problème et une solution utilisable-mais-pas-trop-chère, je prends. Il faudrait que je fasse un comparatif des différents services payants trouvés. Ça pourrait même faire un chouette épisode de <em>podcast</em> #ohWait.</p>
  78. </details>
  79. <h2><a href="/david/2021/04/08/" title="Lien permanent vers cet article">NetNewsWire</a> (2021-04-08)</h2>
  80. <details>
  81. <summary>Déplier pour lire le contenu de l’article</summary>
  82. <blockquote lang="en">
  83. <p>Or: skip helping us, and, instead, help people who need help more than we do. Those people should not be hard to find.</p>
  84. <p><cite><em><a href="https://github.com/Ranchero-Software/NetNewsWire/blob/main/Technotes/HowToSupportNetNewsWire.markdown">How to Support NetNewsWire</a></em> (<a href="/david/cache/2021/2c6e22e52c34c94f8a4b8d567aacf0fa/">cache</a>)</cite></p>
  85. </blockquote>
  86. <p>Ça fait longtemps que je veux parler <a href="/david/2021/01/18/" title="Textcasts">un peu plus</a> de <a href="https://netnewswire.com/">cet agrégateur</a> de <a href="/david/blog/2019/flux-rss/">flux RSS</a> qui est léger et rapide. La dernière mise à jour permet enfin d’agrandir le texte ce qui m’est essentiel pour avoir <a href="/david/blog/2014/dos-posture/">une posture adéquate</a>. Il est aussi possible d’aller chercher le contenu pour les flux tronqués (ça passe par un service tiers) ce qui me permet de rester dans un environnement qui m’est lisible <em>et</em> de rester concentré. Si vous êtes pommé·e, je recommande.</p>
  87. <p>J’en profite pour rappeler que la beauté d’un format ouvert c’est qu’il suffit d’exporter son OPML (la liste des flux auxquels on est abonné) puis de l’importer dans un nouvel agrégateur pour pouvoir tester sans soucis de compatibilité. Imaginez une telle inter-opérabilité entre abonnements de réseaux sociaux propriétaires. On s’entend que vous ne pouvez qu’imaginer&nbsp;:-).</p>
  88. </details>
  89. <h2><a href="/david/2021/05/25/" title="Lien permanent vers cet article">Mérite</a> (2021-05-25)</h2>
  90. <details>
  91. <summary>Déplier pour lire le contenu de l’article</summary>
  92. <blockquote>
  93. <p><strong>D’une part il s’agit de faire reculer à l’arrière plan et si possible d’effacer le récit d’un naufrage.</strong> Naufrage qui est celui de la gestion «&nbsp;technique&nbsp;» des données de la pandémie et de la capacité des services de l’état à produire des applications et des services à la hauteur de la crise et des urgences. […] Plus on parlera de la réussite des outils déployés par Guillaume Rozier et plus on pourra souligner de manière opportune à quel point les services de l’état, à défaut d’être en capacité d’en produire de pareille qualité, se sont fait un point d’honneur de les utiliser au mieux et de les «&nbsp;valoriser&nbsp;» et même de leur avoir permis d’exister.</p>
  94. <p>[…]</p>
  95. <p><mark>Effacer les échecs et les errances du régalien donc.</mark> Et puis <strong>d’autre part, il s’agit d’enfoncer encore un peu plus le récit libéral de la réussite individuelle.</strong> «&nbsp;Regardez&nbsp;» nous dit-on, «&nbsp;regardez ce que ce jeune ingénieur sorti de nulle part et sans aucune aide publique à réussi à mettre en place tout seul, et tout en continuant de travailler à côté&#8239;!!&nbsp;» Et alors, mais alors seulement, attendez-vous à la reconnaissance de la nation.</p>
  96. <p><cite><em><a href="https://www.affordance.info/mon_weblog/2021/05/guillaume-rozier-chevalier-scraper.html">Guillaume Rozier&nbsp;: le chevalier Scraper et sans reproches.</a></em> (<a href="/david/cache/2021/d786e761d41716e6074a9345a2610dbf/">cache</a>)</cite></p>
  97. </blockquote>
  98. <p>Olivier Ertzscheid tape malheureusement trop juste. Bien sûr que je me réjouis que les outils de Guillaume Rozier soient aussi populaires et fassent la promotion de l’OpenData et de la transparence et de la puissance de l’OpenSource et tout ça. Mais — et je ne peux pas trop en dire — c’est quand même bien frustrant de se dire que c’est un palliatif à l’inefficacité (interne) et au manque de vision de l’État.</p>
  99. <p>J’ai parfois l’impression d’être au pied du moulin. Et de me rendre compte qu’il fait 300&nbsp;mètres de haut. Tou·tes les fonctionnaires de France ont un sacré <em>mérite</em> par les temps qui courent…</p>
  100. </details>
  101. <h2><a href="/david/2021/06/20/" title="Lien permanent vers cet article">Contribution</a> (2021-06-20)</h2>
  102. <details>
  103. <summary>Déplier pour lire le contenu de l’article</summary>
  104. <blockquote lang="en">
  105. <p>Similar to SQLite, Litestream is open source but closed to code contributions. This keeps the code base free of proprietary or licensed code but it also helps me continue to maintain and build Litestream.</p>
  106. <p>As the author of BoltDB, <mark>I found that accepting and maintaining third party patches contributed to my burn out</mark> and I eventually archived the project. Writing databases &amp; low-level replication tools involves nuance and simple one line changes can have profound and unexpected changes in correctness and performance. Small contributions typically required hours of my time to properly test and validate them.</p>
  107. <p>I am grateful for community involvement, bug reports, &amp; feature requests. I do not wish to come off as anything but welcoming, however, I've made the decision to keep this project closed to contributions for my own mental health and long term viability of the project.</p>
  108. <p><cite><a href="https://github.com/benbjohnson/litestream#open-source-not-open-contribution">Open-source, not open-contribution</a></cite></p>
  109. </blockquote>
  110. <p>Je ne crois pas avoir déjà croisé une annonce du genre. Je ne suis pas sûr de savoir quoi en penser. Toujours <a href="/david/2021/06/04/" title="Lâche(r-prise)">cet entre-deux</a> incertain entre les différentes échelles et prises de soins respectives.</p>
  111. <p><mark>Note après publication&nbsp;:</mark></p>
  112. <p>Mathieu m’indique que le <a href="https://elm-lang.org/">langage Elm</a> a un mode de contribution un peu similaire par «&nbsp;paquets&nbsp;»&nbsp;:</p>
  113. <blockquote lang="en">
  114. <p>The major benefit of batching is that the review process is <em>structured</em> for coherent design. By allowing time for folks to share their experiences and suggestions, it becomes possible to consider them all together and better balance their needs. Shifting towards real-time responses on everything would necessarily degrade the overall design quality.</p>
  115. <p><cite><em><a href="https://github.com/elm/expectations/blob/master/batching.md#batching">Batching</a></em> (<a href="/david/cache/2021/34dbd7a73608c6cde4adf12c4a7084c0/">cache</a>)</cite></p>
  116. </blockquote>
  117. </details>
  118. <h2><a href="/david/2021/06/26/" title="Lien permanent vers cet article">Hybris</a> (2021-06-26)</h2>
  119. <details>
  120. <summary>Déplier pour lire le contenu de l’article</summary>
  121. <blockquote lang="en">
  122. <p>If you ever wanted to host your own wikipedia replica, here is the simplest way.</p>
  123. <p>As wikipedia is REALLY huge, you don’t really want to host a php wikimedia software and load the huge database, instead, the project made the <em>openzim</em> format to compress the huge database that wikipedia became while allowing using it for fast searches.</p>
  124. <p><cite><em><a href="https://dataswamp.org/~solene/2019-11-13-wikimedia-dump.html">Host your own wikipedia backup</a></em> (<a href="/david/cache/2021/626841dd876f103a10391b1b841ba5ae/">cache</a>)</cite></p>
  125. </blockquote>
  126. <p>Il y a un côté plaisant à se dire que je pourrais avoir une partie du savoir collectif actuel contenu sur un simple disque dur qui n’est de toute façon même plus assez gros pour faire des sauvegardes personnelles dessus.</p>
  127. <p>Pour avoir les étapes en français et localement aussi&nbsp;:</p>
  128. <ol>
  129. <li>Aller sur la <a href="https://wiki.kiwix.org/wiki/Content_in_all_languages">page des archives kiwix</a> et récupérer les sources intéressantes (par exemple <code>wikipedia (English) all nopic</code> (43&#8239;Go) ou <code>wikipedia (français) all maxi</code> (29&#8239;Go)).</li>
  130. <li>Installer <a href="https://pypi.org/project/zimply/">zimply</a>, par exemple avec <code>python3 -m venv venv</code> puis <code>source venv/bin/activate</code> et enfin <code>pip install zimply</code>.</li>
  131. <li>À cette étape, j’aimerais pouvoir faire un <code>python -m zimply monfichier.zim</code> mais il n’a pas été codé avec ce cas d’usage, il faut donc en passer par l’écriture d’un petit script dédié&nbsp;:</li>
  132. </ol>
  133. <pre><code>from zimply import ZIMServer
  134. import sys
  135. import os.path
  136. if len(sys.argv) == 1:
  137. print(&quot;usage: &quot; + sys.argv[0] + &quot; file&quot;)
  138. exit(1)
  139. if os.path.exists(sys.argv[1]):
  140. ZIMServer(sys.argv[1])
  141. else:
  142. print(&quot;Can't find file &quot; + sys.argv[1])
  143. </code></pre>
  144. <p><em>C’est exactement celui de l’article original, encore une fois je ne fais que copier, le crédit revient à Solène Rapenne.</em></p>
  145. <p>Et enfin, la dernière étape consiste à servir notre archive (ça peut prendre quelques secondes selon la taille que vous avez choisie)&nbsp;: <code>python zim_server.py monfichier.zim</code> qui vous invite à aller voir ce qu’il se passe sur <a href="http://localhost:9454/">http://localhost:9454/</a>.</p>
  146. <p>Et pendant ce temps là en Croatie…</p>
  147. <blockquote>
  148. <p>De 2011&nbsp;à 2020, Wikipedia Croatie a été «&nbsp;prisonnier&nbsp;» d’un groupe d’une vingtaine d’administrateurs de l’encyclopédie. «&nbsp;Wikipedia Croatie avait reçu beaucoup d’attention à cause de sa tendance à promouvoir des points de vue fascistes, des biais contre les Serbes de Croatie, et une propagande anti-LGBT&nbsp;», a écrit la fondation Wikimedia dans un rapport publié le 21&nbsp;juin 2021. Les accusions sont nombreuses, et les faits tout aussi graves et impressionnants.</p>
  149. <p>Pendant une dizaine d’années, ce groupe d’administrateurs a cherché à imposer ses «&nbsp;idées&nbsp;». Que ce soit en occultant certains faits, en supprimant des passages ou en créant de toute pièce de nouveaux articles, ils ont promu leur vision du monde&nbsp;: une vision d’extrême droite, et nationaliste.</p>
  150. <p><cite><em><a href="https://www.numerama.com/politique/721329-des-administrateurs-dextreme-droite-ont-manipule-les-articles-de-wikipedia-croatie-pendant-10-ans.html">Des administrateurs d’extrême droite ont manipulé les articles de Wikipedia Croatie pendant 10&nbsp;ans</a></em> (<a href="/david/cache/2021/1f9f4eb2d926148640ef831f28335380/">cache</a>)</cite></p>
  151. </blockquote>
  152. </details>
  153. <h2><a href="/david/2021/07/08/" title="Lien permanent vers cet article">Copilot</a> (2021-07-08)</h2>
  154. <details>
  155. <summary>Déplier pour lire le contenu de l’article</summary>
  156. <blockquote lang="en">
  157. <p>GitHub recently announced a tool called Copilot, a tool which uses machine learning to provide code suggestions, inciting no small degree of controversy. One particular facet of the ensuing discussion piques my curiosity: what happens if the model was trained using software licensed with the GNU General Public License?</p>
  158. <p><cite><em><a href="https://drewdevault.com/2021/07/04/Is-GitHub-a-derivative-work.html">Is GitHub a derivative work of GPL’d software?</a></em> (<a href="/david/cache/2021/0bb6418a58c977e7b142597213f6225d/">cache</a>)</cite></p>
  159. </blockquote>
  160. <p>Les <a href="https://mjtsai.com/blog/2021/07/07/github-copilot-and-copyright/">réactions ont été assez salées</a> (<a href="/david/cache/2021/05391381e6590e32184162110762aa62/">cache</a>) — et à juste titre&#8239;! — suite à cette annonce, et je ne parle même pas des <a href="https://fossbytes.com/github-copilot-generating-functional-api-keys/"><em>bugs</em> fâcheux</a> (<a href="/david/cache/2021/b7e5f13409115890c2478466f01369d8/">cache</a>) lors de cet apprentissage. Pour ma part, ça m’a fait glousser que Microsoft fasse du blanchiment de code sous GPL, mais c’est probablement car je commence à me faire vieux.</p>
  161. <p>Il y a tout de même une approche séduisante à imaginer une façon hybride de produire du code. J’y vois un parallèle avec les <a href="/david/2021/06/19/" title="Échecs">échecs</a> et le fait que ce soit la combinaison humain + machine qui devienne la plus puissante (passé un certain niveau permettant de comprendre les propositions de l’ordinateur, c’est une condition importante). Il n’y a probablement pas tout à jeter dans cette exploration, j’aimais bien aussi l’idée d’<a href="https://github.com/drathier/stack-overflow-import">importer directement depuis StackOverflow</a> sans même savoir ce qu’il y a dans la fonction. De <em>batteries included</em> à <em>copy-pasta included</em>, cela introduit une notion de confiance sociale et technique&nbsp;:-).</p>
  162. <p>Je n’en reste pas moins fidèle à <a href="https://www.sublimetext.com">SublimeText</a>, j’ai besoin d’un éditeur fonctionnel et rapide.</p>
  163. <blockquote>
  164. <p>À mon sens, les réformateurs ont causé plus de tort à eux seuls que n’importe quelle autre force dans toute l’histoire humaine. Montrez-moi quelqu’un qui déclare&nbsp;: «&nbsp;Tout cela doit être changé&nbsp;» et vous aurez devant vous une tête gonflée d’intentions pernicieuses qui n’ont aucun autre exutoire. Ce que nous devons au contraire nous efforcer de faire toujours, c’est découvrir les cours naturels des choses et nous y insérer sans heurt.</p>
  165. <p><cite><em>Révérende Mère Taraza, Extrait d’une convention</em>, <em><a href="/david/2020/12/21/#dune">Dune</a> V. Les Hérétiques de Dune</em>, Frank Herbert</cite></p>
  166. </blockquote>
  167. </details>
  168. <h2><a href="/david/2021/08/11/" title="Lien permanent vers cet article">Pré-requis</a> (2021-08-11)</h2>
  169. <details>
  170. <summary>Déplier pour lire le contenu de l’article</summary>
  171. <blockquote lang="en">
  172. <p>You can <em>choose</em> to make it really complicated. Convince yourself that “the modern web” is inherently complex and convoluted. But then look at what makes it complex and convoluted: toolchains, build tools, pipelines, frameworks, libraries, and abstractions. Please try to remember that none of those things are required to make a website.</p>
  173. <p>This is for everyone. Not just for everyone to consume, <mark>but for everyone to make.</mark></p>
  174. <p><cite><em><a href="https://adactio.com/journal/18337">Foundations</a></em> (<a href="/david/cache/2021/b2c393ba384ba80f2361dc7652d50de3/">cache</a>)</cite></p>
  175. </blockquote>
  176. <p>Suivi de&nbsp;:</p>
  177. <blockquote lang="en">
  178. <p>It feels like the web we’re making now is a web designed for commercial interests. The reason we get CSS grid or the JS APIs of ES6,7, and 8&nbsp;has more to do with how companies want to build and deliver software over the web than it does with <mark>how individuals want to connect and communicate</mark> with each other over the web.</p>
  179. <p><cite><em><a href="https://blog.jim-nielsen.com/2021/browsers-and-representation/">Browsers and Representation</a></em> (<a href="/david/cache/2021/13e573e5b0ffc244ac700dba6c7b8bd1/">cache</a>)</cite></p>
  180. </blockquote>
  181. <p>À quoi ressemblerait un navigateur du peuple pour le peuple&#8239;? Qu’est-ce qui pourrait être ajouté/retiré&#8239;? Quelle en serait sa gouvernance&#8239;? Quelle serait l’échelle d’usage/développement qui nous semblerait acceptable avant d’essaimer&#8239;?</p>
  182. <p>Qu’il est inconfortable de se poser toutes ces questions&nbsp;:-).</p>
  183. <blockquote>
  184. <p>C’était là une approche typiquement mentat&nbsp;: se concentrer uniquement sur les questions. Les mentats accumulaient les questions comme d’autres avaient tendance à accumuler les réponses. <mark>Les questions créaient leurs propres trames et leurs propres systèmes.</mark> C’était cela qui aboutissait aux <em>formes</em> reconnaissables. Chacun voyait son univers à travers des trames qui s’étaient créées d’elles-mêmes, composées d’images, de mots, de désignations (parfaitement temporaires), le tout mêlé en un faisceau d’impulsions sensorielles qui se réfléchissaient sur ces constructions intérieures de la même manière que la lumière était renvoyée sur une surface brillante.<br />
  185. Le premier instructeur mentat de Duncan Idaho avait élaboré une configuration provisoire de mots pour décrire cette fragile construction&nbsp;: «&nbsp;Surveillez les moindres mouvements significatifs de vos écrans intérieurs.&nbsp;»</p>
  186. <p>[…]</p>
  187. <p>La véritable force d’un mentat résidait dans cette <em>construction</em> mentale que les instructeurs appelaient «&nbsp;la grande synthèse&nbsp;». Cela requérait une patience que les non-mentats n’auraient même pas pu imaginer. Dans les écoles de mentats, on désignait cela sous le nom de persévérance. Il fallait être un pisteur primitif, capable de déchiffrer les signes les plus infimes, les perturbations les plus minuscules de l’environnement, et de les remonter jusqu’à leur source. En même temps, il fallait demeurer ouvert aux grands mouvements de l’extérieur comme de l’intérieur. Tout cela concourait à produire un état de «&nbsp;réceptivité naïve&nbsp;» qui était l’attitude de base du Mentat, apparentée à celle du Diseur de Vérité, mais beaucoup plus vaste dans son champ d’action.<br />
  188. «&nbsp;Vous êtes ouvert à tout ce que l’univers pourra décider de faire&nbsp;», disait son premier instructeur. «&nbsp;Votre cerveau n’est pas un ordinateur. C’est un outil de décision couplé à tout ce que vos sens peuvent lui apporter.&nbsp;»</p>
  189. <p><cite><em><a href="/david/2020/12/21/#dune">Dune</a> VI. La maison des mères</em>, Frank Herbert</cite></p>
  190. </blockquote>
  191. <figure>
  192. <a href="#nenuphars"
  193. title="Cliquer pour une version haute résolution">
  194. <img src="/static/david/2021/nenuphars.jpg" alt="Deux nénuphars et leurs reflets."
  195. loading="lazy" width="1600" height="1067" />
  196. </a>
  197. <a href="#_" class="lightbox" id="nenuphars">
  198. <img src="/static/david/2021/nenuphars.jpg" alt="Deux nénuphars et leurs reflets."
  199. loading="lazy" width="1600" height="1067" />
  200. </a>
  201. <figcaption>Que cette fleur soit synonyme de protections périodiques m’auto-frustre.</figcaption>
  202. </figure>
  203. </details>
  204. <h2><a href="/david/2021/08/26/" title="Lien permanent vers cet article">Ambivalence</a> (2021-08-26)</h2>
  205. <details>
  206. <summary>Déplier pour lire le contenu de l’article</summary>
  207. <blockquote lang="en">
  208. <p>This is just what I’m used to nowadays – not using a technology because it’s the best-in-class or makes my life easier, but because it meets some high-minded criteria about how I think software should be: privacy-respecting, open-source, controlled by the user, etc.</p>
  209. <p>[…]</p>
  210. <p>For the time being, though, <mark>I’m going to keep acting like technology is an enemy</mark> I need to subdue rather than a purveyor of joys and delights.</p>
  211. <p><cite><em><a href="https://nolanlawson.com/2021/08/26/my-love-hate-affair-with-technology/">My love-hate affair with technology</a></em> (<a href="/david/cache/2021/67a6372e0d7e2b65224262106e8318b0/">cache</a>)</cite></p>
  212. </blockquote>
  213. <p>Toujours ce tiraillement très bien exprimé par Nolan Lawson entre l’insouciance des choses qui marchent (mais <a href="https://edwardsnowden.substack.com/p/all-seeing-i">on ne décide pas de la direction dans laquelle</a> (<a href="/david/cache/2021/9a458e7f3ad00b45d36511666ee29021/">cache</a>) elles vont) et la friction répétée d’outils qui ne prennent pas suffisamment soin des personnes trop éloignées — à différents niveaux et parfois de manière légitime — de l’équipe qui développe.</p>
  214. <p>Ces deux modèles encouragent des modèles de société différents et aucun des deux ne me convient. D’un côté des multi-milliardaires qui bousillent la planète, de l’autre des <em>tech bro</em> qui acquièrent un pouvoir soci·ét·al non négligeable (je caricature, #NotAllDevs, toussa). Ce n’est probablement pas le même ordre de grandeur mais ça me questionne pas mal quand même. Au milieu de tout ça, il y a probablement <a href="https://framablog.org/2019/12/10/archipelisation-comment-framasoft-concoit-les-relations-quelle-tisse/">des archipels</a> (<a href="/david/cache/2021/ef5bbfde106a3477ff728bf27413672d/">cache</a>) où il fait bon grandir, de manière un peu isolée pour se protéger, un peu entre-soi pour pouvoir se reposer. Ces endroits-refuges sont géniaux et j’ai de bons échanges sur Masto une fois mes interlocuteur·ices choisi·es, trié·es pour être acceptables. Mais peut-on rester insulaire indéfiniment&#8239;?</p>
  215. <p>J’ai beaucoup de doutes vis-à-vis de tous ces choix en ce moment. Quels sont les modèles les moins toxiques que je puisse encourager par mon attention&#8239;? Et potentiellement mon argent&#8239;?!</p>
  216. <p>Par ailleurs, je tombais aujourd’hui (via <a href="https://www.youtube.com/watch?v=ZdWx9_YfxFU">cette vidéo</a>) sur cette citation&nbsp;:</p>
  217. <blockquote>
  218. <p>L’histoire n’est pas quelque chose que l’on peut regarder en se disant «&nbsp;c’est inévitable&nbsp;», elle arrive parce que des gens ont pris des décisions […]</p>
  219. <p><cite>Marsha P. Johnson</cite></p>
  220. </blockquote>
  221. <figure>
  222. <a href="#geai-bleu-envers"
  223. title="Cliquer pour une version haute résolution">
  224. <img src="/static/david/2021/geai-bleu-envers.jpg" alt="Un geai bleu qui se tient à une branche, à l’envers (pour attraper des bleuets)."
  225. loading="lazy" width="2048" height="1366" />
  226. </a>
  227. <a href="#_" class="lightbox" id="geai-bleu-envers">
  228. <img src="/static/david/2021/geai-bleu-envers.jpg" alt="Un geai bleu qui se tient à une branche, à l’envers (pour attraper des bleuets)."
  229. loading="lazy" width="2048" height="1366" />
  230. </a>
  231. <figcaption>Peut-être faut-il prendre le problème à l’envers : de quoi ai-je besoin ? Vaste sujet.</figcaption>
  232. </figure>
  233. </details>
  234. <h2><a href="/david/2021/09/05/" title="Lien permanent vers cet article">Silence</a> (2021-09-05)</h2>
  235. <details>
  236. <summary>Déplier pour lire le contenu de l’article</summary>
  237. <blockquote lang="en">
  238. <p>Such a transformation of the environment from a commons to a productive resource constitutes the most fundamental form of environmental degradation. […] The task must be undertaken urgently because <mark>commons can exist without police, but resources cannot.</mark> Just as traffic does, computers call for police, and for ever more of them, and in ever more subtle forms.</p>
  239. <p>By definition, resources call for defense by police. Once they are defended, their recovery as commons becomes increasingly difficult. This is a special reason for urgency.</p>
  240. <p><cite><em><a href="http://www.davidtinapple.com/illich/1983_silence_commons.html">Silence is a Commons by Ivan Illich</a>, 1982</em> (<a href="/david/cache/2021/20345aead1f8d541a0819dfc5a0dbc6d/">cache</a>)</cite></p>
  241. </blockquote>
  242. <p>J’ai eu du mal à trouver l’extrait le plus pertinent de cette intervention qui a mon âge et qui n’a pas pris une ride… elle. La clairvoyance d’Illich me surprendra toujours.</p>
  243. <p><mark>Le lendemain</mark>, Llu m’invite à creuser la <a href="https://bribesdereel.net/Spinoza-penser-numerique">piste de Spinoza</a> (<a href="/david/cache/2021/12aa0cc26a4a578b6467414d5250206a/">cache</a>) aussi. Réservé à la bibliothèque.</p>
  244. </details>
  245. <h2><a href="/david/2021/10/24/" title="Lien permanent vers cet article">Représentation</a> (2021-10-24)</h2>
  246. <details>
  247. <summary>Déplier pour lire le contenu de l’article</summary>
  248. <p>Je trouve les possibilités offertes par <a href="https://anvaka.github.io/city-roads/">cet outil</a> vraiment esthétiques. L’image finale est intéressante mais savoir qu’elle est le résultat d’une multitude de réajustement fondée sur le volontariat et le partage lui donne une autre dimension. Je l’imagine en poster avec la signature de milliers d’auteur·ices.</p>
  249. <p>Par exemple <a href="https://anvaka.github.io/city-roads/?q=montreal&amp;areaId=3601634158">pour Montréal</a>, on distingue très bien l’île, flottant au milieu du St Laurent&nbsp;:</p>
  250. <figure>
  251. <a href="#montreal-roads"
  252. title="Cliquer pour une version haute résolution">
  253. <img src="/static/david/2021/montreal-roads.png" alt="Les routes sur l’île de Montréal"
  254. loading="lazy" width="3304" height="1858" />
  255. </a>
  256. <a href="#_" class="lightbox" id="montreal-roads">
  257. <img src="/static/david/2021/montreal-roads.png" alt="Les routes sur l’île de Montréal"
  258. loading="lazy" width="3304" height="1858" />
  259. </a>
  260. <figcaption>Où l’on remarque aussi que l’île ne comporte pas seulement la commune de Montréal (d’où les espaces blancs).</figcaption>
  261. </figure>
  262. <p>Cela donne une idée du poids des routes (répertoriées dans OpenStreetMap) pour une agglomération donnée. On peut aussi y voir l’histoire des différentes remodélisations de la ville (coucou <a href="https://anvaka.github.io/city-roads/?q=barcelona&amp;areaId=3600347950">Barcelone</a>). Il y a plein de choses à (se) représenter grâce à un outil qui n’est techniquement pas si complexe.</p>
  263. <p><em>Attention&nbsp;: pour certaines villes le chargement peut être extrêmement volumineux.</em></p>
  264. </details>
  265. <h2><a href="/david/2021/11/15/" title="Lien permanent vers cet article">SourceHut</a> (2021-11-15)</h2>
  266. <details>
  267. <summary>Déplier pour lire le contenu de l’article</summary>
  268. <blockquote lang="en">
  269. <p>This suite of open source tools is the software development platform you’ve been waiting for. We’ve taken the wisdom of the most successful open-source communities and turned it into a platform of efficient engineering tools.</p>
  270. </blockquote>
  271. <p>Ce soir, je (re?)découvre <a href="https://sourcehut.org/">SourceHut</a> et je suis impressionné. C’est <a href="https://forgeperf.org/">rapide</a> et leurs petits outils satellites sont bien pensés. Ça semble être une <a href="https://srht.site">alternative crédible</a> à Microsoft Github Pages et Microsoft Gists pour les <a href="https://paste.sr.ht/">petits bouts de codes</a>.</p>
  272. <p>Pour ce qui est des dépôts en eux-mêmes, cela me demanderait de <a href="https://drewdevault.com/2018/07/02/Email-driven-git.html">revoir mon <em>workflow</em></a> (<a href="/david/cache/2021/ea19b309a39227f6b370ec83e6c63028/">cache</a>) pour passer davantage <a href="https://git-send-email.io">par les courriels</a>, ce qui est potentiellement <a href="https://blog.brixit.nl/git-email-flow-versus-github-flow/">une meilleure pratique</a> (<a href="/david/cache/2021/68c1cb8256a8472b2711a0ffb5e7921e/">cache</a>), davantage décentralisée. Je me demande à quel point ça devient moins accessible à la contribution cela dit, ce qui pourrait être le point le plus bloquant. Je vois bien qu’en ayant ma <a href="https://git.larlet.fr/davidbgk">propre forge</a>, cela réduit les contributions à néant… et je n’ai pas de moyen de comparer avec une présence de ces sources sur Microsoft Github.</p>
  273. <p>Cerise sur le gâteau, niveau culture ça a l’air bien pensé aussi&nbsp;:</p>
  274. <blockquote lang="en">
  275. <p>Think of SourceHut’s engineering culture as a dynamic, mutual collaboration between equals, who aim to support each other in achieving our shared ambitions in free software. We have essentially attempted to reproduce the FOSS community’s collaboration environment, and to some extent, governance model, in the context of a business.</p>
  276. <p><cite><em><a href="https://man.sr.ht/staff/culture.md">Introduction to SourceHut culture</a></em> (<a href="/david/cache/2021/3b811b75e116cdc0ac8f6f1b2fa60f12/">cache</a>)</cite></p>
  277. </blockquote>
  278. </details>
  279. <h2><a href="/david/2021/11/24/" title="Lien permanent vers cet article">Souveraineté</a> (2021-11-24)</h2>
  280. <details>
  281. <summary>Déplier pour lire le contenu de l’article</summary>
  282. <ol>
  283. <li>Recevoir une notification sur Google Mail.</li>
  284. <li>Qui redirige vers un <em>build</em> cassé dans Microsoft Github.</li>
  285. <li>Car il y a un <em>bug</em> dans ce composant Facebook React.</li>
  286. <li>Ouvrir son éditeur Microsoft VSCode.</li>
  287. <li>Faire une recherche sur Google Search.</li>
  288. <li>Trouver une solution sur Google web.dev.</li>
  289. <li>Tester le rendu dans Google Chrome.</li>
  290. <li>Tester le <em>responsive</em> sur Apple Safari mobile.</li>
  291. <li>Pousser le code sur Microsoft Github.</li>
  292. <li>Faire tourner les tests sur Amazon Web Services.</li>
  293. <li>Déployer la pré-production sur Amazon Web Services.</li>
  294. <li>Tester avec son Apple iPhone.</li>
  295. <li>Se féliciter que la production tourne chez OVH 🇫🇷.</li>
  296. <li>Acheter des Google Adwords pour faire connaître le service.</li>
  297. <li>Faire de la publicité ciblée sur Facebook (Instagram).</li>
  298. <li>Enregistrer les retours utilisateur·ices dans une Google Sheet.</li>
  299. <li>Les contacter en utilisant Amazon Simple Email Service</li>
  300. <li>Leur proposer des <em>interviews</em> sur Google Hangouts.</li>
  301. <li>Se demander s’il y a des améliorations à faire pour prendre en compte la nouvelle barre d’URL basse dans Apple Safari mobile.</li>
  302. <li>Etc etc.</li>
  303. </ol>
  304. <p>La liste est une (auto-)critique caricaturale mais pas tant que ça et elle pourrait facilement s’allonger. Il y a un moment où l’hypocrisie de ce processus vis-à-vis de la production de nos <a href="/david/2021/11/14/" title="Captées"><em>capta</em> et <em>tracka</em></a> me pèse plus que d’autres. À quelle souveraineté peut-on prétendre lorsque toute notre chaîne de production est pieds et doigts liée aux GAFAM&#8239;?</p>
  305. <p>Je salue chaque initiative qui essaye de s’en extraire et de montrer que d’autres voies sont possibles&nbsp;:</p>
  306. <blockquote>
  307. <p>Comme le montre <a href="https://github.com/etalab/etalab/blob/master/logiciels-libres.md#les-logiciels-libres-utilis%C3%A9s-par-etalab">cette liste</a>, Etalab s’est tôt engagé dans le fait de recourir à des logiciels libres&nbsp;: c’est d’abord cet engagement qui a décidé le pôle logiciels libres à utiliser SourceHut pour publier une partie de ses codes sources. C’est aussi pour montrer qu’il existe d’autres forges que celles envisagées par défaut ou par habitude, et ainsi encourager chaque administration à bien motiver ses choix d’hébergement de code.</p>
  308. <p><cite><em><a href="https://man.sr.ht/~etalab/logiciels-libres/pourquoi-sourcehut.md">Pourquoi le pôle logiciels libres d’Etalab utilise SourceHut</a></em> (<a href="/david/cache/2021/587b80280806281157e5d25c92f7ca68/">cache</a>)</cite></p>
  309. </blockquote>
  310. </details>
  311. </main>
  312. <hr>
  313. <footer>
  314. <p>
  315. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  316. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  317. </svg> Accueil</a> •
  318. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  319. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-rss2"></use>
  320. </svg> Suivre</a> •
  321. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  322. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-user-tie"></use>
  323. </svg> Pro</a> •
  324. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  325. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-mail"></use>
  326. </svg> Email</a> •
  327. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  328. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-hammer2"></use>
  329. </svg> Légal</abbr>
  330. </p>
  331. <template id="theme-selector">
  332. <form>
  333. <fieldset>
  334. <legend><svg class="icon icon-brightness-contrast">
  335. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-brightness-contrast"></use>
  336. </svg> Thème</legend>
  337. <label>
  338. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  339. </label>
  340. <label>
  341. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  342. </label>
  343. <label>
  344. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  345. </label>
  346. </fieldset>
  347. </form>
  348. </template>
  349. </footer>
  350. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  351. <script>
  352. function loadThemeForm(templateName) {
  353. const themeSelectorTemplate = document.querySelector(templateName)
  354. const form = themeSelectorTemplate.content.firstElementChild
  355. themeSelectorTemplate.replaceWith(form)
  356. form.addEventListener('change', (e) => {
  357. const chosenColorScheme = e.target.value
  358. localStorage.setItem('theme', chosenColorScheme)
  359. toggleTheme(chosenColorScheme)
  360. })
  361. const selectedTheme = localStorage.getItem('theme')
  362. if (selectedTheme && selectedTheme !== 'undefined') {
  363. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  364. }
  365. }
  366. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  367. window.addEventListener('load', () => {
  368. let hasDarkRules = false
  369. for (const styleSheet of Array.from(document.styleSheets)) {
  370. let mediaRules = []
  371. for (const cssRule of styleSheet.cssRules) {
  372. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  373. continue
  374. }
  375. // WARNING: Safari does not have/supports `conditionText`.
  376. if (cssRule.conditionText) {
  377. if (cssRule.conditionText !== prefersColorSchemeDark) {
  378. continue
  379. }
  380. } else {
  381. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  382. continue
  383. }
  384. }
  385. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  386. }
  387. // WARNING: do not try to insert a Rule to a styleSheet you are
  388. // currently iterating on, otherwise the browser will be stuck
  389. // in a infinite loop…
  390. for (const mediaRule of mediaRules) {
  391. styleSheet.insertRule(mediaRule.cssText)
  392. hasDarkRules = true
  393. }
  394. }
  395. if (hasDarkRules) {
  396. loadThemeForm('#theme-selector')
  397. }
  398. })
  399. </script>
  400. </body>
  401. </html>