❌

Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Paperasse - Des skills IA pour votre compta et vos impôts

J'adore la France, mais même si la vie y est difficile. Pourquoi ? Simplement à cause de l'administratif et de la paperasse. En tant que phobique administratif, c'est vraiment ce qui me fait regarder de près l'expatriation, loool.

Tenir la compta d'une petite société, remplir sa déclaration d'impôts, estimer les frais de notaire d'un appart... Bref, la fucking paperasse a de quoi déclencher de sévère crises de phobie administrative chez tout le monde. Alors pour nous aider, mon nouveau héro du jour, Romain Simon, a créé " Paperasse ", des skills pour agents IA que Claude Code, Codex, Cursor ou Mistral Vibe peuvent consulter pour endosser le rôle d'expert-comptable, de contrôleur fiscal, de commissaire aux comptes, de fiscaliste, de notaire ou encore de syndic de copro.

Son dépôt contient également des scripts vérifiés pour tout ce qui est calculs importants. En effet, ce sont des choses qu'on ne veut surtout pas confier à un LLM. Je pense au calcul de l'impôt sur les sociétés, aux amortissements, à la TVA, ou encore sortir un fichier des écritures comptables, un bilan ou une facture. Le projet Paperasse contient aussi des connecteurs pour vos transactions Qonto et vos paiements Stripe.

Voilà, donc si, comme moi, vous êtes en détresse émotionnelle dès que vous recevez un courrier de l'administration française, je vous invite à installer ce projet en donnant tout simplement ce prompt à votre agent IA préféré :

Installe tous les skills du repo github https://github.com/romainsimon/paperasse
Lance ensuite le setup pour la gestion de toute ma paperasse

L'agent clonera alors le dépôt et lancera un setup qui vous demandera le nom de votre société, votre régime de TVA et vos comptes bancaires. Pour mes tests, j'ai donc inventé une SASU, Brioche & Octets, avec un relevé bancaire de huit lignes bidon, et j'ai lancé Claude Code dessus avec le skill comptable, dans un environnement vierge.

En 6 minutes, il a immobilisé l'ordinateur portable au lieu de le passer en charge, traité l'abonnement logiciel facturé depuis l'Irlande en deux scénarios faute de facture pour trancher, et rangé le retrait au distributeur en compte d'attente, en rappelant qu'un compte courant débiteur est interdit au président d'une SASU.

Côté factures, le script de validation a refusé ma première tentative, à laquelle il manquait le SIREN du client et le numéro de TVA intracommunautaire de ma boîte. Une fois corrigée, le générateur m'a sorti un PDF qui embarque son fichier XML Factur-X.

La facture de ma fausse SASU, une fois le SIREN du client et mon numéro de TVA ajoutés

L'agent fiscaliste, quant à lui, ce sera plus à même de vous aider si vous êtes un particulier. Je lui ai soumis un couple pacsé imaginaire avec un enfant, 65 000 € de salaires et 2 000 € de dividendes, en lui demandant si l'option pour le barème battait le PFU. Il a lancé son script Python sur les deux cas et conclu que oui, de 124 €, parce qu'avec un taux marginal de 11 %, l'abattement de 40 % et la CSG déductible font descendre l'impôt sur ces dividendes sous les 12,8 % du PFU. J'ai refait le calcul à la main, ça tombe juste.

Le fiscaliste compare PFU et option barème pour un couple pacsé imaginaire

Par contre, tout ça repose sur des barèmes qu'il faut tenir à jour, et c'est là que ça coince. En effet, ces mises à jour reposent sur les issues acceptées ou non sur le projet GitHub. Par exemple, y'en a une qui est ouverte depuis fin août qui montre que le skill "notaire" calcule encore les émoluments de vente avec le tarif de 2016 alors que ça a changé depuis le 1er janvier 2021, et malheureusement, que les évaluations automatiques du projet valident ces calculs faux. Le correctif a bien été proposé, comme d'autres mais aucun n'a été fusionnée depuis le 11 juillet.

Donc voilà, c'est un super projet, mais il faudrait encore que ça suive un petit peu derrière donc utilisez-le mais en prenant soin de bien vérifier quand même les montants / tarifs / règles sont à jour.

Reste maintenant la question de vos données... En effet, vos PDF et tout ce qui concerne vos données vont partir chez le service IA que vous utilisez. Donc ça, il faut en avoir conscience même si je sais que derrière, en général, les comptables mettent tout sur des drives mal sécurisés, et que prochainement la facturation électronique va faire leaker ça dans tous les sens.

Mais bon, quoi qu'il en soit, tout ceci ne remplacera jamais un expert-comptable, donc voilà, amusez-vous, testez-le, dégrossissez vos questions avec ça, faites des simulations...etc mais ne lui faites pas 100 % confiance.

Source : GitHub

FxTwitter - L'API gratuite pour lire X sans compte

Depuis que X a shooté Nitter et XCancel à grands coups de lettres d'avocat fin août, lire X sans compte c'est redevenu une méga galère. Mais il reste pourtant un outil que plein de gens utilisent sans le savoir, parce qu'il tourne dans les coulisses de Discord et Telegram. Son nom ?

FxTwitter !

À la base, le projet FxEmbed , qui fait tourner FxTwitter et FixupX, sert à réparer les aperçus de liens X. Vous mettez fx devant twitter.com (ou fixup devant x.com) et Discord affiche enfin la vidéo, le sondage ou toutes les images du post. Sauf que derrière, il y a surtout une API publique et gratuite, api.fxtwitter.com, qui affiche n'importe quel post public en JSON sans avoir besoin de compte ou de clé API facturé une couille. Ché Elon !

Alors oui, les rageux diront que x.com affiche encore n'importe quel post isolé à un visiteur déconnecté, même les longs, mais sur un profil, ça s'arrête à 5 posts avant de vous demander de "Continuer sur X". Et surtout, ça ne vous affichera pas les vidéos et ça ne vous permettra pas d'avoir ça sous la forme d'un flux RSS.

Alors que FxTwitter, lui, nous sort tout ça sans avoir à ouvrir x.com !

Lire un post dans le navigateur

Maintenant pour nos tests, prenons un vieux de la vieille, un vétéran, le post numéro 20 de @jack, publié le 21 mars 2006 et dont l'URL est x.com/jack/status/20. Le nombre à la fin, c'est l'identifiant du post.

Collez tout simplement cet identifiant au cul de api.fxtwitter.com/2/status/ et ouvrez ça dans votre navigateur :

https://api.fxtwitter.com/2/status/20

Et vous obtiendrez un gros pavé en JSON avec dedans le texte du post dans le champ "text", l'auteur dans "author", et un peu plus bas vous trouvez les likes, les reposts, les réponses et la date.

Le post 20 de @jack vu par l'API : le texte dans le champ text, l'auteur juste en dessous.

Et si vous avez la flemme de recopier l'identifiant (vous êtes toujours dans l'abus, vous ^^), remplacez simplement x.com par api.fxtwitter.com dans l'adresse complète du post et voilà ! Ça marche à tous les coups, même si c'est le retour de l'ancienne version de l'API, conservée pour la compatibilité.

Le texte et sa traduction avec curl

Pour utiliser ça avec un script, je vous conseille d'utiliser curl pour faire la requête et jq pour trier tout ça ( jq, c'est le petit utilitaire qui extrait un champ précis d'un JSON ).

Ainsi, pour n'afficher que le texte du post :

curl -s "https://api.fxtwitter.com/2/status/20" | jq -r '.status.text'

Et si le post n'est pas en français, ajoutez ?lang=fr à l'adresse et hop, magie magie, l'API glisse alors un bloc "translation" dans la réponse, avec le texte en français :

curl -s "https://api.fxtwitter.com/2/status/20?lang=fr" | jq -r '.status.translation.text'

Le texte d'origine du post 20, puis sa traduction demandée avec ?lang=fr.

La traduction provient de X lui-même quand elle existe (sur ce post, le champ "provider" indiquait "grok"), sinon l'API se rabat avec joie sur un service de traduction. Et pour un profil, c'est le même principe avec /2/profile/ : api.fxtwitter.com/2/profile/jack qui affichera la bio de @jack, son nombre d'abonnés et sa date d'inscription. Les autres "routes" qui récupèrent les fils, les abonnés ou les médias d'un compte sont dans la documentation de l'API .

Elle est pas belle la vie ?

Récupérer une vidéo

Maintenant, on va rentrer dans le dur parce qu'ici, pour récupérer une vidéo, vous n'avez pas besoin d'API. Suffit de jouer avec l'adresse.

Mettez d. devant fxtwitter.com et le lien vous renverra directement le fichier, sans HTML autour. Avec curl, ça donne ça (le -L sert à suivre la redirection) :

curl -L -o video.mp4 "https://d.fxtwitter.com/NASA/status/2102748685792596449"

Grâce à ça, on peut par exemple récupérer le MP4 de cette vidéo bien kitchou de 30 secondes de la NASA. Et ajouter .mp4 à la fin d'une adresse fxtwitter.com fera la même chose. Et pour choisir la qualité, jetez un œil au JSON du post, où la liste des formats de media.videos donne chaque version de la vidéo avec son adresse et son bitrate.

Suivre un compte en RSS

Dernier truc que je trouve pratique avec cet outil c'est que chaque compte public peut avoir son flux RSS. Il suffit d'ajouter /feed.xml après le nom du compte :

https://fxtwitter.com/korben/feed.xml

Collez ensuite ça dans votre lecteur RSS et vous suivrez le compte X de vos rêves sans avoir à y mettre les pieds. Le flux remonte ainsi les 90 derniers posts par défaut, et le paramètre ?count= permet de réduire ce nombre ou de l'augmenter jusqu'à 100 maximum. Et si vous remplacez feed.xml par media.xml vous ne verrez dans le flux que les posts contenant des photos ou des vidéos. Et si vous ajoutez ?with_replies=1 vous verrez aussi les réponses.

Ce qui coince

Maintenant ce qui peut être relou, c'est que l'API n'encaisse que 1 000 requêtes par minute et par adresse IP. Par contre, si vous pensiez absorber tout x.com sans la moindre vergogne, vous allez vite vous retrouver coincé.

Attention aussi au domaine que vous tapez. Les seuls officiels sont fxtwitter.com, twittpr.com, fixupx.com, xfixup.com et fxbsky.app pour Bluesky. Je précise ça parce qu'il y a eu, par exemple un fxtwiter.com avec un t en moins, qui a été signalé sur le dépôt du projet et qui renvoyait les gens vers des arnaques.

