A place to cache linked articles (think custom and personal wayback machine)
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.

index.html 9.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  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>When Are We Back To Normal? (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_2021-01-20.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>
  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://inessential.com/2020/12/31/when_are_we_back_to_normal">
  55. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick">
  56. <article>
  57. <header>
  58. <h1>When Are We Back To Normal?</h1>
  59. </header>
  60. <nav>
  61. <p class="center">
  62. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  63. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  64. </svg> Accueil</a> •
  65. <a href="https://inessential.com/2020/12/31/when_are_we_back_to_normal" title="Lien vers le contenu original">Source originale</a>
  66. </p>
  67. </nav>
  68. <hr>
  69. <p>I’m trying to figure out when we’ll be back to something like normal. I’m thinking of a few things:</p>
  70. <ul>
  71. <li>Biden’s goal is 100 million doses in his first 100 days</li>
  72. <li>The vaccines require two doses</li>
  73. <li>There are 330 million people in the United States</li>
  74. <li>Dr. Fauci has said that we’ll achieve herd immunity once we have 70-85% of the population vaccinated</li>
  75. </ul>
  76. <p>Let’s say we achieve herd immunity, and some kind or normalcy, at around 250 million people vaccinated, which is just over 75%.</p>
  77. <p>Since each person requires two doses, that’s 500 million doses.</p>
  78. <p>The pace Biden is aiming for is 1 million doses per day. If we’re able to achieve and sustain that pace starting late in January — which is not at all a sure thing — we’ll have administered 500 million doses around mid-year 2022.</p>
  79. <p>I keep hearing people talk optimistically about April or May of 2021. Me, I’m hoping to be able to see my family for Thanksgiving and Christmas 2021, but I’m not counting on it as a sure thing.</p>
  80. <p>We’re going to need to go much faster with the vaccines. To reach 75% of the population by, say, Labor Day, in time for kids to go back to school, we’re going to need to administer 500 million doses by mid-August, about seven months after Biden’s inauguration. (Remember that immunity is ramped up about two weeks after the second dose.) To make this happen we’ll need to administer 2-2.5 million doses per day.</p>
  81. <p>I don’t see how we get there by counting on local drug stores to administer most of the doses. I suspect we’re going to need to use parks and high school football fields — big, open spaces where large crowds can line up safely. And we’re going to need to do it day after day, with no days off.</p>
  82. <p>(Is any of my math wrong? There’s no point in being overly-precise here — but please tell me if I’ve made some error that changes things significantly.)</p>
  83. </article>
  84. <hr>
  85. <footer>
  86. <p>
  87. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  88. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  89. </svg> Accueil</a> •
  90. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  91. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-rss2"></use>
  92. </svg> RSS</a> •
  93. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  94. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-user-tie"></use>
  95. </svg> Pro</a> •
  96. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  97. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-mail"></use>
  98. </svg> Email</a> •
  99. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  100. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-hammer2"></use>
  101. </svg> Légal</abbr>
  102. </p>
  103. <template id="theme-selector">
  104. <form>
  105. <fieldset>
  106. <legend><svg class="icon icon-brightness-contrast">
  107. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-brightness-contrast"></use>
  108. </svg> Thème</legend>
  109. <label>
  110. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  111. </label>
  112. <label>
  113. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  114. </label>
  115. <label>
  116. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  117. </label>
  118. </fieldset>
  119. </form>
  120. </template>
  121. </footer>
  122. <script>
  123. function loadThemeForm(templateName) {
  124. const themeSelectorTemplate = document.querySelector(templateName)
  125. const form = themeSelectorTemplate.content.firstElementChild
  126. themeSelectorTemplate.replaceWith(form)
  127. form.addEventListener('change', (e) => {
  128. const chosenColorScheme = e.target.value
  129. localStorage.setItem('theme', chosenColorScheme)
  130. toggleTheme(chosenColorScheme)
  131. })
  132. const selectedTheme = localStorage.getItem('theme')
  133. if (selectedTheme && selectedTheme !== 'undefined') {
  134. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  135. }
  136. }
  137. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  138. window.addEventListener('load', () => {
  139. let hasDarkRules = false
  140. for (const styleSheet of Array.from(document.styleSheets)) {
  141. let mediaRules = []
  142. for (const cssRule of styleSheet.cssRules) {
  143. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  144. continue
  145. }
  146. // WARNING: Safari does not have/supports `conditionText`.
  147. if (cssRule.conditionText) {
  148. if (cssRule.conditionText !== prefersColorSchemeDark) {
  149. continue
  150. }
  151. } else {
  152. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  153. continue
  154. }
  155. }
  156. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  157. }
  158. // WARNING: do not try to insert a Rule to a styleSheet you are
  159. // currently iterating on, otherwise the browser will be stuck
  160. // in a infinite loop…
  161. for (const mediaRule of mediaRules) {
  162. styleSheet.insertRule(mediaRule.cssText)
  163. hasDarkRules = true
  164. }
  165. }
  166. if (hasDarkRules) {
  167. loadThemeForm('#theme-selector')
  168. }
  169. })
  170. </script>
  171. </body>
  172. </html>