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 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  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>Training my sense of CO2 ppm (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. <!-- 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. <meta name="robots" content="noindex, nofollow">
  53. <meta content="origin-when-cross-origin" name="referrer">
  54. <!-- Canonical URL for SEO purposes -->
  55. <link rel="canonical" href="https://interconnected.org/home/2022/07/14/co2">
  56. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  57. <article>
  58. <header>
  59. <h1>Training my sense of CO2 ppm</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 href="https://interconnected.org/home/2022/07/14/co2" title="Lien vers le contenu original">Source originale</a>
  67. </p>
  68. </nav>
  69. <hr>
  70. <p class="measure-wide f6 f5-l lh-copy black-80">I picked up a new home CO2 monitor yesterday. <a href="https://www.instagram.com/p/Cf9iuIHqdOv/">Here’s a photo.</a> I went with the <a href="https://aranet.com/products/aranet4/">Aranet4 (HOME edition)</a> because</p>
  71. <ul class="list ph0 ph0-ns bulleted-list">
  72. <li class="measure-wide f6 f5-l lh-copy black-80">it’s small and portable with a multi-year battery life</li>
  73. <li class="measure-wide f6 f5-l lh-copy black-80">it displays the current CO2 ppm on an e-ink screen and I am a sucker for e-ink – practical and handsome</li>
  74. <li class="measure-wide f6 f5-l lh-copy black-80">it logs data, taking a reading every 5 minutes and keeping a 7 day history, accessible using the app (Bluetooth not wi-fi, and I appreciate the lack of dependency on cloud services).</li>
  75. </ul>
  76. <p class="measure-wide f6 f5-l lh-copy black-80">I bought mine on Amazon for the same price as buying direct.</p>
  77. <hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
  78. <p class="measure-wide f6 f5-l lh-copy black-80"><strong>I want to build an intuition for how varying CO2 levels make me feel.</strong></p>
  79. <p class="measure-wide f6 f5-l lh-copy black-80">This second, near my desk, CO2 is 463 ppm (ppm = parts per million).</p>
  80. <p class="measure-wide f6 f5-l lh-copy black-80">Atmospheric is approx 420 ppm so it’s higher indoors – and higher still when I’ve been sitting in the same room all day.</p>
  81. <p class="measure-wide f6 f5-l lh-copy black-80">CO2 levels are pretty dynamic, I’m told. An occupied, closed room will get to 1,000 ppm. A meeting room without fresh air, 1,500 ppm. You can hit over 2,000 ppm in a contained space like a train.</p>
  82. <p class="measure-wide f6 f5-l lh-copy black-80">High CO2 levels are an indicator of poor ventilation, which isn’t great for Covid transmission.</p>
  83. <p class="measure-wide f6 f5-l lh-copy black-80">But <em>also</em> not good for cognition.</p>
  84. <blockquote cite="https://www.sciencedaily.com/releases/2020/04/200421090556.htm" class="quoteback bl bw2 pl2 b--orange ml0 italic i" data-author="ScienceDaily" data-title="Rising carbon dioxide causes more than a climate crisis -- it may directly harm our ability to think (2020)">
  85. <p class="measure-wide f6 f5-l lh-copy black-80">at 1400 ppm, CO2 concentrations may cut our basic decision-making ability by 25 percent, and complex strategic thinking by around 50 percent</p>
  86. </blockquote>
  87. <p class="measure-wide f6 f5-l lh-copy black-80">Even before that, you start to get drowsy around 1,000 ppm. How much brain fog is not to do with long Covid but simply because I’m no longer sitting in a large, well-ventilated office? I’d like to know.</p>
  88. <p class="measure-wide f6 f5-l lh-copy black-80"><em>(Hey so there’s a chance that CO2 levels rise to the point that we all become too dumb to figure out the climate crisis. Ruh roh /insert Scooby Doo gif.)</em></p>
  89. <p class="measure-wide f6 f5-l lh-copy black-80">You can train your own sense of the current ppm by keeping an eye on the sensor read-out and introspecting your personal energy levels. Here’s what my friend Ben Pawle from <a href="https://nordprojects.co">Nord Projects</a> told me:</p>
  90. <blockquote class="bl bw2 pl2 b--orange ml0 italic i">
  91. <p class="measure-wide f6 f5-l lh-copy black-80">We’ve got one in the studio. Actually been surprisingly helpful. When you start getting brain fog and feeling sluggish then you glance and see the co2 is 800 you know to open more windows. Then you feel great! We’ve actually got weirdly good at describing how we feel in terms of energy levels by co2 level</p>
  92. </blockquote>
  93. <p class="measure-wide f6 f5-l lh-copy black-80">Which is not the first time I’ve heard that!</p>
  94. <p class="measure-wide f6 f5-l lh-copy black-80">I’m looking forward to the day when I can walk into a room and say, <em>huh, feels like 800 in here,</em> and decide to sit somewhere else.</p>
  95. <p class="measure-wide f6 f5-l lh-copy black-80">Here’s the referenced paper from the article above.</p>
  96. <p class="measure-wide f6 f5-l lh-copy black-80">Karnauskas, K. B., Miller, S. L., &amp; Schapiro, A. C. (2020). <a href="https://doi.org/10.1029/2019GH000237">Fossil Fuel Combustion Is Driving Indoor CO2 Toward Levels Harmful to Human Cognition.</a> <em>GeoHealth, 4</em>(5).</p>
  97. <hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
  98. <p class="measure-wide f6 f5-l lh-copy black-80"><strong>I want to train my mental model for how CO2 levels change over time.</strong></p>
  99. <p class="measure-wide f6 f5-l lh-copy black-80">I have questions like:</p>
  100. <ul class="list ph0 ph0-ns bulleted-list">
  101. <li class="measure-wide f6 f5-l lh-copy black-80">What happens to CO2 over 4 hours while I’m at my desk?</li>
  102. <li class="measure-wide f6 f5-l lh-copy black-80">Does it make a difference that my desk faces a corner – does CO2 collect there as I breathe? How long does it take to equalise over the room?</li>
  103. <li class="measure-wide f6 f5-l lh-copy black-80">With the door open? With a window open just a crack?</li>
  104. <li class="measure-wide f6 f5-l lh-copy black-80">How long does it take for CO2 to reset to ambient? 5 minutes? An hour? Is a 30 minute break for lunch enough?</li>
  105. </ul>
  106. <p class="measure-wide f6 f5-l lh-copy black-80">To do this I need graphs.</p>
  107. <p class="measure-wide f6 f5-l lh-copy black-80">Now I was initially concerned that the Aranet4 sends its logged data only to its own app. Looking at a 7 day graph in an app is fine, but I’d prefer to do my own presentation and analysis. I would like to</p>
  108. <ul class="list ph0 ph0-ns bulleted-list">
  109. <li class="measure-wide f6 f5-l lh-copy black-80">collect data over several months and spot correlations. Do I tend to leave the windows closed when it’s colder, for example (of course I do), and is this a problem?</li>
  110. <li class="measure-wide f6 f5-l lh-copy black-80">see if mornings are better than afternoons?</li>
  111. <li class="measure-wide f6 f5-l lh-copy black-80">get a good sense of what “normal” CO2 variations are over the day and seasonally, indoors/outdoors/etc, and when I should act (the sensor is portable, so I’ll start carrying it around to different venues once I develop a foundational understanding).</li>
  112. </ul>
  113. <p class="measure-wide f6 f5-l lh-copy black-80">Also:</p>
  114. <p class="measure-wide f6 f5-l lh-copy black-80"><strong>Alerts!</strong> If CO2 hits 800 ppm (for example) I would like to ping my smart plug to turn on the coloured Christmas lights that hang on the shelves behind me. That’s not enough to interrupt me if I’m concentrating, but it gives me peripheral vision that I should increase ventilation and I’ll notice it when my head comes out of flow. I’m aaaaall about that ambient awareness.</p>
  115. <p class="measure-wide f6 f5-l lh-copy black-80">So I don’t want my data trapped in an app. I want the sensor to have an hardware API. <a href="/home/2021/08/03/phono">I wrote about the idea of hardware APIs here</a> <em>(2021):</em></p>
  116. <blockquote class="bl bw2 pl2 b--orange ml0 italic i">
  117. <p class="measure-wide f6 f5-l lh-copy black-80">Devices should have a standard hardware API – a couple of pins that publish events (like: radio re-tuned, or switch pressed, or doorbell motion sensor activated) and accept commands (like: re-tune to X, or remote activate switch, or record and send video)</p>
  118. </blockquote>
  119. <p class="measure-wide f6 f5-l lh-copy black-80"><em>(It doesn’t need to be copper pins. Wireless is fine too, so long as it’s open.)</em></p>
  120. <p class="measure-wide f6 f5-l lh-copy black-80"><em>(It’s important that this runs locally, without hitting the cloud, because the privacy concerns of this level of access to my home are considerable.)</em></p>
  121. <p class="measure-wide f6 f5-l lh-copy black-80">Basically: I want to work with my home gadgets and appliances as easily as I can set up rules and filters in Gmail.</p>
  122. <p class="measure-wide f6 f5-l lh-copy black-80">AND SO I am tentatively happy that there is a <a href="https://github.com/stijnstijn/pyaranet4">Python library for the Aranet4 sensor</a> (pyaranet4)! Good news.</p>
  123. <p class="measure-wide f6 f5-l lh-copy black-80">This means that, in theory, I should be able to connect from my Mac, or the always-on Raspberry Pi sitting on the bookshelves, and pull data from the sensor on a regular schedule. And given <em>that</em> I should be able to do all of the above.</p>
  124. <p class="measure-wide f6 f5-l lh-copy black-80">A project!</p>
  125. <hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
  126. <p class="measure-wide f6 f5-l lh-copy black-80">I was born at 335 ppm. Atmospheric CO2 is 25% higher today.</p>
  127. <p class="measure-wide f6 f5-l lh-copy black-80">(See <a href="https://www.co2levels.org">co2levels.org</a> for a giant historic graph.)</p>
  128. <p class="measure-wide f6 f5-l lh-copy black-80">Ok so there’s noticeable cognitive impairment on complex decision making when CO2 levels are <em>much</em> higher – but is even this 25% atmospheric uplift dinging my IQ?</p>
  129. <p class="measure-wide f6 f5-l lh-copy black-80">Like: lead in fuel, <a href="/home/2022/03/11/saeculum">as previously discussed</a>: <q>Leaded fuel reduced the IQ of everyone born before 1990 by ~4.25%.</q></p>
  130. <p class="measure-wide f6 f5-l lh-copy black-80">Which is <em>wild,</em> right? And may explain some elements of boomer politics…</p>
  131. <p class="measure-wide f6 f5-l lh-copy black-80">But, being more specific, what lead is dinging isn’t just IQ – I seem to remember that lead affects impulse control? And CO2 affects <em>“complex strategic thinking”</em> so that’s an attentional thing, maybe?</p>
  132. <p class="measure-wide f6 f5-l lh-copy black-80">I am suuuuuuper out on a limb here, but: <em>smartphones?</em> What if this century’s rise of short-attention-span casual games, attentional disorders, etc, is not to do with too much screen-time at all, but is a symptom of growing up under increased atmospheric CO2?</p>
  133. <p class="measure-wide f6 f5-l lh-copy black-80">And so our recently-slightly-diminished inability to hold a coherent thought for a long span of time is what attention-maximiser apps like infinite-scrollers (Twitter) and ad-engagement-optimisers (Facebook) and swipe-skinner-boxes (TikTok, Tinder) are, deep down, all exploiting?</p>
  134. </article>
  135. <hr>
  136. <footer>
  137. <p>
  138. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  139. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  140. </svg> Accueil</a> •
  141. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  142. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  143. </svg> Suivre</a> •
  144. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  145. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  146. </svg> Pro</a> •
  147. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  148. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  149. </svg> Email</a> •
  150. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  151. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  152. </svg> Légal</abbr>
  153. </p>
  154. <template id="theme-selector">
  155. <form>
  156. <fieldset>
  157. <legend><svg class="icon icon-brightness-contrast">
  158. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  159. </svg> Thème</legend>
  160. <label>
  161. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  162. </label>
  163. <label>
  164. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  165. </label>
  166. <label>
  167. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  168. </label>
  169. </fieldset>
  170. </form>
  171. </template>
  172. </footer>
  173. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  174. <script>
  175. function loadThemeForm(templateName) {
  176. const themeSelectorTemplate = document.querySelector(templateName)
  177. const form = themeSelectorTemplate.content.firstElementChild
  178. themeSelectorTemplate.replaceWith(form)
  179. form.addEventListener('change', (e) => {
  180. const chosenColorScheme = e.target.value
  181. localStorage.setItem('theme', chosenColorScheme)
  182. toggleTheme(chosenColorScheme)
  183. })
  184. const selectedTheme = localStorage.getItem('theme')
  185. if (selectedTheme && selectedTheme !== 'undefined') {
  186. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  187. }
  188. }
  189. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  190. window.addEventListener('load', () => {
  191. let hasDarkRules = false
  192. for (const styleSheet of Array.from(document.styleSheets)) {
  193. let mediaRules = []
  194. for (const cssRule of styleSheet.cssRules) {
  195. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  196. continue
  197. }
  198. // WARNING: Safari does not have/supports `conditionText`.
  199. if (cssRule.conditionText) {
  200. if (cssRule.conditionText !== prefersColorSchemeDark) {
  201. continue
  202. }
  203. } else {
  204. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  205. continue
  206. }
  207. }
  208. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  209. }
  210. // WARNING: do not try to insert a Rule to a styleSheet you are
  211. // currently iterating on, otherwise the browser will be stuck
  212. // in a infinite loop…
  213. for (const mediaRule of mediaRules) {
  214. styleSheet.insertRule(mediaRule.cssText)
  215. hasDarkRules = true
  216. }
  217. }
  218. if (hasDarkRules) {
  219. loadThemeForm('#theme-selector')
  220. }
  221. })
  222. </script>
  223. </body>
  224. </html>