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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429
  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 #traces — David Larlet</title>
  13. <meta name="description" content="Publications relatives au tag #traces">
  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 #traces</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/03/04/" title="Lien permanent vers cet article">Jour&nbsp;3</a> (2023-03-04)</h2>
  75. <p>Je me réveille à 4h45. Tout est paisible. Je me réveille à 5h15 car j’ai le visage qui touche la toile de tente. Il vient de tomber cinq centimètres en une demi-heure&#8239;! Je secoue la tente car j’ai peur pour la sonde à neige qui me sert de mat de tipi —&nbsp;et qui commence à courber dangereusement&nbsp;— ne casse alors que je suis encore dans mon duvet. Je passe les prochains quarts d’heure à faire glisser la neige très collante lorsqu’elle s’accumule avant d’oublier toute notion de grasse matinée. Le bon côté, c’est qu’il ne fait pas trop&nbsp;froid.</p>
  76. <p>Je m’habille et je prépare mon petit déjeuner avec mon réchaud à alcool, bien à l’abri, ça tombe en continu et le retour s’annonce épique. J’ai déjà un petit rempart de neige autour de la tente. Dire que je me réjouissais la veille que le sentier ait pu&nbsp;geler…</p>
  77. <p>Je sors quand même faire des photos en pleine tempête de neige et je suis très content de cette session. Même si les photos une fois développées sont assez frustrantes sur ce plan là, la recherche du moment me donne un grand&nbsp;sourire.</p>
  78. <figure>
  79. <a href="#2023-03-04-tempete-neige"
  80. title="Cliquer pour une version haute résolution">
  81. <picture>
  82. <source
  83. srcset="/static/david/2023/2023-03-04-tempete-neige.webp 1920w"
  84. sizes="min(100vw, calc(100vh * 1920 / 1280))"
  85. type="image/webp">
  86. <!-- The <img> tag is a fallback image (required in the <picture> tag) -->
  87. <img
  88. src="/static/david/2023/2023-03-04-tempete-neige.jpg"
  89. width="1920" height="1280"
  90. srcset="/static/david/2023/2023-03-04-tempete-neige.jpg 1920w"
  91. sizes="min(100vw, calc(100vh * 1920 / 1280))"
  92. fetchpriority="high"
  93. decoding="sync"
  94. alt="La rivière sous la tempête.">
  95. </picture>
  96. </a>
  97. <a href="#_" class="lightbox" id="2023-03-04-tempete-neige">
  98. <picture style="margin:0 auto;">
  99. <source
  100. srcset="/static/david/2023/2023-03-04-tempete-neige.webp 1920w"
  101. sizes="min(100vw, calc(100vh * 1920 / 1280))"
  102. type="image/webp">
  103. <!-- The <img> tag is a fallback image (required in the <picture> tag) -->
  104. <img
  105. src="/static/david/2023/2023-03-04-tempete-neige.jpg"
  106. width="1920" height="1280"
  107. srcset="/static/david/2023/2023-03-04-tempete-neige.jpg 1920w"
  108. sizes="min(100vw, calc(100vh * 1920 / 1280))"
  109. fetchpriority="high"
  110. decoding="sync"
  111. alt="La rivière sous la tempête.">
  112. </picture>
  113. </a>
  114. <figcaption>Il neigeait dru&nbsp;!</figcaption>
  115. </figure>
  116. <p>Cerise sur le gâteau, je vois des traces sur la berge opposée et je commence à les suivre en aval puis en amont, assez loin. Il est passé il y a moins de 15&nbsp;minutes et c’était à 100&nbsp;mètres de mon campement. Je casse le suspense tout de suite, je n’ai jamais vu l’animal mais la traque dans ces conditions idéales pour avoir l’espoir de s’approcher sans être vu ni entendu était extrêmement stimulante. À chaque ouverture sur la rivière depuis le sentier, j’imaginais ce que ça pourrait donner avec un coyote ou un ongulé au premier plan. J’ai encore ces images dans la&nbsp;tête&nbsp;:-).</p>
  117. <figure>
  118. <a href="#2023-03-04-traces"
  119. title="Cliquer pour une version haute résolution">
  120. <picture>
  121. <source
  122. srcset="/static/david/2023/2023-03-04-traces.webp 1920w"
  123. sizes="min(100vw, calc(100vh * 1920 / 1280))"
  124. type="image/webp">
  125. <!-- The <img> tag is a fallback image (required in the <picture> tag) -->
  126. <img
  127. src="/static/david/2023/2023-03-04-traces.jpg"
  128. width="1920" height="1280"
  129. srcset="/static/david/2023/2023-03-04-traces.jpg 1920w"
  130. sizes="min(100vw, calc(100vh * 1920 / 1280))"
  131. fetchpriority="high"
  132. decoding="sync"
  133. alt="Des traces dans la neige.">
  134. </picture>
  135. </a>
  136. <a href="#_" class="lightbox" id="2023-03-04-traces">
  137. <picture style="margin:0 auto;">
  138. <source
  139. srcset="/static/david/2023/2023-03-04-traces.webp 1920w"
  140. sizes="min(100vw, calc(100vh * 1920 / 1280))"
  141. type="image/webp">
  142. <!-- The <img> tag is a fallback image (required in the <picture> tag) -->
  143. <img
  144. src="/static/david/2023/2023-03-04-traces.jpg"
  145. width="1920" height="1280"
  146. srcset="/static/david/2023/2023-03-04-traces.jpg 1920w"
  147. sizes="min(100vw, calc(100vh * 1920 / 1280))"
  148. fetchpriority="high"
  149. decoding="sync"
  150. alt="Des traces dans la neige.">
  151. </picture>
  152. </a>
  153. <figcaption>À une prochaine, l’animal.</figcaption>
  154. </figure>
  155. <p>Le rangement du campement sous la neige est assez complexe sans tout mouiller mais c’est un bon exercice. Par contre le retour est vraiment fastidieux car en montée avec 15&nbsp;cm de poudreuse fraîche en plus ça devient difficile de traîner une luge adaptée par mes soins. Je me dis qu’il serait pertinent d’investir dans une vraie&nbsp;pulka…</p>
  156. <figure>
  157. <a href="#2023-03-04-traineau"
  158. title="Cliquer pour une version haute résolution">
  159. <picture>
  160. <source
  161. srcset="/static/david/2023/2023-03-04-traineau.webp 1512w"
  162. sizes="min(100vw, calc(100vh * 1512 / 2268))"
  163. type="image/webp">
  164. <!-- The <img> tag is a fallback image (required in the <picture> tag) -->
  165. <img
  166. src="/static/david/2023/2023-03-04-traineau.jpg"
  167. width="1512" height="2268"
  168. srcset="/static/david/2023/2023-03-04-traineau.jpg 1512w"
  169. sizes="min(100vw, calc(100vh * 1512 / 2268))"
  170. fetchpriority="high"
  171. decoding="sync"
  172. alt="Le traîneau sur le chemin du retour.">
  173. </picture>
  174. </a>
  175. <a href="#_" class="lightbox" id="2023-03-04-traineau">
  176. <picture style="margin:0 auto;">
  177. <source
  178. srcset="/static/david/2023/2023-03-04-traineau.webp 1512w"
  179. sizes="min(100vw, calc(100vh * 1512 / 2268))"
  180. type="image/webp">
  181. <!-- The <img> tag is a fallback image (required in the <picture> tag) -->
  182. <img
  183. src="/static/david/2023/2023-03-04-traineau.jpg"
  184. width="1512" height="2268"
  185. srcset="/static/david/2023/2023-03-04-traineau.jpg 1512w"
  186. sizes="min(100vw, calc(100vh * 1512 / 2268))"
  187. fetchpriority="high"
  188. decoding="sync"
  189. alt="Le traîneau sur le chemin du retour.">
  190. </picture>
  191. </a>
  192. <figcaption>Le secret, c’est de faire des pauses, vraiment beaucoup de pauses&nbsp;!</figcaption>
  193. </figure>
  194. <hr />
  195. <p>Davantage de <a href="https://media.larlet.fr/2023-03-ouareau-01.html">photos disponibles par ici</a>.</p>
  196. <h2><a href="/david/2023/01/20/" title="Lien permanent vers cet article">Lettres</a> (2023-01-20)</h2>
  197. <blockquote lang="en">
  198. <p>This is how it all&nbsp;started:</p>
  199. <p>We asked our friends to write a letter to their great great great grandchildren because we found the way to preserve their letters for a thousand&nbsp;years.</p>
  200. <p><cite><em><a href="https://www.letters-to-the-future.com/">Letters to the&nbsp;future</a></em></cite></p>
  201. </blockquote>
  202. <p>Cette initiative m’émeut. L’idée, l’exécution, le résultat, toutes les étapes comportent leur lot d’espoir <em>et</em> de nostalgie. Une boule de <a href="/david/stream/2018/05/16/">solastalgie</a> qui fait mal à <a href="/david/stream/2019/07/02/">mon anxiété</a>.</p>
  203. <p>Comme une lettre à&nbsp;l’amer.</p>
  204. <blockquote lang="en">
  205. <p>This book brings together the polar opposites of negative and&nbsp;positive.</p>
  206. <p>On one hand, it shows optimism, hope and compassion for the future of the planet. On the other hand, it shows the ever lasting detriment of our actions when it comes to single-use&nbsp;plastic.</p>
  207. <p><cite><em>Ibid.</em></cite></p>
  208. </blockquote>
  209. <hr />
  210. <blockquote>
  211. <p>ETERNESIA est un projet humaniste dont l’objectif est d’inclure chaque existence au sein du patrimoine immatériel de l’humanité, en permettant à tous ceux qui le désirent de laisser un ensemble de&nbsp;traces numériques de leur&nbsp;vie qui seront conservées sans limite de&nbsp;durée.</p>
  212. <p>ETERNESIA est porteur d’<mark>un nouveau droit de l’homme, celui du droit à la mémoire et à la postérité numérique,</mark> dont le droit à l’oubli fait aussi partie intégrante. ETERNESIA est un projet&nbsp;à but non lucratif, indépendant de toute tradition religieuse et de toute idéologie politique. ETERNESIA est par nature philanthropique, éthique et universel, ouvert à tous, sans discrimination d’aucune&nbsp;sorte.</p>
  213. <p><cite><em><a href="http://eternesia.org/">ETERNESIA — Traces&nbsp;d’Eternité</a></em></cite></p>
  214. </blockquote>
  215. <h2><a href="/david/2023/01/15/" title="Lien permanent vers cet article">Snow&nbsp;Fall</a> (2023-01-15)</h2>
  216. <blockquote lang="en">
  217. <p>Ten years ago this week, in December 2012, “<a href="https://www.nytimes.com/projects/2012/snow-fall/index.html">Snow Fall: The Avalanche at Tunnel Creek</a>,” an ambitious multimedia feature about a deadly avalanche in Washington State that year, took the journalism world by&nbsp;storm.</p>
  218. <p><cite><em><a href="https://www.nytimes.com/2022/12/23/insider/snow-fall-at-10-how-it-changed-journalism.html">‘Snow Fall’ at 10: How It Changed Journalism</a></em>&nbsp;(<a href="/david/cache/2023/cba96d83d96944c55675cb073fcfc60d/">cache</a>)</cite></p>
  219. </blockquote>
  220. <p>Il est rare que je me souvienne d’évènement historiques autour du Web. À part peut-être les sorties de <a href="/david/biologeek/archives/20041121-mozparty-des-geeks-irl--/">Firefox 1</a> et <a href="/david/biologeek/archives/20061028-soiree-firefox-2-paris/">2</a> car j’étais aux évènements&nbsp;dédiés.</p>
  221. <p>«&nbsp;<span lang=en>Snow Fall</span>&nbsp;» était d’un autre ordre de grandeur pour moi car ça ouvrait au Web une possibilité de raconter des histoires dynamiques. Je me rappelle avec une assez bonne précision de l’excitation que j’avais eu en parcourant la page à l’époque. Ce n’était pas tant le côté immersif que technique qui m’intéressait alors, et c’était une époque où l’on pouvait encore consulter une source de site web et la comprendre. J’ai tellement appris comme&nbsp;ça&#8239;!</p>
  222. <p>Allez consulter cette magnificence, une source commentée, non minifiée, avec du contenu qui est dans la page et des media liés de manière standardisée et compréhensible. Une autre&nbsp;époque.</p>
  223. <p>On en parlait récemment avec <a href="https://thom4.net/">Thomas</a>, comment est-ce qu’une génération qui est principalement autodidacte a-t-elle pu être à l’origine de la complexité actuelle des outils de publication sur le Web&#8239;? Je suis tellement triste de la marche que l’on a créé pour réduire l’accessibilité de sa source. Il y a une tendance humaine à faire —&nbsp;plus ou moins consciemment&nbsp;— tomber l’échelle qui nous a permis de monter pour être sûr de garder une certaine avance sur les&nbsp;suivant·es.</p>
  224. <p><em>Tout parallèle avec notre rapport à l’immigration serait bien évidement&nbsp;fortuit.</em></p>
  225. <blockquote lang="en">
  226. <p>Mr. Duenes also noted that “Snow Fall” helped budding designers and engineers see themselves as potential&nbsp;journalists.</p>
  227. <p>“It generated the idea among people with visual skills that journalism might be a place for them,” Mr. Duenes said. “Not people who were experts at the moment, but people in school who could see an overlap between an area where they had talent and the discipline of visual&nbsp;journalism.”</p>
  228. <p><cite><em>Ibid.</em></cite></p>
  229. </blockquote>
  230. <hr />
  231. <blockquote lang="en">
  232. <p>For a data format, yaml is extremely complicated. It aims to be a human-friendly format, but in striving for that it introduces <mark>so much complexity,</mark> that I would argue it achieves the opposite result. Yaml is full of footguns and its friendliness is deceptive. In this post I want to demonstrate this through an&nbsp;example.</p>
  233. <p><cite><em><a href="https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell">The yaml document from hell</a></em>&nbsp;(<a href="/david/cache/2023/3b05eb0d7d0409bcfd53b4cdf6c20daa/">cache</a>)</cite></p>
  234. </blockquote>
  235. <blockquote lang="en">
  236. <p> It was among the strongest feelings of grief I have ever encountered. The contrast between the vicious coldness of space and the warm nurturing of Earth below filled me with overwhelming sadness. Every day, we are confronted with the knowledge of further destruction of Earth at our hands: the extinction of animal species, of flora and fauna . . . things that took five billion years to evolve, and suddenly we will never see them again because of the interference of mankind. It filled me with dread. <mark>My trip to space was supposed to be a celebration; instead, it felt like a&nbsp;funeral.</mark></p>
  237. <p><cite><em><a href="https://variety.com/2022/tv/news/william-shatner-space-boldly-go-excerpt-1235395113/">William Shatner: My Trip to Space Filled Me With Sadness - Variety</a></em>&nbsp;(<a href="/david/cache/2023/ca3e313992d7ac7e4aeaece85e7f4b6a/">cache</a>)</cite></p>
  238. </blockquote>
  239. <h2><a href="/david/2023/01/08/" title="Lien permanent vers cet article">Partage</a> (2023-01-08)</h2>
  240. <details>
  241. <summary>Déplier pour lire le contenu de la publication</summary>
  242. <p><a href="https://maiadereva.net/">Maïa</a> me pose la question suite à une discussion Mastodon autour de <a href="/david/2023/01/04/" title="Rétrospectives">Rétrospectives</a>&nbsp;:</p>
  243. <blockquote>
  244. <p>Je me suis d’ailleurs demandé comment tu faisais la distinction entre ce que tu documentes et ce que tu ne documentes pas… Vu que tu dis que ça a un impact sur comment tu te comportes, tu acceptes donc cet impact pour certains&nbsp;domaines&#8239;?</p>
  245. </blockquote>
  246. <p>Je partage beaucoup de choses en ligne, des réflexions, des émotions, des créations, des explorations, etc. Ma limite se définit généralement selon plusieurs&nbsp;critères&nbsp;:</p>
  247. <ul>
  248. <li>si je suis avec des personnes, je ne partage pas forcément leur présence et encore moins leur photo (à part évènement public avec représentation, et encore), ça s’applique très souvent à la&nbsp;famille&#8239;;</li>
  249. <li>si je parle d’un endroit, la géolocalisation reste assez floue intentionnellement (je suis passé par ce lac tel jour par exemple, pas&nbsp;plus)&#8239;;</li>
  250. <li>si j’utilise un outil, il faut qu’il soit possible d’en garder les traces en privé et que ce soit explicite d’en rendre possible l’accès si à un moment je change&nbsp;d’avis.</li>
  251. </ul>
  252. <p>Il y a certainement eu des exceptions depuis que je publie des choses et ces critères ont pu évoluer au cours du temps aussi. Je suis content d’avoir pris le temps d’y répondre par ici pour pouvoir revenir dessus dans quelques années/décennies et comparer cette frontière floue à&nbsp;t+1.</p>
  253. <p><em>Note&nbsp;: c’est un peu pour ça aussi que j’ai arrêté de faire des <a href="https://media.larlet.fr/2021--videos-01.html">vidéos</a>, la mise en scène allait au-delà de ce qui était acceptable pour que je ne sois pas en outrospection&nbsp;constante.</em></p>
  254. <hr />
  255. <blockquote lang="en">
  256. <p>🤗 Writing takes time. Writing well takes a lot of time. On the other hand, the output of writing is almost always more clarity, and sometimes a clear decision. Over my career, I think I’ve wasted at least ten times more time going around and around in conversations without finding consensus than I have writing documents that didn’t turn out to be valuable. It’s very seldom that I think back over writing something and conclude that it wasn’t a good investment of my time. That can happen, and you have to watch for it, but it doesn’t happen to me a&nbsp;lot.</p>
  257. <p><cite><em><a href="https://brooker.co.za/blog/2022/11/08/writing.html">Writing Is Magic</a></em>&nbsp;(<a href="/david/cache/2023/36a8b8a87633796d41c2574720812594/">cache</a>)</cite></p>
  258. </blockquote>
  259. </details>
  260. </main>
  261. <hr>
  262. <footer>
  263. <p>
  264. <nobr>
  265. <a href="/david/" title="Aller à l’accueil"
  266. ><svg class="icon icon-home">
  267. <use
  268. xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-home"
  269. ></use>
  270. </svg>
  271. Accueil</a
  272. >
  273. </nobr>
  274. <nobr>
  275. <a href="/david/log/" title="Accès au flux RSS"
  276. ><svg class="icon icon-rss2">
  277. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-rss2"></use>
  278. </svg>
  279. Suivre</a
  280. >
  281. </nobr>
  282. <nobr>
  283. <a href="http://larlet.com" title="Go to my English profile" data-instant
  284. ><svg class="icon icon-user-tie">
  285. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-user-tie"></use>
  286. </svg>
  287. Pro</a
  288. >
  289. </nobr>
  290. <nobr>
  291. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"
  292. ><svg class="icon icon-mail">
  293. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-mail"></use>
  294. </svg>
  295. Email</a
  296. >
  297. </nobr>
  298. <nobr>
  299. <abbr
  300. class="nowrap"
  301. title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"
  302. ><svg class="icon icon-hammer2">
  303. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-hammer2"></use>
  304. </svg>
  305. Légal</abbr
  306. >
  307. </nobr>
  308. </p>
  309. <template id="theme-selector">
  310. <form>
  311. <fieldset>
  312. <legend><svg class="icon icon-brightness-contrast">
  313. <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-brightness-contrast"></use>
  314. </svg> Thème</legend>
  315. <label>
  316. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  317. </label>
  318. <label>
  319. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  320. </label>
  321. <label>
  322. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  323. </label>
  324. </fieldset>
  325. </form>
  326. </template>
  327. </footer>
  328. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  329. <script>
  330. function loadThemeForm(templateName) {
  331. const themeSelectorTemplate = document.querySelector(templateName)
  332. const form = themeSelectorTemplate.content.firstElementChild
  333. themeSelectorTemplate.replaceWith(form)
  334. form.addEventListener('change', (e) => {
  335. const chosenColorScheme = e.target.value
  336. localStorage.setItem('theme', chosenColorScheme)
  337. toggleTheme(chosenColorScheme)
  338. })
  339. const selectedTheme = localStorage.getItem('theme')
  340. if (selectedTheme && selectedTheme !== 'undefined') {
  341. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  342. }
  343. }
  344. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  345. window.addEventListener('load', () => {
  346. let hasDarkRules = false
  347. for (const styleSheet of Array.from(document.styleSheets)) {
  348. let mediaRules = []
  349. for (const cssRule of styleSheet.cssRules) {
  350. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  351. continue
  352. }
  353. // WARNING: Safari does not have/supports `conditionText`.
  354. if (cssRule.conditionText) {
  355. if (cssRule.conditionText !== prefersColorSchemeDark) {
  356. continue
  357. }
  358. } else {
  359. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  360. continue
  361. }
  362. }
  363. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  364. }
  365. // WARNING: do not try to insert a Rule to a styleSheet you are
  366. // currently iterating on, otherwise the browser will be stuck
  367. // in a infinite loop…
  368. for (const mediaRule of mediaRules) {
  369. styleSheet.insertRule(mediaRule.cssText)
  370. hasDarkRules = true
  371. }
  372. }
  373. if (hasDarkRules) {
  374. loadThemeForm('#theme-selector')
  375. }
  376. })
  377. </script>
  378. </body>
  379. </html>