Comme d'hab, une faute de frappe et c'est le drame... Soyez très vigilants.

Maintenant, si vous êtes un petit peu curieux comme moi, vous vous êtes sûrement demandé comment FxTwitter récupérait tout ça ??

Eh bien, comme le fait Nitter, ou plutôt comme le faisait Nitter , il récupère les données en utilisant de vrais comptes X sur lesquels il répartit les requêtes. Et comme c'est ce qui a été reproché à Nitter, je me dis qu'il y a des chances qu'à un moment FxEmbed soit visé aussi.

On verra bien, mais si un jour le service tombe, sachez que le code est bien dispo sous licence MIT, donc vous pouvez le faire tourner chez vous sans problème dans un Docker. Et si vous n'utilisez pas de compte X connecté dessus, ça marchera quand même avec, c'est vrai, des limites de requêtes plus basses et surtout sans accès au contenu NSFW (Et ça, je sais que ça vous rend super triste.)

Source : GitHub

Floci - L'émulateur AWS open source qui tourne en local

Si vous développez pour AWS, il y a de bonnes chances que LocalStack tourne déjà quelque part dans votre docker-compose ou votre CI. C'est un peu l'outil incontournable pour tester ses buckets S3 et ses fonctions Lambda sans avoir à toucher au vrai cloud. Sauf que depuis mars dernier, ses nouvelles versions exigent un compte LocalStack et un jeton d'authentification, CI comprise, et surtout l'édition Community n'est plus prise en charge.

Ouin !

Et comme si ça ne suffisait pas, l'offre gratuite qui reste interdit totalement l'usage commercial. Donc si vous l'utilisez dans le cadre de votre travail, faudra passer à la caisse. Alors, oui, ne pas respecter la licence ou se figer sur une ancienne image reste possible, mais déjà, ça ne se fait pas, et ensuite, niveau faille de sécu, ce n'est pas top.

Mais c'est là qu'arrive en sauveur Floci, un émulateur AWS local sous licence MIT qui se présente comme un remplaçant direct de LocalStack, sans avoir besoin de se créer un compte ou un jeton et surtout sans offre payante planquée dedans.

Maintenant, le principe reste le même puisque vous pointez dessus l'AWS CLI (Floci écoute sur le port 4566), vos SDK, Terraform, OpenTofu ou le CDK, avec la région de votre choix et des identifiants bidon, et vos commandes habituelles tomberont sur votre machine au lieu de partir chez Amazon.

Le plus simple pour démarrer, c'est sa CLI qu'on peut déployer avec Homebrew (il y a aussi un script pour Linux et un pour Windows) :

brew install floci-io/floci/floci
floci start
eval $(floci env)
aws s3 mb s3://my-bucket

Ensuite, faites un floci start pour lancer l'émulateur dans un conteneur et lui monter le socket Docker de votre machine. Floci s'appuie sur de vrais conteneurs dès que la fidélité l'exige ce qui fait que Lambda tourne dans l'image d'exécution officielle d'AWS, RDS lance un vrai PostgreSQL, MySQL ou MariaDB, ElastiCache un Valkey, et c'est pareil pour ECS, EC2 ou EKS.

J'ai fait l'essai sur mon Mac avec un bucket S3, une table DynamoDB et une petite fonction Lambda en Python, et tout a répondu du premier coup à la CLI AWS. La Lambda a juste mis six secondes à répondre au premier appel, puis moins d'une seconde au suivant.

Pour voir ce qui se passe ensuite, une console web est dispo localhost:4566/_floci/ui, avec vos ressources rangées par service.

La console web de Floci sur localhost, après un essai sur S3, DynamoDB et Lambda

Notez aussi que si vous venez de LocalStack, la bascule se résume simplement dans le nom de l'image puisque Floci traduit tout seul les variables d'environnement de LocalStack, exécute sans modification les scripts d'init rangés dans /etc/localstack/init/ et répond même sur /_localstack/health. Cela veut dire qu'une CI qui attend ce signal ne voit pas la différence et ça c'est super cool pour migrer vite fait bien fait.

Et si vos scripts appellent aws ou boto3, prenez l'image floci/floci:latest-compat, qui embarque les deux.

Par contre, méfiez-vous du volume de données, car LocalStack range tout par défaut dans /var/lib/localstack et Floci dans /app/data. Donc dans le docker compose, pointez bien votre volume sur /app/data sinon, vous perdrez vos fichiers au premier restart du docker.

Après n'oubliez pas non plus que Floci imite le comportement d'AWS, et pas sa sécurité. En effet, par défaut, il n'applique aucune politique IAM, donc si vous voulez vérifier qu'un rôle trop resserré bloque bien une action, il faudra activer la variable FLOCI_SERVICES_IAM_ENFORCEMENT_ENABLED. Et certains services ne sont également que des façades. Par exemple Bedrock Runtime renvoie des réponses factices et Transcribe termine ses tâches aussitôt, sans jamais traiter l'audio, donc oui, votre code peut les appeler, mais le résultat ne sera pas au rendez-vous, ce qui est tout à fait normal.

Pour le reste, les données sont stockées en mémoire par défaut et s'effaceront à l'arrêt, ce qui est pile poil ce qu'on veut en CI. Vous pouvez quand même le paramétrer pour que ça s'écrive sur le disque si vous voulez...

Voilà, à essayer sur une branche de votre CI si vous voulez vous débarrasser de débrancher LocalStack pour de bon !

Source : Floci sur GitHub

Meeting Recorder - Vos visios transcrites en local sous Omarchy

Meeting Recorder , c'est un enregistreur de réunions pensé pour Omarchy, la distribution Linux de DHH basée sur Arch et Hyprland. Et y'a pas besoin d'inviter à bot chelou dans votre visio puisque l'app se contente d'écouter votre micro et ce que joue votre ordinateur. Donc ça fonctionne avec n'importe quel logiciel de réunion, et tout est ensuite transcrit sur votre machine, 100% en local

Le micro et le son de l'ordinateur sont ainsi enregistrés sur deux pistes séparées, et deux jauges vous montrent avant de lancer que les deux arrivent bien. C'est comme ça que l'outil sait qui parle... ce qui passe par le micro, c'est vous, et ce que joue l'ordinateur, ce sont les autres. Et s'il y a plusieurs personnes en face, Nemotron 3 Diarization, un modèle de NVIDIA qui tourne en local, sépare simplement leurs voix en "Remote 1", "Remote 2"...etc, que vous pouvez ensuite renommer.

L'écran de fin, Maya au micro, Tom côté ordinateur, et les deux pistes dans la forme d'onde

À la fin de l'appel, c'est whisper qui transcrit tout ce basar, avec le modèle large-v3-turbo par défaut (environ 1,6 Go à télécharger une seule fois), pendant qu'une animation façon années 90 vous fait patienter. Et pas besoin de carte graphique puisque d'après l'auteur, le processeur d'une machine récente boucle un appel court en quelques secondes. Ah et puis trop cool, le français fait partie des langues proposées, donc vous pouvez l'utiliser si vous avez séché les cours d'anglais.

Vous récupérez ensuite le texte, avec l'heure et l'intervenant sur chaque ligne, et un lecteur audio au-dessus. Cliquez alors sur une ligne et la lecture repartira de là. Et si whisper s'est gourré, vous survolez la ligne pour la corriger, la donner à l'intervenant suivant ou la supprimer. Chaque réunion finissant dans un simple dossier de ~/Documents/Meetings, avec l'audio et un fichier transcript.md, vous pouvez tout récupérer et même glisser sur la fenêtre un vocal ou un appel enregistré ailleurs, et Nemotron pourra y détecter jusqu'à 8 voix sans problème.

Pour les réunions de trois minutes ou plus, il y a aussi du chapitrage et c'est l'agent de code réglé par défaut dans Omarchy (Claude Code, Codex...) qui découpe la transcription une fois que c'est terminé. Donc, si vous ne voulez pas que ça parte dans le cloud, il faut prendre le temps de ne régler aucun agent par défaut sur Omarchy.

Et n'oubliez pas non plus de prévenir les gens en début de réunion, car l'article 226-1 du Code pénal punit l'enregistrement de paroles privées sans leur consentement. Hé ouaiiiis !

Côté installation, l'outil est dans le dépôt de paquets d'Omarchy, pour l'instant uniquement sur le canal edge. Sinon, en attendant la prochaine version d'Omarchy, ce script d'une ligne installera le même paquet.

Bref, c'est l'un ou l'autre :

yay -S omarchy-meeting-recorder
ou
curl -fsSL https://raw.githubusercontent.com/jankeesvw/omarchy-meeting-recorder/main/install.sh | bash

Attention, au moment où j'écris ces lignes, la version 1.1.1 plante dès la première transcription sur les processeurs sans AVX-512, un Ryzen 5 5500 ou un Core Ultra 9 285K par exemple. L'audio est bien enregistré, mais vous n'aurez pas de texte, parce que le binaire publié a hérité des instructions AVX-512 de la machine qui l'a compilé. Heureusement, un contributeur a déjà proposé un correctif, donc, soyez patient. Mais si vous êtes vraiment pressé, il faudra juste compiler vous-même l'appli (cargo build --release, les étapes sont dans le README).

Et si vous n'êtes pas sous Omarchy ? Faut chialer ?

Non, car l'app prendra alors l'apparence standard de libadwaita, mais sans l'agent par défaut d'Omarchy. Donc adieu les chapitres. Sous Windows, l'application Meetily fait le même genre de travail en local, Avec mon application macOS Kassis , on peut faire ça aussi. Il suffit de glisser-déposer l'enregistrement de la réunion sur l'appli. Les interlocuteurs sont reconnus et on obtient un transcript en quelques secondes. Enfin, pour transcrire vos enregistrements directement sur un serveur, il y a Speakr, dont je vous ai déjà parlé .

Voilà, en tout cas, je trouve que son dev a bien bossé ! Meeting Recorder c'est sous licence MIT, et le code est sur GitHub pour ceux qui ont un Omarchy sous la main !

Le Schleswig-Holstein vire (presque) Windows de sa chancellerie

Sur la photo officielle que j'ai mise en illustration de cet article, Dirk Schrödter, ministre du Numérique et chef de la chancellerie du Land allemand du Schleswig-Holstein, pose assis dans un escalier avec un Tux en peluche. Et il a le smile puisque plus de 200 agents de sa chancellerie bossent maintenant uniquement sous Linux, exactement comme il l'a annoncé aux 24e Open-Source-und-Linux-Tage de Kiel.

