Catégorie : Geek

  • Garder des liens

    La fin de Pocket me fait réflé­chir à ce que je fais des liens que je trouve.

    Aujourd’­hui j’en­voie vers Pocket, souvent sans tags. Parfois j’ai déjà lu le contenu, parfois non. Dans tous les cas je sais que je peux retrou­ver ce contenu là bas et c’est la valeur prin­ci­pale que j’en attends.

    Pile à lire. Je sais que c’est à l’ori­gine fait comme une pile de conte­nus à lire. Il m’ar­rive d’al­ler lire un contenu enre­gis­tré quelques minutes, quelques heures ou quelques jours avant. C’est toujours en allant cher­cher spéci­fique­ment un contenu que j’ai en tête, jamais en me servant de la pile de conte­nus à lire.

    Marques pages. Je m’en sers aussi comme marques pages. Je vais de temps en temps cher­cher un lien que j’ai sauve­gardé « pour plus tard » sur un sujet ou un autre, pour explo­rer ou y faire réfé­rence. Géné­ra­le­ment ce sont des conte­nus rela­ti­ve­ment récents, quelques jours à quelques mois tout au plus.

    Histo­rique. Je m’en sers enfin comme histo­rique. Je fouille épiso­dique­ment dans ces liens pour retrou­ver un contenu que je sais « avoir vu passer » il y a quelques jours, quelques mois, voire de nombreuses années mais que je ne retrouve pas autre­ment. C’est rare mais c’est d’une grande valeur.


    Walla­bag est étudié comme Pocket, comme une pile à lire. Il peut être détourné comme marque-pages. C’est proba­ble­ment l’ou­til qui rempla­ce­rait Pocket sans trop y penser mais ça n’en fait pas un outil idéal pour mon usage pour autant. J’au­rais au moins aimé un auto-remplis­sage des tags et une meilleure recherche dans l’his­to­rique.

    Rain­drop semble assez bien gérer les marques pages mais l’ab­sence de gestion lu/non-lu ou de notion d’ar­chive me semble vrai­ment un bloqueur pour l’usage comme pile à lire.

    Archi­veBox c’est ma (re)décou­verte du jour. Ça ressemble à un web.archive.org person­nel, et ça complè­te­rait merveilleu­se­ment la gestion d’his­to­rique si le moteur de recherche plein texte est assez bon.


    Il y a plein d’autres outils — n’hé­si­tez pas à en propo­ser.

    Je me vois proba­ble­ment prendre un abon­ne­ment en ligne mais la capa­cité de peut-être d’auto-héber­ger un jour me semble un pré-requis. Je n’en­vi­sa­ge­rai les outils unique­ment SaaS que si ça couvre très bien la tota­lité de mes usages et que je ne trouve rien d’autre d’adé­quat.

    Je n’ai rien contre les fonc­tions sociales de partage mais ça n’est vrai­ment pas un critère. Je n’uti­lise pas les cita­tions/anno­ta­tions à l’in­té­rieur du marque-page aujourd’­hui mais ça me tente donc je le vois comme un plus poten­tiel.

    Pour l’ins­tant tous ceux que je vois gèrent bien un usage, éven­tuel­le­ment deux, jamais les trois.

    OutilUsage, fonc­tionDétail
    Walla­bagPile à lirePas de sugges­tions de tags. Pas de recherche plein texte dans l’his­to­rique. Pas de possi­bi­lité de croi­ser des filtres par tag et d’autres filtres.
    Kara­keepPile à lireSugges­tion de tags y compris par des images. Utili­sa­tion de LLM en interne. Lien MCP en externe.
    UnmarkPile à lireSemble assez basique.
    Link­war­denMarques-pages + Histo­riqueSugges­tion de tags, fonc­tions sociales, archive du contenu. Recherche avan­cée. Pas de gestion lu/non-lu.
    Rain­dropMarques-pagesPas de gestion lu/non-lu. Pas de recherche plein texte dans l’his­to­rique.
    ShaarliMarques-pagesPlutôt orienté vers le partage, proche du blog. Pas de gestion lu/non-lu.
    Fire­fox-SyncMarques-pagesInté­gré au navi­ga­teur, pas fait pour en sortir faci­le­ment. Pas de gestion lu/non-lu.
    Archi­veBoxHisto­riqueCentré unique­ment sur l’ar­chive locale des conte­nus. Inclut capture d’écran et enre­gis­tre­ment sur web.archive.org.

    Est-ce que vous avez des solu­tions en tête ?


    Link­war­den a l’air le plus proche de ce que je cherche mais je trouve dommage l’ab­sence de notion de lu/non-lu ou d’ar­chi­vage qu’ont Pocket et Walla­bag. Ça doit pouvoir s’ému­ler via une collec­tion mais je me méfie de la péni­bi­lité que peuvent repré­sen­ter des contour­ne­ments d’usage à la longue.

    Le point qui me gêne vrai­ment, c’est l’ajout de lien. Au moins dans Fire­fox il faut deux clics, quatre si je veux ajou­ter des tags. Pocket avait un système effi­cace qui enre­gis­trait d’of­fice le lien et propo­sait une noti­fi­ca­tion tempo­raire qui permet­tait d’ajou­ter des tags. J’avoue que j’ap­pré­ciais.

    Point person­nel : La version SaaS de Link­war­den est limi­tée à 30 000 items, soit pile la taille de mon archive Pocket. Je peux faire avec en reti­rant au moins les liens morts, mais ça me freine un peu quand même.

  • Cozy, Woobs et le reste

    Je tente d’au­to­ma­ti­ser pas à pas le rapa­trie­ment de tout ce que j’ai mais c’est long, pénible, et ce n’est que les données majeures. Il manque tous les petits trucs, genre le justi­fi­ca­tif de domi­cile et les factures EDF.

    J’ai toujours dans un coin de ma tête le fantasme d’un système de reprise de contrôle des données en ligne.

    J’ai­me­rais une app qui se connecte partout avec mes mots de passe et récu­père toutes les qui n’ont pas encore été télé­char­gées en local ou qui ont été mises à jour depuis le dernier passage.

    Il me semble indis­pen­sable que cette app soit open­source et que le déve­lop­pe­ment, l’ins­tal­la­tion ou la mise à jour de nouveaux connec­teurs soit des plus simples.

    Parce que je n’ima­gine pas de lais­ser trai­ner tous mes mots de passe en clair en plusieurs exem­plaires, il me semble indis­pen­sable que l’app se connecte elle-même à mon gestion­naire de mots de passe (et donc que je dois déver­rouiller manuel­le­ment le coffre de mots de passe à chaque exécu­tion de l’app).


    Ce n’est pas simple. Rien que pour les factures d’éner­gie, ça demande des connec­teurs vers une dizaine de four­nis­seurs diffé­rents par pays.

    Parfois il suffit de mimer le navi­ga­teur ou l’app mobile. Parfois le système d’au­then­ti­fi­ca­tion est trop complexe pour être repro­duit faci­le­ment et il faut se résoudre à réel­le­ment pilo­ter un navi­ga­teur Web caché.

    Les services en ligne n’aiment pas trop les robots et il faut compo­ser avec des capt­cha. Certains sont simples mais d’autres demandent de vraies inter­ac­tions humaines.

    Même quand on réus­sit à faire tout ça, il faut le main­te­nir à jour à chaque chan­ge­ment du site web ou de l’api, et gérer de multiples cas parti­cu­liers qu’on ne peut débo­guer qu’a­vec les iden­ti­fiants des utili­sa­teurs.

    Bref, main­te­nir même la centaine de connec­teurs des services essen­tiels demande une vraie force de travail.


    Je ne suis pas le seul à imagi­ner tout ça.

    Les deux projets les plus proches que j’ai en tête sont Woob (web outside of brow­sers) et Cozy Cloud (dont l’ave­nir me semble incer­tain depuis la récu­pé­ra­tion par Lina­gora pour l’in­té­gra­tion dans Twake).

    Cozy j’y ai parti­cipé en mon temps, après la bascule vers le B2B. Cette orien­ta­tion B2B rendait diffi­cile d’in­ves­tir l’ef­fort néces­saire sur les connec­teurs, moins perti­nents pour cette cible. Je vois qu’ils ont tout de même créé un moteur d’exé­cu­tion côté client pour permettre de passer les authen­ti­fi­ca­tions complexes et les capt­chas.

    Ils l’ont fait sur mobile. Ça a du sens pour du SaaS avec un stockage serveur qu’on cherche à moné­ti­ser. C’est plus liti­gieux pour un système person­nel.

    Le projet à été repris par Lina­gora, qui risque de surtout d’ utili­ser le drive et ce qui peut s’in­té­grer dans une suite office en ligne. Je ne sais pas bien ce que vont deve­nir les connec­teurs, qui étaient déjà trop peu déve­lop­pés. J’ai peu d’es­poir.

    En face il y a Woob (web outside of brow­sers), vieux projet à base de python. L’ef­fort est ancien, commu­nau­taire, et il y a une biblio­thèque de connec­teurs assez four­nie. .

    Malheu­reu­se­ment pour l’ins­tant c’est moyen pour les geeks d’ac­cé­der à leurs données depuis une ligne de commande inter­ac­tive plus qu’une appli­ca­tion de récu­pé­ra­tion des données.

    On peut lister les docu­ments mais rien n’est télé­chargé ou sauve­gardé par défaut. Il faut lister les factures d’EDF via une ligne de commande inter­ac­tive et deman­der à les télé­char­ger une à une. Il n’y a pas les évidences comme les attes­ta­tions de domi­ci­lia­tion.

    Même chose, il y a ce qu’il faut pour récu­pé­rer les mots de passe d’un gestion­naire de mots de passe, mais rien n’est fourni par défaut.

    Je trou­vais Cozy plus adapté à mon objec­tif. Il faudrait croi­ser les deux. C’est du domaine du possible mais je ne sais pas s’il y aura assez de personnes ressen­tant le besoin pour ça.

  • Sauve­gar­der Inorea­der

    Inorea­der a déjà tout préparé.

    Le service sauve­garde heure par heure l’OPML de toutes les sous­crip­tions. Il est capable d’en­voyer cette sauve­garde tout seul via Google Drive ou Drop­box. Ça me suffit pour l’ins­tant puisque je sauve­garde déjà le contenu de Google Drive.

    C’est surtout à cette infor­ma­tion (la liste de mes flux) que je tiens. Je n’uti­lise pas les tags et les favo­ris, que je préfère centra­li­ser sur Pocket. Le cas échéant, Inorea­der propose un lien JSON ou RSS pour suivre chaque dossier parti­cu­lier.

  • Sauve­gar­der les favo­ris et l’his­to­rique Fire­fox

    Je conti­­nue mes sauve­­gardes. Je n’uti­lise pas mon navi­ga­teur direc­te­ment sur le serveur de sauve­garde donc je ne peux pas aller cher­cher manuel­le­ment dans les fichiers de profil Fire­fox.

    Je suis toute­fois connecté à mon profil Fire­fox en ligne et y synchro­nise mes données. J’ai trouvé un client en go assez simple à utili­ser et instal­lable via Home­brew.

    ffsclient login <login> <password> --device-name=my-backup --sessionfile=ffs-session.json

    puis

    ffsclient bookmarks list --format=json --sessionfile=ffs-session.json --output=bookmarks.json

    On peut ainsi récu­pé­rer toutes les collec­tions synchro­ni­sées : addons, adresses, favo­ris, formu­laires, histo­rique, mots de passe, préfé­rences, tabs ouverts, etc. Je vais me conten­ter des favo­ris pour l’ins­tant et consi­dé­rer que le reste est vola­tile.

  • Emails, chif­fre­ment et vie privée

    Image avec une personne (à queue de cheval), qui envoie un email à travers le réseau jusqu'à son serveur, qui envoie à travers le réseau jusqu'à mon serveur, qui envoie à travers le réseau jusqu'à une autre personne (à chapeau)
    Alice veut envoyer un email à Bob.

    Que peut-on sécu­ri­ser là dedans ? On va essayer d’y voir clair.

    Le schéma stan­dard n’est pas très glorieux

    Les trans­fert entre Alice, Bob et leur serveur sont quasi­ment toujours sécu­ri­sés aujourd’­hui. À l’en­voi c’est SMTP pour un client email, et HTTP pour un webmail. À la récep­tion c’est IMAP ou POP pour un client email, et HTTP pour un webmail.

    La commu­ni­ca­tion entre les serveurs est géné­ra­le­ment sécu­ri­sée mais les proto­coles ne garan­tissent pas qu’elle le soit toujours.

    Les emails tran­sitent par contre en clair sur les deux serveurs. Si Alice et Bob laissent leurs messages sur le serveur, l’his­to­rique y est aussi en clair.

    Envoi : Jaune
