Vue lecture

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

ip66.dev - Une base de géoloc IP libre et compatible MaxMind

Hello les amis, voici ma petite trouvaille du jour, idéale pour ceux qui jouent en ce moment avec des adresses IP : ip66.dev . C'est une base de géolocalisation IP et entièrement libre, livrée au format MMDB (le même que celui de MaxMind) qui permet de remplacer direct un fichier GeoLite2 dans vos libs existantes (Python, Go, Node.js), sans toucher au code.

L'équipe de Cloud 66 maintient cette liste à jour sous licence CC BY 4.0 et tout est utilisable simplement en récupérant le fichier mmdb.

Pour le télécharger :

curl -LO https://downloads.ip66.dev/db/ip66.mmdb

Ensuite pour interroger une IP, l'outil mmdbinspect de MaxMind fera le job. Si vous l'avez pas déjà, une ligne suffit :

go install github.com/maxmind/mmdbinspect/cmd/mmdbinspect@latest
mmdbinspect -db ip66.mmdb 8.8.8.8

À l'intérieur de la réponse, vous trouverez le numéro et le nom de l'ASN, le pays avec son code ISO, le continent, en IPv4 et IPv6 :

Au lieu de moudre des heuristiques opaques, ip66 préfère tout simplement agréger des sources à partir des 5 registres régionaux (AFRINIC, APNIC, ARIN, LACNIC, RIPE NCC) pour les allocations, le BGP via RouteViews et RIPE RIS pour les vues publiques d'annonces, le RFC 8805 geofeed quand les opérateurs déclarent eux-mêmes leurs localisations, sans oublier GeoNames pour tout ce qui concerne les libellés.

Du coup chaque enregistrement dispose de son propre un niveau de confiance (Very High, High, Medium, Low) selon la qualité de la source. Y'a même des marqueurs pour identifier les IPs VPN / Tor et compagnie.

Notez par contre, que c'est du country-level, et pas du city-level comme GeoIP2 City ou IPinfo Core, mais pour enrichir des logs, sortir des stats par pays ou bloquer un continent entier, c'est largement suffisant !

Et si vous voulez l'exposer en API plutôt que la requêter en local, ça se branche nickel sur le mmdb-server , un petit serveur Python qui sert les fichiers MMDB en HTTP. Vous lui pointez ip66.mmdb dans son dossier db/ et hop, c'est plié !

Bref, un fichier mmdb à DL, et votre serveur sait maintenant que 8.8.8.8 c'est l'oncle Google.

KULA - Le monitoring serveur Linux qui tient dans un seul binaire

Ouais, je sais, on est le 1er mai, et je suis pas censé bosser mais que voulez-vous on ne se refait pas ^^. Et si j'ai ouvert l'ordi ce matin, c'est pour vous parler de KULA !

KULA est un binaire tout simple qui permet de monitorer très facilement votre serveur Linux en temps réel, sans aucune dépendance. c0m4r , le dev derrière le projet, l'a codé en Go avec une obsession claire : Que ça marche partout sans rien installer à côté !

C'est vrai que les outils de monitoring temps réel sur Linux ont tendance à grossir avec le temps. Netdata est passé par exemple d'un script léger à une plateforme SaaS.

KULA veut faire exactement l'inverse ! Parce que si vous avez un VPS à 5 balles, un Raspberry Pi ou trois homelabs qui ronronnent dans le placard, c'est pas la peine de sortir un bazooka quand il y a ce petit binaire qui fait tout aussi bien.

Vous le posez sur la machine, vous lancez ./kula, et c'est plié ! Il y a même un installeur guidé en une commande (nia nia nia lisez le contenu du .sh avant de le lancer, nia nia nia, je me répète, je sais):

bash -c "$(curl -fsSL https://raw.githubusercontent.com/c0m4r/kula/refs/heads/main/addons/install.sh)"

Côté technique, le projet va chercher ses infos directement dans /proc et /sys toutes les secondes. Comme ça y'a pas besoin d'un programme "agent" séparé à installer, ni besoin de vous lancer dans du scraping HTTP. C'est juste KULA qui tourne en daemon et qui lit ce qui se passe au niveau du kernel.

Les données passent ensuite dans un moteur de stockage maison : un ring-buffer avec trois niveaux (1 seconde brut, 1 minute agrégé, 5 minutes agrégé), chacun ayant une taille max fixe (250 Mo, 150 Mo, 50 Mo par défaut). Et quand la limite est atteinte, les nouvelles données écrasent les vieilles. Comme ça l'usage disque est maîtrisé, et y'a pas besoin de faire de ménage.

Niveau métriques, c'est plutôt complet je trouve... CPU, GPU (VRAM, charge, conso), mémoire, swap, load average, processus par état, températures CPU/GPU/disque, batteries, entropie système, sync horloge. Le réseau remonte les débits par interface, les paquets par seconde, les erreurs, les drops, les retransmissions TCP, les connexions établies...etc.

Et côté disque c'est par composant : IOPS, lectures/écritures par seconde, octets/s, plus l'usage des systèmes de fichiers. Et bien sûr tout ce qui est containers Docker, podman, et même ces cgroups bruts dont vous êtes si fiers ^^, pour ceux qui font tourner des trucs sans Docker.

Et le truc auquel je ne m'attendais pas mais que j'aurais pu anticiper parce que c'est à la modeuuuuh, c'est l'assistant IA via Ollama. Vous configurez une instance Ollama locale, et le dashboard vous laisse causer à un modèle de votre choix qui peut analyser les courbes en cours, exporter du CSV par graphique, et même faire appel à une fonction get_metrics pour interroger les données en mode agent.

Tout ça en local bien sûr. C'est plutôt sympa pour debugger par exemple un pic de CPU récurrent à 3h du matin sans devoir vous taper des heures de graphes !

Le déploiement Docker c'est comme ça :

docker run -d --name kula --pid host --network host
 -v /proc:/proc:ro -v kula_data:/app/data c0m4r/kula:latest

Notez le paramètre --pid host et /proc:/proc:ro : car KULA a besoin de voir l'hôte et pas le container.

Bah ouais, c'est logique, sinon il va monitorer juste son propre container, ce qui n'a aucun intérêt, hein...

Notez que si vous êtes sur un VPS LXC mutualisé bas de gamme, certains hébergeurs restreignent l'accès à /proc du host... et là, malheureusement, KULA ne pourra remonter que ce qu'il voit ce qui est souvent pas grand-chose... sniiif.

Pour les puristes, y'a aussi des paquets .deb, .rpm, AUR pour Arch, et du multi-arch (amd64, ARM, RISC-V). Ça couvre à peu près tout ce qui se croise sur un homelab !

Et côté auth, c'est désactivé par défaut (le port par défaut est le 27960, pas le 80), mais quand vous l'activerez vous tomberez sur de l'Argon2id avec des jetons de session hashés en base.

Par contre, même si y'a quelques alertes internes (clock sync, low entropy, overload), vous n'aurez pas de notifications natives (pas de mail, ni Slack, ni webhook...etc). Et pas de support multi-node non plus puisque KULA monitore une machine à la fois.

Donc si vous avez 30 serveurs, faudra vous farcir 30 instances et 30 dashboards séparés. Pas glop ! Et bien sûr, c'est Linux only parce que tout repose sur /proc et /sys.

C'est encore un projet un peu jeune, donc à voir comment ça vieillit mais pour votre petit VPS perso d'amour ou une machine dans un setup d'auto-hébergement , c'est top pour esquiver à la fois htop qui est trop minimaliste et Grafana qui est trop usine à gaz.

Si vous voulez voir la démo, y'en a une ici : demo.kula.ovh !

Source

Kavita, la bibliothèque auto-hébergée pour vos ebooks, comics et manga

Depuis qu'Amazon a coupé le téléchargement USB de nos ebooks Kindle (sniiiif), héberger sa propre bibliothèque est passé du statut de bricolage du dimanche aprem au geste héroïque de préservation de notre souveraineté !

Alors si vous voulez vous lancer, sachez que Kavita , le serveur de lecture auto-hébergé développé depuis 2020, est l'un des candidats les plus solides du moment. C'est un lecteur web qui gère EPUB, PDF, comics CBZ/CBR et manga avec mode de lecture droite-à-gauche pour les aficionados et grâce lui, nos ebooks peuvent reprendre leur indépendance.

Ce truc, ça se déploie en Docker ou via Scoop pour Windows en 4 lignes de PowerShell.

De mon côté, j'ai installé Kavita sur mon NAS Synology alors voici la marche à suivre si vous voulez faire pareil.

Installation sur NAS Synology (Container Manager)

Testé sur DSM 7.2 avec Container Manager. Pour QNAP via Container Station ou TrueNAS, la logique est la même puisque c'est du Docker standard.

Étape 1 - Préparer les dossiers

Sur votre NAS, créez deux dossiers via Panneau de configuration > Dossier partagé :

  • docker/kavita/config pour la config et la base SQLite de Kavita
  • data/library/books pour votre bibliothèque (pointez où vous stockez déjà vos EPUB et CBZ)

Étape 2 - Le docker-compose.yml

