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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656
  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. Étiquette #solastalgia
  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="Publications relatives au tag #solastalgia">
  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. details[open] summary {
  107. display: none;
  108. }
  109. </style>
  110. <body data-instant-intensity="viewport-all">
  111. <article>
  112. <header>
  113. <hgroup>
  114. <h1>#solastalgia</h1>
  115. <p>Publications relatives à cette étiquette</p>
  116. </hgroup>
  117. </header>
  118. <nav>
  119. <p>
  120. <a href="/david/" title="Aller à l’accueil">
  121. Accueil</a>
  122. <a rel="tags"
  123. href="/david/2024/#tags"
  124. title="Liste de toutes les étiquettes">
  125. Étiquettes</a>
  126. <a href="/david/recherche/" title="Aller à la page de recherche" rel="search" data-no-instant>Recherche</a>
  127. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  128. </p>
  129. </nav>
  130. <h2>
  131. <a href="/david/2024/03/04/" title="Lien permanent vers cet article">Jour 1</a> <time datetime="2024-03-04">4 mars 2024</time>
  132. </h2>
  133. <p>Une réservation de longue date qui s’est transformée en sortie familiale (!), malheureusement nous n’avons pas pu rejoindre le refuge à ski faute de neige suffisante. C’était problématique car j’avais prévu de traîner une bonne partie de l’équipement, ce qui se révélait être un peu plus lourd sur le dos. Bon, aussi, on était partis sur une raclette, ça n’aide&nbsp;pas&nbsp;😅.</p>
  134. <p>J’avais très peur que le sentier soit peu praticable sans percer à chaque pas, ce qui m’était déjà arrivé dans un tel contexte. Vu le poids du sac, je craignais notamment que ma cheville en cours de réparation refasse le même mouvement en descente… mais nous étions à une poignée de degrés de cet état de la neige pour notre plus grand&nbsp;bonheur.</p>
  135. <p>Ce n’était pas non plus de tout repos et la récompense d’une lac dégelant à l’arrivée était bien méritée. Il est rare d’avoir ces conditions très douces dans un contexte hivernal, on en avait même oublié de prendre nos&nbsp;tuques&#8239;!</p>
  136. <p><em>Tests du jour&nbsp;: les barquettes en aluminium pour faire réflecteur de bougies. Efficace. Les bougies longues durées d’Ikea pour faire fondre du fromage. Pas&nbsp;efficace.</em></p>
  137. <figure>
  138. <a href="/static/david/2024/2024-03-04-lac-corbeau.jpg"
  139. title="Cliquer pour une version haute résolution">
  140. <img
  141. src="/static/david/2024/2024-03-04-lac-corbeau.jpg"
  142. width="3024" height="4032"
  143. srcset="/static/david/2024/2024-03-04-lac-corbeau.jpg 3024w, /static/david/2024/2024-03-04-lac-corbeau_660x440.jpg 660w, /static/david/2024/2024-03-04-lac-corbeau_990x660.jpg 990w, /static/david/2024/2024-03-04-lac-corbeau_1320x880.jpg 1320w"
  144. sizes="min(100vw, calc(100vh * 3024 / 4032))"
  145. loading="lazy"
  146. decoding="async"
  147. alt="Lac corbeau avec des boulots au premier plan.">
  148. </a>
  149. <figcaption>Un décor très minecrafteux&nbsp;(sic).</figcaption>
  150. </figure>
  151. <nav>
  152. <p>
  153. <a href="/david/2024/dystopie/"
  154. title="Liste de tous les articles 2024 associés à cette étiquette"
  155. rel="tag">#dystopie</a>
  156. <a href="/david/2024/foret/"
  157. title="Liste de tous les articles 2024 associés à cette étiquette"
  158. rel="tag">#forêt</a>
  159. <a href="/david/2024/solastalgia/"
  160. title="Liste de tous les articles 2024 associés à cette étiquette"
  161. rel="tag">#solastalgia</a>
  162. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  163. </p>
  164. </nav>
  165. <h2>
  166. <a href="/david/2024/02/28/" title="Lien permanent vers cet article">Dérèglement</a> <time datetime="2024-02-28">28 février 2024</time>
  167. </h2>
  168. <p>J’avais déjà remarqué leur départ très tardif en décembre. Hier soir, j’ai entendu mes premières bernaches. Demain matin, elles risquent d’avoir un petit peu&nbsp;frais…</p>
  169. <figure>
  170. <a href="/static/david/2024/2024-02-28-courbe-temperature.jpg"
  171. title="Cliquer pour une version haute résolution">
  172. <img
  173. src="/static/david/2024/2024-02-28-courbe-temperature.jpg"
  174. width="960" height="2079"
  175. srcset="/static/david/2024/2024-02-28-courbe-temperature.jpg 960w, /static/david/2024/2024-02-28-courbe-temperature_660x440.jpg 660w, /static/david/2024/2024-02-28-courbe-temperature_990x660.jpg 990w, /static/david/2024/2024-02-28-courbe-temperature_1320x880.jpg 1320w"
  176. sizes="min(100vw, calc(100vh * 960 / 2079))"
  177. loading="lazy"
  178. decoding="async"
  179. alt="Capture d’écran de la météo, les températures vont de 14°C à -13°C en moins de 12&nbsp;heures.">
  180. </a>
  181. <figcaption>#MeanwhileInCanada</figcaption>
  182. </figure>
  183. <a href="#hr-92" title="Lien vers cette section de la page"><hr id="hr-92" /></a>
  184. <p>Le même jour, j’intègre les <a data-link-domain="mistune.lepture.com" href="https://mistune.lepture.com/en/latest/directives.html#admonitions">admonitions</a> à un de nos outils interne et j’apprends qu’il est possible d’intégrer ce type de rendu pour le <a data-link-domain="github.com" href="https://github.com/orgs/community/discussions/16925"><em>markdown</em> servi par Microsoft Github</a> en lisant le <a data-link-domain="github.com" href="https://github.com/jgarber623/aria-collapsible">README de aria-collapsible</a>.</p>
  185. <p>Au passage, j’apprends beaucoup en lisant le code de <em>Web Components</em> en ce moment. Il y a une effervescence dans le domaine parmi des personnes qui ont un bon niveau de JS ainsi qu’une sensibilité à l’accessibilité de leurs productions. Ici par exemple, je découvre comment faire des composants relativement&nbsp;défensifs.</p>
  186. <a href="#hr-93" title="Lien vers cette section de la page"><hr id="hr-93" /></a>
  187. <blockquote lang="en">
  188. <p>Anyway, if you want to know some basic information about Passkeys I know a site you can check&nbsp;out.</p>
  189. <p><cite><em><a data-link-domain="chriscoyier.net" href="https://chriscoyier.net/2024/02/28/where-im-at-on-the-whole-css-tricks-thing/" hreflang="en"
  190. title="Consultation de l’article (anglais)">Where I’m at on the whole CSS-Tricks thing</a>
  191. <a href="/david/cache/2024/2cbc47f0ebded9d54fe6163fa4ea0667/" hreflang="en"
  192. data-tippy data-description="It was March 2022 when I sold CSS-Tricks to DigitalOcean. So it’s been just about 2 years now."
  193. data-source="https://chriscoyier.net/2024/02/28/where-im-at-on-the-whole-css-tricks-thing/"
  194. data-date="2024-02-28"
  195. data-favicon="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%22256%22 height=%22256%22 viewBox=%220 0 100 100%22><rect width=%22100%22 height=%22100%22 rx=%2220%22 fill=%22%23f8d773%22></rect><text x=%2250%%22 y=%2250%%22 dominant-baseline=%22central%22 text-anchor=%22middle%22 font-size=%2290%22>👨‍💻</text></svg>"
  196. data-domain="chriscoyier.net"
  197. ><svg xmlns="http://www.w3.org/2000/svg"
  198. width="24" height="24" viewBox="0 0 24 24" fill="none"
  199. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  200. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  201. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  202. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  203. </svg>
  204. <span class="sr-only">[archive]</span></a></em></cite></p>
  205. </blockquote>
  206. <p>Beaucoup d’honnêteté et… une belle ressource de perdue, ou en passe de l’être. <em>Tricky.</em></p>
  207. <a href="#hr-94" title="Lien vers cette section de la page"><hr id="hr-94" /></a>
  208. <blockquote lang="en">
  209. <p>Using <code>color-mix()</code>, we can adjust the tint/shade based on the background color, meaning <mark>we don’t need to manually select lighter/darker colors</mark> for those states. And because we’re using OKLCH, the variations will be perceptually uniform, <a data-link-domain="lea.verou.me" href="https://lea.verou.me/blog/2020/04/lch-colors-in-css-what-why-and-how/#3.-lch-lightness-actually-means-something">unlike HSL</a>. This means that tints and shades will look consistent for any color we&nbsp;choose!</p>
  210. <p><cite><em><a data-link-domain="abeautifulsite.net" href="https://www.abeautifulsite.net/posts/better-buttons-with-color-mix-and-custom-properties/" hreflang="en"
  211. title="Consultation de l’article (anglais)">Better Buttons with color-mix() and Custom Properties</a>
  212. <a href="/david/cache/2024/b2ccbe813d97ba39ba64a1b6d14422dd/" hreflang="en"
  213. data-tippy data-description="Let the browser and OKLCH do the hard work of styling states."
  214. data-source="https://www.abeautifulsite.net/posts/better-buttons-with-color-mix-and-custom-properties/"
  215. data-date="2024-02-28"
  216. data-favicon="https://www.abeautifulsite.net/images/logos/leaf.svg"
  217. data-domain="abeautifulsite.net"
  218. ><svg xmlns="http://www.w3.org/2000/svg"
  219. width="24" height="24" viewBox="0 0 24 24" fill="none"
  220. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  221. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  222. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  223. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  224. </svg>
  225. <span class="sr-only">[archive]</span></a></em></cite></p>
  226. </blockquote>
  227. <p>Les personnes qui maîtrisent bien CSS vont avoir de plus en plus de valeur. À juste&nbsp;titre.</p>
  228. <nav>
  229. <p>
  230. <a href="/david/2024/documentation/"
  231. title="Liste de tous les articles 2024 associés à cette étiquette"
  232. rel="tag">#documentation</a>
  233. <a href="/david/2024/partage/"
  234. title="Liste de tous les articles 2024 associés à cette étiquette"
  235. rel="tag">#partage</a>
  236. <a href="/david/2024/solastalgia/"
  237. title="Liste de tous les articles 2024 associés à cette étiquette"
  238. rel="tag">#solastalgia</a>
  239. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  240. </p>
  241. </nav>
  242. <h2>
  243. <a href="/david/2024/02/26/" title="Lien permanent vers cet article">Galaxie</a> <time datetime="2024-02-26">26 février 2024</time>
  244. </h2>
  245. <p>Anecdote du jour qui met le sourire de bon&nbsp;matin.</p>
  246. <figure>
  247. <a href="/static/david/2024/2024-02-26-neige-galaxie.jpg"
  248. title="Cliquer pour une version haute résolution">
  249. <img
  250. src="/static/david/2024/2024-02-26-neige-galaxie.jpg"
  251. width="4032" height="3024"
  252. srcset="/static/david/2024/2024-02-26-neige-galaxie.jpg 4032w, /static/david/2024/2024-02-26-neige-galaxie_660x440.jpg 660w, /static/david/2024/2024-02-26-neige-galaxie_990x660.jpg 990w, /static/david/2024/2024-02-26-neige-galaxie_1320x880.jpg 1320w"
  253. sizes="min(100vw, calc(100vh * 4032 / 3024))"
  254. loading="lazy"
  255. decoding="async"
  256. alt="De la neige qui tombe à gros flocon.">
  257. </a>
  258. <figcaption>L’espace d’un instant, par la&nbsp;fenêtre.</figcaption>
  259. </figure>
  260. <blockquote>
  261. <p>— Oh la belle neige&#8239;!<br />
  262. —&nbsp;Il pleut des étoiles, la galaxie est en train de tomber.<br />
  263. —&nbsp;❤️</p>
  264. </blockquote>
  265. <a href="#hr-89" title="Lien vers cette section de la page"><hr id="hr-89" /></a>
  266. <blockquote lang="en">
  267. <p>CSS Variable Groups is a way to define multiple properties under the same namespace and pass the entire group around, addressing several pain points around design tokens, design systems, and integrating third-party&nbsp;components.</p>
  268. <p><cite><em><a data-link-domain="lea.verou.me" href="https://lea.verou.me/docs/var-groups/" hreflang="en"
  269. title="Consultation de l’article (anglais)">Proposal: CSS Variable Groups</a>
  270. <a href="/david/cache/2024/0cc2e9c6b29f8326b2ff628f64e22888/" hreflang="en"
  271. data-tippy data-description="CSS Variable Groups is a way to define multiple properties under the same namespace"
  272. data-source="https://lea.verou.me/docs/var-groups/"
  273. data-date="2024-02-27"
  274. data-favicon="https://lea.verou.me/mark.svg"
  275. data-domain="lea.verou.me"
  276. ><svg xmlns="http://www.w3.org/2000/svg"
  277. width="24" height="24" viewBox="0 0 24 24" fill="none"
  278. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  279. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  280. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  281. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  282. </svg>
  283. <span class="sr-only">[archive]</span></a></em></cite></p>
  284. </blockquote>
  285. <p>Heureusement que Lea Verou <a href="/david/2024/02/18/" title="In·directions">me lit</a> et traduit ça en proposition de <a data-link-domain="github.com" href="https://github.com/w3c/csswg-drafts/issues/9992">standardisation</a> en quelques jours au lieu de chialer&nbsp;😅🙇. Trop&nbsp;hâte&#8239;!</p>
  286. <a href="#hr-90" title="Lien vers cette section de la page"><hr id="hr-90" /></a>
  287. <blockquote lang="en">
  288. <p><mark>Maybe that’s ok.</mark> The amount of power you give plugin authors is a delicate balance. Giving them too much power could impact the stability of your project. But giving them too little power makes it hard for them to solve their problems — in that case you might as well not have&nbsp;plugins.</p>
  289. <p><cite><em><a data-link-domain="css-tricks.com" href="https://css-tricks.com/designing-a-javascript-plugin-system/" hreflang="en"
  290. title="Consultation de l’article (anglais)">Designing a JavaScript Plugin System</a>
  291. <a href="/david/cache/2024/d9c30865dde8c88394ba054836a18ae3/" hreflang="en"
  292. data-tippy data-description="WordPress has plugins. jQuery has plugins. Gatsby, Eleventy, and Vue do, too."
  293. data-source="https://css-tricks.com/designing-a-javascript-plugin-system/"
  294. data-date="2024-02-27"
  295. data-favicon="https://css-tricks.com/favicon.svg"
  296. data-domain="css-tricks.com"
  297. ><svg xmlns="http://www.w3.org/2000/svg"
  298. width="24" height="24" viewBox="0 0 24 24" fill="none"
  299. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  300. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  301. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  302. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  303. </svg>
  304. <span class="sr-only">[archive]</span></a></em></cite></p>
  305. </blockquote>
  306. <p>Problématique du jour&nbsp;: comment concevoir un système de <em>plugins</em> qui soit le bon compromis entre flexibilité et stabilité&#8239;? Ce n’est pas si évident, encore plus dans un écosystème aussi évolutif que&nbsp;JavaScript.</p>
  307. <nav>
  308. <p>
  309. <a href="/david/2024/parentalite/"
  310. title="Liste de tous les articles 2024 associés à cette étiquette"
  311. rel="tag">#parentalité</a>
  312. <a href="/david/2024/poesie/"
  313. title="Liste de tous les articles 2024 associés à cette étiquette"
  314. rel="tag">#poésie</a>
  315. <a href="/david/2024/solastalgia/"
  316. title="Liste de tous les articles 2024 associés à cette étiquette"
  317. rel="tag">#solastalgia</a>
  318. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  319. </p>
  320. </nav>
  321. <h2>
  322. <a href="/david/2024/02/17/" title="Lien permanent vers cet article">Quotidien</a> <time datetime="2024-02-17">17 février 2024</time>
  323. </h2>
  324. <p>S’il y a une chose qui a changé depuis que j’ai repris une écriture quotidienne c’est de ne presque plus regarder de films /&nbsp;séries.</p>
  325. <p>Vu la qualité des vidéos que <q lang="fr_ca">j’écoutais</q>, ça n’est vraiment pas une mauvaise&nbsp;chose.</p>
  326. <a href="#hr-74" title="Lien vers cette section de la page"><hr id="hr-74" /></a>
  327. <p>Outil du jour&nbsp;: <a data-link-domain="whocanuse.com" href="https://www.whocanuse.com">who can use</a>.</p>
  328. <p>Voir en direct la perception des personnes sous forme de boutons pour des couleurs données permet de lâcher prise et de se concentrer sur la lisibilité. Savoir que seules 68% des personnes ont la capacité à voir ce que je vois (peut-être) donne un autre sens à&nbsp;l’accessibilité.</p>
  329. <a href="#hr-75" title="Lien vers cette section de la page"><hr id="hr-75" /></a>
  330. <p>Découverte d’un nouveau <a data-link-domain="montreal.ca" href="https://montreal.ca/lieux/parc-nature-du-cap-saint-jacques">terrain de jeu en hiver</a>.</p>
  331. <p>Le nombre d’hivers où il sera encore possible de skier à Montréal sont comptés. Il fait probablement partie de la dernière génération à pouvoir le faire. Aujourd’hui, une dizaine de kilomètres à skis-de-fond-de-location-qui-ne-glissent-pas&nbsp;(sic).</p>
  332. <a href="#hr-76" title="Lien vers cette section de la page"><hr id="hr-76" /></a>
  333. <blockquote lang="en">
  334. <p>Most “news” is designed to trick us into giving our fucks to things that don’t deserve them or where they have no&nbsp;value.</p>
  335. <p><cite><em><a data-link-domain="patrickrhone.net" href="https://www.patrickrhone.net/the-fucks-and-how-we-give-them-a-manifesto/" hreflang="en"
  336. title="Consultation de l’article (anglais)">The Fucks and How We Give Them (A Manifesto)</a>
  337. <a href="/david/cache/2024/d890da6c22300e52daec05e9c5888784/" hreflang="en"
  338. data-tippy data-description="The older I get, the fewer fucks I’m willing to give."
  339. data-source="https://www.patrickrhone.net/the-fucks-and-how-we-give-them-a-manifesto/"
  340. data-date="2024-02-18"
  341. data-favicon="https://www.patrickrhone.net/favicon.ico"
  342. data-domain="patrickrhone.net"
  343. ><svg xmlns="http://www.w3.org/2000/svg"
  344. width="24" height="24" viewBox="0 0 24 24" fill="none"
  345. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  346. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  347. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  348. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  349. </svg>
  350. <span class="sr-only">[archive]</span></a></em></cite></p>
  351. </blockquote>
  352. <nav>
  353. <p>
  354. <a href="/david/2024/ecriture/"
  355. title="Liste de tous les articles 2024 associés à cette étiquette"
  356. rel="tag">#écriture</a>
  357. <a href="/david/2024/lecture/"
  358. title="Liste de tous les articles 2024 associés à cette étiquette"
  359. rel="tag">#lecture</a>
  360. <a href="/david/2024/solastalgia/"
  361. title="Liste de tous les articles 2024 associés à cette étiquette"
  362. rel="tag">#solastalgia</a>
  363. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  364. </p>
  365. </nav>
  366. <h2>
  367. <a href="/david/2024/01/08/" title="Lien permanent vers cet article">Liens</a> <time datetime="2024-01-08">8 janvier 2024</time>
  368. </h2>
  369. <p>Je décide de tester d’ajouter le domaine du lien après la lien, j’ai souvent besoin de cette information avant de cliquer sur un lien. Pour cela je charge le domaine en Python grâce à la flexibilité de <a data-link-domain="mistune.lepture.com" href="https://mistune.lepture.com/en/latest/">mistune</a> et je m’en sers ensuite en CSS pour l’afficher&nbsp;dynamiquement&nbsp;:</p>
  370. <pre><code>a[data-link-domain]::after {
  371. content: &quot; [&quot; attr(data-link-domain) &quot;]&quot;;
  372. font-size: smaller;
  373. color: var(--link-color-domain);
  374. }
  375. </code></pre>
  376. <p>Je fais aussi des tests de soulignement avec un gradient qui irait de la couleur du lien principal à celle du&nbsp;domaine&nbsp;:</p>
  377. <pre><code>a {
  378. text-decoration-skip-ink: auto;
  379. text-decoration-thickness: calc(var(--fluid-0) / 10);
  380. position: relative;
  381. }
  382. a::before {
  383. content: '';
  384. width: 100%;
  385. position: absolute;
  386. left: 0;
  387. bottom: -1px;
  388. height: calc(var(--fluid-0) / 10);
  389. background: linear-gradient(
  390. to right,
  391. var(--link-color),
  392. var(--link-color-domain)
  393. );
  394. }
  395. </code></pre>
  396. <p>Mais au final je jette car je perds la partie <code>skip-ink</code> que je trouve chouette comme évolution de rendu possible. Toujours cet équilibre complexité / expérience /&nbsp;accessibilité.</p>
  397. <p>Plus tard, je commence l’implémentation de l’archivage des liens distants. J’ai pas mal d’idées mais je sais qu’il ne faut pas que je prenne trop de retard dans la récupération sinon je ne vais pas avoir l’énergie pour reprendre l’historique. Ce sera probablement l’occasion de faire un autre <em>Web Component</em> dédié. En suivant les recommandations <a data-link-domain="fedi.larlet.fr" href="https://fedi.larlet.fr/@david/111703611010197838">sur masto</a>, je les nomme <code>archive</code> pour le moment et je conserve la date de récupération de l’article car c’est une information importante. J’adapterai le style plus&nbsp;tard.</p>
  398. <p>Il faut que j’améliore cette automatisation car c’est assez fastidieux pour le moment, beaucoup de retouches manuelles pour obtenir un article lisible selon les sources. Je vais aussi réduire le nombre de liens que j’archive, les sources techniques ont probablement moins d’intérêt dans la&nbsp;durée.</p>
  399. <p>Chaque lien distant prend une longueur non négligeable suite à ces deux&nbsp;ajouts&nbsp;🤔.</p>
  400. <a href="#hr-17" title="Lien vers cette section de la page"><hr id="hr-17" /></a>
  401. <blockquote>
  402. <p>Ce billet illustre la loi qui dit “Moins un blog est mis à jour, plus il y a de probabilité que ce qui y est publié a pour sujet les aspects techniques dudit&nbsp;blog”.</p>
  403. <p><cite><em><a data-link-domain="blog.professeurjoachim.com" href="https://blog.professeurjoachim.com/billet/2024-01-05-ma-page-now-ou-plutot-en-ce-moment" hreflang="fr"
  404. title="Consultation de l’article">Ma page /now (ou plutôt /en-ce-moment)</a>
  405. <a href="/david/cache/2024/076169df8a4bd9dde9a4637c6b306dff/" hreflang="fr"
  406. data-tippy data-description="La page /now a été proposée par Derek Sivers pour spécifier de manière très flexible un format de page web sur laquelle on peut en apprendre plus sur …"
  407. data-source="https://blog.professeurjoachim.com/billet/2024-01-05-ma-page-now-ou-plutot-en-ce-moment"
  408. data-date="2024-01-07"
  409. data-favicon="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22 filter=%22hue-rotate(82deg)%22>🌿</text></svg>"
  410. data-domain="blog.professeurjoachim.com"
  411. ><svg xmlns="http://www.w3.org/2000/svg"
  412. width="24" height="24" viewBox="0 0 24 24" fill="none"
  413. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  414. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  415. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  416. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  417. </svg>
  418. <span class="sr-only">[archive]</span></a></em></cite></p>
  419. </blockquote>
  420. <p>J’ai ri. Je n’ai jamais fait une telle page car je sais que je n’arriverais pas à la maintenir à jour. Je galère déjà avec mon <a data-link-domain="larlet.com" href="https://larlet.com/">profil pro</a>.</p>
  421. <blockquote lang="en">
  422. <p>I also started noticing when people do this subconiously. For example, most software engineers I know hate blogging, but <mark>they like building their own blog engine to make blogging more pleasant</mark> (I’m very guilty of this&nbsp;too).</p>
  423. <p>Kent Beck nailed it: “for each desired change, make the change easy (warning: this may be hard), then make the easy&nbsp;change”.</p>
  424. <p><cite><em><a data-link-domain="frantic.im" href="https://frantic.im/opening-mail/" hreflang="en"
  425. title="Consultation de l’article (anglais)">Opening Mail</a>
  426. <a href="/david/cache/2024/7a223e552e8a8e3e11c759cbc5bc3ffa/" hreflang="en"
  427. data-tippy data-description="First make the change easy, then make the easy change."
  428. data-source="https://frantic.im/opening-mail/"
  429. data-date="2024-01-07"
  430. data-favicon="https://frantic.im/favicon.png"
  431. data-domain="frantic.im"
  432. ><svg xmlns="http://www.w3.org/2000/svg"
  433. width="24" height="24" viewBox="0 0 24 24" fill="none"
  434. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  435. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  436. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  437. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  438. </svg>
  439. <span class="sr-only">[archive]</span></a></em></cite></p>
  440. </blockquote>
  441. <p>Note&nbsp;: cette année, je ne ferai aucun lien vers 𝕏 (twitter.com) depuis mes&nbsp;articles.</p>
  442. <a href="#hr-18" title="Lien vers cette section de la page"><hr id="hr-18" /></a>
  443. <p>L’hiver commence maintenant le 7&nbsp;janvier à Montréal. Phénomène météorologique exceptionnel <em>et</em> tendance&nbsp;climatique.</p>
  444. <nav>
  445. <p>
  446. <a href="/david/2024/processus/"
  447. title="Liste de tous les articles 2024 associés à cette étiquette"
  448. rel="tag">#processus</a>
  449. <a href="/david/2024/solastalgia/"
  450. title="Liste de tous les articles 2024 associés à cette étiquette"
  451. rel="tag">#solastalgia</a>
  452. <a href="/david/2024/technique/"
  453. title="Liste de tous les articles 2024 associés à cette étiquette"
  454. rel="tag">#technique</a>
  455. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  456. </p>
  457. </nav>
  458. <form action="/david/recherche/" method="get">
  459. <fieldset>
  460. <legend>Recherche</legend>
  461. <label for="input-search">Termes de votre recherche :</label>
  462. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  463. <input type="submit" value="Chercher">
  464. <p id="indexation-infos">
  465. <small>
  466. Seuls les contenus de ces 8 dernières années sont indexés.
  467. </small>
  468. </p>
  469. </fieldset>
  470. </form>
  471. <aside>
  472. <theme-toggle></theme-toggle>
  473. </aside>
  474. </article>
  475. <hr>
  476. <footer>
  477. <p>
  478. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  479. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  480. <a href="http://larlet.com"
  481. title="Go to my English profile"
  482. data-instant>Pro</a>
  483. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  484. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  485. </p>
  486. <template id="theme-selector">
  487. <form>
  488. <style type="text/css">
  489. fieldset div {
  490. text-align: center;
  491. }
  492. </style>
  493. <fieldset>
  494. <legend>Thème</legend>
  495. <div>
  496. <label>
  497. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  498. Auto
  499. </label>
  500. <label>
  501. <input type="radio" value="dark" name="chosen-color-scheme">
  502. Foncé
  503. </label>
  504. <label>
  505. <input type="radio" value="light" name="chosen-color-scheme">
  506. Clair
  507. </label>
  508. </div>
  509. </fieldset>
  510. </form>
  511. </template>
  512. </footer>
  513. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  514. <script>
  515. class ThemeToggle extends HTMLElement {
  516. constructor() {
  517. super()
  518. const themeSelectorTemplate = document.querySelector('#theme-selector')
  519. const form = themeSelectorTemplate.content.firstElementChild
  520. this.attachShadow({ mode: 'open' })
  521. this.shadowRoot.appendChild(form.cloneNode(true))
  522. }
  523. connectedCallback() {
  524. const form = this.shadowRoot.querySelector('form')
  525. form.addEventListener('change', (e) => {
  526. const chosenColorScheme = e.target.value
  527. localStorage.setItem('theme', chosenColorScheme)
  528. toggleTheme(chosenColorScheme)
  529. })
  530. const selectedTheme = localStorage.getItem('theme')
  531. if (selectedTheme && selectedTheme !== 'undefined') {
  532. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  533. }
  534. }
  535. }
  536. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  537. window.addEventListener('load', () => {
  538. let colorsLayer = undefined
  539. let hasDarkRules = false
  540. for (const styleSheet of Array.from(document.styleSheets)) {
  541. let mediaRules = []
  542. for (const layerRule of styleSheet.cssRules) {
  543. if (!(layerRule instanceof CSSLayerBlockRule)) {
  544. continue
  545. }
  546. if (layerRule.name === 'colors') {
  547. colorsLayer = layerRule
  548. }
  549. for (const cssRule of layerRule.cssRules) {
  550. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  551. continue
  552. }
  553. // WARNING: Safari does not have/supports `conditionText`.
  554. if (cssRule.conditionText) {
  555. if (cssRule.conditionText !== prefersColorSchemeDark) {
  556. continue
  557. }
  558. } else {
  559. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  560. continue
  561. }
  562. }
  563. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  564. }
  565. }
  566. // WARNING: do not try to insert a Rule to a styleSheet you are
  567. // currently iterating on, otherwise the browser will be stuck
  568. // in a infinite loop…
  569. for (const mediaRule of mediaRules) {
  570. // Safari requires the `0` second parameter (even if default).
  571. colorsLayer.insertRule(mediaRule.cssText, 0)
  572. hasDarkRules = true
  573. }
  574. }
  575. if (hasDarkRules) {
  576. if ('customElements' in window && !customElements.get('theme-toggle')) {
  577. customElements.define('theme-toggle', ThemeToggle)
  578. }
  579. }
  580. })
  581. </script>
  582. </body>
  583. </html>