A place to cache linked articles (think custom and personal wayback machine)
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

index.html 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  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>Email Greetings for Modern Times (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="#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. <!-- Is that even respected? Retrospectively? What a shAItshow…
  28. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  29. <meta name="robots" content="noai, noimageai">
  30. <!-- Documented, feel free to shoot an email. -->
  31. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  32. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  33. <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>
  34. <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>
  35. <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>
  36. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  37. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  38. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  39. <script>
  40. function toggleTheme(themeName) {
  41. document.documentElement.classList.toggle(
  42. 'forced-dark',
  43. themeName === 'dark'
  44. )
  45. document.documentElement.classList.toggle(
  46. 'forced-light',
  47. themeName === 'light'
  48. )
  49. }
  50. const selectedTheme = localStorage.getItem('theme')
  51. if (selectedTheme !== 'undefined') {
  52. toggleTheme(selectedTheme)
  53. }
  54. </script>
  55. <meta name="robots" content="noindex, nofollow">
  56. <meta content="origin-when-cross-origin" name="referrer">
  57. <!-- Canonical URL for SEO purposes -->
  58. <link rel="canonical" href="https://www.mcsweeneys.net/articles/email-greetings-for-modern-times">
  59. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  60. <article>
  61. <header>
  62. <h1>Email Greetings for Modern Times</h1>
  63. </header>
  64. <nav>
  65. <p class="center">
  66. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  67. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  68. </svg> Accueil</a> •
  69. <a href="https://www.mcsweeneys.net/articles/email-greetings-for-modern-times" title="Lien vers le contenu original">Source originale</a>
  70. </p>
  71. </nav>
  72. <hr>
  73. <p>Hi Steve.</p>
  74. <p>Hope the air where you are is somewhat breathable today! Just wanted to circle back around on that report.</p>
  75. <p class="break">- - -</p>
  76. <p>Dear Judy,</p>
  77. <p>I hope this finds you without a collapsed power grid. :(</p>
  78. <p class="break">- - -</p>
  79. <p>Jim,</p>
  80. <p>What a toxic spill, huh? Bigger than the last three! Anyway, wondering if you’re free for dinner Tuesday?</p>
  81. <p class="break">- - -</p>
  82. <p>Trish!</p>
  83. <p>Hope you had a great vacay and that all of that neo-Nazi hoopla didn’t put too much of a damper on things at the waterpark.</p>
  84. <p class="break">- - -</p>
  85. <p>Hi there, Tom.</p>
  86. <p>I know the floodwaters are getting higher, and you’re preparing to evacuate, but wondering if you had a chance to look over my résumé?</p>
  87. <p class="break">- - -</p>
  88. <p>To Whom It May Concern:</p>
  89. <p>I am writing for an update regarding my coffee table delivery, assuming you were able to source wood from somewhere on the planet. Please respond when you have a moment.</p>
  90. <p class="break">- - -</p>
  91. <p>Greetings!</p>
  92. <p>Hope you’re keeping cool in these 143 degrees. I’d love to get that meeting on the books before the pavement buckles.</p>
  93. <p class="break">- - -</p>
  94. <p>How’s it hanging, Fred? As promised, here’s the twelve-step action plan for defeating the woke mob. (<span class="caps">FYI</span>: the hats are back-ordered.)</p>
  95. <p class="break">- - -</p>
  96. <p>Hey lady! Just wondering if you were able to “get your tonsils removed” in Chicago as discussed. I know that “getting your tonsils removed” can be a scary undertaking for women these days. Were you able to successfully “get your tonsils removed”? Or do you still want our old Pack-n-Play?</p>
  97. <p class="break">- - -</p>
  98. <p>Bob!</p>
  99. <p>How’s the boil water notice goin’ for ya? We still on target for that presentation?</p>
  100. <p class="break">- - -</p>
  101. <p>Thanks for reaching out, Carol. Was great to see you at the fundraiser last week. Really unfortunate about all the pigeon pox stuff, but still a successful event. <span class="caps">CDC</span> says the rash should stay confined to the tongue, so that’s a bit of good news.</p>
  102. <p class="break">- - -</p>
  103. <p>Sherry,</p>
  104. <p>So sorry for the late email, but wondering if Tyler could catch a ride to school in your armored tank tomorrow? No worries if already full.</p>
  105. <p class="break">- - -</p>
  106. <p>Greetings from the 12th Ward, Non-Malarial Zone: I am writing to inquire about your recent apartment listing.</p>
  107. </article>
  108. <hr>
  109. <footer>
  110. <p>
  111. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  112. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  113. </svg> Accueil</a> •
  114. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  115. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  116. </svg> Suivre</a> •
  117. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  118. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  119. </svg> Pro</a> •
  120. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  121. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  122. </svg> Email</a> •
  123. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  124. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  125. </svg> Légal</abbr>
  126. </p>
  127. <template id="theme-selector">
  128. <form>
  129. <fieldset>
  130. <legend><svg class="icon icon-brightness-contrast">
  131. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  132. </svg> Thème</legend>
  133. <label>
  134. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  135. </label>
  136. <label>
  137. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  138. </label>
  139. <label>
  140. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  141. </label>
  142. </fieldset>
  143. </form>
  144. </template>
  145. </footer>
  146. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  147. <script>
  148. function loadThemeForm(templateName) {
  149. const themeSelectorTemplate = document.querySelector(templateName)
  150. const form = themeSelectorTemplate.content.firstElementChild
  151. themeSelectorTemplate.replaceWith(form)
  152. form.addEventListener('change', (e) => {
  153. const chosenColorScheme = e.target.value
  154. localStorage.setItem('theme', chosenColorScheme)
  155. toggleTheme(chosenColorScheme)
  156. })
  157. const selectedTheme = localStorage.getItem('theme')
  158. if (selectedTheme && selectedTheme !== 'undefined') {
  159. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  160. }
  161. }
  162. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  163. window.addEventListener('load', () => {
  164. let hasDarkRules = false
  165. for (const styleSheet of Array.from(document.styleSheets)) {
  166. let mediaRules = []
  167. for (const cssRule of styleSheet.cssRules) {
  168. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  169. continue
  170. }
  171. // WARNING: Safari does not have/supports `conditionText`.
  172. if (cssRule.conditionText) {
  173. if (cssRule.conditionText !== prefersColorSchemeDark) {
  174. continue
  175. }
  176. } else {
  177. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  178. continue
  179. }
  180. }
  181. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  182. }
  183. // WARNING: do not try to insert a Rule to a styleSheet you are
  184. // currently iterating on, otherwise the browser will be stuck
  185. // in a infinite loop…
  186. for (const mediaRule of mediaRules) {
  187. styleSheet.insertRule(mediaRule.cssText)
  188. hasDarkRules = true
  189. }
  190. }
  191. if (hasDarkRules) {
  192. loadThemeForm('#theme-selector')
  193. }
  194. })
  195. </script>
  196. </body>
  197. </html>