Serveur d'envoi et historique : Rouge
Liaison entre les deux serveurs : Jaune
Serveur de réception et historique : Rouge
Réception : Vert

    La vision histo­rique, GPG et S/MIME

    La solu­tion histo­rique qui ne demande aucun chan­ge­ment majeur sur toute la chaîne c’est d’uti­li­ser GPG ou S/MIME.

    Alice chiffre l’email avant de l’en­voyer et Bob le déchiffre au moment où il le reçoit. Le réseau et les serveurs ne voient que le contenu chif­fré, illi­sible.

    Le compro­mis c’est celui de la lettre postale. Les tiers n’ont pas accès au contenu mais savent encore qui a écrit à qui, quand et depuis où. Même le sujet de l’email est en clair (et ça en dit parfois beau­coup).

    Si vous écri­vez à un avocat, à un jour­na­liste, à un hôpi­tal, à une person­na­lité ou à qui que ce soit d’in­té­rêt, on conti­nuera à le savoir. Ça peut révé­ler presque autant de chose que le contenu lui-même.

    Chaîne d'envoi à réception : Bleu-vert

    Cette vision est aujourd’­hui consi­dé­rée comme peu perti­nente, même par ses défen­seurs de l’époque. Elle est complexe à mettre en œuvre, repose sur des échanges de clés qui ne sont pas si évidents, et n’offre pas assez de confi­den­tia­lité. Ça reste toute­fois « l’état de l’art » sur l’échange d’email.

    Il y a un effort avec Auto­crypt pour auto­ma­ti­ser PGP de manière oppor­tu­niste mais ça a son lot de complexité et de compro­mis de sécu­rité.

    Agir de son côté

    La solu­tion histo­rique repose sur le chif­fre­ment par l’ex­pé­di­teur. Si l’email n’est pas chif­fré à la base, on se retrouve dans le système stan­dard. En pratique peu le font, soit parce qu’ils ne savent pas, soit parce que c’est compliqué, soit parce que ce n’est pas proposé par leurs outils.

    Dans toute la suite on va donc se concen­trer un seul côté, faute de pouvoir faire chan­ger nos inter­lo­cu­teurs.

    Réception : Rouge