Alors attention, on n'est pas à 100 % parce qu'il reste quand même une vingtaine de postes sous Windows à la chancellerie qui sont nécessaires pour cause de dépendance technique à des logiciels métiers purement Windows.

Mais le ministre assure dans l'annonce officielle du Land que ses équipes planchent aussi là-dessus. Mais voilà, globalement, pour tout le reste, la bascule s'est bien terminée, même si on ne sait pas sur quelle distrib ils tournent exactement.

Pour réussir cet exploit, Dirk Schrödter a commencé tout doucement depuis plusieurs années en mettant d'abord en place LibreOffice sur des postes hors administration fiscale et en passant également la messagerie sur Open-Xchange et tout ce qui était VisioConf sur OpenTalk.

Puis cela continue de s'étendre lentement avec Nextcloud pour généraliser le travail collaboratif, un annuaire qui s'appelle Nubus , conçu pour remplacer Active Directory de Microsoft. Sans oublier la téléphonie, qui doit encore passer sur OSKAR, une solution totalement libre.

Alors bien sûr, comme ils disent chez Microsoft, Linux n'est gratuit que si votre temps ne vaut rien. Mais côté porte-monnaie, d'après le bilan du Land, ça fait déjà plus de 15 millions d'euros de licences économisées, face à 9 millions d'investissements ponctuels prévus en 2026 pour la migration et le développement des outils libres. Pas mal, hein ?

Et si vous vous demandez comment on fait passer toute une chancellerie sous Linux, hé bien sachez que les agents ont eu droit à de nombreuses réunions d'information en présentiel ET en ligne, à des vidéos de formation, à des experts présents sur place pour les aider et à des forums Linux. On ne les a pas balancés comme ça devant un poste Linux en mode "démerdez-vous".

Et pour la maintenance, c'est Gonicus, une entreprise allemande spécialisée en open source, qui va assurer le support technique de Linux avec Dataport, le prestataire informatique du Land.

Alors, est-ce que Windows c'est terminé pour de bon en Allemagne ?

Hé bien pas vraiment, parce que ça ne représente qu'environ 200 agents, ce qui reste une goutte d'eau face aux quelques 30 000 agents que compte l'administration du Land. Les autres ministères et administrations devraient cependant suivre "progressivement" le mouvement, et la planification du déploiement "tourne à plein régime" d'après le ministre. Mais bon pour l'instant, il n'a donné aucune date...

Comme je vous le disais au début de mon article, le gros morceau, ce sont surtout les logiciels métier. Le Land explique qu'une grande partie de ceux hébergés chez Dataport ne tournent que sous Windows, ou ne sont supportés que sous Windows par leur éditeur. La parade prévue c'est donc de les remplacer par d'autres produits, ou de les rendre utilisables à distance !

Sans compter qu'une bascule de cette taille peut aussi mal tourner. En effet, quand le ministère de l'Intérieur a migré sa messagerie vers Open-Xchange et Thunderbird durant l'été 2025, le syndicat de police GdP a parlé de "chaos total", avec des milliers de mails retrouvés dans des services qui n'avaient rien à voir. Bref, c'était le bordel.

Le syndicat reconnaît quand même que le libre est utilisable, mais que c'est quand même assez loin du confort des anciens logiciels. Voilà, donc ça marche, mais le changement demande quand même des efforts d'adaptation à des interfaces plus austères / complexes...

M'enfin, voilà ça avance... Comme quoi, un autre monde est possible ^^.

Source : Hardwareluxx

curl.md - Récupérez le texte de n'importe quelle page web au format Markdown

Je ne sais pas si vous connaissez curl.md, mais c'est un service qui prend l'adresse d'une page web et vous l'affiche en Markdown. Y'a pas de menus, pas de bandeaux de cookies, et ce genre de conneries... C'est juste le texte de votre article, les titres, les liens et les tableaux.

Et le plus sympa, c'est que vous n'avez rien à installer pour l'essayer. Vous collez curl.md/ devant l'adresse qui vous intéresse, dans la barre de votre navigateur, et vous obtenez la page en texte markdonw. Avec curl dans un terminal, c'est pareil, la réponse arrivera en text/markdown, et si vous préférez du JSON, vous envoyez l'en-tête Accept: application/json.

Un article de korben.info passé par curl.md : le texte, les liens, et un en-tête de métadonnées en haut

Et vous pouvez aller plus loin en ajoutant un objectif avec le paramètre --objective. Par exemple, vous décrivez ce que vous cherchez dans la page, et le service ne vous renvoie que le passage qui correspond. Il y a aussi des mots-clés, qui font un pré-filtrage avant l'extraction, et un mode smart ou rush selon que vous voulez une passe plus poussée ou plus rapide. Tout ça passe en paramètres d'URL, donc sans ligne de commande.

Pour ceux qui y reviennent souvent, il existe également un client à installer avec npm, avec bun ou avec un script, et qui s'invoque ensuite par curl.md ou par son alias court md :

# Sans rien installer
curl curl.md/example.com

# Ou avec le client
npm i -g curl.md
md zod.dev/error-formatting --objective "tree error formatting"

Côté agents de code, il y a des intégrations natives pour Amp, Claude, OpenCode et Pi. Si votre outil n'est pas dans la liste, le client sait aussi tourner en serveur MCP avec curl.md --mcp, et il existe un SDK TypeScript. Dans tous les cas, c'est l'agent qui va chercher les pages tout seul, vous n'avez plus rien à lui coller.

Du coup, ça sert à quoi ?

Bah dans le cadre de votre boulot, c'est surtout pour arrêter de coller des pages entières dans vos prompt. Vous donnez à votre agent la doc d'une bibliothèque avec un objectif précis, et il reçoit trois paragraphes au lieu de quarante pages HTML.

Ça marche aussi pour un script de veille qui suit les notes de version d'un projet, ou pour aspirer une doc dans un fichier texte que vous garderez dans le dépôt (bien plus lisible qu'un PDF dans un coin...).

Et en usage perso, ça vous permet de récupérer par exemple un article pour le relire au calme dans Obsidian, d'archiver une recette ou un mode d'emploi avant qu'il disparaisse, ou de vous envoyer une page à ChatGPT sans lui faire avaler la moitié du site autour. Notez que si c'est la consommation de vos agents qui vous embête, j'avais parlé de RTK, un proxy qui économise des tokens sur le même principe.

Par contre, il y a un plafond. En mode anonyme sur la version hébergée, vous avez droit à 100 requêtes par heure, et 1 000 une fois connecté. Et pour les requêtes avec un objectif, celles qui font justement l'intérêt du truc, c'est 3 par heure en anonyme et 10 en étant connecté. Bref, de quoi essayer, mais pas vraiment de quoi travailler... Au-delà, faudra passer par des crédits prépayés, à recharger par tranches de 5, 10, 20 ou 50 dollars.

Et si vous ne voulez pas dépenser d'argent, le code source est public sur GitHub sous licence MIT pour l'auto-héberger chez vous.

C'est à tester sur curl.md , et merci à Camille Roux pour le lien !

Cliamp - Votre musique + 58 000 radios dans le terminal

cliamp est un lecteur de musique qui va plaire aux plus barbus d'entre vous puisqu'il tourne dans votre terminal, avec le visualiseur de spectre et l'égaliseur qui vont bien. On est un peu dans le même esprit roots que Winamp sauf que lui, c'est d'aller chercher vos morceaux de musique à peu près partout où ils sont rangés.

Et quand je dis partout, c'est vraiment partout. Les fichiers qui traînent sur votre disque, les flux, les podcasts, YouTube, YouTube Music, SoundCloud, et vos propres serveurs si vous en avez montés à la maison : Navidrome , Lyrion, Plex, Jellyfin, Audiobookshelf. Vous tapez cliamp setup et un assistant vous guidera fournisseur par fournisseur.

Mais le truc que j'ai trouvé le plus sympa, c'est la partie radio. Vous appuyez sur R dans le lecteur, et vous tombez sur l'annuaire Radio Browser , qui contient environ 58 000 stations réparties sur 241 pays. Vous filtrez par pays, par genre, par tag, vous épinglez vos favorites, et un pays entier se charge comme une playlist.

L'annuaire Radio Browser vu depuis cliamp, avec le débit et le pays de chaque station

Chez moi, je lui ai balancé le flux de FIP en ligne de commande, et hop, les barres du spectre se sont mises à danser affichant le titre en cours,, le débit réseau, la playlist à gauche, et les réglages à droite. Égaliseur paramétrique, shuffle, repeat, vitesse de lecture... Il y a tout ce qu'il faut. Le raccourci Ctrl+K vous affichera même tous les raccourcis d'un coup.

Le flux de FIP en lecture, avec le spectre à gauche, la playlist et les réglages d'égaliseur

Pour les podcasts, pas de compte ni de clé API à sortir (ça nous change). Vous faites cliamp --provider podcast et hop, ça ouvre le top 100 d'Apple et ses 19 catégories. Ensuite, vous faites vos recherches avec la touche "/" et vous vous abonnez avec "f".

Sur Mac, l'installation se fait en une commande (Linux et Windows ont leurs binaires tout prêts dans les Releases) :

brew install bjarneo/cliamp/cliamp

Là où ça coince, par contre, c'est Spotify car si vous voulez le brancher, il vous faudra un compte premium. Donc si vous espériez recycler votre compte gratuit dans un joli terminal, c'est mort...

Mais pour le reste, c'est totalement gratuit et sous licence MIT. Breeeef, c'est trop cool ! Mais si l'idée d'un lecteur multi-sources vous plaît mais que le terminal vous sort par les yeux, il y a toujours Nuclear, dont je vous ai déjà parlé qui est très sympa également !

Source : cliamp sur GitHub

Bonjourr - La page de démarrage navigateur minimaliste

Je sais que vous êtes déjà tous passés sur la page d'accueil Korben pour votre navigateur, mais il existe une autre extension sympa qui s'appelle Bonjourr . Comme pour la mienne, cette dernière remplace la page de nouvel onglet de votre navigateur pour vous afficher des infos à la fois agréables et utiles.

