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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  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. Endorphines
  14. — David Larlet</title>
  15. <meta name="description" content="J’ai remis les pieds sur des skis (de fond). J’ai une piste à 150 mètres de chez moi et c’était probablement les plus critiques. Je me suis déjà tordu la cheville plusieurs fois sur ce trajet. Mais une fois dans les traces les sensations étaient bonnes et l’entorse (tapeée) n’a pas couiné. Le mollet un peu plus mais je me demande si ce n’est pas à force de compenser en boitant.">
  16. <!-- That good ol' feed, subscribe :). -->
  17. <link rel="alternate"
  18. type="application/atom+xml"
  19. title="Feed"
  20. href="/david/log/">
  21. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  22. <link rel="apple-touch-icon"
  23. sizes="180x180"
  24. href="/static/david/icons2/apple-touch-icon.png">
  25. <link rel="icon"
  26. type="image/png"
  27. sizes="32x32"
  28. href="/static/david/icons2/favicon-32x32.png">
  29. <link rel="icon"
  30. type="image/png"
  31. sizes="16x16"
  32. href="/static/david/icons2/favicon-16x16.png">
  33. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  34. <link rel="mask-icon"
  35. href="/static/david/icons2/safari-pinned-tab.svg"
  36. color="#07486c">
  37. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  38. <meta name="msapplication-TileColor" content="#f7f7f7">
  39. <meta name="msapplication-config"
  40. content="/static/david/icons2/browserconfig.xml">
  41. <meta name="theme-color"
  42. content="#f7f7f7"
  43. media="(prefers-color-scheme: light)">
  44. <meta name="theme-color"
  45. content="#272727"
  46. media="(prefers-color-scheme: dark)">
  47. <!-- Is that even respected? Retrospectively? What a shAItshow…
  48. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  49. <meta name="robots" content="noai, noimageai">
  50. <!-- Documented, feel free to shoot an email. -->
  51. <link rel="stylesheet" href="/static/david/css/style_2024-01-15.css">
  52. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  53. <link rel="preload"
  54. href="/static/david/css/fonts/century_supra_ot_a_regular.woff2"
  55. as="font"
  56. type="font/woff2"
  57. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  58. crossorigin>
  59. <link rel="preload"
  60. href="/static/david/css/fonts/century_supra_ot_a_bold.woff2"
  61. as="font"
  62. type="font/woff2"
  63. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  64. crossorigin>
  65. <link rel="preload"
  66. href="/static/david/css/fonts/century_supra_ot_a_italic.woff2"
  67. as="font"
  68. type="font/woff2"
  69. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  70. crossorigin>
  71. <link rel="preload"
  72. href="/static/david/css/fonts/century_supra_ot_b_regular.woff2"
  73. as="font"
  74. type="font/woff2"
  75. media="(prefers-color-scheme: dark)"
  76. crossorigin>
  77. <link rel="preload"
  78. href="/static/david/css/fonts/century_supra_ot_b_bold.woff2"
  79. as="font"
  80. type="font/woff2"
  81. media="(prefers-color-scheme: dark)"
  82. crossorigin>
  83. <link rel="preload"
  84. href="/static/david/css/fonts/century_supra_ot_b_italic.woff2"
  85. as="font"
  86. type="font/woff2"
  87. media="(prefers-color-scheme: dark)"
  88. crossorigin>
  89. <script>
  90. function toggleTheme(themeName) {
  91. document.documentElement.classList.toggle(
  92. 'forced-dark',
  93. themeName === 'dark'
  94. )
  95. document.documentElement.classList.toggle(
  96. 'forced-light',
  97. themeName === 'light'
  98. )
  99. }
  100. const selectedTheme = localStorage.getItem('theme')
  101. if (selectedTheme !== 'undefined') {
  102. toggleTheme(selectedTheme)
  103. }
  104. </script>
  105. <body data-instant-intensity="viewport-all">
  106. <article>
  107. <header>
  108. <hgroup>
  109. <h1>Endorphines</h1>
  110. <p>Le <time datetime="2024-01-16">16 janvier 2024</time></p>
  111. </hgroup>
  112. </header>
  113. <nav>
  114. <p>
  115. <a rel="prev"
  116. href="/david/2024/01/15/"
  117. title="Publication précédente : Rééducation">← Précédent</a> •
  118. <a href="/david/" title="Aller à l’accueil" rel="up">Accueil</a>
  119. <a href="/david/recherche/"
  120. title="Aller à la page de recherche"
  121. rel="search">Recherche</a>
  122. • <a rel="next"
  123. href="/david/2024/01/17/"
  124. title="Publication suivante : Vieillesse">Suivant →</a>
  125. </p>
  126. </nav>
  127. <p>J’ai remis les pieds sur des skis (de fond). J’ai une piste à 150&nbsp;mètres de chez moi et c’était probablement les plus critiques. Je me suis déjà tordu la cheville plusieurs fois sur ce trajet. Mais une fois dans les traces les sensations étaient bonnes et l’entorse (<em>tape</em>ée) n’a pas couiné. Le mollet un peu plus mais je me demande si ce n’est pas à force de compenser en&nbsp;boitant.</p>
  128. <p>Cela conclus peut-être mon journal de&nbsp;chialage.</p>
  129. <hr />
  130. <p>Hier soir, je travaillais sur la <a href="/david/">page d’accueil</a> en voulant donner davantage d’espace à la recherche qui passe également en pied de page (qui est un&nbsp;chantier).</p>
  131. <p>Et puis ce matin <a data-link-domain="nicolas-hoizey.com" href="https://nicolas-hoizey.com/">Nicolas H.</a> m’indique que mon flux est cassé. Je répare cette histoire de caractère invisible qui casse le <em>parsing</em> du contenu HTML (intégrer une <a data-link-domain="validator.w3.org" href="https://validator.w3.org/feed/">validation</a> pourrait s’avérer être utile). Et je pousse les modifications qui contiennent la page d’accueil en chantier. Tant pis, au moins c’est&nbsp;fait.</p>
  132. <p>Il y a dorénavant 54&nbsp;liens sur cette page, j’ai besoin de revoir des choses mais au moins il commence à y avoir une cohérence sur le thème de l’année et ses pages générées. Le chemin continue de me donner le&nbsp;sourire.</p>
  133. <p>Je constate au passage que la <a href="/david/recherche/">page de recherche</a> fait 2&#8239;Mo (700&#8239;Ko à télécharger), désindexer des années ou explorer des <a data-link-domain="pagefind.app" href="https://pagefind.app/">alternatives</a>&#8239;? J’aime bien me dire que mes écrits de ces 8&nbsp;dernières années tiennent sur&nbsp;2&nbsp;disquettes.</p>
  134. <hr />
  135. <p>Vidéo du jour&nbsp;: <a data-link-domain="video.blast-info.fr" href="https://video.blast-info.fr/w/9885ed4e-386b-4b3b-bcb5-dc2e454939e6">DRY JANUARY, ÉCOLOGIE&nbsp;: POURQUOI LE POUVOIR A-T-IL SI PEUR DE LA SOBRIÉTÉ&#8239;?</a> (désolé pour les cris, ça semble être le style de&nbsp;BLAST&nbsp;🙃).</p>
  136. <hr />
  137. <p>On creuse les <a data-link-domain="developer.mozilla.org" href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/importmap"><code>importmap</code></a> pour <a data-link-domain="umap-project.org" href="https://umap-project.org/fr/">uMap</a> en ce moment. Un peu contraints par un passage aux modules JS qui supporte mal la minification + invalidation du cache. Il y a des choses intéressantes dans les possibilités que ça offre mais c’est du&nbsp;Baseline™2023.</p>
  138. <p>Si un produit accueille moins de personnes lors de mon départ que lors de mon arrivée, j’ai probablement mal fait mon travail&#8239;? <em>À&nbsp;méditer.</em></p>
  139. <blockquote lang="en">
  140. <p>If the new software no longer runs on old hardware, it is <mark>worse</mark> than the old&nbsp;software.</p>
  141. <p><cite><em><a data-link-domain="blog.jim-nielsen.com" href="https://blog.jim-nielsen.com/2024/notes-from-computing-sustainably/">Notes from “An approach to computing and sustainability inspired from permaculture” by Devine LuLinvega</a> <a href="/david/cache/2024/1f40a33f9c57a16d420eb0868a129e96/" title="Copie locale au 2024-01-15">[archive]</a></em></cite></p>
  142. </blockquote>
  143. <nav>
  144. <p>
  145. <a href="/david/2024/addiction/"
  146. title="Liste de tous les articles 2024 associés à cette étiquette"
  147. rel="tag">#addiction</a>
  148. <a href="/david/2024/evolution/"
  149. title="Liste de tous les articles 2024 associés à cette étiquette"
  150. rel="tag">#évolution</a>
  151. <a href="/david/2024/technique/"
  152. title="Liste de tous les articles 2024 associés à cette étiquette"
  153. rel="tag">#technique</a>
  154. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  155. </p>
  156. </nav>
  157. <nav>
  158. <p>
  159. <a rel="prev"
  160. href="/david/2024/01/15/"
  161. title="Publication précédente : Rééducation">← Précédent</a> •
  162. <a href="/david/2024/" title="Liste des publications récentes">↑ En 2024</a>
  163. • <a rel="next"
  164. href="/david/2024/01/17/"
  165. title="Publication suivante : Vieillesse">Suivant →</a>
  166. </p>
  167. </nav>
  168. <form action="/david/recherche/" method="get">
  169. <fieldset>
  170. <legend>Recherche</legend>
  171. <label for="input-search">Termes de votre recherche :</label>
  172. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  173. <input type="submit" value="Chercher">
  174. <p id="indexation-infos">
  175. <small>
  176. Seuls les contenus de ces 8 dernières années sont indexés.
  177. </small>
  178. </p>
  179. </fieldset>
  180. </form>
  181. <aside>
  182. <theme-toggle></theme-toggle>
  183. </aside>
  184. </article>
  185. <hr>
  186. <footer>
  187. <p>
  188. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  189. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  190. <a href="http://larlet.com"
  191. title="Go to my English profile"
  192. data-instant>Pro</a>
  193. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  194. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  195. </p>
  196. <template id="theme-selector">
  197. <form>
  198. <style type="text/css">
  199. fieldset div {
  200. text-align: center;
  201. }
  202. </style>
  203. <fieldset>
  204. <legend>Thème</legend>
  205. <div>
  206. <label>
  207. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  208. Auto
  209. </label>
  210. <label>
  211. <input type="radio" value="dark" name="chosen-color-scheme">
  212. Foncé
  213. </label>
  214. <label>
  215. <input type="radio" value="light" name="chosen-color-scheme">
  216. Clair
  217. </label>
  218. </div>
  219. </fieldset>
  220. </form>
  221. </template>
  222. </footer>
  223. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  224. <script>
  225. class ThemeToggle extends HTMLElement {
  226. constructor() {
  227. super()
  228. const themeSelectorTemplate = document.querySelector('#theme-selector')
  229. const form = themeSelectorTemplate.content.firstElementChild
  230. this.attachShadow({ mode: 'open' })
  231. this.shadowRoot.appendChild(form.cloneNode(true))
  232. }
  233. connectedCallback() {
  234. const form = this.shadowRoot.querySelector('form')
  235. form.addEventListener('change', (e) => {
  236. const chosenColorScheme = e.target.value
  237. localStorage.setItem('theme', chosenColorScheme)
  238. toggleTheme(chosenColorScheme)
  239. })
  240. const selectedTheme = localStorage.getItem('theme')
  241. if (selectedTheme && selectedTheme !== 'undefined') {
  242. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  243. }
  244. }
  245. }
  246. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  247. window.addEventListener('load', () => {
  248. let colorsLayer = undefined
  249. let hasDarkRules = false
  250. for (const styleSheet of Array.from(document.styleSheets)) {
  251. let mediaRules = []
  252. for (const layerRule of styleSheet.cssRules) {
  253. if (!(layerRule instanceof CSSLayerBlockRule)) {
  254. continue
  255. }
  256. if (layerRule.name === 'colors') {
  257. colorsLayer = layerRule
  258. }
  259. for (const cssRule of layerRule.cssRules) {
  260. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  261. continue
  262. }
  263. // WARNING: Safari does not have/supports `conditionText`.
  264. if (cssRule.conditionText) {
  265. if (cssRule.conditionText !== prefersColorSchemeDark) {
  266. continue
  267. }
  268. } else {
  269. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  270. continue
  271. }
  272. }
  273. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  274. }
  275. }
  276. // WARNING: do not try to insert a Rule to a styleSheet you are
  277. // currently iterating on, otherwise the browser will be stuck
  278. // in a infinite loop…
  279. for (const mediaRule of mediaRules) {
  280. // Safari requires the `0` second parameter (even if default).
  281. colorsLayer.insertRule(mediaRule.cssText, 0)
  282. hasDarkRules = true
  283. }
  284. }
  285. if (hasDarkRules) {
  286. if ('customElements' in window && !customElements.get('theme-toggle')) {
  287. customElements.define('theme-toggle', ThemeToggle)
  288. }
  289. }
  290. })
  291. </script>
  292. </body>
  293. </html>