Ouvrez ensuite Container Manager > Projet > Créer, donnez-lui le nom kavita, et collez ce docker-compose :

services:
 kavita:
 image: jvmilazz0/kavita:latest
 container_name: kavita
 restart: unless-stopped
 ports:
 - "5000:5000"
 environment:
 - TZ=Europe/Paris
 volumes:
 - /volume1/docker/kavita/config:/kavita/config
 - /volume1/data/library/books:/manga

L'image jvmilazz0/kavita:latest est celle référencée dans la doc officielle. Côté container, les chemins sont /kavita/config et /manga (peu importe que ce soit du manga ou des romans, c'est juste le nom historique du point de montage).

Étape 3 - Lancer le conteneur

Validez le projet. L'image se télécharge (environ 200 Mo), puis le conteneur démarre. Si le port 5000 est déjà pris sur votre NAS, changez le mapping en 5001:5000 par exemple.

Étape 4 - Premier lancement

Dans votre navigateur, allez sur http://IP-DU-NAS:5000. L'écran d'accueil vous demande alors de vous créer un compte admin.

Validez, puis allez dans les préférences pour passer l'interface en français et rafraichissez la page.

Ensuite, dans les paramètres du serveur > Bibliothèques, ajoutez une bibliothèque : Type "Livre" pour les EPUB/PDF ou "Manga"/"Comic" selon le contenu, le choix du dossier pointant vers /manga. Le scan démarre automatiquement.

Étape 5 - Organisation des dossiers

Attention, Kavita est sensible à la structure des dossiers donc pour qu'il identifie correctement les séries, organisez vos dossiers comme ça :

/manga
├── Asterix/
│ ├── Asterix - Tome 01.cbz
│ └── Asterix - Tome 02.cbz
├── Stephen King/
│ ├── Ça.epub
│ └── Shining.epub

Un sous-dossier par série ou par auteur, pas tout en vrac dans un dossier unique.

Étape 6 - Accès distant (optionnel)

Maintenant, pour accéder à Kavita depuis l'extérieur, le plus propre c'est un reverse proxy avec HTTPS. Sur Synology, soit via DSM > Portail web > Proxy inversé, soit via Nginx Proxy Manager . Pointez votre sous-domaine sur IP-NAS:5000 et activez Let's Encrypt.

Ou alors, moi ce que j'aime bien faire aussi, c'est rien du tout et passer par Tailscale !

Côté fonctionnalités

Côté ergonomie, franchement ils n'ont pas chômé puisqu'on y retrouve le lecteur intégré avec modes single page, double page, webtoon ou même mode immersif plein écran. Des thèmes light, dark, sepia, + un mode personnalisé en CSS si vous voulez.

Y'a aussi de la synchro de progression de lecture entre tous vos appareils, du coup vous pouvez commencer un chapitre sur le laptop pendant votre pause café et le finir sur le téléphone dans le métro. C'est appréciable au quotidien.

Y'a aussi de la gestion multi-utilisateur avec authentification OIDC pour ceux qui aiment faire les choses bien (et ratings + listes individuels par compte, donc votre meilleur pote peut lire ses romans de Tom Clancy à côté de votre collection de docs techniques sans qu'on les mélange).

Il y a également une surveillance automatique des dossiers pour tout ce qui est import auto et de la recherche full-text avec filtres par métadonnées (titre, auteur, série, genre, langue).

Et si vous avez des enfants, il est possible de mettre en place des restrictions par classification d'âge pour éviter qu'ils ne fouillent dans vos comics de Manara. Et le clou du spectacle spécial barbu, c'est l'export d'annotations vers Obsidian via le plugin officiel pour les nerds du second cerveau.

Kavita propose même une fonction "Send to Kindle" pour balancer un EPUB vers votre liseuse Amazon. Sur Windows, vous pouvez aussi le transformer en service système avec Shawl pour qu'il démarre tout seul au boot, et côté Linux, un docker-compose suffira largement.

Voilà, dans cette jungle bordélique des outils ebooks auto-hébergeables, Kavita se positionne comme une option moderne et stable. Je préfère Kavita à Calibre car l'interface web est carrément plus moderne et hyper fluide à l'usage.

Vous l'aurez compris, côté concurrence, Kavita est historiquement plus orientée mixte ebooks-comics que Komga (qui supporte aussi les EPUB et PDF mais reste très ancré culture comics). Alors si vous hésitez entre les outils du moment, mon tour d'horizon des outils ebooks self-hosted devrait vous éclairer (avec notamment le drame Booklore !!).

Ah et y'a aussi Kavita+, la version premium à 4 $ par mois (2 $ le premier mois avec le code FIRSTTIME) qui ajoutera la sync AniList, des recommandations personnalisées, des collections intelligentes et l'enrichissement de métadonnées automatique. Après, perso, pour un usage classique, je trouve que la version gratuite fait déjà largement le job, mais si vous gérez +50 000 fichiers et que vous voulez pas passer la soirée à taguer des séries entières, là ça peut carrément valoir le coup.

Source

Slim - HTTPS local et tunnels publics, tout en un

Monter un serveur HTTPS local pour bosser sur du Next.js ou du Vite, ça reste étrangement chiant. Faut mkcert pour générer les certifs, faut éditer le /etc/hosts à la mimine, installer caddy ou nginx en reverse proxy par-dessus... bref, vous voyez le diiiiliiiire ! Heureusement, Kamran Ahmed , le mec derrière roadmap.sh, vient de balancer Slim , un binaire Go standalone qui fait tout ça d'un coup.

Et tant qu'à faire, il rajoute aussi des tunnels publics à la ngrok au cas où vous voudriez présenter votre travail de dev payé au lance pierre, à un client pressé.

L'idée c'est donc de taper : slim start myapp --port 3000 et hop, votre app tourne OKLM en local sur le port 3000 et devient accessible via https://myapp.test avec un certif totalement valide reconnu à 100% par votre navigateur.

Ça permet d'esquiver tout config manuelle, puisque le binaire crée une autorité de certification locale (CA) dès le premier lancement, signe ensuite les certifs par domaine, et met à jour /etc/hosts tout seul, sans oublier de rediriger les ports 80/443 sur 10080/10443 sans même avoir besoin de root.

Et cette CA est ajoutée au trousseau du système, donc votre Chrome, Safari ou Firefox (ze best !!) la considèrent immédiatement comme légitime, sans alerte de sécurité. Du tout-en-un comme je l'aime quoi !

L'install se fait en une ligne (pensez à regarder comme d'hab le contenu du fichier .sh avant de le lancer, je ne le répéterais jamais assez) :

curl -sL https://slim.sh/install.sh | sh

Ensuite, pour les domaines, vous avez le choix entre .test (par défaut), .loc ou .dev. Notez que Kamran a explicitement banni le .local parce que ce TLD est réservé à mDNS et que ça fout en l'air toute la résolution DNS sur macOS et Linux. Ouf !

Le routing par chemin est aussi de la partie. Si vous bossez sur une app Next.js qui tourne sur le port 3000 et une API séparée sur le 8080, vous pouvez tout router en 1 seule commande :

slim start myapp --port 3000 --route /api=8080 --route /ws=9000

Tout tape alors sur https://myapp.test, et c'est slim qui fait le découpage. Et si vous avez plusieurs services à orchestrer, un fichier .slim.yaml à la racine du projet permet de tout déclarer d'un coup et de lancer le bouzin avec slim up.

WebSocket et HMR sont également gérés nativement, donc ça marche direct avec Vite et Next.

Maintenant, l'autre moitié de l'outil c'est slim share --port 3000 --subdomain demo qui vous délivre une URL publique sur slim.show pour exposer votre localhost sur le net. Vous pouvez ainsi ajouter un mot de passe, un TTL d'expiration, voir les logs en direct... bref, c'est du ngrok-like classique mais déjà inclus dans le même binaire ce qui évite d'aller vous créer un compte séparé. Suffit de lancer un slim login pour activer le partage public.

Alors Slim c'est cool mais y'a pas de support Windows officiel pour l'instant... ce sera donc macOS ou Linux uniquement.

Et si vous êtes sur des stacks où vous avez déjà investi dans Tunnelto pour son dashboard d'introspection HTTP ou dans Tunnl.gg pour son approche zéro-client, slim n'apportera pas forcément de quoi migrer. Mais si vous galérez à empiler mkcert + caddy + ngrok à chaque nouveau projet, c'est pil poil ce qu'il vous faut.

Le code est sur GitHub et un grand merci à Philobois pour le partage !

Talkie-1930 - Le LLM qui pense qu'on est en 1930

Une IA qui pense que 2026 ressemble à un monde fait de bateaux à vapeur et de vastes réseaux ferroviaires, et qui considère qu'une seconde guerre mondiale est très peu probable... voilà Talkie-1930, le nouveau modèle de langage à 13 milliards de paramètres lancé par Nick Levine, David Duvenaud et Alec Radford (l'un des architectes de GPT-2 chez OpenAI).

LE truc avec ce modèle d'un nouveau genre, c'est qu'il n'a JAMAIS lu un mot écrit après le 31 décembre 1930. Pas de Wikipedia, pas de Reddit, pas de GitHub....et j'en passe.

