Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  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. Légitimité
  14. — David Larlet</title>
  15. <script>
  16. function toggleTheme(themeName) {
  17. document.documentElement.classList.toggle(
  18. 'forced-dark',
  19. themeName === 'dark'
  20. )
  21. document.documentElement.classList.toggle(
  22. 'forced-light',
  23. themeName === 'light'
  24. )
  25. }
  26. const selectedTheme = localStorage.getItem('theme')
  27. if (selectedTheme !== 'undefined') {
  28. toggleTheme(selectedTheme)
  29. }
  30. </script>
  31. <!-- Documented, feel free to shoot an email. -->
  32. <link rel="stylesheet" href="/static/david/css/style_2024-03-09.css">
  33. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  34. <link rel="preload"
  35. href="/static/david/css/fonts/century_supra_ot_a_regular.woff2"
  36. as="font"
  37. type="font/woff2"
  38. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  39. crossorigin>
  40. <link rel="preload"
  41. href="/static/david/css/fonts/century_supra_ot_a_bold.woff2"
  42. as="font"
  43. type="font/woff2"
  44. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  45. crossorigin>
  46. <link rel="preload"
  47. href="/static/david/css/fonts/century_supra_ot_a_italic.woff2"
  48. as="font"
  49. type="font/woff2"
  50. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  51. crossorigin>
  52. <link rel="preload"
  53. href="/static/david/css/fonts/century_supra_ot_b_regular.woff2"
  54. as="font"
  55. type="font/woff2"
  56. media="(prefers-color-scheme: dark)"
  57. crossorigin>
  58. <link rel="preload"
  59. href="/static/david/css/fonts/century_supra_ot_b_bold.woff2"
  60. as="font"
  61. type="font/woff2"
  62. media="(prefers-color-scheme: dark)"
  63. crossorigin>
  64. <link rel="preload"
  65. href="/static/david/css/fonts/century_supra_ot_b_italic.woff2"
  66. as="font"
  67. type="font/woff2"
  68. media="(prefers-color-scheme: dark)"
  69. crossorigin>
  70. <meta name="description" content="Car comment écrire le monde, en particulier celui qui souffre, suffoque et se bat, depuis une situation privilégiée ? Comment, dans un monde baigné de superflu, mener une analyse fine et lucide sur la nécessité ? Peut-on en appeler à la beauté dans un monde de violence ? Et comment combattre le sentiment d’imposture ? Comment concilier lucidité et poésie, politique et esthétique, sentiment de classe et pulsions d’universalité, comment enfin écrire sur ce qu’on ne fait parfois qu’effleurer, sans l’avoir parfaitement, longuement et profondément éprouvé ?">
  71. <!-- That good ol' feed, subscribe :). -->
  72. <link rel="alternate"
  73. type="application/atom+xml"
  74. title="Feed"
  75. href="/david/log/">
  76. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  77. <link rel="apple-touch-icon"
  78. sizes="180x180"
  79. href="/static/david/icons2/apple-touch-icon.png">
  80. <link rel="icon"
  81. type="image/png"
  82. sizes="32x32"
  83. href="/static/david/icons2/favicon-32x32.png">
  84. <link rel="icon"
  85. type="image/png"
  86. sizes="16x16"
  87. href="/static/david/icons2/favicon-16x16.png">
  88. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  89. <link rel="mask-icon"
  90. href="/static/david/icons2/safari-pinned-tab.svg"
  91. color="#07486c">
  92. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  93. <meta name="msapplication-TileColor" content="#f7f7f7">
  94. <meta name="msapplication-config"
  95. content="/static/david/icons2/browserconfig.xml">
  96. <meta name="theme-color"
  97. content="#f7f7f7"
  98. media="(prefers-color-scheme: light)">
  99. <meta name="theme-color"
  100. content="#272727"
  101. media="(prefers-color-scheme: dark)">
  102. <!-- Is that even respected? Retrospectively? What a shAItshow…
  103. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  104. <meta name="robots" content="noai, noimageai">
  105. <style type="text/css">
  106. .tippy-content {
  107. min-width: 280px;
  108. padding: .5rem;
  109. font-size: calc(var(--fluid-0) * 0.8);
  110. font-family: var(--labor-font);
  111. letter-spacing: initial;
  112. text-align: left;
  113. }
  114. .tippy-content h3 {
  115. margin-top: 0;
  116. }
  117. .tippy-content h3 img {
  118. max-width: 2rem;
  119. max-height: 2rem;
  120. display: inline-block;
  121. }
  122. .tippy-content .tippy-links {
  123. display: flex;
  124. justify-content: space-around;
  125. }
  126. .tippy-content a {
  127. padding: .4rem;
  128. color: #F06048;
  129. }
  130. </style>
  131. <body data-instant-intensity="viewport-all">
  132. <article>
  133. <header>
  134. <hgroup>
  135. <h1>Légitimité</h1>
  136. <p>Le <time datetime="2024-01-22">22 janvier 2024</time></p>
  137. </hgroup>
  138. </header>
  139. <nav>
  140. <p>
  141. <a rel="prev"
  142. href="/david/2024/01/21/"
  143. title="Publication précédente : Bois">← Précédent</a> •
  144. <a href="/david/" title="Aller à l’accueil" rel="up">Accueil</a>
  145. <a href="/david/recherche/"
  146. title="Aller à la page de recherche"
  147. rel="search" data-no-instant>Recherche</a>
  148. • <a rel="next"
  149. href="/david/2024/01/23/"
  150. title="Publication suivante : Thèse">Suivant →</a>
  151. </p>
  152. </nav>
  153. <blockquote>
  154. <p>Car comment écrire le monde, en particulier celui qui souffre, suffoque et se bat, depuis une situation privilégiée&#8239;? Comment, dans un monde baigné de superflu, mener une analyse fine et lucide sur la nécessité&#8239;? Peut-on en appeler à la beauté dans un monde de violence&#8239;? Et comment combattre le sentiment d’imposture&#8239;? Comment concilier lucidité et poésie, politique et esthétique, sentiment de classe et pulsions d’universalité, comment enfin écrire sur ce qu’on ne fait parfois qu’effleurer, sans l’avoir parfaitement, longuement et profondément&nbsp;éprouvé&#8239;?</p>
  155. <p>En étant honnête, sans doute. […] <mark>Mais l’écriture, une fois entravée d’un tel filet de précautions et de prudences, ne perd-elle pas en&nbsp;sincérité&#8239;?</mark></p>
  156. <p>Le désir de beauté, les envies de mots débridés, le souci même de l’éthique viennent souvent se fracasser sur la réalité sociale, le prosaïque du quotidien et <em>in fine</em> la crainte de l’indécence. C’est un souci salutaire sans aucun doute, mais aussi un brise-l’élan qui, depuis des années, me détourne de&nbsp;l’essai.</p>
  157. <p>La critique est tellement facile et le dénigrement si prisé dans les milieux militants que je ne dois pas être la seule, parfois, à me sentir dissuadée d’écrire sur certains sujets. Pourtant, faut-il s’empêcher d’explorer de nouveaux espaces, d’écrire ses impressions, de poser des intuitions et des sensations, de formuler des hypothèses? Faut-il s’interdire certains&nbsp;thèmes&#8239;?</p>
  158. <p>Doit-on être spécialiste d’un sujet pour en parler&#8239;? Rien ne peut fonctionner si seuls les universitaires peuvent écrire des essais, si les romancières sont cantonnées à raconter des histoires, si seuls les insurgés sont légitimes à parler de révolution, les pauvres de misère, les racisés de discrimination, si les déserteurs sont trop diplômés et si les écrivains ne peuvent disserter que sur la&nbsp;création.</p>
  159. <p><cite><em>Alors nous irons trouver la beauté ailleurs</em>, Corinne Morel&nbsp;Darleux</cite></p>
  160. </blockquote>
  161. <p>La légitimité de la personne qui écrit est importante —&nbsp;notamment en terme de crédibilité&nbsp;— et j’apprécie qu’IA Writer <a data-link-domain="ia.net" href="https://ia.net/topics/writing-with-ai" hreflang="en"
  162. title="Consultation de l’article (anglais)">expérimente des choses</a>
  163. <a href="/david/cache/2024/291cddda62f18ec9355ec98761b7e9d9/" hreflang="en"
  164. data-tippy data-description="When ChatGPT came out one year ago, we wanted to know whether and how it could be used for writing. We put it to the test."
  165. data-source="https://ia.net/topics/writing-with-ai"
  166. data-date="2024-01-21"
  167. data-favicon="https://ia.net/wp-content/themes/iA-library/assets/favicons/favicon.ico"
  168. data-domain="ia.net"
  169. ><svg xmlns="http://www.w3.org/2000/svg"
  170. width="24" height="24" viewBox="0 0 24 24" fill="none"
  171. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  172. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  173. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  174. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  175. </svg>
  176. <span class="sr-only">[archive]</span></a> dans le domaine et peut-être que leur <a data-link-domain="github.com" href="https://github.com/iainc/Markdown-Annotations">spécification pour annotations</a> pourrait être détournée pour mentionner où l’auteur·ice <em>se situe</em> explicitement dans (la partie de) l’article. J’écris ce paragraphe avec ma casquette de développeur, ou en ayant expérimenté l’expatriation, ou en étant membre d’une coopérative, ou en ayant l’habitude d’écrire des trucs sur le net. On pourrait annoter les intentions aussi&nbsp;: j’écris cela en voulant être informatif, ou troll, ou militant, etc.</p>
  177. <p>C’est l’une des choses que rend possible le numérique. Légitimité sans argument d’autorité, tout un programme. Et si je tentais des choses ces prochains&nbsp;jours&#8239;?</p>
  178. <blockquote lang="en">
  179. <p>optionally followed by author annotation session, with a format <mark>to be announced</mark> in a future version of the spec, separated from the author name either by the author identifier or a&nbsp;comma</p>
  180. <p><cite><em><a data-link-domain="github.com" href="https://github.com/iainc/Markdown-Annotations#author-annotations">Author&nbsp;Annotations</a></em></cite></p>
  181. </blockquote>
  182. <a href="#hr-43" title="Lien vers cette section de la page"><hr id="hr-43" /></a>
  183. <blockquote lang="en">
  184. <p>Sometimes I’d have a realization that I was doing something for the first time since I had left home, 16&nbsp;months earlier. First time pumping gas. First time ringing a doorbell. First time going to a grocery store. First time swimming. Each of these instances brought with it a small feeling of novelty, but it didn’t amount to much. It took conscious effort to remember that I was pumping gas for the first time in 16&nbsp;months. It felt&nbsp;normal.</p>
  185. <p>I was back in my real life, and although I put it on hold for Antarctica, it was waiting for me when I got back. <mark>Antarctica was a a different world, a radical departure from my normal reality.</mark> It was so different, in fact, that I simply could not merge the two realities into one. I had my real life, and I had my Antarctica life. When my Antarctica life finished, I resumed my real&nbsp;life.</p>
  186. <p><cite><em><a data-link-domain="brr.fyi" href="https://brr.fyi/posts/redeployment-part-three" hreflang="en"
  187. title="Consultation de l’article (anglais)">Redeployment Part Three</a>
  188. <a href="/david/cache/2024/e8748af541273328d9aa9f1aeb1087b2/" hreflang="en"
  189. data-tippy data-description="Departing Antarctica after 446 days on-ice. Relaxing in Christchurch, then heading home. What an adventure!"
  190. data-source="https://brr.fyi/posts/redeployment-part-three"
  191. data-date="2024-01-21"
  192. data-favicon="https://brr.fyi/favicon-32x32.png"
  193. data-domain="brr.fyi"
  194. ><svg xmlns="http://www.w3.org/2000/svg"
  195. width="24" height="24" viewBox="0 0 24 24" fill="none"
  196. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  197. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  198. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  199. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  200. </svg>
  201. <span class="sr-only">[archive]</span></a></em></cite></p>
  202. </blockquote>
  203. <p>Troisième partie (<a data-link-domain="brr.fyi" href="https://brr.fyi/posts/redeployment-part-one" hreflang="en"
  204. title="Consultation de l’article (anglais)">1</a>
  205. <a href="/david/cache/2024/da7e5578fd96fe31d46bfb207d041880/" hreflang="en"
  206. data-tippy data-description="Sunrise at the bottom of the world. Preparing South Pole Station to welcome its first new arrivals in almost nine months."
  207. data-source="https://brr.fyi/posts/redeployment-part-one"
  208. data-date="2024-01-21"
  209. data-favicon="https://brr.fyi/favicon-32x32.png"
  210. data-domain="brr.fyi"
  211. ><svg xmlns="http://www.w3.org/2000/svg"
  212. width="24" height="24" viewBox="0 0 24 24" fill="none"
  213. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  214. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  215. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  216. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  217. </svg>
  218. <span class="sr-only">[archive]</span></a>, <a data-link-domain="brr.fyi" href="https://brr.fyi/posts/redeployment-part-two" hreflang="en"
  219. title="Consultation de l’article (anglais)">2</a>
  220. <a href="/david/cache/2024/284205d0f99390dd18d3af12ff53227c/" hreflang="en"
  221. data-tippy data-description="First flight to the South Pole after a long, isolated winter. Winterover staff handing over their work and preparing to depart."
  222. data-source="https://brr.fyi/posts/redeployment-part-two"
  223. data-date="2024-01-21"
  224. data-favicon="https://brr.fyi/favicon-32x32.png"
  225. data-domain="brr.fyi"
  226. ><svg xmlns="http://www.w3.org/2000/svg"
  227. width="24" height="24" viewBox="0 0 24 24" fill="none"
  228. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  229. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  230. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  231. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  232. </svg>
  233. <span class="sr-only">[archive]</span></a>) d’un retour sur la terre non gelée. Merci pour ce voyage par procuration cette dernière année, les détails et les anecdotes étaient&nbsp;parfaits.</p>
  234. <p><em>Je remarque au passage qu’iels chaussent les mêmes bottes Baffin que moi par grand&nbsp;froid.</em></p>
  235. <a href="#hr-44" title="Lien vers cette section de la page"><hr id="hr-44" /></a>
  236. <blockquote>
  237. <p>Il est largement prouvé qu’il n’y a qu’un moyen de faire entrer plus de femmes dans la tech. C’est par le biais de la <strong>représentativité</strong>. <mark>Les jeunes femmes ne peuvent pas se projeter dans des rôles qu’elles ne connaissent pas.</mark> J’espère qu’à un moment où un autre, vous aurez vous aussi envie d’occuper l’espace et de vous rendre visible, pour montrer que les femmes dans la tech existent et que c’est une voie royale. Vous pouvez aussi être <strong>marraine</strong> et intervenir dans des écoles avec <a data-link-domain="ellesbougent.com" href="https://www.ellesbougent.com/">Elles bougent</a> ou <a data-link-domain="intrepidesdelatech.org" href="https://www.intrepidesdelatech.org/">Les intrépides de la tech</a>.</p>
  238. <p><cite><em><a data-link-domain="duchess-france.fr" href="https://www.duchess-france.fr/dossier/women%20in%20tech/alli%C3%A9s/2023/01/15/manuel-survie-femme-tech.html" hreflang="en"
  239. title="Consultation de l’article (anglais)">Manuel de survie de la femme dans la tech</a>
  240. <a href="/david/cache/2024/c4751e7c80b292e3533ee6b3e057b702/" hreflang="en"
  241. data-tippy data-description="Je vois de plus en plus de femmes rejoindre l’informatique, et c’est une très bonne chose. Je vois aussi trop de femmes patir de sexisme ordinaire, se remettre en question encore et encore… et quitter le milieu au bout de quelques années. J’ai mis du temps à apprendre certaines choses."
  242. data-source="https://www.duchess-france.fr/dossier/women%20in%20tech/alli%C3%A9s/2023/01/15/manuel-survie-femme-tech.html"
  243. data-date="2024-01-21"
  244. data-favicon="https://www.duchess-france.fr/favicon.ico"
  245. data-domain="duchess-france.fr"
  246. ><svg xmlns="http://www.w3.org/2000/svg"
  247. width="24" height="24" viewBox="0 0 24 24" fill="none"
  248. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  249. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  250. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  251. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  252. </svg>
  253. <span class="sr-only">[archive]</span></a></em></cite></p>
  254. </blockquote>
  255. <p>Superbe manuel de Florence Chabanois avec plein de conseils et de liens pour creuser. J’appuie le fait qu’il est important d’être bien entourée pour rentrer dans ce domaine, pas seulement pour l’apprentissage de la technique mais pour déconstruire des situations sans se sentir démunie face à une culture toxique. N’hésitez pas à rejoindre l’un des collectifs&nbsp;listés.</p>
  256. <p>Je peux faire le <em>parrain-à-6000km</em>, mon adresse de courriel est en pied de&nbsp;page.</p>
  257. <p><mark>@nnotation(intention)</mark>&nbsp;: Je précise la distance depuis la France car ça réduit les possibilités d’agressions physiques… et malheureusement c’est non&nbsp;négligeable.&nbsp;😢</p>
  258. <blockquote>
  259. <p>La technique de l’amplification, popularisée à la Maison Blanche à l’époque d’Obama, consiste à répéter l’idée en lui reconnaissant la maternité, ce qui permet d’augmenter son audibilité. Sachez aussi que nous n’apprenons pas à nous exprimer de la même façon selon notre genre. Quand les femmes prennent la parole, elles l’encombrent plus souvent de termes parasites minimisant comme <em>“peut-être”</em>, <em>“je pense que”</em>, <em>“c’est juste mon avis”</em>. <mark>Les femmes enrobent plus leurs propos, ce qui peut limiter sa portée et/ou nuire à sa clarté, et surtout minimiser des propos pas moins importants.</mark> Elles s’excusent aussi plus souvent de déranger (à tort). À l’écrit, ce sont les points d’exclamation et les smileys qui sont sur représentés, pour adoucir le ton et paraître sympathique. Dans tous les cas, ces parasites réduisent l’impact des messages exprimés. En gros, il vaut mieux faire court pour limiter la charge cognitive et répéter plusieurs fois le&nbsp;message…</p>
  260. <p><cite><em>Ibid.</em></cite></p>
  261. </blockquote>
  262. <p>… ou que les personnes à l’écoute apprennent à communiquer de cette façon&#8239;? À donner le temps nécessaire à la prise de soin plutôt que de formater d’autres personnes à ce qui peut être interprété comme de l’«&nbsp;efficacité&nbsp;» analytique (telle que définie par des hommes)&#8239;? L’adaptation peut et doit se faire dans les deux&nbsp;sens.</p>
  263. <p><mark>@nnotation(légitimité)</mark>&nbsp;: Je propose cela alors qu’il y a 6&nbsp;femmes sur les 8&nbsp;membres de Scopyleft, à la création nous étions 4&nbsp;hommes. Le changement dans nos interactions a été&nbsp;radical.</p>
  264. <nav>
  265. <p>
  266. <a href="/david/2024/echanges/"
  267. title="Liste de tous les articles 2024 associés à cette étiquette"
  268. rel="tag">#échanges</a>
  269. <a href="/david/2024/experience/"
  270. title="Liste de tous les articles 2024 associés à cette étiquette"
  271. rel="tag">#expérience</a>
  272. <a href="/david/2024/gratitude/"
  273. title="Liste de tous les articles 2024 associés à cette étiquette"
  274. rel="tag">#gratitude</a>
  275. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  276. </p>
  277. </nav>
  278. <nav>
  279. <p>
  280. <a rel="prev"
  281. href="/david/2024/01/21/"
  282. title="Publication précédente : Bois">← Précédent</a> •
  283. <a href="/david/2024/" title="Liste des publications récentes">↑ En 2024</a>
  284. • <a rel="next"
  285. href="/david/2024/01/23/"
  286. title="Publication suivante : Thèse">Suivant →</a>
  287. </p>
  288. </nav>
  289. <form action="/david/recherche/" method="get">
  290. <fieldset>
  291. <legend>Recherche</legend>
  292. <label for="input-search">Termes de votre recherche :</label>
  293. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  294. <input type="submit" value="Chercher">
  295. <p id="indexation-infos">
  296. <small>
  297. Seuls les contenus de ces 8 dernières années sont indexés.
  298. </small>
  299. </p>
  300. </fieldset>
  301. </form>
  302. <aside>
  303. <theme-toggle></theme-toggle>
  304. </aside>
  305. </article>
  306. <hr>
  307. <footer>
  308. <p>
  309. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  310. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  311. <a href="http://larlet.com"
  312. title="Go to my English profile"
  313. data-instant>Pro</a>
  314. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  315. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  316. </p>
  317. <template id="theme-selector">
  318. <form>
  319. <style type="text/css">
  320. fieldset div {
  321. text-align: center;
  322. }
  323. </style>
  324. <fieldset>
  325. <legend>Thème</legend>
  326. <div>
  327. <label>
  328. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  329. Auto
  330. </label>
  331. <label>
  332. <input type="radio" value="dark" name="chosen-color-scheme">
  333. Foncé
  334. </label>
  335. <label>
  336. <input type="radio" value="light" name="chosen-color-scheme">
  337. Clair
  338. </label>
  339. </div>
  340. </fieldset>
  341. </form>
  342. </template>
  343. </footer>
  344. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  345. <script>
  346. class ThemeToggle extends HTMLElement {
  347. constructor() {
  348. super()
  349. const themeSelectorTemplate = document.querySelector('#theme-selector')
  350. const form = themeSelectorTemplate.content.firstElementChild
  351. this.attachShadow({ mode: 'open' })
  352. this.shadowRoot.appendChild(form.cloneNode(true))
  353. }
  354. connectedCallback() {
  355. const form = this.shadowRoot.querySelector('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. }
  367. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  368. window.addEventListener('load', () => {
  369. let colorsLayer = undefined
  370. let hasDarkRules = false
  371. for (const styleSheet of Array.from(document.styleSheets)) {
  372. let mediaRules = []
  373. for (const layerRule of styleSheet.cssRules) {
  374. if (!(layerRule instanceof CSSLayerBlockRule)) {
  375. continue
  376. }
  377. if (layerRule.name === 'colors') {
  378. colorsLayer = layerRule
  379. }
  380. for (const cssRule of layerRule.cssRules) {
  381. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  382. continue
  383. }
  384. // WARNING: Safari does not have/supports `conditionText`.
  385. if (cssRule.conditionText) {
  386. if (cssRule.conditionText !== prefersColorSchemeDark) {
  387. continue
  388. }
  389. } else {
  390. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  391. continue
  392. }
  393. }
  394. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  395. }
  396. }
  397. // WARNING: do not try to insert a Rule to a styleSheet you are
  398. // currently iterating on, otherwise the browser will be stuck
  399. // in a infinite loop…
  400. for (const mediaRule of mediaRules) {
  401. // Safari requires the `0` second parameter (even if default).
  402. colorsLayer.insertRule(mediaRule.cssText, 0)
  403. hasDarkRules = true
  404. }
  405. }
  406. if (hasDarkRules) {
  407. if ('customElements' in window && !customElements.get('theme-toggle')) {
  408. customElements.define('theme-toggle', ThemeToggle)
  409. }
  410. }
  411. })
  412. </script>
  413. <script src="/static/david/js/popper-2.11.8.min.js"></script>
  414. <script src="/static/david/js/tippy-bundle-6.3.7.umd.min.js"></script>
  415. <script>
  416. tippy('[data-tippy]', {
  417. content(reference) {
  418. reference.addEventListener('click', (e) => e.preventDefault())
  419. return `
  420. <h3 lang="fr">
  421. <img src="${reference.dataset.favicon}" loading="lazy">
  422. <a href="${reference.dataset.source}"
  423. >Article sur ${reference.dataset.domain}</a></h3>
  424. <p lang="${reference.hreflang}"><em>${reference.dataset.description}</em></p>
  425. <div class="tippy-links" lang="fr">
  426. <a href="${reference.href}">Archive au ${reference.dataset.date}</a>
  427. </div>
  428. `
  429. },
  430. allowHTML: true,
  431. interactive: true,
  432. delay: [150, 700],
  433. hideOnClick: false
  434. })
  435. </script>
  436. <script type="module">
  437. import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js'
  438. const markObserver = new IntersectionObserver((entries, observer) => {
  439. const computedStyle = getComputedStyle(document.documentElement)
  440. const markBackground = computedStyle.getPropertyValue('--mark-background')
  441. for (const entry of entries) {
  442. if (entry.intersectionRatio === 0) continue
  443. const markElement = entry.target
  444. markElement.style.backgroundColor = 'inherit'
  445. const annotation = annotate(
  446. markElement, {
  447. type: 'highlight',
  448. multiline: true,
  449. color: markBackground,
  450. // animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches
  451. animate: false
  452. }
  453. )
  454. annotation.show()
  455. observer.unobserve(markElement)
  456. }
  457. }, {threshold: 1.0})
  458. for (const markElement of document.querySelectorAll('mark')) {
  459. markObserver.observe(markElement)
  460. }
  461. </script>
  462. </body>
  463. </html>