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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  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>★ Children of the Hyperlink (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://buttondown.email/robinrendle/archive/children-of-the-hyperlink/">
  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>★ Children of the Hyperlink</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://buttondown.email/robinrendle/archive/children-of-the-hyperlink/" title="Lien vers le contenu original">Source originale</a>
  67. </p>
  68. </nav>
  69. <hr>
  70. <p>Hyperlink compatriots!</p>
  71. <p><a href="https://robinrendle.com/" target="_blank">Robin Rendle</a> here. This morning began with a slow but productive start. I was up early. Showered. Dressed. Laundry. Dishes. Trash. Breakfast. After all that the Mobile Depression Device told me that my screen time was up 30% this week which sounds about right. I still feel dazed from all the screens. </p>
  72. <p>And so today there will be only books, only reading. Let’s begin:</p>
  73. <blockquote>
  74. <p>If a Web site is moved, deleted, or hidden behind a paywall, every link that pointed to it becomes meaningless, dangling like an anchor line cut loose from a ship. </p>
  75. </blockquote>
  76. <p>Whoa! Okay, sure. What a way to start off huh. </p>
  77. <p>This is a section from about half way through <em>Broad Band: The Untold Story of the Women Who Made the Internet</em> by <a href="https://clairelevans.com/" target="_blank">Claire L. Evans</a> and I can’t recommend it enough. Claire investigates the women who built and designed the physical infrastructure and the immaterial (yet vital) social network that is the World Wide Web. So heck yes go read this thing.</p>
  78. <p>Here’s one example where Claire interviewed Cathy Marshall, a hypertext researcher (!) who worked at Xerox PARC in the mid 1980s. This is where the modern idea of a computer came together in Palo Alto; mice, keyboard, graphical interface. But there’s a moment in the interview where Cathy talks about her note-taking process:</p>
  79. <blockquote>
  80. <p>“If I write something and if it doesn’t work, I’ll throw out the whole thing and start again,” she tells me. “I don’t think you lose what you’ve written. It’s still in your head. Over time, what you’re doing is changing what’s in your mind—what’s on paper is just incidental.” She makes this comment offhand, but the insight knocks me out. That’s what software is, I realize: <em>a system for changing your mind</em>.</p>
  81. </blockquote>
  82. <p>Excuse me: what! This is perhaps the best (and most optimistic) explanation for what software can be. And honestly this whole book is littered with moments like this where computers are seen as experimental wonders and not the terrifying work of pure evil that we often describe them as, like I did above when I called my phone a “Mobile Depression Device”. This book is not the hand-wavey, dumb optimism though—NFTs, blockchain crap, and self-driving cars—but exhilarating, earnest, intelligent optimism which is so very rare to find.</p>
  83. <p>But there was this one section of the book that I noticed myself wince through and it started when Claire describes the early 90s. In this section she details all these competing hyperlinking systems before most people had a personal computer, and she mentions that what we know today as the World Wide Web was not inevitable at all and was but only one of several hyperlinking systems on display at <em>Hypertext 91</em>, a conference in San Antonio:</p>
  84. <blockquote>
  85. <p>…Berners-Lee and Caillau were forced to demo a dummy version of the Web saved on optical disk. And it <em>was</em> too simplistic. Compared with the other systems on display, the Web’s version of hypertext was years behind. Links on the World Wide Web went in only one direction, to a single destination…</p>
  86. </blockquote>
  87. <p>Claire adds that hyperlinks on the web have a number of failures; it’s easy for a link not to resolve (someone deletes the web page) and there’s no information about what’s on the other side of that link, there’s no way to make connections between links except from a page. In short: links on the web are extremely fragile and extraordinarily dumb.</p>
  88. <p>If I’m honest though it was difficult to read this part. First, I find it hard to imagine how any other system besides what we have today might work. As far as I understand, in older hyperlinking systems, pages didn’t really exist and everyone was kind of creating their own database of links. This sounds like far too much work! It actually sounds exhausting, expecting everyone to effectively become librarians of their own private internet.</p>
  89. <p>So hyperlinks might be dumb, but I see their dumbness as a feature and not a bug.</p>
  90. <p>Second, I find it difficult to read this criticism of the web because, well, I’m a child of the hyperlink. My entire career is based on the existence of the <code>&lt;a&gt;</code> tag; creating, sharing, surfing, making sure that web pages can fit together in just the right way so that people will want to click this blue link over another. </p>
  91. <p>But also I was wincing here because every good thing in my life is the product of me clicking the right hyperlink and the right time. Me here, in San Francisco. My friends. My colleagues. My apartment. Everything is a hyperlink! And so to hear that they’re dumb feels like Claire is saying that the impact of them on my life is also dumb. (I know this is not what she’s saying, but still. It’s weird that I feel very protective over my dumb hyperlinks.)</p>
  92. <p>The extra strange thing about all this is that I thoroughly agree with Claire’s criticisms. I still think the biggest flaw of the web is that we’re renting space on servers and that if a credit card is declined or someone doesn’t read an email then that whole website can disappear forever. Now, I’m not an archivist—I don’t believe that every website should live forever and I think there’s a benefit to some kinds of information being temporary. But! I do want <em>my</em> website to live forever. Not out of pride or short-sighted fame, but because I want it to be a record or perhaps a kind of proof: that, hello, I was here at this special moment in time where all of humanity was hyperlinked together. </p>
  93. <p>And, hopefully, if I’m lucky, I made a few things here that were worth linking to.</p>
  94. <p>Until next week,
  95. <br>
  96. ✌️ Robin</p>
  97. <p><img alt="CleanShot 2022-01-30 at 12.16.51@2x.png" src="https://buttondown.s3.amazonaws.com/images/16682958-f9e0-403a-9864-d4bb997af078.png"></p>
  98. </article>
  99. <hr>
  100. <footer>
  101. <p>
  102. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  103. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  104. </svg> Accueil</a> •
  105. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  106. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  107. </svg> Suivre</a> •
  108. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  109. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  110. </svg> Pro</a> •
  111. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  112. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  113. </svg> Email</a> •
  114. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  115. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  116. </svg> Légal</abbr>
  117. </p>
  118. <template id="theme-selector">
  119. <form>
  120. <fieldset>
  121. <legend><svg class="icon icon-brightness-contrast">
  122. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  123. </svg> Thème</legend>
  124. <label>
  125. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  126. </label>
  127. <label>
  128. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  129. </label>
  130. <label>
  131. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  132. </label>
  133. </fieldset>
  134. </form>
  135. </template>
  136. </footer>
  137. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  138. <script>
  139. function loadThemeForm(templateName) {
  140. const themeSelectorTemplate = document.querySelector(templateName)
  141. const form = themeSelectorTemplate.content.firstElementChild
  142. themeSelectorTemplate.replaceWith(form)
  143. form.addEventListener('change', (e) => {
  144. const chosenColorScheme = e.target.value
  145. localStorage.setItem('theme', chosenColorScheme)
  146. toggleTheme(chosenColorScheme)
  147. })
  148. const selectedTheme = localStorage.getItem('theme')
  149. if (selectedTheme && selectedTheme !== 'undefined') {
  150. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  151. }
  152. }
  153. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  154. window.addEventListener('load', () => {
  155. let hasDarkRules = false
  156. for (const styleSheet of Array.from(document.styleSheets)) {
  157. let mediaRules = []
  158. for (const cssRule of styleSheet.cssRules) {
  159. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  160. continue
  161. }
  162. // WARNING: Safari does not have/supports `conditionText`.
  163. if (cssRule.conditionText) {
  164. if (cssRule.conditionText !== prefersColorSchemeDark) {
  165. continue
  166. }
  167. } else {
  168. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  169. continue
  170. }
  171. }
  172. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  173. }
  174. // WARNING: do not try to insert a Rule to a styleSheet you are
  175. // currently iterating on, otherwise the browser will be stuck
  176. // in a infinite loop…
  177. for (const mediaRule of mediaRules) {
  178. styleSheet.insertRule(mediaRule.cssText)
  179. hasDarkRules = true
  180. }
  181. }
  182. if (hasDarkRules) {
  183. loadThemeForm('#theme-selector')
  184. }
  185. })
  186. </script>
  187. </body>
  188. </html>