Si ça vous branche, vous pouvez tester la démo direct sur talkie-lm.com/chat , et les poids sont dispos sur HuggingFace sous licence Apache 2.0 !

Alors pourquoi 1930 et pas 1950 ou 1900 ?

Hé bien tout simplement parce que c'est la date précise à laquelle les œuvres tombent dans le domaine public aux États-Unis. L'équipe a donc pu aspirer 260 milliards de tokens de livres, journaux, périodiques, revues scientifiques, brevets et jurisprudence antérieurs à cette date sans risquer la moindre poursuite légale.

Et c'est là que ça devient amusant parce que quand on demande à Talkie-1930 de décrire le futur, il imagine comme je vous le disais en intro, un monde dominé par les bateaux à vapeur et les trains et c'est logique car c'était l'horizon technologique de son corpus à l'époque. Le modèle considère aussi qu'une seconde guerre mondiale est improbable (il ne connaît évidemment que la Première) et du coup, ça donne un terrain d'expérimentation fascinant pour étudier le raisonnement temporel et la généralisation hors distribution moderne.

L'équipe a publié trois checkpoints : talkie-1930-13b-base (modèle brut), talkie-1930-13b-it (pour le chat) et talkie-web-13b-base (un jumeau d'architecture identique mais entraîné sur FineWeb à titre de comparaison). Cette approche "modèle jumeau" permet par exemple de mesurer précisément ce qui vient de l'architecture vs ce qui vient des données.

Pour la phase de post-training, l'équipe a utilisé Claude Sonnet 4.6 comme juge dans une procédure DPO (Direct Preference Optimization). Ils ont également généré des conversations synthétiques entre Claude Opus 4.6 et Talkie pour le fine-tuning supervisé. Bref, c'est un modèle ultra-vintage entraîné à l'aide de modèles ultra-modernes.

L'équipe travaille déjà sur un système OCR custom pour les documents historiques (les OCR conventionnels n'atteignent que 30% de l'efficacité d'apprentissage face à du texte transcrit manuellement) et vise un modèle de niveau GPT-3 pour l'été 2026, avec un corpus pouvant atteindre plus d'un trillion de tokens.

Bref, Talkie-1930 c'est un projet de recherche assez chouette pour tous ceux qui aiment creuser les LLMs. Le code est sur GitHub sous Apache 2.0, et la démo en ligne marche très bien si vous voulez juste tester sans installer.

Amusez-vous bien !

Source

Ghostty quitte GitHub - Hashimoto craque après 18 ans

"GitHub n'est plus un endroit pour faire du travail sérieux."

C'est signé Mitchell Hashimoto, le créateur de HashiCorp, de Vagrant ou plus récemment de Ghostty, et l'utilisateur numéro 1299 de la plateforme depuis février 2008.

Et quand un mec qui a passé 18 ans à pousser du code presque tous les jours sur Github annonce qu'il se casse, bah ça vaut clairement le coup de comprendre pourquoi.

L'annonce est tombée hier : Ghostty , le terminal en Zig pour macOS et Linux va quitter la plateforme. Pas tout de suite, pas brutalement, mais la décision est prise. Hashimoto précise qu'il discute "avec plusieurs fournisseurs (commerciaux comme FOSS)" pour choisir la nouvelle maison pour son code, et qu'un miroir en lecture seule restera accessible sur l'URL GitHub actuelle pour ne pas casser les liens des PRs et des issues. La migration sera, je cite, "aussi incrémentale que possible" pour les contributeurs.

Mais alors, qu'est-ce qui a déclenché cette situation ? Hé bien la semaine du 20 avril a été vraiment catastrophique ! Tout d'abord, le 22 avril, l'agent Copilot et le traitement des commentaires de PR sont tombés une demi-journée à cause d'une erreur de sérialisation. Le 23 avril, c'était encore pire puisqu'un bug dans la merge queue a produit des merges incorrects pour les PRs fusionnées en mode squash quand le groupe contenait plus d'une PR.

Cette situation a même été carrément reconnue officiellement par GitHub, puisque 2092 pull requests ont été affectées ... du coup des changements précédemment mergés se sont retrouvés involontairement annulés par les merges suivants. Ensuite, le 27 avril, rebelote sur les Github Actions.

Bref, comme le dit Hashimoto dans The Register : "je ne peux plus coder avec GitHub".

Hashimoto fait état d'un attachement quasi sentimental avec la plateforme. Il a lancé Vagrant en partie pour impressionner GitHub, en espérant secrètement décrocher une embauche un jour. Embauche qui n'est jamais venue, mais l'attachement est resté. "J'aime GitHub plus qu'on devrait aimer une chose", écrit-il, "et je suis en colère contre lui".

C'est pas de la posture donc puisqu'il a vécu depuis 2008 toute l'histoire de la plateforme en passant par le rachat par Microsoft en 2018 jusqu'à l'âge Copilot. Et c'est ce qui rend sa décision vachement intéressante car c'est pas un libriste hardcore qui crachait déjà sur GitHub avant le rachat. Non, c'est un vrai fidèle de la première heure !

Mitchell Hashimoto ( Source )

Alors ses raisons sont-elles valables ?

Pour vous la faire courte, c'est OUI ! Mais ma réponse longue mérite un peu de nuance quand même, parce que c'est jamais aussi simple.

Côté faits, son constat est vraiment étayé. GitHub a publiquement reconnu sur son blog officiel que ses récentes pannes sont dues à "une croissance rapide, un couplage architectural et des limitations de gestion de charge". Pas de complot donc mais un aveu honnête.

Quand votre infra ne tient plus la charge et que vos services principaux tombent quasi quotidiennement, vendre du cloud computing devient trèèèès compliqué. Alors pour un projet open source qui dépend des Actions pour ses tests automatiques, des PRs pour les contributions extérieures, ou des Issues pour son support... 2 heures de blocage par jour, c'est franchement énorme et ça casse bien les couilles.

C'est l'équivalent d'un quart de la journée de travail balayé et sur un trimestre, ça commence à coûter super cher en énergie mentale...

Maintenant, Hashimoto souhaite quand même conserver ses projets personnels sur GitHub. Seul Ghostty migre, donc ce n'est pas non plus un boycott idéologique de Microsoft, ni une croisade contre la centralisation. C'est surtout une décision pragmatique pour un projet collectif qui doit fonctionner H24.

Un dépôt perso peut se permettre une heure de downtime sans drama. Je le précise pour éviter de transformer le sujet en guerre culturelle prêt à penser. C'est plus un divorce avec négociation qu'une révolution sanguinaire.

Après y'a des alternatives... De leur côté, Codeberg et Forgejo tournent super bien sans oublier GitLab pour ceux qui préfèrent du commercial all-in-one, ou tout simplement Gitea ou Forgejo en version auto-hébergée pour ceux qui veulent vraiment garder la main.

L'auto-hébergement n'a jamais été aussi accessible . Un VPS Linux à 5 balles par mois, un Forgejo en Docker compose, un fournisseur de CI externe ou des runners locaux... et vous avez une forge équivalente à un GitHub des années 2015. Le hic, c'est surtout l'effet réseau car un mainteneur peut migrer son repo, mais comment ramener ses contributeurs qui ont toutes leurs notifs, leurs follows, leur réputation accumulée sur GitHub ?

C'est pas si simple...

Car c'est là que ça coince vraiment. En fait, le verrou n'est pas technique, il est social, et c'est pas demain matin qu'on le fera sauter. Ghostty peut se permettre de quitter GitHub précisément parce que le projet a atteint la masse critique où les contributeurs viennent même quand on déménage mais la plupart des projets open source n'ont pas ce luxe.

Pour eux, partir de GitHub c'est risquer de perdre 90 pourcent de leur visibilité du jour au lendemain. Et sans visibilité, pas de contributeurs et pas de PRs... du coup le projet se plante avant même de démarrer. C'est dommage !

Notez quand même que Forgejo travaille d'ailleurs activement sur la fédération via ActivityPub , et à terme, ça pourrait permettre une vraie décentralisation des forges sur le modèle de Mastodon. Mais à condition que l'écosystème suive...

Maintenant, pour les mainteneurs qui se reconnaissent dans la frustration de Hashimoto, le moment est plutôt favorable, je trouve, pour aller tester Codeberg sur un projet secondaire avant de peut-être déménager votre projet principal.

Tout ça est faisable en un week-end ou deux. Certes, il y a un petit coût à cette migration, mais disons que c'est un investissement pour la sérénité de demain.

Bref, un gros big up à Hashimoto pour son courage !

Source

DOOM tourne aussi dans ChatGPT et Claude (évidemment)

DOOM a déjà été porté sur des thermostats, des tests de grossesse, et même un piano ! Manquait donc plus que les chatbots IA !

Et voilà que c'est fait puisque Chris Nager vient de faire tourner DOOM dans ChatGPT et Claude, jouable directement dans la fenêtre du chat.

Le truc tient en deux outils MCP. Pour rappel, MCP (Model Context Protocol), c'est le protocole standard qui permet à une IA d'appeler des outils externes.

