Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the `title` element
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Tag #scopyleft — David Larlet</title>
  13. <meta name="description" content="Publications relatives au tag #scopyleft">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f7f7f7">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
  26. <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
  27. <!-- Documented, feel free to shoot an email. -->
  28. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  29. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  30. <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>
  31. <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>
  32. <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>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  36. <script>
  37. function toggleTheme(themeName) {
  38. document.documentElement.classList.toggle(
  39. 'forced-dark',
  40. themeName === 'dark'
  41. )
  42. document.documentElement.classList.toggle(
  43. 'forced-light',
  44. themeName === 'light'
  45. )
  46. }
  47. const selectedTheme = localStorage.getItem('theme')
  48. if (selectedTheme !== 'undefined') {
  49. toggleTheme(selectedTheme)
  50. }
  51. </script>
  52. <style type="text/css">
  53. details[open] summary {
  54. display: none;
  55. }
  56. </style>
  57. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  58. <header>
  59. <h1>Publications relatives au tag #scopyleft</h1>
  60. </header>
  61. <nav>
  62. <p class="center">
  63. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  64. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  65. </svg> Accueil</a>
  66. • <a rel="tags" href="/david/#tags" title="Liste de toutes les étiquettes"><svg class="icon icon-tags">
  67. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-tags"></use>
  68. </svg> Étiquettes</a>
  69. </p>
  70. </nav>
  71. <hr>
  72. <main>
  73. <p>Les plus récentes en premier, les 3 premières sont dépliées et ensuite c’est à la demande, bonne exploration !</p>
  74. <h2><a href="/david/2021/11/30/" title="Lien permanent vers cet article">Salaires</a> (2021-11-30)</h2>
  75. <blockquote>
  76. <p>Il ne s’agit plus de quémander un emploi pour avoir le droit de valoriser du capital, et de payer des impôts pour en déléguer la gestion à un personnel politique et une aristocratie de grandes et grands fonctionnaires. Il s’agit de <mark>décider ensemble</mark> du niveau de salaire et de ce qui doit être produit, et surtout comment ça devrait l’être.</p>
  77. <p><cite><em><a href="https://igor.milhit.ch/citoyennet%C3%A9-autre/">Citoyenneté autre</a></em> (<a href="/david/cache/2021/465f63b989ee5666a6e9a406201a4b62/">cache</a>)</cite></p>
  78. </blockquote>
  79. <p>Au sein de <a href="http://scopyleft.fr/">Scopyleft</a>, nous sommes passé·es d’un salaire <em>à la contrainte</em> (cruel manque de trésorerie les premiers mois&#8239;!) à un salaire <em>égalitaire</em> (pendant un temps) pour être depuis quelques années maintenant à un <strong>salaire au besoin</strong>. Notre revenu n’est pas corrélé à ce que l’on rapporte ou à notre ancienneté ou à notre activité ou à notre expérience. Encore moins à notre performance…</p>
  80. <p>Sous réserve que le pot commun ne se retrouve pas vide, chacun·e est libre de choisir le montant qu’iel souhaite.</p>
  81. <p>Cette pratique vient avec son lot de non-dits et de culpabilités, de la même façon que ce qui peut se produire avec <a href="/david/2021/04/22/" title="Vacances">les vacances</a>. Parfois ne pas avoir à donner de justifications peut être la pire des tortures pour un groupe de personnes qui s’estiment et se respectent&nbsp;:</p>
  82. <ul>
  83. <li>est-ce que je ne suis pas égoïste vis-à-vis des autres en m’accordant autant&#8239;?</li>
  84. <li>est-ce que je peux comparer mes besoins à ceux des autres dans une société de (sur)consommation&#8239;?</li>
  85. <li>est-ce que j’ai besoin d’une symétrie de revenus avec mon ou ma conjoint·e pour être libre&#8239;?</li>
  86. <li>est-ce que les enfants entrent en compte alors que c’est un choix délibéré d’en avoir ou pas&#8239;?</li>
  87. <li>est-ce que je peux être payé·e autant alors que je suis jeune/en reconversion/sans mission/etc&#8239;?</li>
  88. <li>est-ce que ça ne participe pas à la définition de mon futur salaire dans une autre structure&#8239;?</li>
  89. <li>est-ce que pouvoir présenter ces fiches de paye à mon banquier/propriétaire fait partie d’un besoin&#8239;?</li>
  90. <li>est-ce que la pression sociale m’enclin à sous-évaluer ma valeur/mes besoins car je suis une femme&#8239;?</li>
  91. <li>est-ce que ma vision de la sobriété/frugalité est partagée au sein du groupe&#8239;?</li>
  92. <li>est-ce que mon comportement actuel endommage la trésorerie future de la coopérative&#8239;?</li>
  93. </ul>
  94. <p>Toutes ces questions sont légitimes et saines. Et le fait que ces discussions aient lieues à un moment où il y a <a href="/david/2021/11/09/" title="Junior">un peu plus de diversité</a> n’est pas anodin. Elles permettent de se remettre en question et génèrent des échanges qui permettent d’apprendre à se connaître (et à s’apprécier).</p>
  95. <p>Du salaire à vie au salaire en vie, il y a matière à travailler. Ensemble.</p>
  96. <p><em>Rappel&nbsp;: nous sommes une coopérative, ce qui signifie que ce qui n’est pas attribué en salaire au cours de l’année est transformé en réserve (pour la structure), puis en part travail (répartie équitablement entre les salarié·es) à la fin de l’année. C’est aussi cela être propriétaire de son cadre de travail, que l’on essaye de pérenniser.</em></p>
  97. <blockquote>
  98. <p>Il a fait le tour du monde… mais qu’est-ce que le tour du monde puisque l’horizon est éternel&#8239;? Le tour du monde va plus loin que le bout du monde, aussi loin que la vie, plus loin encore peut-être. Quand on entrevoit ça, on a un peu le vertige, on a un peu peur. Et en même temps ce qu’on entrevoit là est tellement…</p>
  99. <p>Tellement quoi&#8239;? <mark>Je ne sais pas.</mark> Plus loin que le bout du monde…</p>
  100. <p><cite><em>La longue route</em>, Bernard Moitessier</cite></p>
  101. </blockquote>
  102. <h2><a href="/david/2021/11/09/" title="Lien permanent vers cet article">Junior</a> (2021-11-09)</h2>
  103. <blockquote>
  104. <p>Pour diminuer ces risques, les entreprises devraient accepter de <mark>renoncer à une part de rentabilité immédiate au profit d’une forme d’investissement durable</mark> reposant sur le recrutement de davantage de juniors. En comprenant que ces juniors sortant de formations courtes – qui sont, notamment, des femmes – auraient pu être ingénieurs ou ingénieures si ils ou elles n’avaient pas rencontré dès l’enfance toute une série de barrières socio-culturelles, l’industrie miserait sur son propre avenir.</p>
  105. <p><cite><em><a href="https://usbeketrica.com/fr/article/le-manoir-de-verre-comment-la-tech-traite-t-elle-les-femmes-developpeuses-ou-data-scientists">«&nbsp;Le manoir de verre&nbsp;»&nbsp;: comment la tech traite-t-elle les femmes développeuses ou data scientists&#8239;?</a></em> (<a href="/david/cache/2021/da6f2715327f68a1955044955fb913ea/">cache</a>)</cite></p>
  106. </blockquote>
  107. <p>Il y a des jours où je suis bien content de voir l’évolution de <a href="http://scopyleft.fr/">scopyleft</a> sur ce plan là. Cette dernière année, nous sommes devenu·es paritaires en réduisant notre moyenne d’âge de 5&nbsp;ans. Ce qui se joue en interne va bien au-delà de ces chiffres et je vais avoir besoin de davantage de recul pour en parler.</p>
  108. <p>Jusqu’ici c’est très chouette&nbsp;:-).</p>
  109. <blockquote lang="en">
  110. <p>We end up in a situation where the demand for senior developers far outweighs the capacity and willingness of the companies to train juniors. Up until recently it wasn’t that bad though, we were in kind of an stable situation - the number of developers needed was growing steadily, the attrition was stable, companies were offering some internships and entry-level positions, universities and bootcamps provided streams of candidates. It wasn’t very easy to get the first job in the industry, but with enough effort and determination it was possible even for someone who has just started programming.</p>
  111. <p>And then came the pandemic.</p>
  112. <p><cite><em><a href="https://www.notonlycode.org/nobody-hires-juniors/">Why nobody hires junior developers anymore</a></em> (<a href="/david/cache/2021/28dd93134ff6df75757a564c42834ff3/">cache</a>)</cite></p>
  113. </blockquote>
  114. <p>PS&nbsp;: niveau salaires par contre, c’est très inégal et ce sera l’opportunité d’un futur billet.</p>
  115. <h2><a href="/david/2021/08/19/" title="Lien permanent vers cet article">Définition</a> (2021-08-19)</h2>
  116. <blockquote>
  117. <p>On pourrait distinguer des développeur·ses, designer‧ses, agilistes et coach dont c’est l’<em>activité</em> ou la <em>profession</em>, si leur travail nourrit directement une structure capitalistique et qui renforce le maillage néolibéral.</p>
  118. <p><cite><em><a href="https://oncletom.io/2021/08/16/victoire-professionnels/">La victoire des professionnels</a></em> (<a href="/david/cache/2021/1e65aa7484aa157870c2a1b735f36a26/">cache</a>)</cite></p>
  119. </blockquote>
  120. <p>Suivi de&nbsp;:</p>
  121. <blockquote>
  122. <p>(j’ouvre une parenthèse ici pour préciser que quand je dis que je «&nbsp;suis développeur web&nbsp;», j’ai l’impression que ça cache la valeur que j’apporte quand je réfléchis à ces questions de «&nbsp;résilience sociale&nbsp;» autour du logiciel que je créé)</p>
  123. <p><cite><em>David <a href="https://eldritch.cafe/@davidbruant/106777018282632259">sur Mastodon</a></em></cite></p>
  124. </blockquote>
  125. <p>Réflexions croisées qui viennent alimenter mes <a href="/david/2021/05/27/" title="Craftsman">propres explorations</a> plus ou <a href="/david/blog/2015/travail-transition/">moins</a> <a href="/david/blog/2015/pairmutation-travail/">récentes</a> sur le sujet. Ce besoin de définition est même assez <a href="/david/blog/2016/passion-definition/">récurrent</a> ici, le blog étant probablement une forme de définition en soi mais je m’égare et ça devient trop <em>meta</em>.</p>
  126. <p>«&nbsp;Pour qui, <a href="/david/stream/2018/04/04/">pour quoi</a> travaillons-nous&#8239;?&nbsp;» pour reprendre le titre de <a href="/david/2021/01/27/" title="Choix">Jacques Ellul</a>, avec quels espoirs plus ou moins communs engageons-nous notre attention, aspirons-nous à dédier notre fameuse «&nbsp;force de travail&nbsp;»&#8239;? J’ai l’impression d’avoir de moins en moins de réponses à tout cela, une définition peut rester floue, une identité aussi finalement, lorsqu’on est suffisamment en confiance. Peut-être qu’en dépassant cette dénomination, on s’élève, on se libère d’un poids à la fois social et culturel. <strong>«&nbsp;Je fais des trucs en équipe que j’espère utiles et qui parfois se retrouvent sur le Web&nbsp;»</strong>, c’est sûr que ça n’est pas très vendeur pour <a href="/david/2021/03/23/" title="Recrutement">obtenir un emploi</a> mais c’est peut-être ce qui se rapproche le plus de mon <em>activité</em>. En tout cas, ça se retrouve pas mal dans ce qui <a href="http://scopyleft.fr/">nous anime</a> depuis bientôt 9&nbsp;ans.</p>
  127. <p>Au niveau du «&nbsp;pour qui&nbsp;», il y a toujours cette tension à travailler pour un gouvernement, ce péché d’orgueil d’espérer faire moins pire que ce que ça pourrait être. J’imagine que l’Histoire est remplie de personnes bien intentionnées qui — avec ce même raisonnement — en sont arrivées à commettre les pires atrocités. Se pose peut-être davantage la question du «&nbsp;jusqu’à quand&nbsp;» dans ce cas là, savoir s’arrêter avant que la <em>collaboration</em> ne change de sens…</p>
  128. <blockquote>
  129. <p>Les gens veulent toujours quelque chose de plus qu’une joie immédiate ou que ce sentiment plus profond qu’on appelle le bonheur. C’est là un des secrets qui nous aident à façonner l’accomplissement de nos visées. Ce «&nbsp;petit quelque chose&nbsp;» exerce un pouvoir décuplé sur <mark>ceux qui ne savent lui attribuer un nom</mark> ou (comme c’est le plus souvent le cas) ne soupçonnent même pas son existence. La plupart des gens ne réagissent qu’inconsciemment à de telles forces cachées. De sorte que nous n’avons plus qu’à concevoir un «&nbsp;petit quelque chose&nbsp;» bien étudié et à lui donner une forme et une définition acceptables pour qu’on nous suive comme un seul homme.</p>
  130. <p><cite><em>Les secrets du pouvoir au Bene Gesserit</em>, <em><a href="/david/2020/12/21/#dune">Dune</a> V. Les Hérétiques de Dune</em>, Frank Herbert</cite></p>
  131. </blockquote>
  132. <figure>
  133. <a href="#riviere-megantic"
  134. title="Cliquer pour une version haute résolution">
  135. <img src="/static/david/2021/riviere-megantic.jpg" alt="Une rivière en pause longue au Mont Mégantic."
  136. loading="lazy" width="2048" height="1536" />
  137. </a>
  138. <a href="#_" class="lightbox" id="riviere-megantic">
  139. <img src="/static/david/2021/riviere-megantic.jpg" alt="Une rivière en pause longue au Mont Mégantic."
  140. loading="lazy" width="2048" height="1536" />
  141. </a>
  142. <figcaption>Un flux d’idées, momentanément figé.</figcaption>
  143. </figure>
  144. <h2><a href="/david/2021/04/22/" title="Lien permanent vers cet article">Vacances</a> (2021-04-22)</h2>
  145. <details>
  146. <summary>Déplier pour lire le contenu de la publication</summary>
  147. <blockquote>
  148. <p>L’histoire est aussi importante que la forme ou la structure. Dans une très large mesure, <mark>l’histoire d’un phénomène constitue le phénomène lui-même</mark>. Nous sommes, réellement, tout ce qui a existé avant nous et nous pouvons devenir à notre tour infiniment plus que ce que nous sommes.</p>
  149. <p><cite><em>L’écologie sociale</em>, Murray Bookchin</cite></p>
  150. </blockquote>
  151. <p>On a un rapport assez particulier aux vacances chez Scopyleft et au moment où on se <a href="/david/2021/03/17/" title="Arrivant·es">transmet en question</a>, c’est l’occasion de partager <em>un</em> état de nos réflexions.</p>
  152. <p>La prise de vacances est libre et consciente. <strong>Libre</strong> car on ne se restreint pas à un nombre de jours/semaines, ni même à communiquer à nos collègues si/quand on est en vacances. <strong>Consciente</strong> car on essaye — dans la mesure du possible — de ne pas laisser les autres galérer du fait de notre indisponibilité. Faire partie d’une <abbr title="Société coopérative et participative">SCOP</abbr> c’est aussi <em>pour moi</em> éprouver de l’empathie et de la solidarité pour les autres membres.</p>
  153. <p>La discussion du jour portait sur la toxicité potentielle d’une telle approche. D’autres entreprises pratiquent les <em>vacances illimitées</em> mais cela crée un tel sentiment de culpabilité que les employé·es prennent en définitive <em>moins</em> de vacances et dans un climat pas terrible.</p>
  154. <p>Comment rompre avec ce sentiment&#8239;?</p>
  155. <p>On en vient à (re)questionner les notions de travail et de vacances. Si l’on envisage les vacances comme des <em>moments de prise de soin personnels</em>, le changement n’est pas uniquement sémantique mais traduit une intention différente. D’une manière similaire à l’auto-détermination de nos salaires en fonction de nos «&nbsp;besoins&nbsp;», les vacances s’adaptent ainsi à notre rythme de vie, notre enthousiasme et notre appétence. L’exploration du tempo convenable pour notre danse du moment.</p>
  156. <p>Ce n’est plus alors la recherche d’un rythme de <em>travail</em> soutenable mais celle d’une qualité de <em>vie</em> enviable.</p>
  157. <blockquote>
  158. <p>Bien au contraire, la complétude inclut l’ensemble disparate des structures, d’articulations, de médiations, où le tout va puiser la riche variété de ces formes et où ce qu’un esprit analytique réduirait à une suite de détails «&nbsp;innombrables&nbsp;» et «&nbsp;fortuits&nbsp;» acquiert ainsi des propriétés qualitatives uniques.</p>
  159. <p><cite><em>Ibid.</em></cite></p>
  160. </blockquote>
  161. </details>
  162. <h2><a href="/david/2021/01/25/" title="Lien permanent vers cet article">Valeurs</a> (2021-01-25)</h2>
  163. <details>
  164. <summary>Déplier pour lire le contenu de la publication</summary>
  165. <blockquote>
  166. <p>S’il n’existe plus de géographie du refuge hors l’exil, et que l’on veut continuer à vivre en société, parce que chacun n’a pas la possibilité de s’échapper en mer ou vers les sommets, <mark>alors il faut trouver ailleurs, en soi</mark>, la manière de s’extraire de la <em>Machine</em> et de faire corps avec le monde vivant contre le <em>Monstre</em>.</p>
  167. <p><cite><em>Plutôt couler en beauté que flotter sans grâce</em>, Corinne Morel Darleux</cite></p>
  168. </blockquote>
  169. <p>Aujourd’hui, on s’est demandé ce qu’était une valeur avec <a href="http://scopyleft.fr/">scopyleft</a> (et quelles seraient les nôtres aujourd’hui). Est-ce un cap&#8239;? Une aspiration&#8239;? Une intention&#8239;? Un travail quotidien&#8239;? Une chose que l’on a en nous&#8239;? Une utopie&#8239;? <em>Un peu de tout ça&#8239;?!</em></p>
  170. <p>Est-ce qu’on doit l’afficher&#8239;? Est-ce que ça doit nous guider&#8239;? Nous contraindre&#8239;? Est-ce que c’est évolutif&#8239;? Adaptable&#8239;? Partageable&#8239;? <em>Est-ce bien nécessaire&#8239;?!</em></p>
  171. <p>L’une des branches de cet arbre de possibles m’a fait comprendre qu’il est important d’avoir ces discussions, non pas pour une éventuelle conclusion mais pour les échanges lors de ce cheminement à plusieurs.</p>
  172. <p><strong>Quelle est la valeur qui motive à parler de valeurs à intervalles réguliers&#8239;?</strong> #SoMeta</p>
  173. <blockquote>
  174. <p>C’est en façonnant par son travail le monde des objets que l’homme se révèle réellement comme un être générique. <mark>Sa production, c’est sa vie</mark> générique créatrice. Par elle, la nature apparaît comme son œuvre et sa réalité. C’est pourquoi l’objet du travail est l’objectivisation de la vie générique de l’homme car il ne s’y dédouble pas idéalement dans la conscience, mais réellement, comme créateur. Il se contemple ainsi lui-même dans un monde qu’il a lui-même créé par son travail.</p>
  175. <p><cite><em>Ébauche d’une critique de l’Économie politique</em>, Karl Marx dans «&nbsp;Manuscrits de 1844&nbsp;»</cite></p>
  176. </blockquote>
  177. </details>
  178. </main>
  179. <hr>
  180. <footer>
  181. <p>
  182. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  183. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  184. </svg> Accueil</a> •
  185. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  186. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  187. </svg> Suivre</a> •
  188. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  189. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  190. </svg> Pro</a> •
  191. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  192. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  193. </svg> Email</a> •
  194. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  195. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  196. </svg> Légal</abbr>
  197. </p>
  198. <template id="theme-selector">
  199. <form>
  200. <fieldset>
  201. <legend><svg class="icon icon-brightness-contrast">
  202. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  203. </svg> Thème</legend>
  204. <label>
  205. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  206. </label>
  207. <label>
  208. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  209. </label>
  210. <label>
  211. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  212. </label>
  213. </fieldset>
  214. </form>
  215. </template>
  216. </footer>
  217. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  218. <script>
  219. function loadThemeForm(templateName) {
  220. const themeSelectorTemplate = document.querySelector(templateName)
  221. const form = themeSelectorTemplate.content.firstElementChild
  222. themeSelectorTemplate.replaceWith(form)
  223. form.addEventListener('change', (e) => {
  224. const chosenColorScheme = e.target.value
  225. localStorage.setItem('theme', chosenColorScheme)
  226. toggleTheme(chosenColorScheme)
  227. })
  228. const selectedTheme = localStorage.getItem('theme')
  229. if (selectedTheme && selectedTheme !== 'undefined') {
  230. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  231. }
  232. }
  233. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  234. window.addEventListener('load', () => {
  235. let hasDarkRules = false
  236. for (const styleSheet of Array.from(document.styleSheets)) {
  237. let mediaRules = []
  238. for (const cssRule of styleSheet.cssRules) {
  239. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  240. continue
  241. }
  242. // WARNING: Safari does not have/supports `conditionText`.
  243. if (cssRule.conditionText) {
  244. if (cssRule.conditionText !== prefersColorSchemeDark) {
  245. continue
  246. }
  247. } else {
  248. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  249. continue
  250. }
  251. }
  252. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  253. }
  254. // WARNING: do not try to insert a Rule to a styleSheet you are
  255. // currently iterating on, otherwise the browser will be stuck
  256. // in a infinite loop…
  257. for (const mediaRule of mediaRules) {
  258. styleSheet.insertRule(mediaRule.cssText)
  259. hasDarkRules = true
  260. }
  261. }
  262. if (hasDarkRules) {
  263. loadThemeForm('#theme-selector')
  264. }
  265. })
  266. </script>
  267. </body>
  268. </html>