A place to cache linked articles (think custom and personal wayback machine)
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

index.html 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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>The Making of Colophon Cards (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://www.colophon.cards/">
  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>The Making of Colophon Cards</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://www.colophon.cards/" title="Lien vers le contenu original">Source originale</a>
  67. </p>
  68. </nav>
  69. <hr>
  70. <h2>Where is that goddamn PDF?</h2>
  71. <p>Ever had an important document or bookmark, which you <em>know</em> you saved somewhere, and you <em>know</em> was filed somewhere clever, but can’t for the life of you find again?</p>
  72. <p>Ever have a document that you know is somewhere in your company’s shared drive, which is very sensibly organised and structured in a way that you all agreed was correct, but no matter how much you search, you just can’t find it.</p>
  73. <p>You try to search for it, but because you either haven’t read it yet (you filed it away to read later) or because you only glossed over it (it’s a contract or similar document that isn’t pleasure reading), you can’t come up with a search term that seems to surface it. You tagged the file, but even with tag filtering, your search terms are still too generic and still have hundreds, if not thousands, of results.</p>
  74. <p>But, if you were lucky enough to have gotten it via email in the first place, you always seem to be able to find it with the first search term you came up with or in the first mail folder you looked in.</p>
  75. <p>Why do search, folders, and labels/tags work for email but not for your drives (shared or not)?</p>
  76. <p>Why are shared drives always where files disappear, never to be found again except by the person who first saved it?</p>
  77. <p>Unless somebody else moved it. Then that person becomes the only person who can ever find the file again.</p>
  78. <ul>
  79. <li>It’s easier to find files in your own local drive than in a shared one.</li>
  80. <li>Finding a specific email is much faster and easier than finding a specific Google Doc. You’re more likely to find an email containing a link to the Google Doc than to find the doc itself in the drive.</li>
  81. <li>A shared Dropbox is like a black hole for PDFs.</li>
  82. </ul>
  83. <p>Local and personal works better for most kinds of information management because you are the one doing the organising for yourself.</p>
  84. <p>By doing your own organisation you automatically create mnemonic shortcuts for yourself. There isn’t any confusion about terms—you know what you meant when you named the folder ‘Project Stuff’ and another just ‘Stuff’. You remember what you meant in large part because you typed the names out yourself.</p>
  85. <p>The act of saving and filing can also help you remember even if you don’t remember the reasoning—‘I think I saved it in my GitHub folder’. If you delegate the act of filing to an automated script or to another person (as you do with a shared folder) you lose these mnemonic devices. And you know your folder structure in detail because you made them.</p>
  86. <p>This is why it’s easier to find stuff in your local drive than on a shared one.</p>
  87. <p>Email, <em>especially emailing something to yourself</em>, adds another powerful mnemonic device to your toolset:</p>
  88. <p>Writing.</p>
  89. <h2>Short writing helps you find your things</h2>
  90. <p>Constructing search terms that get results is a skill. It’s the flip side to information architecture. Searching shared spaces requires a lot of the same expertise as creating the information architecture for those spaces:</p>
  91. <ul>
  92. <li>Understanding common terms.</li>
  93. <li>Knowing or discovering shared vocabularies.</li>
  94. <li>Discovering a common or learnable cognitive model for the structure.</li>
  95. <li>How these are reflected in the organisation of the company.</li>
  96. <li>Discovering the ontologies used by the company or the field or both.</li>
  97. </ul>
  98. <p>Web developers who know what they are doing will construct the navigation and structure of the site to minimise the need for such expertise, but your intranet, wiki, or Dropbox will generally not have seen such careful design.</p>
  99. <p>In the absence of designed information architecture, you have to resort to constructing the search term based on what you remember about the document.</p>
  100. <p>Which is tough if you haven’t read it yet or only skimmed it. This is why filing it away into a shared drive is as good as losing it.</p>
  101. <p>File names aren’t much help as they are, by convention, very short, regularly generic, and frequently auto-generated in some way.</p>
  102. <p>But an email, especially one that you wrote yourself, is much simpler to find. You may not remember the exact text but you probably have a rough idea and, because you know yourself, you can guess at the words and terms you were likely to use.</p>
  103. <p>This is why sending an email to yourself with a file as an attachment is often a better filing system than throwing it into your shared Dropbox.</p>
  104. <h2>User-Subjective Information Management Works</h2>
  105. <p>This approach is called User-Subjective Information Management (<a href="https://mitpress.mit.edu/books/science-managing-our-digital-stuff"><em>The Science of Managing Our Digital Stuff</em></a> is a good starter on the theory) and you don’t need anything new or expensive to use it. If you’re an Apple user, a combination of the Notes and Mail apps will do you just fine, most of the time.</p>
  106. <p>It does tend to clutter up your email inboxes, though, which can pose problems for both light and heavy email users.</p>
  107. <p>(Though, works quite well for moderate email users so if you fall in that category then I highly recommend this approach.)</p>
  108. <p>That nice Notes app, also, is only available on Apple devices and most of the cross-platform alternatives are either:</p>
  109. <ol>
  110. <li>Stupendously complex behemoths that look like they either need a PhD or a hit of acid for them to make sense.</li>
  111. <li>Or, they take the shared data problem that plagues Google Drive to the next level. Everything is shared. Live. Constant. Your boss is eternally hovering over your virtual shoulder and sees every single keystroke in your collaborative documents.</li>
  112. </ol>
  113. <p>That micromanagement espionage mode of collaboration, or some variation thereof, is the <em>default</em> for almost every collaborative note-taking or knowledge management app out there.</p>
  114. <p>Do you really think you’re going to get honest feedback from everybody you work with when the entire management chain from your line manager up to the CEO can see their every keystroke?</p>
  115. <p>Do you really think you’re going to get very far in managing your own data and information when everybody is using a shared Notion space?</p>
  116. <p>The point of being able to find your documents and notes again is to <em>be able to use them</em>. That means turning them into documents or shared notes and getting some form of feedback on them.</p>
  117. <p>Striking a balance there, between managing your own information library and sharing the <em>product</em> of that management work with others, is surprisingly hard to find with modern tools.</p>
  118. <p>Solving this problem is the goal of Colophon Cards (Kólófón in Icelandic) which is a prototyping project made possible by a grant from <a href="https://en.rannis.is/funding/research/technology-development-fund/nr/545">The Icelandic Centre for Research’s Technology Development Fund</a>.</p>
  119. <p>I’m <a href="https://www.baldurbjarnason.com/">Baldur Bjarnason</a>, the project leader and this website is a chronicle of my journey to bring Colophon Cards to life, so that it can help solve your problems.</p>
  120. <p>Even though the project itself isn’t open-source, I aim to work as much in the spirit of OSS as I can. This is why I plan on doing the prototyping, design, and planning work for the project out in the open in this repository.</p>
  121. <h2>Colophon Cards</h2>
  122. <p>In recent years we’ve seen a micro-revolution in Personal Knowledge and Information Management systems. On the low end, built-in apps such as Apple’s Notes have added more sophisticated capabilities. On the high end, apps like Roam and Notion have been mining the years of research done by academia in hypertext, reading and writing. They have been leveraging academic concepts to add features that now challenge the mainstays in this category.</p>
  123. <p>But, from this end user’s perspective, there are a few problems that these systems haven’t solved:</p>
  124. <ul>
  125. <li>The high-end systems have a very steep learning curve and a substantial cognitive overhead. As in: you spend too much time and energy thinking about your notes instead of using your notes.</li>
  126. <li>The low-end systems lack features for writing <em>about</em> things: bookmarking, annotating, quoting, summarising, navigating, etc. They don’t even have the most basic awareness of the structure of the objects (files, websites, or documents) that the notes are on.</li>
  127. <li>They all implement the same, highly specialised, mode of collaboration: real-time (or near-realtime) shared ownership and shared organisation.</li>
  128. <li>With very few exceptions (Ulysses app, for example), they pay very little attention to the purpose of note-taking, which isn’t just to capture and organise ideas but to improve your work. Your notes should inform your projects, designs, and writing. To do so, you need to be able to easily turn your notes into documents that feed into your work.</li>
  129. </ul>
  130. <p>My goal with Colophon Cards is to create a web-based note-taking app for bookmarking and reading websites, ebooks, and documents. It needs to find a balance between ease-of-use and advanced features. It should have a user-subjective sharing model built in from the start where data is shared while the organisation is specific to each. Finally, it needs to provide straightforward tools for turning notes into documents for sharing with others.</p>
  131. <p class="center"></p>
  132. <h2>Notes on the making of Colophon Cards</h2>
  133. <ol>
  134. <li><a href="https://www.colophon.cards/notes/01-design-notes/">Design Notes</a></li>
  135. <li><a href="https://www.colophon.cards/notes/02-data-model/">The Data Model</a></li>
  136. <li><a href="https://www.colophon.cards/notes/03-sharing-model/">The Sharing Model</a></li>
  137. <li><a href="https://www.colophon.cards/notes/04-attachments-bookmarks/">Attachments and Bookmarks</a></li>
  138. <li><a href="https://www.colophon.cards/notes/05-reading-viewing/">Reading and Viewing</a></li>
  139. <li><a href="https://www.colophon.cards/notes/06-business-model/">The Business Model</a></li>
  140. <li><a href="https://www.colophon.cards/notes/10-questions/">Questions that will need to be answered</a></li>
  141. <li><a href="https://www.colophon.cards/notes/whither-cards/">HTML Sketches: Whither Cards?</a></li>
  142. </ol>
  143. </article>
  144. <hr>
  145. <footer>
  146. <p>
  147. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  148. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
  149. </svg> Accueil</a> •
  150. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  151. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-rss2"></use>
  152. </svg> Suivre</a> •
  153. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  154. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-user-tie"></use>
  155. </svg> Pro</a> •
  156. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  157. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-mail"></use>
  158. </svg> Email</a> •
  159. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  160. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-hammer2"></use>
  161. </svg> Légal</abbr>
  162. </p>
  163. <template id="theme-selector">
  164. <form>
  165. <fieldset>
  166. <legend><svg class="icon icon-brightness-contrast">
  167. <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-brightness-contrast"></use>
  168. </svg> Thème</legend>
  169. <label>
  170. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  171. </label>
  172. <label>
  173. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  174. </label>
  175. <label>
  176. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  177. </label>
  178. </fieldset>
  179. </form>
  180. </template>
  181. </footer>
  182. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  183. <script>
  184. function loadThemeForm(templateName) {
  185. const themeSelectorTemplate = document.querySelector(templateName)
  186. const form = themeSelectorTemplate.content.firstElementChild
  187. themeSelectorTemplate.replaceWith(form)
  188. form.addEventListener('change', (e) => {
  189. const chosenColorScheme = e.target.value
  190. localStorage.setItem('theme', chosenColorScheme)
  191. toggleTheme(chosenColorScheme)
  192. })
  193. const selectedTheme = localStorage.getItem('theme')
  194. if (selectedTheme && selectedTheme !== 'undefined') {
  195. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  196. }
  197. }
  198. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  199. window.addEventListener('load', () => {
  200. let hasDarkRules = false
  201. for (const styleSheet of Array.from(document.styleSheets)) {
  202. let mediaRules = []
  203. for (const cssRule of styleSheet.cssRules) {
  204. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  205. continue
  206. }
  207. // WARNING: Safari does not have/supports `conditionText`.
  208. if (cssRule.conditionText) {
  209. if (cssRule.conditionText !== prefersColorSchemeDark) {
  210. continue
  211. }
  212. } else {
  213. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  214. continue
  215. }
  216. }
  217. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  218. }
  219. // WARNING: do not try to insert a Rule to a styleSheet you are
  220. // currently iterating on, otherwise the browser will be stuck
  221. // in a infinite loop…
  222. for (const mediaRule of mediaRules) {
  223. styleSheet.insertRule(mediaRule.cssText)
  224. hasDarkRules = true
  225. }
  226. }
  227. if (hasDarkRules) {
  228. loadThemeForm('#theme-selector')
  229. }
  230. })
  231. </script>
  232. </body>
  233. </html>