Ici donc, create_doom_session lance le jeu inline dans l'application, et get_doom_launch_url renvoie une URL de fallback pour les clients qui ne savent pas afficher d'UI inline.

Sous le capot, c'est cloudflare/doom-wasm qui tourne, avec les assets libres de Freedoom Phase 1, le tout écrit en TypeScript et hébergé sur Netlify. Vous tapez "lance DOOM" dans Claude, ça démarre le rendu canvas directement dans la fenêtre de chat, et hop, les démons sont là !

Pour ceux qui débarquent, DOOM est sorti en décembre 1993, et le running gag "can it run DOOM?" remonte à la fin des années 90, quand id Software a libéré le code source du jeu en 1997. Et depuis 30 ans, DOOM tourne déjà sur tout un tas de matos comme des distributeurs de billets, des oscilloscopes, des frigos, ou même des satellites en orbite... la liste est sans fin !

Y'a même un type qui avait fait tourner DOOM avec du CSS dans un navigateur le mois dernier. Alors c'est sûr que ChatGPT et Claude étaient déjà sur la liste des prochaines cibles évidentes.

Alors pourquoi ça devient possible maintenant ? Hé bien parce que la spécification MCP Apps est passée en stable fin janvier. C'est donc l'extension du Model Context Protocol qui permet à un serveur MCP de retourner une UI interactive (HTML, canvas, dashboards) directement intégrée dans la conversation.

Tout ça est sandboxé dans une iframe, ça communique via postMessage, et c'est aussi supporté côté VS Code. On est totalement dans la lignée de ces outils MCP qu'on commence à voir partout.

Comme MCP donne déjà à l'app une zone d'affichage dans la conversation (une iframe hôte), le réflexe naturel, c'est d'y caler une page web qui contiendrait elle-même DOOM.

Sauf que ça fait deux fenêtres imbriquées qui se battent avec les règles de sécurité du navigateur (CSP, frame-src, tout ça). Du coup, Chris a eu une idée de génie et a viré la couche du milieu et posé l'écran du jeu directement dans la zone fournie par MCP. Une couche en moins, et tout marche nickel !

Côté limites, faut savoir que c'est une version vraiment épurée. Pas de sauvegarde ni de chargement de partie, pas de screenshots, pas d'état persistant entre les sessions. Tout ça a été coupé volontairement pour gagner en stabilité.

Pour tester chez vous, les amis, le code est dispo sur GitHub via la PR #54 du repo de Chris, prête à être ajoutée à votre config Claude Desktop ou ChatGPT. Y a de quoi s'amuser.

Bref, DOOM tourne désormais directement dans la fenêtre de chat de votre IA préférée. La question n'est plus "qu'est-ce qui peut faire tourner DOOM ?" mais "qu'est-ce qui ne le fait PAS encore ?".

Source : Chris Nager

Slint - Un toolkit GUI pour Rust, C++, JS et Python

Vous avez déjà voulu créer une appli desktop qui tourne sur Linux, Mac et Windows en même temps ? En Rust, c'était un peu compliqué jusqu'ici. Heureusement, Slint , créé par la société allemande SixtyFPS GmbH, propose une solution sympa !

L'idée, c'est de décrire votre interface dans des petits fichiers .slint (un genre de mini HTML/CSS pour appli native), et de brancher ça à du Rust, du C++, du JavaScript ou du Python. Comme ça, vous codez le visuel d'un côté, la logique de l'autre.

Et ce qui est encore plus cool c'est que leur runtime tient dans 300 KiB de RAM. A titre de comparaison, une appli Electron type Discord en bouffe plusieurs centaines de mégaoctets. Slint tourne donc aussi bien sur un Raspberry Pi, un microcontrôleur STM32, ou directement dans un navigateur via WebAssembly.

Par exemple, SK Signet, un fabricant sud-coréen leader sur le marché américain des bornes de recharge électrique, anime ses écrans tactiles 15 à 32 pouces avec. OTIV fait tourner ses trains autonomes dessus. WesAudio l'utilise également pour son plugin audio pro.

Donc c'est du sérieux et si vous voulez tester sans rien installer, direction SlintPad . Vous tapez du code, et le rendu apparaît dans le navigateur. Ensuite pour débuter un projet Slint en local, faudra faire un cargo install slint-lsp puis utiliser le template slint-rust-template dispo sur GitHub. 2 minutes de compilation plus tard et hop, vous avez votre première fenêtre.

Côté tarif, Slint est gratuit pour les projets open source et gratuit aussi pour les applis desktop, mobile ou web même propriétaires. Seul l'embarqué propriétaire est payant. Donc pour la majorité des gens, c'est gratos.

Le revers de la médaille c'est qu'il faudra apprendre un nouveau langage de description, et la bibliothèque de boutons et menus prêts à l'emploi est moins fournie qu'un Qt qui a 30 ans d'avance derrière lui. Mais ça vaut le coup d'essayer puis vu que tout le monde vibe code de toute façon, ça ne devrait pas vous poser trop de soucis.

Voilà, si vous bricolez vos propres outils sur Raspberry Pi ou que vous voulez juste une appli desktop ultra-légère sans embarquer un navigateur entier avec, c'est à regarder.

Merci Chrltc pour le lien !

Source : github.com/slint-ui/slint

BleachBit 6.0 - Le grand nettoyage repart pour un tour

Souvenez-vous, en mai 2025 quand je vous parlais de BleachBit 5.0 et de son grand ménage de printemps. Hé bien Andrew Ziem, le développeur historique du soft, vient de balancer la version 6.0 samedi dernier !

Et c'est annoncé comme la plus grosse release du projet depuis des années, avec plus de 100 améliorations et bug fixes au programme. Et surtout deux nouveautés qui sortent du lot.

La première, c'est un Cookie Manager qui vous laisse enfin choisir quels cookies garder lors d'un nettoyage, sur les navigateurs Chromium et Firefox. Plus besoin donc de tout dégager d'un coup et de devoir ressaisir vos sessions partout.

Vous gardez ce qui compte (banque, mail, sites où vous êtes loggés en permanence) et le reste passe à la machine. Andrew a même mis une vidéo de démo sur la page de release pour montrer le truc en action.

Côté browsers, BleachBit 6.0 ajoute aussi des nettoyeurs natifs pour Vivaldi et Zen, et améliore sérieusement la couverture sur Chromium (Brave, Edge, Chrome, et bien sûr Chromium lui-même). De la purge du component cache, des shaders, du Graphite Dawn cache, des crash reports, du DIPS, des IndexedDB, des suggestions de recherche... Bref, le périmètre est large !

Sur Firefox, LibreWolf et Waterfox, ça nettoie maintenant le bounce tracking protection, le site security state, les alternate services, les favicons et les session backups. De quoi faire plaisir aux paranos modérés.

Et le mode Expert, c'est l'autre nouveauté sympa pour celles et ceux qui ne sont pas trop à l'aise avec les outils sysadmin. Quand il est désactivé (le mode par défaut, en fait), BleachBit met des garde-fous sur les opérations risquées (genre supprimer les mots de passe stockés dans le navigateur) avec des avertissements bien visibles. Et des options carrément bloquées.

Sauf que dès que vous l'activez, vous accédez aux options protégées et désactivez certaines confirmations. Attention quand même, certaines options peuvent dégommer des trucs irrécupérables, donc à manier avec discernement.

Y'a aussi un bug critique fixé sous Windows, où BleachBit suivait les junctions et symlinks placés directement dans la corbeille, et finissait par effacer le dossier cible au lieu de la junction elle-même. Du coup, perte de données accidentelle hors corbeille. Ce fix vital vaut à lui seul l'upgrade.

BleachBit reste un soft sous licence GPL, gratuit, dispo sur Linux et Windows, avec une CLI complète pour l'automatisation et le scripting. La génération de Chaff (les données fictives qui camouflent des suppressions sensibles) tourne plus vite, avec des conditions d'arrêt flexibles et un bouton stop qui n'existait pas avant ! Ah, et Ctrl+V dans la fenêtre principale permet maintenant de coller des chemins de fichiers à shredder, même en texte brut depuis Notepad.

C'est super pratique !

Une refonte complète de l'interface graphique est également dans les tuyaux pour la prochaine grosse release, donc si l'UI actuelle vous fait grincer des dents, sachez que ça arrive. Pour l'instant, BleachBit 6.0 est disponible en téléchargement sur le site officiel, avec installeurs Windows et paquets Linux signés.

Voilà une mise à jour à faire si vous tournez déjà avec BleachBit, et un test à tenter si vous cherchez un outil de nettoyage qui fait sérieusement le job sans vous faire payer un abonnement.

Source

NeatMail - L'assistant IA open source pour Gmail/Outlook

Une boîte mail avec 12 000 messages non lus (genre 32 par jour pendant un an), c'est pas une vie mais c'est pas une fatalité non plus puisque Lakshay Gupta vient de poster NeatMail . Cet outil est un assistant IA qui labelise vos mails Gmail ou Outlook automatiquement et qui rédige des brouillons de réponse dans votre style d'écriture. Le code est dispo sur Github, auto-hébergeable, mais je reviendrai sur la licence (spoiler : c'est custom)...

