123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- <!doctype html><!-- This is a valid HTML5 document. -->
- <!-- Screen readers, SEO, extensions and so on. -->
- <html lang="fr">
- <!-- Has to be within the first 1024 bytes, hence before the `title` element
- See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
- <meta charset="utf-8">
- <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
- <!-- The viewport meta is quite crowded and we are responsible for that.
- See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
- <meta name="viewport" content="width=device-width,initial-scale=1">
- <!-- Required to make a valid HTML5 document. -->
- <title>Pré-requis — David Larlet</title>
- <meta name="description" content="You can choose to make it really complicated. Convince yourself that “the modern web” is inherently complex and convoluted. But then look at what makes it complex and convoluted: toolchains, build tools, pipelines, frameworks, libraries, and abstractions. Please try to remember that none of those things are required to make a website.">
- <!-- That good ol' feed, subscribe :). -->
- <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
- <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
- <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
- <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
- <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
- <link rel="manifest" href="/static/david/icons2/site.webmanifest">
- <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
- <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
- <meta name="msapplication-TileColor" content="#f7f7f7">
- <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
- <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
- <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
- <!-- Documented, feel free to shoot an email. -->
- <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
- <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
- <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>
- <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>
- <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>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <script>
- function toggleTheme(themeName) {
- document.documentElement.classList.toggle(
- 'forced-dark',
- themeName === 'dark'
- )
- document.documentElement.classList.toggle(
- 'forced-light',
- themeName === 'light'
- )
- }
- const selectedTheme = localStorage.getItem('theme')
- if (selectedTheme !== 'undefined') {
- toggleTheme(selectedTheme)
- }
- </script>
-
- <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
-
-
- <article>
- <header>
- <h1>Pré-requis</h1>
- </header>
- <nav>
- <p class="center">
- <a rel="prev" href="/david/2021/08/10/" title="Publication précédente : HTTPSadness">← Précédent</a> •
- <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
- <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
- </svg> Accueil</a>
- • <a rel="next" href="/david/2021/08/12/" title="Publication suivante : Musique">Suivant →</a>
- </p>
- </nav>
- <hr>
-
-
- <blockquote>
- <p>You can <em>choose</em> to make it really complicated. Convince yourself that “the modern web” is inherently complex and convoluted. But then look at what makes it complex and convoluted: toolchains, build tools, pipelines, frameworks, libraries, and abstractions. Please try to remember that none of those things are required to make a website.</p>
- <p>This is for everyone. Not just for everyone to consume, <mark>but for everyone to make.</mark></p>
- <p><cite><em><a href="https://adactio.com/journal/18337">Foundations</a></em> (<a href="/david/cache/2021/b2c393ba384ba80f2361dc7652d50de3/">cache</a>)</cite></p>
- </blockquote>
- <p>Suivi de :</p>
-
- <blockquote>
- <p>It feels like the web we’re making now is a web designed for commercial interests. The reason we get CSS grid or the JS APIs of ES6,7, and 8 has more to do with how companies want to build and deliver software over the web than it does with <mark>how individuals want to connect and communicate</mark> with each other over the web.</p>
- <p><cite><em><a href="https://blog.jim-nielsen.com/2021/browsers-and-representation/">Browsers and Representation</a></em> (<a href="/david/cache/2021/13e573e5b0ffc244ac700dba6c7b8bd1/">cache</a>)</cite></p>
- </blockquote>
- <p>À quoi ressemblerait un navigateur du peuple pour le peuple ? Qu’est-ce qui pourrait être ajouté/retiré ? Quelle en serait sa gouvernance ? Quelle serait l’échelle d’usage/développement qui nous semblerait acceptable avant d’essaimer ?</p>
- <p>Qu’il est inconfortable de se poser toutes ces questions :-).</p>
-
- <blockquote>
- <p>C’était là une approche typiquement mentat : se concentrer uniquement sur les questions. Les mentats accumulaient les questions comme d’autres avaient tendance à accumuler les réponses. <mark>Les questions créaient leurs propres trames et leurs propres systèmes.</mark> C’était cela qui aboutissait aux <em>formes</em> reconnaissables. Chacun voyait son univers à travers des trames qui s’étaient créées d’elles-mêmes, composées d’images, de mots, de désignations (parfaitement temporaires), le tout mêlé en un faisceau d’impulsions sensorielles qui se réfléchissaient sur ces constructions intérieures de la même manière que la lumière était renvoyée sur une surface brillante.<br />
- Le premier instructeur mentat de Duncan Idaho avait élaboré une configuration provisoire de mots pour décrire cette fragile construction : « Surveillez les moindres mouvements significatifs de vos écrans intérieurs. »</p>
- <p>[…]</p>
- <p>La véritable force d’un mentat résidait dans cette <em>construction</em> mentale que les instructeurs appelaient « la grande synthèse ». Cela requérait une patience que les non-mentats n’auraient même pas pu imaginer. Dans les écoles de mentats, on désignait cela sous le nom de persévérance. Il fallait être un pisteur primitif, capable de déchiffrer les signes les plus infimes, les perturbations les plus minuscules de l’environnement, et de les remonter jusqu’à leur source. En même temps, il fallait demeurer ouvert aux grands mouvements de l’extérieur comme de l’intérieur. Tout cela concourait à produire un état de « réceptivité naïve » qui était l’attitude de base du Mentat, apparentée à celle du Diseur de Vérité, mais beaucoup plus vaste dans son champ d’action.<br />
- « Vous êtes ouvert à tout ce que l’univers pourra décider de faire », disait son premier instructeur. « Votre cerveau n’est pas un ordinateur. C’est un outil de décision couplé à tout ce que vos sens peuvent lui apporter. »</p>
- <p><cite><em><a href="/david/2020/12/21/#dune">Dune</a> VI. La maison des mères</em>, Frank Herbert</cite></p>
- </blockquote>
- <figure>
- <a href="#nenuphars"
- title="Cliquer pour une version haute résolution">
- <img src="/static/david/2021/nenuphars.jpg" alt="Deux nénuphars et leurs reflets."
- loading="lazy" width="1600" height="1067" />
- </a>
- <a href="#_" class="lightbox" id="nenuphars">
- <img src="/static/david/2021/nenuphars.jpg" alt="Deux nénuphars et leurs reflets."
- loading="lazy" width="1600" height="1067" />
- </a>
- <figcaption>Que cette fleur soit synonyme de protections périodiques m’auto-frustre.</figcaption>
- </figure>
-
- <nav>
- <p class="center">
- <a rel="prev" href="/david/2021/08/10/" title="Publication précédente : HTTPSadness">← Précédent</a> •
- <a href="/david/2021/" title="Liste des publications récentes">↑ En 2021</a>
- • <a rel="next" href="/david/2021/08/12/" title="Publication suivante : Musique">Suivant →</a>
- </p>
- </nav>
- </article>
-
-
- <hr>
-
- <footer>
- <p>
- <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
- <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
- </svg> Accueil</a> •
- <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
- <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-rss2"></use>
- </svg> Suivre</a> •
- <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
- <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-user-tie"></use>
- </svg> Pro</a> •
- <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
- <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-mail"></use>
- </svg> Email</a> •
- <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
- <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-hammer2"></use>
- </svg> Légal</abbr>
- </p>
- <template id="theme-selector">
- <form>
- <fieldset>
- <legend><svg class="icon icon-brightness-contrast">
- <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-brightness-contrast"></use>
- </svg> Thème</legend>
- <label>
- <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
- </label>
- <label>
- <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
- </label>
- <label>
- <input type="radio" value="light" name="chosen-color-scheme"> Clair
- </label>
- </fieldset>
- </form>
- </template>
- </footer>
- <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
- <script>
- function loadThemeForm(templateName) {
- const themeSelectorTemplate = document.querySelector(templateName)
- const form = themeSelectorTemplate.content.firstElementChild
- themeSelectorTemplate.replaceWith(form)
-
- form.addEventListener('change', (e) => {
- const chosenColorScheme = e.target.value
- localStorage.setItem('theme', chosenColorScheme)
- toggleTheme(chosenColorScheme)
- })
-
- const selectedTheme = localStorage.getItem('theme')
- if (selectedTheme && selectedTheme !== 'undefined') {
- form.querySelector(`[value="${selectedTheme}"]`).checked = true
- }
- }
-
- const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
- window.addEventListener('load', () => {
- let hasDarkRules = false
- for (const styleSheet of Array.from(document.styleSheets)) {
- let mediaRules = []
- for (const cssRule of styleSheet.cssRules) {
- if (cssRule.type !== CSSRule.MEDIA_RULE) {
- continue
- }
- // WARNING: Safari does not have/supports `conditionText`.
- if (cssRule.conditionText) {
- if (cssRule.conditionText !== prefersColorSchemeDark) {
- continue
- }
- } else {
- if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
- continue
- }
- }
- mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
- }
-
- // WARNING: do not try to insert a Rule to a styleSheet you are
- // currently iterating on, otherwise the browser will be stuck
- // in a infinite loop…
- for (const mediaRule of mediaRules) {
- styleSheet.insertRule(mediaRule.cssText)
- hasDarkRules = true
- }
- }
- if (hasDarkRules) {
- loadThemeForm('#theme-selector')
- }
- })
- </script>
- </body>
- </html>
|