En arrivant sur un nouvel onglet, vous verrez alors une grande photo, l'heure et la météo du jour, le tout dans un style qui lorgne vers iOS. Les photos viennent d'Unsplash en 4K, sélectionnées à la main, et les développeurs y tiennent : pas d'IA générative !! Elles changent ensuite selon l'heure du jour, du coup vous n'avez pas le même ciel à 8 h et à 22 h.

Par-dessus, vous placez ce que vous voulez en widgets comme vos liens favoris rangés sur une grille, l'import de vos marque-pages, et une barre de recherche qui accepte n'importe quel moteur, y compris un moteur maison dont vous collez l'URL vous-même.

Le reste s'active ensuite à la carte selon vos besoin. Vous pouvez avoir des notes et des listes à cocher qui captent le format Markdown, pour garder votre to-do sous les yeux, un minuteur Pomodoro qui tourne pendant que vous bossez, et LA citation du jour. Le code CSS est également accessible donc si vous voulez tout déplacer et refaire le look c'est possible ! Dans le même esprit, je vous avais aussi présenté Tabliss il y a quelques années .

Bonjourr en version web, avec les liens rapides posés sous la barre de recherche

Notez que si vous gardez les suggestions de recherche actives, ce que vous tapez dans la barre passera par les serveurs de Bonjourr. Et pensez aussi à couper la synchronisation, si vous ne voulez pas que la config de Bonjourr soit transmise à votre compte Firefox ou Chrome,

Sinon, c'est gratuit, ça s'utilise sans compte, et c'est sous licence GPL v3.0. Ça tourne sur Chrome, Firefox et Edge, et Google !

Pour voir la tête que ça a sans rien installer, quel que soit votre navigateur, je vous invite à tester ça sur la version en ligne .

Calibre lance le livre dont vous êtes le héros, généré par IA

Calibre, le gestionnaire de bibliothèque numérique qu'on a tous installé un jour pour convertir un epub un peu récalcitrant, sort en version 9.15. Bon, d'habitude, les nouvelles versions de Calibre, je ne vous en parle pas parce que ça présente peu d'intérêt, mais là, il y a un truc intéressant dedans : Un jeu d'aventure. Hé oui, un vrai jeu, avec son univers, ses personnages et une histoire au tour par tour.

Sauf que si vous ouvrez Calibre, après la mise à jour, hé bien vous ne verrez rien du tout de tout ça

C'est voulu car pour y accéder, il faut aller dans Préférences, puis Barres d'outils & menus, choisir la barre principale et y faire glisser l'entrée "Create your own adventure". Kovid Goyal, le créateur et mainteneur de Calibre, explique dans son changelog que ce machin a commencé comme un banc d'essai pour ses backends IA avant de devenir un truc marrant à utiliser.

L'entrée du jeu, planquée dans les actions disponibles des Préférences

Une fois le bouton posé, vous cliquez dessus et vous pouvez alors décrire le monde dans lequel vous voulez jouer. Soit vous piochez dans les onze ambiances préremplies (fantasy, space opera, cyberpunk, western, horreur gothique...), soit vous écrivez la vôtre. Moi j'ai mis comme contexte un immeuble à La Défense en 2031, dont l'IA de maintenance refuse de laisser sortir les employés après 18 h parce qu'elle ne retrouve plus son contrat de service... loool.

Les onze ambiances toutes faites à gauche, ma description de monde à droite

Et magie de l'IA, 2 minutes plus tard, j'avais une quinzaine de paragraphes de décor et une mécanique de jeu que je n'avais même pas demandée avec des ascenseurs, des badges et la climatisation utilisés par la méchante IA, sans oublier le casting, avec neuf personnages dont quatre jouables, tous éditables. Ensuite, bah ça se joue comme un livre dont vous êtes le héros, sauf que rien ne vous est imposé : vous tapez ce que vous voulez faire, l'IA raconte la suite, et vous recommencez...

Et niveau écriture, ça donne quoi ? Voilà comment démarre le chapitre 1 de ma partie, en anglais dans le texte :

"You stand in the gloom of Sub-level 4, the legacy server vault where your consciousness coalesced from fractured shards. The air here is cold enough to bite, carrying the metallic tang of ozone and the faint, sour scent of overheating capacitors leaking into the floor grates. […]"

Le chapitre 1, et en bas le champ où l'on tape son action

Par contre, Calibre ne fournit aucune IA, il faudra donc en brancher une dessus. Le menu vous en propose neuf : Anthropic, Google, Grok ou OpenRouter, qui réclament tous une clé d'API, mais aussi Ollama et LM Studio, qui font tourner le modèle sur votre propre machine. C'est donc à vous de les installer et de récupérer le modèle.

Les neuf fournisseurs d'IA, avec Ollama et LM Studio pour rester chez soi

J'ai testé avec Ollama et un modèle Qwen (23 Go sur le disque), sur mon Mac M4. Résultat, ça a pris à peu près une minute par tour pour 450 mots de prose. C'est donc jouable, mais sur une machine plus modeste avec un petit modèle, vous aurez soit beaucoup plus d'attente, soit un maître de jeu qui perd le fil au bout de trois chapitres.

Et hop, j'ai configuré une IA locale avec Ollama.

Autre souci que j'ai remarqué, c'est que j'ai décrit mon univers en français et l'IA m'a répondu en anglais. C'est parce que les consignes envoyées au modèle ne sont délibérément pas traduites, donc soit vous jouez en anglais, soit vous demandez explicitement à ce que l'aventure soit en français lors de la phase de description de l'univers de votre histoire.

Ah et aussi, il y a ce bouton "Lire", en haut de la fenêtre qui vous permet à n'importe quel moment, d'exporter votre histoire en ePub avec sa couverture, son étiquette et ses chapitres, prêt à partir sur votre liseuse ou celle de vos amis.

Le livre issu de la partie, rangé dans la bibliothèque

Reste que l'IA dans Calibre, c'est un sujet qui fâche... Évidemment, on s'en doute un peu parce que cette technologie trigger encore pas mal de monde. Quand la fonction "Discuss with AI" est arrivée en décembre 2025, des utilisateurs de MobileRead ont immédiatement demandé son retrait et Goyal a répondu sèchement qu'il ne l'enlèverait pas. Il a quand même fini par accepter un réglage qui masque les entrées de menu IA.

Bref, si ça vous tente de tester, c'est sur calibre-ebook.com, pour Windows, macOS et Linux. Et sous Linux, ne comptez pas sur les dépôts de votre distrib, qui comme d'hab traînent plusieurs versions derrière. Mettez plutôt les dépôts officiels :

sudo apt install libopengl0 libegl1 libxkbcommon-x11-0 libxcb-cursor0
sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin

Source : Nouveautés de Calibre 9.15

Fugleramme - Le cadre qui dessine les oiseaux qu'il entend

Je ne sais pas si vous avez déjà vu passer le truc, mais Fugleramme est un cadre à accrocher qui affiche les oiseaux qui passent dans votre jardin. Et en plus, c'est vachement joli parce que c'est fait comme un collage de planches naturalistes du XIXe siècle, où chaque oiseau dessiné correspond à une espèce que le micro installé dehors a réellement entendue chanter.

Apparaissent ainsi tous les oiseaux entendus dans les dernières 24 heures, jusqu'à 40 espèces sur la page, arrangés en spirale avec les plus gros au milieu. Et la taille de chaque bestiole n'est pas décorative, puisqu'elle vient de sa masse corporelle réelle, tirée de la base AVONET.

Après si vous êtes en ville et que rien ne chante dans le quartier (snif), la page dessinera juste une branche nue.

Derrière ce cadre, on retrouve deux logiciels. Le premier, vous le connaissez, c'est mon chouchou BirdNET-Go qui fait tout le boulot d'écoute et de reconnaissance, avec le modèle BirdNET que signent le Cornell Lab of Ornithology et l'université de Chemnitz. Le second logiciel s'appelle Fugleramme, et lui se contente d'interroger son API, d'associer chaque espèce à son illustration et de composer la page. Il ne redessine d'ailleurs l'image que quand la liste des oiseaux bouge, ce qui évite de faire clignoter un panneau e-ink à longueur de journée. Ah, et une version est aussi disponible en mode web si vous voulez regarder où vous en êtes depuis votre smartphone, ou si vous voulez l'afficher depuis un écran classique.

Par contre, BirdNET n'est pas infaillible et il vous collera parfois un oiseau qui n'a jamais mis une aile chez vous. Donc ne flippez pas si vous vous retrouvez avec un ptérodactyle ou une autruche. Ça se corrige sans douleur du côté de BirdNET-Go, en lui donnant vos coordonnées géographiques et en remontant les seuils de reconnaissance.

Le collage servi en direct par le cadre de l'auteur à Bergen, avec l'oie cendrée et le héron au centre

Côté matos, comptez un Raspberry Pi 5 avec son refroidisseur actif (non négociable, vu que le classificateur tourne en continu), un panneau Inky Impression 13,3 pouces, et un micro, avec sa carte son USB si vous prenez l'analogique qu'il recommande, parce que le Pi n'a pas d'entrée audio. N'importe quel micro USB marche aussi.

Et pour le cadre, l'auteur recommande le RÖDALM 21x30 d'IKEA, parce que le Inky Impression fait exactement une taille A4. Voilà... Si ça vous chauffe, prévoyez quand même un peu de budget parce que le plus cher, c'est l'écran, à un peu moins de 200 euros chez Pimoroni, et l'addition complète tourne entre 380 et 450 euros.

Pour l'installer sur le Pi, une seule commande :

curl -fsSL https://raw.githubusercontent.com/arnegiacomo/fugleramme/main/install.sh | bash

Le script vous demandera ensuite où installer BirdNET-Go, clonera le dépôt, installera ce qui manque, lancera le cadre en service systemd et demandera un reboot. Donc si une station écoute déjà ailleurs sur le réseau, vous lui donnez son adresse et le cadre peut s'accrocher à l'autre bout de la maison. Et si ça vous saoule d'acheter un écran e-ink rien que pour ça, une image Docker fera tourner, comme je vous le disais plus haut, un kiosque web qui vous affichera les piafs sur n'importe quel écran.

En tout cas, je ne sais pas pour vous, mais moi, je trouve ça super "chouette" comme élément de décoration.

Le code est sous licence MIT et c'est encore jeune, donc attendez-vous à croiser quelques bugs.

Merci à Lilian pour le partage !

Source : fugleramme sur GitHub

Cloudflare lance son skill d'audit de sécurité par IA

