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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  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>Best laid plans (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://amyhupe.co.uk/articles/best-laid-plans/">
  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>Best laid plans</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://amyhupe.co.uk/articles/best-laid-plans/" title="Lien vers le contenu original">Source originale</a>
  67. </p>
  68. </nav>
  69. <hr>
  70. <p>In 1941, my grandmother—my Dad’s Mum—was at home celebrating her daughter Joanna’s 2nd birthday. In the middle of the festivities, a German fighter plane dropped a bomb on the house. Joanna was killed instantly and my grandmother was badly injured, narrowly missing a leg amputation.</p>
  71. <p>On 1 April 1950, my other grandmother—my Mum’s Mum—was waiting for a taxi to take her to the church to marry my grandfather, who was nervously pacing while he waited for her arrival. The taxi, having been booked fairly last minute and on 1 April, assumed it was an April Fools’ joke and never turned up. My grandmother had no choice but to run into the street and hitchhike to her wedding.</p>
  72. <p>In October 2016 I went to pick up a new kitten. He was the only boy in the litter and I’d chosen him from some pictures the owners had sent me. He had huge blue eyes, great big paws and a little white patch over one eye. I couldn’t wait to bring him home. I arrived at the house and was shown to the kittens. They handed him to me, and it was—on his part at least—disdain at first sight. He pushed his tiny paws into my chest with all his might, craning away from me and mewling desperately to be put down. I knew in my heart of hearts: this was not my cat.</p>
  73. <p>In May 2020 I was in the middle of my first client contract and had just signed an extension for 6 months. I started to get unexplained pain and a rash on my neck and head and one day—without much warning—I became paralysed on one side of my face. I was diagnosed with a rare neurological condition called Ramsay Hunt Syndrome. I was told there was a 50% chance I wouldn’t get the movement in my face back, and had to quit my job while I recovered.</p>
  74. <p>After nearly 2 years of this pandemic, on Friday, we received news of a new variant that’s left lots of us feeling scared, angry, and wondering if we’re going back to square one.</p>
  75. <h2>Accepting setbacks</h2>
  76. <p>When our plans go awry it can be a mild inconvenience, a difficult adjustment, or an excruciating blow that leaves you wondering “how on earth am I going to get through this?”.</p>
  77. <p>When my plans are side-swiped I have a tendency to try and rush to acceptance. I feel like every second spent lamenting what’s happened is another second I’m not moving forward, into something new and more positive.</p>
  78. <p>But here’s what I’m learning: Rushing to move past a setback and into plan B is not—as I often tell myself—an efficient form of acceptance. It’s a numbing strategy, intellectualising a solution to avoid facing up to the disappointment or the anguish of losing plan A. Thinking so we don’t have to feel.</p>
  79. <p>And it doesn't work. Telling yourself something doesn’t matter doesn’t make it not matter. Pain has a funny way of demanding your attention one way or another—putting it off is just racking up debt on an emotional credit card. Eventually, you're going to have to pay.</p>
  80. <p>I asked my friend—a therapist—what he thinks about acceptance, and what to do when bad things happen—and he said something that stuck with me: “Acceptance means you give yourself to yourself as you are.”</p>
  81. <p>That means feeling the loss of plan A: whether that's losing someone we love who wasn't supposed to go, a wedding plan gone-awry, a kitten who patently hates you, an unexpected illness, or another twist in a relentless pandemic.</p>
  82. <p>Acknowledging our reaction, whether it's what we'd choose to feel or not, is helpful. Why? Because it's an essential part of acceptance.</p>
  83. <p>The good and the bad news is that there's always a next chapter.</p>
  84. <h2>The story continues</h2>
  85. <p>I’m not going to say that everything happens for a reason. Some things are <em>just</em> awful, and we’ll never be able to be glad they happened.</p>
  86. <p>What I do believe is that life continues to unfold after its plot twists.</p>
  87. <p>My grandmother whose daughter was killed in World War II was only ever going to have 2 children. After Joanna died, she had my uncle, and after my uncle, she had my Dad. If it weren’t for that night, neither he nor I would be here, and you wouldn’t be reading this blog post.</p>
  88. <p>And my other grandmother—the one who hitchhiked to her wedding? She made it to the church. She married my grandfather and made the front page of the newspaper. They were happily married for 40 years before he died. They had 3 children and 9 grandchildren. She lived another 25 years, and regaled us often with the story of their wedding day over a glass of sherry.</p>
  89. <p>As the kitten wriggled crossly in my arms and I silently wondered if I could reasonably adopt an animal who clearly despised me, my best friend crouched down behind me and picked up his sister. I turned around to see a scruffy, docile little black bundle sitting happily in her arms, with enormous whiskers and a signature white chin that made her look like she was frowning. She is now a 5 year old cat called Mabel, who purred all the way home that day and has been an enormous beating heart in our family ever since.</p>
  90. <p>And as for my face, I slowly regained movement and am now pretty much back to normal. I took 2 months off to rest, read, listen to podcasts and sit outside in the sunshine. I realised work wasn’t the only important thing in my life and I learned that I’m tougher than I ever gave myself credit for, when I need to be.</p>
  91. <p>I don’t know where we go from here, with this latest pandemic setback, but I do know that things will keep moving.</p>
  92. <p>And if you feel bad today, feel bad. Feel sad or angry or scared or whatever it is you need to feel. Give yourself to yourself as you are.</p>
  93. <p>Things will keep changing. Life will keep unfolding. We will keep going.</p>
  94. </article>
  95. <hr>
  96. <footer>
  97. <p>
  98. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  99. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  100. </svg> Accueil</a> •
  101. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  102. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  103. </svg> Suivre</a> •
  104. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  105. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  106. </svg> Pro</a> •
  107. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  108. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  109. </svg> Email</a> •
  110. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  111. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  112. </svg> Légal</abbr>
  113. </p>
  114. <template id="theme-selector">
  115. <form>
  116. <fieldset>
  117. <legend><svg class="icon icon-brightness-contrast">
  118. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  119. </svg> Thème</legend>
  120. <label>
  121. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  122. </label>
  123. <label>
  124. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  125. </label>
  126. <label>
  127. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  128. </label>
  129. </fieldset>
  130. </form>
  131. </template>
  132. </footer>
  133. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  134. <script>
  135. function loadThemeForm(templateName) {
  136. const themeSelectorTemplate = document.querySelector(templateName)
  137. const form = themeSelectorTemplate.content.firstElementChild
  138. themeSelectorTemplate.replaceWith(form)
  139. form.addEventListener('change', (e) => {
  140. const chosenColorScheme = e.target.value
  141. localStorage.setItem('theme', chosenColorScheme)
  142. toggleTheme(chosenColorScheme)
  143. })
  144. const selectedTheme = localStorage.getItem('theme')
  145. if (selectedTheme && selectedTheme !== 'undefined') {
  146. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  147. }
  148. }
  149. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  150. window.addEventListener('load', () => {
  151. let hasDarkRules = false
  152. for (const styleSheet of Array.from(document.styleSheets)) {
  153. let mediaRules = []
  154. for (const cssRule of styleSheet.cssRules) {
  155. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  156. continue
  157. }
  158. // WARNING: Safari does not have/supports `conditionText`.
  159. if (cssRule.conditionText) {
  160. if (cssRule.conditionText !== prefersColorSchemeDark) {
  161. continue
  162. }
  163. } else {
  164. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  165. continue
  166. }
  167. }
  168. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  169. }
  170. // WARNING: do not try to insert a Rule to a styleSheet you are
  171. // currently iterating on, otherwise the browser will be stuck
  172. // in a infinite loop…
  173. for (const mediaRule of mediaRules) {
  174. styleSheet.insertRule(mediaRule.cssText)
  175. hasDarkRules = true
  176. }
  177. }
  178. if (hasDarkRules) {
  179. loadThemeForm('#theme-selector')
  180. }
  181. })
  182. </script>
  183. </body>
  184. </html>