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

  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>
  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,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Computer Files Are Going Extinct (archive) — David Larlet</title>
  13. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  14. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
  15. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
  16. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
  17. <link rel="manifest" href="/manifest.json">
  18. <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
  19. <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
  20. <meta name="apple-mobile-web-app-title" content="David Larlet">
  21. <meta name="application-name" content="David Larlet">
  22. <meta name="msapplication-TileColor" content="#da532c">
  23. <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
  24. <meta name="theme-color" content="#f0f0ea">
  25. <!-- That good ol' feed, subscribe :p. -->
  26. <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
  27. <meta name="robots" content="noindex, nofollow">
  28. <meta content="origin-when-cross-origin" name="referrer">
  29. <!-- Canonical URL for SEO purposes -->
  30. <link rel="canonical" href="https://onezero.medium.com/the-death-of-the-computer-file-doc-43cb028c0506">
  31. <style>
  32. /* http://meyerweb.com/eric/tools/css/reset/ */
  33. html, body, div, span,
  34. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  35. a, abbr, address, big, cite, code,
  36. del, dfn, em, img, ins,
  37. small, strike, strong, tt, var,
  38. dl, dt, dd, ol, ul, li,
  39. fieldset, form, label, legend,
  40. table, caption, tbody, tfoot, thead, tr, th, td,
  41. article, aside, canvas, details, embed,
  42. figure, figcaption, footer, header, hgroup,
  43. menu, nav, output, ruby, section, summary,
  44. time, mark, audio, video {
  45. margin: 0;
  46. padding: 0;
  47. border: 0;
  48. font-size: 100%;
  49. font: inherit;
  50. vertical-align: baseline;
  51. }
  52. /* HTML5 display-role reset for older browsers */
  53. article, aside, details, figcaption, figure,
  54. footer, header, hgroup, menu, nav, section { display: block; }
  55. body { line-height: 1; }
  56. blockquote, q { quotes: none; }
  57. blockquote:before, blockquote:after,
  58. q:before, q:after {
  59. content: '';
  60. content: none;
  61. }
  62. table {
  63. border-collapse: collapse;
  64. border-spacing: 0;
  65. }
  66. /* http://practicaltypography.com/equity.html */
  67. /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
  68. /* https://www.filamentgroup.com/lab/js-web-fonts.html */
  69. @font-face {
  70. font-family: 'EquityTextB';
  71. src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
  72. url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
  73. font-weight: 300;
  74. font-style: normal;
  75. font-display: swap;
  76. }
  77. @font-face {
  78. font-family: 'EquityTextB';
  79. src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
  80. url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
  81. font-weight: 300;
  82. font-style: italic;
  83. font-display: swap;
  84. }
  85. @font-face {
  86. font-family: 'EquityTextB';
  87. src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
  88. url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
  89. font-weight: 700;
  90. font-style: normal;
  91. font-display: swap;
  92. }
  93. @font-face {
  94. font-family: 'ConcourseT3';
  95. src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
  96. url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
  97. font-weight: 300;
  98. font-style: normal;
  99. font-display: swap;
  100. }
  101. /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
  102. body {
  103. /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
  104. font-family: "EquityTextB", Palatino, serif;
  105. background-color: #f0f0ea;
  106. color: #07486c;
  107. font-kerning: normal;
  108. -moz-osx-font-smoothing: grayscale;
  109. -webkit-font-smoothing: subpixel-antialiased;
  110. text-rendering: optimizeLegibility;
  111. font-variant-ligatures: common-ligatures contextual;
  112. font-feature-settings: "kern", "liga", "clig", "calt";
  113. }
  114. pre, code, kbd, samp, var, tt {
  115. font-family: 'TriplicateT4c', monospace;
  116. }
  117. em {
  118. font-style: italic;
  119. color: #323a45;
  120. }
  121. strong {
  122. font-weight: bold;
  123. color: black;
  124. }
  125. nav {
  126. background-color: #323a45;
  127. color: #f0f0ea;
  128. display: flex;
  129. justify-content: space-around;
  130. padding: 1rem .5rem;
  131. }
  132. nav:last-child {
  133. border-bottom: 1vh solid #2d7474;
  134. }
  135. nav a {
  136. color: #f0f0ea;
  137. }
  138. nav abbr {
  139. border-bottom: 1px dotted white;
  140. }
  141. h1 {
  142. border-top: 1vh solid #2d7474;
  143. border-bottom: .2vh dotted #2d7474;
  144. background-color: #e3e1e1;
  145. color: #323a45;
  146. text-align: center;
  147. padding: 5rem 0 4rem 0;
  148. width: 100%;
  149. font-family: 'ConcourseT3';
  150. display: flex;
  151. flex-direction: column;
  152. }
  153. h1.single {
  154. padding-bottom: 10rem;
  155. }
  156. h1 span {
  157. position: absolute;
  158. top: 1vh;
  159. left: 20%;
  160. line-height: 0;
  161. }
  162. h1 span a {
  163. line-height: 1.7;
  164. padding: 1rem 1.2rem .6rem 1.2rem;
  165. border-radius: 0 0 6% 6%;
  166. background: #2d7474;
  167. font-size: 1.3rem;
  168. color: white;
  169. text-decoration: none;
  170. }
  171. h2 {
  172. margin: 4rem 0 1rem;
  173. border-top: .2vh solid #2d7474;
  174. padding-top: 1vh;
  175. }
  176. h3 {
  177. text-align: center;
  178. margin: 3rem 0 .75em;
  179. }
  180. hr {
  181. height: .4rem;
  182. width: .4rem;
  183. border-radius: .4rem;
  184. background: #07486c;
  185. margin: 2.5rem auto;
  186. }
  187. time {
  188. display: bloc;
  189. margin-left: 0 !important;
  190. }
  191. ul, ol {
  192. margin: 2rem;
  193. }
  194. ul {
  195. list-style-type: square;
  196. }
  197. a {
  198. text-decoration-skip-ink: auto;
  199. text-decoration-thickness: 0.05em;
  200. text-underline-offset: 0.09em;
  201. }
  202. article {
  203. max-width: 50rem;
  204. display: flex;
  205. flex-direction: column;
  206. margin: 2rem auto;
  207. }
  208. article.single {
  209. border-top: .2vh dotted #2d7474;
  210. margin: -6rem auto 1rem auto;
  211. background: #f0f0ea;
  212. padding: 2rem;
  213. }
  214. article p:last-child {
  215. margin-bottom: 1rem;
  216. }
  217. p {
  218. padding: 0 .5rem;
  219. margin-left: 3rem;
  220. }
  221. p + p,
  222. figure + p {
  223. margin-top: 2rem;
  224. }
  225. blockquote {
  226. background-color: #e3e1e1;
  227. border-left: .5vw solid #2d7474;
  228. display: flex;
  229. flex-direction: column;
  230. align-items: center;
  231. padding: 1rem;
  232. margin: 1.5rem;
  233. }
  234. blockquote cite {
  235. font-style: italic;
  236. }
  237. blockquote p {
  238. margin-left: 0;
  239. }
  240. figure {
  241. border-top: .2vh solid #2d7474;
  242. background-color: #e3e1e1;
  243. text-align: center;
  244. padding: 1.5rem 0;
  245. margin: 1rem 0 0;
  246. font-size: 1.5rem;
  247. width: 100%;
  248. }
  249. figure img {
  250. max-width: 250px;
  251. max-height: 250px;
  252. border: .5vw solid #323a45;
  253. padding: 1px;
  254. }
  255. figcaption {
  256. padding: 1rem;
  257. line-height: 1.4;
  258. }
  259. aside {
  260. display: flex;
  261. flex-direction: column;
  262. background-color: #e3e1e1;
  263. padding: 1rem 0;
  264. border-bottom: .2vh solid #07486c;
  265. }
  266. aside p {
  267. max-width: 50rem;
  268. margin: 0 auto;
  269. }
  270. /* https://fvsch.com/code/css-locks/ */
  271. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  272. font-size: 1rem;
  273. line-height: calc( 1.5em + 0.2 * 1rem );
  274. }
  275. h1 {
  276. font-size: 1.9rem;
  277. line-height: calc( 1.2em + 0.2 * 1rem );
  278. }
  279. h2 {
  280. font-size: 1.6rem;
  281. line-height: calc( 1.3em + 0.2 * 1rem );
  282. }
  283. h3 {
  284. font-size: 1.35rem;
  285. line-height: calc( 1.4em + 0.2 * 1rem );
  286. }
  287. @media (min-width: 20em) {
  288. /* The (100vw - 20rem) / (50 - 20) part
  289. resolves to 0-1rem, depending on the
  290. viewport width (between 20em and 50em). */
  291. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  292. font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
  293. line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
  294. margin-left: 0;
  295. }
  296. h1 {
  297. font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  298. line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
  299. }
  300. h2 {
  301. font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  302. line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
  303. }
  304. h3 {
  305. font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  306. line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
  307. }
  308. }
  309. @media (min-width: 50em) {
  310. /* The right part of the addition *must* be a
  311. rem value. In this example we *could* change
  312. the whole declaration to font-size:2.5rem,
  313. but if our baseline value was not expressed
  314. in rem we would have to use calc. */
  315. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  316. font-size: calc( 1rem + .6 * 1rem );
  317. line-height: 1.5em;
  318. }
  319. p, li, pre, details {
  320. margin-left: 3rem;
  321. }
  322. h1 {
  323. font-size: calc( 1.9rem + 1.5 * 1rem );
  324. line-height: 1.2em;
  325. }
  326. h2 {
  327. font-size: calc( 1.5rem + 1.5 * 1rem );
  328. line-height: 1.3em;
  329. }
  330. h3 {
  331. font-size: calc( 1.35rem + 1.5 * 1rem );
  332. line-height: 1.4em;
  333. }
  334. figure img {
  335. max-width: 500px;
  336. max-height: 500px;
  337. }
  338. }
  339. figure.unsquared {
  340. margin-bottom: 1.5rem;
  341. }
  342. figure.unsquared img {
  343. height: inherit;
  344. }
  345. @media print {
  346. body { font-size: 100%; }
  347. a:after { content: " (" attr(href) ")"; }
  348. a, a:link, a:visited, a:after {
  349. text-decoration: underline;
  350. text-shadow: none !important;
  351. background-image: none !important;
  352. background: white;
  353. color: black;
  354. }
  355. abbr[title] { border-bottom: 0; }
  356. abbr[title]:after { content: " (" attr(title) ")"; }
  357. img { page-break-inside: avoid; }
  358. @page { margin: 2cm .5cm; }
  359. h1, h2, h3 { page-break-after: avoid; }
  360. p3 { orphans: 3; widows: 3; }
  361. img {
  362. max-width: 250px !important;
  363. max-height: 250px !important;
  364. }
  365. nav, aside { display: none; }
  366. }
  367. ul.with_columns {
  368. column-count: 1;
  369. }
  370. @media (min-width: 20em) {
  371. ul.with_columns {
  372. column-count: 2;
  373. }
  374. }
  375. @media (min-width: 50em) {
  376. ul.with_columns {
  377. column-count: 3;
  378. }
  379. }
  380. ul.with_two_columns {
  381. column-count: 1;
  382. }
  383. @media (min-width: 20em) {
  384. ul.with_two_columns {
  385. column-count: 1;
  386. }
  387. }
  388. @media (min-width: 50em) {
  389. ul.with_two_columns {
  390. column-count: 2;
  391. }
  392. }
  393. .gallery {
  394. display: flex;
  395. flex-wrap: wrap;
  396. justify-content: space-around;
  397. }
  398. .gallery figure img {
  399. margin-left: 1rem;
  400. margin-right: 1rem;
  401. }
  402. .gallery figure figcaption {
  403. font-family: 'ConcourseT3'
  404. }
  405. footer {
  406. font-family: 'ConcourseT3';
  407. display: flex;
  408. flex-direction: column;
  409. border-top: 3px solid white;
  410. padding: 4rem 0;
  411. background-color: #07486c;
  412. color: white;
  413. }
  414. footer > * {
  415. max-width: 50rem;
  416. margin: 0 auto;
  417. }
  418. footer a {
  419. color: #f1c40f;
  420. }
  421. footer .avatar {
  422. width: 200px;
  423. height: 200px;
  424. border-radius: 50%;
  425. float: left;
  426. -webkit-shape-outside: circle();
  427. shape-outside: circle();
  428. margin-right: 2rem;
  429. padding: 2px 5px 5px 2px;
  430. background: white;
  431. border-left: 1px solid #f1c40f;
  432. border-top: 1px solid #f1c40f;
  433. border-right: 5px solid #f1c40f;
  434. border-bottom: 5px solid #f1c40f;
  435. }
  436. </style>
  437. <h1>
  438. <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
  439. Computer Files Are Going Extinct (archive)
  440. <time>Pour la pérennité des contenus liés. Non-indexé, retrait sur simple email.</time>
  441. </h1>
  442. <section>
  443. <article>
  444. <h3><a href="https://onezero.medium.com/the-death-of-the-computer-file-doc-43cb028c0506">Source originale du contenu</a></h3>
  445. <div class="ac ae af ag ah dy aj ak"><div><p id="2221" class="dz ea eb at ec b ed ee ef eg eh ei ej">
  446. <h1 class="ec b ed ek eb">Computer Files Are Going Extinct</h1></p></div><p id="3a47" class="el ea ax at as cu em en eo ep eq er es"><h2 class="as cu et eu ax">Technology services are changing our internet habits</h2></p><figure class="fx fy fz ga gb gc dk dl paragraph-image"><figcaption class="ax fc gt gu gv dm dk dl gw gx as cu">Illustration courtesy of the author.</figcaption></figure><p id="25e9" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl hm"><span class="r hn hw hq gf hx"><img alt="I" class="hy hz ia ib ic id do t u gj ak" src="https://miro.medium.com/max/158/1*KYNZF66HmLAEn72myJ88JA.png"/><span class="r hn ho hp hq hr hs ht hu hv gf gh">I</span></span> love files. I love renaming them, moving them, sorting them, changing how they’re displayed in a folder, backing them up, uploading them to the internet, restoring them, copying them, and hey, even defragging them. As a metaphor for a way of storing a piece of information, I think they’re great. I like the file as a unit of work. If I need to write an article, it goes in a file. If I need to produce an image, it’s in a file.</p>
  447. <h1 id="2f2e" class="ie if eb at as ig ih ii ij ik il im in io ip iq ir">An ode to files.doc</h1><p id="1ee4" class="gy gz eb at ha b hb is hd it hf iu hh iv hj iw hl">Files are skeuomorphic. That’s a fancy word that just means they’re a digital concept that mirrors a physical item. A Word document, for example, is like a piece of paper, sitting on your desk(top). A JPEG is like a painting, and so on. They each have a little icon that looks like the physical thing they represent. A pile of paper, a picture frame, a manila folder. It’s kind of charming really.</p><p id="7c3b" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">One thing I like about files is there’s a consistent way of interacting with them, no matter what’s inside. Those things I mentioned above — copying, sorting, defragging — I can do those to any file. It could be an image, part of a game, or a list of my favorite utensils. Defragmenter doesn’t care. It doesn’t judge the contents.</p><p id="a89d" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">I’ve had a love of files since I first started creating them in Windows 95. But I’ve noticed we are starting to move away from the file as a fundamental unit of work.</p><figure class="fx fy fz ga gb gc dk dl paragraph-image"><figcaption class="ax fc gt gu gv dm dk dl gw gx as cu">Windows 95. Interesting fact: <a href="https://www.extremetech.com/computing/294907-why-moving-the-mouse-in-windows-95-made-the-os-faster" class="cy by iz ja jb jc" target="_blank" rel="noopener nofollow">Wiggling the mouse</a> made it run faster. That’s unrelated to the rest of this article; I just think it’s interesting. Photo courtesy of the author.</figcaption></figure>
  448. <h1 id="f732" class="ie if eb at as ig ih ii ij ik il im in io ip iq ir">The rise of the services.mp3</h1><p id="05ba" class="gy gz eb at ha b hb is hd it hf iu hh iv hj iw hl">As a teenager, I indulged in the digital equivalent of collecting and managing<em class="jd"> </em>vinyl: I collected MP3 files. So many 128 kbps MP3 files. If you were lucky enough to own a CD rewriter, you could burn them onto a CD and pass them around between friends. CDs could hold 700 MB. That’s the equivalent of nearly 500 floppy disks!</p><p id="0235" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">I’d go through my collection and painstakingly add IDv1 and IDv2 music tags. As time went on, people started to develop tools that would fetch the track listings automatically from the cloud, so you could check and validate the quality of your MP3s. Sometimes I’d even listen to the damn things, though I suspect the time spent organizing and validating them vastly outweighed the time spent listening.</p><figure class="fx fy fz ga gb gc dk dl paragraph-image"><figcaption class="ax fc gt gu gv dm dk dl gw gx as cu">An app called The Godfather. So many fields and options. Isn’t it great? Photo courtesy of the author.</figcaption></figure><p id="369c" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">Then, about 10 years ago, everyone started to use <a class="cy by iz ja jb jc" target="_blank" rel="noopener" href="/how-spotifys-algorithm-knows-exactly-what-you-want-to-listen-to-4b6991462c5c">this green Swedish company</a>. With its app or from the website, you could just stream whatever you wanted, whenever you wanted. Well, I thought, that’s all very well. But what’s the quality like? Is it better than my 128 kbps MP3s?</p><p id="124c" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">Yes, it turned out. Yes, it was.</p><p id="c1b7" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">Along the way, 128 kbps, which we had been told was “indistinguishable” from the massive WAV files that come on CDs, had become rubbish. Now MP3s came at 320 kbps. On message boards people performed spectral analysis on the files, producing bright green- and blue-colored charts to “prove” the files sounded good.</p><p id="0a54" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">It was about this time that gold-plated SCART Monster cables were a thing.</p><figure class="fx fy fz ga gb gc dk dl paragraph-image"><figcaption class="ax fc gt gu gv dm dk dl gw gx as cu">And now, after looking at these images, the audio will sound better. Photo courtesy of the author.</figcaption></figure><p id="3eec" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">The quality of files on streaming services was good enough, available on more devices, and gave you access to all recorded music, not just the MP3s you happened to have on your computer. You didn’t need a carefully crafted collection of files on your hard drive anymore. You just needed a username and password to Spotify.</p><p id="ceb9" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">Well, I thought, that’s nice, but I’ve also got these massive video files I’ve ripped from DVDs. The internet is way<em class="jd"> </em>too slow for me to stream video like that.</p>
  449. <h1 id="d8e7" class="ie if eb at as ig ih ii ij ik il im in io ip iq ir">Burying the files.png</h1><p id="17b6" class="gy gz eb at ha b hb is hd it hf iu hh iv hj iw hl">I used to have a Sony Ericsson phone with the catchy name of k610i. It was red and I loved it. I could connect it to my computer and copy files to it. It didn’t have a headphone port, so I had to use an adapter or the special headphones that came with it. In many ways, it was ahead of its time.</p><figure class="fx fy fz ga gb gc dk dl paragraph-image"><figcaption class="ax fc gt gu gv dm dk dl gw gx as cu">It’s strange how pictures of old technology can trigger such memories for some people and look laughably quaint to others. Photo courtesy of the author.</figcaption></figure><p id="a939" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">Later, when I had more money and the technology had moved on, I got an iPhone. Obviously, they are lovely. Everyone knows that. The brushed aluminum — black, so black, blacker than darkness itself — and medical-grade glass are near-perfect items brought down from the gods themselves.</p><p id="e1b3" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">But Apple doesn’t make it that easy to get to your files. Images are dumped into a big stream, sorted by date. Audio is somewhere in iTunes. Notes are… in a list? Apps are scattered around the desktop. Some of my files are in iCloud. You can email photos to liberate them from the iPhone, and through a convoluted method via iTunes, you can access some files within certain apps. But those files are transitory — cached, and may be deleted without warning. These aren’t like the carefully crafted files and folders on my computer.</p><blockquote class="jj"><div id="7b1f" class="jk jl jm at ec b et jn jo jp jq jr hl"><p class="ec b js jt ax">I just want my file browser back.</p></div></blockquote><p id="bad9" class="gy gz eb at ha b hb ju hd jv hf jw hh jx hj jy hl">On the Mac, iTunes sorts out your music files for you. They’re handled by the system. The interface displays the music to you and you can sort the files there. But if you look under the hood, at the files themselves, you see a rabbit warren of mess, weird names, and strange folders. “Don’t bother yourself with these,” the computer says, “I’ll handle this for you.” But I do bother myself with them.</p><p id="a783" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">I like being able to look at and access my files. But now the systems I use try to stop me from doing so. “No,” they say, “access them through these bespoke, proprietary interfaces.” I just want my file browser back, but now I’m not allowed it. It’s a relic of an earlier era.</p><p id="d96a" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">Yet I can’t help missing those files and folders and the control I had with them.</p><figure class="fx fy fz ga gb gc dk dl paragraph-image"><figcaption class="ax fc gt gu gv dm dk dl gw gx as cu">Windows 10. You can still play with files, even though I sometimes feel like it looks down on me when I do. Photo courtesy of the author.</figcaption></figure>
  450. <h1 id="b7e2" class="ie if eb at as ig ih ii ij ik il im in io ip iq ir">Caching and dependencies.tmp</h1><p id="58ce" class="gy gz eb at ha b hb is hd it hf iu hh iv hj iw hl">I started building websites in the days when 1-pixel-by-1-pixel transparent GIFs were a thing and the proper way to make a two-column layout was to use a table. As time went on, best practices changed and I happily repeated the mantra that tables should only be used for tabular data and not for layout as I gradually struggled to convert my trivial layouts into CSS. At least it’s not a table, I said proudly as I looked upon my three-column layout that didn’t work properly in Firefox.</p><figure class="fx fy fz ga gb gc dk dl paragraph-image"><figcaption class="ax fc gt gu gv dm dk dl gw gx as cu">Just another file that I’ll be deleting and downloading hundreds of times. Photo: Markus Spiske/Unsplash</figcaption></figure><p id="c794" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">Now when I build websites, I run NPM install and download 65,000 dependencies that get dropped into a node_modules folder. So many files. I don’t care about them, though. I just delete the folder and run NPM install again when I need to. They’re nothing to me.</p><blockquote class="jj"><div id="4544" class="jk jl jm at ec b et jn jo jp jq jr hl"><p class="ec b js jt ax">Years ago websites were made of files; now they are made of dependencies.</p></div></blockquote><p id="11ab" class="gy gz eb at ha b hb ju hd jv hf jw hh jx hj jy hl">The other day, I came across a website I’d written over two decades ago. I double-clicked the file, and it opened and ran perfectly. Then I tried to run a website I’d written 18 months ago and found I couldn’t run it without firing up a web server, and when I ran NPM install, one or two of those 65,000 files had issues that meant node failed to install them and the website didn’t run. When I did get it working, it needed a database. And then it relied on some third-party APIs and there was an issue with CORS because I hadn’t whitelisted localhost.</p><p id="5b68" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">My website made of files carried on, chugging along. This isn’t me saying that things were better in the old days. I’m just saying that years ago websites were made of files; now they are made of dependencies.</p>
  451. <h1 id="35d4" class="ie if eb at as ig ih ii ij ik il im in io ip iq ir">Everything’s a link.lnk</h1><p id="9017" class="gy gz eb at ha b hb is hd it hf iu hh iv hj iw hl">No files were harmed in the making of this article. I went to <em class="jd">Medium</em> and started typing. In the background my words were sent to a database.</p><p id="c25a" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">The unit of creation has moved from the file to the database entry.</p><p id="6550" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">In some ways, that doesn’t make a huge difference. The data is the same, just stored in a database rather than an HTML document. The URL could even be the same, just behind the scenes it fetches the content from a different type of data store. But the implications are much bigger. The content is dependent on a whole heap of infrastructure, rather than being able to stand on its own.</p><p id="ab74" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">This almost seems to reduce the value of any individual creative act. Rather than warranting their own file, they’re all just another line in a database table somewhere in the sky. My article, rather than being in its own file, standing on its own, is just a tiny cog in a machine.</p>
  452. <h1 id="74e8" class="ie if eb at as ig ih ii ij ik il im in io ip iq ir">Copy.bat</h1><p id="0978" class="gy gz eb at ha b hb is hd it hf iu hh iv hj iw hl">Online services have started violating what I thought was a fundamental tenet of digital file manipulation. When I copy a file from one place to another, the file I get at the end is identical to the one I started with. These are digital representations of data that can be copied exactly, bit for bit.</p><figure class="fx fy fz ga gb gc dk dl paragraph-image"><figcaption class="ax fc gt gu gv dm dk dl gw gx as cu">A blank sheet of paper. 58 MB PNG, 15 MB JPEG, 4 MB WebM, 2 MB JPEG… Photo courtesy of the author.</figcaption></figure><p id="266d" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">Yet when I upload photos into Google Cloud then download them again, the file I end up with is different from the one I started with. It’s been transcoded, re-encoded, compressed, optimized. Messed with. The spectral analysts would be furious. It’s like a photocopy, where the pages get lighter and messier over time. I half expect one of Google’s A.I. fingers to appear in the corner of one of my photos.</p><p id="75bc" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">When I AirDrop a video, there’s a long initial process where the iPhone is doing something. What is my little supercomputer up to? I’m suspicious. “You’re transcoding, aren’t you?” I accuse it. It’s only later, when I eventually get the file somewhere I can use it, that I find it’s been pushed and pulled so many times it’s a husk of its former glory.</p><blockquote class="jj"><div id="13ec" class="jk jl jm at ec b et jn jo jp jq jr hl"><p class="ec b js jt ax">Why should the content that is the newest be the most important?</p></div></blockquote>
  453. <h1 id="6c2d" class="ie if eb at as ig ih ii ij ik il im in io ip iq ir">No more definitive files.webm</h1><p id="5cf4" class="gy gz eb at ha b hb is hd it hf iu hh iv hj iw hl">Like most of us, I have a mess of online services, all increasingly mixed up between my work and personal life. Dropbox, Google Drive, Box, OneDrive, Slack, Google Docs, and so on. There are others. So many others. WeTransfer, there’s another one. Trello. Gmail. People at work send me a link to a Google Sheet, I open it, and now it’s saved in my personal Google Drive next to a photo of a cute chicken I shared with my mom and a document listing the different computer mice I was considering buying in 2011.</p><p id="c916" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">The default view in Google Docs is all files sorted by the order you most recently opened them. I can’t sort or organize them. They’re just there, ordered in a way that prioritizes the new over the important.</p><p id="c9a1" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">I don’t like this shift from timeless content to what is newest. Now, when I visit websites, they promote to me the latest thing. Why should the content that is the newest be the most important? It seems so unlikely that something that was just created would happen to be better than everything created throughout all time. What are the odds that every time I arrive at the site, the pinnacle of human achievement has just been breached? But we don’t seem to have a way of sorting by quality. Only by recency.</p><figure class="fx fy fz ga gb gc dk dl paragraph-image"><figcaption class="ax fc gt gu gv dm dk dl gw gx as cu">Library books — strangely, not sorted by most recently published. Photo: 🇸🇮 Janko Ferlič — @specialdaddy/Unsplash</figcaption></figure><p id="d627" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">All of these services, at least for me, are a mess. A dumping ground of odds and ends. Maybe this is how everyone else manages their files. Whenever I use anyone else’s computer, I’m always amazed by the mess of files they have all over the place. Unsorted, disorganized. How do they find anything?</p><p id="109e" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">These services have taken away the sense of a definitive<em class="jd"> </em>file. That file in Dropbox: Is it the latest version? Or is that just a copy of one that really lives on my computer? Or did someone email a newer version? Or put it into Slack? And in a weird way that devalues the content in the files. I don’t trust them anymore. If I look at a file in Dropbox, I think to myself, “Oh, there’s probably a newer version.”</p><p id="c519" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">Perhaps this is the archivist in me, but this process of creating files and flinging them into an unsorted pot and then searching or hoping that the newest one is the one we want gives me the collywobbles. It seems like a rejection of our past work, to just sling all the files into a heap, immediately devaluing them as soon as something newer comes along.</p><p id="3c4a" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">At work, I see colleagues creating files, emailing them, and not even bothering to save the attachments to their hard drive. Their inbox is their new file management system. “Have you got that spreadsheet?” they ask. Someone hunts through their inbox and forwards the person back the email they sent. Is this really how we manage data in the 21st century? It seems a strange backwards step.</p><figure class="fx fy fz ga gb gc dk dl paragraph-image"><figcaption class="ax fc gt gu gv dm dk dl gw gx as cu">Where the file things are. Photo: <a href="https://unsplash.com/@0asa?utm_source=medium&amp;utm_medium=referral" class="cy by iz ja jb jc" target="_blank" rel="noopener nofollow">Vincent Botta</a>/Unsplash</figcaption></figure><p id="c191" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">I miss files. I still create many of my own, but increasingly, that seems an anachronism, like using a quill rather than a pen. I miss the universality of files. The fact they can work anywhere, be moved around easily.</p><p id="a456" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">The file has been replaced with the platform, the service, the ecosystem. This is not to say that I’m proposing we lead an uprising against services. You can’t halt progress by clogging the internet pipes. I say this to mourn the loss of the innocence we had before capitalism inevitably invaded the internet. When we create now, our creations are part of an enormous system. Our contributions a tiny speck in an elastic database cluster. Rather than buying and collecting music, videos, or other cultural artifacts, we are exposed to the power hose: all culture, raging over us, for $12.99 a month (or $15.99 for HD) as long as we keep up our payments like good economic entities. When we stop paying, we’re left with nothing. No files. The service is revoked.</p><p id="e013" class="gy gz eb at ha b hb hc hd he hf hg hh hi hj hk hl">Obviously files are still around. It’s just we’re increasingly abstracted away from them. I keep my own assemblage of files. My own little world. In that way I’m an anachronism that’s somehow bubbled up from the bottom of that most recently edited list.</p></div>
  454. </article>
  455. </section>
  456. <nav id="jumpto">
  457. <p>
  458. <a href="/david/blog/">Accueil du blog</a> |
  459. <a href="https://onezero.medium.com/the-death-of-the-computer-file-doc-43cb028c0506">Source originale</a> |
  460. <a href="/david/stream/2019/">Accueil du flux</a>
  461. </p>
  462. </nav>
  463. <footer>
  464. <div>
  465. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  466. <p>
  467. Bonjour/Hi!
  468. Je suis <a href="/david/" title="Profil public">David&nbsp;Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
  469. Si tu as apprécié cette lecture, n’hésite pas à poursuivre ton exploration. Par exemple via les <a href="/david/blog/" title="Expériences bienveillantes">réflexions bimestrielles</a>, la <a href="/david/stream/2019/" title="Pensées (dés)articulées">veille hebdomadaire</a> ou en t’abonnant au <a href="/david/log/" title="S’abonner aux publications via RSS">flux RSS</a> (<a href="/david/blog/2019/flux-rss/" title="Tiens c’est quoi un flux RSS ?">so 2005</a>).
  470. </p>
  471. <p>
  472. Je m’intéresse à la place que je peux avoir dans ce monde. En tant qu’humain, en tant que membre d’une famille et en tant qu’associé d’une coopérative. De temps en temps, je fais aussi des <a href="https://github.com/davidbgk" title="Principalement sur Github mais aussi ailleurs">trucs techniques</a>. Et encore plus rarement, <a href="/david/talks/" title="En ce moment je laisse plutôt la place aux autres">j’en parle</a>.
  473. </p>
  474. <p>
  475. Voici quelques articles choisis :
  476. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  477. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  478. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  479. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  480. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  481. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  482. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  483. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  484. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  485. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  486. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  487. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  488. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  489. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  490. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  491. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  492. </p>
  493. <p>
  494. On peut <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">échanger par courriel</a>. Si éventuellement tu souhaites que l’on travaille ensemble, tu devrais commencer par consulter le <a href="http://larlet.com">profil dédié à mon activité professionnelle</a> et/ou contacter directement <a href="http://scopyleft.fr/">scopyleft</a>, la <abbr title="Société coopérative et participative">SCOP</abbr> dont je fais partie depuis six ans. Je recommande au préalable de lire <a href="/david/blog/2018/cout-site/" title="Attention ce qui va suivre peut vous choquer">combien coûte un site</a> et pourquoi je suis plutôt favorable à une <a href="/david/pro/devis/" title="Discutons-en !">non-demande de devis</a>.
  495. </p>
  496. <p>
  497. Je ne traque pas ta navigation mais mon
  498. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  499. conserve des logs d’accès.
  500. </p>
  501. </div>
  502. </footer>
  503. <script type="text/javascript">
  504. ;(_ => {
  505. const jumper = document.getElementById('jumper')
  506. jumper.addEventListener('click', e => {
  507. e.preventDefault()
  508. const anchor = e.target.getAttribute('href')
  509. const targetEl = document.getElementById(anchor.substring(1))
  510. targetEl.scrollIntoView({behavior: 'smooth'})
  511. })
  512. })()
  513. </script>