Archives : Rouge
Traitement : Rouge
Communication : Vert

    Tiers de confiance

    Les emails en entrée seront toujours en clair. La seule chose qu’on peut faire c’est cher­cher un pres­ta­taire de confiance et s’as­su­rer que personne d’autre que lui n’a accès au serveur.

    Le pres­ta­taire de confiance c’est à vous de le choi­sir. Ça peut être une ques­tion d’in­ter­dire le profi­lage, l’ex­ploi­ta­tion statis­tique des données ou la publi­cité ciblée. Ça peut ausi être une ques­tion d’em­pê­cher les fuites ou l’in­tru­sion d’États.

    Sur le premier point les petits pres­ta­taires sont souvent exem­plaires. Sur le second point il est plus facile d’avoir confiance dans un petit acteur qu’on connait bien, mais sa sécu­rité et sa résis­tance aux pres­sions seront peut-être plus faibles.

    Dans tous les cas, cet acteur sera soumis aux lois et aux auto­ri­tés de son pays ainsi qu’à celui du pays qui héberge ses serveurs, pour ce qu’il y a de bien comme pour ce qu’il y a de mauvais.

    Réception : Jaune
Archives : Rouge
Traitement : Rouge
Communication : Vert

    Le choix pour nous, euro­péens, c’est souvent de savoir si on accepte que notre serveur soit ou pas soumis aux lois de surveillance des USA. La soumis­sions aux USA inter­vient dès que l’en­tité qui nous héberge a une présence légale ou maté­rielle dans ce pays, ce qui malheu­reu­se­ment est le plus souvent le cas pour les acteurs inter­na­tio­naux.

    Réception : Orange