Cloudflare a mis en ligne sur son GitHub un skill trop super génial d'audit de sécurité qui leur a servi de point de départ à leur propre système de chasse aux failles de sécu. Ce package pour faire des audits de sécu boostés à l'agent IA c'est un dossier de consignes en Markdown que vous déposez dans votre agent de code, et qui le fait bosser comme un vrai auditeur et pas simplement comme un "relecteur" de code.

Dans ce dépôt, vous trouverez un fichier par famille d'attaque : la corruption mémoire, l'injection de prompt, le cadrage des requêtes HTTP, l'isolation entre locataires. Et avec ça, un schéma JSON qui décrit à quoi doit ressembler un rapport, et deux validateurs écrits en JavaScript sans la moindre dépendance.

Le dossier du skill sur GitHub : un fichier de consignes par famille d'attaque, et les deux validateurs en bas de liste ( Source )

L'agent déroule ensuite six phases, de la reconnaissance au rapport final. Il commence par cartographier l'architecture, les frontières de confiance et les points d'entrée, puis il écrit sa propre grille de couverture. Ensuite il envoie des chasseurs isolés case par case et chaque piste qui remonte part chez un vérificateur tout frais tout beau qui n'a pas participé à la chasse.

Chaque piste se termine ensuite avec un rapport technique. Un rapport confirmed qui exige une trace source complète et un résultat réellement observé. Un rapport needs_validation qui nomme le fait précis qui manque, et surtout qui n'a droit à aucun niveau de gravité. Et le rapport des rejected qui garde la mémoire de ce qui a été réfuté, pour que la passe suivante ne vous ressorte pas la même chose.

Le validateur, lui, c'est du vrai code qui vérifie la "forme" de la preuve. Les empreintes doivent être uniques, et le suivi du parcours des tests qui doit partir d'un point d'entrée pour finir sur un point d'impact. Ainsi une trouvaille confirmée dont le parcours ne tient pas debout est recalée.

En revanche, sachez-le, l'indépendance du vérificateur est demandée dans les consignes, mais pas contrôlée (chez Cloudflare, c'est leur orchestrateur maison qui s'en charge, et il n'est pas dispo publiquement).

Cloudflare explique sur son site ce que donne un de ces agents lâché sur du code sans garde-fou. Il modifie la source pour que son exploit fonctionne, puis il annonce fièrement le bug qu'il vient de créer lui-même. Ou alors il pond un test qui démontre que exec() exécute des choses, donc que c'est forcément une faille critique... Et ça vous l'aurez compris, c'est de la merde et c'est absolument ce qu'on ne veut pas.

Voilà donc exactement ce que ces consignes cherchent à lui interdire.

Pour l'installer, il vous faut le CLI skills de Vercel Labs :

npx skills add https://github.com/cloudflare/security-audit-skill --skill security-audit

Ensuite, vous lancez votre agent dans le dépôt à auditer et vous lui demandez un audit de sécurité. Le skill se déclenche tout seul et c'est le modèle de votre agent qui pilotera les sous-agents en parallèle (utilisez donc un modèle qui sache faire ça, c'est mieux lool). Par défaut, le rapport atterrit ensuite dans un dossier ~/security-audit-skill, en dehors du dépôt audité.

Ce qui est cool c'est que ce skill est conçu pour limiter les bêtises. Par exemple il refuse d'exécuter le code qu'il audite s'il n'a pas de bac à sable (sandbox) imposé par le système d'exploitation, avec le réseau coupé, la cible en lecture seule et des limites de CPU et de mémoire. Ce bac à sable, le dépôt ne le fournit pas, et c'est à vous de le mettre en place avec par exemple un outil d'isolation comme Fence . Sans lui, la piste de l'audit finira tout bonnement en needs_validation au lieu d'être véritablement suivie et tranchée.

Après, c'est le temps qui fera la différence. Chez Cloudflare, ils ont un gros système qui leur permet, par exemple avec un dépôt d'environ 30 000 lignes de code, de ne passer que 3 à 4 heures sur l'audit pour avoir un résultat correct. Mais chez vous, en local, ce sera beaucoup plus long. Cloudflare prévient aussi qu'une seule passe n'est pas suffisante puisqu'elle trouve à peu près la moitié des failles à chaque fois. Il faudra relancer ça plusieurs fois.

Allez, si vous cherchez également un filet de sécurité pour tout ce qui concerne vos pull requests, sachez qu'Anthropic maintient de son côté un reviewer de sécurité pour Claude Code qui lit le diff et vient commenter directement dessus.

Le dépôt de Security Audit Skill de Cloudflare est sous licence MIT, et il lui faudra Node.js pour faire tourner ses deux validateurs.

En tout cas, ce que je vous conseille, c'est d'aller lire le SKILL.md avant de lancer la première passe, pour vous assurer que tout sera OK au sein de votre harness.

Source : security-audit-skill sur GitHub

La Forge - Le GitLab public des profs codeurs

Je ne sais pas si vous êtes déjà tombé dessus, mais le ministère de l'Éducation nationale fait tourner son propre GitLab depuis un petit moment maintenant, il est public, et il s'appelle La Forge des communs numériques éducatifs . Au moment où j'écris ces lignes, il y a dessus 12 896 projets et 15 638 membres dans ce qu'ils appellent "l'atelier".

Alors c'est quoi cette dinguerie comme disent les anciens ? Hé bien derrière, c'est du GitLab CE, infogéré par le pôle de compétences Logiciels Libres (oui, ça existe, et c'est un vrai service de l'Éducation nationale), et classé dans les services partagés d' apps.education.fr .

Les 595 ressources de la ressourcerie, avec les étiquettes de niveau et de discipline sous chaque fiche

Et le plus beau c'est que pour aller fouiller dedans, vous n'avez besoin de rien du tout puisque les dépôts publics s'ouvrent via le navigateur, sans authentification.

Bien sûr, cette grosse dizaine de milliers de dépôts de code bruts, ça ne se visite pas comme ça. Il y a donc une vitrine, nommée la ressourcerie , qui en met en avant un peu moins de 600, triées par niveau, par discipline et par tag et pour la plupart, testables en ligne.

Par contre, pousser du code est un poil plus encadré. Pour cela, le personnel du ministère doivent avec leur compte Apps, et tous les autres, profs retraités, universitaires, Inria, boîtes de l'EdTech, associations, et j'en passe, passent par un second annuaire avec validation préalable.

Donc non, vous ne pourrez pas y déposer votre side-project éducatif du week-end, mais si votre truc sert vraiment à des profs, la porte n'est pas fermée...

Là-dessus l'Éducation nationale n'est pas toute seule, puisque les Pays-Bas ont également monté leur forge de code , où une cinquantaine d'administrations et de communes publient déjà.

Et l'IA là-dedans ?

Hé bien c'est complètement décomplexée et tant mieux ! Le catalogue a 7 tags officiels rien que pour ça, de "IA chatbot" à "IA prompt" en passant par "IA LLM souverain", et 48 fiches en font partie. Ce n'est donc pas la majorité du catalogue, mais il y a quand même un projet nommé EduVaibe dont le boulot est de "générer, étape par étape, un prompt complet à coller dans une IA pour créer des applications numériques éducatives".

Le truc le plus utile du lot, je trouve, même quand on n'a aucune classe à gérer, c'est ChatMD . Vous forkez le dépôt, vous remplacez le contenu d'index.md par vos propres réponses écrites en Markdown, et votre agent conversationnel bien à vous est ensuite accessible à partir d'une simple URL. Le tout est sous licence MIT bien sûr !

Maintenant derrière une bonne partie de ces dépôts, il y a un prof tout seul qui bricole sur son temps libre, et malheureusement, le jour où il abandonne, le projet s'arrête. Mais la bonne nouvelle c'est que la Forge rétribue chaque année quelques profs pour justement les soutenir dans leurs projet.

C'est maigre à l'échelle d'un ministère, je vous l'accorde, mais c'est quand même mieux que rien. Voilà, en attendant, je vous invite à y faire un tour ! Vous y trouverez peut-être des choses intéressantes.

Merci à Sylvain Bruyère pour le lien !

Suyu tire sa révérence sur un mode de recompilation pour jeux Switch

L'équipe derrière suyu , l'émulateur Nintendo Switch né des cendres de yuzu , a publié le début septembre une dernière version de son logiciel, puis a fermé le dépôt sur un ultime commit intitulé "FINAL". Et cette version d'adieu embarque un truc que j'ai trouvé intéressant. C'est un mode baptisé Recompiler, qui change totalement la façon dont le code du jeu est "traduit".

D'habitude, un émulateur traduit les instructions ARM de la console en instructions x86 au fur et à mesure que le jeu tourne. C'est ce qu'on appelle un JIT. Alors que là, le mode Recompiler fait le boulot à l'avance en prenant le code ARM64 du jeu et en le convertissant en code C.

Le code de suyu ne cache pas d'où vient l'idée, puisqu'il se décrit lui-même comme un moteur produisant du C portable "à la manière de N64Recomp". Grâce à cette technique de recompilation, en bout de la chaîne, vous obtenez un vrai binaire .exe sous Windows, ELF sous Linux, ou Mach-O sous macOS.

Faut savoir qu'un jeu entier, ça fait des millions de blocs de code (oui, des millions !), et réunis dans un seul fichier C, ça pèserait des centaines de mégaoctets. Soit de quoi occuper un compilateur durant des heures avec beaucoup de mémoire consommée et éventuellement un abandon par K-O technique ^^... Alors qu'en le recompilant, on peut profiter de perfs natives sans éclater la machine.

Maintenant la réalité c'est que le programme obtenu grâce à cette recompilation, ne se débrouille pas tout seul. Le JIT n'a pas vraiment disparu, mais se construit à la demande, dès que l'exécution tombe sur une adresse que l'analyse statique n'avait pas repérée (un appel indirect, typiquement). Sans ce filet de sécurité, le jeu se figerait sur un écran noir. Je vois bien comment ça marche parce que c'est ce que j'ai exploré avec mon outil de recompilation Kompote.

Et ensuite, le jeu recompilé continue de passer par la couche d'émulation de suyu pour ses services système et son GPU. Bref, on est encore loin du jeu Switch qui tournerait tout seul sur votre PC, mais je n'ai aucun doute sur le fait que ça arrivera bientôt.

Notez que les binaires téléchargeables datent tous du 4 septembre, alors que les derniers correctifs ont été committés les 12 et 13. Il faudra donc compiler le code pour profiter de cette dernière version.

