Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

index.html 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  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>
  13. Tag #scopyleft
  14. — David Larlet</title>
  15. <meta name="description" content="Publications relatives au tag #scopyleft">
  16. <!-- That good ol' feed, subscribe :). -->
  17. <link rel="alternate"
  18. type="application/atom+xml"
  19. title="Feed"
  20. href="/david/log/">
  21. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  22. <link rel="apple-touch-icon"
  23. sizes="180x180"
  24. href="/static/david/icons2/apple-touch-icon.png">
  25. <link rel="icon"
  26. type="image/png"
  27. sizes="32x32"
  28. href="/static/david/icons2/favicon-32x32.png">
  29. <link rel="icon"
  30. type="image/png"
  31. sizes="16x16"
  32. href="/static/david/icons2/favicon-16x16.png">
  33. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  34. <link rel="mask-icon"
  35. href="/static/david/icons2/safari-pinned-tab.svg"
  36. color="#07486c">
  37. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  38. <meta name="msapplication-TileColor" content="#f7f7f7">
  39. <meta name="msapplication-config"
  40. content="/static/david/icons2/browserconfig.xml">
  41. <meta name="theme-color"
  42. content="#f7f7f7"
  43. media="(prefers-color-scheme: light)">
  44. <meta name="theme-color"
  45. content="#272727"
  46. media="(prefers-color-scheme: dark)">
  47. <!-- Is that even respected? Retrospectively? What a shAItshow…
  48. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  49. <meta name="robots" content="noai, noimageai">
  50. <!-- Documented, feel free to shoot an email. -->
  51. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  52. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  53. <link rel="preload"
  54. href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2"
  55. as="font"
  56. type="font/woff2"
  57. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  58. crossorigin>
  59. <link rel="preload"
  60. href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2"
  61. as="font"
  62. type="font/woff2"
  63. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  64. crossorigin>
  65. <link rel="preload"
  66. href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2"
  67. as="font"
  68. type="font/woff2"
  69. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  70. crossorigin>
  71. <link rel="preload"
  72. href="/static/david/css/fonts/triplicate_t3_regular.woff2"
  73. as="font"
  74. type="font/woff2"
  75. media="(prefers-color-scheme: dark)"
  76. crossorigin>
  77. <link rel="preload"
  78. href="/static/david/css/fonts/triplicate_t3_bold.woff2"
  79. as="font"
  80. type="font/woff2"
  81. media="(prefers-color-scheme: dark)"
  82. crossorigin>
  83. <link rel="preload"
  84. href="/static/david/css/fonts/triplicate_t3_italic.woff2"
  85. as="font"
  86. type="font/woff2"
  87. media="(prefers-color-scheme: dark)"
  88. crossorigin>
  89. <script>
  90. function toggleTheme(themeName) {
  91. document.documentElement.classList.toggle(
  92. 'forced-dark',
  93. themeName === 'dark'
  94. )
  95. document.documentElement.classList.toggle(
  96. 'forced-light',
  97. themeName === 'light'
  98. )
  99. }
  100. const selectedTheme = localStorage.getItem('theme')
  101. if (selectedTheme !== 'undefined') {
  102. toggleTheme(selectedTheme)
  103. }
  104. </script>
  105. <style type="text/css">
  106. details[open] summary {
  107. display: none;
  108. }
  109. </style>
  110. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick"
  111. data-instant-intensity="viewport-all">
  112. <header>
  113. <h1>Publications relatives au tag #scopyleft</h1>
  114. </header>
  115. <nav>
  116. <p class="center">
  117. <a href="/david/" title="Aller à l’accueil">
  118. <svg class="icon icon-home">
  119. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  120. </svg>
  121. Accueil</a>
  122. • <a rel="tags"
  123. href="/david/#tags-2023"
  124. title="Liste de toutes les étiquettes">
  125. <svg class="icon icon-tags">
  126. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-tags"></use>
  127. </svg>
  128. Étiquettes</a>
  129. </p>
  130. </nav>
  131. <hr>
  132. <main>
  133. <p>Les plus récentes en premier, les 3 premières sont dépliées et ensuite c’est à la demande, bonne exploration !</p>
  134. <h2>
  135. <a href="/david/2023/09/13/" title="Lien permanent vers cet article">Documentation</a> (2023-09-13)
  136. </h2>
  137. <blockquote lang="en">
  138. <p>The deeper I dig into my research, the more case studies and examples I find. Institutional memory is frequently overlooked and undervalued - until the moment when someone needs access to memory right now, and of course by then it’s too late. Good remembering means turning tacit knowledge into explicit knowledge; <mark>if all your tacit knowledge has left the building inside the heads of former colleagues, it’s lost to you&nbsp;forever.</mark></p>
  139. <p>So I think there’s a case for allowing and encouraging documentation for teams, just as much as documentation for software. Writing that documentation is a task, It needs to be part of someone’s job. Every organisation needs a little bit of storytelling capability, to help make that job&nbsp;easier.</p>
  140. <p><cite><em><a href="https://gilest.org/htr.html">How teams remember</a></em>&nbsp;(<a href="/david/cache/2023/5a9fa7db62f151b8a863b949ed4e9e5f/">cache</a>)</cite></p>
  141. </blockquote>
  142. <p>J’ai développé un outil pour Scopyleft l’année dernière qui s’intitule «&nbsp;Le Voilier&nbsp;». Il s’agit d’un lieux où l’on consigne nos discussions, propositions et résolutions. C’était important car il y avait pas mal de perte/dilution d’information orale, ce qui est classique en équipes distribuées qui grandissent. Depuis un an et demi, il y a 381&nbsp;sujets qui ont été consignés dans ce <a href="/david/2022/12/19/">journal</a> de bord collectif, c’est un outil vivant. Des fonctionnalités bourgeonnent ou passent au compost au gré des besoins, c’est assez plaisant d’avoir la flexibilité de connaître le générateur du site (350&nbsp;lignes de Python à ce jour) et de pouvoir sortir du cadre sans que ce soit trop&nbsp;douloureux.</p>
  143. <p>Cela a commencé avec un site totalement statique qui était (re)construit par l’intégration continue à chaque ajout de fichier <em>markdown</em> avec les bonnes méta-données dans un dossier dédié. Classique. C’était facile pour les personnes familières de git(lab) mais moins pratique pour celles qui ne le sont pas, notamment lorsqu’il faut prendre des notes en séance. L’expérience utilisateur·ice des forges logicielles n’est pas vraiment adaptée à un tel usage, surtout dans un contexte de charge cognitive&nbsp;élevée.</p>
  144. <p>J’ai donc transformé cela en site <em>semynamique</em> 🌱&nbsp;: on reste sur la même infrastructure mais je rajoute un formulaire (toujours statique) qui va soumettre les données vers une seule fonction Python/wsgi qui consiste à créer le fichier <em>markdown</em> conforme aux attentes de l’outil et à le pousser sur le dépôt. Cela a rendu l’outil plus accessible et avenant. Depuis, j’ai décliné ce principe pour d’autres <em>scenarii</em> avec de bons&nbsp;retours.</p>
  145. <p>Avec l’expérience et un petit script de déploiement, cela me prend moins d’une heure à mettre en place sur AlwaysData avec un strict minimum de maintenance. J’ai une relative tranquillité d’esprit aussi car seule une petite partie du site serait inutilisable si le service tombait et il reste la possibilité d’ajouter des fichiers dans git à la main s’il y avait une&nbsp;urgence.</p>
  146. <p>Je ne sais pas trop quoi faire à partir de là, je me dis que ça pourrait en inspirer d’autres. Entre les sites purement statiques et les usines à gaz en JS, il y a tout un dégradé de couleurs enthousiasmantes, certaines restant à&nbsp;découvrir&#8239;!</p>
  147. <p><em>Peut-être qu’à un moment, on pourrait aussi proposer un catalogue d’outils utiles aux coopératives — à l’instar de <a href="https://paheko.cloud/">Paheko</a> pour les&nbsp;associations…</em></p>
  148. <hr />
  149. <blockquote>
  150. <p>🏡 Une grande partie de mon entourage est déjà propriétaire. Ça en dit long sur la sphère dans laquelle j’évolue. J’ai l’impression que le fait d’acheter une maison fait partie de la liste non-négociable d’une vie réussie dans notre monde capitaliste. Jusqu’à très récemment, je n’avais jamais interrogé ce&nbsp;postulat.</p>
  151. <p><cite><em><a href="https://ynote.hk/mots/argent/propriete.html">Propriété par Fanny Cheung</a></em>&nbsp;(<a href="/david/cache/2023/37b0c9d01d6f788bee398b64377cb6c1/">cache</a>)</cite></p>
  152. </blockquote>
  153. <blockquote lang="en">
  154. <p>🔨 Yes, it’s fair to point out that AI in its many different software manifestations can be considered a tool. But that is not the point of the statement. The word to watch out for is “just”. If someone were to say ”it’s a tool”, that makes sense. But the word “just” is there to shed&nbsp;accountability.</p>
  155. <p>Hence my concern is that the statement itself removes accountability and consideration for the bigger picture effects. <mark>Saying something is just a tool creates the faulty mental model</mark> of all tools having interchangeable qualities from an ethical perspective, which simply isn’t&nbsp;true.</p>
  156. <p><cite><em><a href="https://axbom.com/hammer-ai/">If a hammer was like AI…</a></em>&nbsp;(<a href="/david/cache/2023/aac3c4716f9ff73e7409ecbc9550491b/">cache</a>)</cite></p>
  157. </blockquote>
  158. <blockquote lang="en">
  159. <p>💯 When it comes to front-end development, I’m worried that we’ve reached a state where the more complex over-engineered approach is viewed as the&nbsp;default.</p>
  160. <p>I may be committing a fundamental attribution error here, but I think that we’ve reached this point not because of any consideration for users, but rather <mark>because of how it makes us developers feel.</mark> Perhaps building an old-fashioned website that uses HTML for navigations feels too easy, like it’s beneath us. But building an “app” that requires JavaScript just to render text on a screen feels like <em>real</em>&nbsp;programming.</p>
  161. <p><cite><em><a href="https://adactio.com/journal/20442">Multi-page web apps</a></em>&nbsp;(<a href="/david/cache/2023/efc348f6559d55129657c7ba9d740b76/">cache</a>)</cite></p>
  162. </blockquote>
  163. <h2>
  164. <a href="/david/2023/09/06/" title="Lien permanent vers cet article">Retour</a> (2023-09-06)
  165. </h2>
  166. <blockquote lang="en">
  167. <p>The app will eventually become obsolete. It’s the plain text files I create that are designed to last. Who knows if anyone will want to read them besides me, but <em>future me</em> is enough of an audience to make it&nbsp;worthwhile.</p>
  168. <p><cite><em><a href="https://stephango.com/file-over-app">File over app - Steph Ango</a></em>&nbsp;(<a href="/david/cache/2023/20d288eb47779c4f1b3f36fb86aa7108/">cache</a>)</cite></p>
  169. </blockquote>
  170. <p>Je vais revenir délicatement publier par ici. Ces derniers mois ont été… mmh, agités… mais je commence à retrouver un certain équilibre. Beaucoup de phases qui ne s’articulaient pas comme je l’espérais, d’attention trop superficielle mal compensée, au milieu d’une grosse <a href="/david/2023/01/23/" title="Déception">déception</a> qui a laissé des traces profondes. J’aurais au moins appris la différence entre l’inspiration et la manipulation. <em>The Hard Way™</em>. Je suis très reconnaissant envers toutes les personnes qui ont fait que je ne me suis pas senti trop isolé ou vulnérable pendant cette&nbsp;période.</p>
  171. <p>Grâce à un départ, <a href="http://scopyleft.fr/">Scopyleft</a> prend une <a href="/david/2021/03/17/">autre dimension</a> et redéfinit ses aspirations collectivement à travers des échanges plus sains et apaisés. Un arbre tombe et de nombreuses autres espèces arrivent enfin à capter la lumière pour proposer un autre paysage, envisager un nouvel écosystème&nbsp;🌻🐝.</p>
  172. <hr />
  173. <p>Et puis, j’ai des dizaines d’onglets à partager à mon <em>futur moi</em>.</p>
  174. <blockquote lang="en">
  175. <p>💭 If you’re more a guess-culture person, asking people for help without knowing their circumstances can feel rude or intrusive. Broadcasting publicly your need for help can feel awkward and&nbsp;vulnerable.</p>
  176. <p>If you’re more of an ask-culture person, the guess-culture example of juggling everyone’s specific scenarios and the historical context of favors <mark>probably seems exhausting.</mark> Dropping hints in the hopes that you won’t even have to make your request can feel extra passive and&nbsp;manipulative.</p>
  177. <p><cite><em><a href="https://jeanhsu.substack.com/p/ask-vs-guess-culture">Ask vs guess culture</a></em>&nbsp;(<a href="/david/cache/2023/ba42826808418339bdc0364586bea5bf/">cache</a>)</cite></p>
  178. </blockquote>
  179. <blockquote lang="en">
  180. <p>😔 But really the baseline of web design is so low because there’s a lack of tenderness, care, and empathy. <mark>It’s because we don’t see the making of a website as a worthy profession.</mark> It’s because we hope to squeeze the last bit of juice from the orange by mulching people in between modals and pop ups and cookie&nbsp;banners.</p>
  181. <p>So how do we do better? How do we take better care of our&nbsp;websites?</p>
  182. <p><cite><em><a href="https://robinrendle.com/notes/why-are-websites-embarrassing/">Why are websites embarrassing?</a></em>&nbsp;(<a href="/david/cache/2023/7458294e070577c610294f8ec927c30d/">cache</a>)</cite></p>
  183. </blockquote>
  184. <blockquote lang="en">
  185. <p>🍏 It would also inject the potential for a slippery slope of unintended consequences. Scanning for one type of content, for instance, <mark>opens the door for bulk surveillance</mark> and could create a desire to search other encrypted messaging systems across content types (such as images, videos, text, or audio) and content categories. How can users be assured that a tool for one type of surveillance has not been reconfigured to surveil for other content such as political activity or religious persecution? Tools of mass surveillance have widespread negative implications for freedom of speech and, by extension, democracy as a whole. Also, designing this technology for one government could require applications for other countries across new data&nbsp;types.</p>
  186. <p><cite><a href="/static/david/2023/apple-letter-to-heat-initiative.pdf">Apple letter to Heat initiative</a> (PDF, 121Ko)</cite></p>
  187. </blockquote>
  188. </main>
  189. <hr>
  190. <footer>
  191. <p>
  192. <nobr>
  193. <a href="/david/" title="Aller à l’accueil">
  194. <svg class="icon icon-home">
  195. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-home"></use>
  196. </svg>
  197. Accueil</a>
  198. </nobr>
  199. <nobr>
  200. <a href="/david/log/" title="Accès au flux RSS">
  201. <svg class="icon icon-rss2">
  202. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-rss2"></use>
  203. </svg>
  204. Suivre</a>
  205. </nobr>
  206. <nobr>
  207. <a href="http://larlet.com"
  208. title="Go to my English profile"
  209. data-instant>
  210. <svg class="icon icon-user-tie">
  211. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-user-tie"></use>
  212. </svg>
  213. Pro</a>
  214. </nobr>
  215. <nobr>
  216. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">
  217. <svg class="icon icon-mail">
  218. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-mail"></use>
  219. </svg>
  220. Email</a>
  221. </nobr>
  222. <nobr>
  223. <abbr class="nowrap"
  224. title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">
  225. <svg class="icon icon-hammer2">
  226. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-hammer2"></use>
  227. </svg>
  228. Légal</abbr>
  229. </nobr>
  230. </p>
  231. <template id="theme-selector">
  232. <form>
  233. <fieldset>
  234. <legend>
  235. <svg class="icon icon-brightness-contrast">
  236. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-brightness-contrast"></use>
  237. </svg>
  238. Thème
  239. </legend>
  240. <label>
  241. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  242. Auto
  243. </label>
  244. <label>
  245. <input type="radio" value="dark" name="chosen-color-scheme">
  246. Foncé
  247. </label>
  248. <label>
  249. <input type="radio" value="light" name="chosen-color-scheme">
  250. Clair
  251. </label>
  252. </fieldset>
  253. </form>
  254. </template>
  255. </footer>
  256. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  257. <script>
  258. function loadThemeForm(templateName) {
  259. const themeSelectorTemplate = document.querySelector(templateName)
  260. const form = themeSelectorTemplate.content.firstElementChild
  261. themeSelectorTemplate.replaceWith(form)
  262. form.addEventListener('change', (e) => {
  263. const chosenColorScheme = e.target.value
  264. localStorage.setItem('theme', chosenColorScheme)
  265. toggleTheme(chosenColorScheme)
  266. })
  267. const selectedTheme = localStorage.getItem('theme')
  268. if (selectedTheme && selectedTheme !== 'undefined') {
  269. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  270. }
  271. }
  272. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  273. window.addEventListener('load', () => {
  274. let hasDarkRules = false
  275. for (const styleSheet of Array.from(document.styleSheets)) {
  276. let mediaRules = []
  277. for (const cssRule of styleSheet.cssRules) {
  278. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  279. continue
  280. }
  281. // WARNING: Safari does not have/supports `conditionText`.
  282. if (cssRule.conditionText) {
  283. if (cssRule.conditionText !== prefersColorSchemeDark) {
  284. continue
  285. }
  286. } else {
  287. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  288. continue
  289. }
  290. }
  291. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  292. }
  293. // WARNING: do not try to insert a Rule to a styleSheet you are
  294. // currently iterating on, otherwise the browser will be stuck
  295. // in a infinite loop…
  296. for (const mediaRule of mediaRules) {
  297. styleSheet.insertRule(mediaRule.cssText)
  298. hasDarkRules = true
  299. }
  300. }
  301. if (hasDarkRules) {
  302. loadThemeForm('#theme-selector')
  303. }
  304. })
  305. </script>
  306. </body>
  307. </html>