L'interface marketing de NeatMail

En gros, vous connectez votre Gmail ou Outlook via OAuth (rien à faire côté mot de passe, et tant mieux vu les fuites récentes via les outils IA ), et NeatMail utilise ensuite OpenAI GPT-4o mini en backend pour classifier chaque mail entrant (avec un taux annoncé de 95% de confiance, mais c'est à voir en pratique).

Comme ça, plutôt que d'attendre que vous traitiez vos messages par batch comme un facteur dépressif, le truc bosse en temps réel ! Un mail arrive, hop, label appliqué et ainsi de suite. Et si le système juge que ça mérite une réponse, il vous prépare un brouillon dans votre ton habituel.

Y'a aussi des trucs qui font la différence avec un simple filtre Gmail. Le système se souvient des conversations passées pour rester cohérent dans les brouillons, vérifie votre calendrier avant de proposer un créneau, et apprend votre style à force de relire ce que vous écrivez. La fonctionnalité de désinscription en un clic balaye aussi les newsletters promo, et il y a même une intégration Telegram qui ping votre téléphone quand un mail vraiment important arrive ("Oh cool encore un mail de mon avocat !").

Le chaos d'une boîte Gmail sans tri auto

Côté code, c'est du Next.js 16 + React 19 pour le front, Hono.js pour le backend, PostgreSQL pour les métadonnées, Redis Upstash pour la déduplication, et Inngest qui orchestre les workflows. Le tout majoritairement codé en TypeScript, avec un Dockerfile prêt à dégainer.

Faut juste vos identifiants Google Cloud, Microsoft Entra et OpenAI à côté pour faire tourner ça chez vous, ce qui n'est pas hyper user friendly à trouver mais reste faisable un dimanche pluvieux si vous avez la niak.

Pour le pricing, NeatMail propose 7 jours d'essai gratuit puis 7 dollars par mois. À comparer donc avec Superhuman qui demande entre 30 et 40 dollars mensuels pour le même genre de service, ou SaneBox qui démarre à 7 dollars mais ne propose pas de rédaction de brouillons par IA.

Sauf que là, le code EST sur GitHub, du coup si vous avez la flemme de payer 84 dollars par an (le prix d'un bon resto en amoureux 😍) et que vous savez configurer un PostgreSQL, vous économisez votre argent et vous gardez la main sur l'infra !

Brouillon de réponse pré-rédigé directement dans Gmail

Après faut quand même garder en tête que NeatMail est encore jeune, et que c'est un projet solo. Et côté licence, c'est pas du MIT pur puisque la licence réelle s'appelle "NeatMail Open Source License". C'est donc de la licence faite maison, avec de l'auto-hébergement autorisé, mais une interdiction complète de revendre une instance ou de monter un business concurrent.

Donc si vous comptiez forker le projet pour monter votre SaaS concurrent, oubliez ça direct, car ce n'est pas autorisé. Côté privacy, le créateur précise qu'aucun contenu de mail n'est stocké en base, mais juste les métadonnées (sachant que les mails passent quand même par OpenAI pour la classification, faut pas se mentir...).

Voilà, je trouve l'idée plutôt sympa. Le code est dispo sur GitHub si vous voulez self-hoster votre boîte mail intelligente, ou comme je vous le disais, y'a la version SaaS sur neatmail.app à 7 dollars par mois pour les flemmards. Carrément moins cher que Superhuman !

Scrapling - Le scraper Python qui se répare tout seul

Le scraping web, c'est un combat permanent contre les sites qui changent leur HTML toutes les deux semaines. Vous vous emmerdez à coder vos sélecteurs CSS, ça marche pendant un mois, puis le site refait son design et hop, votre script s'éteint en silence. C'est pourquoi Karim Shoair (alias D4Vinci sur GitHub) a sorti Scrapling, un framework Python qui s'adapte tout seul quand le DOM bouge.

La clé c'est adaptive=True sur n'importe quel sélecteur. Vous lui dites "je cherchais .product", Scrapling sauvegarde alors la signature de l'élément (texte, attributs, position dans l'arbre), et la prochaine fois que le site a renommé sa classe, il retrouve l'élément via similarité.

Concrètement ça donne ça :

from scrapling.fetchers import StealthyFetcher
StealthyFetcher.adaptive = True
page = StealthyFetcher.fetch('https://example.com', headless=True)
product = page.css_first('.product', adaptive=True) # Retrouve l'élément même si la classe a changé

Le truc marche grâce à un algo de similarité maison qui compare la structure DOM autour de l'élément. L'auteur lui-même a écrit un long post Medium intitulé " Creating self-healing spiders with Scrapling in Python without AI ", et ça résume bien la philosophie : pas de modèle IA mais juste des heuristiques solides !

La doc précise que adaptive=True ne sauvegarde que le premier élément de la sélection. Du coup si vous récupérez 50 produits d'un coup avec .css('.product'), seul le premier sera adapté. Faudra donc soit utiliser css_first comme dans l'exemple, soit boucler manuellement et appeler adaptive sur chaque élément. C'est bon à savoir...

Y'a également 3 fetchers selon le besoin. Fetcher pour les requêtes HTTP rapides avec spoofing TLS, StealthyFetcher qui passe Cloudflare Turnstile via un navigateur furtif (Camoufox sous le capot), et DynamicFetcher qui lance un Chromium ou un Chrome via Playwright pour les sites lourds en JS. Du coup vous pouvez démarrer léger en HTTP et basculer vers un navigateur uniquement quand un site bloque, sans réécrire votre code.

Côté perfs, le README annonce du lourd : 2 ms pour extraire 5000 éléments contre 1584 ms pour BeautifulSoup avec lxml. Sauf que Parsel et Scrapy font aussi 2 ms. Donc le gain vient du moteur lxml utilisé en direct, ce qui veut dire que si vous étiez déjà sur Scrapy, vous ne gagnerez pas en vitesse brute. Mais si vous traînez encore du BS4 partout, le saut sera énorme !

Sur le terrain anti-bot, ça se compare bien à Botasaurus dont je vous avais parlé. La différence c'est que Scrapling embarque un ProxyRotator natif et propose un blocage d'ads/trackers (~3500 domaines) activable via block_ads=True ou automatique en mode MCP, ce qui simplifie la vie quand vous tournez sur un serveur (où les IPs des datacenter se font régulièrement filtrer). Botasaurus, lui, vous laisse gérer la rotation à la main.

Détail sympa pour les bidouilleurs : y'a également un serveur MCP intégré (pip install "scrapling[ai]"). Du coup Claude ou Cursor peuvent piloter Scrapling directement pour extraire des données, en réduisant la consommation de tokens car l'IA ne voit pas tout le HTML brut, juste ce qui est extrait. Pour les agents qui scrappent en boucle, c'est cool.

Notez que les sponsors Platinum du projet sont tous des fournisseurs de proxies (DataImpulse, BirdProxies, Evomi, etc.). C'est logique vu l'usage du framework, mais gardez en tête que pour bypasser un Cloudflare sérieux à grande échelle, vous aurez besoin de proxies résidentiels payants, donc d'eux. L'outil est gratuit, mais le contournement industriel ne l'est pas.

Pour installer, c'est pip install "scrapling[fetchers]" puis scrapling install pour récupérer les binaires navigateur. Une image Docker existe aussi (pyd4vinci/scrapling) et y'a même un shell interactif (scrapling shell) pour debugger vos sélecteurs en live.

Bref, c'est carrément pas mal pour ceux qui scrapent régulièrement. Alors si BS4 vous fait pleurer, allez voir par ici .

Et merci à Letsar pour le lien !

Technitium - Le DNS qui remplace Pi-hole, Unbound, BIND

Et si vous aviez UN seul soft qui bloque les pubs comme Pi-hole, qui parle DoH/DoT/DoQ comme AdGuard Home, ET qui sait faire du serveur DNS faisant autorité pour vos zones perso ?

Hé bien c'est exactement ce que fait Technitium DNS Server , un projet open source sous licence GPLv3 maintenu par TechnitiumSoftware. Concrètement, avec ce truc, vous obtenez un résolveur récursif, un sinkhole avec blocklists, et un serveur de zones (Primary, Secondary, Stub) dans le même process. Du coup, pour un homelab type, fini d'empiler Pi-hole + Unbound + BIND, tout est dans la même console web !

Pour démarrer sur Linux ou Raspberry Pi, l'installeur officiel fait tout en moins d'une minute :

curl -sSL https://download.technitium.com/dns/install.sh | sudo bash

Sinon Docker marche aussi avec docker pull technitium/dns-server:latest. Vous tapez ensuite http://localhost:5380/ dans le navigateur, login admin/admin (à changer dare-dare !), et hop, vous êtes dans la console web. Le serveur tourne direct, faudra juste pointer votre routeur ou vos clients dessus pour qu'il filtre tout le réseau.

La console web Technitium - tableau de bord principal

Côté blocage, la console propose un Quick Add pour piocher direct dans les block lists populaires (du style Hagezi). Les listes se mettent à jour quotidiennement, et l'app interne Advanced Blocking gère même des regex et des listes différentes par IP ou sous-réseau client. Pratique, non ?

Genre du blocage strict pour la tablette du salon, plus permissif sur votre ordi, et un mode safe-search obligatoire pour la chambre des gosses. Notez quand même que certaines Smart TV Samsung ou apps gaming hardcodent leur DNS, du coup faudra ajouter une règle de routage sur le firewall de la box pour vraiment forcer Technitium.

L'écran d'ajout des block lists, avec le bouton Quick Add

Niveau protocoles, c'est du costaud : DNS-over-TLS, DNS-over-HTTPS (HTTP/1.1, HTTP/2, HTTP/3), DNS-over-QUIC, plus le DNS-over-PROXY-protocol pour les load balancers. Y'a aussi le DNSSEC complet (RSA, ECDSA, EdDSA, NSEC/NSEC3, DANE TLSA), les transferts de zones AXFR/IXFR, le routage Tor pour les forwarders, et le support du Cloudflare hidden DNS resolver. Soit le set qu'on attend chez un FAI sérieux.

Côté perfs, le serveur encaisse plus de 100 000 requêtes/seconde sur du Gigabit Ethernet d'après les benchs officiels. Sur un Raspberry Pi 4 avec 2 Go de RAM, ça tourne peinard pour une famille de 4 (genre 200 à 300 Mo de RAM en charge avec Hagezi Pro et ses 750 000 entrées, donc carrément de la marge).

Et y'a aussi un DHCP multi-réseaux, du clustering, du SSO via OpenID Connect, du 2FA TOTP, plus des apps internes pour DNS64 (clients IPv6-only), DNS Rebinding Protection, et Advanced Forwarding. Tout ça pour un soft destiné à tourner chez vous.

Côté zones, on peut monter du Primary (zone classique gérée localement), du Secondary (réplique d'une autre zone), du Stub, ou du Conditional Forwarder, plus du Catalog Zones pour ceux qui automatisent à grande échelle. Pratique pour gérer un domaine perso, un homelab entier, ou un split-horizon entre réseau interne et externe. Pas mal pour un soft "maison".

À noter quand même quelques pièges. À part sur Linux et Raspberry Pi où ça tourne nickel, sous Windows 10/11 c'est plus chaotique : Internet Connection Sharing, Hyper-V, Docker Desktop et Defender Application Guard squattent tous le port 53, donc faudra changer le port d'écoute si vous tournez sur un poste de travail. Y'a même des cas tordus où Hyper-V garde le port après désinstallation, et le seul fix c'est un net stop hns ou un reboot complet.

Si vous chargez beaucoup de blocklists volumineuses, la RAM grimpe vite (les pros conseillent de consolider sur une seule liste comme Hagezi Pro). Le cache est aussi froid au premier démarrage, donc les premières requêtes prennent leur temps avant que tout se fluidifie (genre 30 secondes à 1 minute pour redevenir réactif, donc évitez de rebooter en pleine visio).

Mais avec tout ça, vous gagnez un truc rare : un seul outil pour filtrer pubs et trackers à l'échelle du réseau (utile à l'heure où certains pays parlent de criminaliser les bloqueurs côté navigateur ), résoudre vos requêtes en récursif, et héberger vos propres zones DNS. Tout ça avec une UI web qui supporte le dark mode (oui, ça compte aussi ^^).

Bref, franchement à tester si vous voulez la main complète sur votre infrastructure DNS sans bricoler 3 softs en parallèle. Sur un Pi à 35 balles posé derrière la box, ça dépote sa race. Le projet est sur GitHub, le site officiel est ici, et merci à Axala sur Discord pour le tuyau !

Source

parallel-rsync - Empiler les rsync en parallèle sans galère

Vous synchronisez 4 ou 5 dossiers vers plusieurs serveurs avec rsync ? Alors vous connaissez ce sketch quand un job mouline pendant que les autres font la queue, parce que rsync de base c'est mono-thread et ça avance en file indienne.

Hé bien y'a un petit utilitaire Python qui dégoupille tout ça, pondu par overflowy. Ça s'appelle parallel-rsync et le nom annonce la couleur !

L'idée c'est de pouvoir empiler plusieurs jobs rsync en parallèle, avec une config YAML pour piloter le tout. Vous décrivez vos sources et destinations dans sync.yml, vous lancez parallel-rsync -c sync.yml --workers 4 --max-per-host 2, et hop, ça parallélise.

Le bougre tourne sur un ThreadPoolExecutor Python 3 qui spawn N processus rsync système avec un cap global et un cap par hôte. Et pendant ce temps, des barres de progression vous affichent l'avancement de chaque transfert sans que la console parte en sucette.

La dernière fois, je vous parlais de rsyncy qui collait juste une barre de progression à un rsync solo mais là, on monte clairement d'un cran avec une orchestration multi-cibles.

--workers cap c'est donc le nombre total de processus rsync simultanés (4 par défaut). --max-per-host limite la concurrence par destination (2 par défaut, histoire de ne pas saturer un seul serveur, parce que oui, balancer 8 rsync sur la même machine c'est juste se tirer une balle dans le pied côté I/O).