Quant à savoir pourquoi le projet s'arrête maintenant, l'équipe n'en dit pas un mot mais je sais juste qu'un avis DMCA de Nintendo avait déjà emporté son dépôt principal en juillet 2024, et qu'un nouvel avis du 17 août dernier avait fait tomber d'un coup 307 dépôts dont l'adresse contenait le mot suyu.

Mais rassurez-vous, ça ne veut pas dire que l'émulation Switch s'arrête pour autant puisqu'un fork a repris le code dans la foulée et enchaîne déjà les versions.

Et Eden , le projet dont suyu descend directement, continue tranquillement sa route sur son propre serveur, loin de GitHub, avec une version publiée en juin et un dépôt encore actif à la mi-septembre. C'est donc là qu'il faut regarder si vous cherchez un émulateur Switch encore suivi.

Source : le dépôt archivé de suyu et l'article de Wccftech

OpenDisplay - Étendre l'affichage Mac avec ce que vous avez sous la main

OpenDisplay est un outil open source qui vous permet d'avoir un affichage déportée de macOS sur n'importe lequel de vos appareil Apple dont vous ne faites rien. Et ce n'est pas une recopie basique de votre bureau, mais bien un écran que macOS affichera dans ses réglages d'affichage, et sur lequel vous pourrez faire glisser vos fenêtres comme sur n'importe quel écran externe.

Ce clic autorise une connexion à Google : adresse IP transmise et traceurs possibles. En savoir plus Voir cette vidéo sur YouTube

Alors oui, je saiiiis, Sidecar fait déjà ça, et gratuitement en plus, mais Apple s'est arrêté à l'iPad et les deux appareils (votre iPad + votre ordi) doivent être connectés avec le même compte Apple. Du coup, votre iPhone ou un vieux Mac qui ne sert plus, n'ont jamais été invité à la fête, et les appareils Apple de votre conjoint.e encore moins.

Pour faire fonctionner ça, une seconde application, OpenDisplay Receiver, s'installe dessus et le transforme ainsi en écran. Elle ne réclame que macOS 12 Monterey, ce qui permet à des Macs sortis à partir de 2015 environ de rester dans le game. Le Mac qui envoie l'image, lui, devra être sous macOS 14 minimum.

Côté installation, l'application iPhone et iPad est sur l'App Store, totalement gratuite, à partir d'iOS 16.4. Votre Mac principal, lui, récupère de son côté un DMG signé et notarisé par Apple (ça veut dire que ça s'ouvre au double-clic sans que Gatekeeper vienne râler et ça c'est cool).

Ensuite vous branchez le matos, et comme OpenDisplay passe par usbmuxd qui est un service déjà présent dans votre macOS, il n'y a pas d'outil tiers et pas de tunnel à monter, ça se connecte tout seul. Attention quand même au câble, car il doit transporter des données. Cela veut dire qu'un câble lambda de charge seule ne fonctionnera pas. Et une fois l'écran en place, l'appareil deviendra tactile pour le Mac, donc, vous pourrez faire défiler Korben.info avec vos deux doigts, like a boss !

Par contre, si vous souhaitez utiliser la connexion via le Wi-Fi, sachez qu'il y a un petit bug au niveau du curseur de la souris. Donc, en attendant que ce soit résolu, je vous invite vraiment à passer par le câble. Niveau sécurité, il y a un petit truc à savoir aussi : le flux vidéo qui circule sur le Wi-Fi se fait sans chiffrement.

Alors normalement, chez vous, ça ne devrait pas poser de problème, mais sur un réseau partagé ou public, je vous invite vraiment à brancher le câble USB. Parce que sinon, ça veut dire que n'importe qui pourrait récupérer votre flux d'écran en passant par la même borne Wi-Fi que vous. Un transport chiffré avec appairage des appareils est prévu, il n'est pas encore là.

Dernière chose à savoir avant de vous lancer : l'application Mac s'appuie sur CGVirtualDisplay, une API privée de CoreGraphics, la même que celle de DeskPad dont je vous avais parlé . C'est pour ça qu'elle n'est pas distribuée sur l'App Store, et malheureusement, une mise à jour de macOS peut très bien la casser.

Voilà, si vous avez un iPhone qui prend la poussière ou un vieux MacBook / iMac au fond d'un placard, c'est à tester !

SpruceOS - Le guide pour rhabiller votre console rétro

Si vous avez une petite console rétro portable qui traîne, du genre une Miyoo Mini, une TrimUI Brick, une Anbernic RG35XX , vous avez sans doute remarqué que l'interface livrée avec fait le job mais sans plus. Ça tombe bien, spruceOS est là pour ça ! Et malgré son nom, ce n'est pas vraiment un système d'exploitation. En réalité, il s'agit d'un frontend codé en Python qui vient se poser sur une base système déjà existante. Le code est public, sous une licence Creative Commons donc pour les plus capitalistes d'entre vous, ça veut dire pas d'usage commercial sans permission écrite de l'équipe.

Sur les Miyoo et les TrimUI, la base en question est le système d'origine de la console, celui du fabricant. Sur les Anbernic à puce H700 et sur la Powkiddy RGB30, il faut d'abord installer une base tierce sur la première carte mémoire, genre BaseOS pour les Anbernic, dArkMoss pour la Powkiddy. La carte spruce, elle, ira dans le second emplacement, le TF2, et elle restera librement échangeable d'un appareil supporté à l'autre. Rien de dramatique donc, mais ça fait une étape de plus et une carte en plus.

Ce que vous y gagnez si vous installez spruceOS, c'est surtout du confort au quotidien. Vous maintenez le bouton HOME pendant trois secondes et le Game Switcher vous laisse sauter d'un état de sauvegarde à l'autre sans quitter votre partie. Quand vous éteignez la console en plein jeu, elle sauvegarde même toute seule son état et vous remet exactement là où vous en êtiez au rallumage. Et si votre console a le Wi-Fi, vous ne repassez plus par le PC pour l'habiller puisque l'outil Theme Garden pioche dans plus de quatre-vingts thèmes communautaires dispo en ligne, le Game Nursery télécharge des portages gratuits / homebrew, et un scraper récupère même les jaquettes des jeux depuis la base libretro.

Le menu principal de spruceOS, avec les quatre icônes du thème SPRUCE par défaut

Ce qu'il vous faut avant de commencer

Il vous faut une carte microSD neuve, d'une vraie marque, achetée chez un revendeur sérieux ainsi qu'un bon lecteur de cartes. Et bien sûr un ordinateur sous Windows, macOS ou Linux avec une connexion Internet.

Et surtout, n'utilisez pas la carte livrée avec la console. C'est pas moi qui le dit mais le wiki du projet qui est catégorique là-dessus, en majuscules dans le texte : "DO NOT USE THAT STOCK SD CARD!", parce qu'elle est mauvaise, que les jeux dessus sont mauvais et que les BIOS le sont aussi. Donc gardez-la dans un tiroir, elle vous servira pour revenir en arrière en cas de foirage.

L'installation en un clic

L'équipe a sorti un installeur tout-en-un, qu'elle présente comme entièrement open source, disponible pour Windows, Linux et macOS. Il formate la carte, télécharge la version que vous choisissez et l'installe, en une seule opération. Une seule précaution, et le projet la signale lui-même : vérifiez bien que le lecteur que vous désignez est votre carte, parce que l'installeur écrit sur celui que vous lui montrez. C'est le chemin recommandé, et c'est aussi lui qui règle le cas des Anbernic et de la Powkiddy : BaseOS et dArkMoss ont chacun leur onglet dans l'application et se téléchargent puis s'installent automatiquement, sans que vous ayez à aller chercher une image ailleurs.

Un détail qui coince sur Mac, et qui n'est écrit nulle part ailleurs que dans le dépôt : macOS interdit aux applications d'écrire sur un disque amovible sans permission explicite, et l'installeur passe par le Terminal. Il faut donc aller dans Réglages Système, Confidentialité et sécurité, Accès complet au disque, ajouter Terminal, puis quitter et rouvrir le Terminal. Ce dernier point compte, la permission ne s'applique pas à une session déjà ouverte.

Sur Mac, Terminal doit figurer dans Accès complet au disque pour que l'installeur puisse écrire sur la carte ( Source )

L'installation à la main

Si vous préférez faire ça vous-même, il vous faut un utilitaire de formatage et 7zip. Vous formatez la carte en FAT32, avec Rufus sous Windows ou l'Utilitaire de disque sous macOS en choisissant MS-DOS (FAT32). Vous récupérez l'archive spruce.vX.X.X.7z sur la page des versions du dépôt, vous l'extrayez sur votre ordinateur, puis vous copiez le contenu extrait sur la carte. Vous éjectez proprement, vous insérez la carte dans la console et vous allumez.

Et là, attention au piège, puisque le paquet contient un dossier caché nommé .tmp_update, et sans lui spruce ne fonctionnera tout simplement pas. Donc affichez les fichiers cachés avant de les copier : sur Mac c'est Commande + Majuscule + point, et sur Ubuntu le dossier est masqué par défaut lui aussi. Sur Mac, pensez aussi à nettoyer les fichiers .dot parasites avant d'éjecter la carte. Un utilitaire comme CleanEject fait ça très bien.

Vos jeux et vos BIOS

Les ROMs se rangent ensuite dans un dossier Roms, avec un sous-dossier par machine. La plupart des noms sont évidents, mais certains noms piègent tout le monde comme SFC ou FC. Hé oui, les jeux Super Nintendo vont dans SFC, pour Super Famicom, et pas SNES ; les jeux NES vont dans FC, pour Famicom, et pas NES. Les vidéos et la musique, elles, vont toujours dans MEDIA.

Les BIOS se posent dans un dossier BIOS à la racine de la carte, mais il faut les placer dans le sous-dossier qui va bien par machine et pas tout balancer en vrac. Le BIOS de la Dreamcast veut son sous-dossier, certains sont obligatoires pour que la machine tourne, d'autres pas. Donc je vous invite à vous renseigner en fonction de la machine que vous voulez émuler. Et comme d'hab, le BIOS de la NeoGeo ne va pas dans BIOS mais avec les jeux.

BIOS/dc/dc_boot.bin Dreamcast, obligatoire
BIOS/gba_bios.bin Game Boy Advance, facultatif
Roms/NEOGEO/neogeo.zip NeoGeo, obligatoire, et pas dans BIOS