Archives : Rouge
Traitement : Rouge
Communication : Vert

    Chif­fre­ment du stockage

    Certains services vous diront que les emails sont stockés chif­frés. C’est un chif­fre­ment unique­ment au stockage.

    Le serveur conti­nue à avoir les clés, donc la capa­cité de lire les emails. C’est mieux que rien, mais ça ne couvre qu’une petite partie du problème.

    Réception : Jaune
Archives : Orange
Traitement : Rouge
Communication : Vert

    Chif­fre­ment à la volée

    Tant que les emails restent lisibles sur le serveur, ça peut fuiter.

    Pour sécu­ri­ser les archives, Mail­den — proba­ble­ment via Dove­cot — chiffre immé­dia­te­ment l’email dès qu’il est reçu, à partir de la clé publique du desti­na­taire. L’his­to­rique est sécu­risé.

    Lors que l’uti­li­sa­teur se connecte avec son client email habi­tuel, le mot de passe reçu sert aussi à accé­der à la clé de déchif­fre­ment le temps de retour­ner les emails. Clé privée, mot de passe et conte­nus en clair sont effa­cés une fois la connexion termi­née.

    L’his­to­rique est protégé mais le serveur a quand même briè­ve­ment accès à tous les emails à chaque fois qu’on se connecte.

    Réception : Jaune
Archives : Vert
Traitement : Orange
Communication : Vert

    Déchif­fre­ment côté client

    On peut faire la même chose mais avec le déchif­fre­ment côté client, comme dans le scéna­rio GPG décrit tout au début.

    Les emails sont chif­frés dès qu’ils sont reçus, et trans­mis chif­frés au client. C’est le client qui s’oc­cu­pera de les déchif­frer.

    Atten­tion, les méta­don­nées sont toujours en clair dans les archives. Ce qui est chif­fré est plus en sécu­rité qu’a­vec Mail­den, mais il y a moins de choses chif­frées (les méta­don­nées en clair peuvent révé­ler beau­coup).

    Réception : Jaune