--timeout met une laisse à chaque rsync, --dry-run ajoute le flag à toutes les commandes pour tester avant de tirer, et --no-progress débraye les barres si vous voulez juste les logs. Côté logging, --log-file et --log-level font également le job.

Par contre y'a pas de retry automatique donc si une session SSH coupe en plein transfert, faudra relancer à la main. C'est logique mais un peu dommage.

Sur un homelab, ce genre de config YAML permet de résoudre le problème des synchros récurrentes avec un seul fichier centralisé au lieu de 8 scripts shell.

Notez aussi que le repo build un binaire universel via cosmofy , qui empaquette le tout en un exécutable cross-platform Windows, macOS et Linux d'un coup. Du coup, pas besoin d'installer Python sur la machine cible. Carrément pratique pour distribuer sur des serveurs où vous n'avez pas envie de gérer un environnement Python complet avec pip et un venv.

Petit point d'attention quand même : rsync lui-même doit être installé sur la machine qui lance le binaire, ce qui est natif sous macOS et Linux mais nécessite WSL ou Cygwin sous Windows.

Y'avait déjà msrsync qui découpe les transferts en buckets, parsyncfp qui s'appuie sur fpart pour grouper par taille, et la classique combine find . -type f | parallel -j10 rsync que tout sysadmin a bricolée un jour pour gratter de la bande passante. De son côté, overflowy se place plutôt sur le créneau "config déclarative" pour orchestrer plusieurs rsync entre sources et cibles.

Le code est sous licence MIT et tout se passe sur le repo GitHub . À tester si vous orchestrez régulièrement plusieurs rsync à la main.

Notepad++ débarque sur MacOS - Le portage non officiel

Andrey Letov vient de sortir Notepad++ for Mac , un portage natif Apple Silicon de l'éditeur culte créé par Don Ho. Notez quand même que Don Ho n'a rien à voir avec ce projet. C'est un portage communautaire indépendant, lancé en mars dernier.

Vous récupérez le binaire universel qui tourne nativement sur les puces M1 à M5 et sur les vieux Macs Intel. C'est de l'Objective-C++ compilé pur jus avec le même moteur d'édition Scintilla qu'utilise la version Windows (Scintilla est cross-platform avec un build Cocoa officiel).

Après, tout le reste a dû être refait à la main, parce que le Notepad++ original utilise massivement Win32 pour son interface. Letov a donc réécrit la couche UI from scratch en Cocoa pour coller aux conventions macOS, avec menus, dialogues, file pickers et raccourcis clavier qui se comportent comme ceux d'une vraie app Mac.

L'interface de Notepad++ sous macOS

Côté prérequis, comptez sur macOS 11 (Big Sur) au minimum, en dessous ça ne tournera pas. Donc si vous êtes resté sur Catalina ou plus vieux, ouais, désolé pour vous, faut passer votre tour.

Côté fonctionnalités, on retrouve le pack classique du Notepad++ qu'on connaît, coloration syntaxique pour 80 langages, recherche regex, find in files, bookmark de lignes, recherche incrémentale, split view pour bosser sur deux fichiers en parallèle, enregistrement de macros pour automatiser les tâches répétitives, écosystème de plugins, et l'interface dispo dans plus de 90 langues.

C'est gratuit, sous licence GPL v3 mais attention quand même, les plugins Windows compilés en .dll ne sont pas portables tels quels. Il vous faudra une version macOS recompilée pour chacun, et le catalogue dispo aujourd'hui est forcément plus maigre qu'en face. Bref, du Notepad++ comme on l'aime, mais avec moins d'extensions pour l'instant.

Après tant que Letov tiendra le rythme, ça roulera, mais le jour où il décrochera ou que la version Windows partira dans une direction qu'il ne suit pas, le port macOS va probablement diverger ou s'éteindre. On verra bien.

En attendant, si vous bossez sur Mac et que Notepad++ vous manque depuis votre époque Windows (on fait tous des erreurs ^^), foncez le tester, l'app a l'air bien fichue à première vue et le projet itère vite.

Bref, j'espère que ça durera.

UNIX Magic - Le poster culte de 1986 enfin décodé

