Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830
  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>Dépendances — 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. <!-- Canonical URL for SEO purposes -->
  28. <link rel="canonical" href="https://larlet.fr/david/stream/2019/11/12/">
  29. <style>
  30. /* http://meyerweb.com/eric/tools/css/reset/ */
  31. html, body, div, span,
  32. h1, h2, h3, h4, h5, h6, p, blockquote, pre,
  33. a, abbr, address, big, cite, code,
  34. del, dfn, em, img, ins,
  35. small, strike, strong, tt, var,
  36. dl, dt, dd, ol, ul, li,
  37. fieldset, form, label, legend,
  38. table, caption, tbody, tfoot, thead, tr, th, td,
  39. article, aside, canvas, details, embed,
  40. figure, figcaption, footer, header, hgroup,
  41. menu, nav, output, ruby, section, summary,
  42. time, mark, audio, video {
  43. margin: 0;
  44. padding: 0;
  45. border: 0;
  46. font-size: 100%;
  47. font: inherit;
  48. vertical-align: baseline;
  49. }
  50. /* HTML5 display-role reset for older browsers */
  51. article, aside, details, figcaption, figure,
  52. footer, header, hgroup, menu, nav, section { display: block; }
  53. body { line-height: 1; }
  54. blockquote, q { quotes: none; }
  55. blockquote:before, blockquote:after,
  56. q:before, q:after {
  57. content: '';
  58. content: none;
  59. }
  60. table {
  61. border-collapse: collapse;
  62. border-spacing: 0;
  63. }
  64. /* http://practicaltypography.com/equity.html */
  65. /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
  66. /* https://www.filamentgroup.com/lab/js-web-fonts.html */
  67. @font-face {
  68. font-family: 'EquityTextB';
  69. src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
  70. url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
  71. font-weight: 300;
  72. font-style: normal;
  73. font-display: swap;
  74. }
  75. @font-face {
  76. font-family: 'EquityTextB';
  77. src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
  78. url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
  79. font-weight: 300;
  80. font-style: italic;
  81. font-display: swap;
  82. }
  83. @font-face {
  84. font-family: 'EquityTextB';
  85. src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
  86. url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
  87. font-weight: 700;
  88. font-style: normal;
  89. font-display: swap;
  90. }
  91. @font-face {
  92. font-family: 'ConcourseT3';
  93. src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
  94. url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
  95. font-weight: 300;
  96. font-style: normal;
  97. font-display: swap;
  98. }
  99. /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
  100. body {
  101. /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
  102. font-family: "EquityTextB", Palatino, serif;
  103. background-color: #f0f0ea;
  104. color: #07486c;
  105. font-kerning: normal;
  106. -moz-osx-font-smoothing: grayscale;
  107. -webkit-font-smoothing: subpixel-antialiased;
  108. text-rendering: optimizeLegibility;
  109. font-variant-ligatures: common-ligatures contextual;
  110. font-feature-settings: "kern", "liga", "clig", "calt";
  111. }
  112. pre, code, kbd, samp, var, tt {
  113. font-family: 'TriplicateT4c', monospace;
  114. }
  115. em {
  116. font-style: italic;
  117. color: #323a45;
  118. }
  119. strong {
  120. font-weight: bold;
  121. color: black;
  122. }
  123. nav {
  124. background-color: #323a45;
  125. color: #f0f0ea;
  126. display: flex;
  127. justify-content: space-around;
  128. padding: 1rem .5rem;
  129. }
  130. nav:last-child {
  131. border-bottom: 1vh solid #2d7474;
  132. }
  133. nav a {
  134. color: #f0f0ea;
  135. }
  136. nav abbr {
  137. border-bottom: 1px dotted white;
  138. }
  139. h1 {
  140. border-top: 1vh solid #2d7474;
  141. border-bottom: .2vh dotted #2d7474;
  142. background-color: #e3e1e1;
  143. color: #323a45;
  144. text-align: center;
  145. padding: 5rem 0 4rem 0;
  146. width: 100%;
  147. font-family: 'ConcourseT3';
  148. display: flex;
  149. flex-direction: column;
  150. }
  151. h1.single {
  152. padding-bottom: 10rem;
  153. }
  154. h1 span {
  155. position: absolute;
  156. top: 1vh;
  157. left: 20%;
  158. line-height: 0;
  159. }
  160. h1 span a {
  161. line-height: 1.7;
  162. padding: 1rem 1.2rem .6rem 1.2rem;
  163. border-radius: 0 0 6% 6%;
  164. background: #2d7474;
  165. font-size: 1.3rem;
  166. color: white;
  167. text-decoration: none;
  168. }
  169. h2 {
  170. margin: 4rem 0 1rem;
  171. border-top: .2vh solid #2d7474;
  172. padding-top: 1vh;
  173. }
  174. h3 {
  175. text-align: center;
  176. margin: 3rem 0 .75em;
  177. }
  178. hr {
  179. height: .4rem;
  180. width: .4rem;
  181. border-radius: .4rem;
  182. background: #07486c;
  183. margin: 2.5rem auto;
  184. }
  185. time {
  186. display: bloc;
  187. margin-left: 0 !important;
  188. }
  189. ul, ol {
  190. margin: 2rem;
  191. }
  192. ul {
  193. list-style-type: square;
  194. }
  195. a {
  196. text-decoration-skip-ink: auto;
  197. text-decoration-thickness: 0.05em;
  198. text-underline-offset: 0.09em;
  199. }
  200. article {
  201. max-width: 50rem;
  202. display: flex;
  203. flex-direction: column;
  204. margin: 2rem auto;
  205. }
  206. article.single {
  207. border-top: .2vh dotted #2d7474;
  208. margin: -6rem auto 1rem auto;
  209. background: #f0f0ea;
  210. padding: 2rem;
  211. }
  212. article p:last-child {
  213. margin-bottom: 1rem;
  214. }
  215. p {
  216. padding: 0 .5rem;
  217. margin-left: 3rem;
  218. }
  219. p + p,
  220. figure + p {
  221. margin-top: 2rem;
  222. }
  223. blockquote {
  224. background-color: #e3e1e1;
  225. border-left: .5vw solid #2d7474;
  226. display: flex;
  227. flex-direction: column;
  228. align-items: center;
  229. padding: 1rem;
  230. margin: 1.5rem;
  231. }
  232. blockquote cite {
  233. font-style: italic;
  234. }
  235. blockquote p {
  236. margin-left: 0;
  237. }
  238. figure {
  239. border-top: .2vh solid #2d7474;
  240. background-color: #e3e1e1;
  241. text-align: center;
  242. padding: 1.5rem 0;
  243. margin: 1rem 0 0;
  244. font-size: 1.5rem;
  245. width: 100%;
  246. }
  247. figure img {
  248. max-width: 250px;
  249. max-height: 250px;
  250. border: .5vw solid #323a45;
  251. padding: 1px;
  252. }
  253. figcaption {
  254. padding: 1rem;
  255. line-height: 1.4;
  256. }
  257. aside {
  258. display: flex;
  259. flex-direction: column;
  260. background-color: #e3e1e1;
  261. padding: 1rem 0;
  262. border-bottom: .2vh solid #07486c;
  263. }
  264. aside p {
  265. max-width: 50rem;
  266. margin: 0 auto;
  267. }
  268. /* https://fvsch.com/code/css-locks/ */
  269. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  270. font-size: 1rem;
  271. line-height: calc( 1.5em + 0.2 * 1rem );
  272. }
  273. h1 {
  274. font-size: 1.9rem;
  275. line-height: calc( 1.2em + 0.2 * 1rem );
  276. }
  277. h2 {
  278. font-size: 1.6rem;
  279. line-height: calc( 1.3em + 0.2 * 1rem );
  280. }
  281. h3 {
  282. font-size: 1.35rem;
  283. line-height: calc( 1.4em + 0.2 * 1rem );
  284. }
  285. @media (min-width: 20em) {
  286. /* The (100vw - 20rem) / (50 - 20) part
  287. resolves to 0-1rem, depending on the
  288. viewport width (between 20em and 50em). */
  289. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  290. font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
  291. line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
  292. margin-left: 0;
  293. }
  294. h1 {
  295. font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  296. line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
  297. }
  298. h2 {
  299. font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  300. line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
  301. }
  302. h3 {
  303. font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
  304. line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
  305. }
  306. }
  307. @media (min-width: 50em) {
  308. /* The right part of the addition *must* be a
  309. rem value. In this example we *could* change
  310. the whole declaration to font-size:2.5rem,
  311. but if our baseline value was not expressed
  312. in rem we would have to use calc. */
  313. p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
  314. font-size: calc( 1rem + .6 * 1rem );
  315. line-height: 1.5em;
  316. }
  317. p, li, pre, details {
  318. margin-left: 3rem;
  319. }
  320. h1 {
  321. font-size: calc( 1.9rem + 1.5 * 1rem );
  322. line-height: 1.2em;
  323. }
  324. h2 {
  325. font-size: calc( 1.5rem + 1.5 * 1rem );
  326. line-height: 1.3em;
  327. }
  328. h3 {
  329. font-size: calc( 1.35rem + 1.5 * 1rem );
  330. line-height: 1.4em;
  331. }
  332. figure img {
  333. max-width: 500px;
  334. max-height: 500px;
  335. }
  336. }
  337. figure.unsquared {
  338. margin-bottom: 1.5rem;
  339. }
  340. figure.unsquared img {
  341. height: inherit;
  342. }
  343. @media print {
  344. body { font-size: 100%; }
  345. a:after { content: " (" attr(href) ")"; }
  346. a, a:link, a:visited, a:after {
  347. text-decoration: underline;
  348. text-shadow: none !important;
  349. background-image: none !important;
  350. background: white;
  351. color: black;
  352. }
  353. abbr[title] { border-bottom: 0; }
  354. abbr[title]:after { content: " (" attr(title) ")"; }
  355. img { page-break-inside: avoid; }
  356. @page { margin: 2cm .5cm; }
  357. h1, h2, h3 { page-break-after: avoid; }
  358. p3 { orphans: 3; widows: 3; }
  359. img {
  360. max-width: 250px !important;
  361. max-height: 250px !important;
  362. }
  363. nav, aside { display: none; }
  364. }
  365. ul.with_columns {
  366. column-count: 1;
  367. }
  368. @media (min-width: 20em) {
  369. ul.with_columns {
  370. column-count: 2;
  371. }
  372. }
  373. @media (min-width: 50em) {
  374. ul.with_columns {
  375. column-count: 3;
  376. }
  377. }
  378. ul.with_two_columns {
  379. column-count: 1;
  380. }
  381. @media (min-width: 20em) {
  382. ul.with_two_columns {
  383. column-count: 1;
  384. }
  385. }
  386. @media (min-width: 50em) {
  387. ul.with_two_columns {
  388. column-count: 2;
  389. }
  390. }
  391. .gallery {
  392. display: flex;
  393. flex-wrap: wrap;
  394. justify-content: space-around;
  395. }
  396. .gallery figure img {
  397. margin-left: 1rem;
  398. margin-right: 1rem;
  399. }
  400. .gallery figure figcaption {
  401. font-family: 'ConcourseT3'
  402. }
  403. footer {
  404. font-family: 'ConcourseT3';
  405. display: flex;
  406. flex-direction: column;
  407. border-top: 3px solid white;
  408. padding: 4rem 0;
  409. background-color: #07486c;
  410. color: white;
  411. }
  412. footer > * {
  413. max-width: 50rem;
  414. margin: 0 auto;
  415. }
  416. footer a {
  417. color: #f1c40f;
  418. }
  419. footer .avatar {
  420. width: 200px;
  421. height: 200px;
  422. border-radius: 50%;
  423. float: left;
  424. -webkit-shape-outside: circle();
  425. shape-outside: circle();
  426. margin-right: 2rem;
  427. padding: 2px 5px 5px 2px;
  428. background: white;
  429. border-left: 1px solid #f1c40f;
  430. border-top: 1px solid #f1c40f;
  431. border-right: 5px solid #f1c40f;
  432. border-bottom: 5px solid #f1c40f;
  433. }
  434. </style>
  435. <h1 class="single">
  436. <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
  437. Dépendances
  438. <time>Publié le 12 novembre</time>
  439. </h1>
  440. <article class="single">
  441. <p><em>Un jour férié en France, c’est souvent une journée tranquille pour moi. L’occasion de creuser davantage de liens et de réflexions. Et de fermer des onglets après avoir partagé quelques connexions neuronales.</em></p>
  442. <hr />
  443. <p>Trucs enthousiasmants cette semaine :</p>
  444. <ol>
  445. <li>Faire du ménage numérique sur cet espace et préparer un dépôt chez moi pour stocker tout cela et probablement ouvrir un peu de code.</li>
  446. <li>Arriver à la page 100 de la numérisation de l’<a href="/famille/histoire/">histoire d’une partie de ma famille</a>.</li>
  447. <li>Aller gambader dans la neige comme deux petits chiens fous avec mon fils.</li>
  448. <li>Tenter d’établir <a href="https://tinyletter.com/lesponts/">des ponts</a> locaux.</li>
  449. </ol>
  450. <hr />
  451. <blockquote>
  452. <p>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>
  453. <p>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>
  454. <p><cite><em><a href="https://onezero.medium.com/the-death-of-the-computer-file-doc-43cb028c0506">Computer Files Are Going Extinct</a></em> (<a href="/david/cache/5a75780d94a07e5abd9449dc6c863ad5/">cache</a>)</cite></p>
  455. </blockquote>
  456. <p>Un peu <a href="/david/stream/2019/08/27/">forcé</a>, je suis en train de revoir comment publier ce qui stocké ici. En réduisant les dépendances à la fois pour le code et pour l’écriture. C’est un long chemin que je prends plaisir à parcourir.</p>
  457. <p><em>Il fait appel aux différents sens du mot « accessibilité ».</em></p>
  458. <hr />
  459. <blockquote>
  460. <p>Look, all technology breaks sometimes. I’m not saying that new is bad because it’s buggy; I promise you, the old stuff broke too. You probably do not want to go back. But there’s a difference between “the car broke down” and “the car got lost”. One is a fragility of <em>things</em>: if you drive a car, you need to take responsibility for keeping it in good shape. It’s a scarcity problem. But the latter feels more like an abundance problem: it’s fragility of <em>something</em>, I just couldn’t put my finger on what.</p>
  461. <p><cite><em><a href="https://alexdanco.com/2019/10/26/everything-is-amazing-but-nothing-is-ours/">Everything is Amazing, But Nothing is Ours</a></em> (<a href="/david/cache/83928917b2696111caabdeb514722b7f/">cache</a>)</cite></p>
  462. </blockquote>
  463. <p>La fragilité de la <em>connaissance</em>. Ne plus avoir conscience de l’espace et du temps dans lequel on vit. D’où la perte de repères.</p>
  464. <p>En l’occurence, ça n’est pas la voiture qui s’est perdue. Mais le code de quelqu’un d’autre dans sa voiture.</p>
  465. <hr />
  466. <blockquote>
  467. <p>Autre façon de voir les choses : Jusqu’où vouloir filtrer le néga­tif et encou­ra­ger le posi­tif revient à se mettre la tête dans le sable pour ne pas voir la réalité ?</p>
  468. <p>À quel point filtrer ce côté sombre, même partiel­le­ment, n’est pas une posture de privi­lé­gié qui n’est pas impacté aussi direc­te­ment que d’autres ?</p>
  469. <p><cite><em><a href="https://n.survol.fr/n/depeindre-un-monde-trop-sombre">Dépeindre un monde trop sombre</a></em> (<a href="/david/cache/031fd65bf92fec13351403b10831acd7/">cache</a>)</cite></p>
  470. </blockquote>
  471. <p>Si je me morfonds dans la négativité, cela finit par affecter ma santé et j’ai l’impression que les causes que je pourrais soutenir perdent un allié. C’est assez arrogant de penser cela et pourtant c’est le seul moyen que j’ai trouvé de (sur)vivre pour l’instant.</p>
  472. <hr />
  473. <blockquote>
  474. <p>And even if humanity really is doomed, there’s always the hope that someday a hyperintelligent species of cockroach will inherit the Earth. And when cockroach archaeologists try to reconstruct our history, I would like them to be able to say, loosely translated from their complex pheromone-and-dancing system of communication: “These meatsacks may not have been as good at surviving as us cockroaches—but at least they tried!”</p>
  475. <p><cite><em><a href="https://codewithoutrules.com/2019/09/10/software-developers-climage-change/">What can a software developer do about climate change?</a></em> (<a href="/david/cache/c982d6d5411add24cca0c698ba457826/">cache</a>)</cite></p>
  476. </blockquote>
  477. <p>Réflexion de la semaine : en utilisant les énergies fossiles, on consomme un héritage que nos ancêtres sur des millions de génération ont réussi à préserver. Le meilleur moyen de ne pas avoir d’héritage est de ne plus rien avoir à partager. Une situation de crise — à moyen terme — ne peut que réduire les inégalités.</p>
  478. <p>Lorsqu’il ne reste que quelques gouttes au fond du verre, on ne se demande plus s’il est à moitié vide ou à moitié plein.</p>
  479. <p><em>On économise notre salive.</em></p>
  480. <hr />
  481. <blockquote>
  482. <p>Often consumers don’t have much power of selection at all. Those who run small businesses find it nearly impossible to walk away from Facebook, Instagram, Yelp, Etsy, even Amazon. Employers often mandate that their workers use certain apps or systems like Zoom, Slack, and Google Docs. “It is only the hyper-privileged who are now saying, ‘I’m not going to give my kids this,’ or, ‘I’m not on social media,’” says Rumman Chowdhury, a data scientist at Accenture. “You actually have to be so comfortable in your privilege that you can opt out of things.”</p>
  483. <p><cite><em><a href="https://www.vox.com/the-highlight/2019/10/1/20887003/tech-technology-evolution-natural-inevitable-ethics">Tech issues: The myth of inevitable technological progress</a></em> (<a href="/david/cache/49e857c4f07b8b8ca905203fe51b7b7c/">cache</a>)</cite></p>
  484. </blockquote>
  485. <p>Dis-moi de combien de dépendances est-ce que tu peux te passer et je te dirai à quel point tu es privilégié. La capitalisme consiste à rendre dépendants ceux qui ont moins.</p>
  486. <p><em>Quid des privilégiés qui tentent de montrer un autre chemin ? À quel moment la marginalisation ne peut plus en être une ?</em></p>
  487. <hr />
  488. <blockquote>
  489. <p>The main thing I discovered was that the <em>snippets.db</em> database file in the Suggestions folder stored my emails. And on top of that, I found that it stored my S/MIME encrypted emails completely <strong>UNENCRYPTED</strong>. Even with Siri disabled on the Mac, it <em>still</em> stores unencrypted messages in this database!</p>
  490. <p><strong>This is definitely not the expected behavior and can be considered an inadvertent information exposure.</strong></p>
  491. <p><cite><em><a href="https://medium.com/@boberito/apple-mail-stores-encrypted-emails-in-plain-text-database-fix-included-3c2369ce26d4">Apple Mail Stores Encrypted Emails in Plain Text Database, fix included!</a></em> (<a href="/david/cache/6aa439c2a9931f53c792d98e92c2ea46/">cache</a>)</cite></p>
  492. </blockquote>
  493. <p>Au moment où je galère en attendant une mise à jour des GPGTools pour ne serait-ce que lire mes courriels chiffrés, j’apprends qu’ils sont en fait lisibles en clair sur ma machine… quelle blague. Lorsqu’une dépendance en combat une autre.</p>
  494. <p>Restez patients si vous attendez une réponse chiffrée de ma part. Peut-être qu’il faut que je change de <a href="/david/stream/2019/10/29/">stratégie</a> à ce sujet (ça serait pas mal des ancres plus précises, en <a href="https://github.com/WICG/ScrollToTextFragment">attendant mieux</a>). Et en même temps le courriel est une des technologies la plus proche de mes valeurs qui soit, ce serait dommage d’avoir recours à une autre infrastructure et un autre outil pour pouvoir s’échanger des données chiffrées.</p>
  495. <hr />
  496. <p>Citation de la semaine :</p>
  497. <blockquote>
  498. <p>Il est trop tard pour être pessimiste.</p>
  499. <p><cite><em><a href="https://www.franceculture.fr/emissions/matieres-a-penser/animal-humain-35-envers-les-animaux-une-responsabilite-globale">Gilles Boeuf au sujet de « Envers les animaux, une responsabilité globale »</a></em></cite></p>
  500. </blockquote>
  501. <p>Il y a tellement de sens possibles à cette citation &lt;3. Il est probablement trop tard pour être in-dépendant également.</p>
  502. <p><em>Merci Aurélien.</em></p>
  503. </article>
  504. <nav id="jumpto">
  505. <p>
  506. <a rel=prev href="/david/stream/2019/11/05/">← Positif</a> | <a href="/david/stream/2019/" title="Retour à la liste complète">↑ Liste complète</a> | <a rel=next href="/david/stream/2019/11/19/">Se livrer →</a>
  507. </p>
  508. </nav>
  509. <footer>
  510. <div>
  511. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  512. <p>
  513. Bonjour/Hi!
  514. 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>
  515. 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>).
  516. </p>
  517. <p>
  518. 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>.
  519. </p>
  520. <p>
  521. Les dernières publications hebdomadaires sont :
  522. </p>
  523. <ul class="with_columns">
  524. <li>
  525. <a href="/david/stream/2019/12/31/">Merci</a>
  526. </li>
  527. <li>
  528. <a href="/david/stream/2019/12/27/">Intemporels</a>
  529. </li>
  530. <li>
  531. <a href="/david/stream/2019/12/24/">Outils</a>
  532. </li>
  533. <li>
  534. <a href="/david/stream/2019/12/17/">Origines</a>
  535. </li>
  536. <li>
  537. <a href="/david/stream/2019/12/10/">Publier</a>
  538. </li>
  539. <li>
  540. <a href="/david/stream/2019/12/03/">En forêt</a>
  541. </li>
  542. <li>
  543. <a href="/david/stream/2019/11/26/">Ecocentric</a>
  544. </li>
  545. <li>
  546. <a href="/david/stream/2019/11/19/">Se livrer</a>
  547. </li>
  548. <li>
  549. <a href="/david/stream/2019/11/12/">Dépendances</a>
  550. </li>
  551. <li>
  552. <a href="/david/stream/2019/11/05/">Positif</a>
  553. </li>
  554. <li>
  555. <a href="/david/stream/2019/10/29/">Dettes</a>
  556. </li>
  557. <li>
  558. <a href="/david/stream/2019/10/22/">Privilèges</a>
  559. </li>
  560. <li>
  561. <a href="/david/stream/2019/10/15/">Discrétion</a>
  562. </li>
  563. <li>
  564. <a href="/david/stream/2019/10/08/">Désespérance</a>
  565. </li>
  566. <li>
  567. <a href="/david/stream/2019/10/01/">Présent</a>
  568. </li>
  569. <li>
  570. <a href="/david/stream/2019/09/24/">Manifester</a>
  571. </li>
  572. <li>
  573. <a href="/david/stream/2019/09/17/">Arpenter</a>
  574. </li>
  575. <li>
  576. <a href="/david/stream/2019/09/10/">Nostalgie</a>
  577. </li>
  578. <li>
  579. <a href="/david/stream/2019/09/03/">Déconstruire</a>
  580. </li>
  581. <li>
  582. <a href="/david/stream/2019/08/27/">Documenter</a>
  583. </li>
  584. <li>
  585. <a href="/david/stream/2019/08/20/">Frustration</a>
  586. </li>
  587. <li>
  588. <a href="/david/stream/2019/08/13/">Holisme</a>
  589. </li>
  590. <li>
  591. <a href="/david/stream/2019/08/06/">1%</a>
  592. </li>
  593. <li>
  594. <a href="/david/stream/2019/07/30/">Exemplarité</a>
  595. </li>
  596. <li>
  597. <a href="/david/stream/2019/07/23/">Timelines</a>
  598. </li>
  599. <li>
  600. <a href="/david/stream/2019/07/16/">Écoute</a>
  601. </li>
  602. <li>
  603. <a href="/david/stream/2019/07/02/">Anxiété</a>
  604. </li>
  605. <li>
  606. <a href="/david/stream/2019/06/21/">À lier</a>
  607. </li>
  608. <li>
  609. <a href="/david/stream/2019/06/14/">Pauvreté</a>
  610. </li>
  611. <li>
  612. <a href="/david/stream/2019/06/07/">Amateur</a>
  613. </li>
  614. <li>
  615. <a href="/david/stream/2019/05/31/">Pollution</a>
  616. </li>
  617. <li>
  618. <a href="/david/stream/2019/05/24/">Apaisement</a>
  619. </li>
  620. <li>
  621. <a href="/david/stream/2019/05/10/">Folie</a>
  622. </li>
  623. <li>
  624. <a href="/david/stream/2019/05/03/">Sympathie</a>
  625. </li>
  626. <li>
  627. <a href="/david/stream/2019/04/12/">Péremption</a>
  628. </li>
  629. <li>
  630. <a href="/david/stream/2019/04/05/">Définitions</a>
  631. </li>
  632. <li>
  633. <a href="/david/stream/2019/03/29/">Acceptation</a>
  634. </li>
  635. <li>
  636. <a href="/david/stream/2019/03/22/">Dissonance</a>
  637. </li>
  638. <li>
  639. <a href="/david/stream/2019/03/15/">Reconnaissance</a>
  640. </li>
  641. <li>
  642. <a href="/david/stream/2019/03/08/">Lecture</a>
  643. </li>
  644. <li>
  645. <a href="/david/stream/2019/03/01/">Journaux</a>
  646. </li>
  647. <li>
  648. <a href="/david/stream/2019/02/22/">Écriture</a>
  649. </li>
  650. <li>
  651. <a href="/david/stream/2019/02/15/">Kyriarchie</a>
  652. </li>
  653. <li>
  654. <a href="/david/stream/2019/02/08/">Mots-serrures</a>
  655. </li>
  656. <li>
  657. <a href="/david/stream/2019/02/01/">Sans voie</a>
  658. </li>
  659. <li>
  660. <a href="/david/stream/2019/01/25/">Auto-diagnostic</a>
  661. </li>
  662. <li>
  663. <a href="/david/stream/2019/01/18/">Agilité</a>
  664. </li>
  665. <li>
  666. <a href="/david/stream/2019/01/11/">Métaphores</a>
  667. </li>
  668. <li>
  669. <a href="/david/stream/2019/01/04/">Balbutiements</a>
  670. </li>
  671. </ul>
  672. <p>
  673. Voici quelques articles choisis :
  674. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  675. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  676. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  677. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  678. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  679. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  680. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  681. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  682. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  683. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  684. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  685. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  686. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  687. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  688. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  689. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  690. </p>
  691. <p>
  692. 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>.
  693. </p>
  694. <p>
  695. Je ne traque pas ta navigation mais mon
  696. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  697. conserve des logs d’accès.
  698. </p>
  699. </div>
  700. </footer>
  701. <script type="text/javascript">
  702. ;(_ => {
  703. const jumper = document.getElementById('jumper')
  704. jumper.addEventListener('click', e => {
  705. e.preventDefault()
  706. const anchor = e.target.getAttribute('href')
  707. const targetEl = document.getElementById(anchor.substring(1))
  708. targetEl.scrollIntoView({behavior: 'smooth'})
  709. })
  710. })()
  711. </script>
  712. <script>
  713. /* Service workers */
  714. if (navigator.serviceWorker) {
  715. window.addEventListener('load', function () {
  716. var selector = 'a[href^="/david/cache/"], a[rel=prev], a[rel=next]'
  717. function sendLinks (selector) {
  718. var links = [].slice.call(document.querySelectorAll(selector)).map(function (link) {
  719. return link.getAttribute('href')
  720. })
  721. links.push(location.pathname) // Put the current page in cache too.
  722. navigator.serviceWorker.controller.postMessage({ links: links })
  723. }
  724. navigator.serviceWorker.getRegistration()
  725. .then(function (registration) {
  726. if (!registration || !navigator.serviceWorker.controller) {
  727. return navigator.serviceWorker.register('/serviceworker.js')
  728. .then(navigator.serviceWorker.ready)
  729. .then(function () {
  730. console.log('[ServiceWorker] Ready to go!')
  731. })
  732. .catch(console.error.bind(console))
  733. } else {
  734. console.log('[ServiceWorker] Send links via registration')
  735. sendLinks(selector)
  736. }
  737. })
  738. navigator.serviceWorker.addEventListener('controllerchange', function () {
  739. console.log('[ServiceWorker] Send links via controller change')
  740. sendLinks(selector)
  741. })
  742. navigator.serviceWorker.addEventListener('message', function (event) {
  743. var link = document.querySelector('a[href="' + event.data.link + '"]')
  744. if (event.data.status && link) {
  745. link.style.backgroundColor = '#2d7474'
  746. link.style.color = '#f0f0ea'
  747. link.setAttribute('title', 'En cache pour consultation sans connexion')
  748. }
  749. })
  750. })
  751. } else {
  752. console.warn('[ServiceWorker] No cache for old browsers.')
  753. }
  754. </script>