Archives : Bleu
Traitement : Bleu
Communication : Vert

    Proton Mail fait ça, en utili­sant GPG en interne et des clients emails spéci­fique pour inter­agir avec les serveurs. De ce que je comprends, toute­fois, le service pour­rait être soumis aux lois US. Si c’est confirmé, ça les rend pour moi beau­coup moins « de confiance ».

    Réception : Orange
Archives : Bleu
Traitement : Bleu
Communication : Vert

    Chif­fre­ment de l’en­ve­loppe

    Tuta va plus loin. Ils se sont distan­ciés de GPG et chiffrent tout l’email, enve­loppe incluse.

    En échange la recherche dans les emails se fait forcé­ment côté client (le serveur n’a plus accès aux méta­don­nées néces­saires), ce qui peut être handi­ca­pant pour fouiller dans de grandes archives.

    Il n’y a pas non plus à ma connais­sance de solu­tion pour gérer une sauve­garde auto­ma­tique régu­lière de l’ar­chive email.

    Réception : Jaune
Archives : Vert
Traitement : Vert
Communication : Vert

    Ok, je dois utili­ser Tuta alors ?

    C’est très loin d’être évident.

    Tuta impose d’uti­li­ser ses propres logi­ciels pour accé­der aux emails. Impos­sible d’uti­li­ser les outils habi­tuels via POP ou IMAP. Il y a aussi des restric­tions d’usage sur la recherche dans les archives. Le tout se fait aussi avec un abon­ne­ment non négli­geable.

    Si vous êtes sensibles aux ques­tions de vie privée, par convic­tion plus que par besoin, allez-y. Jetez toute­fois un œil aux compro­mis comme celui de Mail­den, qui permet d’uti­li­ser les proto­coles et outils stan­dards.

    La réalité c’est que pour à peu près tout le monde, tout ça apporte des contraintes à l’usage ou au prix pour un gain très virtuel. Aucun humain ne va lire vos emails, et il y a peu de chances que le contenu ne fuite en public, simple­ment parce que ça n’in­té­resse personne.

    Tout au plus, vue la tour­nure que prennent les États-Unis, si vous appar­te­nez à une mino­rité, ça ne coûte pas grand chose de rapa­trier vos données en terri­toire euro­péen par sécu­rité plutôt que les lais­ser chez Google, Apple ou Micro­soft. Si l’Eu­rope prend le même chemin dans le futur, il sera temps de passer à Proton ou Tuta à ce moment là.

    Si vous êtes quelqu’un en vue, Proton ou Tuta peuvent avoir du sens, mais presque plus parce que ces héber­geurs ont la sécu­rité en tête que parce que les emails y sont chif­frés. Gmail ferait tout autant l’af­faire pour les mêmes raisons.

    Si vous êtes réel­le­ment en danger en cas de fuite de vos emails, Tuta est peut-être ce qui ressemble le plus à une solu­tion mais le mieux est de ne simple­ment pas utili­ser l’email. Ce sera toujours impar­fait parce que ce n’est pas prévu pour être confi­den­tiel à la base. Il y a aujourd’­hui d’autres solu­tions plus perti­nentes.


    Simple et effi­cace

    Dans tout ça il y a quand même une solu­tion qui n’a pas été abor­dée et qui mérite d’être souli­gnée : Récu­pé­rer ses emails très régu­liè­re­ment et ne pas lais­ser ses archives en ligne.

    Parfois le plus simple est encore le plus effi­cace. Tant qu’il n’y a pas besoin d’ac­cé­der aux archives en ligne ou depuis le smart­phone, ça fait très bien l’af­faire.

    Réception : Jaune
