Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
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 30KB

hace 4 años
hace 4 años
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808
  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>Publier — 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/12/10/">
  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. Publier
  438. <time>Publié le 10 décembre</time>
  439. </h1>
  440. <article class="single">
  441. <p><em>Sur le web, on peut distinguer public et lier. Transmettre une URL publique sans pour autant la lier. Publier un flux sans qu’il soit définitif. Je joue beaucoup avec cela ces derniers temps.</em></p>
  442. <p>Trucs importants cette semaine : publier des journaux, beaucoup de journaux. Autant d’un point de vue personnel que professionnel. Un truc <a href="http://ut7.fr/blog/2014/11/06/un-outils-pour-les-grands.html">pour les grands</a> (<a href="/david/cache/b2c2bf876afb7f7d3e4fd68a672a763b/">cache</a>). <a href="https://elsif.fr/">Yannick</a> et <a href="https://ronan.amicel.net/">Ronan</a> m’ont beaucoup inspiré dans cette pratique, autant dans le recul quotidien qu’elle procure que dans l’histoire qu’elle raconte au fil du temps.</p>
  443. <p>Au passage, j’ai enfin terminé d’extraire les journaux privés de cet espace afin de pouvoir pousser le code et le contenu à un endroit que je peux pérenniser. Lorsqu’une dépendance <a href="/david/biologeek/archives/20081026-bitbucket-pour-gerer-ses-depots-mercurial/">de longue date</a> permet de reprendre le contrôle <a href="/david/stream/2019/08/27/">suite à une exclusion</a>.</p>
  444. <hr />
  445. <blockquote>
  446. <p>Valoriser le brouillon – la recherche en train de se faire – mêlé aux publications des circuits conventionnels comme les revues et les monographies. Les carnets font partie, pour certain·e·s, d’une même démarche d’écriture que les articles ou les communications, valorisons ces espaces de publication !</p>
  447. <p><cite><em><a href="https://www.quaternum.net/2019/12/05/publier-les-carnets-eloge-du-brouillon/">Publier les carnets, éloge du brouillon</a></em> (<a href="/david/cache/cfe4b390cb6f1605019866159855f868/">cache</a>)</cite></p>
  448. </blockquote>
  449. <p>Coïncidence marrante, c’est ce que j’ai essayé de faire pour la <a href="/david/stream/2019/12/03/">publication de la semaine dernière</a>. Vous n’avez peut-être pas lu la fin si votre agrégateur ne vous averti·e pas des mises à jour des contenus eux-mêmes. Et c’est là où la publication du brouillon est difficile, il faut adapter/recréer l’ensemble des outils qui ont été développés pour une publication à un instant donné.</p>
  450. <p>À quel moment prévenir le lecteur ou la lectrice qu’une publication a été amendée ? De quelle manière ? Ce ne sont pas des questions techniques mais de design.</p>
  451. <p><em>Si tant est que les deux puissent être séparés.</em></p>
  452. <hr />
  453. <blockquote>
  454. <p>Je suis de plus en plus attiré par les petits incréments indiscernables de notre quotidien, mais qui nous entraîne inconsciemment vers la réalisation d’un chemin. Personne n’a voulu la patine, mais elle est tout de même le résultat d’habitudes et de fréquences. Elle est l’histoire d’une invisibilité, de frictions, contacts, mouvements qui lui donnent naissance.</p>
  455. <p><cite><em><a href="http://www.la-grange.net/2019/01/04/patine">Carnets Web de La Grange</a></em> (<a href="/david/cache/45d6fff68f5149e4542c35edaae22d25/">cache</a>)</cite></p>
  456. </blockquote>
  457. <p>La Grange se réveille doucement, en ayant laissé le temps à la patine de s’installer, loin des lecteurs et lectrices. C’est une chose qui m’a souvent tenté (notamment dans mes pires cauchemars lorsque j’imagine monétiser cet endroit sur sa fraîcheur), tout en sachant que la publication est pour moi une libération qui peut difficilement attendre. Il est rare que je passe par un brouillon ou que je ne rédige pas en un seul jet, publié dans la foulée. J’ai déjà du mal à attendre le lendemain pour une publication comme celle-ci.</p>
  458. <p>J’aurais certainement des choses à apprendre d’une telle pratique. Sur mon rapport au partage et à l’importance de mon image.</p>
  459. <p><em>Casser le miroir pour mieux se réparer.</em></p>
  460. <hr />
  461. <blockquote>
  462. <p>Many—usually cis, white, heterosexual—people in the tech industry believe that this “privacy tradeoff” is worthwhile. While they have a financial incentive in the continuation of this model, and are not necessarily the worst harmed when their privacy is weakened, their privilege has made them short-sighted.</p>
  463. <p><cite><em><a href="https://24ways.org/2019/its-time-to-get-personal/">It’s Time to Get Personal</a></em> (<a href="/david/cache/94862aae8361e7a89530dca75e991c35/">cache</a>)</cite></p>
  464. </blockquote>
  465. <p>J’apprécie beaucoup le travail de Laura Kalbag. Je continue de travailler ma compréhension des privilèges et de ce que ça peut signifier pour mon entourage. Publier sur son espace est élitiste et publier sur une plateforme soulève d’autres problèmes. Deux formes de dominations, l’une par la technique, l’autre par la pression sociale/culturelle. Une piste est de proposer des <a href="https://fr.wikipedia.org/wiki/Outil_convivial">outils conviviaux</a> — et c’est ce que s’attèlent à faire <a href="https://laurakalbag.com/">Laura</a> et <a href="https://ar.al/">Aral</a>. J’aimerais poursuivre une piste parallèle.</p>
  466. <p><em>J’apprécie beaucoup leur travail (bis).</em></p>
  467. <hr />
  468. <blockquote>
  469. <p>Guess what? It’s not about reaching as many people as possible with your content. If you can do that, great, remember me when you’re famous. But chances are that by far the biggest beneficiary of you trying to help past you is future you. If others benefit, that’s icing.</p>
  470. <p><cite><em><a href="https://www.swyx.io/writing/learn-in-public/">Learn In Public</a></em> (<a href="/david/cache/079e037d172796798451cbba9da82cb9/">cache</a>)</cite></p>
  471. </blockquote>
  472. <p>Parfois, en relisant un vieux billet, j’ai le sourire comme celui que l’on peut avoir lorsqu’on retrouve une photographie. Avec une peu de nostalgie mais aussi d’accomplissement suite au chemin parcouru depuis. En se sentant un peu coupable d’avoir été bien différent, d’avoir osé immortaliser des états et les publier. En ayant conscience que l’acte de publication rend caduque ces mots, ces images, ces pensées. Qui continuent leurs chemins dans ma tête… et parfois dans les vôtres.</p>
  473. <p><em>Ce web-log n’est finalement qu’un très long change-log.</em></p>
  474. <hr />
  475. <blockquote>
  476. <p>I know the anxiety of sharing something with the world. I know there is a pressure to match the quality we see elsewhere on the web. But maybe we should stop trying to live up to somebody else’s standards and focus on just getting stuff out there instead. Maybe our “imperfect” things are already helpful to someone. Maybe this shouldn’t be so hard.</p>
  477. <p><cite><em><a href="https://mxb.dev/blog/good-enough/">Good Enough</a></em> (<a href="/david/cache/4b2b67d433ac6e25067ac892c40f3cd1/">cache</a>)</cite></p>
  478. </blockquote>
  479. <p>Il y a le karaoké des plateformes, des lieux suffisamment bruyants pour que la médiocrité ne semble pas visible. Il y a les cours de chant qui doivent se faire en des lieux prestigieux, des noms de domaines mélodieux. Et puis, il y a chanter sous la douche ou siffloter sur son vélo, publier chez soi ce qui semble sonner vrai. Transmettre son humeur aux autres, son tempo du moment, ses dissonances aussi, ça soulage et c’est déjà pas mal.</p>
  480. <p><em>fab stream2019.publish</em></p>
  481. </article>
  482. <nav id="jumpto">
  483. <p>
  484. <a rel=prev href="/david/stream/2019/12/03/">← En forêt</a> | <a href="/david/stream/2019/" title="Retour à la liste complète">↑ Liste complète</a> | <a rel=next href="/david/stream/2019/12/17/">Origines →</a>
  485. </p>
  486. </nav>
  487. <footer>
  488. <div>
  489. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  490. <p>
  491. Bonjour/Hi!
  492. 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>
  493. 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>).
  494. </p>
  495. <p>
  496. 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>.
  497. </p>
  498. <p>
  499. Les dernières publications hebdomadaires sont :
  500. </p>
  501. <ul class="with_columns">
  502. <li>
  503. <a href="/david/stream/2019/12/31/">Merci</a>
  504. </li>
  505. <li>
  506. <a href="/david/stream/2019/12/27/">Intemporels</a>
  507. </li>
  508. <li>
  509. <a href="/david/stream/2019/12/24/">Outils</a>
  510. </li>
  511. <li>
  512. <a href="/david/stream/2019/12/17/">Origines</a>
  513. </li>
  514. <li>
  515. <a href="/david/stream/2019/12/10/">Publier</a>
  516. </li>
  517. <li>
  518. <a href="/david/stream/2019/12/03/">En forêt</a>
  519. </li>
  520. <li>
  521. <a href="/david/stream/2019/11/26/">Ecocentric</a>
  522. </li>
  523. <li>
  524. <a href="/david/stream/2019/11/19/">Se livrer</a>
  525. </li>
  526. <li>
  527. <a href="/david/stream/2019/11/12/">Dépendances</a>
  528. </li>
  529. <li>
  530. <a href="/david/stream/2019/11/05/">Positif</a>
  531. </li>
  532. <li>
  533. <a href="/david/stream/2019/10/29/">Dettes</a>
  534. </li>
  535. <li>
  536. <a href="/david/stream/2019/10/22/">Privilèges</a>
  537. </li>
  538. <li>
  539. <a href="/david/stream/2019/10/15/">Discrétion</a>
  540. </li>
  541. <li>
  542. <a href="/david/stream/2019/10/08/">Désespérance</a>
  543. </li>
  544. <li>
  545. <a href="/david/stream/2019/10/01/">Présent</a>
  546. </li>
  547. <li>
  548. <a href="/david/stream/2019/09/24/">Manifester</a>
  549. </li>
  550. <li>
  551. <a href="/david/stream/2019/09/17/">Arpenter</a>
  552. </li>
  553. <li>
  554. <a href="/david/stream/2019/09/10/">Nostalgie</a>
  555. </li>
  556. <li>
  557. <a href="/david/stream/2019/09/03/">Déconstruire</a>
  558. </li>
  559. <li>
  560. <a href="/david/stream/2019/08/27/">Documenter</a>
  561. </li>
  562. <li>
  563. <a href="/david/stream/2019/08/20/">Frustration</a>
  564. </li>
  565. <li>
  566. <a href="/david/stream/2019/08/13/">Holisme</a>
  567. </li>
  568. <li>
  569. <a href="/david/stream/2019/08/06/">1%</a>
  570. </li>
  571. <li>
  572. <a href="/david/stream/2019/07/30/">Exemplarité</a>
  573. </li>
  574. <li>
  575. <a href="/david/stream/2019/07/23/">Timelines</a>
  576. </li>
  577. <li>
  578. <a href="/david/stream/2019/07/16/">Écoute</a>
  579. </li>
  580. <li>
  581. <a href="/david/stream/2019/07/02/">Anxiété</a>
  582. </li>
  583. <li>
  584. <a href="/david/stream/2019/06/21/">À lier</a>
  585. </li>
  586. <li>
  587. <a href="/david/stream/2019/06/14/">Pauvreté</a>
  588. </li>
  589. <li>
  590. <a href="/david/stream/2019/06/07/">Amateur</a>
  591. </li>
  592. <li>
  593. <a href="/david/stream/2019/05/31/">Pollution</a>
  594. </li>
  595. <li>
  596. <a href="/david/stream/2019/05/24/">Apaisement</a>
  597. </li>
  598. <li>
  599. <a href="/david/stream/2019/05/10/">Folie</a>
  600. </li>
  601. <li>
  602. <a href="/david/stream/2019/05/03/">Sympathie</a>
  603. </li>
  604. <li>
  605. <a href="/david/stream/2019/04/12/">Péremption</a>
  606. </li>
  607. <li>
  608. <a href="/david/stream/2019/04/05/">Définitions</a>
  609. </li>
  610. <li>
  611. <a href="/david/stream/2019/03/29/">Acceptation</a>
  612. </li>
  613. <li>
  614. <a href="/david/stream/2019/03/22/">Dissonance</a>
  615. </li>
  616. <li>
  617. <a href="/david/stream/2019/03/15/">Reconnaissance</a>
  618. </li>
  619. <li>
  620. <a href="/david/stream/2019/03/08/">Lecture</a>
  621. </li>
  622. <li>
  623. <a href="/david/stream/2019/03/01/">Journaux</a>
  624. </li>
  625. <li>
  626. <a href="/david/stream/2019/02/22/">Écriture</a>
  627. </li>
  628. <li>
  629. <a href="/david/stream/2019/02/15/">Kyriarchie</a>
  630. </li>
  631. <li>
  632. <a href="/david/stream/2019/02/08/">Mots-serrures</a>
  633. </li>
  634. <li>
  635. <a href="/david/stream/2019/02/01/">Sans voie</a>
  636. </li>
  637. <li>
  638. <a href="/david/stream/2019/01/25/">Auto-diagnostic</a>
  639. </li>
  640. <li>
  641. <a href="/david/stream/2019/01/18/">Agilité</a>
  642. </li>
  643. <li>
  644. <a href="/david/stream/2019/01/11/">Métaphores</a>
  645. </li>
  646. <li>
  647. <a href="/david/stream/2019/01/04/">Balbutiements</a>
  648. </li>
  649. </ul>
  650. <p>
  651. Voici quelques articles choisis :
  652. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  653. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  654. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  655. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  656. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  657. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  658. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  659. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  660. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  661. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  662. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  663. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  664. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  665. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  666. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  667. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  668. </p>
  669. <p>
  670. 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>.
  671. </p>
  672. <p>
  673. Je ne traque pas ta navigation mais mon
  674. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  675. conserve des logs d’accès.
  676. </p>
  677. </div>
  678. </footer>
  679. <script type="text/javascript">
  680. ;(_ => {
  681. const jumper = document.getElementById('jumper')
  682. jumper.addEventListener('click', e => {
  683. e.preventDefault()
  684. const anchor = e.target.getAttribute('href')
  685. const targetEl = document.getElementById(anchor.substring(1))
  686. targetEl.scrollIntoView({behavior: 'smooth'})
  687. })
  688. })()
  689. </script>
  690. <script>
  691. /* Service workers */
  692. if (navigator.serviceWorker) {
  693. window.addEventListener('load', function () {
  694. var selector = 'a[href^="/david/cache/"], a[rel=prev], a[rel=next]'
  695. function sendLinks (selector) {
  696. var links = [].slice.call(document.querySelectorAll(selector)).map(function (link) {
  697. return link.getAttribute('href')
  698. })
  699. links.push(location.pathname) // Put the current page in cache too.
  700. navigator.serviceWorker.controller.postMessage({ links: links })
  701. }
  702. navigator.serviceWorker.getRegistration()
  703. .then(function (registration) {
  704. if (!registration || !navigator.serviceWorker.controller) {
  705. return navigator.serviceWorker.register('/serviceworker.js')
  706. .then(navigator.serviceWorker.ready)
  707. .then(function () {
  708. console.log('[ServiceWorker] Ready to go!')
  709. })
  710. .catch(console.error.bind(console))
  711. } else {
  712. console.log('[ServiceWorker] Send links via registration')
  713. sendLinks(selector)
  714. }
  715. })
  716. navigator.serviceWorker.addEventListener('controllerchange', function () {
  717. console.log('[ServiceWorker] Send links via controller change')
  718. sendLinks(selector)
  719. })
  720. navigator.serviceWorker.addEventListener('message', function (event) {
  721. var link = document.querySelector('a[href="' + event.data.link + '"]')
  722. if (event.data.status && link) {
  723. link.style.backgroundColor = '#2d7474'
  724. link.style.color = '#f0f0ea'
  725. link.setAttribute('title', 'En cache pour consultation sans connexion')
  726. }
  727. })
  728. })
  729. } else {
  730. console.warn('[ServiceWorker] No cache for old browsers.')
  731. }
  732. </script>