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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  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. Extinction
  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="So where have all the websites gone? Well, the people who make them have all gone to war for the capitalist machine. They grew up and got jobs. A natural part of growing up. Silos came and plucked their voices. Invasive memes and short form content grew in their place. Hustle overtook leisure. Harassment overtook openness. Influence overtook creativity. An economy of interestingness replaced by one of followers, likes, and engagement metrics.">
  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>Extinction</h1>
  136. <p>Le <time datetime="2024-01-20">20 janvier 2024</time></p>
  137. </hgroup>
  138. </header>
  139. <nav>
  140. <p>
  141. <a rel="prev"
  142. href="/david/2024/01/19/"
  143. title="Publication précédente : Marcher">← 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/21/"
  150. title="Publication suivante : Bois">Suivant →</a>
  151. </p>
  152. </nav>
  153. <blockquote lang="en">
  154. <p>So where have all the websites gone? Well, the people who make them have all gone to war for the capitalist machine. They grew up and got jobs. A natural part of growing up. Silos came and plucked their voices. Invasive memes and short form content grew in their place. Hustle overtook leisure. Harassment overtook openness. Influence overtook creativity. An economy of interestingness replaced by one of followers, likes, and engagement&nbsp;metrics.</p>
  155. <p>One important thing to note; <mark>websites aren’t extinct.</mark> In fact, you’re on one now! Uploading your own words is ancient technology but still&nbsp;works.</p>
  156. <p><cite><em><a data-link-domain="daverupert.com" href="https://daverupert.com/2024/01/where-have-all-the-websites-gone/" hreflang="en"
  157. title="Consultation de l’article (anglais)">Where have all the flowers gone?</a>
  158. <a href="/david/cache/2024/7136e0810bfa42c4a9ca798a55cd2d53/" hreflang="en"
  159. data-tippy data-description="A post from Jason Velazquez called “Where have all the websites gone?” crossed my socials. It’s a good lament about the dearth of interesting content on the internet and how we’re stuck in the same boring content silos."
  160. data-source="https://daverupert.com/2024/01/where-have-all-the-websites-gone/"
  161. data-date="2024-01-19"
  162. data-favicon="https://daverupert.com/favicon.ico"
  163. data-domain="daverupert.com"
  164. ><svg xmlns="http://www.w3.org/2000/svg"
  165. width="24" height="24" viewBox="0 0 24 24" fill="none"
  166. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  167. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  168. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  169. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  170. </svg>
  171. <span class="sr-only">[archive]</span></a></em></cite></p>
  172. </blockquote>
  173. <p>En réponse à <q lang="en"><a data-link-domain="fromjason.xyz" href="https://www.fromjason.xyz/p/notebook/where-have-all-the-websites-gone/" hreflang="en"
  174. title="Consultation de l’article (anglais)">Where have all the websites gone?</a>
  175. <a href="/david/cache/2024/c3272392d462da90874d32841e5caac8/" hreflang="en"
  176. data-tippy data-description="It feels like all the cool websites from the late 2000s are gone. But maybe we are looking at this the wrong way. Maybe it is us who vanished."
  177. data-source="https://www.fromjason.xyz/p/notebook/where-have-all-the-websites-gone/"
  178. data-date="2024-01-09"
  179. data-favicon="https://www.fromjason.xyz/img/favicon.png"
  180. data-domain="fromjason.xyz"
  181. ><svg xmlns="http://www.w3.org/2000/svg"
  182. width="24" height="24" viewBox="0 0 24 24" fill="none"
  183. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  184. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  185. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  186. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  187. </svg>
  188. <span class="sr-only">[archive]</span></a></q> que j’ai <a href="/david/2024/01/10/#hr-24">déjà cité</a>. Peut-être que la capacité à publier est toujours là mais que nous avons <a href="/david/2024/01/12/#hr-27">trop changé</a> pour être capables de perdurer dans cette pratique. 2024&nbsp;pourrait me faire mentir car je vois une certaine effervescence dans mon agrégateur. On va bien voir si ça dure. On va bien voir si <em>je</em>&nbsp;dure.</p>
  189. <p><em>Guidé par le besoin, je suis en train d’automatiser des ancres sur mes <code>&lt;hr&gt;</code>, fausse bonne idée&#8239;? En affinant un peu le style ça me convient pour&nbsp;l’instant.</em></p>
  190. <a href="#hr-40" title="Lien vers cette section de la page"><hr id="hr-40" /></a>
  191. <blockquote>
  192. <p>public-inbox implements the sharing of an email inbox via git to complement or replace traditional mailing lists. Readers may read via NNTP, IMAP, POP3, Atom feeds or HTML&nbsp;archives.</p>
  193. <p>public-inbox spawned around three main&nbsp;ideas:</p>
  194. <ul>
  195. <li>Publicly accessible and archived communication is essential to Free Software&nbsp;development.</li>
  196. <li>Contributing to Free Software projects should not require the use of non-Free services or&nbsp;software.</li>
  197. <li><mark>Graphical user interfaces should not be required for text-based communication.</mark> Users may have broken graphics drivers, limited eyesight, or be unable to afford modern&nbsp;hardware.</li>
  198. </ul>
  199. <p>public-inbox aims to be easy-to-deploy and manage; encouraging projects to run their own instances with minimal&nbsp;overhead.</p>
  200. <p><cite><em><a data-link-domain="public-inbox.org" href="https://public-inbox.org/README.html" hreflang="en"
  201. title="Consultation de l’article (anglais)">public-inbox - an &quot;archives first&quot; approach to mailing lists</a>
  202. <a href="/david/cache/2024/30b40ff8034212e070dc7daf2b9406e9/" hreflang="en"
  203. data-tippy data-description="public-inbox implements the sharing of an email inbox via git to complement or replace traditional mailing lists. Readers may read via NNTP, IMAP, POP3, Atom feeds or HTML archives."
  204. data-source="https://public-inbox.org/README.html"
  205. data-date="2024-01-19"
  206. data-favicon="https://public-inbox.org/favicon.ico"
  207. data-domain="public-inbox.org"
  208. ><svg xmlns="http://www.w3.org/2000/svg"
  209. width="24" height="24" viewBox="0 0 24 24" fill="none"
  210. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  211. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  212. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  213. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  214. </svg>
  215. <span class="sr-only">[archive]</span></a></em></cite></p>
  216. </blockquote>
  217. <p>D’une certaine manière, l’<a data-link-domain="github.com" href="https://github.com/jgm/pandoc/issues/9250">extinction de voix des un·es</a> fait mon bonheur de découverte aujourd’hui. J’espère que le réflexe ne sera pas de passer de <em>Google Groups</em> à <em>Microsoft Github Discussions</em> par&nbsp;commodité.</p>
  218. <a href="#hr-41" title="Lien vers cette section de la page"><hr id="hr-41" /></a>
  219. <blockquote>
  220. <p>… ça veut dire qu’en vrai, les droits humains, tu t’en fiches pas&nbsp;mal.</p>
  221. <p>Et que tu es juste <mark>un peu raciste</mark>.</p>
  222. <p><cite><em><a data-link-domain="emmaclit.com" href="https://emmaclit.com/2024/01/19/culture-froncaise/">Culture&nbsp;fronçaise</a></em></cite></p>
  223. </blockquote>
  224. <p>Voilà.</p>
  225. <a href="#hr-42" title="Lien vers cette section de la page"><hr id="hr-42" /></a>
  226. <figure>
  227. <a href="/static/david/2024/2024-01-19-ski-de-fond-nocturne.jpg"
  228. title="Cliquer pour une version haute résolution">
  229. <img
  230. src="/static/david/2024/2024-01-19-ski-de-fond-nocturne.jpg"
  231. width="3024" height="3024"
  232. srcset="/static/david/2024/2024-01-19-ski-de-fond-nocturne.jpg 3024w, /static/david/2024/2024-01-19-ski-de-fond-nocturne_660x440.jpg 660w, /static/david/2024/2024-01-19-ski-de-fond-nocturne_990x660.jpg 990w, /static/david/2024/2024-01-19-ski-de-fond-nocturne_1320x880.jpg 1320w"
  233. sizes="min(100vw, calc(100vh * 3024 / 3024))"
  234. loading="lazy"
  235. decoding="async"
  236. alt="Un enfant de dos dans des traces de ski de fond classique à la tombée du jour">
  237. </a>
  238. <figcaption>-16°C, rien de mieux pour démarrer une fin de semaine qu’une sortie ski dans notre jardin après&nbsp;l’école.</figcaption>
  239. </figure>
  240. <p>Cette photo est floue, c’est devenu tellement rare avec un téléphone (<em>OK&nbsp;Boomer</em>&nbsp;:p). Les couleurs étaient superbes et une fois les mains réchauffées c’était une ambiance très agréable. On n’a pas croisé grand monde. La rééducation active continue tranquillement son&nbsp;chemin.</p>
  241. <nav>
  242. <p>
  243. <a href="/david/2024/dependance/"
  244. title="Liste de tous les articles 2024 associés à cette étiquette"
  245. rel="tag">#dépendance</a>
  246. <a href="/david/2024/evolution/"
  247. title="Liste de tous les articles 2024 associés à cette étiquette"
  248. rel="tag">#évolution</a>
  249. <a href="/david/2024/parentalite/"
  250. title="Liste de tous les articles 2024 associés à cette étiquette"
  251. rel="tag">#parentalité</a>
  252. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  253. </p>
  254. </nav>
  255. <nav>
  256. <p>
  257. <a rel="prev"
  258. href="/david/2024/01/19/"
  259. title="Publication précédente : Marcher">← Précédent</a> •
  260. <a href="/david/2024/" title="Liste des publications récentes">↑ En 2024</a>
  261. • <a rel="next"
  262. href="/david/2024/01/21/"
  263. title="Publication suivante : Bois">Suivant →</a>
  264. </p>
  265. </nav>
  266. <form action="/david/recherche/" method="get">
  267. <fieldset>
  268. <legend>Recherche</legend>
  269. <label for="input-search">Termes de votre recherche :</label>
  270. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  271. <input type="submit" value="Chercher">
  272. <p id="indexation-infos">
  273. <small>
  274. Seuls les contenus de ces 8 dernières années sont indexés.
  275. </small>
  276. </p>
  277. </fieldset>
  278. </form>
  279. <aside>
  280. <theme-toggle></theme-toggle>
  281. </aside>
  282. </article>
  283. <hr>
  284. <footer>
  285. <p>
  286. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  287. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  288. <a href="http://larlet.com"
  289. title="Go to my English profile"
  290. data-instant>Pro</a>
  291. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  292. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  293. </p>
  294. <template id="theme-selector">
  295. <form>
  296. <style type="text/css">
  297. fieldset div {
  298. text-align: center;
  299. }
  300. </style>
  301. <fieldset>
  302. <legend>Thème</legend>
  303. <div>
  304. <label>
  305. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  306. Auto
  307. </label>
  308. <label>
  309. <input type="radio" value="dark" name="chosen-color-scheme">
  310. Foncé
  311. </label>
  312. <label>
  313. <input type="radio" value="light" name="chosen-color-scheme">
  314. Clair
  315. </label>
  316. </div>
  317. </fieldset>
  318. </form>
  319. </template>
  320. </footer>
  321. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  322. <script>
  323. class ThemeToggle extends HTMLElement {
  324. constructor() {
  325. super()
  326. const themeSelectorTemplate = document.querySelector('#theme-selector')
  327. const form = themeSelectorTemplate.content.firstElementChild
  328. this.attachShadow({ mode: 'open' })
  329. this.shadowRoot.appendChild(form.cloneNode(true))
  330. }
  331. connectedCallback() {
  332. const form = this.shadowRoot.querySelector('form')
  333. form.addEventListener('change', (e) => {
  334. const chosenColorScheme = e.target.value
  335. localStorage.setItem('theme', chosenColorScheme)
  336. toggleTheme(chosenColorScheme)
  337. })
  338. const selectedTheme = localStorage.getItem('theme')
  339. if (selectedTheme && selectedTheme !== 'undefined') {
  340. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  341. }
  342. }
  343. }
  344. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  345. window.addEventListener('load', () => {
  346. let colorsLayer = undefined
  347. let hasDarkRules = false
  348. for (const styleSheet of Array.from(document.styleSheets)) {
  349. let mediaRules = []
  350. for (const layerRule of styleSheet.cssRules) {
  351. if (!(layerRule instanceof CSSLayerBlockRule)) {
  352. continue
  353. }
  354. if (layerRule.name === 'colors') {
  355. colorsLayer = layerRule
  356. }
  357. for (const cssRule of layerRule.cssRules) {
  358. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  359. continue
  360. }
  361. // WARNING: Safari does not have/supports `conditionText`.
  362. if (cssRule.conditionText) {
  363. if (cssRule.conditionText !== prefersColorSchemeDark) {
  364. continue
  365. }
  366. } else {
  367. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  368. continue
  369. }
  370. }
  371. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  372. }
  373. }
  374. // WARNING: do not try to insert a Rule to a styleSheet you are
  375. // currently iterating on, otherwise the browser will be stuck
  376. // in a infinite loop…
  377. for (const mediaRule of mediaRules) {
  378. // Safari requires the `0` second parameter (even if default).
  379. colorsLayer.insertRule(mediaRule.cssText, 0)
  380. hasDarkRules = true
  381. }
  382. }
  383. if (hasDarkRules) {
  384. if ('customElements' in window && !customElements.get('theme-toggle')) {
  385. customElements.define('theme-toggle', ThemeToggle)
  386. }
  387. }
  388. })
  389. </script>
  390. <script src="/static/david/js/popper-2.11.8.min.js"></script>
  391. <script src="/static/david/js/tippy-bundle-6.3.7.umd.min.js"></script>
  392. <script>
  393. tippy('[data-tippy]', {
  394. content(reference) {
  395. reference.addEventListener('click', (e) => e.preventDefault())
  396. return `
  397. <h3 lang="fr">
  398. <img src="${reference.dataset.favicon}" loading="lazy">
  399. <a href="${reference.dataset.source}"
  400. >Article sur ${reference.dataset.domain}</a></h3>
  401. <p lang="${reference.hreflang}"><em>${reference.dataset.description}</em></p>
  402. <div class="tippy-links" lang="fr">
  403. <a href="${reference.href}">Archive au ${reference.dataset.date}</a>
  404. </div>
  405. `
  406. },
  407. allowHTML: true,
  408. interactive: true,
  409. delay: [150, 700],
  410. hideOnClick: false
  411. })
  412. </script>
  413. <script type="module">
  414. import { annotate } from '/static/david/js/rough-notation-0.5.1.esm.min.js'
  415. const computedStyle = getComputedStyle(document.documentElement)
  416. const markBackground = computedStyle.getPropertyValue('--mark-background')
  417. const observer = new IntersectionObserver(elements => {
  418. for (const element of elements) {
  419. if (element.intersectionRatio < 1) return
  420. const markElement = element.target
  421. if (markElement.dataset.annotated) return
  422. const annotation = annotate(
  423. markElement, {
  424. type: 'highlight',
  425. multiline: true,
  426. color: markBackground,
  427. animate: !window.matchMedia('(prefers-reduced-motion: reduce)').matches
  428. }
  429. )
  430. annotation.show()
  431. // Avoid the rough notation to be applied multiple times.
  432. markElement.dataset.annotated = true
  433. }
  434. }, {threshold: 1.0})
  435. for (const markElement of document.querySelectorAll('mark')) {
  436. markElement.style.backgroundColor = 'inherit'
  437. observer.observe(markElement)
  438. }
  439. </script>
  440. </body>
  441. </html>