Si vous avez bossé sous Unix dans les années 80, vous avez peut-être déjà croisé ce poster. Un sorcier barbu en robe noire, un chaudron qui déborde, des étagères couvertes de conteneurs étiquetés tar, awk, troff... C'est l'œuvre de Gary Overacre, publiée par UniTech Software dans les années 80 (apparemment 1986), et ce n'est qu'aujourd'hui qu'un dev nommé drio s'est dit que ce serait cool de cartographier chaque référence cachée sur unixmagic.net .

De ce que j'ai pu lire, le poster aurait été distribué en marge des conférences USENIX comme goodie et il n'y a visiblement jamais eu de réimpression. En 2021, le blogueur Jan-Piet Mens indiquait, après avoir contacté l'épouse de Gary Overacre et selon ses dires, il resterait environ 65 originaux du UNIX Magic chez les Overacre.

Overacre a aussi signé deux autres posters dans la foulée, encore plus rares (les titres listés varient selon les sources de revente : "Unix Feuds" ou "Computer Feuds", et "The View").

Computer Feuds (ou Unix Feuds selon les sources) - Gary Overacre.

Après si vous voulez l'un de ces visuels chez vous, deux options s'offrent à vous : Chasser un exemplaire sur eBay (et payer le prix d'un collector), ou imprimer la version 32 Mo dispo sur archive.org.

The View - Gary Overacre.

Maintenant, ce qui rend le poster culte, c'est pas juste sa rareté. C'est surtout la densité des blagues techniques planquées dedans. Selon les interprétations communautaires recensées sur unixmagic.net, le sorcier représente l'admin Unix maître du système, le chat noir perché à proximité serait cat, la fourche qu'il tient en main serait fork(), les tuyaux qui serpentent partout seraient les pipes (|), le crâne en bas du chaudron pointerait vers /dev/null là où les données vont mourir, et la botte qui traîne par terre serait un jeu visuel autour de boot (ou peut-être un sock/socket selon une autre annotation).

UNIX Magic - Gary Overacre, 1986. Source : archive.org / unixmagic.net

Sur les étagères, vous avez également des conteneurs avec les noms des outils Unix classiques : tar, awk, diff, uucp, troff, make. Et juste à côté, un détail que beaucoup ratent : un conteneur étiqueté C intact, et un autre étiqueté B... fissuré. Interprétation probable au fait que le langage C a remplacé son prédécesseur B (créé par Ken Thompson en 1969-1970 avant d'être supplanté par le C de Dennis Ritchie ). Il y a plein de petites subtilités comme ça.

Y'a aussi des initiales planquées un peu partout : dmr (Dennis M. Ritchie), kt (Ken Thompson), bwk (Brian Kernighan), soit trois grandes figures de la culture Unix dans un seul dessin. La robe du sorcier est également constellée de symboles shell, les caractères de redirection, le pourcentage du prompt csh, le dollar du prompt sh, l'astérisque du glob, le point d'exclamation de l'history expansion, les crochets... bref des symboles courants des shells Unix qu'on tape sans y penser en ligne de commande.

Même le titre du poster est présenté en grosses lettres bloc, comme la sortie de la commande banner. Et un peu plus loin, vous avez wall (l'utilitaire qui envoie un message à tous les utilisateurs connectés) représenté littéralement par un mur.

Voilà, le poster Unix Magic, c'est ce niveau de blagues visuelles partout.

Le projet de drio consiste donc à poser des marqueurs interactifs sur chaque détail du poster. À la date d'aujourd'hui, le site unixmagic.net affichait 41 références identifiées et documentées. C'est dans l'esprit, comparable à l'archéologie du Glider , ce symbole hacker dont je vous ai déjà parlé.

Et vous avez peut-être vu mais sur le poster, y'a aussi un sac d'origan posé dans un coin. C'est du folklore BSD non vérifié, mais d'après les spécialistes, ça ferait écho à une histoire de communauté où un acteur du milieu aurait été interpellé à la frontière canado-américaine avec un sac suspect dans ses bagages. Les douaniers étaient persuadés que c'était de la drogue alors que c'était de l'origan !

Et c'est ça, la vraie valeur du projet drio car sans ce travail de documentation, dans 20 ans, la référence au sac d'origan ou d'autres risquent de devenir impossibles à comprendre car les références se perdent avec les générations.

Après si en bon barbu survivant des années 80, vous reconnaissez un détail que personne n'a encore décodé, c'est le moment d'apporter votre pierre à l'édifice.

Et si vous voulez en faire un trophée mural, comme j'vous disais, archive.org a la version 32 Mo.

Source

Canonical va foutre de l'IA partout dans Ubuntu

Jon Seager, VP Engineering chez Canonical, vient de poser sur le Discourse Ubuntu le plan IA de la distrib pour les 12 prochains mois. Et ça va saupoudrer partout, du speech-to-text amélioré aux workflows agentic, en passant par l'analyse automatisée des logs serveur. Le timing est limpide, et à peine Ubuntu 26.04 LTS est sortie que Canonical aligne déjà sa "next big thing".

Concrètement, vous tapez snap install nemotron-3-nano et tadaa, vous récupérez un modèle local pré-optimisé pour votre silicium (genre 2 à 4 Go selon la quantization), avec un endpoint API compatible OpenAI servi sur localhost. C'est ça, leurs fameuses Inference Snaps.

La liste tourne autour de Gemma 4 (Google DeepMind), Qwen-3.6-35B-A3B, Nemotron-3-nano, DeepSeek et Llama, et perso je trouve le choix plutôt cohérent vu qu'il colle aux modèles open weight les plus chauds du moment. Bien sûr, l'inférence est locale par défaut plutôt que cloud, l'idée étant d'éviter d'envoyer vos prompts chez un tiers chaque fois que vous demandez un résumé de log.

Côté technique, tout passe par la sandbox Snap pour gérer les permissions, ce qui change pas mal la donne par rapport à un binaire qui pourrait taper partout sur le disque.

Ubuntu 26.04 LTS embarque déjà la "prompting capability" qui permet d'autoriser ou refuser l'accès aux modèles app par app et les fonctionnalités attendues couvrent les ajustements caméra et micro (réduction de bruit, flou d'arrière-plan), l'accessibilité écran, l'automatisation du troubleshooting, et côté serveur, l'aide à l'interprétation des incidents pour les équipes SRE.

Pour ceux qui bossent sur des fermes de serveurs, à vrai dire c'est ce dernier point qui sera vraiment utile, parce que pour parser des logs à la main quand ça part en cacahuète, ça vaut le coup d'avoir une IA qui dégrossit.

Le hic dans ce thread Discourse, c'est l'absence de killswitch IA global comme le propose Firefox. Plusieurs utilisateurs demandent un opt-in clair plutôt qu'un opt-out diffus, et un alignement explicite avec la définition Open Source AI de l'OSI. La position de Canonical, c'est que désinstaller les Snaps IA = killswitch de fait, vu que toutes les features IA passeront par là. Pas de gros bouton rouge "désactive-moi tout ça" global, donc, mais un contrôle granulaire au niveau Snap, avec Ubuntu 26.10 qui arrive en mode preview "strictly opt-in" et un setup wizard à partir de 27.04 qui demandera à l'install si vous voulez ces features ou pas. Comme les LLMs sont trop gros pour rentrer dans l'ISO, ils sont téléchargés après coup, ce qui rend l'opt-in assez naturel à implémenter techniquement.

La réponse de Seager sur le débat est nette, "some features will use AI, and if you use those features, you'll be using some sort of AI model", mais il tempère quand même avec "not to force AI into every Desktop indiscriminately, but rather to enhance certain features where it makes sense". Bref, comme d'hab, ça en calmera certains, mais vu comment certains ont littéralement fondu un plomb quand Firefox a adopté ses fonctionnalités IA (locales et désactivables, je le rappelle), j'imagine que Ubuntu va se prendre sa petite shitstorm de "j'suis tout rouge et pas content" dans pas longtemps...

Cette ambiguïté fait d'ailleurs déjà grincer des dents sur certaines chaînes YouTube de barbus, où le terme "Microsoft 2.0" ressort déjà dans plusieurs vidéos critiques. Ahaha, c'est toujours le même gag ! Mais Canonical jure ses grands morts que ce sera différent... Tenez la citation officielle "Ubuntu is not becoming an AI product, but it can become stronger with thoughtful AI integration".

Et l'autre point qui va faire grincer des dents, c'est que Canonical confirme aussi accepter dans Ubuntu du code co-écrit avec une IA, en s'alignant sur la politique récente du kernel Linux qui a déjà ouvert la porte à ce type de contributions. À voir comment les puristes vont digérer ça, mais c'est en train de devenir la norme dans l'écosystème open source, alors autant que Canonical le dise franchement plutôt que de le faire en douce.

Maintenant pour les sceptiques qui veulent tester sans s'engager, la bidouille est simple. D'abord, vous laissez les Inference Snaps non installés (ils ne sont pas dans le seed par défaut). Ensuite, vous bloquez les capabilities IA dans snap connections. Et comme ça vous gardez la main sur ce qui tourne en local.

Après si vous voulez expérimenter, l'API OpenAI-compatible permet de faire pointer n'importe quelle app dessus avec deux lignes de config, ce qui est vraiment pratique pour comparer un modèle 3B local face à GPT-4 cloud sur des tâches précises. Sauf si votre machine n'a pas assez de VRAM, et là le modèle 3B va ramer comme un veau et vous reviendrez vite vers le cloud... pas glop.

Il reste quand même la vraie question, qui est celle de la transparence des datasets de training. Là dessus, Canonical n'a pas encore donné de réponse claire, et c'est probablement là que se jouera la confiance long terme.

Promettre l'open weight déjà c'est bien, mais expliquer comment les modèles ont été entraînés ça serait franchement mieux.

Bref, à surveiller dès Ubuntu 26.10 en octobre 2026 pour la preview opt-in, et plus largement à partir de 27.04 quand le setup wizard intégrera la question. Pour l'instant, la roadmap c'est surtout beaucoup d'intentions louables, mais bon, on en reparlera dans six mois.

Source : Phoronix

PanicLock - Désactiver Touch ID en un clic sur votre Mac

Si vous voyagez avec un Macbook qui contient des trucs trèèèès sensibles, faut absolument que vous alliez tester cet outil.

PanicLock est le bouton "panique" qu'Apple n'a jamais voulu faire. Grâce à cela, en un clic, Touch ID se désactive totalement.

Plus de biométrie, et retour au mot de passe obligatoire pour rouvrir la session. Parce que oui, Touch ID, c'est ultra pratique au quotidien, sauf quand un agent à la frontière ou un flic un peu trop curieux vous demande gentiment (ou de force) de poser votre doigt sur le capteur de votre machine.

Sur iPhone, Apple a prévu quand même une astuce (5 pressions sur le bouton latéral et la biométrie se désactive). Mais sur Mac, rien !

Le principe de PanicLock, c'est tout simplement de cliquer sur l'icône dans la barre de menu ou d'appeler un raccourci clavier de votre choix et voilà ! Votre Mac se verrouille alors en désactivant Touch ID au passage.

Les devs ont aussi prévu une option "Lock on Close" qui déclenche le panic mode automatiquement lorsqu'on referme l'écran du Macbook, ce qui est la fonctionnalité la plus utile de tout le pack ! Vous fermez l'écran, et c'est mort, faut le mot de passe !

Sous le capot, ça fonctionne grâce à des fonctions natives de macOS qui sont tout simplement détournées pour permettre de désactiver la biométrie en 2 secondes. Notez que le code de PanicLock est sous licence MIT, et fonctionne 100% en offline.

Alors pourquoi c'est utile au-delà de la paranoïa que vous vous trimballez depuis que vos parents vous ont appris que vous aviez un frère adoptif secret ?

Hé bien y'a une vraie distinction juridique en jeu que j'évoquais d'ailleurs récemment dans mon article sur les cartes bancaires biométriques . En effet, aux États-Unis, la justice est divisée car en janvier 2025, la cour d'appel fédérale du District of Columbia a tranché dans US v. Brown que forcer quelqu'un à déverrouiller son téléphone violait le 5e amendement, parce que ça revient à témoigner contre soi-même.

Alors que la cour d'appel fédérale de l'Ouest Américain, elle, considère qu'un déverrouillage biométrique reste un acte physique qui n'est pas un témoignage, donc forçable. Et là, désactiver Touch ID avant un contrôle change donc tout puisque grâce à ça, on bascule dans le cas "mot de passe obligatoire", qui est mieux protégé légalement dans plusieurs juridictions. C'est exactement la même logique que la fonction iOS 18 qui affole la police , transposée côté Mac.

Je ne suis pas expert, mais je crois qu'en France, c'est un petit peu la même chose avec notre droit à ne pas nous auto-incriminer.

Côté limites, PanicLock désactive Touch ID, et c'est tout, donc si vous avez l'unlock par Apple Watch ou via une clé de sécurité, votre Mac restera quand même "ouvrable" autrement. Il faut donc penser à désactiver ces méthodes en parallèle si vous êtes vraiment dans une situation à risque.

Pour l'installer, c'est:

brew install paniclock/tap/paniclock

ou téléchargement du DMG depuis la page releases.

Et sur iPhone, la même philosophie existe via le pair locking qui bloque les ports USB, si vous voulez aller encore plus loin.

Bref, c'est petit, c'est simple, et c'est gratuit !!

Hypervibe - Codez avec une télécommande Apple TV

Vous savez cette télécommande Apple TV de première génération qui traîne dans un tiroir et dont vous ne faites rien ?

Bah y'a enfin un truc à faire avec ! Jinsoo An, alias machinarii sur GitHub, vient de sortir Hypervibe , un outil macOS qui transforme la télécommande de l'Apple TV en walkie-talkie comme disent les québecois, pour Claude Code.

Push-to-talk, swipes pour les commandes slash, boutons remappables, le tout pour coder à une seule main pendant que vous mangez vos chips au vinaigre de hipsters de l'autre.

Le principe est simple : vous tenez la télécommande comme un talkie, vous appuyez sur le bouton Siri pour parler à Claude Code (dictation Claude doit être activée préalablement), puis Play/Pause envoie le prompt, Menu fait Échap, et TV envoie un Ctrl+C pour annuler.

Et les swipes du touchpad sont mappés sur les commandes slash de Claude : swipe up pour /usage, swipe down pour /compact, swipe left pour /model, swipe right pour basculer en mode plan/auto-accept. Et comme vous pouvez vous en douter, ous les mappings sont modifiables à la volée via la barre de menu, et sauvegardés dans UserDefaults.

Hypervibe est en V0.1 expérimental, et y'a pas de binaire pré-compilé, donc vous devrez le compiler depuis les sources.

Notez quand même (parce qu'il faut rendre à César ce qui appartient à César) que Hypervibe est un fork de Remotastic de Lauschue, qui a posé les fondations du HID Siri Remote et du menu bar. Hypervibe ajoute en plus le push-to-talk, les swipes mappables sur les commandes Claude Code, et pas mal de petites subtilités pour que ça fonctionne au poil !. Côté licence c'est MIT, donc vous pouvez forker à votre tour si vous voulez ajouter votre propre layout.

Et voilà comme une télécommande à 3 balles en vente sur LeBonCoin devient un périphérique d'entrée pour Claude Code avec voix et gestures intégrés, pendant que des startups de dropshipping nous vendent des claviers "AI-native" à 300 €.

La bidouille plus fort que la douille !!

RSVP Nano - Une mini-liseuse DIY qui fait défiler les mots

John Decebal vient de sortir le RSVP Nano , une mini-liseuse open-source qui tient sur un ESP32-S3 et qui affiche votre bibliothèque... un mot à la fois. 92 mm sur 34, et sous licence MIT, je me suis dis que j'allais y jeter un oeil.

En fait, le concept tient en 4 mots : Rapid Serial Visual Presentation. Au lieu d'afficher une page entière, l'appareil fait défiler les mots un par un, à la cadence que vous voulez. Imaginez un téléprompteur de poche, sauf que c'est vous qui gérez le défilement. J'en parlais déjà avec Uniread en 2018 , sauf que là, la chose est matérialisée dans un boîtier qui tient dans la paume de la main, au lieu de tourner en CLI dans un terminal.

Côté hardware, c'est une carte Waveshare ESP32-S3-Touch-LCD-3.49 avec 16 Mo de flash incluant l'OPI PSRAM, plus un panel AXS15231B de 640 x 172 pixels en mode paysage. Par contre, comme c'est pas un écran e-ink, mais un LCD IPS classique tactile capacitif, exit l'autonomie d'une Kindle. On tape plutôt dans le rythme d'un téléphone.

Le firmware embarqué convertit alors les EPUB en format .rsvp directement sur la carte SD à la première ouverture, puis met le résultat en cache. Pour les autres formats type .txt ou .md ou .html, il existe un convertisseur desktop séparé à lancer sur PC avant copie. Voilà, c'est moins fluide mais ça reste carrément faisable.

Quelques bémols quand même. La lecture mot par mot, ça demande un peu d'entraînement (les premières minutes, le cerveau panique un peu !!), et si vous voulez relire un passage précédent, faudra piloter manuellement l'engin via avec l'écran tactile.

Le concept même de RSVP, ça reste quand même une affaire de goût personnel. Certains tiennent un roman entier comme ça, d'autres décrochent au bout de 30 minutes parce que le cerveau zappe la pause naturelle qu'on prend en bout de ligne. Après ça peut convenir aux lecteurs de métro qui dévorent par micro-sessions (entre 2 arrêts quoi...). Dans ce cas le format colle carrément à votre rythme.

Pour la petite histoire, j'avais déjà parlé en 2020 d'un cousin plus sérieux, The Open Book Feather , dans un genre plus orthodoxe avec un véritable écran e-ink complet et un microcontrôleur Adafruit Feather sous Linux embarqué.

Mais si ça vous chauffe, sachez que le hardware coûte une trentaine de dollars, le firmware est libre, et la communauté commence déjà à demander l'intégration Calibre.

Source : Hackster.io

❌