|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837 |
- <!doctype html><!-- This is a valid HTML5 document. -->
- <!-- Screen readers, SEO, extensions and so on. -->
- <html lang=fr>
- <!-- Has to be within the first 1024 bytes, hence before the <title>
- See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
- <meta charset=utf-8>
- <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
- <!-- The viewport meta is quite crowded and we are responsible for that.
- See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
- <meta name=viewport content="width=device-width,minimum-scale=1,initial-scale=1,shrink-to-fit=no">
- <!-- Required to make a valid HTML5 document. -->
- <title>Mots de passe physiques — David Larlet</title>
- <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
- <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons/apple-touch-icon.png">
- <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons/favicon-32x32.png">
- <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons/favicon-16x16.png">
- <link rel="manifest" href="/manifest.json">
- <link rel="mask-icon" href="/static/david/icons/safari-pinned-tab.svg" color="#5bbad5">
- <link rel="shortcut icon" href="/static/david/icons/favicon.ico">
- <meta name="apple-mobile-web-app-title" content="David Larlet">
- <meta name="application-name" content="David Larlet">
- <meta name="msapplication-TileColor" content="#da532c">
- <meta name="msapplication-config" content="/static/david/icons/browserconfig.xml">
- <meta name="theme-color" content="#f0f0ea">
- <!-- That good ol' feed, subscribe :p. -->
- <link rel=alternate type="application/atom+xml" title=Feed href="/david/log/">
-
- <!-- Canonical URL for SEO purposes -->
- <link rel="canonical" href="https://larlet.fr/david/blog/2016/mots-passe-physiques/">
- <!-- SEO/Semantic metadata -->
- <meta name="description" content="Il faut donc être en possession de la carte et du mot de passe personnel pour pouvoir recomposer un mot de passe complet." />
- <meta name="twitter:description" property="og:description" itemprop="description" content="Il faut donc être en possession de la carte et du mot de passe personnel pour pouvoir recomposer un mot de passe complet." />
- <meta name="twitter:title" property="og:title" itemprop="name" content="Mots de passe physiques" />
- <meta name="twitter:card" content="summary" />
- <meta name="twitter:creator" content="@davidbgk" />
- <meta name="twitter:url" property="og:url" content="https://larlet.fr/david/blog/2016/mots-passe-physiques/" />
- <meta property="og:type" content="article" />
- <meta property="og:site_name" content="David Larlet (@davidbgk)" />
-
- <meta name="twitter:image" property="og:image" itemprop="image" content="https://larlet.fr/static/david/blog/2016/mots-passe-physiques.jpg" />
-
-
- <style>
- /* http://meyerweb.com/eric/tools/css/reset/ */
- html, body, div, span,
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
- a, abbr, address, big, cite, code,
- del, dfn, em, img, ins,
- small, strike, strong, tt, var,
- dl, dt, dd, ol, ul, li,
- fieldset, form, label, legend,
- table, caption, tbody, tfoot, thead, tr, th, td,
- article, aside, canvas, details, embed,
- figure, figcaption, footer, header, hgroup,
- menu, nav, output, ruby, section, summary,
- time, mark, audio, video {
- margin: 0;
- padding: 0;
- border: 0;
- font-size: 100%;
- font: inherit;
- vertical-align: baseline;
- }
- /* HTML5 display-role reset for older browsers */
- article, aside, details, figcaption, figure,
- footer, header, hgroup, menu, nav, section { display: block; }
- body { line-height: 1; }
- blockquote, q { quotes: none; }
- blockquote:before, blockquote:after,
- q:before, q:after {
- content: '';
- content: none;
- }
- table {
- border-collapse: collapse;
- border-spacing: 0;
- }
-
- /* http://practicaltypography.com/equity.html */
- /* https://calendar.perfplanet.com/2016/no-font-face-bulletproof-syntax/ */
- /* https://www.filamentgroup.com/lab/js-web-fonts.html */
- @font-face {
- font-family: 'EquityTextB';
- src: url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff2') format('woff2'),
- url('/static/david/css/fonts/Equity-Text-B-Regular-webfont.woff') format('woff');
- font-weight: 300;
- font-style: normal;
- font-display: swap;
- }
- @font-face {
- font-family: 'EquityTextB';
- src: url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff2') format('woff2'),
- url('/static/david/css/fonts/Equity-Text-B-Italic-webfont.woff') format('woff');
- font-weight: 300;
- font-style: italic;
- font-display: swap;
- }
- @font-face {
- font-family: 'EquityTextB';
- src: url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff2') format('woff2'),
- url('/static/david/css/fonts/Equity-Text-B-Bold-webfont.woff') format('woff');
- font-weight: 700;
- font-style: normal;
- font-display: swap;
- }
-
- @font-face {
- font-family: 'ConcourseT3';
- src: url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff2') format('woff2'),
- url('/static/david/css/fonts/concourse_t3_regular-webfont-20190806.woff') format('woff');
- font-weight: 300;
- font-style: normal;
- font-display: swap;
- }
-
-
- /* http://practice.typekit.com/lesson/caring-about-opentype-features/ */
- body {
- /* http://www.cssfontstack.com/ Palatino 99% Win 86% Mac */
- font-family: "EquityTextB", Palatino, serif;
- background-color: #f0f0ea;
- color: #07486c;
- font-kerning: normal;
- -moz-osx-font-smoothing: grayscale;
- -webkit-font-smoothing: subpixel-antialiased;
- text-rendering: optimizeLegibility;
- font-variant-ligatures: common-ligatures contextual;
- font-feature-settings: "kern", "liga", "clig", "calt";
- }
- pre, code, kbd, samp, var, tt {
- font-family: 'TriplicateT4c', monospace;
- }
- em {
- font-style: italic;
- color: #323a45;
- }
- strong {
- font-weight: bold;
- color: black;
- }
- nav {
- background-color: #323a45;
- color: #f0f0ea;
- display: flex;
- justify-content: space-around;
- padding: 1rem .5rem;
- }
- nav:last-child {
- border-bottom: 1vh solid #2d7474;
- }
- nav a {
- color: #f0f0ea;
- }
- nav abbr {
- border-bottom: 1px dotted white;
- }
-
- h1 {
- border-top: 1vh solid #2d7474;
- border-bottom: .2vh dotted #2d7474;
- background-color: #e3e1e1;
- color: #323a45;
- text-align: center;
- padding: 5rem 0 4rem 0;
- width: 100%;
- font-family: 'ConcourseT3';
- display: flex;
- flex-direction: column;
- }
- h1.single {
- padding-bottom: 10rem;
- }
- h1 span {
- position: absolute;
- top: 1vh;
- left: 20%;
- line-height: 0;
- }
- h1 span a {
- line-height: 1.7;
- padding: 1rem 1.2rem .6rem 1.2rem;
- border-radius: 0 0 6% 6%;
- background: #2d7474;
- font-size: 1.3rem;
- color: white;
- text-decoration: none;
- }
- h2 {
- margin: 4rem 0 1rem;
- border-top: .2vh solid #2d7474;
- padding-top: 1vh;
- }
- h3 {
- text-align: center;
- margin: 3rem 0 .75em;
- }
- hr {
- height: .4rem;
- width: .4rem;
- border-radius: .4rem;
- background: #07486c;
- margin: 2.5rem auto;
- }
- time {
- display: bloc;
- margin-left: 0 !important;
- }
- ul, ol {
- margin: 2rem;
- }
- ul {
- list-style-type: square;
- }
- a {
- text-decoration-skip-ink: auto;
- text-decoration-thickness: 0.05em;
- text-underline-offset: 0.09em;
- }
- article {
- max-width: 50rem;
- display: flex;
- flex-direction: column;
- margin: 2rem auto;
- }
- article.single {
- border-top: .2vh dotted #2d7474;
- margin: -6rem auto 1rem auto;
- background: #f0f0ea;
- padding: 2rem;
- }
- article p:last-child {
- margin-bottom: 1rem;
- }
- p {
- padding: 0 .5rem;
- margin-left: 3rem;
- }
- p + p,
- figure + p {
- margin-top: 2rem;
- }
-
- blockquote {
- background-color: #e3e1e1;
- border-left: .5vw solid #2d7474;
- display: flex;
- flex-direction: column;
- align-items: center;
- padding: 1rem;
- margin: 1.5rem;
- }
- blockquote cite {
- font-style: italic;
- }
- blockquote p {
- margin-left: 0;
- }
-
- figure {
- border-top: .2vh solid #2d7474;
- background-color: #e3e1e1;
- text-align: center;
- padding: 1.5rem 0;
- margin: 1rem 0 0;
- font-size: 1.5rem;
- width: 100%;
- }
- figure img {
- max-width: 250px;
- max-height: 250px;
- border: .5vw solid #323a45;
- padding: 1px;
- }
- figcaption {
- padding: 1rem;
- line-height: 1.4;
- }
- aside {
- display: flex;
- flex-direction: column;
- background-color: #e3e1e1;
- padding: 1rem 0;
- border-bottom: .2vh solid #07486c;
- }
- aside p {
- max-width: 50rem;
- margin: 0 auto;
- }
-
- /* https://fvsch.com/code/css-locks/ */
- p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
- font-size: 1rem;
- line-height: calc( 1.5em + 0.2 * 1rem );
- }
- h1 {
- font-size: 1.9rem;
- line-height: calc( 1.2em + 0.2 * 1rem );
- }
- h2 {
- font-size: 1.6rem;
- line-height: calc( 1.3em + 0.2 * 1rem );
- }
- h3 {
- font-size: 1.35rem;
- line-height: calc( 1.4em + 0.2 * 1rem );
- }
- @media (min-width: 20em) {
- /* The (100vw - 20rem) / (50 - 20) part
- resolves to 0-1rem, depending on the
- viewport width (between 20em and 50em). */
- p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
- font-size: calc( 1rem + .6 * (100vw - 20rem) / (50 - 20) );
- line-height: calc( 1.5em + 0.2 * (100vw - 50rem) / (20 - 50) );
- margin-left: 0;
- }
- h1 {
- font-size: calc( 1.9rem + 1.5 * (100vw - 20rem) / (50 - 20) );
- line-height: calc( 1.2em + 0.2 * (100vw - 50rem) / (20 - 50) );
- }
- h2 {
- font-size: calc( 1.5rem + 1.5 * (100vw - 20rem) / (50 - 20) );
- line-height: calc( 1.3em + 0.2 * (100vw - 50rem) / (20 - 50) );
- }
- h3 {
- font-size: calc( 1.35rem + 1.5 * (100vw - 20rem) / (50 - 20) );
- line-height: calc( 1.4em + 0.2 * (100vw - 50rem) / (20 - 50) );
- }
- }
- @media (min-width: 50em) {
- /* The right part of the addition *must* be a
- rem value. In this example we *could* change
- the whole declaration to font-size:2.5rem,
- but if our baseline value was not expressed
- in rem we would have to use calc. */
- p, li, pre, code, kbd, samp, var, tt, time, details, figcaption {
- font-size: calc( 1rem + .6 * 1rem );
- line-height: 1.5em;
- }
- p, li, pre, details {
- margin-left: 3rem;
- }
- h1 {
- font-size: calc( 1.9rem + 1.5 * 1rem );
- line-height: 1.2em;
- }
- h2 {
- font-size: calc( 1.5rem + 1.5 * 1rem );
- line-height: 1.3em;
- }
- h3 {
- font-size: calc( 1.35rem + 1.5 * 1rem );
- line-height: 1.4em;
- }
- figure img {
- max-width: 500px;
- max-height: 500px;
- }
- }
-
- figure.unsquared {
- margin-bottom: 1.5rem;
- }
- figure.unsquared img {
- height: inherit;
- }
-
-
-
- @media print {
- body { font-size: 100%; }
- a:after { content: " (" attr(href) ")"; }
- a, a:link, a:visited, a:after {
- text-decoration: underline;
- text-shadow: none !important;
- background-image: none !important;
- background: white;
- color: black;
- }
- abbr[title] { border-bottom: 0; }
- abbr[title]:after { content: " (" attr(title) ")"; }
- img { page-break-inside: avoid; }
- @page { margin: 2cm .5cm; }
- h1, h2, h3 { page-break-after: avoid; }
- p3 { orphans: 3; widows: 3; }
- img {
- max-width: 250px !important;
- max-height: 250px !important;
- }
- nav, aside { display: none; }
- }
-
- ul.with_columns {
- column-count: 1;
- }
- @media (min-width: 20em) {
- ul.with_columns {
- column-count: 2;
- }
- }
- @media (min-width: 50em) {
- ul.with_columns {
- column-count: 3;
- }
- }
- ul.with_two_columns {
- column-count: 1;
- }
- @media (min-width: 20em) {
- ul.with_two_columns {
- column-count: 1;
- }
- }
- @media (min-width: 50em) {
- ul.with_two_columns {
- column-count: 2;
- }
- }
-
- .gallery {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-around;
- }
- .gallery figure img {
- margin-left: 1rem;
- margin-right: 1rem;
- }
- .gallery figure figcaption {
- font-family: 'ConcourseT3'
- }
-
- footer {
- font-family: 'ConcourseT3';
- display: flex;
- flex-direction: column;
- border-top: 3px solid white;
- padding: 4rem 0;
- background-color: #07486c;
- color: white;
- }
- footer > * {
- max-width: 50rem;
- margin: 0 auto;
- }
- footer a {
- color: #f1c40f;
- }
- footer .avatar {
- width: 200px;
- height: 200px;
- border-radius: 50%;
- float: left;
- -webkit-shape-outside: circle();
- shape-outside: circle();
- margin-right: 2rem;
- padding: 2px 5px 5px 2px;
- background: white;
- border-left: 1px solid #f1c40f;
- border-top: 1px solid #f1c40f;
- border-right: 5px solid #f1c40f;
- border-bottom: 5px solid #f1c40f;
- }
- </style>
-
- <h1 class="single">
- <span><a id="jumper" href="#jumpto" title="Un peu perdu ?">?</a></span>
- Mots de passe physiques
- <time>Publié le 23 mars 2016</time>
- </h1>
- <article class="single">
- <blockquote>
- <p>Il restera de toutes façons le point central : les clefs, les mots de passe, les identifiants. Je ne peux pas laisser un document avec tout ça, ni sous forme de papier ni sous forme informatique, ni chez moi ni chez d’autres.</p>
- <p><cite><em><a href="https://n.survol.fr/n/que-se-passe-t-il-le-jour-ou-je-ne-suis-plus-la">Que se passe-t-il le jour où je ne suis plus là ?</a></em> (<a href="/david/cache/4ec899ed10701458eefc879c105af4e8/">cache</a>)</cite></p>
- </blockquote>
- <p><a href="http://blog.mageekbox.net/">Frédéric</a> propose <a href="https://twitter.com/mageekguy/status/711961785918754816">sur Twitter</a> d’utilise une <a href="http://maisouvaleweb.fr/la-blockchain-signera-t-elle-la-fin-du-capitalisme/">Blockchain</a> (<a href="/david/cache/4c0564a79722d5ba5c75ee6da0fec626/">cache</a>) pour cela. <em>Il faudrait que j’écrive là-dessus mais j’ai trop d’autres réflexions en attente.</em> Ce à quoi Éric répond avec <a href="https://docs.google.com/document/d/1hn_WQAcR3kjW_HRWGjbaYCMxDu60h3lMQyyRE_urTNk/edit?pref=2&pli=1">des besoins plus détaillés</a> que je reproduis ici :</p>
- <blockquote>
- <ol>
- <li>
- <p>Les proches qui peuvent débloquer mes données après ma disparition n’ont pas de copie en clair. Avoir confiance dans la sécurité de mon propre stockage est déjà assez difficile, le principe par défaut doit être le chiffrement : stocker un fichier texte avec des mots de passe en clair ne me parait pas viable.</p>
- </li>
- <li>
- <p>Aucun site centralisé ne contient ni n’accèdent à mes données d’une façon qui pourrait être déchiffrable aujourd’hui ou à l’avenir. Ça entraîne probablement l’idée de ne pas faire confiance à la cryptographie avancée, au cas où on découvre un jour des failles dans les algorithmes ou dans les logiciels. On parle de le garantir sur des décennies. Le seul chiffrement qui me semble correspondre à cette demande est à priori le <a href="https://en.wikipedia.org/wiki/One-time_pad">one time pad</a></p>
- </li>
- <li>
- <p>La procédure est simple à mettre en œuvre pour les proches. Je peux demander d’avoir un minimum de compréhension de l’informatique, pas d’être un ingénieur en informatique.</p>
- </li>
- <li>
- <p>La procédure et les formats sont suffisamment pérennes pour pour être utilisables et lisibles par l’informatique telle qu’elle sera dans des décennies – et ça exclu probablement tout format ou tout mécanisme avancé qui n’existait pas déjà il y a 20 ans.</p>
- </li>
- <li>
- <p>Un proche unique ne peut déclencher la procédure et accéder aux données seul, il faut qu’ils soient plusieurs (nombre à définir mais au moins 2)</p>
- </li>
- <li>
- <p>Quelque chose me demande une preuve de vie de façon récurrente et peut notifier les proches identifiés si je ne réponds pas au bout d’un certain temps, pour les informer du problème et leur rappeler la procédure possible</p>
- </li>
- <li>
- <p>Quelque chose va s’assurer régulièrement que les proches identifiés sont toujours joignables et ont toujours la capacité de déclencher la procédure – ils ont toujours les données, clefs ou mots de passe dont ils ont besoin, ils savent toujours s’en servir, etc. – et peut me notifier si ce n’est pas le cas</p>
- </li>
- <li>
- <p>Je peux mettre à jour les données – changer ou ajouter une information – sans que cette mise à jour ne demande d’action pénible par mes proches</p>
- </li>
- <li>
- <p>Toute la procédure est résiliente à la disparition d’un ou plusieurs des proches identifiés initialement (nombre à définir, au moins 1)</p>
- </li>
- <li>
- <p>Si la procédure utilise un service tiers, la disparition de ce service et des données qu’il stocke ne fait pas tomber la capacité d’accéder aux données (quitte à ce que ce soit plus complexe)</p>
- </li>
- <li>
- <p>Pouvoir déterminer arbitrairement X et Y dans “pour débloquer les données il faut l’accord de X personnes parmi les Y chargés de la transmission”</p>
- </li>
- </ol>
- </blockquote>
- <p><strong>C’est un sujet qui <a href="/david/blog/2013/testament-numerique/">m’a fait réfléchir aussi</a> et avec les contraintes énoncées je pense que la solution est technique ET physique.</strong> Il existe <a href="https://blog.imirhil.fr/2015/11/25/password-otp.html">de telles solutions pour geeks</a> (<a href="/david/cache/13ced99f6dcec926bc25b7f500b7d882/">cache</a>) mais c’est encore trop complexe pour un contexte familial. Et puis il y a des solutions comme la <a href="https://www.qwertycards.com/index">QwertyCard</a> qui me semblent répondre à la problématique (il est possible de <a href="http://passwordcards.raphael.li/">les générer soi-même</a> et <a href="https://github.com/raphiz/passwordcards">de manière locale </a>), elles combinent :</p>
- <ol>
- <li>Un préfixe unique et aléatoire propre à la carte produite</li>
- <li>Un mot de passe personnel</li>
- <li>Une table de conversion pour avoir une partie propre au service</li>
- </ol>
- <p>Il faut donc être en possession de la carte et du mot de passe personnel pour pouvoir recomposer un mot de passe complet. En donnant le mot de passe personnel (2) à une personne et la partie du service que je convertie (3) au second de mes légataires je ne leurs permet pas de se connecter pour autant avant d’être en possession de la carte et d’être réunis. Ce n’est pas sans failles mais ça réduit drastiquement la complexité du processus et ça répond à presque tous les besoins d’Éric. Il est possible de tester le système régulièrement en changeant ensuite les accès par la modification de (2) et (3).</p>
- <p><strong>Il reste la problématique de la documentation à jour que je n’ai toujours pas résolue.</strong> Pour la pérennité des données en elles-mêmes, je ne vois pas d’autre solution que d’utiliser des standards ouverts et de les mettre à jour en suivant l’avancée technique dans le domaine. C’est fastidieux mais c’est de toute façon nécessaire, même de son vivant…</p>
- <p><em>Un lecteur me signale le <a href="https://fr.wikipedia.org/wiki/Partage_de_cl%C3%A9_secr%C3%A8te_de_Shamir">partage de clé secrète de Shamir</a> qu’il a découvert dans <a href="http://genma.free.fr/?Mots-de-passe-et-perte-de-memoire">cet article sur la potentielle perte de mémoire</a> (<a href="/david/cache/f385cec772687806e75280ba61684ff5/">cache</a>).</em></p>
- </article>
-
-
- <figure class="image" property="schema:image">
- <img src="/static/david/blog/2016/mots-passe-physiques.jpg" alt="" />
- </figure>
-
-
-
- <nav id="jumpto">
- <p>
- <a rel=prev href="/david/blog/2016/histoires-donnees/">← Histoires de données</a> | <a href="/david/blog/" title="Retour à la liste des expériences">↑</a> | <a rel=next href="/david/blog/2016/motessori-steiner-waldorf/">Montessori et Steiner-Waldorf →</a>
- </p>
- </nav>
-
- <footer>
- <div>
- <img src="/static/david/david-larlet-avatar.jpg" loading="lazy" class="avatar" width="200" height="200">
- <p>
- Bonjour/Hi!
- Je suis <a href="/david/" title="Profil public">David Larlet</a>, je vis actuellement à Montréal et j’alimente cet espace depuis 15 ans. <br>
- 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>).
- </p>
- <p>
- 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>.
- </p>
-
- <p>
- Les dernières publications hebdomadaires sont :
- </p>
- <ul class="with_columns">
-
- <li>
- <a href="/david/stream/2019/12/31/">Merci</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/12/27/">Intemporels</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/12/24/">Outils</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/12/17/">Origines</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/12/10/">Publier</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/12/03/">En forêt</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/11/26/">Ecocentric</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/11/19/">Se livrer</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/11/12/">Dépendances</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/11/05/">Positif</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/10/29/">Dettes</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/10/22/">Privilèges</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/10/15/">Discrétion</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/10/08/">Désespérance</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/10/01/">Présent</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/09/24/">Manifester</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/09/17/">Arpenter</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/09/10/">Nostalgie</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/09/03/">Déconstruire</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/08/27/">Documenter</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/08/20/">Frustration</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/08/13/">Holisme</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/08/06/">1%</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/07/30/">Exemplarité</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/07/23/">Timelines</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/07/16/">Écoute</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/07/02/">Anxiété</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/06/21/">À lier</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/06/14/">Pauvreté</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/06/07/">Amateur</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/05/31/">Pollution</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/05/24/">Apaisement</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/05/10/">Folie</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/05/03/">Sympathie</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/04/12/">Péremption</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/04/05/">Définitions</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/03/29/">Acceptation</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/03/22/">Dissonance</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/03/15/">Reconnaissance</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/03/08/">Lecture</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/03/01/">Journaux</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/02/22/">Écriture</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/02/15/">Kyriarchie</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/02/08/">Mots-serrures</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/02/01/">Sans voie</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/01/25/">Auto-diagnostic</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/01/18/">Agilité</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/01/11/">Métaphores</a>
- </li>
-
- <li>
- <a href="/david/stream/2019/01/04/">Balbutiements</a>
- </li>
-
- </ul>
-
- <p>
- Voici quelques articles choisis :
- <a href="/david/blog/2019/faire-equipe/" title="Accéder à l’article complet">Faire équipe</a>,
- <a href="/david/blog/2018/bivouac-automnal/" title="Accéder à l’article complet">Bivouac automnal</a>,
- <a href="/david/blog/2018/commodite-effondrement/" title="Accéder à l’article complet">Commodité et effondrement</a>,
- <a href="/david/blog/2017/donnees-communs/" title="Accéder à l’article complet">Des données aux communs</a>,
- <a href="/david/blog/2016/accompagner-enfant/" title="Accéder à l’article complet">Accompagner un enfant</a>,
- <a href="/david/blog/2016/senior-developer/" title="Accéder à l’article complet">Senior developer</a>,
- <a href="/david/blog/2016/illusion-sociale/" title="Accéder à l’article complet">L’illusion sociale</a>,
- <a href="/david/blog/2016/instantane-scopyleft/" title="Accéder à l’article complet">Instantané Scopyleft</a>,
- <a href="/david/blog/2016/enseigner-web/" title="Accéder à l’article complet">Enseigner le Web</a>,
- <a href="/david/blog/2016/simplicite-defaut/" title="Accéder à l’article complet">Simplicité par défaut</a>,
- <a href="/david/blog/2016/minimalisme-esthetique/" title="Accéder à l’article complet">Minimalisme et esthétique</a>,
- <a href="/david/blog/2014/un-web-omni-present/" title="Accéder à l’article complet">Un web omni-présent</a>,
- <a href="/david/blog/2014/manifeste-developpeur/" title="Accéder à l’article complet">Manifeste de développeur</a>,
- <a href="/david/blog/2013/confort-convivialite/" title="Accéder à l’article complet">Confort et convivialité</a>,
- <a href="/david/blog/2013/testament-numerique/" title="Accéder à l’article complet">Testament numérique</a>,
- et <a href="/david/blog/" title="Accéder aux archives">bien d’autres…</a>
- </p>
- <p>
- 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>.
- </p>
- <p>
- Je ne traque pas ta navigation mais mon
- <abbr title="Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33.184162340">hébergeur</abbr>
- conserve des logs d’accès.
- </p>
- </div>
- </footer>
- <script type="text/javascript">
- ;(_ => {
- const jumper = document.getElementById('jumper')
- jumper.addEventListener('click', e => {
- e.preventDefault()
- const anchor = e.target.getAttribute('href')
- const targetEl = document.getElementById(anchor.substring(1))
- targetEl.scrollIntoView({behavior: 'smooth'})
- })
- })()
- </script>
-
- <script>
- /* Service workers */
- if (navigator.serviceWorker) {
- window.addEventListener('load', function () {
- var selector = 'a[href^="/david/cache/"], a[rel=prev], a[rel=next]'
- function sendLinks (selector) {
- var links = [].slice.call(document.querySelectorAll(selector)).map(function (link) {
- return link.getAttribute('href')
- })
- links.push(location.pathname) // Put the current page in cache too.
- navigator.serviceWorker.controller.postMessage({ links: links })
- }
- navigator.serviceWorker.getRegistration()
- .then(function (registration) {
- if (!registration || !navigator.serviceWorker.controller) {
- return navigator.serviceWorker.register('/serviceworker.js')
- .then(navigator.serviceWorker.ready)
- .then(function () {
- console.log('[ServiceWorker] Ready to go!')
- })
- .catch(console.error.bind(console))
- } else {
- console.log('[ServiceWorker] Send links via registration')
- sendLinks(selector)
- }
- })
- navigator.serviceWorker.addEventListener('controllerchange', function () {
- console.log('[ServiceWorker] Send links via controller change')
- sendLinks(selector)
- })
- navigator.serviceWorker.addEventListener('message', function (event) {
- var link = document.querySelector('a[href="' + event.data.link + '"]')
- if (event.data.status && link) {
- link.style.backgroundColor = '#2d7474'
- link.style.color = '#f0f0ea'
-
- link.setAttribute('title', 'En cache pour consultation sans connexion')
-
- }
- })
- })
- } else {
- console.warn('[ServiceWorker] No cache for old browsers.')
- }
- </script>
|