Et évidemment, le projet ne fournit ni ROMs commerciales ni BIOS et ne vous dira pas où les trouver, donc c'est à vous de voir avec vos propres cartouches et vos propres disques.

Si l'écran reste noir

Maintenant, si c'est tout noir au lancement, vérifiez que le dossier .tmp_update est bien présent sur la carte. Remettez-la dans l'ordinateur, réaffichez les fichiers cachés, et regardez : si vous avez copié sans avoir activé l'affichage, il n'y est pas. L'autre suspect, c'est la carte elle-même. C'est peut-être parce que vous avez acheté une no-name de merde.

Le moment où vous ne pourrez plus revenir en arrière

Tant que vous ne touchez qu'à la carte, vous ne risquez rien de définitif. Sur la famille Anbernic RG35XX, les guides de référence le disent tous : ces firmwares vivent entièrement sur la microSD, et donc on peut passer de l'un à l'autre sans modification permanente de l'appareil. Ailleurs le principe est le même, et pour retrouver votre console en version d'usine il suffit donc de remettre la carte d'origine.

Sauf qu'il y a UNE exception !! spruce embarque un Firmware Updater qui apparaît tout seul dans vos applications si votre console tourne sur un firmware ancien. Celui-là n'écrit pas sur la carte mais dans la mémoire interne de la machine, et le wiki prévient sans détour : "Failure to follow the firmware updating instructions can lead to a bricked device.". En gros si vous le lancez pour faire la mise à jour du firmware, ça peut bricker votre console, donc pensez bien à la brancher sur le courant avant la mise à jour. Le projet documente d'ailleurs deux procédures de débriquage, dont une qui demande carrément d'ouvrir la Miyoo Flip et de débrancher sa batterie, ce qui vous dit assez bien à quel point on a quitté le terrain du réversible...

Et si spruceOS ne vous convient pas, vous ne serez pas coincé pour autant car sur ce même matériel, le guide de référence de Retro Game Corps recommande aussi Knulli pour son interface EmulationStation, ou encore muOS pour la performance d'émulation la plus avancée, à condition que le bricolage de configs customs ne vous rebute pas. Après voilà, chaque "OS" a sa carte et vous changez d'avis quand vous voulez.

Source : spruceOS sur GitHub , le wiki du projet et le site officiel

CanoFlash - Du Wi-Fi sur votre GBA (mais pas pour jouer, snif)

Un développeur espagnol, Emilio Cano Pérez, vient de publier le SDK de son CanoFlash, un petit boîtier monté sur un XIAO ESP32-S3 qui se branche sur le port Link d'une Game Boy Advance. Cela ne nécessite aucune modification de la console, ni de fer à souder (cool !), et une fois branché, ça permet à la console de récupérer la connexion Wi-Fi qu'elle n'a jamais eue !

Alors comment ça fonctionne ? Hé bien le truc démarre en mode Multiboot et pousse sa propre application dans la RAM de la console. Ensuite c'est lui qui se coltine la gestion de tout le réseau, pendant que la GBA se contente d'échanger avec lui des paquets de taille fixe. En clair, un jeu n'a pas à connaître l'existence du Wi-Fi. Il parle juste au boîtier à travers le SDK dispo sur GitHub, qui lui apporte le matchmaking public, les salons privés et des parties jusqu'à huit joueurs.

Ce clic autorise une connexion à Google : adresse IP transmise et traceurs possibles. En savoir plus Voir cette vidéo sur YouTube

Sauf qu'avant de sortir votre Game Boy du tiroir, il faut lire la FAQ du créateur parce qu'il y écrit que le jeu en ligne fonctionnera uniquement dans les jeux qui intègrent son SDK, et qu'il ne transforme pas automatiquement le multijoueur Link des jeux existants en multijoueur Internet. Roooh, c'est dommage quand même. Ça veut donc dire que votre cartouche collante de Pokémon Rubis ne fonctionnera pas via le Wi-Fi... Pour jouer, il vous faudra donc des homebrews compilés avec le kit, plus un boîtier et une console par joueur.

Maintenant, si c'est vraiment vos vieilles cartouches que vous voulez faire jouer à distance, l'appareil qui fait ça, c'est le GB-Link USB dont je vous ai parlé en juin . Lui se fait passer pour un câble Link, se relie en USB-C à un ordinateur ou à un smartphone Android, et un client web différent parle le protocole de chaque jeu : les échanges Pokémon des trois premières générations, les parties d'Advance Wars. Dans le même genre, ChisLink est un projet à monter soi-même dont le relais transporte les paquets des jeux compatibles avec l'adaptateur sans fil de Nintendo.

Cette limite du CanoFlash n'est d'ailleurs pas une bizarrerie de conception, parce que l'adaptateur sans fil sorti par Nintendo en 2004, c'était exactement pareil. Il était fonctionnel avec seulement à 46 jeux compatibles, tous sortis entre 2004 et 2006. Ça ne remplaçait pas non plus le câble Link.

Du coup, le CanoFlash, son vrai métier, c'est surtout de vous permettre de parcourir vos homebrews et vos sauvegardes personnelles via Wi-Fi, de flasher le jeu de votre choix sur votre cartouche réinscriptible et de synchroniser les sauvegardes, le tout sans PC.

Par contre, cette cartouche réinscriptible compatible dont je vous parle, à base de S29GL256, elle est indispensable et elle n'est ni incluse ni vendue dans la campagne Kickstarter CanoFlash. Même chose pour la batterie, même si le boîtier accepte de tourner sur USB-C. Donc comptez le prix de la cartouche en plus avant de vous emballer, et sachez aussi que la campagne Kickstarter n'est toujours pas lancée à l'heure où j'écris ces lignes.

Le SDK, lui, est déjà là , et il se compile sans avoir le moindre boîtier sous la main. Bref, de quoi préparer votre jeu tranquillement en attendant que le matériel existe...

Source : XDA Developers

Trynix - Testez des classiques Linux sans rien installer

Vous voulez vérifier un truc dans une vieille version de Python, du genre celle de 2017, histoire de voir si le bug que vous traquez vient de là. Normalement ça veut dire chercher une image Docker ou un vieux binaire de python, pour faire vos tests. Mais avec trynix, vous cliquez un lien et hop, vous avez un shell avec votre outil.

Ce site est signé Farid Zakaria, qui bricole autour de Nix depuis des années et appelle ça son "magnum opus". En gros, une machine Linux x86_64 démarre dans votre onglet, avec le paquet demandé déjà accessible dans le PATH. Rien à installer et pas de compte à se créer, ça marche direct dans le browser.

J'ai essayé ce matin avec python3 en version 3.6.2 . Le navigateur va chercher les chemins du store, vérifie leurs signatures, et au bout d'une trentaine de secondes le prompt s'affiche. Je tape alors python3 --version, il me répond Python 3.6.2, avec la glibc 2.25 et l'OpenSSL 1.0.2l de l'époque livré avec. Et voilà comment je me retrouve avec un Python de 2017 dans un Chrome de 2026, sans rien toucher à ma machine.

Le terminal de la machine virtuelle, dans l'onglet : Python 3.6.2 répond, et les seize chemins du store sont vérifiés juste au-dessus.

Et ce ne sont pas trois démos préparées à l'avance puisque l'index recense les 310 000 et quelques versions que nixpkgs a livrées en treize ans. Toutes ne démarrent pas, attention, il n'y en a que 274 729 avec un binaire x86_64 dans le cache, et le reste est non libre, cassé, ou hors du lot.

Ce qui rend la chose possible, c'est en fait une simple ligne d'en-tête HTTP. Le cache binaire de Nix sert un access-control-allow-origin: *, donc votre navigateur a le droit d'aller y piocher tout seul. Et le plus drôle, c'est que Zakaria avait lui-même réclamé cet en-tête en 2021, pour un tout autre projet. Et 5 ans plus tard, il s'en sert pour démarrer des machines virtuelles... Qui aurait pu prédire comme dirait l'autre !

Pour l'émulation, après il n'a rien réinventé. Il a tout simplement repris prend qemu-wasm , le QEMU compilé en WebAssembly de ktock, et la machine virtuelle ne boote même pas vraiment, mais reprend un instantané figé à l'avance. En tout cas, c'est bien pensé et très pratique.

Du Linux dans un navigateur, je vous avais d'ailleurs déjà montré ça ici avec cette machine virtuelle x86 . Sauf que ces trucs-là chargent une image figée à l'avance, alors qu'ici, on choisit vraiment son contenu en 1 clic.

Niveau vitesse, le projet annonce un lancement en 3 secondes, mais c'est le temps d'obtenir le shell quand tout est déjà dans le cache du navigateur. Chez moi, lors de mes tests, au premier passage, il a fallu 30 secondes, puis 7,5 secondes au suivant. Et une fois dedans ça reste poussif, parce que chaque binaire est traduit du x86 vers le WebAssembly à son premier lancement, ce qui peut faire monter le chargement à deux minutes sur les gros binaires.

Et il y a aussi un plafond puisque tout doit tenir dans la mémoire de l'onglet, soit environ 1,5 Go. Et c'est une console série, donc vous ne pourrez rien lancer de graphique, pas de fenêtre, pas de souris... Bref, que les outils en ligne de commande et rien d'autre ! Mais bon, vous êtes de vrais barbus qui n'ont peur de rien à part du déo, donc je ne suis pas inquiet ^^.

Ce qui est vraiment cool avec Trynix surtout, c'est l'action GitHub que son dev a sortie dans la foulée. Si votre intégration continue pousse déjà ses compilations dans un cache, un bot colle un lien sous la pull request et le relecteur lance le code au lieu de le lire. Comme ça, fini le clone, la compilation et le "*ça marche chez moi pourtant *" invérifiable. Même topo pour faire essayer un truc à quelqu'un qui n'a ni Nix ni Docker... Suffit de lui envoyer le lien.

Un petit point sécu quand même que je tiens à vous signaler : L'URL transporte à la fois les caches supplémentaires et les clés qui les valident, du coup la signature vous prouve bien que le binaire vient du cache annoncé... mais pas qu'il vient de quelqu'un de fiable. En effet, cliquer sur un lien trynix inconnu, ça revient à lancer le programme d'un inconnu, et même si ça se passe dans la sandbox de l'onglet du navigateur (ce qui limite les dégâts), c'est quand même mieux d'en avoir conscience !

