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

1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
1 rok temu
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477
  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 #technique — David Larlet</title>
  13. <meta name="description" content="Publications relatives au tag #technique">
  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. <style type="text/css">
  53. details[open] summary {
  54. display: none;
  55. }
  56. </style>
  57. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  58. <header>
  59. <h1>Publications relatives au tag #technique</h1>
  60. </header>
  61. <nav>
  62. <p class="center">
  63. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  64. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  65. </svg> Accueil</a>
  66. • <a rel="tags" href="/david/#tags-2023" title="Liste de toutes les étiquettes"><svg class="icon icon-tags">
  67. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-tags"></use>
  68. </svg> Étiquettes</a>
  69. </p>
  70. </nav>
  71. <hr>
  72. <main>
  73. <p>Les plus récentes en premier, les 3 premières sont dépliées et ensuite c’est à la demande, bonne exploration !</p>
  74. <h2><a href="/david/2023/02/13/" title="Lien permanent vers cet article">Livre</a> (2023-02-13)</h2>
  75. <blockquote lang="en">
  76. <p>They both would have been ‘good enough’ for my purposes, but since I’m comfortable with Markdown, HTML, and CSS, using Pandoc made the most&nbsp;sense.</p>
  77. <p>If you’re comfortable with Markdown then Pandoc is <em>amazing</em>. It integrates out of the box with both Weasyprint and paged.js. <mark>Either of them is a decent option for generating PDFs.</mark> Paged.js uses headless Chrome, which gives it access to a broader spectrum of CSS features and makes it a little bit&nbsp;flakier.</p>
  78. <p><cite><em><a href="https://www.baldurbjarnason.com/2023/how-i-made-my-book/">Some thoughts on how to make a book, three months after I made one</a></em>&nbsp;(<a href="/david/cache/2023/8cb87dbe21c3f5a7a69735a70daf51c3/">cache</a>)</cite></p>
  79. </blockquote>
  80. <p>Je commence à avoir quelques expériences avec Pandoc si vous voulez que l’on produise un livre numérique ensemble. Pas forcément technique. Potentiellement sur le Web. Dans le meilleur des cas on apprendrait chacun·e des choses et on repartirait à la fois plus autonomes <em>et</em> paradoxalement plus lié·es&nbsp;aussi.</p>
  81. <p>(Dé)livrez-vous.</p>
  82. <h2><a href="/david/2023/02/09/" title="Lien permanent vers cet article">Allumage</a> (2023-02-09)</h2>
  83. <p>Démarrer un nouveau projet avec une nouvelle équipe est un sentiment qui m’est incroyable. J’ai passé mon année 2022&nbsp;à faire —&nbsp;entre autres&nbsp;— des petits produits pour Scopyleft et je ne réalise que maintenant à quel point ça me permet de démarrer plus rapidement aujourd’hui pour un site que l’on fait avec <a href="https://www.maiwann.net/">Maïtané</a> pour la&nbsp;Croix-Rouge.</p>
  84. <p>La structure est toujours un peu la même&nbsp;: des contenus dans du markdown, du déploiement continu de fichiers HTML statiques en utilisant l’intégration continue et l’hébergement de GitLab. Une URL de démonstration dès le premier <em>commit</em>. À partir de là, on peut rajouter des traductions, des images, une navigation particulière mais la base est l’affaire d’un copier-coller de quelques fichiers et d’une centaine de lignes de&nbsp;Python.</p>
  85. <p>Soigner l’allumage technique, c’est avoir plus de temps pour réfléchir à l’accessibilité des données et à l’autonomie des personnes qui vont maintenir le site, c’est permettre de s’adapter aux besoins du public sans être contraint par un cadre, c’est prendre le temps de s’intéresser au problème <em>métier</em> à résoudre. C’est prendre confiance dans de petits outils résilients et&nbsp;frugaux.</p>
  86. <p>Que mon eXpérience de Développeur (DX) s’en trouve être améliorée car j’aspire à cultiver de petits bonsaïs numériques n’est qu’un effet de&nbsp;bord.</p>
  87. <hr />
  88. <blockquote lang="en">
  89. <p>🦕 I have been using it from day one of this blog (né Year II before <abbr title="Loïc Le Meur, coucou Loïc , long time no see!">LLM</abbr>).</p>
  90. <p><cite><em><a href="https://www.padawan.info/en/2023/02/the-content-management-system-of-my-dreams-part-1-a-little-bit-of-history.html">The Content Management System of my Dreams (part 1) - A little bit of history</a></em>&nbsp;(<a href="/david/cache/2023/65169d7164c8bf5790a224d45a95adb7/">cache</a>)</cite></p>
  91. </blockquote>
  92. <blockquote lang="en">
  93. <p>🧱 Think very hard about that word. What exactly is <em>dynamic</em> on your home page? Are you speaking about that Top News thingy? How often do they change? <mark>Are you doing this to satisfy yourself</mark> (some content editors have the same proclivity than developers to throw a tantrum because their new content does not appear instantaneously on the site)? Is this a business requirement or a real need of your&nbsp;users?</p>
  94. <p><cite><em><a href="https://www.padawan.info/en/2023/02/the-content-management-system-of-my-dreams-part-2-the-trouble-with-dynamic-publishing.html">The Content Management System of my Dreams (part 2) - The trouble with dynamic publishing</a></em>&nbsp;(<a href="/david/cache/2023/f8b7c3246cf1d4e06c735ee163be32a0/">cache</a>)</cite></p>
  95. </blockquote>
  96. <blockquote lang="en">
  97. <p>🧭 Since <mark>every direction is technically “North”</mark> from here, we use a grid overlay, to bring some semblance of order to our surroundings. The prevailing winds here come from “Grid&nbsp;North”.</p>
  98. <p><cite><em><a href="https://brr.fyi/posts/south-pole-topography">South Pole Topography</a></em>&nbsp;(<a href="/david/cache/2023/f9e282fb545b5c1f50dfa1c0d98c50e3/">cache</a>)</cite></p>
  99. </blockquote>
  100. <h2><a href="/david/2023/01/24/" title="Lien permanent vers cet article">Capot</a> (2023-01-24)</h2>
  101. <blockquote>
  102. <p>En tant que premier projet public depuis mon arrivée chez Gandi, je suis content d’avoir pu tester tant de nouvelles chose—nouvelles pour moi, nouvelles pour l’équipe… <mark>la possibilité d’apprendre des nouveaux concepts et des nouvelles pratiques,</mark> c’est l’une des principales raisons pour laquelle je pratique ce métier. L’autre raison c’est que ça me permet de réaliser des choses pratiques et utiles dans le respect des personnes qui les&nbsp;utiliseront.</p>
  103. <p><cite><em><a href="https://blog.gandi.net/fr/posts/un-coup-d-oeil-sous-le-capot/">Un coup d’œil sous le capot</a></em>&nbsp;(<a href="/david/cache/2023/e29bd9361e89e31ac21ee21180ec1dfb/">cache</a>)</cite></p>
  104. </blockquote>
  105. <p>J’adore ces retours où il «&nbsp;suffit&nbsp;» d’une nouvelle personne pour qu’un partage devienne&nbsp;possible.</p>
  106. <p>En ce moment, je me questionne sur l’accueil potentiel d’une personne en alternance dans <a href="http://scopyleft.fr/">Scopyleft</a>. C’est un engagement sur deux ans avec 4&nbsp;jours par semaine, c’est énorme. Et en même temps, ça permettrait peut-être à cette personne de ne plus être considérée comme totalement débutante et d’accéder à des postes/situations plus&nbsp;enviables.</p>
  107. <p>Peut-être que ce serait aussi l’occasion de publier davantage d’outils et de pratiques que nous avons et qui ne sont pas documentées et/ou pas&nbsp;publiques.</p>
  108. <p>Tellement de choses peuvent se passer en&nbsp;2&nbsp;ans…</p>
  109. <h2><a href="/david/2023/01/14/" title="Lien permanent vers cet article">Dépendances</a> (2023-01-14)</h2>
  110. <details>
  111. <summary>Déplier pour lire le contenu de la publication</summary>
  112. <blockquote lang="en">
  113. <p>I suspect one of the reasons for this is that Pinafore is written in Svelte v2 and Sapper – both of which are deprecated in favor of Svelte v3 and SvelteKit. Not only is there no migration path from Svelte v2 to v3, but there isn’t one from Sapper to SvelteKit either. (And on top of that, I had to fork Sapper pretty heavily.) Anyone making a bet on learning Pinafore’s tech stack is investing in a dead framework, so <mark>it’s not very attractive for new&nbsp;maintainers.</mark></p>
  114. <p><cite><em><a href="https://nolanlawson.com/2023/01/09/retiring-pinafore/">Retiring Pinafore</a></em>&nbsp;(<a href="/david/cache/2023/b5acd8bbf209345ff300ea8c10c44181/">cache</a>)</cite></p>
  115. </blockquote>
  116. <p>«&nbsp;<span lang=en>Move fast and outdate things.</span>&nbsp;» n’est pas un <em>motto</em> mais une constatation. Je suis assez assidu des écrits de Baldur Bjarnason à ce sujet, que ce soit à travers son <a href="https://www.baldurbjarnason.com/">site</a>, son <a href="https://softwarecrisis.baldurbjarnason.com/">livre</a> ou sa <a href="https://softwarecrisis.dev/">newsletter</a>.</p>
  117. <p>Je crois que je commence à dépasser la sidération et le rejet pour tenter de comprendre un peu mieux les raisons profondes de toute cette complexité et cette vitesse que l’on s’impose, avec une composante historique&nbsp;notamment.</p>
  118. <p>2023, l’année de la maturité&nbsp;😂.</p>
  119. <blockquote lang="en">
  120. <p>The symptoms of pop&nbsp;culture:</p>
  121. <ul>
  122. <li>A “disdain for history”. Pop cultures believe history doesn’t have anything to teach&nbsp;them.</li>
  123. <li>Newer is automatically better. Pop cultures are built on the assumption that anything new or different is superior to established. Or, in other words, older is inherently&nbsp;inferior.</li>
  124. <li><mark>What’s next is going to be superior to what’s now.</mark> Pop cultures exist in perpetual anticipation of the next trend. Their disbelief of history appears to outsiders as a belief in&nbsp;progress.</li>
  125. <li>The “Pop” in “Pop Culture” stands for “popularity”. If it’s popular then it must be&nbsp;right.</li>
  126. </ul>
  127. <p>These traits are deeply irrational but they are the tech industry’s default mode of&nbsp;operation.</p>
  128. <p><cite><em><a href="https://softwarecrisis.dev/letters/tech-is-a-pop-culture/">Tech Companies Are Irrational Pop Cultures</a></em>&nbsp;(<a href="/david/cache/2023/45c1becce6fcd8254f2c99fbc1397018/">cache</a>)</cite></p>
  129. </blockquote>
  130. <hr />
  131. <blockquote lang="en">
  132. <p>We’re starting to see the initial decay hit the parts of the web dev ecosystem that are the furthest away from the cheap money fountains Google and Facebook are providing. Core projects run out of money. Git commits stop. <mark>A dependency you use breaks when one of its dependencies stops working,</mark> leading somebody to fork it with a quick fix or replacement dependency. Bandaid fixes to decaying OSS projects start to crop up in more and more places. We start to see blog posts saying that all we need to do is get enough people to donate money or pay for support. Everything will be fine. Just look at how OpenSSL got turned&nbsp;around.</p>
  133. <p>All of which is bad enough but also misses the&nbsp;point.</p>
  134. <p><cite><em><a href="https://www.baldurbjarnason.com/2021/the-oss-bubble-and-the-blogging-bubble/">The Open-Source Software bubble that is and the blogging bubble that was</a></em>&nbsp;(<a href="/david/cache/2023/d6b891fd250a6ae967ae55564770b67a/">cache</a>)</cite></p>
  135. </blockquote>
  136. <blockquote>
  137. <p>This JavaScript community (if judged by the demographics of this survey) seems to be comprised mostly of folks that are largely building with React, webpack, and Jest. With React on 3.2% of web sites and jQuery at 77.7% (as of January 2023), <mark>that’s a pretty small slice of a much larger&nbsp;community.</mark></p>
  138. <p>We seem to live in different&nbsp;worlds.</p>
  139. <p><cite><em><a href="https://www.zachleat.com/web/javascript-community/">JavaScript, Community</a></em>&nbsp;(<a href="/david/cache/2023/7ff62009f21336b8eb54ea18261bcfb7/">cache</a>)</cite></p>
  140. </blockquote>
  141. </details>
  142. <h2><a href="/david/2023/01/10/" title="Lien permanent vers cet article">Qualité</a> (2023-01-10)</h2>
  143. <details>
  144. <summary>Déplier pour lire le contenu de la publication</summary>
  145. <blockquote>
  146. <p>Quiconque cherche à circonscrire une discipline en lui imposant un cadre ne cherche généralement qu’à protéger son œuvre, et il le fait en perpétuant les standards qui ont permis son émergence. Celui-ci essaie de convaincre les générations à venir qu’elles doivent suivre les règles qu’il a édictées si elles comptent parvenir à l’excellence. Mais, comme disait Charles Bukowski, «&nbsp;il est quatre heures et demie du matin, il sera toujours quatre heures et demie du&nbsp;matin…&nbsp;».</p>
  147. <p>Nous sommes à ce point focalisés sur le chemin que nous nous efforçons de suivre, en voulant toujours tout faire au mieux, armés d’une dévotion sans faille pour notre discipline <mark>alors que les œillères de la peur nous empêchent d’envisager des terrains inconnus,</mark> que nos yeux restent fixés sur cette route, sur ces mains qui prennent appui sur des genoux. Et nous ne réalisons pas que nous ne faisons que suivre les règles promulguées par un homme qui a un jour disputé une course contre des chevaux, ou par un autre qui s’est frotté à un sommet de plus de huit mille mètres sans oxygène, ou par un autre encore qui a décidé de laisser chez lui ses pitons, ses cordes et la sécurité pour ne faire qu’un avec les murs à escalader. Nous suivons les lois de ceux qui en ont enfreint de plus&nbsp;anciennes.</p>
  148. <p><cite><em>Au-delà des sommets</em>, Kilian&nbsp;Jornet</cite></p>
  149. </blockquote>
  150. <p>On parlait de code et de qualité avec <a href="https://thom4.net/">Thomas</a>. Je lui faisais part de ma frustration vis-à-vis d’un code qui n’avait pas été écrit par moi et que je trouvais problématique. En creusant un peu (merci&#8239;!), je réalise que ce qui coince est au niveau de la pérennité et de la transmission. Et j’ai aussi conscience de produire moi-même du code qui serait difficile à reprendre par d’autres personnes n’ayant pas les mêmes&nbsp;aspirations/compétences.</p>
  151. <p>En Python, on a la chance de pouvoir automatiser certaines conversions/vérifications qui tendent à aller vers une certaine uniformisation (et donc universalité&#8239;?)&nbsp;: <a href="https://github.com/psf/black">black</a>, <a href="https://flake8.pycqa.org/">flake8</a>, <a href="https://pypi.org/project/isort/">isort</a> ou <a href="https://mypy.readthedocs.io/">mypy</a> par&nbsp;exemple.</p>
  152. <p>Pour aller plus loin, le code en lui-même n’est peut-être pas si critique, mais ce que l’on a appris en le concevant et l’utilisant l’est bien davantage. C’est cette transmission qu’il est important de rendre possible au sein de l’équipe. Outiller la base commune est un moyen de <strong>plus rapidement</strong> passer à l’étape de partage des concepts importants/métiers, en ce souciant moins de la&nbsp;forme.</p>
  153. <p>Et peut-être au contraire, que cette <strong>vitesse</strong> acquise nous empêche d’échanger sur des concepts importants&#8239;? Des envies différentes&#8239;? Des choix à côté desquels on peut passer par manque&nbsp;d’attention.</p>
  154. <blockquote lang="en">
  155. <p>Tradition (n.): Peer pressure from dead&nbsp;people.</p>
  156. <p><cite><em>Lu plusieurs fois sur&nbsp;masto</em></cite></p>
  157. </blockquote>
  158. <hr />
  159. <blockquote>
  160. <p>🦋 Depuis quelques années, j’essaie d’écrire un code le plus direct&nbsp;possible.</p>
  161. <p>Mon objectif&nbsp;: diminuer au maximum ma charge&nbsp;cognitive.</p>
  162. <p><cite><em><a href="https://sklein.xyz/garden/020-keep-it-simple-stupid-le-plus-longtemps-possible/">Keep it simple, stupid le plus longtemps possible</a></em>&nbsp;(<a href="/david/cache/2023/646ebfa25432bc6b653e524b52d25c9a/">cache</a>)</cite></p>
  163. </blockquote>
  164. <blockquote lang="en">
  165. <p>⛵️ Many of the tools that we thought we could rely on broke down, whether it is Apple products, or software that require subscription services, DRM, etc. As an artist you spend time developing a skill, <mark>you become a Photoshop illustrator.</mark> When your connection to the internet fails and that the software locks up, that skill that you thought was yours was actually entirely owned by someone, and can be taken&nbsp;away.</p>
  166. <p>Even though we’ve been paying for this sort of software for years, the moment that you can’t have access to authenticate yourself that skill is gone. We didn’t expect this, it scared&nbsp;us.</p>
  167. <p><cite><em><a href="https://100r.co/site/weathering_software_winter.html">weathering software winter</a></em>&nbsp;(<a href="/david/cache/2023/c564325b28ec854b6b098950df5c8c8f/">cache</a>)</cite></p>
  168. </blockquote>
  169. <blockquote lang="en">
  170. <p>🔎 It’s important to remember concepts and high level approaches, but don’t worry about remembering the details. You can always look that stuff up when you need&nbsp;it.</p>
  171. <p><cite><em><a href="https://gomakethings.com/you-dont-have-to-remember-everything-to-be-a-good-programmer/">You don’t have to remember everything to be a good programmer</a></em>&nbsp;(<a href="/david/cache/2023/2f4b8ec8f6fd2cbc48a04dcac2cc7d24/">cache</a>)</cite></p>
  172. </blockquote>
  173. </details>
  174. <h2><a href="/david/2023/01/07/" title="Lien permanent vers cet article">Dette</a> (2023-01-07)</h2>
  175. <details>
  176. <summary>Déplier pour lire le contenu de la publication</summary>
  177. <blockquote>
  178. <p>La dette c’est un problème de riche. Ça arrive après, quand on a trouvé le bon produit, qu’on a trouvé sa cible, qu’on a prouvé qu’on était capable d’ac­qué­rir des clients. Là on aura aussi le finan­ce­ment qui va avec pour embau­cher des ingé­nieurs qui vont <mark>refaire ce qui doit l’être,</mark> et élimi­ner une bonne partie des travaux qu’on avait remis à plus&nbsp;tard.</p>
  179. <p>L’enjeu c’est d’ar­ri­ver jusque&nbsp;là.</p>
  180. <p><cite><em><a href="https://n.survol.fr/n/la-dette-technique">La dette technique - Carnet de notes</a></em>&nbsp;(<a href="/david/cache/2023/934ed9f96be582e35b3c8cf8fc0859e5/">cache</a>)</cite></p>
  181. </blockquote>
  182. <p>La seule fois dans ma carrière (ouais ça fait tout de suite vieux là…) où on a réussi à éponger une dette technique initiale a été sur <a href="https://mesconseilscovid.sante.gouv.fr">MesConseilsCovid</a> lorsqu’on a dû partir <a href="/david/2020/05/26/">comme des fusées</a> avec <a href="https://ronan.amicel.net/">Ronan</a> parce que le gouvernement français ne pouvait pas se douter qu’on allait déconfiner la population à un moment&nbsp;🤷.</p>
  183. <p>Les conditions qui ont rendu possible cela sont&nbsp;multiples&nbsp;:</p>
  184. <ul>
  185. <li>développeurs expérimentés qui se connaissent et qui se sont déjà pincé les doigts plusieurs fois sur du code non testé/à l’arrache à moyen&nbsp;terme&#8239;;</li>
  186. <li>équipe compréhensive qui a pris en compte nos retours et notre endettement volontaire des premières semaines, effort de pédagogie de notre&nbsp;côté&#8239;;</li>
  187. <li>outil relativement simple qui a consisté au début à une preuve de concept permettant de mesurer les usages et attentes, on n’était pas dans une course à la&nbsp;fonctionnalité&#8239;;</li>
  188. <li>budget suffisant pour savoir qu’il serait possible de financer cette dette à moyen terme («&nbsp;Quoi qu’il en coûte&nbsp;», etc&nbsp;#haha).</li>
  189. </ul>
  190. <p>Il faut une sacré conjonction pour que toutes ces conditions soient réunies. De plus, ça a demandé pas mal de rigueur alors que la dette n’était finalement que d’un mois, peut-être&nbsp;moins.</p>
  191. <p>Dans une précédente expérience <em>startup</em>, on avait trop mis l’accent sur la technique/le produit et pas assez sur son adoption/communication, ça peut arriver aussi. J’ai beaucoup appris de cet échec sur l’importance de ce qui est <em>hors</em> du&nbsp;code.</p>
  192. <hr />
  193. <blockquote lang="en">
  194. <p>😔 The most obvious way an online community is like a bar is that bars serve alcohol, and alcohol makes people loud and stupid. It actually depresses your hearing, so you can’t hear yourself talk as well, <mark>so you speak louder.</mark> And a room full of people speaking louder means a very boisterous room. And of course, alcohol reduces inhibition, so you say things you might not usually&nbsp;say.</p>
  195. <p>The parallels to online behavior are easy to see. Online, people are much more willing to type things that they’d never say in&nbsp;person.</p>
  196. <p><cite><em><a href="https://powazek.com/posts/3571">A community isn’t a garden, it’s a bar.</a></em>&nbsp;(<a href="/david/cache/2023/fb08217a583922fd319fabb55f34a4f3/">cache</a>)</cite></p>
  197. </blockquote>
  198. <blockquote lang="en">
  199. <p>🔙 It can be uncomfortable, that clearing away. It can be deeply unpleasant. But it’s also useful. It’s a sign of what you need to change. What I found was that <mark>when I gave myself permission to really feel that unpleasantness,</mark> when I didn’t try to get comfortable with it or avoid it, I opened some space to move: towards a reconfiguration or revision or reimagining of what my work&nbsp;was.</p>
  200. <p><cite><em><a href="https://aworkinglibrary.com/writing/reentry">Reentry | A Working Library</a></em>&nbsp;(<a href="/david/cache/2023/7258248bb534fddb277bf6148cd3ffbf/">cache</a>)</cite></p>
  201. </blockquote>
  202. </details>
  203. <h2><a href="/david/2023/01/05/" title="Lien permanent vers cet article">Instanseul</a> (2023-01-05)</h2>
  204. <details>
  205. <summary>Déplier pour lire le contenu de la publication</summary>
  206. <blockquote>
  207. <p>Peut-être que la centralisation d’une identité mastodon est une hérésie. 🤔</p>
  208. <p>Au même titre que l’on s’adapte au contexte des lieux physiques, je pourrais avoir un compte sur piaille.fr pour parler dans un contexte français, un autre sur jasette.facil.services pour tout ce qui est québécois, etc.</p>
  209. <p>Une identité distribuée, fédiversifiée, qui serait <mark>la représentation numérique d’une personnalité complexe et moins&nbsp;lissée.</mark></p>
  210. <p>Il y a tant à&nbsp;désapprendre.</p>
  211. <p><cite><em><a href="https://mastodon.social/@dav/109395748607478355">Un pouet du 23&nbsp;novembre 2022</a> (ancienne&nbsp;instance)</em></cite></p>
  212. </blockquote>
  213. <p>Un retour sur ma migration Mastodon depuis <a href="https://mastodon.social/@dav">https://mastodon.social/@dav</a> vers <a href="https://fedi.larlet.fr/@david">https://fedi.larlet.fr/@david</a> (avec @david@larlet.fr en <em>username</em>) en utilisant <a href="https://masto.host/">masto.host</a> en arrière&nbsp;plan.</p>
  214. <p>Quelques motivations pour&nbsp;bouger&nbsp;:</p>
  215. <ul>
  216. <li>la décentralisation rendue possible par les protocoles vs. ma participation à une instance centrale/principale/historique qui n’est pas terrible compte tenu de mes&nbsp;compétences/connaissances&#8239;;</li>
  217. <li>la consommation des ressources des autres (et savoir combien ça consomme en vrai), au-delà de l’argent, je voulais avoir une idée de ce que ça implique sans pour autant&nbsp;l’auto-héberger&#8239;;</li>
  218. <li>la modération (im)possible à une telle ampleur avec une équipe/politique qui n’est pas limpide et des conflits d’intérêts possibles&nbsp;hébergeur/développeur&#8239;;</li>
  219. <li>le contrôle et la pérennité des endroits où je m’exprime en ligne sont importants pour&nbsp;moi&#8239;;</li>
  220. <li>le côté expérimental/geek de la chose en jouant avec les&nbsp;protocoles&nbsp;🧑‍🔬.</li>
  221. </ul>
  222. <p>Ce qui est problématique à ce&nbsp;jour&nbsp;:</p>
  223. <ul>
  224. <li>la migration a été un peu chaotique car j’avais déjà tenté plein de trucs à la main à base de <code>webfinger</code> sur ce domaine et il restait des traces et du cache, ma&nbsp;faute&#8239;;</li>
  225. <li>lors de la migration, il semble y avoir des (serveurs de) comptes qui n’ont pas répondu à temps et qui suivent encore l’ancien profil, sachant que je ne peux initier une redirection/récupération que tous les 30&nbsp;jours sur mastodon.social ça fait pas mal de personnes qui ne savent pas ce qui se passe, j’imagine que je suis aussi des comptes fantômes sans le&nbsp;savoir&#8239;;</li>
  226. <li>lors du déclenchement de la migration, vous n’avez plus accès à grand chose à part à vos archives, il n’est pas possible de modifier son ancien profil par exemple pour signifier que c’est un compte redirigé auquel il ne faut plus&nbsp;s’abonner&#8239;;</li>
  227. <li>à ma connaissance, si quelqu’un·e fait un message direct à l’ancien compte, iel n’a aucun moyen de savoir que celui-ci est redirigé et que je n’aurai pas les moyens d’être notifié et de&nbsp;répondre&#8239;;</li>
  228. <li>je n’ai pas facilement accès aux réponses de messages hors de mon instance (à part s’il s’agit d’une personne suivie qui répond), il faut que j’aille sur l’URL de l’instance en question pour tout voir, ça réduit beaucoup l’aspect social de la chose, surtout en suivant très peu de&nbsp;personnes&#8239;;</li>
  229. <li>le flux RSS n’est pas redirigé depuis https://mastodon.social/@dav.rss vers https://fedi.larlet.fr/@david.rss ce que je peux comprendre techniquement mais qui n’est pas terrible (<a href="https://github.com/mastodon/mastodon/issues/22404">issue ici</a>)&#8239;;</li>
  230. <li>je ne sais pas comment fonctionne la découverte des comptes mais il y a clairement moins de personnes (connues) qui s’abonnent depuis la migration, je ne sais pas si c’est un défaut d’eXperience Utilisateur·ice ou autre (je doute que ce soit la <em>timeline</em> locale qui puisse être en cause vu le flux sur&nbsp;mastodon.social)&#8239;;</li>
  231. <li>j’ai l’impression de ne pas voir tous les messages mais ça m’arrivait déjà avant avec deux clients différents donc ça ne doit pas dépendre de&nbsp;l’instance&#8239;;</li>
  232. <li>je n’ai reçu aucune des nombreuses notifications sur mon ancien compte, il m’a fallu le réactiver pour m’en rendre&nbsp;compte&#8239;!</li>
  233. </ul>
  234. <p>Ce que j’ai&nbsp;découvert&nbsp;:</p>
  235. <ul>
  236. <li>les administrateur·ices d’instances ont un résumé des mots-dièses les plus employés sur l’instance (et la possibilité de les mettre en&nbsp;avant)&#8239;;</li>
  237. <li>je consomme beaucoup d’espace disque (3&#8239;Gb à ce jour, après un mois) alors que je publie peu, tout ce qui passe dans ma <em>timeline</em> semble être récupéré localement, je me demande s’il y a un option pour faire le&nbsp;ménage&#8239;;</li>
  238. <li>les interactions avec les personnes suivies restent quasi-instantanées, merci <a href="https://tinysubversions.com/notes/reading-activitypub/">ActivityPub</a>&nbsp;(<a href="/david/cache/2023/8440372c6df33b8f23cfce7a9eca5961/">cache</a>)&#8239;;</li>
  239. <li>je n’ai eu aucun problème de <em>spam</em> jusqu’à présent ni d’instance à&nbsp;bloquer&#8239;;</li>
  240. <li>je ne sais pas si c’est la migration et/ou la <a href="/david/2022/11/12/">vague de novembre</a> (et/ou les activités hivernales) mais j’interagis beaucoup moins sur le réseau, d’une certaine manière ça m’a motivé pour republier régulièrement par&nbsp;ici&#8239;;</li>
  241. <li>j’ai toujours ce truc qui me trotte en tête de ne pas passer par Mastodon mais d’avoir un truc semi-statique et certains ont déjà un peu creusé&nbsp;depuis.</li>
  242. </ul>
  243. <p>Est-ce que tout cela en valait vraiment la peine&#8239;? Ce n’est pas encore bien évident… j’ai une vraie frustration à ne pas voir toutes les réponses, ce qui était déjà vrai auparavant mais sur une instance populaire ça se voit beaucoup moins (ce qui est peut-être encore davantage un souci&#8239;!). Pareil lorsque je veux suivre une nouvelle personne, il faut que j’aille sur sa page de profil sinon je n’ai pas (toutes) ses publications. Depuis Toot! sur iOS c’est extrêmement&nbsp;fastidieux.</p>
  244. <p>Cela m’a permis d’explorer aussi la résilience du protocole et contrairement à ce qu’il se passe avec les courriels ça ne semble pas retenter les envois. Les interfaces actuelles étant assez silencieuses sur ces erreurs, c’est dommage, même en asynchrone ça serait bien&nbsp;utile.</p>
  245. <p>D’un autre côté, j’ai appris pas mal de choses sur les rouages et le transit des publications et des&nbsp;interactions.</p>
  246. <p>Est-ce que je recommanderais aux nouvelles et nouveaux venu·es de commencer avec une instance solo&#8239;? <strong>Sûrement pas.</strong> C’est déjà fastidieux de comprendre le concept d’instance, si en plus il y a tous les problèmes cités ci-dessus qui s’ajoutent et créent davantage de confusion ça doit donner une expérience&nbsp;décevante.</p>
  247. <p>En même temps, une instance solo fait probablement peu de sens pour un réseau social architecturé comme Mastodon et on en revient à mon pouet initial (oui vous savez, tout là-haut)&nbsp;: plusieurs comptes avec plusieurs identités. En revanche, pour un collectif —&nbsp;au hasard <a href="http://scopyleft.fr/">Scopyleft</a>&nbsp;— je vois un intérêt à avoir une instance dédiée. Ça pourrait permettre d’embarquer des personnes en douceur&nbsp;aussi…</p>
  248. <hr />
  249. <blockquote lang="en">
  250. <p>✍️ Hacking on ActivityPub was a fun project, but it was chaotic. ActivityPub in practice is a grab-bag of specifications and implementation-specific details. <mark>It was hard to find documentation</mark> for a lot of things and hard to debug requests that didn’t have their intended effect on&nbsp;Mastodon.</p>
  251. <p>ActivityPub is a distributed architecture, so it’s going to be a lot more complicated than&nbsp;RSS.</p>
  252. <p><cite><em><a href="https://macwright.com/2022/12/09/activitypub.html">Playing with ActivityPub</a></em>&nbsp;(<a href="/david/cache/2023/4be6162587a2171b64fd7753b7fe410b/">cache</a>)</cite></p>
  253. </blockquote>
  254. <blockquote lang="en">
  255. <p>😬 I found this one particularly hard - it was almost impossible to find an example of what a Follow message looks like, so I ended up spending a lot of time following my account from a Mastodon client and seeing what data was HTTP POSTed; <strong>and</strong> I also <mark>need to maintain the state of who followed me</mark> (so I can send them messages&nbsp;later).</p>
  256. <p><cite><em><a href="https://paul.kinlan.me/adding-activity-pub-to-your-static-site/">Adding ActivityPub to your static site</a></em>&nbsp;(<a href="/david/cache/2023/1676902071b6e1e7e0d3395bc47956b5/">cache</a>)</cite></p>
  257. </blockquote>
  258. <blockquote lang="en">
  259. <p>💯 A virtual Mastodon monopoly is not good for almost anyone, I think - I'm actually quite excited for Tumblr to implement ActivityPub, because it stands a chance of forcing protocol changes and improvements to be discussed, rather than directed almost entirely by one&nbsp;project.</p>
  260. <p><cite><em><a href="https://aeracode.org/2022/12/05/understanding-a-protocol/">Understanding A Protocol</a></em>&nbsp;(<a href="/david/cache/2023/4b5bae499ad13fe0f5413d8c7b77c09a/">cache</a>)</cite></p>
  261. </blockquote>
  262. <blockquote lang="en">
  263. <p>But there’s one major difference to all the problem’s we've witnessed with social media so far. It will stay an open space that we can co-design. Even though Eugen Rochko now seems to be a super nice guy, he has all the freedom to abandon Mastodon, make some bad decisions or to do a hard right turn and follow Elon. It doesn’t matter. <mark>Always remember that Mastodon is just one door.</mark> You no longer like this door? Open another one. Mastodon is not THE&nbsp;platform.</p>
  264. <p><cite><em><a href="https://bastianallgeier.com/notes/network-effect">Network effect</a></em>&nbsp;(<a href="/david/cache/2023/745057669a6d4c8fd3c5ce1c5dd81b8c/">cache</a>)</cite></p>
  265. </blockquote>
  266. <blockquote lang="en">
  267. <p>😅 Self-hosting Mastodon is all the rage, but having to deal with a full-blown installation of Ruby (which is always a pain to install properly, even if you use rbenv), plus the abomination that is Sidekiq and the overall Rube Goldberg-esque architectural approach that is almost mandatory to deal with <mark>the complexities of ActivityPub is just something I don’t want to maintain.</mark> Ever. Even inside&nbsp;Docker.</p>
  268. <p><cite><em><a href="https://taoofmac.com/space/blog/2022/12/21/0900">Getting Takahē to run on Piku</a></em>&nbsp;(<a href="/david/cache/2023/a889fa6d4e07bdc390d44461ed6dce21/">cache</a>)</cite></p>
  269. </blockquote>
  270. <blockquote lang="en">
  271. <p>Having spent time on Mastodon, I now realize how hilariously wrong I was about how moderation would work. <mark>I was seeing Mastodon through the lenses of Twitter, rather than as a different culture with different technology.</mark> I’m now fairly confident in saying Mastodon is friendlier than Twitter and will remain so, regardless of who and how many&nbsp;join.</p>
  272. <p><cite><em><a href="https://escapingtech.com/tech/opinions/i-was-wrong-about-mastodon-moderation.html">I Was Wrong About Mastodon</a></em>&nbsp;(<a href="/david/cache/2023/daa39b64681b0574bbe189e80c8a4653/">cache</a>)</cite></p>
  273. </blockquote>
  274. </details>
  275. </main>
  276. <hr>
  277. <footer>
  278. <p>
  279. <nobr>
  280. <a href="/david/" title="Aller à l’accueil"
  281. ><svg class="icon icon-home">
  282. <use
  283. xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-home"
  284. ></use>
  285. </svg>
  286. Accueil</a
  287. >
  288. </nobr>
  289. <nobr>
  290. <a href="/david/log/" title="Accès au flux RSS"
  291. ><svg class="icon icon-rss2">
  292. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-rss2"></use>
  293. </svg>
  294. Suivre</a
  295. >
  296. </nobr>
  297. <nobr>
  298. <a href="http://larlet.com" title="Go to my English profile" data-instant
  299. ><svg class="icon icon-user-tie">
  300. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-user-tie"></use>
  301. </svg>
  302. Pro</a
  303. >
  304. </nobr>
  305. <nobr>
  306. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"
  307. ><svg class="icon icon-mail">
  308. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-mail"></use>
  309. </svg>
  310. Email</a
  311. >
  312. </nobr>
  313. <nobr>
  314. <abbr
  315. class="nowrap"
  316. title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"
  317. ><svg class="icon icon-hammer2">
  318. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-hammer2"></use>
  319. </svg>
  320. Légal</abbr
  321. >
  322. </nobr>
  323. </p>
  324. <template id="theme-selector">
  325. <form>
  326. <fieldset>
  327. <legend><svg class="icon icon-brightness-contrast">
  328. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-brightness-contrast"></use>
  329. </svg> Thème</legend>
  330. <label>
  331. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  332. </label>
  333. <label>
  334. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  335. </label>
  336. <label>
  337. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  338. </label>
  339. </fieldset>
  340. </form>
  341. </template>
  342. </footer>
  343. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  344. <script>
  345. function loadThemeForm(templateName) {
  346. const themeSelectorTemplate = document.querySelector(templateName)
  347. const form = themeSelectorTemplate.content.firstElementChild
  348. themeSelectorTemplate.replaceWith(form)
  349. form.addEventListener('change', (e) => {
  350. const chosenColorScheme = e.target.value
  351. localStorage.setItem('theme', chosenColorScheme)
  352. toggleTheme(chosenColorScheme)
  353. })
  354. const selectedTheme = localStorage.getItem('theme')
  355. if (selectedTheme && selectedTheme !== 'undefined') {
  356. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  357. }
  358. }
  359. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  360. window.addEventListener('load', () => {
  361. let hasDarkRules = false
  362. for (const styleSheet of Array.from(document.styleSheets)) {
  363. let mediaRules = []
  364. for (const cssRule of styleSheet.cssRules) {
  365. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  366. continue
  367. }
  368. // WARNING: Safari does not have/supports `conditionText`.
  369. if (cssRule.conditionText) {
  370. if (cssRule.conditionText !== prefersColorSchemeDark) {
  371. continue
  372. }
  373. } else {
  374. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  375. continue
  376. }
  377. }
  378. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  379. }
  380. // WARNING: do not try to insert a Rule to a styleSheet you are
  381. // currently iterating on, otherwise the browser will be stuck
  382. // in a infinite loop…
  383. for (const mediaRule of mediaRules) {
  384. styleSheet.insertRule(mediaRule.cssText)
  385. hasDarkRules = true
  386. }
  387. }
  388. if (hasDarkRules) {
  389. loadThemeForm('#theme-selector')
  390. }
  391. })
  392. </script>
  393. </body>
  394. </html>