Communication : Vert
Archives locales : Vert
  • Une messa­ge­rie pour les gouver­ner toutes

    Je commence à avoir trop de messa­ge­ries.

    Je ne sais pas qui a dit quoi où, et je risque de lais­ser un message sans réponse dans les oubliettes s’il est sur une app que j’uti­lise peu.

    Beeper semble résoudre mon problème depuis quelques jours. C’est un bête aggré­ga­teur pour SMS, RCS, What­sapp, Signal, Tele­gram, Messen­ger, Linke­din, Discord et quelques autres.

    Ce n’est pas parfait, ça ne fait pas les appels vidéo et il on ne peut enre­gis­trer qu’un seul compte par réseau, mais ça fait le job pour moi.

    Bonus, la passe­relle permet l’uti­li­sa­tion via une app de bureau.

    Note : L’uti­li­sa­tion d’une passe­relle implique que les serveurs de la passe­relle peuvent lire vos messages. Ce n’est pas un scéna­rio idéal, juste un compro­mis devant la multi­pli­ca­tion des appli­ca­tions.

  • Réglage fin du volume sur Macos

    Before you press the volume or bright­ness controls, hold down the Option and Shift keys toge­ther on your keyboard. Now go ahead and make your adjust­ments, and you should see the onscreen indi­ca­tor move forwards and back­wards in smal­ler incre­ments (four over each segment).

    Macru­mors

  • Sauve­gar­der Pocket

    Je suis toujours dans mes sauve­gardes. Je veux avoir une copie de tout dans mes sauve­garde, données des services en ligne incluses.

    Je pensais faire ça faci­le­ment avec Pocket. Ils ont une API, assez simple.

    En pratique je me retrouve à faire essen­tiel­le­ment de l’in­gé­nie­rie inverse. La docu­men­ta­tion indique des choses qui n’existent pas ou ne fonc­tionnent pas, et ne donne aucune infor­ma­tion sur des éléments essen­tiels qu’on reçoit (genre la gestion des erreurs).

    Authen­ti­fi­ca­tion

    Contrai­re­ment aux méca­nismes OAuth habi­tuels, leur autho­rize ne renvoie pas de code tempo­raire à échan­ger. Pour récu­pé­rer l’access_token, il faut le deman­der avec le request_token obtenu lors de l’échange serveur à serveur initial.

    Ce request_token semble ne pas avoir de durée de vie. Il n’a en tout cas pas de refresh_token asso­cié.

    Méca­nisme de régu­la­tion

    L’API indique des limi­ta­tions à 320 appels par heure. C’est d’au­tant plus impor­tant que pour télé­char­ger mes plus de 29 0001 items par pages de 30 maxi­mum, je vais forcé­ment dépas­ser le nombre de requêtes que je peux faire en une heure.

    Il y a un méca­nisme auto­ma­tique prévu pour la régu­la­tion mais le serveur n’en­voie pas les entêtes prévues pour ça. Je sais juste qu’au bout d’un moment j’ob­tiens des erreurs 403 et que ça semble venir de là.

    Je vais devoir gérer ça à la main. Pour l’ins­tant je note l’heure de chaque requête dans un tableau. Quand mon tableau fait 320 éléments, je retire le premier élément et attend l’heure de cet élément + 1 heure avant de conti­nuer.

    Pagi­na­tion

    Le méca­nisme pour la pagi­na­tion est assez famé­lique : 30 items maxi­mum par requête, plus un offset pour passer à la page suivante. C’est une mauvaise méthode pour itérer à travers des milliers d’items et ça ne trompe pas : Les requêtes sont effec­ti­ve­ment de plus en plus lentes au fur et à mesure des pages. C’est visible et c’est pénible.

    Le serveur prévoit de renvoyer un champ total qui permet de savoir s’il reste encore des éléments. Les réponses du serveur ne me renvoient malheu­reu­se­ment pas ce champ alors je vais juste itérer jusqu’à obte­nir une réponse vide sans erreur.

    Il y a aussi un champ since qui permet de limi­ter la recherche aux éléments plus récents qu’une certaine date. J’ima­gi­nais pouvoir me baser là dessus pour la pagi­na­tion : Parcou­rir du plus vieux au plus récent, iden­ti­fier la date du plus récent et repar­tir de là à la prochaine itéra­tion. C’est d’ailleurs la procé­dure recom­man­dée pour beau­coup de services qui veulent éviter les problèmes que pose le parcours par offset. Malheu­reu­se­ment ça n’est pas utili­sable pour la pagi­na­tion : les items retour­nés ne sont correc­te­ment ordon­nés ni par date d’ajout ni par date de modi­fi­ca­tion.

    Étran­ge­ment, il semble que la limite de 30 items par page ne soit pas forcée. Il semble que ça fonc­tionne avec beau­coup plus, mais que ça génère aussi plus d’er­reurs. Le meilleur compro­mis semble effec­ti­ve­ment dans les 25 à 30 items par page.

    Dernière spéci­fi­cité, j’ai l’im­pres­sion de temps de réponse plus longs et d’er­reurs plus fréquentes quand je vais du plus vieux au plus récent. Je n’ai pas véri­fié cette impres­sion avec des chiffres mais autant rester sur l’ordre par défaut : du plus récent au plus vieux.

    Docu­men­ta­tion incom­plète

    J’ai dit qu’il me manquait les entêtes de régu­la­tion et le champ total à la racine de la réponse. À l’op­posé, j’ai quelques champs qui ne sont pas dans la docu­men­ta­tion.

    Le status semble être un entier avec, 0 pour une erreur, 1 pour OK, 2 quand il n’y a rien à affi­cher depuis une mise à jour. Quand status est à 0, le champ error contient le message d’er­reur.

    Il y a aussi un maxAc­tions, dont je ne connais pas le sens.

    Données irré­cu­pé­rables sur le serveur

    Pour une raison ou une autre, certaines de mes données semblent corrom­pues ou irré­cu­pé­rables sur leur serveur (comme quoi la sauve­garde est utile ;-)..

    J’ai 20 items qui provoquent systé­ma­tique­ment une erreur 504. Je peux récu­pé­rer ceux avant, ceux après, mais pas ceux là2. C’est vrai peu importe le sens de parcours (mais les offset ne sont logique­ment pas les mêmes dans les deux sens).

    Je n’ai pas plus d’ex­pli­ca­tion. Je ne peux même pas connaitre les iden­ti­fiants concer­nés pour deman­der leur suppres­sion.

    Poten­tiel­le­ment ce sont des données qui ne peuvent plus être réhy­dra­tées sur leurs serveurs, soient qu’il manque des infor­ma­tions essen­tielles, soit que leurs compo­sants ne savent pas complé­ter ce qui manque (le serveur du lien sauve­gardé qui répond bizar­re­ment ?).

    Erreurs aléa­toires

    Même avec une pagi­na­tion basique, dans l’ordre par défaut, j’ai des erreurs fréquentes, aléa­toires.

    La plupart des 403 semblent liées à la limi­ta­tion du nombre de requêtes, mais pas forcé­ment toutes.

    La plupart des 504 semblent liées à mes données irré­cu­pé­rables mais il est arrivé que ça finisse pas passer quand même.

    Les 502, en géné­ral il suffit de relan­cer la même requête, mais parfois l’er­reur semble persis­ter un moment.

    Auto­ma­ti­sa­tion

    Je parcours fina­le­ment tout par page de 30 et je mets à jour à chaque page le fichier de sauve­garde (pour les données récu­pé­rées) et le fichier de confi­gu­ra­tion (pour le nouvel offset de la prochaine requête). Si j’ai des erreurs inat­ten­dues, je pour­rai relan­cer de là où j’en étais.

    Si j’ai une page en erreur, je reprends tous les items de la page mais en allant les cher­cher mais 1 par 1 à partir de leur offset respec­tif. Parfois je ne retrouve pas l’er­reur et ça permet de récu­pé­rer tout. Parfois l’er­reur persiste sur un des éléments. Dans ce dernier cas l’idée c’est de pouvoir récu­pé­rer tous les bons items de la page et d’igno­rer l’unique qui est en erreur.

    Ça n’est pas parfait — si j’ai une erreur répé­tée mais tempo­raire sur un item, il sera ignoré silen­cieu­se­ment dans la sauve­garde — mais je n’ai pas mieux.

    Une fois le parcours tota­le­ment fait une fois, je peux utili­ser le since pour faire du diffé­ren­tiel.

    Le code est sur https://github.com/edas/pocket-backup

    RGPD à la rescousse

    J’ai quand même prévu de faire une requête RGPD pour deman­der un export de mes données. On verra s’ils arrivent à me récu­pé­rer les 20 items qui sont en erreur perma­nente.

    Si oui, je tente­rai de les effa­cer pour reprendre un fonc­tion­ne­ment sans erreur. Sinon, je tente­rai peut-être de réini­tia­li­ser le compte ou migrer ailleurs.


    1. Oui, tout ça. J’en suis moi-même étonné. J’ai tracé des usages depuis au moins fin 2010 mais je me demande si je ne l’uti­li­sais pas au début de mon passage à Yahoo! en 2007–2008 du temps où ça s’ap­pe­lait Read It Later. Ça fait une moyenne de 4 à 6 items par jour suivant la date rete­nue. ↩︎
    2. Je me les note pour moi-même : aujourd’­hui ce sont les offset 14053, 14481, 17689, 18291, 18629, 19389, 20363, 20815, 20996, 20999, 21512, 21923, 22275, 22283, 22346, 23386, 23841, 24189, 24414, 27441. ↩︎
  • Tout sauve­gar­der – mars 2025

    Nettoyer les écuries d’Au­gias c’est de la nioniotte à côté du projet de rapa­trier toutes mes données en local pour les sauve­gar­der.

    Ce que j’ai déjà

    1. Où sauve­gar­der en local
    2. Sauve­gar­der Gmail et Amélio­rer ma sauve­garde Gmail.
    3. Sauve­gar­der les SMS et les histo­riques d’ap­pel
    4. Sauve­gar­der Google Drive et Google Photos
    5. Sauve­gar­der Github
    6. Sauve­gar­der mes sites web
    7. Sauve­gar­der Stan­dard Notes
    8. Sauve­gar­der les calen­driers Google
    9. Sauve­gar­der les contacts Google
    10. Sauve­gar­der Bitwar­den
    11. Sauve­gar­der Pocket
    12. Sauve­gar­der les favo­ris Fire­fox
    13. Sauve­gar­der les abon­ne­ments Inorea­der

    Ce qui manque encore

    Je vais étendre la liste au fur et à mesure. Il me manque encore pas mal de choses, et pas le plus simple. Au moins :

    • Les abon­ne­ments, listes et peut-être messages Masto­don
    • Les abon­ne­ments, listes et peut-être messages Bluesky
    • Abon­ne­ments et messages Insta­gram
    • Les messages Tele­gram
    • Les messages What­sapp
    • Les messages Signal
    • Mes abon­ne­ments Newpipe (local Android)
    • Mon histo­rique et docu­ments Docto­lib
    • Mes contacts Linke­din, peut-être les messages aussi
    • Mes histo­riques Spotify, Netflix, etc.
    • Les discus­sions privées Slack
    • Les factures et histo­riques d’un peu partout (boutiques en ligne, abon­ne­ments divers, edf, sncf, hôtel, inter­net, télé­phone, etc.)
    • Les rele­vés sécu et mutuelle
    • Les rele­vés banque

    Je regrette qu’on n’ait pas un vrai gros projet Open Source dont l’objec­tif est d’avoir des connec­teurs pour tous les services en ligne de façon à rapa­trier toutes nos données en local.

    Cozy Cloud aurait pu faire ça mais la direc­tion prise ne se centrait pas sur les connec­teurs et le projet commer­cial n’a pas pu trou­ver sa place.


    Auto­ma­ti­sa­tion en trois niveaux

    Proba­ble­ment qu’il me faudra faire évoluer mes outils. Je ne peux pas lais­ser les mots de passe de tout et n’im­porte quoi en clair.

    J’ima­gine trois niveaux :

    1. Les sauve­gardes auto­ma­tiques. J’ai des token Oauth voire des mots de passe en clair dans les fichiers de confi­gu­ra­tion. C’est valable quand les données ne sont pas sensibles et que je tiens à ce que ça sauve­garde « sans moi »
    2. Les sauve­gardes que je lance­rai à la main, quand les données ou les mots de passe sont sensibles. Je pense faire des programmes qui s’in­ter­facent direc­te­ment avec le coffre Bitwar­den, que je déver­rouille­rai dans la session pour l’oc­ca­sion.
    3. Ce qui va être une énorme galère à coder : les service en ligne sans API ouverte avec de l’of­fus­ca­tion sur l’au­then­ti­fi­ca­tion, ainsi que les services en ligne derrière un 2FA non auto­ma­ti­sable ou un capt­cha complexe à mimer. Là j’ima­gine une exten­sion navi­ga­teur qui sauve­garde ce dont j’ai besoin quand je passe sur le site.

    Copie en ligne

    Bon, chaque chose en son temps.

    Avant tout ça il faudra déjà que je branche BorgBase ou BackB­laze pour avoir une copie chif­frée en ligne, parce que pour l’ins­tant ça ne fait que reco­pier en local.

    Avec dans les 3 To, ça me pren­dra bien un bon mois pour faire la première synchro­ni­sa­tion. Je sais envoyer plus vite mais je doute qu’on me libère des Gb/s pour moi tout seul.

  • Sauve­gar­der Bitwar­den

    Je conti­nue mes sauve­gardes.

    Le coffre avec tous mes mots de passe est parti­cu­lier. J’ai fait le choix de le stocker en ligne pour synchro­ni­ser tous mes appa­reils mais perdre tous mes mots de passe n’est pas une option.

    Bitwar­den a effec­ti­ve­ment une copie locale sur tous les appa­reils mais ça ne me couvre pas si quelque chose est supprimé sur le serveur et que la suppres­sion se réplique alors sur tous mes appa­reils.

    J’ai besoin d’une vraie copie locale, à moi.

    Je n’ai cepen­dant pas besoin que la copie soit en clair. Plus exac­te­ment, les données sont trop sensibles et je préfère n’avoir que la copie chif­frée. Je sais que je trou­ve­rais comment la déchif­frer à la main en cas de besoin (je l’ai déjà fait par le passé).

    Je pour­rais utili­ser la ligne de commande offi­cielle et synchro­ni­ser le coffre avec une clé d’API. Il n’y a pas besoin du mot de passe maitre pour ça. Je ne maitrise cepen­dant pas où il stocke le coffre et j’avais moyen­ne­ment envie de ça sur des tâches de sauve­garde.

    J’ai réim­plé­menté ça à la main avec un programme généré par IA. Il télé­charge les para­mètres de login, le profil utili­sa­teur et le coffre (chif­fré).


    C’est du Rust parce que j’es­pé­rais utili­ser le SDK offi­ciel. Malheu­reu­se­ment ils n’ex­portent pas les appels bas niveau que je souhaite. J’ai perdu bien trop long­temps à le comprendre et à batailler. J’ai fini par faire mon implé­men­ta­tion à la main.

    Si j’avais su que je fini­rais avec juste quelques appels HTTP, ça ne serait pas en Rust. Tant pis.