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 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  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>
  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>Rédemption — David Larlet</title>
  13. <!-- That good ol' feed, subscribe :). -->
  14. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  15. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  16. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  17. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  18. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  19. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  20. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  21. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  22. <meta name="msapplication-TileColor" content="#f0f0ea">
  23. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  24. <meta name="theme-color" content="#f0f0ea">
  25. <!-- Documented, feel free to shoot an email. -->
  26. <link rel="stylesheet" href="/static/david/css/style_2020-04-25.css">
  27. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  28. <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>
  29. <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>
  30. <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>
  31. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  32. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">
  35. <article>
  36. <h1>Rédemption</h1>
  37. <nav>
  38. <p class="center">
  39. <a rel="prev" href="/david/2020/03/13/" title="Publication précédente : Technique">←</a> •
  40. <a href="/david/" title="Aller à l’accueil" tabindex="1">🏠</a>
  41. • <a rel="next" href="/david/2020/03/27/" title="Publication suivante : Exutoire">→</a>
  42. </p>
  43. </nav>
  44. <hr>
  45. <p><em>Apprendre à vivre avec ses remords et ses regrets.</em></p>
  46. <h2 id="capitalisme">Capitalisme <a href="#capitalisme" title="Ancre vers cette partie" aria-hidden="true">#</a></h2>
  47. <blockquote>
  48. <p>L’impossibilité de fonctionnement du capitalisme quand les corps qu’il soumet ne sont plus fonctionnels (au sens capitaliste) révèle le darwinisme social sur lequel il s’appuie en permanence. Rappeler ces éléments semble extrêmement futile, alors que cela permet d’empiéter sur les récits hégémoniques qui gomment consciemment certains enjeux politiques fondamentaux de l’épidémie. Cette réintroduction de la dimension humaine dans la production de biens et services éclaire ce qu’il faut entraver si l’on se soucie vraiment de la « planète » : <mark>les intérêts du capitalisme fossile et de l’habiter colonial de la Terre qu’il perpétue.</mark></p>
  49. <p><cite><em><a href="https://perspectives-printanieres.info/index.php/2020/03/10/lepidemie-na-pas-de-vertus/">L’épidémie n’a pas de vertus</a></em> (<a href="/david/cache/2020/58117f5865002118d6769cb0a7aa9786/">cache</a>)</cite></p>
  50. </blockquote>
  51. <p>Une prise de recul sensée sur les réelles origines du (corona)virus qui va au-delà de la <a href="https://www.monde-diplomatique.fr/2020/03/SHAH/61547">dimension écologique seule</a> mais s’inscrit dans un projet politique de pouvoir et d’inégalités sociales.</p>
  52. <p>Tout est quand même lié : plus de végétariens, moins de (mono)cultures, moins de déforestation, moins de pollution de l’eau, plus de distance entre les virus et les humains.</p>
  53. <h2 id="souvenir">Souvenir <a href="#souvenir" title="Ancre vers cette partie" aria-hidden="true">#</a></h2>
  54. <blockquote>
  55. <p>Les loleurs ont passé des années à pratiquer ce qui était des non-évènements pour eux mais qui étaient autant d’évènements pour celles et ceux qui les recevaient. <mark>Ils les ont oubliés. Nous nous en souvenons.</mark></p>
  56. <p><strong>C’est là toute la différence entre les oppresseurs et les opprimés : les oppresseurs aimeraient se souvenir mais ils continuent d’oublier, les opprimés aimeraient oublier mais ils continuent de se souvenir.</strong></p>
  57. <p><cite><em><a href="https://medium.com/@florence.porcel/laffaire-de-la-ligue-du-lol-ou-la-fabrique-de-l-oubli-df4ad3f5f2b5">L’affaire de la Ligue du LOL, ou la fabrique de l’oubli</a></em> (<a href="/david/cache/2020/2c6ccd57b9f0f1c39706013d026de507/">cache</a>)</cite></p>
  58. </blockquote>
  59. <p>J’avais déjà lu le (long !) <a href="https://medium.com/@vincentglad_67276/ligue-du-lol-un-an-apr%C3%A8s-aeee7784cf4d">article de Vincent Glad</a> (<a href="/david/cache/2020/ac3266635585d387973da1c64b546990/">cache</a>) qui fait une rétrospective de ce qu’il a vécu au cours de l’année passée. Au-delà du fait que ces deux publications sont sur Medium qui produit du <abbr title="HyperText Markup Language">HTML</abbr> de plus en plus dégueulasse (ce que je trouve triste <em>et</em> embarrassant lorsqu’on évoque des publications qui ont été plus ou moins pérennes), je trouve cela intéressant à plus d’un titre d’avoir les deux points de vue.</p>
  60. <p>J’en retiens deux choses :</p>
  61. <ol>
  62. <li>l’oppression est forcément une interprétation et à ce titre ne peut se réduire qu’en établissant un échange entre l’oppreseur·se et l’oppressé·e</li>
  63. <li>notre cerveau essaye de nous protéger de ce que l’on a subi et/ou fait subir dans notre vie en altérant notre souvenance de ces moments là</li>
  64. </ol>
  65. <p>Si l’on combine ces deux axiomes, j’ai probablement eu des comportements — dont je n’ai pas forcément souvenir ou conscience — qui ont pu être oppressifs. Si vous vous en êtes senti·e victime, je vous invite à engager le dialogue.</p>
  66. <h2 id="techbro">Techbro <a href="#techbro" title="Ancre vers cette partie" aria-hidden="true">#</a></h2>
  67. <blockquote lang="en">
  68. <p>The prodigal tech bro doesn’t so much take an off-ramp from the relatively high status and well-paid job he left when the scales fell from his eyes, as zoom up an on-ramp into a new sector that accepts the reputational currency he has accumulated. <mark>He’s not joining the resistance.</mark> He’s launching a new kind of start-up using his industry contacts for seed-funding in return for some reputation-laundering.</p>
  69. <p><cite><em><a href="https://conversationalist.org/2020/03/05/the-prodigal-techbro/">The Prodigal Techbro</a></em> (<a href="/david/cache/2020/4bda6c744ffb55c0fc4f4bf1f740b4e3/">cache</a>)</cite></p>
  70. </blockquote>
  71. <p>Cet article est d’une grande justesse. Je n’oublie pas que j’ai participé à l’immonde en travaillant — brièvement — pour la haute finance et — moins brièvement — pour le jeu en ligne. Je n’ai de leçons à donner à personne en terme d’éthique, surtout dans un domaine qui laisse une relative liberté quant au choix des missions choisies.</p>
  72. <p>Le chemin était sans doute nécessaire pour en arriver là où j’en suis mais ce n’est en aucun cas une justification pour avoir fait ces choix pour le moins douteux précédemment.</p>
  73. <h2 id="panic">Panic <a href="#panic" title="Ancre vers cette partie" aria-hidden="true">#</a></h2>
  74. <blockquote lang="en">
  75. <p>But ultimately, I think I’m telling this story so I can close this panic episode with integrity and honesty. I think I want to tell myself that it’s okay to be weak and imperfect. That it was okay for me to be defensive. That it was okay for me to be angry.</p>
  76. <p>And it’s okay to let the anger go now. Nobody out there is trying to harm me. Nobody out there is trying to force me to admit to mistakes I didn’t make. Nobody out there is trying to make me “wrong”.</p>
  77. <p><cite><em><a href="https://zellwk.com/blog/overcoming-panic-towards-accessibility/">Overcoming my panic towards accessibility</a></em> (<a href="/david/cache/2020/85e0f968f6ac8dfdd76c7a76df6ef088/">cache</a>)</cite></p>
  78. </blockquote>
  79. <p>Je crois pouvoir comprendre ce sentiment, au moins à mon échelle. Par exemple, lorsque je publie un <a href="/david/2020/02/21/#surlignage">bout de CSS pour le surlignage</a> et que je me rends compte ensuite qu’avec <a href="https://www.trysmudford.com/blog/currying-in-css/">un peu de curry</a> (<a href="/david/cache/2020/77db8cc6de2906f31a4d37d91a47a3aa/">cache</a>) je pourrais arriver à une situation plus élégante (?) utilisant des variables qui ressemblerait à :</p>
  80. <pre><code>mark {
  81. background: LightGoldenRodYellow;
  82. }
  83. mark::before,
  84. mark::after {
  85. clip-path: inset(100%);
  86. clip: rect(1px, 1px, 1px, 1px);
  87. height: 1px;
  88. overflow: hidden;
  89. position: absolute;
  90. white-space: nowrap;
  91. width: 1px;
  92. }
  93. :root,
  94. [lang=en] {
  95. --mark-start: &quot; [highlight start] &quot;;
  96. --mark-end: &quot; [highlight end] &quot;;
  97. }
  98. [lang=fr] {
  99. --mark-start: &quot; [début du surlignage] &quot;;
  100. --mark-end: &quot; [fin du surlignage] &quot;;
  101. }
  102. mark::before {
  103. content: var(--mark-start);
  104. }
  105. mark::after {
  106. content: var(--mark-end);
  107. }
  108. </code></pre>
  109. <p>Et là je réalise après quelques échanges sur ##openweb (merci <a href="https://ricaud.me">Anthony</a> !) que je ne fais pas la distinction de langue entre les citations (souvent en anglais) et le texte (souvent en français). Mince.</p>
  110. <p>En voulant améliorer l’accessibilité de mes productions, cela a peut être eu l’effet inverse… en tout cas cela m’aura au moins permis d’en prendre conscience. <em>Don’t panic.</em></p>
  111. <h2 id="renonciation">Renonciation <a href="#renonciation" title="Ancre vers cette partie" aria-hidden="true">#</a></h2>
  112. <blockquote>
  113. <p>Nous disons : « Pas à pas, j’arrête le murmure du ruisseau. » En vous promenant le long du ruisseau, vous entendrez l’eau couler. Le son est continu, mais vous devez pouvoir l’arrêter si vous voulez l’arrêter. <mark>C’est cela la renonciation.</mark> Différentes pensées l’une après l’autre se succèdent dans votre esprit, mais si vous voulez arrêter votre pensée, vous le pouvez. Quand vous serez capable d’arrêter le murmure du ruisseau, vous apprécierez la sensation de votre travail. Mais tant que vous avez quelque idée fixe, ou que vous êtes pris par une certaine routine de comportement, vous ne pouvez apprécier le vrai sens des choses.</p>
  114. <p><cite><em><a href="/david/2020/12/21/#esprit-zen-esprit-neuf">Esprit zen, esprit neuf</a></em>, Shunryu Suzuki</cite></p>
  115. </blockquote>
  116. <p>Comment faire pour arrêter une rivière en crue ?</p>
  117. <nav>
  118. <p class="center">
  119. <a rel="prev" href="/david/2020/03/13/" title="Publication précédente : Technique">←</a> •
  120. <a href="/david/2020/" title="Liste des publications récentes">↑</a>
  121. • <a rel="next" href="/david/2020/03/27/" title="Publication suivante : Exutoire">→</a>
  122. </p>
  123. </nav>
  124. </article>
  125. <hr>
  126. <footer>
  127. <p>
  128. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  129. <a href="/david/log/" title="Accès au flux RSS">🤖</a> •
  130. <a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
  131. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
  132. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
  133. </p>
  134. <template id="theme-selector">
  135. <form>
  136. <fieldset>
  137. <legend>Thème</legend>
  138. <label>
  139. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  140. </label>
  141. <label>
  142. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  143. </label>
  144. <label>
  145. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  146. </label>
  147. </fieldset>
  148. </form>
  149. </template>
  150. </footer>
  151. <script src="/static/david/js/instantpage-3.0.0.min.js" type="module" defer></script>
  152. <script type="text/javascript">
  153. /* This is a work in progress with Anthony https://ricaud.me */
  154. // TODISCUSS:
  155. // 1. give a way for the user to close that chooser?
  156. // 2. store preferences? Done using localStorage
  157. // 3. create the template from scratch in JS?
  158. // 4. how to make it generic? (no need for forced-dark/light existing rules)
  159. // Results from a Poll: https://mastodon.social/@dav/104093540923157521
  160. // Avoir un moyen de changer de thème d'un site à la main :
  161. // 49% => Utile
  162. // 23% => Pas utile
  163. // 9% => So 2000
  164. // 19% => Je veux le même
  165. // After 24 hours and 43 votes
  166. // A bit hard to interpret, I guess people wanting it found it useful too!
  167. function toggleTheme(themeName) {
  168. document.body.classList.toggle('forced-dark', themeName === 'dark')
  169. document.body.classList.toggle('forced-light', themeName === 'light')
  170. }
  171. function loadThemeForm(templateName) {
  172. const themeSelectorTemplate = document.querySelector(templateName)
  173. const form = themeSelectorTemplate.content.firstElementChild
  174. themeSelectorTemplate.replaceWith(form)
  175. form.addEventListener('change', (e) => {
  176. const chosenColorScheme = e.target.value
  177. localStorage.setItem('theme', chosenColorScheme)
  178. toggleTheme(chosenColorScheme)
  179. })
  180. const themeSelected = localStorage.getItem('theme')
  181. if (themeSelected !== 'undefined') {
  182. form.querySelector(`[value="${themeSelected}"]`).checked = true
  183. toggleTheme(themeSelected)
  184. }
  185. }
  186. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  187. window.addEventListener('load', () => {
  188. let hasDarkRules = false
  189. for (const styleSheet of Array.from(document.styleSheets)) {
  190. let mediaRules = []
  191. for (const cssRule of styleSheet.cssRules) {
  192. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  193. continue
  194. }
  195. // WARNING: Safari does not have/supports `conditionText`.
  196. if (cssRule.conditionText) {
  197. if (cssRule.conditionText !== prefersColorSchemeDark) {
  198. continue
  199. }
  200. } else {
  201. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  202. continue
  203. }
  204. }
  205. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  206. }
  207. // WARNING: do not try to insert a Rule to a styleSheet you are
  208. // currently iterating on, otherwise the browser will be stuck
  209. // in a infinite loop…
  210. for (const mediaRule of mediaRules) {
  211. styleSheet.insertRule(mediaRule.cssText)
  212. hasDarkRules = true
  213. }
  214. }
  215. if (hasDarkRules) {
  216. loadThemeForm('#theme-selector')
  217. }
  218. })
  219. </script>
  220. </body>
  221. </html>