Browse Source

More links

master
David Larlet 3 years ago
parent
commit
4f80ed95d1

+ 460
- 0
cache/2021/03efcc832beba4212f70128850c9fe1f/index.html View File

@@ -0,0 +1,460 @@
<!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>
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>Émois en photos : année blanche, année noire - 2 : distance (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- 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="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- 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>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://lalunemauve.fr/emois-en-photos-annee-blanche-annee-noire-2-distance/">

<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick">

<article>
<header>
<h1>Émois en photos : année blanche, année noire - 2 : distance</h1>
</header>
<nav>
<p class="center">
<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="https://lalunemauve.fr/emois-en-photos-annee-blanche-annee-noire-2-distance/" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>Ce billet fait suite à <a href="https://lalunemauve.fr/emois-en-photos-annee-blanche-annee-noire-1-solitude/">Émois en photos : année blanche, année noire — 1 : solitude</a>.</p>

<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Premier soir #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Premier soir #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>

<h2 id="trouver-sa-place" tabindex="-1">À distance</h2>

<p><a href="https://lalunemauve.fr/20-ans-blog-grandir-sur-internet-blogging/">Je clame</a> à qui veut l’entendre qu’Internet me sert à rencontrer des personnes comme moi, pour vivre nos passions à plusieurs. </p>

<p>En réalité, je me demande si Internet ne me permet pas plutôt de <strong>tenir les autres à distance</strong>.</p>

<p><a href="https://lalunemauve.fr/emois-en-photos-annee-blanche-annee-noire-1-solitude/#thank-goodness-for-the-internet">J’écrivais</a> que les relations formées sur les réseaux sociaux sont trop ponctuelles pour être autre chose que superficielles. Et même si certains échanges sont plus réguliers ou plus intéressants que d’autres, notre (in)capacité d’attention menace de vaciller à chaque seconde si on nous écrit <strong>trop</strong>, ou si on nous écrit <strong>mal</strong>.</p>

<p>J’utilise ces plateformes pour générer de la visibilité autour de mon travail, et pour puiser de l’inspiration en butinant à droite à gauche. Les artistes et militant·es que je suis me fournissent le grain cérébral à moudre pour enrichir ma propre démarche.</p>

<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Bourrache #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Bourrache #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>

<p>En revanche, je n’utilise pas les réseaux sociaux parce que la vie des autres m’intéresse. Je suis très peu de comptes « <i lang="en">lifestyle</i> », que je trouve souvent répétitifs et convenus, même dans les sphères gotheuses.</p>

<p>Le concept de « grille Instagram » semble d’ailleurs exiger que l’on resserve perpétuellement <strong>la même soupe réconfortante et non crispante</strong>. Oui, c’est agréable de voir de belles images ; mais à la longue ça berce un peu trop.</p>

<h2 id="narcissisme" tabindex="-1">Narcissisme</h2>

<p>Je ne m’y attendais pas, mais c’est grâce à <a href="https://lalunemauve.fr/post-mortem-culturel-xii-2020/#buffy"><em>Buffy</em></a> que j’ai pris conscience de <strong>mon narcissisme, et de ses manifestations sur Internet</strong>.</p>

<p>Dans son article <i lang="en">“Darn your sinister attraction! Narcissism in Buffy’s Affair with Spike”</i> (tiré du livre <i lang="en">The Psychology of Joss Whedon, An Unauthorized Exploration of <em>Buffy</em>, <em>Angel</em> and <em>Firefly</em></i> – <a href="https://twitter.com/AllCharisma/status/1359537746843365381" lang="en">Joss Whedon is trash btw</a>), Carol Pool livre la définition de la personnalité narcissique que voici.</p>

<blockquote lang="en">
<ul>
<li>A grandiose sense of self-importance;</li>
<li>Preoccupation with fantaisies of unlimited success, power, brilliance, beauty, or ideal love;</li>
<li>A belief of being “special” and thus entitled to associate only with high-status or “special” people;</li>
<li>A hunger for excessive admiration;</li>
<li>A sense of entitlement, that is, unreasonable expectations of special treatment or others’ automatic compliance with one’s wishes;</li>
<li>A tendency to take advantage of others;</li>
<li>A lack of empathy for others’ feelings and needs;</li>
<li>Envy of others, or a belief that others envy one;</li>
<li>Arrogant or haughty behavior. (…)</li>
</ul>
</blockquote>

<p>Je traduis :</p>

<blockquote>
<ul>
<li>Une suffisance spectaculaire ;</li>
<li>une obsession pour des fantasmes de succès illimité, de pouvoir, de virtuosité, de beauté, ou d’amour idéal ;</li>
<li>une conviction d’être « spécial·e » et donc d’avoir droit de ne fréquenter que des personnes « spéciales » ou ayant un haut statut social ;</li>
<li>un appétit pour l’admiration excessive ;</li>
<li>se croire tout permis, en particulier avoir des attentes excessives concernant un traitement de faveur, ou le respect automatique de ses désirs par autrui ;</li>
<li>une tendance à profiter d’autrui ;</li>
<li>un manque d’empathie pour les émotions et les besoins d’autrui ;</li>
<li>jalouser autrui, ou une croyance que les autres nous jalousent ;</li>
<li>un comportement arrogant ou hautain. (…)</li>
</ul>
</blockquote>

<p>Si j’ai été soulagée de ne pas cocher toutes les cases, plusieurs critères justifieraient quand même sans mal mes 20 ans de pratique numérique, notamment les fantasmes de succès et le goût pour l’admiration des autres.</p>

<p>Fais-je tout ça, depuis si longtemps, par narcissisme ? Ma pratique est-elle aussi vulgaire que ça ? <span role="img" aria-label="Visage neutre.">😐</span></p>

<p>Ça expliquerait plein de choses, en fait.</p>

<p>Ça me débecte de l’avouer, mais j’ai longtemps cru que je n’étais <strong>pas</strong> narcissique parce que je ne « m’abaissais » pas à publier des photos de moi sans arrêt, contrairement à d’autres, en particulier des femmes.</p>

<p>En réalité, je publie très peu de photos de moi car Internet me sert de potion d’invisibilité : ça me permet de compenser la <a href="https://lalunemauve.fr/beaute-fatale-mona-chollet-reflexions-corporelles/#etre-plutot-que-paraitre">lien rompu avec mon corps</a> par une <strong>obsession pour la cérébralité</strong>. </p>

<p>J’ai mis des années à comprendre qu’il s’agissait là d’<strong>une misogynie intériorisée doublée d’une forme de classisme</strong>.</p>

<p>Je démêle peu à peu cette vilaine pelote grâce à mes lectures féministes.­</p>

<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Lierre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1340x888.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1040x689.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1040x689.jpg" class="attachment-large size-large" alt="" data-pin-description="Lierre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1340x888.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>

<h2 id="deconstruction-construite" tabindex="-1">Déconstruction construite</h2>

<p>Puisque l’on parle de narcissisme, je me demande aussi dans quelle mesure ma translation progressive vers un propos de plus en plus militant, et le fait que je l’affiche, n’est pas une énième manière de renvoyer une image positive de moi.</p>

<p>Je repense souvent au texte <a href="https://pr0z3.wordpress.com/2017/06/07/a-propos-de-la-deconstruction/">À propos de la déconstruction</a> de Prose. </p>

<p>À son instar, je ne peux m’empêcher de trouver les postures militantes sur Internet souvent arrogantes, à commencer par les miennes.</p>

<blockquote><p>Il y a quelque chose de profondément paradoxal dans le fait de désigner comme « déconstruites » des pensées en réalité extrêmement construites, avec des normes de vocabulaire et des concepts plus ou moins élaborés.</p></blockquote>

<p>C’est même au-delà de l’arrogance : n’est-ce pas du classisme que de tenter d’imposer un modèle de pensée qui nous semble couler de source (par exemple, l’intersectionnalité) à des personnes qui se débattent avec des problématiques propres à un milieu social différent du nôtre ?</p>

<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Givre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1340x888.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1040x689.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1040x689.jpg" class="attachment-large size-large" alt="" data-pin-description="Givre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1340x888.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>

<p>Lorsque quelqu’un·e dit quelque chose qui heurte nos convictions, on dégaine parfois des armes de destruction massive à son encontre (<i lang="en">call out</i> et compagnie).</p>

<p>Or, ces personnes peuvent elles aussi être des victimes du système patriarcal, a fortiori si ce sont des femmes et/ou des personnes LGBTQIA+. Bien sûr, ce n’est pas pour ça que nous devons tolérer des discours oppressifs. </p>

<p>Mais quand un·e adelphe en tient un, j’essaie de me rappeler que j’ai pu – et peux encore – penser, dire et publier moi aussi de la merde. Ça fait partie du cheminement.</p>

<p>Chaque personne est pétrie de croyances héritées de son éducation, de son milieu social et de son expérience ; <strong>notre vie est rythmée par toutes celles et tous ceux qu’il nous reste à écouter, et par tout ce qu’iels ont à nous apprendre</strong>.</p>

<p>Pour chaque personne par rapport à laquelle on se sent plus « déconstruit·e », il y a N fois plus d’autres personnes davantage déconstruites que soi.</p>

<p>Ce qui compte, c’est la façon dont on réagit quand on nous signale un souci, et ce que l’ont fait ensuite de cette opportunité pour se documenter. Ça pique l’ego, mais ce qui se joue dépasse de loin notre amour propre.</p>

<h3 id="visibilisation" tabindex="-1">Le coût de la visibilisation</h3>

<p>J’ai longtemps rechigné à visibiliser mes convictions politiques sur le net. Si j’hésite un peu moins à le faire aujourd’hui, c’est toujours en prenant les plus grandes précautions, et en manquant d’assurance.</p>

<p>Pour commencer, mes <strong>impensés</strong> et mes <strong>angles morts</strong> sont nombreux, parce que je cumule pas mal de privilèges. J’estime donc que ma voix prend donc déjà trop de place, même si je publie assez peu.</p>

<p>De plus, je ne suis pas prête à payer le <strong>coût psychique</strong> exigé par une plus grande visibilisation de mes convictions.</p>

<p>Je vais essayer de développer un peu tout ça, car ça me trotte pas mal dans la tête.</p>

<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Givre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1340x888.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1040x689.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1040x689.jpg" class="attachment-large size-large" alt="" data-pin-description="Givre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1340x888.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>

<h3 id="privileges-impenses" tabindex="-1">Privilèges et impensés</h3>

<p>Plus je lis et plus je me renseigne sur le féminisme, plus <strong>mes privilèges et mes impensés me sautent à la gueule</strong>.</p>

<p>En tant qu’artiste, suis-je en droit de représenter des personnes racisées et/ou des personnes transgenres par exemple, ou d’illustrer leurs paroles, étant donné que je ne suis individuellement concernée ni par le racisme ni par la transphobie ?</p>

<p>Autrement dit, pour citer La Fille Renne sur le Slack de <a href="https://polysememagazine.bigcartel.com/">Polysème Magazine</a> (c’est super, <a href="https://www.helloasso.com/associations/polyseme-magazine/adhesions/rejoins-l-association-de-polyseme-magazine">venez</a>) : </p>

<blockquote><p>Est-ce qu’il vaut mieux ne rien faire et mettre de côté des sujets super importants et des personnes marginalisées, ou faire, consulter des personnes concerné-e-s, publier leurs œuvres, et peut être risquer des maladresses ?</p></blockquote>

<p>J’ai lu pas mal de messages contradictoires à ce sujet. D’un côté, il y a des militant·es qui demandent à ce <strong>que l’on ne s’empare pas des oppressions dont on ne fait pas soi-même l’expérience</strong>, pour ne pas faire d’ombre aux personnes concernées, dont les voix ont déjà du mal à porter.</p>

<p>D’autres militant·es estiment au contraire <strong>que c’est aux personnes détentrices d’un privilège d’éduquer leurs pairs</strong>, afin de soulager la charge mentale des personnes concernées, fatiguées de devoir faire ce travail pédagogique permanent.</p>

<p>J’ai encore du mal à trouver l’équilibre. Amplifier la voix des personnes concernées me semble indispensable, et j’ai l’impression de le faire quand je partage des contenus qu’elles ont créés.</p>

<p>Mais, malgré ma volonté de multiplier les points de vue et les représentations, il y a un paquet d’angles morts dans ce que je choisis de partager. Et valoriser certaines problématiques plutôt que d’autres, c’est déjà les hiérarchiser, même inconsciemment, comme l’a rappelé <a href="https://twitter.com/mechandicap/status/1364543971066859529">Méchandicapé</a>.</p>

<p>Par exemple, ce n’est que l’année dernière que j’ai pris conscience, grâce aux militant·es afro-féministes, que je ne relayais et ne créais que des images représentant des personnes blanches. Des personnes de toutes les morphologies, de tous les genres, mais des personnes blanches.</p>

<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Givre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1340x888.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1040x689.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1040x689.jpg" class="attachment-large size-large" alt="" data-pin-description="Givre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1340x888.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>

<p>Peut-être qu’être féministe, c’est cela : allumer son humilité comme une lampe torche, pour explorer les phobies et les stéréotypes que l’on a intériorisés, toutes les micro-agressions que l’on inflige à autrui, et tous les emblèmes d’oppression que l’on incarne et que l’on perpétue, souvent inconsciemment, faute de s’être posé assez de questions.</p>

<p>Bien sûr, avoir conscience de mes impensés ne m’empêche pas de prendre la parole à propos des discriminations et des violences que j’ai moi-même subies, et que je subis encore parce que je suis une femme.</p>

<p>Mais dans la mesure où bien d’autres féministes blanches, valides et cisgenres occupent déjà l’espace médiatique, je ne pense pas que ma voix individuelle ait un grand rôle à jouer. </p>

<p>Cependant, à partir du moment où on a une audience, si modeste soit-elle, on a <strong>une responsabilité vis-à-vis des représentations que l’on diffuse</strong>.</p>

<h3 id="trop-de-place" tabindex="-1">Trop de place</h3>

<p>Quoi que je dise, ma voix de personne privilégiée prend déjà trop de place. Étant donné qu’on est déjà sur-sollicité·es en permanence, pourquoi la ramener davantage ?</p>

<p><span lang="en">Black Lives Matter</span> m’a fait comprendre que l’enjeu n’est pas tant de prendre la parole une fois de plus, mais de fermer ma gueule et écouter les autres, comme une éponge.</p>

<p>À moins d’avoir quelque chose d’original ou d’inédit à proposer, il est très probable que d’autres militant·es disent déjà ce que l’on essaie de dire soi-même, mais :</p>

<ul>
<li>de manière plus fine et mieux argumentée ;</li>
<li>en étant plus légitimes pour le faire car étant directement concerné·es ;</li>
<li>a priori auprès d’un plus large public. (Attention : sur ce dernier point, je ne parle pas des journalistes ou sociologues professionnel·les qui ont déjà une audience de fait grâce à la nature même de leur métier, mais de l’audience de militant·es bénévoles très suivi·es.)</li>
</ul>

<p>Même si je bouillonne fort, je ne vois aucun intérêt à réagir non-stop à l’actualité, par exemple.</p>

<p>Car au moment où je prends connaissance de la dernière actu abjecte du moment, elle a déjà été partagée par tous les autres comptes féministes, avec, en prime, un recul et une analyse que je suis quant à moi incapable de fournir en un laps de temps si court, et que je ne suis peut-être pas en mesure de fournir étant donné mes privilèges (?).</p>

<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Boules #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Boules #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>

<p>Si je jouais le jeu, et que je passais ma vie à réagir à tout, notamment sur les réseaux sociaux, j’aurais la sensation de contribuer à <strong>confisquer de l’attention</strong> qui pourrait être dirigée vers d’autres contenus, créés par des personnes directement concernées, mais invisibilisées pour cette raison précise.</p>

<p>Dans cette logique, il me semble plus cohérent de retweeter/partager des contenus créés d’autres personnes que soi sur les problématiques qui ne sont pas les nôtres mais qui nous touchent, par solidarité, en particulier si on a une communauté importante.</p>

<p>Mais cela crée beaucoup de <strong>bruit</strong> aussi ; or, on sous-estime la lassitude provoquée par ces publications répétitives, d’autant plus quand tous les comptes féministes se passent le mot. </p>

<p>Alors certes, c’est comme ça qu’on fait bouger certaines lignes : en étant légion. C’est aussi comme ça que fonctionne le « buzz » sur les réseaux sociaux. Mais cela participe à une surcharge informationnelle qu’il est difficile d’assimiler en permanence.</p>

<h3 id="cout-psychique" tabindex="-1">Coût psychique</h3>

<p>Outre ce problème de légitimité, visibiliser ses convictions a aussi <strong>un coût psychique élevé</strong>. Visibiliser qui l’on est et ses valeurs, c’est prendre le risque de s’exposer à des insultes, du harcèlement et des violences.</p>

<p><a href="https://twitter.com/faerieMoonlight" lang="en">Moonlight</a> me disait que cette visibilisation, cet <i lang="en">outing</i>, peut même représenter un danger de mort pour certain·es d’entre nous.</p>

<p>C’est ainsi que le patriarcat intimide et punit les féministes, avec une double peine pour les féministes racisé·es, handicapé·es et/ou LGBTQIA+.</p>

<p>Dans ce contexte, on a toutes les raisons du monde à vouloir <strong>se préserver</strong>. Et en même temps, ce n’est qu’en participant à l’effort de lutte collective qu’il y a une possibilité que la société évolue.</p>

<p>En particulier, « rien sur nous sans nous » implique que l’on s’engage et que l’on crée des contenus nous-mêmes, collectivement.</p>

<p>Mais je me questionne sur la <strong>pression à fournir toujours plus d’efforts</strong>, à sacrifier son temps libre et ses moyens, pour lutter contre des systèmes dont on gère déjà la charge mentale et les violences au quotidien.</p>

<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Une vieille âme dans mon jardin #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Une vieille âme dans mon jardin #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>

<p>Militer exige un temps considérable, que l’on a aussi le droit de passer différemment. Quand on milite, on fait déjà souvent ce que l’on peut, à hauteur de ses moyens. </p>

<p>Avoir besoin de recharger ses batteries est légitime. On a le droit de faire des pauses, de se désabonner de comptes militants et de mettre ce bruit constant en sourdine, car cela exige trop d’attention et trop d’énergie vitale.</p>

<h3 id="hierarchisation-engagement" tabindex="-1">Hiérarchisation de l’engagement</h3>

<p>C’est pourquoi les <strong>injonctions à militer</strong> me questionnent, ainsi que ce que je perçois comme une <strong>hiérarchisation de l’engagement</strong>.</p>

<p>Je comprends la nécessité de faire corps, et de penser nos luttes de manière collective. Je comprends aussi que les organisations existantes ont besoin de bénévoles, de dons et d’idées nouvelles.</p>

<p>Mais affirmer que seul l’engagement collectif et public compte, n’est-ce pas une façon de contraindre des gens à s’outer pour « prouver » leur légitimité ?</p>

<p>En parallèle, j’entends souvent dire que militer sur Internet ne serait pas aussi important que le fait de participer à des actions sur le terrain au sein d’un collectif.</p>

<p>Ce type de discours semble créer une hiérarchie entre celleux qui militeraient « de la bonne façon », sur le terrain, dans la rue, et celleux qui brasseraient de l’air sur les réseaux sociaux.</p>

<p>Or, quand je vois toutes les mobilisations qui ont lieu sur le net, j’ai de plus en plus de mal à avaler cet argument.</p>

<p>Plus généralement, la pression que je ressens pour « prouver » ma valeur militante me révulse.</p>

<h3 id="aquarium" tabindex="-1">Aquarium</h3>

<p>« J’aime bien ton blog, mais il est devenu trop militant. »</p>

<p>Voici le nouveau type de retour que l’on commence à me faire. C’est ponctuel pour l’instant, mais il y a un risque que cela devienne monnaie courante, vu ce que je prévois de publier au fil du temps.</p>

<p>Il y a quand même un paradoxe : aux yeux des personnes déjà engagées, je n’en fais sans doute pas assez ; aux yeux des personnes en marge des cercles militants, ou carrément réfractaires au féminisme, j’en fais déjà trop.</p>

<p>Les lecteurices de mon blog ne me doivent rien et peuvent aller et venir à leur guise. Moi en revanche, je me suis engagée à respecter l’attention que les un·es et les autres accordent à mes contenus. Je ne peux donc faire ce que je fais que de la manière la plus honnête possible.</p>

<p>Et l’honnêteté, pour moi, ça commence par <strong>l’honnêteté intellectuelle</strong>. Je ne serais pas honnête si j’occultais totalement la politique sur mon blog perso, alors qu’elle occupe une place importante dans ma vie.</p>

<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Jardins Rocambole (Ille-et-Vilaine) #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1040x1387.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-768x1024.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1152x1536.jpg 1152w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1536x2048.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-280x373.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-610x813.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-458x610.jpg 458w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1340x1787.jpg 1340w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2.jpg 2010w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1040x1387.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1040x1387.jpg" class="attachment-large size-large" alt="" data-pin-description="Jardins Rocambole (Ille-et-Vilaine) #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1040x1387.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-768x1024.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1152x1536.jpg 1152w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1536x2048.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-280x373.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-610x813.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-458x610.jpg 458w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1340x1787.jpg 1340w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2.jpg 2010w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>

<p>Parfois, je me demande si ce sont vraiment les idées que je partage qui dérangent, ou bien seulement les mots que j’utilise pour les exprimer ?</p>

<p>Car je comprends très bien que la rhétorique militante puisse déplaire : elle semble souvent taillée pour n’être comprise que par d’autres militant·es, façon <a href="https://uninvincibleete.com/2019/07/epuisee/">aquarium</a>.</p>

<p>Quand j’observe autour de moi les personnes les moins politisées sur les questions féministes, elles se raidissent dès que j’utilise des concepts ou des mots issus des études féministes et <span lang="en">queer</span>.</p>

<p>Pour les convaincre, je n’ai pas de solution miracle : j’essaie de m’adapter à chaque personne en me calquant sur le vocabulaire qu’elle utilise par exemple, et surtout je ne m’épuise plus si ça bloque, même quand je suis fasse à quelqu’un pour qui j’ai de l’affection.</p>

<h3 id="creation-vs-curation" tabindex="-1">Création vs. curation</h3>

<p>En parallèle à tous ces questionnements, je sens que la <strong>tension entre création et curation</strong> s’accélère.</p>

<p>J’aimerais m’autoriser à parler davantage de mes propres expériences : ne pas être seulement « cheffe d’orchestre » ou « curatrice » en partageant ce que font les autres, mais m’approprier davantage le rôle de créatrice pour oser raconter ma propre histoire.</p>

<p><a href="https://lia-ve-art.tumblr.com/">Lia</a> a attiré mon attention sur le fait que mes créations personnelles passent après mon travail de recherche et de rédaction pour La Lune Mauve. C’est vrai, et j’ai envie que ça change : je ne veux pas répéter toute ma vie ce que je sais déjà faire. </p>

<p>J’ai besoin de créer quelque chose d’autre, quelque chose de plus grand et de plus intime à la fois. <strong>J’ai besoin d’arrêter de cacher qui je suis par peur d’être rejetée.</strong> Je doute que cette peur disparaisse un jour, alors autant l’accepter et en faire quelque chose ?</p>

<p>Dans <a href="http://coilhouse.net/2011/12/adieu-comrades-a-farewell-from-zoetica/">Adieu, Comrades</a>, Zoetica Ebb écrivait ceci, au moment de lâcher son travail d’éditrice de magazine pour devenir illustratrice à plein temps : </p>

<blockquote lang="en"><p>The need to focus on creating versus curating has been nagging at me (…), first softly and then louder, until it grew into a din which could no longer be ignored.</p></blockquote>

<p>Je traduis : </p>

<blockquote><p>Le besoin de me concentrer sur la création versus la curation me harcèle depuis un certain temps (…), au départ doucement et puis plus fort, jusqu’à ce qu’il mute en un vacarme que je n’ai plus pu ignorer.</p></blockquote>

<p>C’était en 2011, j’étais à l’apogée de mon <a href="https://lalunemauve.fr/liberez-votre-creativite-de-julia-cameron/#artistes-fantomes">artiste-fantômerie</a>, mais ça a touché un truc enfoui très profondément en moi.</p>

<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Petit matin #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Petit matin #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>

<p>Jadis, quand j’éditais le <a href="https://lalunemauve.fr/archives/">webzine</a> de La Lune Mauve, plus j’aidais les autres à accoucher de leurs idées, plus j’avais du mal à accoucher des miennes. <strong>Petit à petit, ma créativité s’asséchait à force de devoir me consacrer à ce que créait autrui.</strong> </p>

<p>Je me suis longtemps battue contre la petite voix intérieure qui me soufflait de laisser tomber, et de me reconnecter à ce que je créais, moi. Mais je ne voulais pas l’écouter. Le collectif me semblait plus important et plus noble que mes aspirations personnelles.</p>

<p>En fin de compte, mettre fin à cette expérience a été un gigantesque coup de <span lang="en">boost</span> créatif, toute douloureuse fut la décision sur le moment.</p>

<p><strong>Quand on est artiste, il faut choisir comment on investit son temps.</strong> Le temps libre, c’est la véritable pierre précieuse de notre époque.</p>

<p>Si je continue à passer mon temps à relayer ce que créent et partagent les autres, c’est autant de temps en moins pour mes propres créations.</p>

<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Atlantique #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Atlantique #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>

<h2 id="ateliers-creatifs" tabindex="-1">Des ateliers créatifs féministes auto-gérés ?</h2>

<p>Je pose ça là car je ne vois pas où d’autre, et puis ça prolonge un peu la réflexion sur comment articuler militantisme et création.</p>

<p>Alors voilà : j’ai envie depuis quelques années de <strong>co-organiser des ateliers créatifs, militants et auto-gérés</strong> en présentiel, en petits comités et a priori en non mixité, sans homme cis-het (cisgenre et hétérosexuel).</p>

<p>On pourrait investir un tiers-lieu ou louer un gîte au calme en Bretagne. Le programme serait co-conçu : on pourrait être plusieurs à proposer des ateliers, en fonction de ce que chacun·e sait faire et a envie de partager avec les autres. </p>

<p>Ça pourrait être un mix entre :</p>

<ul>
<li>des <strong>ateliers concrets</strong> où on apprend à fabriquer des trucs, où on (re)découvre une technique, où on lâche nos téléphones et où on sollicite nos cerveaux autrement. Peut-être une occasion de se reconnecter à la nature, de s’intéresser à la teinture végétale, aux fournitures et matériaux écologiques, à la fabrication de papier recyclé, à la gravure sur Tetra Pak, etc. ;</li>
<li>et des <strong>moments d’échanges</strong> et de discussions sur des sujets liés à notre créativité vs. notre charge mentale, la prise de parole et le sentiment de légitimité, l’impact politique et la visibilité de ce que l’on fait, les façons de s’engager plus activement, comment lutter contre nos biais racistes, transphobes, validistes, etc.</li>
</ul>

<p><strong>Si vous êtes concerné·e, est-ce un projet qui vous donnerait envie personnellement de participer ? Si non, pourquoi ?</strong></p>

<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Coquille #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Coquille #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>

<p>Je pense qu’il n’y a rien de plus fort que les expériences vécues IRL (<i lang="en">in real life</i>). Tant que tout se passe sur Internet, il y a encore la possibilité de mettre ça de côté dans un coin de sa tête et de siffloter très fort en espérant que d’autres feront le boulot, et que la détresse des autres ne nous atteindra pas trop.</p>

<p><strong>Créer des contenus originaux, et donner envie à autrui de raconter leur propre histoire à l’aide de l’art, c’est pour moi une démarche militante.</strong></p>

<p>C’est un moyen de rendre du pouvoir aux autres, d’encourager des personnes en qui personne ne croit et que personne n’écoute, à cause de leur identité de genre, de leur sexualité, de leurs handicaps, de leur apparence, de leur histoire, de leurs croyances, <i lang="la">ad lib.</i> </p>

<p>Cette articulation de l’art, de l’intime et du politique, c’est ce qui m’intéresse le plus. Je n’en suis qu’aux prémisses, mais c’est un projet qui me tient au corps et que j’ai envie de développer.</p>

<h2>À suivre…</h2>

<p>Ce billet étant très long, j’ai décidé, exceptionnellement, de le découper en 3. Je vous donne rendez-vous très bientôt pour la dernière partie.</p>

<p class="llm-single_signature vcard author"><svg role="img" aria-label="Marie" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 133 168"><title>Marie</title><path d="M42,50.9c-1.6,3.7-3.1,7.3-4.9,10.8a19.5,19.5,0,0,1-3.2,4.5c-2.3,2.5-5.5,2.3-7.7-.5s-2.8-5.9-3.2-9.2c-1-8.5-1.7-17-2.6-25.5a3.3,3.3,0,0,0-.5-1.8,8,8,0,0,0-.8,1.6,110.3,110.3,0,0,0-6.3,24.5c-2,14.2-3.7,28.5-5.3,42.8-1.2,11.6-2.2,23.3-3.1,35.1a52.3,52.3,0,0,0,.4,7.9c.1,2-.3,2.8-1.9,2.8S1,143.4.9,142c-.6-7.5.2-14.9.9-22.4C2.9,108.4,4,97.3,5.3,86.1c.9-8.4,1.8-16.8,3.1-25.2,1.8-11.1,3.7-22.2,8-32.7.9-2.2,2-4.3,3.1-6.4.3-.5,1.3-1,1.7-.8s1.9,1,2.1,1.7a35.4,35.4,0,0,1,.7,5.8c.9,9.3,1.7,18.6,2.7,27.9a24,24,0,0,0,1.9,6.3c.8,2,1.7,2.2,3,.4s3.8-5.4,4.8-8.5,1.9-8.7,2.8-13.1a14.4,14.4,0,0,1,.5-3.1,3,3,0,0,1,1.7-1.8,2.1,2.1,0,0,1,2.4,1.8c.4,2.4.9,4.7,1.3,7.1,1.2,7.3,2.3,14.7,3.6,22,.9,4.5,1.9,8.9,4.2,12.8a8,8,0,0,0,1.5,2.1c.4.4,1.3.9,1.8.7a3.1,3.1,0,0,0,1.1-1.8,86.1,86.1,0,0,1,2.6-20.2,106.2,106.2,0,0,1,4-10.7c.4-1,1.2-2,2.3-1.4a4.4,4.4,0,0,1,2,2.5,32.5,32.5,0,0,1,.1,5.4h.5c.1-.8.3-1.7.4-2.5s.3-2.4,2-2.4A2.7,2.7,0,0,1,73.3,55c-.1,3.3-.4,6.6-.2,9.9S73.8,73,74.2,77a6.3,6.3,0,0,0,.7,2.1c.6-1,1.1-1.6,1.5-2.4a24.1,24.1,0,0,0,2.3-10.6c.1-3.6.2-7.3.6-10.9s1.6-3.2,4.1-2.3c5.9,2.4,8.6,6.8,8.9,13.1a50.7,50.7,0,0,0,.9,7.6,10.4,10.4,0,0,0,3.5-4.9c1.6-4.6,3-9.2,4.4-13.9.4-1.1.7-1.9,2-1.6s2.1.9,2,2.4a114.5,114.5,0,0,0-.5,11.7,27.4,27.4,0,0,0,1.7,7.4c.5,1.7,1.3,1.8,2.8.9s3-2.6,2.7-5.1a29.8,29.8,0,0,1,1.8-15.9,9.7,9.7,0,0,1,1.6-2.8,2.7,2.7,0,0,1,2.2-1,3.2,3.2,0,0,1,1.9,1.9c.9,6.3.5,12.5-2.3,18.3a8.2,8.2,0,0,0-.6,6.5c.8,2.5,2.7,3.6,5.1,2.5a31.7,31.7,0,0,0,9.2-6.6,7.1,7.1,0,0,1,1.5-.8c0,.6.2,1.2,0,1.6-1.7,4.5-5.4,7-9.6,8.8-2.7,1.1-5.2,1.2-7.2-1a27,27,0,0,1-2.7-3.9,35.4,35.4,0,0,1-3.4,1.6c-3,.9-4.5-.3-5.7-2.4a30.1,30.1,0,0,1-2.2-5.5c-.2-.5-.3-1-.5-1.4a77.9,77.9,0,0,1-4.8,6.5,3.4,3.4,0,0,1-6-.9,41.3,41.3,0,0,1-1.4-7c-.4-2.6-.6-5.2-1.2-7.7a5.2,5.2,0,0,0-5-4.3c0,2.4-.1,4.9-.1,7.4.1,5-.2,9.9-2.5,14.5-.5.8-1,1.7-1.6,2.5-1.8,2.5-5.2,2.4-6.4-.4a35.4,35.4,0,0,1-1.8-7.3,29.6,29.6,0,0,1-.3-3.1h-.5a12.7,12.7,0,0,1-.6,1.8,90.3,90.3,0,0,1-5,9.8,9.4,9.4,0,0,1-8.1,4.4,5.3,5.3,0,0,1-4.3-2.4,27.1,27.1,0,0,1-5-11.4c-1.3-6.6-2.5-13.3-3.8-20C42.3,52.1,42.2,51.4,42,50.9Zm22.2,10a36.3,36.3,0,0,0-2.4,12.2A34,34,0,0,0,64.2,60.9Zm52.3-1.5c.1-.7-.6-.8-.7-.2l-1,6.2c0,.4.1,1.1.7.1Z"></path><path d="M71.5,138.3a35.8,35.8,0,0,1-7.1.6c-1.6-.1-3.1-1.2-4.6-2.1a2,2,0,0,1-.4-1.7,2.6,2.6,0,0,1,1.8-.9,2.9,2.9,0,0,1,1.7.6c2.9,1.7,5.5.2,8.1-.9.3-.1.5-1,.5-1.5.4-11.7,3.8-22.4,10.9-31.8a12.5,12.5,0,0,1,10-5.6c3.9,0,6.3,2.4,8,5.4a16,16,0,0,1,1.8,7.2c.3,7.7-4,12.8-9.5,17.2a101,101,0,0,1-16.4,10.8,3,3,0,0,0-1,2.1c.2,5.3.9,10.6,3.3,15.3,3.9,7.7,12.3,12.1,21.6,8.1l1.1-.3c.4,1.5-.6,2-1.5,2.4a17.5,17.5,0,0,1-19.7-3c-4.8-4.4-6.8-10.2-7.9-16.4C71.9,142,71.7,140.1,71.5,138.3Zm3.8-6.9h.8a79.2,79.2,0,0,0,17.2-12c4.7-4.4,6.8-9.6,4.9-16.1-1-3.2-3.6-5.7-7.4-4.4s-6,4-7.8,7.2a52.5,52.5,0,0,0-6.5,17C76,125.8,75.7,128.5,75.3,131.4Z"></path><path d="M105.3,0c1.9.7,3.2,1.2,3.3,3.3.1,4.3.7,8.7,1.1,13a8.4,8.4,0,0,0,.2,1l1.7-.9a18.2,18.2,0,0,1,8.5-2.8,4.8,4.8,0,0,1,3.1.8,2.8,2.8,0,0,1,0,4.6c-2.8,1.9-5.9,2.4-9,3.1l-3.2.5a16.5,16.5,0,0,0,.7,3.2c.9,2.4,2,4.7,2.9,7.1a2.1,2.1,0,0,1-.2,1.9c-.6.6-1.4.5-2.1-.3l-6.8-7.8a31.3,31.3,0,0,0-2.5,2.6,88.7,88.7,0,0,0-5.5,8.1c-.9,1.4-1.2,3.2-1.8,4.8a10.6,10.6,0,0,1-1,1.2c-.4-.4-1.1-.8-1.1-1.1a20.7,20.7,0,0,1,.3-5c.9-3.5,3.4-6.2,5.6-9,1-1.2,2.1-2.4,3.2-3.5s1.1-3.2-.7-4.4l-3.5-2.6a7,7,0,0,1-2.3-4.6,9.3,9.3,0,0,1,.4-2.3c1,.3,2.1.3,2.7.9s2.7,3.2,4.1,4.8.2.5.4.6l1.8.9a4.5,4.5,0,0,0,.5-1.9c-.3-3.9-.7-7.9-1-11.8A33.9,33.9,0,0,1,105.3,0Z"></path><path d="M118.9,121.8c-1.9,0-2.9-1-2.8-2.6a1.8,1.8,0,0,1,1.9-2.1c1.1,0,2.8,1.8,2.7,2.9S120.1,121.9,118.9,121.8Z"></path></svg></p>
</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> RSS</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>
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>

+ 166
- 0
cache/2021/03efcc832beba4212f70128850c9fe1f/index.md View File

@@ -0,0 +1,166 @@
title: Émois en photos : année blanche, année noire - 2 : distance
url: https://lalunemauve.fr/emois-en-photos-annee-blanche-annee-noire-2-distance/
hash_url: 03efcc832beba4212f70128850c9fe1f

<p>Ce billet fait suite à <a href="https://lalunemauve.fr/emois-en-photos-annee-blanche-annee-noire-1-solitude/">Émois en photos : année blanche, année noire — 1 : solitude</a>.</p>
<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Premier soir #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Premier soir #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_premier-soir-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>
<h2 id="trouver-sa-place" tabindex="-1">À distance</h2>
<p><a href="https://lalunemauve.fr/20-ans-blog-grandir-sur-internet-blogging/">Je clame</a> à qui veut l’entendre qu’Internet me sert à rencontrer des personnes comme moi, pour vivre nos passions à plusieurs. </p>
<p>En réalité, je me demande si Internet ne me permet pas plutôt de <strong>tenir les autres à distance</strong>.</p>
<p><a href="https://lalunemauve.fr/emois-en-photos-annee-blanche-annee-noire-1-solitude/#thank-goodness-for-the-internet">J’écrivais</a> que les relations formées sur les réseaux sociaux sont trop ponctuelles pour être autre chose que superficielles. Et même si certains échanges sont plus réguliers ou plus intéressants que d’autres, notre (in)capacité d’attention menace de vaciller à chaque seconde si on nous écrit <strong>trop</strong>, ou si on nous écrit <strong>mal</strong>.</p>
<p>J’utilise ces plateformes pour générer de la visibilité autour de mon travail, et pour puiser de l’inspiration en butinant à droite à gauche. Les artistes et militant·es que je suis me fournissent le grain cérébral à moudre pour enrichir ma propre démarche.</p>
<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Bourrache #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Bourrache #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-11_bourrache-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>
<p>En revanche, je n’utilise pas les réseaux sociaux parce que la vie des autres m’intéresse. Je suis très peu de comptes « <i lang="en">lifestyle</i> », que je trouve souvent répétitifs et convenus, même dans les sphères gotheuses.</p>
<p>Le concept de « grille Instagram » semble d’ailleurs exiger que l’on resserve perpétuellement <strong>la même soupe réconfortante et non crispante</strong>. Oui, c’est agréable de voir de belles images ; mais à la longue ça berce un peu trop.</p>
<h2 id="narcissisme" tabindex="-1">Narcissisme</h2>
<p>Je ne m’y attendais pas, mais c’est grâce à <a href="https://lalunemauve.fr/post-mortem-culturel-xii-2020/#buffy"><em>Buffy</em></a> que j’ai pris conscience de <strong>mon narcissisme, et de ses manifestations sur Internet</strong>.</p>
<p>Dans son article <i lang="en">“Darn your sinister attraction! Narcissism in Buffy’s Affair with Spike”</i> (tiré du livre <i lang="en">The Psychology of Joss Whedon, An Unauthorized Exploration of <em>Buffy</em>, <em>Angel</em> and <em>Firefly</em></i> – <a href="https://twitter.com/AllCharisma/status/1359537746843365381" lang="en">Joss Whedon is trash btw</a>), Carol Pool livre la définition de la personnalité narcissique que voici.</p>
<blockquote lang="en">
<ul>
<li>A grandiose sense of self-importance;</li>
<li>Preoccupation with fantaisies of unlimited success, power, brilliance, beauty, or ideal love;</li>
<li>A belief of being “special” and thus entitled to associate only with high-status or “special” people;</li>
<li>A hunger for excessive admiration;</li>
<li>A sense of entitlement, that is, unreasonable expectations of special treatment or others’ automatic compliance with one’s wishes;</li>
<li>A tendency to take advantage of others;</li>
<li>A lack of empathy for others’ feelings and needs;</li>
<li>Envy of others, or a belief that others envy one;</li>
<li>Arrogant or haughty behavior. (…)</li>
</ul>
</blockquote>
<p>Je traduis :</p>
<blockquote>
<ul>
<li>Une suffisance spectaculaire ;</li>
<li>une obsession pour des fantasmes de succès illimité, de pouvoir, de virtuosité, de beauté, ou d’amour idéal ;</li>
<li>une conviction d’être « spécial·e » et donc d’avoir droit de ne fréquenter que des personnes « spéciales » ou ayant un haut statut social ;</li>
<li>un appétit pour l’admiration excessive ;</li>
<li>se croire tout permis, en particulier avoir des attentes excessives concernant un traitement de faveur, ou le respect automatique de ses désirs par autrui ;</li>
<li>une tendance à profiter d’autrui ;</li>
<li>un manque d’empathie pour les émotions et les besoins d’autrui ;</li>
<li>jalouser autrui, ou une croyance que les autres nous jalousent ;</li>
<li>un comportement arrogant ou hautain. (…)</li>
</ul>
</blockquote>
<p>Si j’ai été soulagée de ne pas cocher toutes les cases, plusieurs critères justifieraient quand même sans mal mes 20 ans de pratique numérique, notamment les fantasmes de succès et le goût pour l’admiration des autres.</p>
<p>Fais-je tout ça, depuis si longtemps, par narcissisme ? Ma pratique est-elle aussi vulgaire que ça ? <span role="img" aria-label="Visage neutre.">😐</span></p>
<p>Ça expliquerait plein de choses, en fait.</p>
<p>Ça me débecte de l’avouer, mais j’ai longtemps cru que je n’étais <strong>pas</strong> narcissique parce que je ne « m’abaissais » pas à publier des photos de moi sans arrêt, contrairement à d’autres, en particulier des femmes.</p>
<p>En réalité, je publie très peu de photos de moi car Internet me sert de potion d’invisibilité : ça me permet de compenser la <a href="https://lalunemauve.fr/beaute-fatale-mona-chollet-reflexions-corporelles/#etre-plutot-que-paraitre">lien rompu avec mon corps</a> par une <strong>obsession pour la cérébralité</strong>. </p>
<p>J’ai mis des années à comprendre qu’il s’agissait là d’<strong>une misogynie intériorisée doublée d’une forme de classisme</strong>.</p>
<p>Je démêle peu à peu cette vilaine pelote grâce à mes lectures féministes.­</p>
<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Lierre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1340x888.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1040x689.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1040x689.jpg" class="attachment-large size-large" alt="" data-pin-description="Lierre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_lierre-1340x888.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>
<h2 id="deconstruction-construite" tabindex="-1">Déconstruction construite</h2>
<p>Puisque l’on parle de narcissisme, je me demande aussi dans quelle mesure ma translation progressive vers un propos de plus en plus militant, et le fait que je l’affiche, n’est pas une énième manière de renvoyer une image positive de moi.</p>
<p>Je repense souvent au texte <a href="https://pr0z3.wordpress.com/2017/06/07/a-propos-de-la-deconstruction/">À propos de la déconstruction</a> de Prose. </p>
<p>À son instar, je ne peux m’empêcher de trouver les postures militantes sur Internet souvent arrogantes, à commencer par les miennes.</p>
<blockquote><p>Il y a quelque chose de profondément paradoxal dans le fait de désigner comme « déconstruites » des pensées en réalité extrêmement construites, avec des normes de vocabulaire et des concepts plus ou moins élaborés.</p></blockquote>
<p>C’est même au-delà de l’arrogance : n’est-ce pas du classisme que de tenter d’imposer un modèle de pensée qui nous semble couler de source (par exemple, l’intersectionnalité) à des personnes qui se débattent avec des problématiques propres à un milieu social différent du nôtre ?</p>
<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Givre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1340x888.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1040x689.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1040x689.jpg" class="attachment-large size-large" alt="" data-pin-description="Givre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre-1340x888.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>
<p>Lorsque quelqu’un·e dit quelque chose qui heurte nos convictions, on dégaine parfois des armes de destruction massive à son encontre (<i lang="en">call out</i> et compagnie).</p>
<p>Or, ces personnes peuvent elles aussi être des victimes du système patriarcal, a fortiori si ce sont des femmes et/ou des personnes LGBTQIA+. Bien sûr, ce n’est pas pour ça que nous devons tolérer des discours oppressifs. </p>
<p>Mais quand un·e adelphe en tient un, j’essaie de me rappeler que j’ai pu – et peux encore – penser, dire et publier moi aussi de la merde. Ça fait partie du cheminement.</p>
<p>Chaque personne est pétrie de croyances héritées de son éducation, de son milieu social et de son expérience ; <strong>notre vie est rythmée par toutes celles et tous ceux qu’il nous reste à écouter, et par tout ce qu’iels ont à nous apprendre</strong>.</p>
<p>Pour chaque personne par rapport à laquelle on se sent plus « déconstruit·e », il y a N fois plus d’autres personnes davantage déconstruites que soi.</p>
<p>Ce qui compte, c’est la façon dont on réagit quand on nous signale un souci, et ce que l’ont fait ensuite de cette opportunité pour se documenter. Ça pique l’ego, mais ce qui se joue dépasse de loin notre amour propre.</p>
<h3 id="visibilisation" tabindex="-1">Le coût de la visibilisation</h3>
<p>J’ai longtemps rechigné à visibiliser mes convictions politiques sur le net. Si j’hésite un peu moins à le faire aujourd’hui, c’est toujours en prenant les plus grandes précautions, et en manquant d’assurance.</p>
<p>Pour commencer, mes <strong>impensés</strong> et mes <strong>angles morts</strong> sont nombreux, parce que je cumule pas mal de privilèges. J’estime donc que ma voix prend donc déjà trop de place, même si je publie assez peu.</p>
<p>De plus, je ne suis pas prête à payer le <strong>coût psychique</strong> exigé par une plus grande visibilisation de mes convictions.</p>
<p>Je vais essayer de développer un peu tout ça, car ça me trotte pas mal dans la tête.</p>
<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Givre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1340x888.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1040x689.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1040x689.jpg" class="attachment-large size-large" alt="" data-pin-description="Givre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre2-1340x888.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>
<h3 id="privileges-impenses" tabindex="-1">Privilèges et impensés</h3>
<p>Plus je lis et plus je me renseigne sur le féminisme, plus <strong>mes privilèges et mes impensés me sautent à la gueule</strong>.</p>
<p>En tant qu’artiste, suis-je en droit de représenter des personnes racisées et/ou des personnes transgenres par exemple, ou d’illustrer leurs paroles, étant donné que je ne suis individuellement concernée ni par le racisme ni par la transphobie ?</p>
<p>Autrement dit, pour citer La Fille Renne sur le Slack de <a href="https://polysememagazine.bigcartel.com/">Polysème Magazine</a> (c’est super, <a href="https://www.helloasso.com/associations/polyseme-magazine/adhesions/rejoins-l-association-de-polyseme-magazine">venez</a>) : </p>
<blockquote><p>Est-ce qu’il vaut mieux ne rien faire et mettre de côté des sujets super importants et des personnes marginalisées, ou faire, consulter des personnes concerné-e-s, publier leurs œuvres, et peut être risquer des maladresses ?</p></blockquote>
<p>J’ai lu pas mal de messages contradictoires à ce sujet. D’un côté, il y a des militant·es qui demandent à ce <strong>que l’on ne s’empare pas des oppressions dont on ne fait pas soi-même l’expérience</strong>, pour ne pas faire d’ombre aux personnes concernées, dont les voix ont déjà du mal à porter.</p>
<p>D’autres militant·es estiment au contraire <strong>que c’est aux personnes détentrices d’un privilège d’éduquer leurs pairs</strong>, afin de soulager la charge mentale des personnes concernées, fatiguées de devoir faire ce travail pédagogique permanent.</p>
<p>J’ai encore du mal à trouver l’équilibre. Amplifier la voix des personnes concernées me semble indispensable, et j’ai l’impression de le faire quand je partage des contenus qu’elles ont créés.</p>
<p>Mais, malgré ma volonté de multiplier les points de vue et les représentations, il y a un paquet d’angles morts dans ce que je choisis de partager. Et valoriser certaines problématiques plutôt que d’autres, c’est déjà les hiérarchiser, même inconsciemment, comme l’a rappelé <a href="https://twitter.com/mechandicap/status/1364543971066859529">Méchandicapé</a>.</p>
<p>Par exemple, ce n’est que l’année dernière que j’ai pris conscience, grâce aux militant·es afro-féministes, que je ne relayais et ne créais que des images représentant des personnes blanches. Des personnes de toutes les morphologies, de tous les genres, mais des personnes blanches.</p>
<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Givre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1340x888.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1040x689.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1040x689.jpg" class="attachment-large size-large" alt="" data-pin-description="Givre #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1040x689.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-768x509.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1536x1017.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-2048x1356.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-280x185.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-610x404.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-921x610.jpg 921w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2021-01_givre3-1340x888.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>
<p>Peut-être qu’être féministe, c’est cela : allumer son humilité comme une lampe torche, pour explorer les phobies et les stéréotypes que l’on a intériorisés, toutes les micro-agressions que l’on inflige à autrui, et tous les emblèmes d’oppression que l’on incarne et que l’on perpétue, souvent inconsciemment, faute de s’être posé assez de questions.</p>
<p>Bien sûr, avoir conscience de mes impensés ne m’empêche pas de prendre la parole à propos des discriminations et des violences que j’ai moi-même subies, et que je subis encore parce que je suis une femme.</p>
<p>Mais dans la mesure où bien d’autres féministes blanches, valides et cisgenres occupent déjà l’espace médiatique, je ne pense pas que ma voix individuelle ait un grand rôle à jouer. </p>
<p>Cependant, à partir du moment où on a une audience, si modeste soit-elle, on a <strong>une responsabilité vis-à-vis des représentations que l’on diffuse</strong>.</p>
<h3 id="trop-de-place" tabindex="-1">Trop de place</h3>
<p>Quoi que je dise, ma voix de personne privilégiée prend déjà trop de place. Étant donné qu’on est déjà sur-sollicité·es en permanence, pourquoi la ramener davantage ?</p>
<p><span lang="en">Black Lives Matter</span> m’a fait comprendre que l’enjeu n’est pas tant de prendre la parole une fois de plus, mais de fermer ma gueule et écouter les autres, comme une éponge.</p>
<p>À moins d’avoir quelque chose d’original ou d’inédit à proposer, il est très probable que d’autres militant·es disent déjà ce que l’on essaie de dire soi-même, mais :</p>
<ul>
<li>de manière plus fine et mieux argumentée ;</li>
<li>en étant plus légitimes pour le faire car étant directement concerné·es ;</li>
<li>a priori auprès d’un plus large public. (Attention : sur ce dernier point, je ne parle pas des journalistes ou sociologues professionnel·les qui ont déjà une audience de fait grâce à la nature même de leur métier, mais de l’audience de militant·es bénévoles très suivi·es.)</li>
</ul>
<p>Même si je bouillonne fort, je ne vois aucun intérêt à réagir non-stop à l’actualité, par exemple.</p>
<p>Car au moment où je prends connaissance de la dernière actu abjecte du moment, elle a déjà été partagée par tous les autres comptes féministes, avec, en prime, un recul et une analyse que je suis quant à moi incapable de fournir en un laps de temps si court, et que je ne suis peut-être pas en mesure de fournir étant donné mes privilèges (?).</p>
<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Boules #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Boules #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_boules-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>
<p>Si je jouais le jeu, et que je passais ma vie à réagir à tout, notamment sur les réseaux sociaux, j’aurais la sensation de contribuer à <strong>confisquer de l’attention</strong> qui pourrait être dirigée vers d’autres contenus, créés par des personnes directement concernées, mais invisibilisées pour cette raison précise.</p>
<p>Dans cette logique, il me semble plus cohérent de retweeter/partager des contenus créés d’autres personnes que soi sur les problématiques qui ne sont pas les nôtres mais qui nous touchent, par solidarité, en particulier si on a une communauté importante.</p>
<p>Mais cela crée beaucoup de <strong>bruit</strong> aussi ; or, on sous-estime la lassitude provoquée par ces publications répétitives, d’autant plus quand tous les comptes féministes se passent le mot. </p>
<p>Alors certes, c’est comme ça qu’on fait bouger certaines lignes : en étant légion. C’est aussi comme ça que fonctionne le « buzz » sur les réseaux sociaux. Mais cela participe à une surcharge informationnelle qu’il est difficile d’assimiler en permanence.</p>
<h3 id="cout-psychique" tabindex="-1">Coût psychique</h3>
<p>Outre ce problème de légitimité, visibiliser ses convictions a aussi <strong>un coût psychique élevé</strong>. Visibiliser qui l’on est et ses valeurs, c’est prendre le risque de s’exposer à des insultes, du harcèlement et des violences.</p>
<p><a href="https://twitter.com/faerieMoonlight" lang="en">Moonlight</a> me disait que cette visibilisation, cet <i lang="en">outing</i>, peut même représenter un danger de mort pour certain·es d’entre nous.</p>
<p>C’est ainsi que le patriarcat intimide et punit les féministes, avec une double peine pour les féministes racisé·es, handicapé·es et/ou LGBTQIA+.</p>
<p>Dans ce contexte, on a toutes les raisons du monde à vouloir <strong>se préserver</strong>. Et en même temps, ce n’est qu’en participant à l’effort de lutte collective qu’il y a une possibilité que la société évolue.</p>
<p>En particulier, « rien sur nous sans nous » implique que l’on s’engage et que l’on crée des contenus nous-mêmes, collectivement.</p>
<p>Mais je me questionne sur la <strong>pression à fournir toujours plus d’efforts</strong>, à sacrifier son temps libre et ses moyens, pour lutter contre des systèmes dont on gère déjà la charge mentale et les violences au quotidien.</p>
<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Une vieille âme dans mon jardin #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Une vieille âme dans mon jardin #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-06_vieille-ame-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>
<p>Militer exige un temps considérable, que l’on a aussi le droit de passer différemment. Quand on milite, on fait déjà souvent ce que l’on peut, à hauteur de ses moyens. </p>
<p>Avoir besoin de recharger ses batteries est légitime. On a le droit de faire des pauses, de se désabonner de comptes militants et de mettre ce bruit constant en sourdine, car cela exige trop d’attention et trop d’énergie vitale.</p>
<h3 id="hierarchisation-engagement" tabindex="-1">Hiérarchisation de l’engagement</h3>
<p>C’est pourquoi les <strong>injonctions à militer</strong> me questionnent, ainsi que ce que je perçois comme une <strong>hiérarchisation de l’engagement</strong>.</p>
<p>Je comprends la nécessité de faire corps, et de penser nos luttes de manière collective. Je comprends aussi que les organisations existantes ont besoin de bénévoles, de dons et d’idées nouvelles.</p>
<p>Mais affirmer que seul l’engagement collectif et public compte, n’est-ce pas une façon de contraindre des gens à s’outer pour « prouver » leur légitimité ?</p>
<p>En parallèle, j’entends souvent dire que militer sur Internet ne serait pas aussi important que le fait de participer à des actions sur le terrain au sein d’un collectif.</p>
<p>Ce type de discours semble créer une hiérarchie entre celleux qui militeraient « de la bonne façon », sur le terrain, dans la rue, et celleux qui brasseraient de l’air sur les réseaux sociaux.</p>
<p>Or, quand je vois toutes les mobilisations qui ont lieu sur le net, j’ai de plus en plus de mal à avaler cet argument.</p>
<p>Plus généralement, la pression que je ressens pour « prouver » ma valeur militante me révulse.</p>
<h3 id="aquarium" tabindex="-1">Aquarium</h3>
<p>« J’aime bien ton blog, mais il est devenu trop militant. »</p>
<p>Voici le nouveau type de retour que l’on commence à me faire. C’est ponctuel pour l’instant, mais il y a un risque que cela devienne monnaie courante, vu ce que je prévois de publier au fil du temps.</p>
<p>Il y a quand même un paradoxe : aux yeux des personnes déjà engagées, je n’en fais sans doute pas assez ; aux yeux des personnes en marge des cercles militants, ou carrément réfractaires au féminisme, j’en fais déjà trop.</p>
<p>Les lecteurices de mon blog ne me doivent rien et peuvent aller et venir à leur guise. Moi en revanche, je me suis engagée à respecter l’attention que les un·es et les autres accordent à mes contenus. Je ne peux donc faire ce que je fais que de la manière la plus honnête possible.</p>
<p>Et l’honnêteté, pour moi, ça commence par <strong>l’honnêteté intellectuelle</strong>. Je ne serais pas honnête si j’occultais totalement la politique sur mon blog perso, alors qu’elle occupe une place importante dans ma vie.</p>
<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Jardins Rocambole (Ille-et-Vilaine) #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1040x1387.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-768x1024.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1152x1536.jpg 1152w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1536x2048.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-280x373.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-610x813.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-458x610.jpg 458w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1340x1787.jpg 1340w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2.jpg 2010w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1040x1387.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1040x1387.jpg" class="attachment-large size-large" alt="" data-pin-description="Jardins Rocambole (Ille-et-Vilaine) #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1040x1387.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-768x1024.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1152x1536.jpg 1152w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1536x2048.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-280x373.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-610x813.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-458x610.jpg 458w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2-1340x1787.jpg 1340w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-08_jardins-rocambole2.jpg 2010w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>
<p>Parfois, je me demande si ce sont vraiment les idées que je partage qui dérangent, ou bien seulement les mots que j’utilise pour les exprimer ?</p>
<p>Car je comprends très bien que la rhétorique militante puisse déplaire : elle semble souvent taillée pour n’être comprise que par d’autres militant·es, façon <a href="https://uninvincibleete.com/2019/07/epuisee/">aquarium</a>.</p>
<p>Quand j’observe autour de moi les personnes les moins politisées sur les questions féministes, elles se raidissent dès que j’utilise des concepts ou des mots issus des études féministes et <span lang="en">queer</span>.</p>
<p>Pour les convaincre, je n’ai pas de solution miracle : j’essaie de m’adapter à chaque personne en me calquant sur le vocabulaire qu’elle utilise par exemple, et surtout je ne m’épuise plus si ça bloque, même quand je suis fasse à quelqu’un pour qui j’ai de l’affection.</p>
<h3 id="creation-vs-curation" tabindex="-1">Création vs. curation</h3>
<p>En parallèle à tous ces questionnements, je sens que la <strong>tension entre création et curation</strong> s’accélère.</p>
<p>J’aimerais m’autoriser à parler davantage de mes propres expériences : ne pas être seulement « cheffe d’orchestre » ou « curatrice » en partageant ce que font les autres, mais m’approprier davantage le rôle de créatrice pour oser raconter ma propre histoire.</p>
<p><a href="https://lia-ve-art.tumblr.com/">Lia</a> a attiré mon attention sur le fait que mes créations personnelles passent après mon travail de recherche et de rédaction pour La Lune Mauve. C’est vrai, et j’ai envie que ça change : je ne veux pas répéter toute ma vie ce que je sais déjà faire. </p>
<p>J’ai besoin de créer quelque chose d’autre, quelque chose de plus grand et de plus intime à la fois. <strong>J’ai besoin d’arrêter de cacher qui je suis par peur d’être rejetée.</strong> Je doute que cette peur disparaisse un jour, alors autant l’accepter et en faire quelque chose ?</p>
<p>Dans <a href="http://coilhouse.net/2011/12/adieu-comrades-a-farewell-from-zoetica/">Adieu, Comrades</a>, Zoetica Ebb écrivait ceci, au moment de lâcher son travail d’éditrice de magazine pour devenir illustratrice à plein temps : </p>
<blockquote lang="en"><p>The need to focus on creating versus curating has been nagging at me (…), first softly and then louder, until it grew into a din which could no longer be ignored.</p></blockquote>
<p>Je traduis : </p>
<blockquote><p>Le besoin de me concentrer sur la création versus la curation me harcèle depuis un certain temps (…), au départ doucement et puis plus fort, jusqu’à ce qu’il mute en un vacarme que je n’ai plus pu ignorer.</p></blockquote>
<p>C’était en 2011, j’étais à l’apogée de mon <a href="https://lalunemauve.fr/liberez-votre-creativite-de-julia-cameron/#artistes-fantomes">artiste-fantômerie</a>, mais ça a touché un truc enfoui très profondément en moi.</p>
<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Petit matin #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Petit matin #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_petit-matin-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>
<p>Jadis, quand j’éditais le <a href="https://lalunemauve.fr/archives/">webzine</a> de La Lune Mauve, plus j’aidais les autres à accoucher de leurs idées, plus j’avais du mal à accoucher des miennes. <strong>Petit à petit, ma créativité s’asséchait à force de devoir me consacrer à ce que créait autrui.</strong> </p>
<p>Je me suis longtemps battue contre la petite voix intérieure qui me soufflait de laisser tomber, et de me reconnecter à ce que je créais, moi. Mais je ne voulais pas l’écouter. Le collectif me semblait plus important et plus noble que mes aspirations personnelles.</p>
<p>En fin de compte, mettre fin à cette expérience a été un gigantesque coup de <span lang="en">boost</span> créatif, toute douloureuse fut la décision sur le moment.</p>
<p><strong>Quand on est artiste, il faut choisir comment on investit son temps.</strong> Le temps libre, c’est la véritable pierre précieuse de notre époque.</p>
<p>Si je continue à passer mon temps à relayer ce que créent et partagent les autres, c’est autant de temps en moins pour mes propres créations.</p>
<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Atlantique #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Atlantique #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-07_atlantique-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>
<h2 id="ateliers-creatifs" tabindex="-1">Des ateliers créatifs féministes auto-gérés ?</h2>
<p>Je pose ça là car je ne vois pas où d’autre, et puis ça prolonge un peu la réflexion sur comment articuler militantisme et création.</p>
<p>Alors voilà : j’ai envie depuis quelques années de <strong>co-organiser des ateliers créatifs, militants et auto-gérés</strong> en présentiel, en petits comités et a priori en non mixité, sans homme cis-het (cisgenre et hétérosexuel).</p>
<p>On pourrait investir un tiers-lieu ou louer un gîte au calme en Bretagne. Le programme serait co-conçu : on pourrait être plusieurs à proposer des ateliers, en fonction de ce que chacun·e sait faire et a envie de partager avec les autres. </p>
<p>Ça pourrait être un mix entre :</p>
<ul>
<li>des <strong>ateliers concrets</strong> où on apprend à fabriquer des trucs, où on (re)découvre une technique, où on lâche nos téléphones et où on sollicite nos cerveaux autrement. Peut-être une occasion de se reconnecter à la nature, de s’intéresser à la teinture végétale, aux fournitures et matériaux écologiques, à la fabrication de papier recyclé, à la gravure sur Tetra Pak, etc. ;</li>
<li>et des <strong>moments d’échanges</strong> et de discussions sur des sujets liés à notre créativité vs. notre charge mentale, la prise de parole et le sentiment de légitimité, l’impact politique et la visibilité de ce que l’on fait, les façons de s’engager plus activement, comment lutter contre nos biais racistes, transphobes, validistes, etc.</li>
</ul>
<p><strong>Si vous êtes concerné·e, est-ce un projet qui vous donnerait envie personnellement de participer ? Si non, pourquoi ?</strong></p>
<figure role="group" class="wp-caption aligncenter wp-caption-large wp-caption-large-full"><img src="" class="attachment-large size-large" alt="" data-pin-description="Coquille #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques.jpg" data-lazy-srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1340x1005.jpg 1340w" data-lazy-sizes="(max-width: 1040px) 100vw, 1040px" data-lazy-src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1040x780.jpg"><noscript><img src="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1040x780.jpg" class="attachment-large size-large" alt="" data-pin-description="Coquille #militantisme #narcissisme" data-pin-media="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques.jpg" srcset="https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1040x780.jpg 1040w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-768x576.jpg 768w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1536x1152.jpg 1536w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-2048x1536.jpg 2048w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-280x210.jpg 280w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-610x458.jpg 610w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-813x610.jpg 813w, https://lalunemauve.fr/site/wp-content/uploads/2021/01/2020-12_st-jacques-1340x1005.jpg 1340w" sizes="(max-width: 1040px) 100vw, 1040px"></noscript></figure>
<p>Je pense qu’il n’y a rien de plus fort que les expériences vécues IRL (<i lang="en">in real life</i>). Tant que tout se passe sur Internet, il y a encore la possibilité de mettre ça de côté dans un coin de sa tête et de siffloter très fort en espérant que d’autres feront le boulot, et que la détresse des autres ne nous atteindra pas trop.</p>
<p><strong>Créer des contenus originaux, et donner envie à autrui de raconter leur propre histoire à l’aide de l’art, c’est pour moi une démarche militante.</strong></p>
<p>C’est un moyen de rendre du pouvoir aux autres, d’encourager des personnes en qui personne ne croit et que personne n’écoute, à cause de leur identité de genre, de leur sexualité, de leurs handicaps, de leur apparence, de leur histoire, de leurs croyances, <i lang="la">ad lib.</i> </p>
<p>Cette articulation de l’art, de l’intime et du politique, c’est ce qui m’intéresse le plus. Je n’en suis qu’aux prémisses, mais c’est un projet qui me tient au corps et que j’ai envie de développer.</p>
<h2>À suivre…</h2>
<p>Ce billet étant très long, j’ai décidé, exceptionnellement, de le découper en 3. Je vous donne rendez-vous très bientôt pour la dernière partie.</p>
<p class="llm-single_signature vcard author"><svg role="img" aria-label="Marie" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 133 168"><title>Marie</title><path d="M42,50.9c-1.6,3.7-3.1,7.3-4.9,10.8a19.5,19.5,0,0,1-3.2,4.5c-2.3,2.5-5.5,2.3-7.7-.5s-2.8-5.9-3.2-9.2c-1-8.5-1.7-17-2.6-25.5a3.3,3.3,0,0,0-.5-1.8,8,8,0,0,0-.8,1.6,110.3,110.3,0,0,0-6.3,24.5c-2,14.2-3.7,28.5-5.3,42.8-1.2,11.6-2.2,23.3-3.1,35.1a52.3,52.3,0,0,0,.4,7.9c.1,2-.3,2.8-1.9,2.8S1,143.4.9,142c-.6-7.5.2-14.9.9-22.4C2.9,108.4,4,97.3,5.3,86.1c.9-8.4,1.8-16.8,3.1-25.2,1.8-11.1,3.7-22.2,8-32.7.9-2.2,2-4.3,3.1-6.4.3-.5,1.3-1,1.7-.8s1.9,1,2.1,1.7a35.4,35.4,0,0,1,.7,5.8c.9,9.3,1.7,18.6,2.7,27.9a24,24,0,0,0,1.9,6.3c.8,2,1.7,2.2,3,.4s3.8-5.4,4.8-8.5,1.9-8.7,2.8-13.1a14.4,14.4,0,0,1,.5-3.1,3,3,0,0,1,1.7-1.8,2.1,2.1,0,0,1,2.4,1.8c.4,2.4.9,4.7,1.3,7.1,1.2,7.3,2.3,14.7,3.6,22,.9,4.5,1.9,8.9,4.2,12.8a8,8,0,0,0,1.5,2.1c.4.4,1.3.9,1.8.7a3.1,3.1,0,0,0,1.1-1.8,86.1,86.1,0,0,1,2.6-20.2,106.2,106.2,0,0,1,4-10.7c.4-1,1.2-2,2.3-1.4a4.4,4.4,0,0,1,2,2.5,32.5,32.5,0,0,1,.1,5.4h.5c.1-.8.3-1.7.4-2.5s.3-2.4,2-2.4A2.7,2.7,0,0,1,73.3,55c-.1,3.3-.4,6.6-.2,9.9S73.8,73,74.2,77a6.3,6.3,0,0,0,.7,2.1c.6-1,1.1-1.6,1.5-2.4a24.1,24.1,0,0,0,2.3-10.6c.1-3.6.2-7.3.6-10.9s1.6-3.2,4.1-2.3c5.9,2.4,8.6,6.8,8.9,13.1a50.7,50.7,0,0,0,.9,7.6,10.4,10.4,0,0,0,3.5-4.9c1.6-4.6,3-9.2,4.4-13.9.4-1.1.7-1.9,2-1.6s2.1.9,2,2.4a114.5,114.5,0,0,0-.5,11.7,27.4,27.4,0,0,0,1.7,7.4c.5,1.7,1.3,1.8,2.8.9s3-2.6,2.7-5.1a29.8,29.8,0,0,1,1.8-15.9,9.7,9.7,0,0,1,1.6-2.8,2.7,2.7,0,0,1,2.2-1,3.2,3.2,0,0,1,1.9,1.9c.9,6.3.5,12.5-2.3,18.3a8.2,8.2,0,0,0-.6,6.5c.8,2.5,2.7,3.6,5.1,2.5a31.7,31.7,0,0,0,9.2-6.6,7.1,7.1,0,0,1,1.5-.8c0,.6.2,1.2,0,1.6-1.7,4.5-5.4,7-9.6,8.8-2.7,1.1-5.2,1.2-7.2-1a27,27,0,0,1-2.7-3.9,35.4,35.4,0,0,1-3.4,1.6c-3,.9-4.5-.3-5.7-2.4a30.1,30.1,0,0,1-2.2-5.5c-.2-.5-.3-1-.5-1.4a77.9,77.9,0,0,1-4.8,6.5,3.4,3.4,0,0,1-6-.9,41.3,41.3,0,0,1-1.4-7c-.4-2.6-.6-5.2-1.2-7.7a5.2,5.2,0,0,0-5-4.3c0,2.4-.1,4.9-.1,7.4.1,5-.2,9.9-2.5,14.5-.5.8-1,1.7-1.6,2.5-1.8,2.5-5.2,2.4-6.4-.4a35.4,35.4,0,0,1-1.8-7.3,29.6,29.6,0,0,1-.3-3.1h-.5a12.7,12.7,0,0,1-.6,1.8,90.3,90.3,0,0,1-5,9.8,9.4,9.4,0,0,1-8.1,4.4,5.3,5.3,0,0,1-4.3-2.4,27.1,27.1,0,0,1-5-11.4c-1.3-6.6-2.5-13.3-3.8-20C42.3,52.1,42.2,51.4,42,50.9Zm22.2,10a36.3,36.3,0,0,0-2.4,12.2A34,34,0,0,0,64.2,60.9Zm52.3-1.5c.1-.7-.6-.8-.7-.2l-1,6.2c0,.4.1,1.1.7.1Z"></path><path d="M71.5,138.3a35.8,35.8,0,0,1-7.1.6c-1.6-.1-3.1-1.2-4.6-2.1a2,2,0,0,1-.4-1.7,2.6,2.6,0,0,1,1.8-.9,2.9,2.9,0,0,1,1.7.6c2.9,1.7,5.5.2,8.1-.9.3-.1.5-1,.5-1.5.4-11.7,3.8-22.4,10.9-31.8a12.5,12.5,0,0,1,10-5.6c3.9,0,6.3,2.4,8,5.4a16,16,0,0,1,1.8,7.2c.3,7.7-4,12.8-9.5,17.2a101,101,0,0,1-16.4,10.8,3,3,0,0,0-1,2.1c.2,5.3.9,10.6,3.3,15.3,3.9,7.7,12.3,12.1,21.6,8.1l1.1-.3c.4,1.5-.6,2-1.5,2.4a17.5,17.5,0,0,1-19.7-3c-4.8-4.4-6.8-10.2-7.9-16.4C71.9,142,71.7,140.1,71.5,138.3Zm3.8-6.9h.8a79.2,79.2,0,0,0,17.2-12c4.7-4.4,6.8-9.6,4.9-16.1-1-3.2-3.6-5.7-7.4-4.4s-6,4-7.8,7.2a52.5,52.5,0,0,0-6.5,17C76,125.8,75.7,128.5,75.3,131.4Z"></path><path d="M105.3,0c1.9.7,3.2,1.2,3.3,3.3.1,4.3.7,8.7,1.1,13a8.4,8.4,0,0,0,.2,1l1.7-.9a18.2,18.2,0,0,1,8.5-2.8,4.8,4.8,0,0,1,3.1.8,2.8,2.8,0,0,1,0,4.6c-2.8,1.9-5.9,2.4-9,3.1l-3.2.5a16.5,16.5,0,0,0,.7,3.2c.9,2.4,2,4.7,2.9,7.1a2.1,2.1,0,0,1-.2,1.9c-.6.6-1.4.5-2.1-.3l-6.8-7.8a31.3,31.3,0,0,0-2.5,2.6,88.7,88.7,0,0,0-5.5,8.1c-.9,1.4-1.2,3.2-1.8,4.8a10.6,10.6,0,0,1-1,1.2c-.4-.4-1.1-.8-1.1-1.1a20.7,20.7,0,0,1,.3-5c.9-3.5,3.4-6.2,5.6-9,1-1.2,2.1-2.4,3.2-3.5s1.1-3.2-.7-4.4l-3.5-2.6a7,7,0,0,1-2.3-4.6,9.3,9.3,0,0,1,.4-2.3c1,.3,2.1.3,2.7.9s2.7,3.2,4.1,4.8.2.5.4.6l1.8.9a4.5,4.5,0,0,0,.5-1.9c-.3-3.9-.7-7.9-1-11.8A33.9,33.9,0,0,1,105.3,0Z"></path><path d="M118.9,121.8c-1.9,0-2.9-1-2.8-2.6a1.8,1.8,0,0,1,1.9-2.1c1.1,0,2.8,1.8,2.7,2.9S120.1,121.9,118.9,121.8Z"></path></svg></p>

+ 279
- 0
cache/2021/a722bf15647dfe923d3c28b2e229098c/index.html View File

@@ -0,0 +1,279 @@
<!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>
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>The Future of Web Software Is HTML-over-WebSockets (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- 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="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- 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>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://alistapart.com/article/the-future-of-web-software-is-html-over-websockets/">

<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick">

<article>
<header>
<h1>The Future of Web Software Is HTML-over-WebSockets</h1>
</header>
<nav>
<p class="center">
<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="https://alistapart.com/article/the-future-of-web-software-is-html-over-websockets/" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>The future of web-based software architectures is already taking form, and this time it’s server-rendered (again). Papa’s got a brand new bag: HTML-over-WebSockets and broadcast everything all the time.</p>

<p>The dual approach of marrying a Single Page App with an API service has left many dev teams mired in endless JSON wrangling and state discrepancy bugs across two layers. This costs dev time, slows release cycles, and saps the bandwidth for innovation.</p>

<p>But a new WebSockets-driven approach is catching web developers’ attention. One that reaffirms the promises of classic server-rendered frameworks: fast prototyping, server-side state management, solid rendering performance, rapid feature development, and straightforward SEO. One that enables multi-user collaboration and reactive, responsive designs <em>without building two separate apps</em>. The end result is a single-repo application that feels to users just as responsive as a client-side all-JavaScript affair, but with straightforward templating and far fewer loading spinners, and no state misalignments, since state only lives in one place. All of this sets us up for a considerably easier (and faster!) development path. </p>

<p>Reclaiming all of that time spent addressing architecture difficulties grants you a pool of surplus hours that you can use to do awesome. Spend your dev budget, and your company’s salary budget, happily building full-stack features yourself, and innovating on things that benefit your company and customers. </p>

<p>And in my opinion, there’s no better app framework for reclaiming tedious development time than Ruby on Rails. Take another look at the underappreciated Stimulus. Beef up the View in your MVC with ViewComponents. Add in the <a href="https://cableready.stimulusreflex.com/">CableReady</a> and <a href="https://docs.stimulusreflex.com/">StimulusReflex</a> libraries for that Reactive Rails (as it has been dubbed) new car smell, and you’re off to the races. But we’ll get back to Rails in a bit…</p>

<h2 id="section2">This all started with web frameworks…<a class="subhead-anchor" href="#section2">#section2</a></h2>

<p>Web frameworks burst onto the scene around 2005 amidst a sea of mostly figure-it-out-for-yourself scripting language libraries glued together and thrown onto hand-maintained Apache servers. This new architecture promised developers a more holistic approach that wrapped up all the fiddly stuff in no-touch conventions, freeing developers to focus on programming ergonomics, code readability, and fast-to-market features. All a developer had to do was learn the framework’s core language, get up to speed on the framework itself and its conventions, and then start churning out sophisticated web apps while their friends were still writing XML configuration files for all those <em>other</em> approaches.</p>

<p>Despite the early criticisms that always plague new approaches, these server-rendered frameworks became tools of choice, especially for fast-moving startups—strapped for resources—that needed an attractive, feature-rich app up <em>yesterday</em>.</p>

<h2 id="section3">But then the <em>JavaScript everything</em> notion took hold…<a class="subhead-anchor" href="#section3">#section3</a></h2>

<p>As the web development world pushed deeper into the 2010s, the tides began to turn, and server-rendered frameworks took something of a backseat to the Single Page Application, wholly built in JavaScript and run entirely on the client’s computer. At many companies, the “server” became relegated to hosting an API data service only, with most of the business logic and all of the HTML rendering happening on the client, courtesy of the big ’ol package of JavaScript that visitors were forced to download when they first hit the site. </p>

<p>This is where things started to get ugly.</p>

<p>Fast-forward to 2020 and the <a href="https://www.nngroup.com/articles/the-need-for-speed/">web isn’t getting any faster</a>, as we were promised it would with SPAs. Shoving megabytes of JavaScript down an iPhone 4’s throat doesn’t make for a great user experience. And if you thought building a professional web app took serious resources, what about building a web app <em>and</em> an API service <em>and</em> a communication layer between them? Do we really believe that every one of our users is going to have a device capable of digesting 100 kB of JSON and rendering a complicated HTML table <em>faster</em> than a server-side app could on even a mid-grade server?</p>

<p>Developing and hosting these JavaScript-forward apps didn’t get any cheaper either. In many cases we’re now doing twice the work, and maybe even paying twice the developers, to achieve the same results we had before with server-side app development.</p>

<p>In 2005, app frameworks blew everyone’s minds with “build a blog app in 15 minutes” videos. Fifteen years <em>later</em>, doing the same thing with an SPA approach can require two codebases, a JSON serialization layer, and dozens of spinners all over the place so we can still claim a 50ms First Contentful Paint. Meanwhile, the user watches some blank gray boxes, hoping for HTML to finally render from all the JSON their browser is requesting and digesting. </p>

<p>How did we get here? This is not my beautiful house! Were we smart in giving up all of that server-rendered <em>developer happiness</em> and doubling down on staff and the time to implement in order to chase the promise of providing our users some fancier user interfaces?</p>

<p>Well. Yes. Sort of.</p>

<p>We’re not building web software for <em>us</em>. We’re building it for <em>them</em>. The users of our software have expectations of how it’s going to work for <em>them</em>. We have to meet them where they are. Our users are no longer excited about full-page refreshes and ugly Rube Goldberg-ian multi-form workflows. The SPA approach was the next logical leap from piles of unorganized spaghetti JavaScript living on the server. The problem, though: it was a 5% improvement, not a 500% improvement. </p>

<h2 id="section4">Is 5% better worth twice the work? What about the developer cost?<a class="subhead-anchor" href="#section4">#section4</a></h2>

<p>Bedazzling the web app certainly makes things <em>fancier</em> from the user’s perspective. Done well, it can make the app feel slicker and more interactive, and it opens up a wealth of new non-native interaction elements. Canonizing those elements as <em>components</em> was the next natural evolution. Gone are the days of thinking through how an entire HTML document could be mutated to give the <em>illusion</em> of the user interacting with an atomic widget on the page—now, that can be implemented directly, and we can think about our UX in terms of component breakdowns. But, alas, the costs begin to bite us almost immediately.</p>

<p>Go ahead, write that slick little rating stars component. Add some cool animations, make the mouseover and click area feel good, give some endorphin-generating feedback when a selection is made. But now what? In a real app, we need to <em>persist</em> that change, right? The database has to be changed to reflect this new state, and the app in front of the user’s eyes needs to reflect that new reality too. </p>

<p>In the old days, we’d give the user a couple star GIFs, each a link that hit the same server endpoint with a different param value. Server-side, we’d save that change to the database, then send back a whole new HTML page for their browser to re-render; maybe we’d even get fancy and use AJAX to do it <em>behind the scenes</em>, obviating the need for the full HTML and render. Let’s say the former costs <em>x</em> in developer time and salary (and we won’t even talk about lost opportunity cost for features rolled out too late for the market). In that case, the fancy AJAX-based approach costs <em>x</em> + <em>n (you know, some “extra JavaScript sprinkles”)</em>, but the cost of lots and lots of <em>n</em> grows as our app becomes more and more of a JavaScript spaghetti sprinkles mess.</p>

<p>Over in the SPA world, we’re now writing JavaScript in the client-side app and using JSX or Handlebars templates to render the component, then code to persist that change to the front-end data store, then a PUT request to the API, where we’re also writing an API endpoint to handle the request, a JSON serializer (probably with its own pseudo-template) to package up our successful response, and then front-end code to ensure we re-render the component (and some branching logic to maybe rollback and re-render the client-side state change if the backend failed on us). This costs a lot more than even <em>x + n </em>in developer time and salary. And if you’ve split your team into “front-end” and “back-end” people, you might as well go ahead and double <em>that</em> cost (both time and money) for many non-trivial components where you need two different people to finish the implementation. Sure, the SPA mitigates some of the ever-growing spaghetti problem, but at what cost for a business racing to be relevant in the market or get something important out to the people who need it?</p>

<p>One of the other arguments we hear in support of the SPA is the reduction in cost of cyber infrastructure. As if pushing that hosting burden onto the client (without their consent, for the most part, but that’s another topic) is somehow saving us on our cloud bills. But that’s ridiculous. For any non-trivial application, you’re still paying for a server to host the API and maybe another for the database, not to mention load balancers, DNS, etc. And here’s the thing: <em>none of that cost even comes close to what a software company pays its developers!</em> Seriously, think about it. I’ve yet to work at any business where our technical infrastructure was anything more than a fraction of our salary overhead. And good developers expect raises. Cloud servers generally just get <em>cheaper</em> over time.</p>

<p>If you want to be efficient with your money—especially as a cash-strapped startup—you don’t need to cheap out on cloud servers; you need to get <em>more features faster out of your existing high-performance team</em>.</p>

<p>In the old, old days, before the web frameworks, you’d pay a developer for six weeks to finally unveil…the log-in page. Cue the sad trombone. Then frameworks made that log-in page an hour of work, total, and people were launching web startups overnight. The trumpets sound! Now, with our SPA approach, we’re back to a bunch of extra work. <em>It’s costing us more money because we’re writing two apps at once</em>. There’s that trombone again…</p>

<p>We’re paying a lot of money for that 5% user experience improvement.</p>

<p>But what if we could take the best client-side JavaScript ideas and libraries from that 5% improvement and reconnect them with the developer ergonomics and salary savings of a single codebase? What if components and organized JavaScript could all live in one rock-solid app framework optimized for server-side rendering? What if there <em>is</em> a path to a 500% jump?</p>

<p>Sound impossible? It’s not. I’ve seen it, like C-beams glittering in the dark near the Tannhäuser Gate. I’ve built that 500% app, in my free time, with my kids running around behind me barking like dogs. Push broadcasts to logged-in users. Instant updates to the client-side DOM in milliseconds. JavaScript-driven 3D animations that interact with real-time chat windows. All in a single codebase, running on the same server hardware I’d use for a “classic” server-rendered app (and maybe I can even scale that hardware down since I’m rendering HTML fragments more often than full-page documents). No separate front-end app. Clean, componentized JavaScript and server-side code, married like peanut butter and jelly. It’s real, I tell you!</p>

<h2 id="section5">Socket to me! (Get it? Get it? Ah, nevermind…)<a class="subhead-anchor" href="#section5">#section5</a></h2>

<p>Finalized in 2011, support for WebSockets in modern browsers ramped up throughout the 2010s and is now fully supported in all modern browsers. With the help of a small bit of client-side JavaScript, you get a <a href="https://en.wikipedia.org/wiki/Duplex_(telecommunications)#FULL-DUPLEX">full-duplex</a> socket connection between browser and server. Data can pass both ways, and can be pushed from either side at any time, no user-initiated request needed.</p>

<p>Like the game industry’s ever-expanding moves into cloud-based gaming, the future of web apps is not going to be about pushing even heavier obligations onto the user/client, but rather the opposite: let the client act as a thin terminal that renders the state of things for the human. WebSockets provide the communication layer, seamless and fast; a direct shot from the server to the human.</p>

<p>But this wasn’t terribly easy for many developers to grok at first. I sure didn’t. And the benefits weren’t exactly clear either. After years (decades, even) of wrapping our heads around the HTTP request cycle, to which all server-handled features must conform, adopting this WebSocket tech layer required a lot of head scratching. As with many clever new technologies or protocols, we needed a higher-level abstraction that provided something really effective for getting a new feature in front of a user, fast.</p>

<h2 id="section6">Enter HTML-over-WebSockets…<a class="subhead-anchor" href="#section6">#section6</a></h2>

<p>Want a hyper-responsive datalist typeahead that is perfectly synced with the database? On every keystroke, send a query down the WebSocket and get back <em>precisely</em> the changed set of <strong>option</strong> tags, nothing more, nothing less.</p>

<p>How about client-side validations? Easy. On every input change, round up the form values and send ’em down the WebSocket. Let your server framework validate and send back changes to the HTML of the form, including any errors that need to be rendered. No need for JSON or complicated error objects.</p>

<p>User presence indicators? Dead simple. Just check who has an active socket connection.</p>

<p>What about multi-user chat? Or document collaboration? In classic frameworks and SPAs, these are the features we put off because of their difficulty and the code acrobatics needed to keep everyone’s states aligned. With HTML-over-the-wire, we’re just pushing tiny bits of HTML based on one user’s changes to <em>every other</em> <em>user</em> currently subscribed to the channel. They’ll see <em>exactly</em> the same thing as if they hit refresh and asked the server for the entire HTML page anew. And you can get those bits to every user in under 30ms.</p>

<p>We’re not throwing away the promise of components either. Where this WebSockets-based approach can be seen as a thick server/thin client, so too can our components. It’s fractal, baby! Make that component <em>do</em> delightful things for the user with smart JavaScript, and then just ask the server for updated HTML, and mutate the DOM. No need for a client-side data store to manage the component’s state since it’ll render itself to look <em>exactly like what the server knows it should look like now</em>. The HTML comes from the server, so no need for JSX or Handlebars or &lt;insert other JavaScript templating library here&gt;. The server is always in control: rendering the initial component’s appearance <em>and</em> updating it in response to any state change, all through the socket. </p>

<p>And there’s nothing saying you have to use those socket channels to send <em>only</em> HTML. Send a tiny bit of text, and have the client do something smart. Send a chat message from one user to every other user, and have their individual clients render that message in whatever app theme they’re currently using. Imagine the possibilities!</p>

<h2 id="section7">But it’s complex/expensive/requires a bunch of new infrastructure, right?<a class="subhead-anchor" href="#section7">#section7</a></h2>

<p>Nope. Prominent open-source web servers support it natively, generally without needing any kind of extra configuration or setup. Many server-side frameworks will automatically ship the JS code to the client for native support in communicating over the socket. In Rails, for example, setting up your app to use WebSockets is as easy as configuring the built-in ActionCable and then deploying as usual on the same hardware you would have used otherwise. Anecdotally, the typical single Rails server process seems to be perfectly happy supporting nearly 4,000 active connections. And you can easily swap in the excellent <a href="https://docs.anycable.io">AnyCable</a> to bump that up to around 10,000+ connections per node by not relying on the built-in Ruby WebSocket server. Again, this is on the usual hardware you’d be running your web server on in the first place. You don’t need to set up any extra hardware or increase your cloud infrastructure.</p>

<p>This new approach is quickly appearing as extensions, libraries, or alternative configurations in a variety of languages and web frameworks, from Django’s <a href="https://sockpuppet.argpar.se">Sockpuppet</a> to Phoenix’s <a href="https://dockyard.com/blog/2018/12/12/phoenix-liveview-interactive-real-time-apps-no-need-to-write-javascript">LiveView</a> and beyond. Seriously, go dig around for WebSockets-based libraries for your favorite app framework and then step into a new way of thinking about your app architectures. Build something amazing and marvel at the glorious HTML bits zipping along on the socket, like jet fighters passing in the night. It’s more than a new technical approach; it’s a new mindset, and maybe even a new wellspring of key app features that will drive your startup success.</p>

<p>But I’d be remiss if I didn’t highlight for the reader <em>my </em>contender for Best Framework in a Leading Role. Sure, any app framework can adopt this approach, but for my money, there’s a strong case to be made that the vanguard could be Ruby on Rails. </p>

<h2 id="section8">So we come back around to Rails, 15 years on from its launch…<a class="subhead-anchor" href="#section8">#section8</a></h2>

<p>Set up a Rails 6 app with the latest versions of <a href="https://github.com/turbolinks/turbolinks">Turbolinks</a>, <a href="https://stimulus.hotwire.dev">Stimulus</a>, <a href="https://docs.stimulusreflex.com">StimulusReflex</a>, <a href="https://cableready.stimulusreflex.com">CableReady</a>, and GitHub’s <a href="https://github.com/github/view_component">ViewComponent</a> gem, and you can be working with Reactive Rails in a way that simultaneously feels like building a classic Rails app <em>and </em>like building a modern, componentized SPA, in a single codebase, with all the benefits of server-side rendering, HTML fragment caching, easy SEO, rock-solid security, and the like. You’ll suddenly find your toolbelt bursting with straightforward tools to solve previously daunting challenges.</p>

<p>Oh, and with Turbolinks, you also get wrappers allowing for hybrid native/HTML UIs in the same codebase. Use a quick deploy solution like Heroku or Hatchbox, and one developer can build a responsive, reactive, multi-platform app in their spare time. Just see <a href="https://dev.to/julianrubisch/twitter-clone-with-stimulusreflex-gone-hybrid-native-app-17fm">this Twitter clone</a> if you don’t believe me. </p>

<p>OK, that all sounds exciting, but why Rails specifically? Isn’t it old and boring? You already said any framework can benefit from this new WebSocket, DOM-morphing approach, right? </p>

<p>Sure. But where Rails has always shined is in its ability to make rapid prototyping, well…<em>rapid</em>, and in its deep ecosystem of well-polished gems. Rails also hasn’t stopped pushing the envelope forward, with the latest version 6.1.3 of the framework boasting a ton of cool features. </p>

<p>If you’ve got a small, resource-strapped team, Rails (and Ruby outside of the framework) still serves as a potent force multiplier that lets you punch way above your weight, which probably explains the <a href="https://charliereese.ca/article/top-50-y-combinator-tech-startups">$92 billion in revenue it’s helped drive over the years</a>. With this new approach, there’s a <em>ton</em> more weight behind that punch. While your competitors are fiddling with their JSON serializers and struggling to optimize away all the loading spinners, you’re rolling out a new multi-user collaborative feature every week…or every <em>day</em>. </p>

<p>You win. Your fellow developers win. Your business wins. And, most importantly, your <em>users</em> win.</p>

<p>That’s what Rails promised from the day it was released to the community. That’s why Rails spawned so many imitators in other languages, and why it saw such explosive growth in the startup world for years. And that same old rapid prototyping spirit, married to this new HTML-over-the-wire approach, positions Rails for a powerful resurgence. </p>

<p>Ruby luminary and <a href="https://www.amazon.com/Obie-Fernandez/e/B001IGV0LS">author</a> of <em>The Ruby Way</em>, Obie Fernandez, <a href="https://medium.com/@obie/react-is-dead-long-live-reactive-rails-long-live-stimulusreflex-and-viewcomponent-cd061e2b0fe2">seems to think so</a>.</p>

<p>Heck, even <a href="https://www.youtube.com/watch?v=utxCm3uLhIE">Russ Hanneman thinks this approach with StimulusReflex is the new hotness</a>.</p>

<p>And the good folks over at Basecamp (creators of Rails in the first place), dropped their own take on the concept, <a href="https://hotwire.dev">Hotwire</a>, just in time for the 2020 holidays, so your options for tackling this new and exciting technique continue to expand.</p>

<p>Don’t call it a comeback, because Rails has been here for years. With this new architectural approach, brimming with HTML-over-WebSockets and full-duplex JavaScript interactions, Rails becomes something new, something beautiful, something that demands attention (again). </p>

<p>Reactive Rails, with StimulusReflex and friends, is a must-look for anyone exhausted from toiling with JSON endpoints or JSX, and I’m super excited to see the new crop of apps that it enables.</p>
</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> RSS</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>
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>

+ 223
- 0
cache/2021/a722bf15647dfe923d3c28b2e229098c/index.md View File

@@ -0,0 +1,223 @@
title: The Future of Web Software Is HTML-over-WebSockets
url: https://alistapart.com/article/the-future-of-web-software-is-html-over-websockets/
hash_url: a722bf15647dfe923d3c28b2e229098c

<p>The future of web-based software architectures is already taking form, and this time it’s server-rendered (again). Papa’s got a brand new bag: HTML-over-WebSockets and broadcast everything all the time.</p>

<p>The dual approach of marrying a Single Page App with an API service has left many dev teams mired in endless JSON wrangling and state discrepancy bugs across two layers. This costs dev time, slows release cycles, and saps the bandwidth for innovation.</p>



<p>But a new WebSockets-driven approach is catching web developers’ attention. One that reaffirms the promises of classic server-rendered frameworks: fast prototyping, server-side state management, solid rendering performance, rapid feature development, and straightforward SEO. One that enables multi-user collaboration and reactive, responsive designs <em>without building two separate apps</em>. The end result is a single-repo application that feels to users just as responsive as a client-side all-JavaScript affair, but with straightforward templating and far fewer loading spinners, and no state misalignments, since state only lives in one place. All of this sets us up for a considerably easier (and faster!) development path. </p>



<p>Reclaiming all of that time spent addressing architecture difficulties grants you a pool of surplus hours that you can use to do awesome. Spend your dev budget, and your company’s salary budget, happily building full-stack features yourself, and innovating on things that benefit your company and customers. </p>



<p>And in my opinion, there’s no better app framework for reclaiming tedious development time than Ruby on Rails. Take another look at the underappreciated Stimulus. Beef up the View in your MVC with ViewComponents. Add in the <a href="https://cableready.stimulusreflex.com/">CableReady</a> and <a href="https://docs.stimulusreflex.com/">StimulusReflex</a> libraries for that Reactive Rails (as it has been dubbed) new car smell, and you’re off to the races. But we’ll get back to Rails in a bit…</p>



<h2 id="section2">This all started with web frameworks…<a class="subhead-anchor" href="#section2">#section2</a></h2>



<p>Web frameworks burst onto the scene around 2005 amidst a sea of mostly figure-it-out-for-yourself scripting language libraries glued together and thrown onto hand-maintained Apache servers. This new architecture promised developers a more holistic approach that wrapped up all the fiddly stuff in no-touch conventions, freeing developers to focus on programming ergonomics, code readability, and fast-to-market features. All a developer had to do was learn the framework’s core language, get up to speed on the framework itself and its conventions, and then start churning out sophisticated web apps while their friends were still writing XML configuration files for all those <em>other</em> approaches.</p>



<p>Despite the early criticisms that always plague new approaches, these server-rendered frameworks became tools of choice, especially for fast-moving startups—strapped for resources—that needed an attractive, feature-rich app up <em>yesterday</em>.</p>



<h2 id="section3">But then the <em>JavaScript everything</em> notion took hold…<a class="subhead-anchor" href="#section3">#section3</a></h2>



<p>As the web development world pushed deeper into the 2010s, the tides began to turn, and server-rendered frameworks took something of a backseat to the Single Page Application, wholly built in JavaScript and run entirely on the client’s computer. At many companies, the “server” became relegated to hosting an API data service only, with most of the business logic and all of the HTML rendering happening on the client, courtesy of the big ’ol package of JavaScript that visitors were forced to download when they first hit the site. </p>



<p>This is where things started to get ugly.</p>



<p>Fast-forward to 2020 and the <a href="https://www.nngroup.com/articles/the-need-for-speed/">web isn’t getting any faster</a>, as we were promised it would with SPAs. Shoving megabytes of JavaScript down an iPhone 4’s throat doesn’t make for a great user experience. And if you thought building a professional web app took serious resources, what about building a web app <em>and</em> an API service <em>and</em> a communication layer between them? Do we really believe that every one of our users is going to have a device capable of digesting 100 kB of JSON and rendering a complicated HTML table <em>faster</em> than a server-side app could on even a mid-grade server?</p>



<p>Developing and hosting these JavaScript-forward apps didn’t get any cheaper either. In many cases we’re now doing twice the work, and maybe even paying twice the developers, to achieve the same results we had before with server-side app development.</p>



<p>In 2005, app frameworks blew everyone’s minds with “build a blog app in 15 minutes” videos. Fifteen years <em>later</em>, doing the same thing with an SPA approach can require two codebases, a JSON serialization layer, and dozens of spinners all over the place so we can still claim a 50ms First Contentful Paint. Meanwhile, the user watches some blank gray boxes, hoping for HTML to finally render from all the JSON their browser is requesting and digesting. </p>



<p>How did we get here? This is not my beautiful house! Were we smart in giving up all of that server-rendered <em>developer happiness</em> and doubling down on staff and the time to implement in order to chase the promise of providing our users some fancier user interfaces?</p>



<p>Well. Yes. Sort of.</p>



<p>We’re not building web software for <em>us</em>. We’re building it for <em>them</em>. The users of our software have expectations of how it’s going to work for <em>them</em>. We have to meet them where they are. Our users are no longer excited about full-page refreshes and ugly Rube Goldberg-ian multi-form workflows. The SPA approach was the next logical leap from piles of unorganized spaghetti JavaScript living on the server. The problem, though: it was a 5% improvement, not a 500% improvement. </p>



<h2 id="section4">Is 5% better worth twice the work? What about the developer cost?<a class="subhead-anchor" href="#section4">#section4</a></h2>



<p>Bedazzling the web app certainly makes things <em>fancier</em> from the user’s perspective. Done well, it can make the app feel slicker and more interactive, and it opens up a wealth of new non-native interaction elements. Canonizing those elements as <em>components</em> was the next natural evolution. Gone are the days of thinking through how an entire HTML document could be mutated to give the <em>illusion</em> of the user interacting with an atomic widget on the page—now, that can be implemented directly, and we can think about our UX in terms of component breakdowns. But, alas, the costs begin to bite us almost immediately.</p>



<p>Go ahead, write that slick little rating stars component. Add some cool animations, make the mouseover and click area feel good, give some endorphin-generating feedback when a selection is made. But now what? In a real app, we need to <em>persist</em> that change, right? The database has to be changed to reflect this new state, and the app in front of the user’s eyes needs to reflect that new reality too. </p>



<p>In the old days, we’d give the user a couple star GIFs, each a link that hit the same server endpoint with a different param value. Server-side, we’d save that change to the database, then send back a whole new HTML page for their browser to re-render; maybe we’d even get fancy and use AJAX to do it <em>behind the scenes</em>, obviating the need for the full HTML and render. Let’s say the former costs <em>x</em> in developer time and salary (and we won’t even talk about lost opportunity cost for features rolled out too late for the market). In that case, the fancy AJAX-based approach costs <em>x</em> + <em>n (you know, some “extra JavaScript sprinkles”)</em>, but the cost of lots and lots of <em>n</em> grows as our app becomes more and more of a JavaScript spaghetti sprinkles mess.</p>



<p>Over in the SPA world, we’re now writing JavaScript in the client-side app and using JSX or Handlebars templates to render the component, then code to persist that change to the front-end data store, then a PUT request to the API, where we’re also writing an API endpoint to handle the request, a JSON serializer (probably with its own pseudo-template) to package up our successful response, and then front-end code to ensure we re-render the component (and some branching logic to maybe rollback and re-render the client-side state change if the backend failed on us). This costs a lot more than even <em>x + n </em>in developer time and salary. And if you’ve split your team into “front-end” and “back-end” people, you might as well go ahead and double <em>that</em> cost (both time and money) for many non-trivial components where you need two different people to finish the implementation. Sure, the SPA mitigates some of the ever-growing spaghetti problem, but at what cost for a business racing to be relevant in the market or get something important out to the people who need it?</p>



<p>One of the other arguments we hear in support of the SPA is the reduction in cost of cyber infrastructure. As if pushing that hosting burden onto the client (without their consent, for the most part, but that’s another topic) is somehow saving us on our cloud bills. But that’s ridiculous. For any non-trivial application, you’re still paying for a server to host the API and maybe another for the database, not to mention load balancers, DNS, etc. And here’s the thing: <em>none of that cost even comes close to what a software company pays its developers!</em> Seriously, think about it. I’ve yet to work at any business where our technical infrastructure was anything more than a fraction of our salary overhead. And good developers expect raises. Cloud servers generally just get <em>cheaper</em> over time.</p>



<p>If you want to be efficient with your money—especially as a cash-strapped startup—you don’t need to cheap out on cloud servers; you need to get <em>more features faster out of your existing high-performance team</em>.</p>



<p>In the old, old days, before the web frameworks, you’d pay a developer for six weeks to finally unveil…the log-in page. Cue the sad trombone. Then frameworks made that log-in page an hour of work, total, and people were launching web startups overnight. The trumpets sound! Now, with our SPA approach, we’re back to a bunch of extra work. <em>It’s costing us more money because we’re writing two apps at once</em>. There’s that trombone again…</p>



<p>We’re paying a lot of money for that 5% user experience improvement.</p>



<p>But what if we could take the best client-side JavaScript ideas and libraries from that 5% improvement and reconnect them with the developer ergonomics and salary savings of a single codebase? What if components and organized JavaScript could all live in one rock-solid app framework optimized for server-side rendering? What if there <em>is</em> a path to a 500% jump?</p>



<p>Sound impossible? It’s not. I’ve seen it, like C-beams glittering in the dark near the Tannhäuser Gate. I’ve built that 500% app, in my free time, with my kids running around behind me barking like dogs. Push broadcasts to logged-in users. Instant updates to the client-side DOM in milliseconds. JavaScript-driven 3D animations that interact with real-time chat windows. All in a single codebase, running on the same server hardware I’d use for a “classic” server-rendered app (and maybe I can even scale that hardware down since I’m rendering HTML fragments more often than full-page documents). No separate front-end app. Clean, componentized JavaScript and server-side code, married like peanut butter and jelly. It’s real, I tell you!</p>



<h2 id="section5">Socket to me! (Get it? Get it? Ah, nevermind…)<a class="subhead-anchor" href="#section5">#section5</a></h2>



<p>Finalized in 2011, support for WebSockets in modern browsers ramped up throughout the 2010s and is now fully supported in all modern browsers. With the help of a small bit of client-side JavaScript, you get a <a href="https://en.wikipedia.org/wiki/Duplex_(telecommunications)#FULL-DUPLEX">full-duplex</a> socket connection between browser and server. Data can pass both ways, and can be pushed from either side at any time, no user-initiated request needed.</p>



<p>Like the game industry’s ever-expanding moves into cloud-based gaming, the future of web apps is not going to be about pushing even heavier obligations onto the user/client, but rather the opposite: let the client act as a thin terminal that renders the state of things for the human. WebSockets provide the communication layer, seamless and fast; a direct shot from the server to the human.</p>



<p>But this wasn’t terribly easy for many developers to grok at first. I sure didn’t. And the benefits weren’t exactly clear either. After years (decades, even) of wrapping our heads around the HTTP request cycle, to which all server-handled features must conform, adopting this WebSocket tech layer required a lot of head scratching. As with many clever new technologies or protocols, we needed a higher-level abstraction that provided something really effective for getting a new feature in front of a user, fast.</p>



<h2 id="section6">Enter HTML-over-WebSockets…<a class="subhead-anchor" href="#section6">#section6</a></h2>



<p>Want a hyper-responsive datalist typeahead that is perfectly synced with the database? On every keystroke, send a query down the WebSocket and get back <em>precisely</em> the changed set of <strong>option</strong> tags, nothing more, nothing less.</p>



<p>How about client-side validations? Easy. On every input change, round up the form values and send ’em down the WebSocket. Let your server framework validate and send back changes to the HTML of the form, including any errors that need to be rendered. No need for JSON or complicated error objects.</p>



<p>User presence indicators? Dead simple. Just check who has an active socket connection.</p>



<p>What about multi-user chat? Or document collaboration? In classic frameworks and SPAs, these are the features we put off because of their difficulty and the code acrobatics needed to keep everyone’s states aligned. With HTML-over-the-wire, we’re just pushing tiny bits of HTML based on one user’s changes to <em>every other</em> <em>user</em> currently subscribed to the channel. They’ll see <em>exactly</em> the same thing as if they hit refresh and asked the server for the entire HTML page anew. And you can get those bits to every user in under 30ms.</p>



<p>We’re not throwing away the promise of components either. Where this WebSockets-based approach can be seen as a thick server/thin client, so too can our components. It’s fractal, baby! Make that component <em>do</em> delightful things for the user with smart JavaScript, and then just ask the server for updated HTML, and mutate the DOM. No need for a client-side data store to manage the component’s state since it’ll render itself to look <em>exactly like what the server knows it should look like now</em>. The HTML comes from the server, so no need for JSX or Handlebars or &lt;insert other JavaScript templating library here&gt;. The server is always in control: rendering the initial component’s appearance <em>and</em> updating it in response to any state change, all through the socket. </p>



<p>And there’s nothing saying you have to use those socket channels to send <em>only</em> HTML. Send a tiny bit of text, and have the client do something smart. Send a chat message from one user to every other user, and have their individual clients render that message in whatever app theme they’re currently using. Imagine the possibilities!</p>



<h2 id="section7">But it’s complex/expensive/requires a bunch of new infrastructure, right?<a class="subhead-anchor" href="#section7">#section7</a></h2>



<p>Nope. Prominent open-source web servers support it natively, generally without needing any kind of extra configuration or setup. Many server-side frameworks will automatically ship the JS code to the client for native support in communicating over the socket. In Rails, for example, setting up your app to use WebSockets is as easy as configuring the built-in ActionCable and then deploying as usual on the same hardware you would have used otherwise. Anecdotally, the typical single Rails server process seems to be perfectly happy supporting nearly 4,000 active connections. And you can easily swap in the excellent <a href="https://docs.anycable.io">AnyCable</a> to bump that up to around 10,000+ connections per node by not relying on the built-in Ruby WebSocket server. Again, this is on the usual hardware you’d be running your web server on in the first place. You don’t need to set up any extra hardware or increase your cloud infrastructure.</p>



<p>This new approach is quickly appearing as extensions, libraries, or alternative configurations in a variety of languages and web frameworks, from Django’s <a href="https://sockpuppet.argpar.se">Sockpuppet</a> to Phoenix’s <a href="https://dockyard.com/blog/2018/12/12/phoenix-liveview-interactive-real-time-apps-no-need-to-write-javascript">LiveView</a> and beyond. Seriously, go dig around for WebSockets-based libraries for your favorite app framework and then step into a new way of thinking about your app architectures. Build something amazing and marvel at the glorious HTML bits zipping along on the socket, like jet fighters passing in the night. It’s more than a new technical approach; it’s a new mindset, and maybe even a new wellspring of key app features that will drive your startup success.</p>



<p>But I’d be remiss if I didn’t highlight for the reader <em>my </em>contender for Best Framework in a Leading Role. Sure, any app framework can adopt this approach, but for my money, there’s a strong case to be made that the vanguard could be Ruby on Rails. </p>



<h2 id="section8">So we come back around to Rails, 15 years on from its launch…<a class="subhead-anchor" href="#section8">#section8</a></h2>



<p>Set up a Rails 6 app with the latest versions of <a href="https://github.com/turbolinks/turbolinks">Turbolinks</a>, <a href="https://stimulus.hotwire.dev">Stimulus</a>, <a href="https://docs.stimulusreflex.com">StimulusReflex</a>, <a href="https://cableready.stimulusreflex.com">CableReady</a>, and GitHub’s <a href="https://github.com/github/view_component">ViewComponent</a> gem, and you can be working with Reactive Rails in a way that simultaneously feels like building a classic Rails app <em>and </em>like building a modern, componentized SPA, in a single codebase, with all the benefits of server-side rendering, HTML fragment caching, easy SEO, rock-solid security, and the like. You’ll suddenly find your toolbelt bursting with straightforward tools to solve previously daunting challenges.</p>



<p>Oh, and with Turbolinks, you also get wrappers allowing for hybrid native/HTML UIs in the same codebase. Use a quick deploy solution like Heroku or Hatchbox, and one developer can build a responsive, reactive, multi-platform app in their spare time. Just see <a href="https://dev.to/julianrubisch/twitter-clone-with-stimulusreflex-gone-hybrid-native-app-17fm">this Twitter clone</a> if you don’t believe me. </p>



<p>OK, that all sounds exciting, but why Rails specifically? Isn’t it old and boring? You already said any framework can benefit from this new WebSocket, DOM-morphing approach, right? </p>



<p>Sure. But where Rails has always shined is in its ability to make rapid prototyping, well…<em>rapid</em>, and in its deep ecosystem of well-polished gems. Rails also hasn’t stopped pushing the envelope forward, with the latest version 6.1.3 of the framework boasting a ton of cool features. </p>



<p>If you’ve got a small, resource-strapped team, Rails (and Ruby outside of the framework) still serves as a potent force multiplier that lets you punch way above your weight, which probably explains the <a href="https://charliereese.ca/article/top-50-y-combinator-tech-startups">$92 billion in revenue it’s helped drive over the years</a>. With this new approach, there’s a <em>ton</em> more weight behind that punch. While your competitors are fiddling with their JSON serializers and struggling to optimize away all the loading spinners, you’re rolling out a new multi-user collaborative feature every week…or every <em>day</em>. </p>



<p>You win. Your fellow developers win. Your business wins. And, most importantly, your <em>users</em> win.</p>



<p>That’s what Rails promised from the day it was released to the community. That’s why Rails spawned so many imitators in other languages, and why it saw such explosive growth in the startup world for years. And that same old rapid prototyping spirit, married to this new HTML-over-the-wire approach, positions Rails for a powerful resurgence. </p>



<p>Ruby luminary and <a href="https://www.amazon.com/Obie-Fernandez/e/B001IGV0LS">author</a> of <em>The Ruby Way</em>, Obie Fernandez, <a href="https://medium.com/@obie/react-is-dead-long-live-reactive-rails-long-live-stimulusreflex-and-viewcomponent-cd061e2b0fe2">seems to think so</a>.</p>



<p>Heck, even <a href="https://www.youtube.com/watch?v=utxCm3uLhIE">Russ Hanneman thinks this approach with StimulusReflex is the new hotness</a>.</p>



<p>And the good folks over at Basecamp (creators of Rails in the first place), dropped their own take on the concept, <a href="https://hotwire.dev">Hotwire</a>, just in time for the 2020 holidays, so your options for tackling this new and exciting technique continue to expand.</p>



<p>Don’t call it a comeback, because Rails has been here for years. With this new architectural approach, brimming with HTML-over-WebSockets and full-duplex JavaScript interactions, Rails becomes something new, something beautiful, something that demands attention (again). </p>



<p>Reactive Rails, with StimulusReflex and friends, is a must-look for anyone exhausted from toiling with JSON endpoints or JSX, and I’m super excited to see the new crop of apps that it enables.</p>

+ 385
- 0
cache/2021/cbd2101777421fa7549472859210a69c/index.html View File

@@ -0,0 +1,385 @@
<!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>
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>HTTPWTF (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- 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="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- 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>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="https://httptoolkit.tech/blog/http-wtf/">

<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick">

<article>
<header>
<h1>HTTPWTF</h1>
</header>
<nav>
<p class="center">
<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="https://httptoolkit.tech/blog/http-wtf/" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p>HTTP is fundamental to modern development, from frontend to backend to mobile. But like any widespread mature standard, it's got some funky skeletons in the closet.</p>

<p>Some of these skeletons are little-known but genuinely useful features, some of them are legacy oddities relied on by billions of connections daily, and some of them really shouldn't exist at all. Let's look behind the curtain:</p>

<h2 id="no-cache-means-do-cache"><a href="#no-cache-means-do-cache" aria-label="no cache means do cache permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>No-cache means "do cache"</h2>

<p>Caching has never been easy, but HTTP cache headers can be particularly confusing. The worst examples of this are <code class="language-text">no-cache</code> and <code class="language-text">private</code>. What does the below response header do?</p>

<div class="gatsby-highlight" data-language="text">
<pre class="language-text"><code class="language-text">Cache-Control: private, no-cache</code></pre>
</div>

<p>It looks like this means "don't store this response anywhere", right?</p>

<p><em>Hahaha</em> no.</p>

<p>In reality, this means "please store this response in all browser caches, but revalidate it when using it". In fact, this makes responses <em>more</em> cacheable, because this applies even to responses that wouldn't normally be cacheable by default.</p>

<p>Specifically, <code class="language-text">no-cache</code> means that your content is explicitly cacheable, but whenever a browser or CDN wants to use it, they should send a request using <code class="language-text">If-Match</code> or <code class="language-text">If-Modified-Since</code> to ask the server whether the cache is still up to date first. Meanwhile <code class="language-text">private</code> means that this content is cacheable, but only in end-client browsers, not CDNs or proxies.</p>

<p>If you were trying to disable caching because the response contains security or privacy sensitive data that shouldn't be stored elsewhere, you're now in big trouble. In reality, you probably wanted <code class="language-text">no-store</code>.</p>

<p>If you send a response including a <code class="language-text">Cache-Control: no-store</code> header, nobody will ever cache the response, and it'll come fresh from the server every time. The only edge case is if you send that when a client already has a cached response, which this won't remove. If you want to do that and clear existing caches too, add <code class="language-text">max-age=0</code>.</p>

<p>Twitter notably <a href="https://hacks.mozilla.org/2020/04/twitter-direct-message-caching-and-firefox/">hit this issue</a>. They used <code class="language-text">Pragma: no-cache</code> (a legacy version of the same header) when they should have used <code class="language-text">Cache-Control: no-store</code>, and accidentally persisted every user's private direct messages in their browser caches. That's not a big problem on your own computer, but if you share a computer or you use Twitter on a public computer somewhere, you've now left all your private messages conveniently unencrypted &amp; readable on the hard drive. Oops.</p>

<h2 id="http-trailers"><a href="#http-trailers" aria-label="http trailers permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>HTTP Trailers</h2>

<p>You're probably aware of HTTP headers. An HTTP message starts with a first line that contains the method &amp; URL (for requests) or status code &amp; message (for responses) and then it has a series of key/value pairs for metadata, called headers, and then it has a body.</p>

<p>Did you know you can also send trailers, to append metadata <em>after</em> a message body?</p>

<p>These are not widely used, but they're fully standardized and in theory everything should support them, or at least ignore them. They can be useful if you have metadata that isn't easily available initially, and you don't want need to wait for it before you send the body.</p>

<p>They are used in some API protocols like gRPC, and they're primarily valuable for metadata about the overall response itself, for example you can use trailers to <a href="https://www.fastly.com/blog/supercharging-server-timing-http-trailers">include Server-Timing metadata</a> to give the client performance metrics about server processing during a request, appended after the response is fully completed. They're especially useful for long responses, e.g. to include final status metadata after a long-running HTTP stream.</p>

<p>It's still rare that you'll need this, but it's pretty cool that it works when you do. There's a few requirements:</p>

<ul>
<li>For server response trailers, the client must advertise support for this, with a <code class="language-text">TE: trailers</code> header on the initial request.</li>
<li>The initial headers should specify the trailer fields that will be used later, with <code class="language-text">Trailer: &lt;field names&gt;</code>.</li>
<li>Some headers are never allowed as trailers, including <code class="language-text">Content-Length</code>, <code class="language-text">Cache-Control</code>, <code class="language-text">Authorization</code>, <code class="language-text">Host</code> and similar standard headers, which are often required initially to parse, authenticate or route requests.</li>
</ul>

<p>To send trailers in HTTP/1.1, you'll also need to use chunked encoding. HTTP/2 meanwhile uses separate frames for the body &amp; headers, so this isn't necessary.</p>

<p>A full HTTP/1.1 response with trailers might look like this:</p>

<div class="gatsby-highlight" data-language="text">
<pre class="language-text"><code class="language-text">HTTP/1.1 200 OK
Transfer-Encoding: chunked
Trailer: My-Trailer-Field

[...chunked response body...]

My-Trailer-Field: some-extra-metadata</code></pre>
</div>

<h2 id="http-1xx-codes"><a href="#http-1xx-codes" aria-label="http 1xx codes permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>HTTP 1XX codes</h2>

<p>Did you know that an HTTP request can receive multiple response status codes? A server can send an unlimited number of 1XX codes before a final status (200, 404, or whatever it may be). These act as interim responses, and can all include their own independent headers.</p>

<p>There's a few different 1XX codes available: 100, 101, 102, and 103. They're not widely used, but in some niche use cases they have some cool powers:</p>

<h3 id="http-100"><a href="#http-100" aria-label="http 100 permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>HTTP 100</h3>

<p>HTTP 100 is a response from a server that the request is ok <em>so far</em>, and the client should keep going.</p>

<p>Most of the time, this is a no-op. If you've started sending a request, you were probably going to keep going anyway, although it's always nice to have the server's support &amp; encouragement.</p>

<p>This becomes useful though if you send a request including a <code class="language-text">Expect: 100-continue</code> header. That header tells the server you expect a 100 response, and you're not going to send the full request body until you receive it.</p>

<p>Sending <code class="language-text">Expect: 100-continue</code> allows the server to decide if it wants to receive the whole body, which might take a lot of time/bandwidth. If the URL &amp; headers are enough for it to already send a response (e.g. to reject a file upload) this is a quick and efficient way to do that. If the server does want to receive the full body, it sends an interim 100 response, the client continues, and then the server handles the complete request as normal when it's done.</p>

<h3 id="http-101"><a href="#http-101" aria-label="http 101 permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>HTTP 101</h3>

<p>HTTP 101 is used to switch protocols. It says "I've sent you a URL and headers, and now I want to do something <em>completely different</em> with this connection". Not just a different request, but different protocol entirely.</p>

<p>The main use case is to set up a websocket. To do so, the client sends a request including these two headers:</p>

<div class="gatsby-highlight" data-language="text">
<pre class="language-text"><code class="language-text">Connection: upgrade
Upgrade: websocket</code></pre>
</div>

<p>Then, if the server accepts, it sends a response like:</p>

<div class="gatsby-highlight" data-language="text">
<pre class="language-text"><code class="language-text">HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade</code></pre>
</div>

<p>And then from there they stop speaking HTTP, and start exchanging raw websocket data on this connection instead.</p>

<p>This status is also used to upgrade from HTTP/1.1 to HTTP/2 on the same connection, and you could use it to transform HTTP connections into all sorts of other TCP-based protocols too.</p>

<p>That said, this status <em>isn't</em> supported in HTTP/2, which uses a different mechanism for protocol negotiation and a <a href="https://tools.ietf.org/html/rfc8441">totally different mechanism</a> to set up websockets (which basically isn't supported anywhere - websockets are always HTTP/1.1 right now).</p>

<h3 id="http-102"><a href="#http-102" aria-label="http 102 permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>HTTP 102</h3>

<p>HTTP 102 tells the client that the server is still processing the request, and it'll respond <em>soon</em>. This differs from 100 in that the whole request has now been received, and all the action is now happening on the server side, with the client just waiting.</p>

<p>This isn't much used as far as I can tell, and it seems to mainly exist as a keep-alive, to make sure the client doesn't think the server has simply died. It's in the original HTTP specifications, but it's been removed from many new editions.</p>

<p>Still, it is supported &amp; used in real places in the wild, so it's quite possible to use it in your applications if it fits your needs.</p>

<h3 id="http-103"><a href="#http-103" aria-label="http 103 permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>HTTP 103</h3>

<p>HTTP 103 meanwhile is a new &amp; trendy status intended to partially replace HTTP/2's server push functionality (which is now <a href="https://groups.google.com/a/chromium.org/g/blink-dev/c/K3rYLvmQUBY/m/vOWBKZGoAQAJ?pli=1">being removed from Chrome</a>).</p>

<p>Using HTTP 103, a server can send some headers early, before fully handling the request and sending the rest of the response. This is primarily designed for delivering link headers, like <code class="language-text">Link: &lt;/style.css&gt;; rel=preload; as=style</code>, telling the client about other content that it may want to start loading early (like stylesheets, JS &amp; images, for web page requests) in parallel with the full response.</p>

<p>When the server receives a request that takes a little processing, it often can't fully send the response headers until that processing completes. HTTP 103 allows the server to immediately nudge the client to download other content in parallel, without waiting for the requested resource data to be ready.</p>

<h2 id="referer"><a href="#referer" aria-label="referer permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Referer</h2>

<p>The HTTP Referer header tells the server which page you came from previously, or which URL triggered a resource load. This has some privacy challenges, but it's stuck around, and it's sent in most requests made as you browse the internet.</p>

<p>Notably, it's spelled wrong. This was added in the very early days of the web, and the unix spell checker at the time didn't recognize either referer or referrer (the correct spelling). By the time anybody noticed, it was in serious use in infrastructure and tools all over the place, so nothing could be changed and we have to live with every browser request having a misspelled header forever.</p>

<p>Not especially important unless you're writing code to read this header yourself, but a great parable for the challenges of network compatibility.</p>

<p>For maximum confusion and damage potential, new privacy/security headers related to this like <code class="language-text">Referrer-Policy</code> <em>do</em> use the correct spelling.</p>

<h2 id="websockets-random-uuid"><a href="#websockets-random-uuid" aria-label="websockets random uuid permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Websocket's 'random' UUID</h2>

<figure>
<img alt="XKCD's getRandom() comic" src="https://imgs.xkcd.com/comics/random_number.png">
<figcaption>There's always <a href="https://xkcd.com/221/">a relevant XKCD</a></figcaption>
</figure>

<p>We talked about how HTTP 101 requests are used to set up websockets earlier. A full request to do so might look like this:</p>

<div class="gatsby-highlight" data-language="text">
<pre class="language-text"><code class="language-text">GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com</code></pre>
</div>

<p>with a response that starts the websocket connection like this:</p>

<div class="gatsby-highlight" data-language="text">
<pre class="language-text"><code class="language-text">HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat</code></pre>
</div>

<p>The <code class="language-text">Sec-WebSocket-Accept</code> key here is interesting. This is designed to stop caching proxies accidentally reusing websocket responses that they don't understand, by requiring the response to include a header that matches the client header. Specifically:</p>

<ul>
<li>The server receives a base64 websocket key from the client</li>
<li>The server appends the UUID <code class="language-text">258EAFA5-E914-47DA-95CA-C5AB0DC85B11</code> to the base64 string</li>
<li>The server hashes the resulting string, encodes the hash in base64, and sends that back</li>
</ul>

<p>This is deeply weird. A single fixed random UUID that's used in the setup of every single websocket forever? Appending strings to base64 strings without decoding, and then base64-ing the result again too?</p>

<p>The idea is that this logic isn't something that could be happen by accident, or something that could ever be used elsewhere, to guarantee that both parties are intentionally starting a websocket connection. This confirms that the server or proxy isn't used cached data without understanding it, and the client hasn't been tricked into opening a websocket connection that it doesn't understand.</p>

<p>This totally works, it's widely used and quick &amp; easy to implement, which is all great, but it's wild that every websocket connection in the world relies on one magic UUID.</p>

<h2 id="websockets--cors"><a href="#websockets--cors" aria-label="websockets cors permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Websockets &amp; CORS</h2>

<p>While we're talking about websockets: did you know that websockets effectively ignore all the CORS and single-origin policy restrictions that would normally apply to HTTP requests?</p>

<p>CORS ensures that JavaScript running on a.com can't read data from b.com unless the latter explicitly opts into that in its response headers.</p>

<p>This is important for lots of reasons, notably including network-local servers (a public web page shouldn't be able to talk to your router) and browser state (requests from one domain shouldn't be able to use cookies from another).</p>

<p>Unfortunately though, websockets ignore CORS entirely, assuming instead that all websocket servers are modern &amp; sensible enough to correctly check the <code class="language-text">Origin</code> header for themselves. Many servers do not, and most developers I've mentioned this to weren't aware of it.</p>

<p>This opens a whole world of fun vulnerabilities, nicely summarized in <a href="https://christian-schneider.net/CrossSiteWebSocketHijacking.html">this article</a>.</p>

<p>In short: if you have a websocket API, check the <code class="language-text">Origin</code> header and/or use CSRF tokens before trusting any incoming connections.</p>

<p>Once upon a time (1982) <a href="https://tools.ietf.org/html/rfc822#section-4.7.4">an RFC</a> suggested that using an <code class="language-text">X-</code> prefix for message headers was a good way to differentiate custom extensions from standardized names.</p>

<p>At the time this was relevant to email metadata, but this was later popularized for usage in HTTP headers too.</p>

<p>This is still a common pattern, and if you look at HTTP requests as you browse the web you'll see quite a few of these:</p>

<ul>
<li><code class="language-text">X-Shenanigans: none</code> - this appears on every response from Twilio's API. I have no idea why, but it is comforting to know there's <em>definitely</em> no shenanigans this time round.</li>
<li><code class="language-text">X-Clacks-Overhead: GNU Terry Pratchett</code> - a <a href="https://xclacksoverhead.org/home/about">tribute</a> to Terry Pratchett, based on the message protocols within his own books.</li>
<li><code class="language-text">X-Requested-With: XMLHttpRequest</code> - appended by various JS frameworks including jQuery, to clearly differentiate AJAX requests from resource requests (which can't include custom headers like this).</li>
<li><code class="language-text">X-Recruiting: &lt;cheesy pitch to get you to apply for a job&gt;</code> - quite a few companies add these as a quick way to try and hire the kind of people who read HTTP headers for fun.</li>
<li><code class="language-text">X-Powered-By: &lt;framework&gt;</code> - used to advertise the framework or technology that the server is using (usually a bad idea).</li>
<li><code class="language-text">X-Http-Method-Override</code> - used to set a method that couldn't be set as the real method of the request for some reason, usually a client or networking limitation. Mostly a bad idea nowadays, but still popular &amp; supported by quite a few frameworks.</li>
<li><code class="language-text">X-Forwarded-For: &lt;ip&gt;</code> - A defacto standard used by many proxies &amp; load balancers to include the original requester's IP in upstream requests.</li>
</ul>

<p>Each of these is weird and wonderful in its own way, but the pattern in general is mostly a bad idea, and a new (2011) <a href="https://tools.ietf.org/html/draft-saintandre-xdash-00">RFC</a> now formally discourages its use.</p>

<p>The problem is that many non-standard headers eventually do become standard. When that happens, if you used an <code class="language-text">X-</code> prefix, now you either have to change the name (breaking all existing implementations) or standardize the <code class="language-text">X-</code> prefix (defeating the point of the prefix entirely, and adding annoying noise to the name forever).</p>

<p>This is frustrating, and it's broken some real standards:</p>

<ul>
<li>Almost all web forms on the internet submit data with an unnecessarily confusing &amp; long-winded <code class="language-text">Content-Type: application/x-www-form-url-encoded</code> header.</li>
<li>In the <a href="https://tools.ietf.org/html/rfc2068#section-3.5">1997 RFC for HTTP</a> where it defines the parsing rules for <code class="language-text">content-encoding</code>, it requires all implementations to treat <code class="language-text">x-gzip</code> and <code class="language-text">x-compress</code> as equivalent to <code class="language-text">gzip</code> and <code class="language-text">compress</code> respectively.</li>
<li>The <a href="https://tools.ietf.org/html/rfc7034">standardized</a> header for configuring web page framing is now forever <code class="language-text">X-Frame-Options</code>, not just <code class="language-text">Frame-Options</code></li>
<li>Similarly, we have <code class="language-text">X-Content-Type-Options</code>, <code class="language-text">X-DNS-Prefetch-Control</code>, <code class="language-text">X-XSS-Protection</code>, and various <code class="language-text">X-Forwarded-*</code> CDN/proxy headers, all of which are widely implemented and have become either formally or defacto standard headers in widespread use.</li>
</ul>

<p>If you want to use a custom header, just use a custom header name that's not standardized by anybody else. If you really want to avoid collisions, consider namespacing it, but you're usually pretty safe if there's no standard header that appears after a 30 second google.</p>

<p><hr>
<p>Standardization is <em>hard</em>, and HTTP is full of weird corners and odd details when you look closely. Let me know what you think on <a href="https://twitter.com/pimterry">Twitter</a>.</p>
<p>Interested in inspecting &amp; rewriting HTTP for yourself? <strong><a href="https://httptoolkit.tech">Try out HTTP Toolkit</a></strong>.</p></p>
</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> RSS</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>
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>

+ 143
- 0
cache/2021/cbd2101777421fa7549472859210a69c/index.md View File

@@ -0,0 +1,143 @@
title: HTTPWTF
url: https://httptoolkit.tech/blog/http-wtf/
hash_url: cbd2101777421fa7549472859210a69c

<p>HTTP is fundamental to modern development, from frontend to backend to mobile. But like any widespread mature standard, it's got some funky skeletons in the closet.</p>
<p>Some of these skeletons are little-known but genuinely useful features, some of them are legacy oddities relied on by billions of connections daily, and some of them really shouldn't exist at all. Let's look behind the curtain:</p>
<h2 id="no-cache-means-do-cache"><a href="#no-cache-means-do-cache" aria-label="no cache means do cache permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>No-cache means "do cache"</h2>
<p>Caching has never been easy, but HTTP cache headers can be particularly confusing. The worst examples of this are <code class="language-text">no-cache</code> and <code class="language-text">private</code>. What does the below response header do?</p>
<div class="gatsby-highlight" data-language="text">
<pre class="language-text"><code class="language-text">Cache-Control: private, no-cache</code></pre>
</div>
<p>It looks like this means "don't store this response anywhere", right?</p>
<p><em>Hahaha</em> no.</p>
<p>In reality, this means "please store this response in all browser caches, but revalidate it when using it". In fact, this makes responses <em>more</em> cacheable, because this applies even to responses that wouldn't normally be cacheable by default.</p>
<p>Specifically, <code class="language-text">no-cache</code> means that your content is explicitly cacheable, but whenever a browser or CDN wants to use it, they should send a request using <code class="language-text">If-Match</code> or <code class="language-text">If-Modified-Since</code> to ask the server whether the cache is still up to date first. Meanwhile <code class="language-text">private</code> means that this content is cacheable, but only in end-client browsers, not CDNs or proxies.</p>
<p>If you were trying to disable caching because the response contains security or privacy sensitive data that shouldn't be stored elsewhere, you're now in big trouble. In reality, you probably wanted <code class="language-text">no-store</code>.</p>
<p>If you send a response including a <code class="language-text">Cache-Control: no-store</code> header, nobody will ever cache the response, and it'll come fresh from the server every time. The only edge case is if you send that when a client already has a cached response, which this won't remove. If you want to do that and clear existing caches too, add <code class="language-text">max-age=0</code>.</p>
<p>Twitter notably <a href="https://hacks.mozilla.org/2020/04/twitter-direct-message-caching-and-firefox/">hit this issue</a>. They used <code class="language-text">Pragma: no-cache</code> (a legacy version of the same header) when they should have used <code class="language-text">Cache-Control: no-store</code>, and accidentally persisted every user's private direct messages in their browser caches. That's not a big problem on your own computer, but if you share a computer or you use Twitter on a public computer somewhere, you've now left all your private messages conveniently unencrypted &amp; readable on the hard drive. Oops.</p>
<h2 id="http-trailers"><a href="#http-trailers" aria-label="http trailers permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>HTTP Trailers</h2>
<p>You're probably aware of HTTP headers. An HTTP message starts with a first line that contains the method &amp; URL (for requests) or status code &amp; message (for responses) and then it has a series of key/value pairs for metadata, called headers, and then it has a body.</p>
<p>Did you know you can also send trailers, to append metadata <em>after</em> a message body?</p>
<p>These are not widely used, but they're fully standardized and in theory everything should support them, or at least ignore them. They can be useful if you have metadata that isn't easily available initially, and you don't want need to wait for it before you send the body.</p>
<p>They are used in some API protocols like gRPC, and they're primarily valuable for metadata about the overall response itself, for example you can use trailers to <a href="https://www.fastly.com/blog/supercharging-server-timing-http-trailers">include Server-Timing metadata</a> to give the client performance metrics about server processing during a request, appended after the response is fully completed. They're especially useful for long responses, e.g. to include final status metadata after a long-running HTTP stream.</p>
<p>It's still rare that you'll need this, but it's pretty cool that it works when you do. There's a few requirements:</p>
<ul>
<li>For server response trailers, the client must advertise support for this, with a <code class="language-text">TE: trailers</code> header on the initial request.</li>
<li>The initial headers should specify the trailer fields that will be used later, with <code class="language-text">Trailer: &lt;field names&gt;</code>.</li>
<li>Some headers are never allowed as trailers, including <code class="language-text">Content-Length</code>, <code class="language-text">Cache-Control</code>, <code class="language-text">Authorization</code>, <code class="language-text">Host</code> and similar standard headers, which are often required initially to parse, authenticate or route requests.</li>
</ul>
<p>To send trailers in HTTP/1.1, you'll also need to use chunked encoding. HTTP/2 meanwhile uses separate frames for the body &amp; headers, so this isn't necessary.</p>
<p>A full HTTP/1.1 response with trailers might look like this:</p>
<div class="gatsby-highlight" data-language="text">
<pre class="language-text"><code class="language-text">HTTP/1.1 200 OK
Transfer-Encoding: chunked
Trailer: My-Trailer-Field

[...chunked response body...]

My-Trailer-Field: some-extra-metadata</code></pre>
</div>
<h2 id="http-1xx-codes"><a href="#http-1xx-codes" aria-label="http 1xx codes permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>HTTP 1XX codes</h2>
<p>Did you know that an HTTP request can receive multiple response status codes? A server can send an unlimited number of 1XX codes before a final status (200, 404, or whatever it may be). These act as interim responses, and can all include their own independent headers.</p>
<p>There's a few different 1XX codes available: 100, 101, 102, and 103. They're not widely used, but in some niche use cases they have some cool powers:</p>
<h3 id="http-100"><a href="#http-100" aria-label="http 100 permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>HTTP 100</h3>
<p>HTTP 100 is a response from a server that the request is ok <em>so far</em>, and the client should keep going.</p>
<p>Most of the time, this is a no-op. If you've started sending a request, you were probably going to keep going anyway, although it's always nice to have the server's support &amp; encouragement.</p>
<p>This becomes useful though if you send a request including a <code class="language-text">Expect: 100-continue</code> header. That header tells the server you expect a 100 response, and you're not going to send the full request body until you receive it.</p>
<p>Sending <code class="language-text">Expect: 100-continue</code> allows the server to decide if it wants to receive the whole body, which might take a lot of time/bandwidth. If the URL &amp; headers are enough for it to already send a response (e.g. to reject a file upload) this is a quick and efficient way to do that. If the server does want to receive the full body, it sends an interim 100 response, the client continues, and then the server handles the complete request as normal when it's done.</p>
<h3 id="http-101"><a href="#http-101" aria-label="http 101 permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>HTTP 101</h3>
<p>HTTP 101 is used to switch protocols. It says "I've sent you a URL and headers, and now I want to do something <em>completely different</em> with this connection". Not just a different request, but different protocol entirely.</p>
<p>The main use case is to set up a websocket. To do so, the client sends a request including these two headers:</p>
<div class="gatsby-highlight" data-language="text">
<pre class="language-text"><code class="language-text">Connection: upgrade
Upgrade: websocket</code></pre>
</div>
<p>Then, if the server accepts, it sends a response like:</p>
<div class="gatsby-highlight" data-language="text">
<pre class="language-text"><code class="language-text">HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade</code></pre>
</div>
<p>And then from there they stop speaking HTTP, and start exchanging raw websocket data on this connection instead.</p>
<p>This status is also used to upgrade from HTTP/1.1 to HTTP/2 on the same connection, and you could use it to transform HTTP connections into all sorts of other TCP-based protocols too.</p>
<p>That said, this status <em>isn't</em> supported in HTTP/2, which uses a different mechanism for protocol negotiation and a <a href="https://tools.ietf.org/html/rfc8441">totally different mechanism</a> to set up websockets (which basically isn't supported anywhere - websockets are always HTTP/1.1 right now).</p>
<h3 id="http-102"><a href="#http-102" aria-label="http 102 permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>HTTP 102</h3>
<p>HTTP 102 tells the client that the server is still processing the request, and it'll respond <em>soon</em>. This differs from 100 in that the whole request has now been received, and all the action is now happening on the server side, with the client just waiting.</p>
<p>This isn't much used as far as I can tell, and it seems to mainly exist as a keep-alive, to make sure the client doesn't think the server has simply died. It's in the original HTTP specifications, but it's been removed from many new editions.</p>
<p>Still, it is supported &amp; used in real places in the wild, so it's quite possible to use it in your applications if it fits your needs.</p>
<h3 id="http-103"><a href="#http-103" aria-label="http 103 permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>HTTP 103</h3>
<p>HTTP 103 meanwhile is a new &amp; trendy status intended to partially replace HTTP/2's server push functionality (which is now <a href="https://groups.google.com/a/chromium.org/g/blink-dev/c/K3rYLvmQUBY/m/vOWBKZGoAQAJ?pli=1">being removed from Chrome</a>).</p>
<p>Using HTTP 103, a server can send some headers early, before fully handling the request and sending the rest of the response. This is primarily designed for delivering link headers, like <code class="language-text">Link: &lt;/style.css&gt;; rel=preload; as=style</code>, telling the client about other content that it may want to start loading early (like stylesheets, JS &amp; images, for web page requests) in parallel with the full response.</p>
<p>When the server receives a request that takes a little processing, it often can't fully send the response headers until that processing completes. HTTP 103 allows the server to immediately nudge the client to download other content in parallel, without waiting for the requested resource data to be ready.</p>
<h2 id="referer"><a href="#referer" aria-label="referer permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Referer</h2>
<p>The HTTP Referer header tells the server which page you came from previously, or which URL triggered a resource load. This has some privacy challenges, but it's stuck around, and it's sent in most requests made as you browse the internet.</p>
<p>Notably, it's spelled wrong. This was added in the very early days of the web, and the unix spell checker at the time didn't recognize either referer or referrer (the correct spelling). By the time anybody noticed, it was in serious use in infrastructure and tools all over the place, so nothing could be changed and we have to live with every browser request having a misspelled header forever.</p>
<p>Not especially important unless you're writing code to read this header yourself, but a great parable for the challenges of network compatibility.</p>
<p>For maximum confusion and damage potential, new privacy/security headers related to this like <code class="language-text">Referrer-Policy</code> <em>do</em> use the correct spelling.</p>
<h2 id="websockets-random-uuid"><a href="#websockets-random-uuid" aria-label="websockets random uuid permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Websocket's 'random' UUID</h2>
<figure>
<img alt="XKCD's getRandom() comic" src="https://imgs.xkcd.com/comics/random_number.png">
<figcaption>There's always <a href="https://xkcd.com/221/">a relevant XKCD</a></figcaption>
</figure>
<p>We talked about how HTTP 101 requests are used to set up websockets earlier. A full request to do so might look like this:</p>
<div class="gatsby-highlight" data-language="text">
<pre class="language-text"><code class="language-text">GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com</code></pre>
</div>
<p>with a response that starts the websocket connection like this:</p>
<div class="gatsby-highlight" data-language="text">
<pre class="language-text"><code class="language-text">HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat</code></pre>
</div>
<p>The <code class="language-text">Sec-WebSocket-Accept</code> key here is interesting. This is designed to stop caching proxies accidentally reusing websocket responses that they don't understand, by requiring the response to include a header that matches the client header. Specifically:</p>
<ul>
<li>The server receives a base64 websocket key from the client</li>
<li>The server appends the UUID <code class="language-text">258EAFA5-E914-47DA-95CA-C5AB0DC85B11</code> to the base64 string</li>
<li>The server hashes the resulting string, encodes the hash in base64, and sends that back</li>
</ul>
<p>This is deeply weird. A single fixed random UUID that's used in the setup of every single websocket forever? Appending strings to base64 strings without decoding, and then base64-ing the result again too?</p>
<p>The idea is that this logic isn't something that could be happen by accident, or something that could ever be used elsewhere, to guarantee that both parties are intentionally starting a websocket connection. This confirms that the server or proxy isn't used cached data without understanding it, and the client hasn't been tricked into opening a websocket connection that it doesn't understand.</p>
<p>This totally works, it's widely used and quick &amp; easy to implement, which is all great, but it's wild that every websocket connection in the world relies on one magic UUID.</p>
<h2 id="websockets--cors"><a href="#websockets--cors" aria-label="websockets cors permalink" class="anchor"><svg aria-hidden="true" focusable="false" version="1.1" viewbox="0 0 16 16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Websockets &amp; CORS</h2>
<p>While we're talking about websockets: did you know that websockets effectively ignore all the CORS and single-origin policy restrictions that would normally apply to HTTP requests?</p>
<p>CORS ensures that JavaScript running on a.com can't read data from b.com unless the latter explicitly opts into that in its response headers.</p>
<p>This is important for lots of reasons, notably including network-local servers (a public web page shouldn't be able to talk to your router) and browser state (requests from one domain shouldn't be able to use cookies from another).</p>
<p>Unfortunately though, websockets ignore CORS entirely, assuming instead that all websocket servers are modern &amp; sensible enough to correctly check the <code class="language-text">Origin</code> header for themselves. Many servers do not, and most developers I've mentioned this to weren't aware of it.</p>
<p>This opens a whole world of fun vulnerabilities, nicely summarized in <a href="https://christian-schneider.net/CrossSiteWebSocketHijacking.html">this article</a>.</p>
<p>In short: if you have a websocket API, check the <code class="language-text">Origin</code> header and/or use CSRF tokens before trusting any incoming connections.</p>

<p>Once upon a time (1982) <a href="https://tools.ietf.org/html/rfc822#section-4.7.4">an RFC</a> suggested that using an <code class="language-text">X-</code> prefix for message headers was a good way to differentiate custom extensions from standardized names.</p>
<p>At the time this was relevant to email metadata, but this was later popularized for usage in HTTP headers too.</p>
<p>This is still a common pattern, and if you look at HTTP requests as you browse the web you'll see quite a few of these:</p>
<ul>
<li><code class="language-text">X-Shenanigans: none</code> - this appears on every response from Twilio's API. I have no idea why, but it is comforting to know there's <em>definitely</em> no shenanigans this time round.</li>
<li><code class="language-text">X-Clacks-Overhead: GNU Terry Pratchett</code> - a <a href="https://xclacksoverhead.org/home/about">tribute</a> to Terry Pratchett, based on the message protocols within his own books.</li>
<li><code class="language-text">X-Requested-With: XMLHttpRequest</code> - appended by various JS frameworks including jQuery, to clearly differentiate AJAX requests from resource requests (which can't include custom headers like this).</li>
<li><code class="language-text">X-Recruiting: &lt;cheesy pitch to get you to apply for a job&gt;</code> - quite a few companies add these as a quick way to try and hire the kind of people who read HTTP headers for fun.</li>
<li><code class="language-text">X-Powered-By: &lt;framework&gt;</code> - used to advertise the framework or technology that the server is using (usually a bad idea).</li>
<li><code class="language-text">X-Http-Method-Override</code> - used to set a method that couldn't be set as the real method of the request for some reason, usually a client or networking limitation. Mostly a bad idea nowadays, but still popular &amp; supported by quite a few frameworks.</li>
<li><code class="language-text">X-Forwarded-For: &lt;ip&gt;</code> - A defacto standard used by many proxies &amp; load balancers to include the original requester's IP in upstream requests.</li>
</ul>
<p>Each of these is weird and wonderful in its own way, but the pattern in general is mostly a bad idea, and a new (2011) <a href="https://tools.ietf.org/html/draft-saintandre-xdash-00">RFC</a> now formally discourages its use.</p>
<p>The problem is that many non-standard headers eventually do become standard. When that happens, if you used an <code class="language-text">X-</code> prefix, now you either have to change the name (breaking all existing implementations) or standardize the <code class="language-text">X-</code> prefix (defeating the point of the prefix entirely, and adding annoying noise to the name forever).</p>
<p>This is frustrating, and it's broken some real standards:</p>
<ul>
<li>Almost all web forms on the internet submit data with an unnecessarily confusing &amp; long-winded <code class="language-text">Content-Type: application/x-www-form-url-encoded</code> header.</li>
<li>In the <a href="https://tools.ietf.org/html/rfc2068#section-3.5">1997 RFC for HTTP</a> where it defines the parsing rules for <code class="language-text">content-encoding</code>, it requires all implementations to treat <code class="language-text">x-gzip</code> and <code class="language-text">x-compress</code> as equivalent to <code class="language-text">gzip</code> and <code class="language-text">compress</code> respectively.</li>
<li>The <a href="https://tools.ietf.org/html/rfc7034">standardized</a> header for configuring web page framing is now forever <code class="language-text">X-Frame-Options</code>, not just <code class="language-text">Frame-Options</code></li>
<li>Similarly, we have <code class="language-text">X-Content-Type-Options</code>, <code class="language-text">X-DNS-Prefetch-Control</code>, <code class="language-text">X-XSS-Protection</code>, and various <code class="language-text">X-Forwarded-*</code> CDN/proxy headers, all of which are widely implemented and have become either formally or defacto standard headers in widespread use.</li>
</ul>
<p>If you want to use a custom header, just use a custom header name that's not standardized by anybody else. If you really want to avoid collisions, consider namespacing it, but you're usually pretty safe if there's no standard header that appears after a 30 second google.</p>
<hr>
<p>Standardization is <em>hard</em>, and HTTP is full of weird corners and odd details when you look closely. Let me know what you think on <a href="https://twitter.com/pimterry">Twitter</a>.</p>
<p>Interested in inspecting &amp; rewriting HTTP for yourself? <strong><a href="https://httptoolkit.tech">Try out HTTP Toolkit</a></strong>.</p>

+ 181
- 0
cache/2021/d8320769320273ce23adb40f4792d58b/index.html View File

@@ -0,0 +1,181 @@
<!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>
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>log : vol. 11, num. 1, vendr. 5 mars 2021, réveil (archive) — David Larlet</title>
<meta name="description" content="Publication mise en cache pour en conserver une trace.">
<!-- 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="#f0f0ea">
<meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
<meta name="theme-color" content="#f0f0ea">
<!-- 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>

<meta name="robots" content="noindex, nofollow">
<meta content="origin-when-cross-origin" name="referrer">
<!-- Canonical URL for SEO purposes -->
<link rel="canonical" href="http://shl.huld.re/~f6k/log/vol11/1-reveil.html">

<body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick">

<article>
<header>
<h1>log : vol. 11, num. 1, vendr. 5 mars 2021, réveil</h1>
</header>
<nav>
<p class="center">
<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="http://shl.huld.re/~f6k/log/vol11/1-reveil.html" title="Lien vers le contenu original">Source originale</a>
</p>
</nav>
<hr>
<p><a href="http://shl.huld.re/~f6k/log/vol11/1-reveil.html" title="2021-03-05"><strong>Vendr. 5 mars 2021, réveil</strong></a> (vol. 11, num. 1). — <em>Toulouse, Occitanie, France.</em> — L’hiver, sous cette latitude et au-dessus encore, a toujours un peu le même effet sur moi. Une forme d’hibernation, de relâchement, tant sur le plan psychique que physique. Surtout quand, à l’extérieur, je n’ai rien pour m’y retenir. Il ne fait pourtant pas un froid glacial par ici au point de devoir rester dans une grotte sombre, mais pour une raison que je ne m’explique pas c’est ce qu’il se passe.

</p>

<p>Je lis ces jours-ci avec grand intérêt les aventures de <a href="https://larlet.fr/david/">David Larlet</a> dans « le Grand Nord ». Bon, en réalité je ne sais pas s’il est <em>vraiment</em> dans le « Grand Nord » canadien lors de ses sorties pédestres, mais pour l’européen que je suis, dès qu’il y a trois montagnes, un lac, de la neige partout, et pas un troquet à l’horizon, c’est la représentation que j’en ai — bref.</p>

<p>Pour moi donc qui n’a vraiment aucun attrait pour le froid, c’est avec une certaine admiration que je le suis (virtuellement) dans ses aventures. Autant je n’ai aucun problème à m’imaginer en train de survivre au beau milieu des jungles du Yucatán (alors que je n’y ai aucune expérience) à batailler pour trouver de l’eau tout en évitant autant que possible le territoire des pumas, mais autant je n’arrive pas même à me projeter dans les décors magnifiquement gelés que David parcourt (là non plus je n’y ai évidemment aucune expérience). Car il faut le dire — et bien qu’il se pose beaucoup de question quant à l’intérêt pour lui et au regard de son ressenti personnel de documenter (<a href="https://vimeo.com/516515235/45826baa92">notamment en vidéo</a>) ses sorties —, les images et les sons qu’il rapporte sont tout de même assez stupéfiantes — « fret » certes, mais stupéfiantes.</p>

<p>Le froid canadien n’a rien à voir avec le froid de mon coin de monde, c’est l’évidence, mais je ne suis pourtant pas fâché qu’il s’apaise peu à peu par ici. Je vis quand même dans le sud de la France et, déjà, le soleil commence à revenir de manière plus présente chaque jour un peu plus. Parallèlement mon réveil s’est amorcé. Il est encore difficile, la brume est toujours présente, mais il faut s’activer car l’avenir n’attend pas.</p>

<p>En effet, en décembre dernier j’ai fait une demande d’inscription à Bordeaux à l’entrée d’examen au CRFPA (celui qui permet l’entrée dans une école d’avocat). Grâce aux dieux j’ai été accepté et il me faut donc me préparer au concours écrit de septembre. Cela me laisse de la marge mais, étant inscrit en candidat libre, je ne vais pouvoir compter que sur moi-même. Et vu la charge de travail qui m’attend, il va vraiment falloir que je puisse effectivement me compter dessus (<em>what?</em>) — ce qui, <em>spoiler alert</em>, n’est pas gagné d’avance.</p>

<p>Après donc cette petite trêve hivernale, il est tant de me replonger dans <em>la vie</em>. Je suis déjà très reconnaissant d’avoir la possibilité de prendre de telles trêves, mais cela ne peut évidemment pas durer — l’alternative étant de creuser un trou et de m’y allonger en attendant la mort (oublions cela pour le moment). J’amorce ainsi ce nouveau volume (le onzième !) en m’imaginant que je vais beaucoup y parler de droit dans les mois qui viennent (mais bon, je dis ça, là encore je me connais…).</p>
</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> RSS</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>
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>

+ 15
- 0
cache/2021/d8320769320273ce23adb40f4792d58b/index.md View File

@@ -0,0 +1,15 @@
title: log : vol. 11, num. 1, vendr. 5 mars 2021, réveil
url: http://shl.huld.re/~f6k/log/vol11/1-reveil.html
hash_url: d8320769320273ce23adb40f4792d58b

<p><a href="http://shl.huld.re/~f6k/log/vol11/1-reveil.html" title="2021-03-05"><strong>Vendr. 5 mars 2021, réveil</strong></a> (vol. 11, num. 1). — <em>Toulouse, Occitanie, France.</em> — L’hiver, sous cette latitude et au-dessus encore, a toujours un peu le même effet sur moi. Une forme d’hibernation, de relâchement, tant sur le plan psychique que physique. Surtout quand, à l’extérieur, je n’ai rien pour m’y retenir. Il ne fait pourtant pas un froid glacial par ici au point de devoir rester dans une grotte sombre, mais pour une raison que je ne m’explique pas c’est ce qu’il se passe.

</p><p>Je lis ces jours-ci avec grand intérêt les aventures de <a href="https://larlet.fr/david/">David Larlet</a> dans « le Grand Nord ». Bon, en réalité je ne sais pas s’il est <em>vraiment</em> dans le « Grand Nord » canadien lors de ses sorties pédestres, mais pour l’européen que je suis, dès qu’il y a trois montagnes, un lac, de la neige partout, et pas un troquet à l’horizon, c’est la représentation que j’en ai — bref.</p>

<p>Pour moi donc qui n’a vraiment aucun attrait pour le froid, c’est avec une certaine admiration que je le suis (virtuellement) dans ses aventures. Autant je n’ai aucun problème à m’imaginer en train de survivre au beau milieu des jungles du Yucatán (alors que je n’y ai aucune expérience) à batailler pour trouver de l’eau tout en évitant autant que possible le territoire des pumas, mais autant je n’arrive pas même à me projeter dans les décors magnifiquement gelés que David parcourt (là non plus je n’y ai évidemment aucune expérience). Car il faut le dire — et bien qu’il se pose beaucoup de question quant à l’intérêt pour lui et au regard de son ressenti personnel de documenter (<a href="https://vimeo.com/516515235/45826baa92">notamment en vidéo</a>) ses sorties —, les images et les sons qu’il rapporte sont tout de même assez stupéfiantes — « fret » certes, mais stupéfiantes.</p>

<p>Le froid canadien n’a rien à voir avec le froid de mon coin de monde, c’est l’évidence, mais je ne suis pourtant pas fâché qu’il s’apaise peu à peu par ici. Je vis quand même dans le sud de la France et, déjà, le soleil commence à revenir de manière plus présente chaque jour un peu plus. Parallèlement mon réveil s’est amorcé. Il est encore difficile, la brume est toujours présente, mais il faut s’activer car l’avenir n’attend pas.</p>

<p>En effet, en décembre dernier j’ai fait une demande d’inscription à Bordeaux à l’entrée d’examen au CRFPA (celui qui permet l’entrée dans une école d’avocat). Grâce aux dieux j’ai été accepté et il me faut donc me préparer au concours écrit de septembre. Cela me laisse de la marge mais, étant inscrit en candidat libre, je ne vais pouvoir compter que sur moi-même. Et vu la charge de travail qui m’attend, il va vraiment falloir que je puisse effectivement me compter dessus (<em>what?</em>) — ce qui, <em>spoiler alert</em>, n’est pas gagné d’avance.</p>

<p>Après donc cette petite trêve hivernale, il est tant de me replonger dans <em>la vie</em>. Je suis déjà très reconnaissant d’avoir la possibilité de prendre de telles trêves, mais cela ne peut évidemment pas durer — l’alternative étant de creuser un trou et de m’y allonger en attendant la mort (oublions cela pour le moment). J’amorce ainsi ce nouveau volume (le onzième !) en m’imaginant que je vais beaucoup y parler de droit dans les mois qui viennent (mais bon, je dis ça, là encore je me connais…).</p>

+ 8
- 0
cache/2021/index.html View File

@@ -107,6 +107,8 @@
<li><a href="/david/cache/2021/c4dd46c6f0fe9310b47dd3abda0b5280/" title="Accès à l’article dans le cache local : The computer built to last 50 years">The computer built to last 50 years</a> (<a href="https://ploum.net/the-computer-built-to-last-50-years/" title="Accès à l’article original distant : The computer built to last 50 years">original</a>)</li>
<li><a href="/david/cache/2021/cbd2101777421fa7549472859210a69c/" title="Accès à l’article dans le cache local : HTTPWTF">HTTPWTF</a> (<a href="https://httptoolkit.tech/blog/http-wtf/" title="Accès à l’article original distant : HTTPWTF">original</a>)</li>
<li><a href="/david/cache/2021/13fac7e78342ffd7e5286a6d5519e19e/" title="Accès à l’article dans le cache local : Ils construisaient leurs maisons tous ensemble puis les tiraient au sort : l’histoire des Castors">Ils construisaient leurs maisons tous ensemble puis les tiraient au sort : l’histoire des Castors</a> (<a href="https://www.18h39.fr/articles/ils-construisaient-leurs-maisons-tous-ensemble-puis-les-tiraient-au-sort-lhistoire-des-castors.html" title="Accès à l’article original distant : Ils construisaient leurs maisons tous ensemble puis les tiraient au sort : l’histoire des Castors">original</a>)</li>
<li><a href="/david/cache/2021/e8ebcfcc0dbd4336a82f618a1bd1a818/" title="Accès à l’article dans le cache local : DNA Chisel - a versatile sequence optimizer">DNA Chisel - a versatile sequence optimizer</a> (<a href="https://edinburgh-genome-foundry.github.io/DnaChisel/" title="Accès à l’article original distant : DNA Chisel - a versatile sequence optimizer">original</a>)</li>
@@ -137,6 +139,8 @@
<li><a href="/david/cache/2021/f1df3d5f1720e137130581d5a2b8549f/" title="Accès à l’article dans le cache local : Built to Last">Built to Last</a> (<a href="https://logicmag.io/care/built-to-last/" title="Accès à l’article original distant : Built to Last">original</a>)</li>
<li><a href="/david/cache/2021/d8320769320273ce23adb40f4792d58b/" title="Accès à l’article dans le cache local : log : vol. 11, num. 1, vendr. 5 mars 2021, réveil">log : vol. 11, num. 1, vendr. 5 mars 2021, réveil</a> (<a href="http://shl.huld.re/~f6k/log/vol11/1-reveil.html" title="Accès à l’article original distant : log : vol. 11, num. 1, vendr. 5 mars 2021, réveil">original</a>)</li>
<li><a href="/david/cache/2021/deb0e4b7e744eb8767d1ad803c7922f3/" title="Accès à l’article dans le cache local : Be Humble">Be Humble</a> (<a href="https://lucumr.pocoo.org/2021/2/5/be-humble/" title="Accès à l’article original distant : Be Humble">original</a>)</li>
<li><a href="/david/cache/2021/46b31e34a075d66aa6e4b8d8c91bd535/" title="Accès à l’article dans le cache local : Almost a third of recovered Covid patients return to hospital in five months and one in eight die">Almost a third of recovered Covid patients return to hospital in five months and one in eight die</a> (<a href="https://www.telegraph.co.uk/news/2021/01/17/almost-third-recovered-covid-patients-return-hospital-five-months/" title="Accès à l’article original distant : Almost a third of recovered Covid patients return to hospital in five months and one in eight die">original</a>)</li>
@@ -147,6 +151,8 @@
<li><a href="/david/cache/2021/4121412b765fff38f76943b7bc6391a5/" title="Accès à l’article dans le cache local : Stumbling">Stumbling</a> (<a href="https://lucybellwood.com/stumbling/" title="Accès à l’article original distant : Stumbling">original</a>)</li>
<li><a href="/david/cache/2021/a722bf15647dfe923d3c28b2e229098c/" title="Accès à l’article dans le cache local : The Future of Web Software Is HTML-over-WebSockets">The Future of Web Software Is HTML-over-WebSockets</a> (<a href="https://alistapart.com/article/the-future-of-web-software-is-html-over-websockets/" title="Accès à l’article original distant : The Future of Web Software Is HTML-over-WebSockets">original</a>)</li>
<li><a href="/david/cache/2021/fd776407232cd6fd7627bac7dba39755/" title="Accès à l’article dans le cache local : Épuiser la pratique">Épuiser la pratique</a> (<a href="https://www.quaternum.net/2020/02/29/epuiser-la-pratique/" title="Accès à l’article original distant : Épuiser la pratique">original</a>)</li>
<li><a href="/david/cache/2021/ef2067bf42482ed7c48e1d166cde117a/" title="Accès à l’article dans le cache local : Cameras and Lenses">Cameras and Lenses</a> (<a href="https://ciechanow.ski/cameras-and-lenses/" title="Accès à l’article original distant : Cameras and Lenses">original</a>)</li>
@@ -187,6 +193,8 @@
<li><a href="/david/cache/2021/595df9c1f986df0678e4fc7d6aa34ef1/" title="Accès à l’article dans le cache local : Qui sont les dix auteurs de SF de la « Red Team » du ministère des Armées ?">Qui sont les dix auteurs de SF de la « Red Team » du ministère des Armées ?</a> (<a href="https://www.lepoint.fr/high-tech-internet/qui-sont-les-dix-auteurs-de-sf-de-la-red-team-du-ministere-des-armees-04-12-2020-2404230_47.php" title="Accès à l’article original distant : Qui sont les dix auteurs de SF de la « Red Team » du ministère des Armées ?">original</a>)</li>
<li><a href="/david/cache/2021/03efcc832beba4212f70128850c9fe1f/" title="Accès à l’article dans le cache local : Émois en photos : année blanche, année noire - 2 : distance">Émois en photos : année blanche, année noire - 2 : distance</a> (<a href="https://lalunemauve.fr/emois-en-photos-annee-blanche-annee-noire-2-distance/" title="Accès à l’article original distant : Émois en photos : année blanche, année noire - 2 : distance">original</a>)</li>
<li><a href="/david/cache/2021/883963a92bff6f5bd5ade883ae84bd3f/" title="Accès à l’article dans le cache local : Disrespectful Design-Users aren’t stupid or lazy">Disrespectful Design-Users aren’t stupid or lazy</a> (<a href="https://somehowmanage.com/2020/09/13/disrespectful-design-users-arent-stupid-or-lazy/" title="Accès à l’article original distant : Disrespectful Design-Users aren’t stupid or lazy">original</a>)</li>
<li><a href="/david/cache/2021/2057ddcf3fd20edd602cee1b08ac17e8/" title="Accès à l’article dans le cache local : Designing Branch: Sustainable Interaction Design Principles">Designing Branch: Sustainable Interaction Design Principles</a> (<a href="https://branch.climateaction.tech/2020/10/15/designing-branch-sustainable-interaction-design-principles/" title="Accès à l’article original distant : Designing Branch: Sustainable Interaction Design Principles">original</a>)</li>

Loading…
Cancel
Save