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

4 yıl önce
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713
  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>Guide de conversion numérique au low tech (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="http://gauthierroussilhe.com/fr/posts/convert-low-tech">
  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. Guide de conversion numérique au low tech (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="http://gauthierroussilhe.com/fr/posts/convert-low-tech">Source originale du contenu</a></h3>
  445. <p><em>Veuillez noter que le site web présent est en version dynamique, nous allons bientôt re-uploader la version statique. Merci de votre patience.</em></p>
  446. <p>En mars 2019 j'ai mis en ligne mon nouveau site web en suivant des principes de conception "low tech". Je me suis décidé à faire cela car, premièrement, j'ai été impressionné par la refonte de <a href="https://solar.lowtechmagazine.com">solar.lowtechmagazine.com</a>. Leur site est devenu extrêmement léger grâce à une approche esthétique et technique sensée. De plus ils ont pensé au système énergétique : le serveur est alimenté par un panneau solaire et une batterie, ce qui veut dire que si la batterie est à plat et si le temps est mauvais alors le site n'est plus en ligne. Deuxièmement, depuis 2 ans je m'intéresse au concept d'Anthropocène, aux politiques de transition sociale et écologique et à l'impact du numérique sur les écosystèmes. Ces recherches et travaux de terrain m'ont permis de refonder complètement ma pratique et j'avais envie de développer un outil qui pourrait démontrer ce changement dans ma pratique de designer et inspirer d'autres personnes à faire de même.</p>
  447. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/2712248589-1552478904/low16.png"/><figcaption>Low Tech Magazine, cet héraut</figcaption></figure>
  448. <p>J'ai essayé à travers ce guide de dérouler toute la logique derrière la conception numérique de ce site low tech et ainsi de lister tous les outils et les références utiles pour porter ce genre de projets.</p>
  449. <h1>Table des matières</h1>
  450. <ol>
  451. <li><a href="#introduction">Point de départ</a></li>
  452. <li><a href="#principles">Principes de conception</a></li>
  453. <li><a href="#server">Quel type d'hébergement ?</a></li>
  454. <li><a href="#site">Faire son site avec Kirby</a></li>
  455. <li><a href="#design">Design</a></li>
  456. <li><a href="#content">Adapter son contenu</a><br/>
  457. a. <a href="#image">Images</a><br/>
  458. b. <a href="#video">Vidéos</a></li>
  459. <li><a href="#energy">Calculer l'énergie consommée et les émissions de CO2</a></li>
  460. <li><a href="#results">Les résultats</a></li>
  461. <li><a href="#doc">Outils et documentation</a></li>
  462. </ol>
  463. <h1>Point de départ<a name="introduction"/></h1>
  464. <p>Une grande partie de ma démarche a été affectée par le rapport "Lean ICT : Pour une sobriété numérique" du Shift Project. Les conclusions du rapport<sup id="fnref1:1"/> ramènent sur Terre :</p>
  465. <ol>
  466. <li><strong>La tendance à la surconsommation numérique n'est pas soutenable au regard de l'approvisionnement en énergie et en matériaux qu'elle requiert.</strong> Trop forte demande d'énergie, trop d'électricité consommée, augmentation des émissions de GES, explosion des usages vidéo et multiplication des périphériques, la transition numérique se place en porte-à-faux de la transition sociale et écologique.</li>
  467. <li><strong>L'intensité énergétique de l'industrie numérique augmente mondialement, à l'inverse de l'intensité énergétique du PIB mondial</strong>. À titre d'exemple la consommation d'énergie directe occasionnée par un euro de numérique a augmenté de 37% par rapport à 2010. Pour faire clair l'efficacité relative permise par le numérique ne se fait que parce qu'on injecte de plus en plus d'énergie dans le système.<sup id="fnref1:2"/></li>
  468. <li><strong>La consommation numérique actuelle est très polarisée.</strong> Les pays développés surconsomment les services numériques et l'investissement dans le numérique n'a pas d'effet observé sur le PIB pour l'instant.</li>
  469. <li><strong>L'impact environnemental de la transition numérique devient gérable si elle est plus sobre.</strong> On peut s'appuyer sur l'existant pour freiner l'augmentation de la consommation énergétique et essayer de stabiliser les émissions de GES liées.</li>
  470. </ol>
  471. <p>Au-delà de ces conclusions, le rapport met en évidence que la consommation énergétique du numérique se situe majoritairement à la production des équipements et que la consommation globale (production et usage) explose.</p>
  472. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/692779089-1552409616/low1.png"/><figcaption>Consommation d'énergie du numérique par poste en 2017</figcaption></figure>
  473. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/1860862593-1552409494/low2.png"/><figcaption>Consommation d'énergie du numérique par rapport à la consommation d'énergie mondiale</figcaption></figure>
  474. <h1>Principes de conception<a name="principles"/></h1>
  475. <p>Comment utiliser ce rapport pour faire émerger des réponses pratiques à ces constats ? Vu que la question du renouvellement et de la durabilité des équipements est prioritaire alors il s'agit de leur faire subir le moins de charge possible en nécessitant le moins d'espace possible. On peut supposer que, à trafic égal, si la taille des fichiers hébergés est réduite alors il y aura moins de données à transporter; moins de calcul associé, on ne participe pas à l'augmentation du parc et structurellement on consomme moins d'énergie.</p>
  476. <ol>
  477. <li>Côté hébergeur, réduire le poids du site, la demande de calcul et le flux de données à son <em>maximum</em> et côté client, réduire le poids moyen d'une page à son <em>maximum</em>;</li>
  478. <li>Faire des choix techniques qui mobilisent le moins d'équipements possibles ou qui distribuent l'effort sur des équipements existants et durables;</li>
  479. <li>Ramener à <em>l'essentiel</em> le contenu du site et réduire de façon drastique le poids des contenus restants;</li>
  480. <li>Rendre visible la démarche et la documenter.</li>
  481. </ol>
  482. <p>Dans les principes énoncés ci-dessus. Il y a deux relatifs que j'aimerais expliquer, "maximum" et "essentiel". Je parle de réduire le poids moyen d'une page à son "maximum", cela veut en fait dire jusqu'où je suis prêt à aller pour réduire le contenu du site et par rapport à quelle valeur antécédente. À défaut de pouvoir correctement calculer la consommation électrique de mon site et de me donner un objectif en kWh, j'ai décidé de me donner un budget moyen de 500kb/page en me basant sur les tendances de poids du web développées <a href="https://mobiforge.com/research-analysis/the-web-is-doom">ici</a> et <a href="https://idlewords.com/talks/website_obesity.htm">ici</a>. Avoir une poids moyen de 500kb/page ramène à la moyenne de 2010 et cela me laisserait assez de marge pour intégrer quelques images pour chaque projet. Cette négociation personnelle pour s'imposer une limite structurelle (énergie/poids) me paraît extrêmement importante car elle va structurer le contenu comme nous le verrons plus tard.</p>
  483. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/3786045217-1552410460/low4.png"/><figcaption>Évolution de poids des pages web par objet</figcaption></figure>
  484. <p>De façon générale ce projet repose déjà sur les principes développés par Philippe Bihouix<sup id="fnref1:3"/> ainsi que sur la <a href="https://solar.lowtechmagazine.com/2018/09/how-to-build-a-lowtech-website.html">documentation</a> de Low Tech Magazine et les <a href="https://www.greenit.fr/2009/05/12/5-regles-pour-un-site-web-plus-respectueux-de-l-environnement/">conseils</a> de Frédéric Bordage de greenit, je me permets juste de réitérer ce qu'ils ont développé et d'ajouter humblement ma pierre à l'édifice.</p>
  485. <h1>Quel type d'hébergement ?<a name="server"/></h1>
  486. <p>J'ai tout de suite pensé à quitter mon hébergement existant chez OVH et à souscrire à une offre d'hébergement "vert". Finalement j'ai commencé par faire un audit des équipements que je mobilise. Il s'avère que je loue un espace chez Linode (datacenter situé à Londres) pour héberger la version interactive du documentaire <a href="http://www.ethicsfordesign.com/watch">Ethics for Design</a>. Après un an et demi de diffusion j'ai une connaissance plus précise du trafic et j'ai décidé de réduire mon hébergement chez eux. J'en ai aussi profité pour annuler mon hébergement chez OVH et rapatrier tous mes sites vers Linode afin de maximiser l'usage de ce serveur. En fin de compte grâce à ce petit exercice j'ai réduit mes coûts et réduit mes usages côté hébergeur.</p>
  487. <p>Voici les étapes (très classiques) que j'ai suivi :</p>
  488. <ol>
  489. <li>Faire un audit des équipements que je mobilise;</li>
  490. <li>Redimensionner les usages de ces équipements par rapport au trafic et aux usages observés;</li>
  491. <li>Vérifier que le centre de données est géographiquement proche;</li>
  492. <li>Obtenir des informations sur l'approvisionnement énergétique du centre de données, son PUE, sa politique d'achat et de recyclage (échec);</li>
  493. <li>Changer vers une offre plus transparente dès que possible;</li>
  494. <li>Essayer de récupérer les données de consommation électrique du site et la méthologie de calcul.</li>
  495. </ol>
  496. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/3704250001-1552409494/low5.png"/><figcaption>Spécifications du vilain serveur qui ne donne aucune information sur son fonctionnement</figcaption></figure>
  497. <p>J'ai décidé de rester avec Linode pour l'instant même si je n'ai pu obtenir aucune information convaincante sur les data centers qu'ils utilisent car je dois continuer à répondre au trafic généré par le documentaire et je veux opérer en douceur sur ce point. Il ne me semble pas intéressant de m'auto-héberger car cela impliquerait de l'achat de matériel plus ou moins neuf que je ne peux pas réparer. Avoir un peu d'espace sur un serveur mutualisé reste bien plus sobre à mon avis.</p>
  498. <p>Pour le choix du bon hébergeur je conseille encore de lire les <a href="https://www.greenit.fr/2009/05/18/quels-criteres-pour-identifier-un-hebergeur-vert/!">conseils</a> de Frédéric Bordage. Ayant cela en tête voici quelques d'hébergeurs "verts" à tester :</p>
  499. <h1>Faire son site avec Kirby<a name="site"/></h1>
  500. <p>Le Homebrewserver Club a déjà très bien documenté la façon dont ils ont monté le site pour Low Tech Magazine et je conseille de lire de près cet <a href="https://homebrewserver.club/low-tech-website-howto.html">article</a> qui aborde autant l'hardware que le software. Cependant avec mon ami développeur, <a href="http://gauthierroussilhe.com/afivos.com">Fivos Avgerinos</a>, nous avons voulu testé <a href="https://getkirby.com">Kirby</a> comme gestionnaire de contenu (CMS) au lieu de Pelican pour deux raisons. Premièrement nous voulions tester la comptabilité de Kirby avec les principes de la low tech. Deuxièmement, nous aimerions développer une solution accessible aux acteurs sans grande capacité budgétaire (villages, associations, etc.) afin qu'ils déploient des outils numériques sobres et faciles à entretenir.</p>
  501. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/2785676785-1552409494/low7.png"/><figcaption>Kirby, un amour de backend</figcaption></figure>
  502. <p>Il s'avère que Kirby est très facile d'accès, n'a pas besoin d'une base de données (flat-file), est très léger (install de 5mb), a une communauté active et est open-source. De plus nous avons eu accès à un outil (cookbook) pour transformer les sites fait avec Kirby en site statique. Pour le dire simplement, un site statique pre-génère toutes ses pages en html et les envoie tel quel. Un site dynamique génère la page à chaque visite. Un site statique c'est une page générée une fois pour 1000 requêtes, un site dynamique c'est une page générée 1000 fois pour 1000 requêtes. Alors un site low tech c'est forcément un site statique. Nous avons donc développé notre site normalement et une fois le développement fini nous avons passé le site en statique en utilisant ce <a href="https://limits-drive.mycozy.cloud/public?sharecode=NXkXbuSGsdEp"><strong>cookbook</strong></a>.</p>
  503. <p>Il est important de noter que de nombreuses solutions existent pour faire un site statique : <a href="https://gohugo.io/">Hugo</a>, <a href="https://jekyllrb.com/">Jekyll</a>, <a href="https://blog.getpelican.com/">Pelican</a>, etc... Chacun est libre de faire son choix en fonction des contraintes de son projet et de ses besoins de gestion de contenu.</p>
  504. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/3859405789-1552409494/low15.png"/><figcaption>Écrire un article en markdown avec Kirby</figcaption></figure>
  505. <p>Kirby est un excellent gestionnaire de contenu qui est aussi facile à prendre en main pour le ou la bénévole d'association que pour l'employé de mairie ou le designer chevronné. Le poids total du site sur notre serveur est maintenant de 22Mb (contre 200Mb sur mon ancien site géré avec un Wordpress). Je gère la "base de données" avec le Finder via GitHub et le back-end est très rapide. Globalement Kirby répond à tous nos critères de low tech et nous allons continuer à utiliser l'outil dans ce sens : Kirby est résolument un CMS sobre et accessible pour tous. Son seul défaut actuel est sa résilience et son entretien dans le temps. Wordpress a beaucoup plus de chances de continuer à être maintenu et mis à jour dans les dizaines années à venir que Kirby, il s'agit donc d'un pari sur l'avenir. </p>
  506. <h1>Design<a name="design"/></h1>
  507. <p>Le contrainte fixé par le poids moyen des pages implique de travailler différemment avec les images/vidéos qui constituent généralement 90% du poids d'un site. Ca veut dire moins d'images, moins grandes et traitées différemment. J'ai aussi mis de côté tous les éléments stylistiques superficiels (animation) et réduit au maximum l'usage de Javascript. De façon générale j'ai grandement été inspiré par l'approche de Low Tech Magazine qui reste la référence principale pour l'instant et par le site du <a href="https://www.monde-diplomatique.fr">Monde Diplomatique</a> pour la gestion des textes. Tout comme Low Tech magazine je n'ai pas de logo, j'utilise des polices installées par défaut sur le terminal, il n'y a pas d'outils de tracking ou de service tiers.</p>
  508. <p>Le design du site est assez standard et est surtout orienté vers une lecture agréable des textes souvent longs qui y sont présents. Pour ceux qui aimerait approfondir les aspects du design de Low Tech Magazine je conseille cet <a href="https://github.com/lowtechmag/solar/wiki/Solar-Web-Design">article</a>.</p>
  509. <p>En termes de design le low tech offre des nombreux champs encore inexploités qui vont demander beaucoup d'imagination et d'innovation pour s'adapter aux contraintes structurelles de systèmes techniques et énergétiques. Tout est à faire et j'espère que de plus en plus de designers chevronnés s'en saisiront pour proposer des nouvelles esthétiques et expériences.</p>
  510. <h1>Adapter son contenu<a name="content"/></h1>
  511. <h2>Image<a name="image"/></h2>
  512. <p>Le traitement des images a répondu à un impératif de poids. Je me suis fixé une limite de 100kb par image. En sachant que j'ai 500kb disponible en moyenne par page je m'autorise à 3-4 images par page en moyenne. Pour réduire le poids j'ai donc suivi la méthode utilisée par le Low Tech Magazine en exportant pour le web mes images avec les paramètres suivants :</p>
  513. <div class="grid">
  514. <div class="col-6_sm-6">
  515. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/1766403709-1552411130/low13.png"/><figcaption>exporter pour le web en niveaux de gris avec Photoshop/Illustrator</figcaption></figure></div>
  516. <div class="col-6_sm-6">
  517. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/3681153645-1552409494/low14.png"/><figcaption>exporter pour le web en sélectif si des couleurs doivent apparaître</figcaption></figure></div>
  518. </div>
  519. <p>Certaines images, notamment les schémas, tournent aux alentours de 16kb par image donc j'ai pu redescendre ma moyenne par rapport à d'autres pages qui la dépassent. Cela me permet aussi d'intégrer plus d'images dans un post prioritaire comme celui-ci. Pour tout ce qui touche aux diagrammes et textes que je génère depuis Illustrator ou autre j'exporte directement en svg sans recommandation particulière.</p>
  520. <p>Voici les deux formats que j'utilise:</p>
  521. <ul>
  522. <li>photographies, images non vectorisées : PNG-8 dithered (~5-100kb)</li>
  523. <li>textes et diagrammes vectorisés : SVG (~10kb)</li>
  524. </ul>
  525. <p>Ce régime des images ne m'a pas spécialement impacté car les projets que je présente sur ce site nécessitent majoritairement la lecture du texte et les images ne font office que de support. Modifier la qualité des images par le dithering ne réduit pas leur fonction de support, au contraire elles appuient le message. Cependant un de mes projets a pour rendu des séries de cartographies, il était donc important de maintenir une haute qualité d'image pour permettre la lecture des cartes. Ma solution a été d'afficher une ou deux cartes tant en essayant de les compresser au maximum de leur lisibilité. Le reste des cartes n'est pas affiché et il suffit de cliquer manuellement sur un lien pour les ouvrir. Cela me permettra de limiter le nombre de requêtes seulement aux personnes réellement intéressées par ces cartes.</p>
  526. <p>Si vous ne souhaitez pas passer par la technique du dithering et donc maintenir vos images dans leur esthétique première alors vous pouvez utiliser un service de compression comme <a href="https://resmush.it">reSmushit</a> ou <a href="https://imagecompressor.com">ImageCompressor</a>.</p>
  527. <h2>Video<a name="video"/></h2>
  528. <p>C'est sur ce point que je ferai ma contribution majeure vue que c'est sur la vidéo que j'ai le plus d'expertise. La première chose à entreprendre c'est de faire un audit des vidéos qui sont hébergées sur des services tiers pour moi (Vimeo, Youtube majoritairement) et déterminer le poids total de mes vidéos sur ces services. J'avais plus de 14Go de vidéo hébergés sur Vimeo mais cela reste le poids théorique car entre la redondance des serveurs et les multiples copies de qualité inférieure on peut allègrement doubler le poids théorique.</p>
  529. <p>Ces 14Go de vidéo que j'ai mis en ligne sur un service d'hébergement vidéo peuvent être expliquer par plusieurs facteurs:</p>
  530. <ol>
  531. <li>Je cherche à exporter mes vidéos depuis Premiere et After Effects avec une qualité maximum par défaut (1920*1080, 25fps, format mov, H264);</li>
  532. <li>Je ne réfléchis pas l'usage réel de ces vidéos, je les mets juste sur Vimeo puis je les intègre au besoin;</li>
  533. <li>La seule limite proposée par l'hébergeur est un quota hebdomadaire de 5Go;</li>
  534. <li>Je n'ai jamais associé auparavant un volume de données à une consommation électrique et donc à des émissions de gaz à effet de serre (GES).</li>
  535. </ol>
  536. <p>De plus si je prends l'exemple de la version anglaise du documentaire (1.6Go) sur Vimeo, je génère 3862 lectures par an avec un taux de visionnaire moyen de 28% (448Mo envoyé en moyenne). Cela veut dire que cette vidéo a déjà mobilisé l'envoi de 1730Go, à cela s'ajoute le téléchargement direct à hauteur de 174.5Go (210 téléchargements de 830.9Mo en moyenne). J'en arrive presque à 2To de données envoyées en 1 an (1904.7Go) juste pour la version du documentaire sur Vimeo donc ce n'est pas qu'une image partielle du trafic réel. Le coût énergétique et les émissions de GES liées à ce trafic sera discuté plus bas.</p>
  537. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/423277456-1552409494/low9.png"/></figure>
  538. <p>J'ai trouvé un outil très satisfaisant pour réduire considérablement le poids de mes vidéos sans perte de qualité apparente, il s'agit de <a href="https://handbrake.fr">Handbrake</a>. C'est un outil de conversion vidéo miraculeux et assez facile à prendre en main si on a les bons paramètres. J'ai suivi les <a href="http://www.benoitlabourdette.com/IMG/pdf/2018_outils_handbrake_01.pdf">conseils</a> de Benoit Labourdette sur les réglages à suivre pour obtenir une vidéo légère et de bonne qualité.</p>
  539. <figure class="img-full"><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/2751970336-1552846857/low8.svg"/><figcaption>Handbrake, les docteurs le haissent</figcaption></figure>
  540. <p>Je crois que les chiffres sont assez parlants. J'ai donc réduit de 75% le poids des vidéos hébergées et si le trafic reste stable j'aurais réduit de 75% le transfert des données vidéo. Ces chiffres sont aussi dus à quelques choix techniques, j'ai par exemple décidé que le format 720p (1280*720) était largement nécessaire à la bonne compréhension des vidéos. Maintenant je travaille avec des textes plus gros quand je fais de l'animation ou des vidéos afin d'éviter toute problème de lecture (juste au cas où).</p>
  541. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/787043501-1552409494/low10.png"/><figcaption>Ne soyez pas effrayé, Benoit Labourdette explique très bien les paramètres de Handbrake</figcaption></figure>
  542. <p>Il me reste à trouver les bons réglages pour le documentaire "Ethics for Design" car mes premières tentatives n'ont pas été concluantes. Cela s'explique par le fait que le documentaire mélange vidéo et animation et différents profils de caméra. J'ai donc des pertes de qualité surprenantes soit sur l'animation soit sur la vidéo en fonction des réglages que j'utilise. Je pense trouver le bon réglage dans pas longtemps !</p>
  543. <h1>Calculer l'énergie et les émissions de CO2<a name="energy"/></h1>
  544. <p>Estimer la consommation d'énergie finale d'un site web est extrêmement compliqué. Quelle échelle choisir ? Est-ce qu'on fait rentrer les émissions liées à l'exploitation du caoutchouc qui viendra enrober les câbles sous-marins de fibre optique ? Comme d'habitude avec les analyses de cycle de vie le sujet principal est l'échelle qu'on définit. On se base généralement sur ces modèles de calcul de l'intensité énergétique par GB transmis pour comptabiliser la consommation électrique du numérique, on obtient alors un ratio de kWh consommé par GB transmis (kWh/GB). Les résultats différent par facteur 20000 en fonction des échelles choisies et des méthodes de calcul<sup id="fnref1:4"/> donc autant dire qu'on n'a pas fini de se poser des questions.</p>
  545. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/327777565-1552409494/low11.png"/><figcaption>Il y a à boire et à manger pour tout le monde</figcaption></figure>
  546. <p>Quoi qu'il soit la formule générale est la suivante pour déterminer combien de dioxide de carbone est émis par GB : déterminer votre valeur d'intensité énergétique (kWh/GB) (bonne chance), déterminer votre mix énergétique de référence (le pays où se situe les équipements) et finalement regarder le facteur d'émissions CO2 de l'énergie produite dans ce pays.</p>
  547. <p>Par exemple, disons que je me base sur le modèle de Weber et al. (2010) qui situe mon intensité énergétique à 7kWh/GB. Ensuite je sais que mon serveur est basé à Londres donc ma production énergétique de référence sera celle du Royaume-Uni. Sachant cela je regarde sur le site de l'Agence Européenne de l'Environnement le facteur d'émissions CO2 du Royaume-Uni, il est de 281.1g CO2/kWh.<sup id="fnref1:5"/> J'ai juste à multiplier mon intensité énergétique par le facteur d'émissions CO2 et j'obtiens mes émissions CO2 par GB, dans mon cas 1977.7g CO2/GB, soit 2 kilos de CO2 par GB. Si je me fis au modèle de Coroma et al. (2013) je serais sûrement aux alentours de 56 grammes par GB.</p>
  548. <p>Dans le cas de mes vidéos hébergées sur Vimeo, probablement dans un data center américain, je dois recalculer mes émissions par rapport à la production énergétique américaine. Le facteur d'émissions CO2 aux États-Unis est d'environ 576g CO2/kWh selon les derniers chiffres de l'EPA<sup id="fnref1:6"/>, cela est du à leur production énergétique très dépendante des énergies fossiles. Si je reprends les chiffres du trafic de mon documentaire sur Vimeo invoqués plus haut (1904.7Go/an) alors l'année dernière j'aurais émis selon le modèle Weber et al. (2010) : (7x1904.7)x576, soit 7.7 tonnes de CO2. Selon le modèle de Coroma et al. (2013) j'aurais émis 219.4 kilos de CO2. En France, suivant le même modèle, j'aurais émis 22.3 kilos de CO2 (le nucléaire est considéré comme un énergie bas-carbone donc le mix énergétique français est très peu carboné).</p>
  549. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/479506109-1552846857/low17.svg"/></figure>
  550. <p>Au delà du poids des vidéos le choix de l'hébergeur et de son approvisionnement énergétique est donc important. J'ai tenté d'héberger mes vidéos sur peertube pour me soustraire de la consommation électrique des datacenters et ainsi distribuer l'effort sur plusieurs terminaux personnels mais l'expérience a tournée court car mes vidéos se sont fait supprimer rapidement par l'administrateur de l'instance choisie. Je n'ai aucune idée si l'utilisation d'un réseau d'hébergement p2p est plus sobre mais je vais tenter de continuer l'expérience plus tard. Pour l'instant je suis toujours sur Vimeo avec des vidéos 75% moins lourdes.</p>
  551. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/513351532-1552846857/low18.png"/><figcaption>The Shift Project semble avoir un modèle solide pour calculer les émissions de carbone générées par une action numérique</figcaption></figure>
  552. <p>La seule façon de traquer correctement la consommation électrique d'un site serait d'utiliser les services de WattImpact ou de Greenspector mais ces services sont plutôt réservés aux entreprises qui doivent faire leurs bilans RSE ou faire du rachat de crédit carbone pour réduire leur impact. À compter 100€ minimum pour avoir Wattimpact actif sur votre site.</p>
  553. <h1>Les résultats<a name="results"/></h1>
  554. <p>Cela fait 6 ans maintenant que je travaille comme designer, j'ai touché à la production vidéo, dirigé des projets digitaux, pratiqué un peu d'UI/UX, pourtant ce projet a été la première fois que j'ai ressenti l'hyper-matérialité de ma pratique : j'ai repensé la façon dont je négocie avec des systèmes électrique, énergétique et technique derrière la conception et la mise en ligne de ce site. J'ai enfin eu des contraintes énergétiques et matérielles réelles sur lesquelles m'appuyer et cela fait énormément de bien, mieux encore, cela donne du sens à la démarche. "Réel" veut dire ici que les contraintes sont établies par rapport à une reconnaissance des systémes complexes qui maintiennent ce site et par rapport aux impacts négatifs que ces systémes ont sur les écosystèmes terrestres et sur les objectifs de transition.</p>
  555. <p>Si on fait le bilan : j'ai réduit le poids de mon site par 10, le poids moyen d'une page par 3 et j'ai réduit le poids de mes vidéos sur les services tiers par 4. J'ai un site extrêmement simple à administrer, très léger donc très rapide, qui consomme très peu d'électricité et émet donc peu de GES. Le site suit aussi tous les canons du design numérique d'aujourd'hui : mobile-first, accessibilité, rapidité de chargement. En fait il est assez surprenant de se rendre compte que des limitations structurelles (poids/énergie) ramènent à des expériences de navigation beaucoup plus accessibles à tous les publics quelque soit leur équipement, leur connexion ou leur impératif de motricité ou de vision.</p>
  556. <p>Voici quelques résultats à la volée sur quelques outils standards pour mesurer le poids et la vitesse de pages web.</p>
  557. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/2607424577-1552409494/low6.png"/><figcaption>Bon élève sur Pingdom, peut mieux faire avec la version statique</figcaption></figure>
  558. <figure><img alt="" src="http://gauthierroussilhe.com/media/pages/posts/convert-low-tech/1411975117-1552409494/low12.png"/><figcaption>Choucou de PageSpeed Insights</figcaption></figure>
  559. <p>Nous avons encore un peu de travail pour rendre ce site exemplaire. Je dois mettre en ligne une nouvelle version du site statique et nous devons améliorer le code pour bien redimensionner les images de façon native au lieu d'utiliser html.</p>
  560. </article>
  561. </section>
  562. <nav id="jumpto">
  563. <p>
  564. <a href="/david/blog/">Accueil du blog</a> |
  565. <a href="http://gauthierroussilhe.com/fr/posts/convert-low-tech">Source originale</a> |
  566. <a href="/david/stream/2019/">Accueil du flux</a>
  567. </p>
  568. </nav>
  569. <footer>
  570. <div>
  571. <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
  572. <p>
  573. Bonjour/Hi!
  574. 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>
  575. 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>).
  576. </p>
  577. <p>
  578. 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>.
  579. </p>
  580. <p>
  581. Voici quelques articles choisis :
  582. <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
  583. <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
  584. <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
  585. <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
  586. <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
  587. <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
  588. <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
  589. <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
  590. <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
  591. <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
  592. <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
  593. <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
  594. <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
  595. <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
  596. <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
  597. et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
  598. </p>
  599. <p>
  600. 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>.
  601. </p>
  602. <p>
  603. Je ne traque pas ta navigation mais mon
  604. <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
  605. conserve des logs d’accès.
  606. </p>
  607. </div>
  608. </footer>
  609. <script type="text/javascript">
  610. ;(_ => {
  611. const jumper = document.getElementById('jumper')
  612. jumper.addEventListener('click', e => {
  613. e.preventDefault()
  614. const anchor = e.target.getAttribute('href')
  615. const targetEl = document.getElementById(anchor.substring(1))
  616. targetEl.scrollIntoView({behavior: 'smooth'})
  617. })
  618. })()
  619. </script>