A place to cache linked articles (think custom and personal wayback machine)
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

index.html 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  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>
  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>Intent (archive) — David Larlet</title>
  13. <meta name="description" content="Publication mise en cache pour en conserver une trace.">
  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="#f0f0ea">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f0f0ea">
  26. <!-- Documented, feel free to shoot an email. -->
  27. <link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
  28. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  29. <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>
  30. <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>
  31. <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>
  32. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <script type="text/javascript">
  36. function toggleTheme(themeName) {
  37. document.documentElement.classList.toggle(
  38. 'forced-dark',
  39. themeName === 'dark'
  40. )
  41. document.documentElement.classList.toggle(
  42. 'forced-light',
  43. themeName === 'light'
  44. )
  45. }
  46. const selectedTheme = localStorage.getItem('theme')
  47. if (selectedTheme !== 'undefined') {
  48. toggleTheme(selectedTheme)
  49. }
  50. </script>
  51. <meta name="robots" content="noindex, nofollow">
  52. <meta content="origin-when-cross-origin" name="referrer">
  53. <!-- Canonical URL for SEO purposes -->
  54. <link rel="canonical" href="https://adactio.com/journal/16986">
  55. <body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">
  56. <article>
  57. <header>
  58. <h1>Intent</h1>
  59. </header>
  60. <nav>
  61. <p class="center">
  62. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  63. <a href="https://adactio.com/journal/16986" title="Lien vers le contenu original">Source originale</a>
  64. </p>
  65. </nav>
  66. <hr>
  67. <main>
  68. <p>There are intentions and there are outcomes. Sometimes bad outcomes are the result of good intentions. Less often, good outcomes can be the result of bad intentions. But generally we associate the two: we expect good outcomes to come from good intentions and we expect bad outcomes to come from bad intentions.</p>
  69. <p>Perhaps it’s because of this conflation that we place too much emphasis on intentions. If, for example, someone is called out for causing a bad outcome, their first response is often to defend their intentions. That’s understandable. When someone says “you have created a bad outcome”, I understand why the person on the receiving end would receive that feedback as “you <em>intended</em> to create this bad outcome.” Cue a non-apology that clarifies the (good) intention without acknowledging the reality of the outcome (“It was never my intention to…”).</p>
  70. <p>I get it. Intentions <em>do</em> matter …just not as much as we give them credit for. I mean, in general, I’d prefer bad outcomes to be the inadvertent result of good intentions. But in some ways, it really doesn’t matter: a bad outcome is a bad outcome.</p>
  71. <p>Anyway, all of this is just to preface something I’m going to say about myself:</p>
  72. <p>I am almost certainly racist.</p>
  73. <p>I don’t <em>intend</em> to be racist, but like I said, intentions aren’t really what matter. Outcomes are.</p>
  74. <p>Note, for example, the cliché of the gormless close-minded goon who begins a sentence with “I’m not racist, but…” before going on to say something clearly racist. It’s as though the racism could be defanged by disavowing bad intent.</p>
  75. <p>The same defence mechanism is used to defend racist traditions. “Oh, it’s not racist—that’s just something we’ve always done.” Again, the defence is for the intention, not the outcome. And again, outcomes matter far, far more than intentions.</p>
  76. <p>I really don’t intend to be racist. But how could I not be? I grew up in a small town in Ireland where literally everyone else looked like me. By the same token, I’m also almost certainly sexist. Growing up as a cisgender male in a patriarchal society guarantees that my mind has been shaped in ways I now wish it weren’t.</p>
  77. <p>Acknowledging my racism—and sexism—doesn’t mean I’m okay with it. On the contrary. It’s a source of shame. But acknowledging my racism is a necessary step to changing it.</p>
  78. <p>In any case, it doesn’t really matter how <em>I</em> feel about any of this. This isn’t meant to be a confessional. What matters are outcomes. Outcomes aren’t really the direct result of intentions—outcomes are the direct result of actions.</p>
  79. <p>Most of my actions lately have been very passive. Listening. Watching. Because my actions are passive, they are indistinguishable from silence. That’s not good. Silence can be interpreted as acquiescence, acceptance. That’s not what I intend …but my intentions don’t matter.</p>
  80. <p>So, even though this isn’t about me or my voice or my intentions, and even though this is something that is so self-evident that it shouldn’t need to be said, I want to say:</p>
  81. <p>Black lives matter.</p>
  82. </main>
  83. </article>
  84. <hr>
  85. <footer>
  86. <p>
  87. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  88. <a href="/david/log/" title="Accès au flux RSS">🤖</a> •
  89. <a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
  90. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
  91. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
  92. </p>
  93. <template id="theme-selector">
  94. <form>
  95. <fieldset>
  96. <legend>Thème</legend>
  97. <label>
  98. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  99. </label>
  100. <label>
  101. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  102. </label>
  103. <label>
  104. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  105. </label>
  106. </fieldset>
  107. </form>
  108. </template>
  109. </footer>
  110. <script type="text/javascript">
  111. function loadThemeForm(templateName) {
  112. const themeSelectorTemplate = document.querySelector(templateName)
  113. const form = themeSelectorTemplate.content.firstElementChild
  114. themeSelectorTemplate.replaceWith(form)
  115. form.addEventListener('change', (e) => {
  116. const chosenColorScheme = e.target.value
  117. localStorage.setItem('theme', chosenColorScheme)
  118. toggleTheme(chosenColorScheme)
  119. })
  120. const selectedTheme = localStorage.getItem('theme')
  121. if (selectedTheme && selectedTheme !== 'undefined') {
  122. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  123. }
  124. }
  125. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  126. window.addEventListener('load', () => {
  127. let hasDarkRules = false
  128. for (const styleSheet of Array.from(document.styleSheets)) {
  129. let mediaRules = []
  130. for (const cssRule of styleSheet.cssRules) {
  131. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  132. continue
  133. }
  134. // WARNING: Safari does not have/supports `conditionText`.
  135. if (cssRule.conditionText) {
  136. if (cssRule.conditionText !== prefersColorSchemeDark) {
  137. continue
  138. }
  139. } else {
  140. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  141. continue
  142. }
  143. }
  144. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  145. }
  146. // WARNING: do not try to insert a Rule to a styleSheet you are
  147. // currently iterating on, otherwise the browser will be stuck
  148. // in a infinite loop…
  149. for (const mediaRule of mediaRules) {
  150. styleSheet.insertRule(mediaRule.cssText)
  151. hasDarkRules = true
  152. }
  153. }
  154. if (hasDarkRules) {
  155. loadThemeForm('#theme-selector')
  156. }
  157. })
  158. </script>
  159. </body>
  160. </html>