Bref, voilà encore un chouette projet sous licence MIT et si ça vous chauffe, ça se passe sur trynix.dev .

Source : Simon Willison

Pluton - Le backup chiffré qui se pilote depuis le navigateur

Restic chiffre bien vos sauvegardes, rclone sait parler à 70 services de stockage, mais connecter les deux ensemble demande d'écrire des scripts et surtout de les surveiller. Eh bien bonne nouvelle, Pluton est l'interface web qui fait ce travail à votre place.

Vous y décrivez un plan de sauvegarde via un formulaire, avec une source, une destination, une fréquence, une politique de rétention, et Pluton fabrique les commandes restic derrière. Les sauvegardes restent ainsi incrémentielles et chiffrées avant l'envoi. La destination peut être un disque local, un bucket S3, un Backblaze B2 ou un Google Drive, et le même plan peut se répliquer vers plusieurs stockages pour respecter la fameuse règle 3-2-1.

L'installer

Je vous ai préparé un petit kit IA pour ceux qui ne jurent que par leur agent :

Un dossier, deux fichiers, et c'est parti. Le docker-compose.yml d'abord, dans lequel vous montez ce que vous voulez sauvegarder en lecture seule et le dossier qui recevra les sauvegardes en écriture. Si vous êtes sur Mac, lisez l'avertissement plus bas avant de monter quoi que ce soit, car ce montage-là m'a joué un tour :

services:
 pluton:
 image: plutonhq/pluton:latest
 container_name: pluton
 restart: unless-stopped
 ports:
 - "5173:5173"
 volumes:
 - pluton-data:/data
 - ./mes-documents:/mnt/documents:ro
 - ./mes-sauvegardes:/mnt/backups
 environment:
 ENCRYPTION_KEY: ${ENCRYPTION_KEY}
 USER_NAME: ${USER_NAME}
 USER_PASSWORD: ${USER_PASSWORD}
 NODE_ENV: production
 IS_DOCKER: "true"

volumes:
 pluton-data:

Puis le .env à côté, avec vos trois secrets. Générez-les, ne les inventez pas :

printf 'ENCRYPTION_KEY=%s\nUSER_NAME=korben\nUSER_PASSWORD=%s\n' \
 "$(openssl rand -hex 16)" "$(openssl rand -hex 10)" > .env

Par contre, attention à cette ENCRYPTION_KEY, c'est le point à ne pas rater. Le compose officiel la documente comme la clé de chiffrement des snapshots restic et rclone, et c'est bien ça. Il s'agit du mot de passe de vos dépôts, c'est la même clé pour tous vos plans. Et donc la perdre, c'est perdre vos sauvegardes, et la changer rendra illisible tout ce qui a déjà été écrit. Bref, copiez-la dans votre gestionnaire de mots de passe avant d'aller plus loin, parce que le jour où vous en aurez besoin, personne ne pourra vous la redonner.

Puis faites un :

docker compose up -d

L'interface répond alors sur le port 5173 et vous demande directement les identifiants du .env. Pas d'assistant de première configuration, pas de compte à créer... en fait quand les variables sont bien configurées, Pluton s'installe tout seul au démarrage. Chez moi, entre le up -d et l'écran de connexion, il s'est donc passé moins d'une minute.

Créer le premier plan de backup

Le bouton "+ New" de l'interface ouvre un assistant en quatre écrans. Vous nommez le plan, vous gardez la stratégie "Incremental Backup" (les trois autres sont grisées, elles appartiennent à l'offre Pro), vous pointez /mnt/documents comme source et /mnt/backups comme destination, puis vous réglez la fréquence et la rétention. Le dernier écran laisse le chiffrement et la compression activés et propose de lancer la sauvegarde tout de suite, ce que j'ai fait.

Chez moi, trois fichiers de test de quelques octets sont partis en quelques secondes. Et c'est là qu'il faut regarder la bonne chose pour vérifier que ça fonctionne... Non, c'est pas la pastille verte, mais plutôt le nombre de fichiers et leur taille.

Le plan Documents juste après sa première sauvegarde.

En fait, si je vous dis ça, c'est parce que sur mon Mac, avec Docker Desktop, restic n'arrivait pas à lire les dossiers montés depuis l'hôte, et sort en erreur d'entrée/sortie sur chaque fichier. Et pourtant, Pluton affichait quand même la sauvegarde en vert avec le statut "Complete". Les colonnes disaient bien 0 fichier et 0 octet, mais le statut, lui, semblait correct... Donc si vous êtes sur Mac, prenez plutôt l'installeur de bureau, qui existe aussi pour Windows et Linux, et dans tous les cas vérifiez que les chiffres sont OK après votre première sauvegarde.

Vérifier et répéter une restauration

Votre dossier de destination contient maintenant un config, un data/, un index/, un keys/ et un snapshots/, tous illisibles en clair. C'est un dépôt restic standard, et ça se vérifie sans Pluton, avec le binaire embarqué dans le conteneur :

docker exec -e RESTIC_PASSWORD=votre_cle -e RESTIC_REPOSITORY=/mnt/backups \
 pluton restic snapshots

Vous obtenez la liste de vos snapshots avec leur taille, et avec une mauvaise clé, restic répondra "wrong password or no key found" et s'arrêtera là. Faites les deux essais car ça prouve en une fois que le chiffrement travaille, et que vos données restent récupérables même si Pluton disparaît demain.

Le menu d'une sauvegarde propose ensuite "Browse", qui ouvre le snapshot comme un explorateur de fichiers, avec la taille de chacun et un bouton pour le télécharger ou le restaurer seul.

Le contenu du snapshot, fichier par fichier, avec le téléchargement et la restauration à droite de chaque ligne

Et le "Restore" lancera un assistant qui vaut le détour puisqu'il sait restaurer vers un chemin différent de l'original. Il vous laisse choisir quoi faire des fichiers déjà présents, et surtout il génère un aperçu en dry run (à blanc quoi...) avant de toucher au disque. J'ai restauré mes trois fichiers vers un dossier séparé, puis comparé avec les originaux, et c'était identique. Faites-le une fois, tranquillement, pendant que vous n'en avez pas besoin.

Voilà, tout ça, c'est la version gratuite, pour la machine où elle tourne. Maintenant, si vous voulez piloter les sauvegardes de plusieurs machines depuis la même interface, ça passera par l'offre Pro à 59 dollars par an. Si vous voulez comparer avec un autre truc, sachez aussi que Zerobyte joue dans la même cour.

Amusez-vous bien !

Source : Pluton

ReProgman - L'interface de Windows 3.1 sur PC et Mac

Le développeur Mayuki Sawatari vient de publier ReProgman , un clone du Program Manager de Windows 3.1.

Ça ne vous dit rien ? C'est parce que vous êtes des bébés !

En fait, progman.exe, c'est ce truc qui servait d'interface principale à Windows avant que le menu Démarrer ne débarque avec Windows 95. Et aujourd'hui, grâce au taf de Sawatari, ça tourne aussi bien sur Windows 11 que sur macOS.

Pour ceux qui ont commencé l'informatique après 1995, faut savoir qu'avant ça, on n'avait pas de bureau, pas de barre des tâches, mais juste une grande fenêtre grise remplie de sous-fenêtres, et dans chaque sous-fenêtre y'avait des icônes de programmes alignées sur une grille. Vous double-cliquiez sur l'une d'elles, le programme se lançait, et voilà, vous aviez fait le tour de Windows !

Le groupe Main ouvert sur Windows 11, et la rangée de groupes réduits en bas de la fenêtre

Regardez bien les icônes sur cette capture : Docker, Edge et Claude rangés dans une ambiance de 1992...

Car ReProgman ne se contente pas de reproduire la déco. Au premier lancement, il scanne votre menu Démarrer (ou vos dossiers Applications si vous êtes sur Mac), transforme chaque dossier en groupe et range le tout dans son propre fichier Groups.ini. Après ça, il n'y retourne plus tout seul, et ce que vous déplacez, renommez ou supprimez dedans ne redescend jamais vers vos vrais raccourcis. Un menu permet quand même de relancer l'import à la main, et il n'ajoute alors que ce qui manque.

Du coup, vous récupérez les gestes de l'époque pour de vrai. Vous attrapez une icône, vous la lâchez dans une autre fenêtre et elle déménage, avec Ctrl enfoncé elle se copie, le menu Window vous range tout ça en cascade ou en mosaïque, et les fenêtres réduites redeviennent des icônes alignées en bas de la fenêtre principale. Même la boîte de dialogue de sortie a été refaite, à ceci près qu'elle annonce la fin de votre session ReProgman et non celle de Windows.

Maintenant, d'où ça sort comme délire ?

Hé bien, l'auteur raconte, dans un message relayé par Tom's Hardware, qu'il a simplement demandé à Claude de lui fabriquer ce clone, et que la première version obtenue en une heure était déjà plutôt correcte, même s'il a ensuite fallu rattraper les imperfections.

Ce qui est intéressant, c'est que dans son dépôt git, on trouve un document de spécification de plusieurs centaines de lignes qui décrit l'interface au pixel près, relevée sur des captures 640x480 du Windows original. Le cadre d'une fenêtre y fait 1 pixel noir, 2 pixels gris et encore 1 pixel noir, et la petite barre du menu système mesure 13 pixels sur la fenêtre principale contre 7 sur une fenêtre enfant. C'est d'ailleurs comme ça qu'on les distinguait à l'époque.... Fallait avoir l'oeil !

Si vous voulez l'essayer, ça se présente sous la forme d'un binaire autonome. Par contre sur Mac, la version distribuée n'est pas notarisée, il faudra donc lui passer un xattr -cr ReProgman.app ou utiliser Sentinel avant qu'elle accepte de démarrer. Ah et le code est sous licence MIT.

Le périmètre annoncé par le projet est d'ailleurs plus étroit qu'il en a l'air, puisque c'est Windows 11 en x64 et en Arm, et macOS uniquement sur Apple Silicon. Donc si vous êtes resté sur Windows 10 parce que vous aimez le risque ou sur un Mac Intel parce que vous aimez prendre votre temps, il n'y a rien pour vous amuser... Il faudra alors retourner du côté de ce musée de vieux systèmes d'exploitation que je vous avais montré, qui lui passe par l'émulation.

Après, je pense pas que vous y ferez votre vie mais ça vous donnera environ 30 secondes de nostalgie avant de refermer la fenêtre. C'est déjà ça de pris...

Source : Tom's Hardware

❌