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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  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>Anxious feelings about optimisation through complexity (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="http://interconnected.org/home/2021/02/12/optimisation">
  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>Anxious feelings about optimisation through complexity</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="http://interconnected.org/home/2021/02/12/optimisation" 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">Optimisation makes me itchy.</p>
  71. <p class="measure-wide f6 f5-l lh-copy black-80">A couple of examples. The thermostat Google Nest has <a href="https://support.google.com/googlenest/answer/9244031">Rush Hour Rewards</a> which will <q>automatically tune temperatures before and during a Rush Hour to reduce energy use and lower grid costs</q> (a “Rush Hour” is when everyone turns their air conditioning on at the same time).</p>
  72. <p class="measure-wide f6 f5-l lh-copy black-80">Similar: <a href="https://carbon.coop/portfolio/power-shaper/">Power Shaper by Carbon Co-op</a> which I’m sorry to pick on because lots of UK energy companies will be doing this with smart meters, but this is the one I saw first. <em>(Thanks <a href="https://holdfastprojects.com">Rod McLaren</a> for sending it my way.)</em></p>
  73. <blockquote class="bl bw1 pl2 b--light-red ml0 italic i">
  74. <p class="measure-wide f6 f5-l lh-copy black-80">Carbon Co-op technicians will visit your home and install equipment which will enable certain existing electrical appliances (such as electric vehicle chargers, heat pumps, immersion water heaters, battery storage) to be turned on/off remotely.</p>
  75. <p class="measure-wide f6 f5-l lh-copy black-80">We turn things on/off only when we receive a request from grid operators and other parties.</p>
  76. </blockquote>
  77. <p class="measure-wide f6 f5-l lh-copy black-80">On the face of it, this makes a ton of sense.</p>
  78. <p class="measure-wide f6 f5-l lh-copy black-80">We’re shifting to renewable energy. The wind and sun have their own schedule. But say everyone gets home at 7pm and plugs in their new electric car, or turns the kettle at halftime in the football, that’s a demand spike, and that’s when a coal power station fires up, so the energy is supplied to the grid but it’s dirty energy.</p>
  79. <p class="measure-wide f6 f5-l lh-copy black-80">Long term this gets fixed by having neighbourhood batteries to smooth the spikes. Ahead of that, demand can be adjusted by automatically turning things off. Feedback loops.</p>
  80. <p class="measure-wide f6 f5-l lh-copy black-80">BUT.</p>
  81. <p class="measure-wide f6 f5-l lh-copy black-80">In Vernor Vinge’s space opera <a href="https://en.wikipedia.org/wiki/A_Fire_Upon_the_Deep">A Fire Upon the Deep</a> (1992) there’s a planet called <em>Namqem</em> with a high technology civilisation 4,000 years old.</p>
  82. <blockquote class="bl bw1 pl2 b--light-red ml0 italic i">
  83. <p class="measure-wide f6 f5-l lh-copy black-80">Namqem was a triumph of distributed automation. And every decade it became a little better. Every decade the flexibility of the governance responded to the pressures to optimize resource allocation, and the margins of safety shrank.</p>
  84. </blockquote>
  85. <p class="measure-wide f6 f5-l lh-copy black-80">Which is a problem. As one of the characters says: <q>They’ve accepting optimizing pressures for centuries now. … finally the optimizations have taken them to the point of fragility.</q></p>
  86. <blockquote class="bl bw1 pl2 b--light-red ml0 italic i">
  87. <p class="measure-wide f6 f5-l lh-copy black-80">‘The symptoms are classic. The last decade, the rate of system deadlocks has steadily increased throughout Namqem. See here, thirty percent of business commuting between the outer moons is in locked state at any given time.’ All the hardware was in working order, but the system complexity was so great that vehicles could not get the go-ahead.</p>
  88. </blockquote>
  89. <p class="measure-wide f6 f5-l lh-copy black-80">So eventually, as an alternative to escalating resource wars, optimisation becomes complete: every embedded computing system an instrument for total social control.</p>
  90. <p class="measure-wide f6 f5-l lh-copy black-80">But it doesn’t help, collapse comes, billions die, and so on.</p>
  91. <hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
  92. <p class="measure-wide f6 f5-l lh-copy black-80">I must have read Vinge at a particularly susceptible age. Because since then I see optimisation-through-complexity as a particular kind of danger.</p>
  93. <p class="measure-wide f6 f5-l lh-copy black-80">Not optimisation on its own. Doing something with as little energy as possible is <em>elegant.</em></p>
  94. <p class="measure-wide f6 f5-l lh-copy black-80">And not complexity on its own either. Complexity has its own problems: reduced legibility, the creation of priesthoods to maintain it, etc.</p>
  95. <p class="measure-wide f6 f5-l lh-copy black-80">But when you increase complexity in order to optimise, demand never really goes down. The optimisation becomes an opportunity to do more, and so the complexity gets locked in – there will never be the chance to remove it.</p>
  96. <p class="measure-wide f6 f5-l lh-copy black-80">And that compounding complexity, layers upon layers of it, a nest of interlocking feedback loops, increases the risk of fatal, emergent complexity quakes.</p>
  97. <p class="measure-wide f6 f5-l lh-copy black-80">All of which colours my approach to everything from how I architect my code, to how I organise my finances, to what government policies I like.</p>
  98. <p class="measure-wide f6 f5-l lh-copy black-80">Whenever I see something like Nest’s Rush Hour Rewards or Carbon Co-op’s Power Shaper, it makes me feel like we’re all taking one step closer to an invisible cliff edge, and the drop could be half a mile away, or it could be one inch.</p>
  99. <hr class="h1 xh2-ns w1 xw2-ns ml4 mv4 bb bw1 b--white">
  100. <p class="measure-wide f6 f5-l lh-copy black-80">I also have a high level of nervousness around magnets. I grew up with floppy disks (that would be wiped) and cathode ray tube screens (that would be permanently ruined). So magnets on wallets or toys – I’m on edge if they’re ever near electronics, and I watch them with a hawk eye until they’re at a safe distance. Magnets on laptops and iPads still seem wrong to me. Even though it’s fine now and has been for many years.</p>
  101. <p class="measure-wide f6 f5-l lh-copy black-80">By which I mean, don’t take my views too seriously, I’m a mess of unfounded prejudices about emergent systems and ferrous solids.</p>
  102. </article>
  103. <hr>
  104. <footer>
  105. <p>
  106. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  107. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  108. </svg> Accueil</a> •
  109. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  110. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  111. </svg> Suivre</a> •
  112. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  113. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  114. </svg> Pro</a> •
  115. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  116. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  117. </svg> Email</a> •
  118. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  119. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  120. </svg> Légal</abbr>
  121. </p>
  122. <template id="theme-selector">
  123. <form>
  124. <fieldset>
  125. <legend><svg class="icon icon-brightness-contrast">
  126. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  127. </svg> Thème</legend>
  128. <label>
  129. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  130. </label>
  131. <label>
  132. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  133. </label>
  134. <label>
  135. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  136. </label>
  137. </fieldset>
  138. </form>
  139. </template>
  140. </footer>
  141. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  142. <script>
  143. function loadThemeForm(templateName) {
  144. const themeSelectorTemplate = document.querySelector(templateName)
  145. const form = themeSelectorTemplate.content.firstElementChild
  146. themeSelectorTemplate.replaceWith(form)
  147. form.addEventListener('change', (e) => {
  148. const chosenColorScheme = e.target.value
  149. localStorage.setItem('theme', chosenColorScheme)
  150. toggleTheme(chosenColorScheme)
  151. })
  152. const selectedTheme = localStorage.getItem('theme')
  153. if (selectedTheme && selectedTheme !== 'undefined') {
  154. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  155. }
  156. }
  157. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  158. window.addEventListener('load', () => {
  159. let hasDarkRules = false
  160. for (const styleSheet of Array.from(document.styleSheets)) {
  161. let mediaRules = []
  162. for (const cssRule of styleSheet.cssRules) {
  163. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  164. continue
  165. }
  166. // WARNING: Safari does not have/supports `conditionText`.
  167. if (cssRule.conditionText) {
  168. if (cssRule.conditionText !== prefersColorSchemeDark) {
  169. continue
  170. }
  171. } else {
  172. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  173. continue
  174. }
  175. }
  176. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  177. }
  178. // WARNING: do not try to insert a Rule to a styleSheet you are
  179. // currently iterating on, otherwise the browser will be stuck
  180. // in a infinite loop…
  181. for (const mediaRule of mediaRules) {
  182. styleSheet.insertRule(mediaRule.cssText)
  183. hasDarkRules = true
  184. }
  185. }
  186. if (hasDarkRules) {
  187. loadThemeForm('#theme-selector')
  188. }
  189. })
  190. </script>
  191. </body>
  192. </html>