Je vous parlais hier de mon NAS UGREEN DXP8800 Ultra , ce 8 baies dans lequel j'ai regroupé mes deux anciens serveurs et des dizaines de téraoctets de données. Fanxiang, une marque chinoise de stockage qu'on croise partout sur Amazon, m'a envoyé un SSD NVMe de 1 To au format M.2, cette petite barrette qui se branche directement sur la carte mère.
Ça tombe plutôt bien, le NAS garde justement deux emplacements M.2 en PCIe 4.0 à côté de ses huit tiroirs.
Les disques durs mécaniques encaissent très bien les gros transferts qui s'enchaînent, mais ils s'écroulent dès qu'on leur demande des milliers de petits fichiers d'un coup, et c'est exactement le genre de charge que génèrent les applications d'un NAS.
UGOS Pro, le système maison d'UGREEN, propose deux façons d'utiliser la barrette. Soit en cache, et la machine recopie alors toute seule les fichiers les plus consultés sur le SSD pour les servir plus vite, soit en volume de stockage à part entière. Un seul SSD limite le cache à la lecture, il en faut deux pour accélérer aussi les écritures.
De mon côté je pars sur un volume dédié, pour y installer mes conteneurs Docker, les bases de données des applications et les métadonnées de Plex, ces milliers de vignettes et de fiches que le serveur consulte en permanence. Les huit disques mécaniques ne travaillent plus que pour les fichiers eux-mêmes.
La gamme PCIe 4.0 de Fanxiang est donnée pour des pointes à 7 300 Mo/s en lecture. Sauf que dans un NAS, tout passe par le réseau, et mes deux ports 10 Gb/s plafonnent les transferts autour de 1 Go/s, soit sept fois moins que ce que la barrette sait encaisser. Le gain, il est ailleurs, sur ces fameux petits accès où n'importe quel NVMe écrase un disque mécanique.
Du coup, un modèle abordable comme ce Fanxiang me semble exactement le bon choix pour cet usage. Payer un SSD haut de gamme pour le coller derrière un réseau qui nivelle tout n'aurait aucun sens, d'autant que la marque annonce sur cette gamme 700 To d'écritures cumulées avant usure, de quoi voir venir.
Et si vous n'avez pas de NAS, la même barrette vous servira forcément. Elle se glisse dans un PC de bureau comme dans un portable récent, dans une PS5 à condition de lui ajouter un dissipateur, ou dans un boîtier externe qui la transforme en disque de poche très rapide pour un Mac.
Comptez entre 130 et 170 euros le To chez Fanxiang en ce moment, la flambée de la mémoire qui fait déjà grimper les disques durs n'épargne pas les SSD.

Hier, je suis tombé sur Carafe , une application pour Windows qui devrait vous intéresser si vous avez une Nintendo Switch crackée. En effet, son job c'est de transformer le dossier d'un jeu PC en titre compatible pour Nintendo Switch. Une fois installé, le jeu aura son nom et son icône présent dans le menu HOME de la console. Et surtout, il démarrera comme n'importe quel autre jeu Switch. Et tout ça, sans avoir de fichier à copier à la main sur la carte SD.
Mais qu'est-ce donc que cette sorcellerie me direz-vous ?
Eh bien au lancement, Carafe vous propose de choisir le répertoire où se trouve votre jeu ainsi que l'exécutable qu'il faut lancer, puis vous propose ensuite un nom, l'icône qui va bien et une config pour votre manette. Et ensuite il va fabriquer à partir de tout ça un NSP et il ne vous restera plus alors qu'à brancher votre Switch en USB avec DBI lancé dessus. Et Carafe copiera le fichier sur la carte SD ou dans la mémoire de la console directement.
En regardant plus près le contenu du NSP, vous y trouverez le jeu, ses réglages et un runtime construit sur Autorun , c'est-à-dire l'ancien Wine-NX qui fait tourner Wine sur le système de la Switch. La compatibilité revient donc à Autorun et n'est pas du fait de Carafe qui est juste un moyen de packager les jeux.
Autorun sait déjà créer un raccourci HOME Menu pour un jeu, mais il faut d'abord copier le dossier du jeu sur la carte SD (ou une clé USB), puis l'ajouter dans son lanceur. Carafe emballe ensuite tout ça dans un seul titre, avec sa propre sauvegarde gérée par la console comme pour un vrai jeu, et un écran de chargement pendant que Windows démarre, au lieu d'un écran noir.
Après, Autorun se déclare lui-même comme étant expérimental. Cela veut dire que certains jeux tournent bien, beaucoup démarrent puis s'arrêtent, et les jeux 3D gourmands ne tourneront peut-être jamais sur votre console de 2017 dont les 4 Go de mémoire sont partagés avec le système.
Carafe est un projet encore très jeune, puisqu'il est sorti il y a quelques jours seulement. Donc si vous voulez essayer, je vous conseille de commencer par un jeu un petit peu léger, et surtout d'aller consulter la page Compatibility du projet, qui vous permet à la fois de voir un peu ce que les autres ont fait avec cet outil, mais aussi de remonter votre propre expérience.
Côté prérequis, comme je vous le disais, il vous faut une Switch sous Atmosphère avec les sigpatches, DBI sur la console, et un PC sous Windows 10 ou 11 en x64 ou ARM64 (pas de macOS ni de Linux pour l'instant). L'installeur n'est pas encore signé, alors Windows va vous faire peur avec son "éditeur inconnu" (Faites donc "Informations complémentaires" puis "Exécuter quand même").
Et pour le risque côté Nintendo, l'installation de NSP homebrew est en général signal de bannissement immédiat, juste après la piraterie. Donc si vous êtes déjà banni, vous vous en foutez, mais si c'est pas le cas, faites bien attention. Et ça, c'est pour tous les NSP de ce genre, et pas seulement pour ceux de Carafe.
Donc pensez bien à couper le wifi pendant que vous installez ça, et pendant que vous y jouez. Carafe est sous licence GPL-3.0 ou ultérieure, et à récupérer sur GitHub pour ceux qui veulent tester !

Ventoy , je vous en ai déjà parlé à de multiples reprises et vous connaissez ça mieux que moi ! C'est cet outil open source qui transforme une clé USB en clé bootable sur laquelle vous glissez vos ISO comme de simples fichiers, sans avoir à reformater à chaque fois. Et ça c'est super pratique puisque comme ça, au démarrage de votre ordi, vous avez un menu qui vous laisse choisir sur quoi démarrer... Windows 10 ? Windows 11 ? Un Linux ? Mais il lui manquait tout de même quelque chose ! Pouvoir lancer SteamOS !
Et c'est chose faite depuis aujourd'hui puisque Ventoy vient de se voir ajouter du support, encore expérimental certes, des images de récupération de SteamOS, c'est à dire celles que Valve propose sur son site d'assistance de Steam afin de réinstaller la console.
Le souci avec SteamOS venait de l'image elle-même, qui n'est pas une ISO mais un fichier .img contenant un disque GPT brut, et que Ventoy ne parvenait pas à démarrer convenablement. Mais c'était sans compter sur matte-schwartz, un des contributeurs au projet qui a proposé un correctif en juillet, sur lequel le développeur de Ventoy a ensuite apporté ses propres optimisations avant de l'intégrer définitivement dans le projet.
Par contre, "cuidado con el ISO" car Valve distribue cette image compressée, en .img.bz2 ou en .img.zip, et Ventoy ne lit PAS le .img.bz2. Donc vous devrez d'abord décompresser ce truc .img (avec bunzip2 pour le .bz2, par exemple), puis la copier sur la clé avec le reste.
L'autre gros morceau de cette nouvelle version de Ventoy concerne Linux. Maintenant, quand vous booterez une distrib live direct depuis votre clé USB, la partition qui contient vos ISO sera accessible directement depuis la barre latérale du gestionnaire de fichiers. Et ça c'est cool !
Cette partition Ventoy porte aussi désormais un nom stable, /dev/mapper/VentoyPart, et les icônes de disque en double qui encombraient la barre latérale de certaines distributions ont totalement disparu ! Et si la vôtre n'est pas dans la liste et vous répond "device busy", ne stressez pas, suffit juste de monter /dev/mapper/VentoyPart à la mano.
Et s'il n'existe pas, lancez ces deux commandes puis réessayez :
sudo udevadm trigger
sudo udevadm settle
Voilà et pour le reste des news, cette 1.1.18 corrige le démarrage de la bêta de Fedora 45, la vérification de version du Secure Boot qui échouait avec Windows et WinPE, ainsi que la persistance qui lâchait de temps en temps sous Ubuntu Desktop. Et CloneZilla peut maintenant monter la partition des ISO lui aussi.
Si ça vous chauffe de mettre à jour, récupérez la version sur la page GitHub de la release , puis passez par la mise à jour plutôt que par une nouvelle installation, comme ça vos ISO resteront alors en place.
Source : Neowin

Une PS5, au fond, c'est juste un PC comme les autres. Elle a un processeur AMD x86-64 (c'est du Zen 2, en gros un Ryzen) ainsi qu'une puce graphique RDNA 2, ce qui est grosso merdo la même came que ce qu'il y a dans votre tour de gamer.
Et pour ça que le pari d' AnyPS5 est possible ! L'objectif de ce projet c'est qu'au lieu de lancer un n-ième émulateur qui "imite" la console pendant que vous jouez, l'outil prend le code binaire d'un jeu PS5, le décompile et le recompile intégralement sous la forme d'un vrai programme Linux ou Windows, que votre système peut ensuite lancer comme n'importe quel autre.
Pour y parvenir, ce projet repose sur 2 briques. D'abord il y a un "relinker", qui lit l'exécutable du jeu et le reconstruit au format natif de la cible, c'est à dire ELF pour Linux ou PE pour Windows. Mais comme le jeu continue d'appeler des fonctions système PS5 que votre PC ne connait pas, AnyPS5 réimplémente les bibliothèques de Sony, libc, libkernel et toute la famille libSce, en bibliothèques dynamiques que le chargeur de votre OS peut alors lier au programme converti.
Résultat, le jeu tourne comme un processus normal, sans runtime à part... C'est beau non ?
Mais tout n'est pas réécrit d'avance pour autant puisque côté graphique, le jeu envoie ses files de commandes comme s'il causait à la puce AMD de la console, et c'est donc la version maison du projet de libSceAgcDriver qui les interprète pendant l'exécution. Les shaders RDNA, eux, sont recompilés en SPIR-V pour Vulkan quand le jeu les demande, puis rangés dans un cache sur le disque pour les lancements suivants. Donc ça veut dire que certes, le code processeur tourne en natif, mais la partie GPU, elle, est traduite à la volée.
La conversion elle-même, après c'est juste une ligne de commande. Vous indiquez l'exécutable du jeu et son dossier sce_module côte à côte, et vous choisissez le nom du binaire cible (le .exe quoi) :
relinker source/input.elf app.elf
relinker --windows source/input.elf app.exe
Sur un processeur Intel, ajoutez le paramètre --to-intel, qui convertira les instructions propres aux puces AMD qu'il connaît.
Et quand le jeu touche à quelque chose que le projet ne gère pas encore, AnyPS5 lève une exception, en affiche la raison dans le terminal et le processus s'arrête. Ça veut dire qu'un jeu qui boote n'est pas forcément un jeu auquel vous pourrez jouer jusqu'au bout.
Et justement, qu'est-ce qui va jusqu'au bout ?
Hé bien la liste de compatibilité officielle est trèèès courte puisqu'elle ne contient qu'un seul jeu : Dreaming Sarah. C'est un jeu de plateforme 2D sorti sur Steam en 2015 et vendu moins de 5 € (1,49 € en promo au moment où j'écris).
Sous Windows, après recompilation, il est noté "in game, playable", à 60 images par seconde sur une GTX 1050 Ti et 36 sur une puce Intel HD 620 et sous Linux, on ne connait pas encore les stats même si l'ELF Linux a été généré.
Bien sûr, comme toujours avec ces projets de recompilation ou d'émulation, aucun firmware, ni jeu, ni clé n'est fourni. Et comme vous le savez, pour déchiffrer un jeu et l'extraire, il faut un exploit du firmware en cours, autrement dit une console débridée. Donc ça limite un peu les ambitions de pas mal de monde. Mais ça n'en reste pas moins possible pour qui a un peu de volonté (et une PS5 jailbreakée).
Sachez que ce projet AnyPS5 nécessite une carte graphique Vulkan 1.1, que les manettes Xbox ou PlayStation reconnues par SDL fonctionnent avec sticks et gâchettes analogiques, et que le clavier se remappe sans souci dans un fichier anyps5-input.ini que vous devez éditer.
Voilà... Les émulateurs PS5 dont je vous ai parlé, recréent la console autour du jeu alors qu'AnyPS5 tente de recréer le jeu pour n'importe quelle machine. On verra qui y parvient massivement en premier, mais en tout cas, la course à l'émancipation de la PS5 et de ses jeux est lancée !
Source : AnyPS5

Le soir, après une grosse journée de boulot, quand on a envie vraiment de se vider le cerveau, on ne sait jamais trop quoi regarder comme un film. Est-ce qu'on se met Les Misérables de Ladj Ly ? Les Fils de l'homme d'Alfonso Cuarón ? Detroit de Kathryn Bigelow ? ou Le Chagrin et la Pitié de Marcel Ophuls ?
Que choisir ?
Eh bien heureusement, il y a un super site qui s'appelle QuoiVoir qui répond à cette question du "on regarde quoi ce soir ?" en vous proposant simplement 3 films plutôt que de vous laisser scroller à l'infini dans un catalogue de bouzes. QuoiVoir contient pour le moment plus de 8500 films (pas de séries) et pour trouver LA pépite qui vous fera du bien, ça passe au choix, soit par un quiz, soit par une barre de recherche.
Le quiz, suffit de noter quelques films (5 avis suffisent pour démarrer, ou un import de votre historique Letterboxd), puis vous dites votre soir, seul, à deux, en famille ou entre amis, avec l'humeur, la durée et l'époque que vous souhaitez.
Ou alors la barre de recherche, où vous écrivez votre envie en une phrase, sans rien noter avant.
Tapez par exemple "un film de braquage pas trop long" et hop le site affichera ce qu'il a compris, c'est à dire "Moins de 100 min" et "Sujet : braquage", c'est à dire 2 tags que vous pouvez retirer d'un clic si l'IA s'est trompée.
Chaque fiche a ensuite deux rubriques pour décider vite. "*C'est pour toi si... *" donne trois raisons d'aimer le film, et "Avec qui le regarder" note seul, à deux, entre amis et en famille. Par exemple sur "1917", le site met "Idéal" entre amis et "Bof" à deux et sous le résumé, vous trouverez aussi les plateformes où le voir, avec les données de JustWatch, ainsi qu'un réglage de vos plateformes favorites.
Après, gardez en tête que chaque film est décrit selon douze axes par un modèle de langage, donc c'est plus un bon moyen de dégrossir un catalogue pour une soirée ciné qu'une boussole précise sur vos goûts.
Si vous êtes du genre à aimer les petits jeux, il y a une page entière consacrée au hasard et à la sérendipité, avec des roues de la fortune à tourner, des choses comme ça.
Le truc cool, c'est qu'il n'est pas obligatoire de se créer de compte, mais que vous pourrez quand même mémoriser des films et vos goûts, c'est juste que c'est stocké dans le navigateur.
Dans le genre, j'ai déjà écrit un article sur FlickMetrix , où vous parcouriez un catalogue de films et de séries que vous filtriez vous-même par genre, date, note ou plateforme. De son côté, QuoiVoir fait le chemin inverse où c'est vous qui décrivez votre soirée idéale et lui vous suggérera les films qu'il faut, un peu comme un employé de Video Club ^^. Maintenant, si j'ai une petite critique à apporter au site, c'est que je le trouve un petit peu "lourd". Je pense que ça mériterait un petit peu d'optimisation sur le poids des pages et du JS, mais à part ça c'est top !!
Et bien sûr, si ces trois films ne vous disent rien, le bouton "Régénérer" en proposera d'autres sans souci !

Mise à jour du 8 octobre 2026 : depuis la publication de cet article, j'ai découvert les idées que diffuse DHH, le créateur d'Omarchy. Je ne recommande plus cette distribution, et je vous explique pourquoi dans Omarchy, non merci .
Omarchy-apple-dev , c'est un projet qui vous permet de compiler une app codée en SwiftUI, l'installer sur votre iPhone via le cable USB et l'envoyer à TestFlight d'Apple, tout ça depuis une machine Linux sous Omarchy... Oui oui, sans Mac !
Le gros du boulot est assuré par
xtool
, qui sait déjà compiler, signer et installer une app iOS sous Linux, mais ce dépôt omarchy-apple-dev y ajoute un script ship.sh, qui permet de créer le .ipa, d'y renseigner les clés de build que le traitement App Store lit, puis d'envoyer tout ça à Apple comme un grand.
Bref, en langage clair, ça veut dire que vous pouvez être développeur iOS depuis votre PC Linux. Cool hein ?
Pour l'installer, c'est juste 3 lignes avec install du SDK d'Apple.
git clone https://github.com/joshuaswarren/omarchy-apple-dev
cd omarchy-apple-dev
./install-toolchain.sh
Les morceaux du SDK iOS n'existant que dans la distribution Xcode d'Apple, il faut donc télécharger le Xcode.xip sur developer.apple.com avec un Apple ID gratuit, depuis n'importe quel OS. Vous relancez ensuite le script avec XCODE_XIP=/chemin/Xcode.xip, puis device-run.sh installera l'app sur l'iPhone branché. Un compte gratuit suffit pour ça, mais Apple le limite à 3 apps par appareil avec des profils qui expirent au bout de 7 jours. Pour TestFlight, il faudra par contre un compte développeur payant et une clé d'API App Store Connect.
Après, les CGU d'Apple pour Xcode et ses SDK disent bien que ces logiciels ne sont autorisés uniquement sur un produit de marque Apple tournant sous macOS, et que tout autre usage est une violation du contrat. Sa clause 2.5 interdit aussi d'utiliser les SDK séparément ou de les faire tourner sur du matériel qui n'est pas Apple. Or le SDK que le script installe vient forcément d'un Xcode d'Apple. Voilà, au moins vous savez...
Bref, pour bricoler sur votre iPhone avec un compte gratuit, ça peut le faire... Après, pour l'App Store, sachez qu'Apple exige en plus depuis avril dernier, que vos apps soient compilées avec Xcode 26 ou plus récente alors qu'ici, ce bon vieux script contourne ça... Donc à voir si vous voulez tenter votre chance.
Au pire, pour la phase finale (la compilation de la release de votre app), vous sortez un Mac rien que pour ça et le reste du temps, vous codez et compilez vos tests à 100% dans Omarchy. A vous de voir :)

Vous ne le savez surement pas mais Sebseba, un membre du forum TeamAAZ, partage depuis juin 2025 un LivePE 100% en français . C'est une ISO qui se met sur une clé USB et qui permet de démarrer un LivePE (un Windows Live quoi...), en EFI comme en MBR, avec de quoi sauvegarder, partitionner, récupérer des fichiers ou réparer le boot. Bref, c'est super pratique si vous faites un peu d'admin ou de support technique.
Le bureau du LivePE démarré dans une machine virtuelle, avec ses icônes en français
Il l'a fabriqué avec une base de Win10XPE , SFX Constructor et Dism++ , et ça embarque une sacrée liste de programmes.
Par exemple, pour les sauvegardes, vous avez le droit à Acronis True Image 2026, Macrium Reflect X Server, AOMEI Backupper et les outils Hasleo. Pour tout ce qui est partitionnement, c'est MiniTool, EaseUS et AOMEI Partition Assistant. Aussi, pour récupérer des fichiers, GetDataBack Pro et Hasleo Data Recovery et il y a bien sûr AIDA64 Extreme et le Kaspersky Virus Removal Tool.
Maintenant, pour le mettre sur une clé ou un SSD externe, le tuto de Sebseba impose UltraISO et rien d'autre, sinon le multiboot EFI + MBR ne marchera pas. Il faut initialiser le support en MBR, puis vous le formatez en FAT32, vous ouvrez TECH.iso dans UltraISO et vous l'écrivez en mode USB-HDD+.
Et ensuite, vous pouvez réduire cette partition et en créer une seconde en NTFS pour y ranger vos ISO Windows. Par contre, attention, WinToHDD ne créera pas la partition MSR quand il installera Windows en GPT/EFI, ce qui posera des problèmes de migration plus tard... Donc préparez bien l'ESP et la MSR avant, avec DiskGenius ou DiskPart GUI Micro.
Le gestionnaire de démarrage de l'ISO, lui, s'affiche en anglais
Cette ISO de LivePE bien frenchy est une adaptation du WinPE de Sergei Strelec, dont l' historique officiel liste lui aussi Acronis, Macrium Reflect, AIDA64 et GetDataBack, mais uniquement dans la langue de David Bowie (ouais Shakespeare c'est has-been). Et si vous préférez une clé multiboot montée avec Ventoy, Medicat dont je vous ai déjà parlé à de multiples reprises, fait ça très bien depuis longtemps.
Un grand merci à Sebseba pour le partage !
Source : LivePE en français sur TeamAAZ

Vous le savez, The Legend of Zelda: Majora's Mask existe en version européenne, avec une ROM PAL 1.1 qui embarque 4 langues (anglais, français, allemand et espagnol), mais 2Ship2Harkinian , le portage PC du jeu dont je vous ai déjà parlé, ne reconnaît que les 2 versions américaines.
C'est pour cela qu'un fork non officiel a décidé de lever cette limite en permettant une lecture de la ROM version PAL 1.1 directement depuis Windows, Linux et Android !
Bien sûr, le fork garde le support des ROM américaines, et comme toujours pour ne pas tomber dans le piratage, il faudra au premier lancement du jeu, désigner l'emplacement de votre ROM à vous (que vous devrez avoir normalement rippé vous-même depuis votre propre version pour rester dans les clous plutôt que dans choper une sur un site random ^^). Ensuite, le jeu génèrera localement son fichier de données (mm.o2r), et les lancements suivants démarreront directement dans le jeu.
Le menu Options sur Android, avec le français sélectionné parmi les quatre langues de la ROM PAL 1.1 (capture fournie par l'auteur du fork)
Sous Windows, il faut donc décompresser le ZIP et lancer 2ship.exe, en gardant 2ship.o2r à côté. Sous Linux, c'est une archive et un exécutable 2s2h.elf, avec le même fichier à ses côtés. Sur Android, il faut l'APK (ARM64 uniquement, Android 7 et OpenGL ES 3.0 minimum), et la version mobile ajoute des commandes tactiles qu'on peut masquer, un menu redimensionnable et un dossier de données déplaçable sur carte SD.
Pas de build macOS, en revanche, alors que le projet d'origine en propose un et ça, c'est un méga snif pour moi.
Alex, l'auteur de ce fork a aussi ouvert une demande de fusion chez 2Ship pour intégrer tout ça au projet d'origine, j'espère que ça passera.
Et après, peut-être qu'il pourra s'attaquer à Zelda 64 Recompiled , l'autre portage de Majora's Mask dont je vous ai parlé, car lui aussi n'accepte que la ROM américaine..
À récupérer sur la page des releases du fork .

Si vous êtes sous macOS 27, vous avez peut-être remarqué que pour désactiver Apple Intelligence, il fallait couper les fonctions une par une. Mais ce que vous ne savez probablement pas, c'est que même si vous faites ça, les modèles restent stockés sur votre disque dur. Donc forcément, ça prend de la place !!
Heureusement, il existe une application nommée RemoveMacAI qui permet de supprimer ces modèles et empêcher macOS de les retélécharger.
Concernant la place que vous allez gagner, Apple et les média tech ne s'entendent pas sur les chiffres, mais grosso modo ça peut aller de 12 Go à 30 Go d'économisé.
Pour procéder à l'opération, il vous faudra un Mac Apple silicon sous macOS 27. L'outil installe ensuite un profil de configuration que macOS vous demandera d'approuver dans les Réglages Système, retirera les modèles via le service d'assets d'Apple et renverra leurs téléchargements vers un port local fermé. La protection SIP reste bien sûr activée et aucun fichier de /System n'est touché. La doc de l'outil dit d'ailleurs s'appuyer sur pared , un autre outil de 4evy qui a défriché ce service avant lui.
Voici comment en profiter :
brew install omlahore/tap/removemacai
removemacai
Bien sûr, par défaut, tout dégagera. Siri en entier, "Dis Siri" et l'icône de la barre des menus compris, Writing Tools, Genmoji, Image Playground, l'extension ChatGPT, les résumés dans Mail, Messages, Safari, Notes et les notifications, Clean Up dans Photos et la complétion de code d'Xcode. Les apps qui s'appuient sur les modèles d'Apple perdent aussi la main, comme l'action "Utiliser le modèle" de Raccourcis. La dictée, elle, continue de marcher. Pour épargner certaines fonctions, l'option --keep permet de les nommer, et l'option --dry-run montre les changements sans les appliquer.
Voilà, c'est bien qu'un tel outil existe, même si moi, perso, je trouve Apple Intelligence plutôt bien, et que c'est dommage de s'en débarrasser (surtout que c'est du local, hein...). Mais c'est vrai que sur un Mac à 256 Go d'espace de stockage, ces Go comptent ! Maintenant, si vous changez d'avis, l'auteur assure que removemacai revert remettra tout en place, avec les modèles qui se téléchargeront à nouveau quand une fonction que vous utilisez en aura besoin.
Source : MacRumors

On a passé une grosse quinzaine de jours avec le Freo 20 , le nouveau robot aspirateur laveur de Narwal présenté à l'IFA de Berlin début septembre. Autant le dire tout de suite, c'est un des appareils du genre les plus aboutis qu'on ait fait tourner.
Sur le papier, l'aspiration grimpe à 31 000 pascals, soit le haut du panier actuel, et dans la vraie vie ça se vérifie : miettes, poussière, poils d'animaux, tout part en un seul passage, y compris le long des plinthes.
Le vrai truc qui le différencie de la concurrence, c'est côté lavage. Narwal a laissé tomber les serpillières rondes rotatives qu'on voit partout pour un rouleau microfibre de 26 cm qui couvre quasiment toute la largeur du robot, pressé au sol avec 12 newtons et alimenté en eau chauffée à 60 degrés.
Ce rouleau se rince en continu à l'eau propre pendant qu'il travaille, du coup la crasse de la cuisine ne finit pas étalée dans le salon. Une tache de café séchée disparaît sans qu'on ait besoin de repasser trois fois derrière. C'est franchement impressionnant.
Le Freo 20 va surtout très loin sur l'entretien automatique. De retour à la station, la serpillière est lavée à 100 degrés puis séchée à l'air chaud, histoire d'éviter ces odeurs de serpillière humide qui plombent la moitié des robots laveurs du marché.
La station remplit aussi le réservoir d'eau propre du robot, nettoie elle-même son bac d'eau sale et compacte la poussière dans un sac de 2,4 litres annoncé pour environ quatre mois. En pratique, on ne touche à rien, ou presque.
Les cheveux et les poils longs, le cauchemar habituel de ces machines, sont gérés par un système anti-enchevêtrement qui fait plutôt bien le job. Après plus d'une semaine avec un chat à la maison, la brosse n'a pas réclamé un seul démêlage.
Côté navigation, deux caméras couplées à de la lumière structurée, autrement dit une projection lumineuse qui mesure le relief de la pièce, reconnaissent plusieurs centaines d'objets. Câbles, chaussettes et gamelles ont été contournés proprement, et le robot franchit des seuils de 4 cm.
L'application est claire, avec une carte précise, des zones à exclure et un mode multi-cartes si vous avez un étage. Vous n'aurez qu'à porter le robot là-haut, il se repère tout seul.
La station de charge est assez grande, il faut avoir la place, mais c'est souvent le cas avec les robots aspirateurs laveurs de ce genre. Si vous avez la place ça n'est pas un problème, les finitions sont belles, le revêtement texturé ne marque ni les doigts ni la poussière, et le robot lui-même, avec ses 9,5 cm de haut, se faufile sous la plupart des meubles.
Le Freo 20 ramène sous la barre des 850 euros ( 835 euros en ce moment ) des prestations qu'on trouvait jusqu'ici sur des machines facturées 1 400 euros et plus. Pour un foyer avec des sols durs et des animaux, c'est, si vous voulez mon avis, un des meilleurs achats du moment.
En quinze jours de test, on n'a pas touché une seule fois à la serpillière. Si vous n'avez pas d'aspirateur robot chez vous, considérez sérieusement cette option ! Il est actuellement en promo sur Amazon d'ailleurs, en cliquant ici.

Cloudflare a sorti il y a petit moment maintenant une commande que pas mal de dev utilisent et dont je vais vous parler aujourd'hui : cloudflared tunnel --url, qui permet de publier un serveur tournant sur votre machine à une adresse en trycloudflare.com, sans avoir besoin de compte, de nom de domaine et surtout sans avoir à ouvrir le moindre port sur votre box toute pourrie.
Et la petite nouveauté depuis quelques jours, c'est que, autant avant, n'importe qui possédant le lien pouvait se connecter à votre service, mais maintenant, Cloudflare a mis en place une option qui permet de réserver ce lien à quelques adresses e-mail que vous définissez.
Ce service s'appelle les Quick Tunnels, et pour en profiter, il vous faudra juste un service web qui tourne en local (moi je vais faire ça sur le port 8080 comme d'hab) avec une page de test toute bête servie par Python. Voilà c'est juste de quoi vérifier que tout passe bien avant d'y brancher un vrai projet. Et si vous faites bosser des agents IA avec ce truc, on verra aussi comment mettre un garde-fou pour éviter l'exposition sur le web de trucs pas prévus ! Argh !!
cloudflared, c'est le petit connecteur open source de Cloudflare, celui qui établit la connexion sortante vers leur réseau. Sur Mac, pour l'installer c'est fastoche, suffit d'utiliser Homebrew :
brew install cloudflared
Sous Debian ou Ubuntu, passez par conte par le dépôt officiel de Cloudflare. Il a changé de clé de signature récemment, donc reprenez bien ces commandes plutôt que celles d'autres vieux tutos qui traînent :
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt-get update && sudo apt-get install cloudflared
Et sous Windows (les courageux !! lol), la page de téléchargement de Cloudflare propose un MSI ou un exécutable, en 32 ou 64 bits, et le paquet existe aussi chez winget sous l'identifiant Cloudflare.cloudflared. Dans tous les cas, vérifiez ensuite la version, car l'option d'authentification dont on va parler plus bas n'arrive qu'à partir de la version 2026.9.3 :
cloudflared --version
Tout d'abord, lancez votre serveur local, puis dans un autre terminal, faites :
cloudflared tunnel --url http://localhost:8080
Au bout de quelques secondes, cloudflared affichera un encadré avec une adresse aléatoire composée de quatre mots, du genre quelque-chose-truc-bidule.trycloudflare.com, en prévenant qu'elle peut mettre un moment à répondre. Donc soyez un peu patient, le temps que le DNS résolve ce truc (et
videz votre cache DNS
si ça veut vraiment pas le faire).
Ensuite, ouvrez cette URL depuis un autre appareil, genre votre téléphone en 4G par exemple et hop, vous tomberaz sur votre serveur local. Et si vous voulez tout couper, un petit Ctrl+C dans le terminal et c'est fini ! Pas de panique, au prochain lancement de cloudflared, vous aurez une nouvelle adresse.
La commande de base, et le cadre où cloudflared affiche l'adresse trycloudflare.com à partager
Notez aussi que le port n'est pas imposé puisque --url accepte tout ce que cloudflared peut joindre, une adresse IP de votre réseau local comprise. Par contre, si votre projet tourne sous Vite, vous allez prendre un "Blocked request" en pleine tronche, car Vite ne répond par défaut qu'à localhost, aux domaines en .localhost et aux adresses IP. La parade la plus simple consiste donc à faire croire à Vite qu'on l'appelle via localhost:5173 en faisant comme ceci :
cloudflared tunnel --url http://localhost:5173 --http-host-header localhost:5173
L'autre solution, c'est d'ajouter l'hôte dans le réglage server.allowedHosts de Vite. Mais évitez de passer ce réglage à true pour aller plus vite, en effet
la doc de Vite
le déconseille puisque ça expose votre serveur de dev à des attaques par DNS rebinding. Oupsi oups !
Gardez aussi en tête que c'est un outil de test et de démo et que c'est pas fait pour de la prod. Si on en croit la doc , Cloudflare ne garantit aucune disponibilité, sans oublier que chaque tunnel encaisse au max 200 requêtes en simultanné (au-delà, ça vous fera une erreur 429 ) et les Server-Sent Events ne passeront pas. Voilà, donc si vous voulez un nom fixe et du vrai trafic, il faudra plutôt créer un tunnel nommé à partir d'un vrai compte Cloudflare et d'un domaine de votre choix.
Et maintenant, pour limiter l'accès à votre service à quelques personnes, ajoutez --allowed-mail suivi de l'adresse email de celui à qui vous voulez montrer votre merveilleux boulot :
cloudflared tunnel --url http://localhost:8080 --allowed-mail korben@example.com
L'encardré change alors de "ton" en vous annonçant que le tunnel est "protégé" par une authentification de type code à usage unique via Cloudflare Access, ainsi que la quantité d'adresses autorisées. Les adresses elles-mêmes n'apparaissent nulle part, même dans la ligne des réglages où elles sont remplacées par des astérisques, ce qui est plutôt bien vu si vous faites une démo en mode partage d'écran. Ça évite les fuites de données perso !
Avec --allowed-mail, le cadre annonce le code à usage unique et le nombre d'adresses autorisées, sans jamais les afficher
Vous pouvez ensuite répéter l'option autant de fois que nécessaire, séparer plusieurs adresses par des virgules, ou autoriser tout un domaine. Mettez simplement des guillemets autour du "joker" (c'est l'étoile) pour que votre misérable shell ne tente pas de l'interpréter comme un gros teubé :
cloudflared tunnel --url http://localhost:8080 \
--allowed-mail korben@example.com \
--allowed-mail bob@example.com \
--allowed-mail '*@example.com'
Côté Wrangler, si vous bossez sur Workers, un petit npx wrangler tunnel quick-start acceptera la même option :
npx wrangler tunnel quick-start http://localhost:8080 --allowed-mail korben@example.com
De son côté, votre invité VIP n'aura alors plus qu'à ouvrir l'URL que vous lui avez donné et cloudflared renverra son browser vers login.trycloudflare.com. Il tombera alors sur une page Cloudflare Access qui lui demandera son adresse mail. Il recevra ensuite un code dans sa boîte, devra le taper, et arrivera enfin (ouf !!) sur votre merveille application probablement vibe codée (lol).
Et quelqu'un qui n'est pas sur la liste des invité ne verra quand à lui qu'une réponse de base lui expliquant qu'il peut bien aller se faire voir (et sa requête n'atteindra jamais votre application).
Ce que voit votre invité en ouvrant l'URL protégée : la page Cloudflare Access qui lui demande son adresse mail
Et votre liste d'emails, elle, n'est jamais diffusée hors de votre ordi puisque Cloudflare vérifie seulement que la personne contrôle l'adresse qu'elle a saisie. Ensuite c'est cloudflared qui compare les accès en mémoire, avec ce que vous avez tapé. Une fois entré, le visiteur gardera alors sa session jusqu'à 4 heures max.
Et si vous voulez modifier cette liste d'accès, il faudra alors arrêter le tunnel et en relancer un autre, ce qui coupera l'accès à tout le monde et vous donnera une nouvelle adresse à renvoyer. Donc soyez sûr de votre coup avant de casser la tête aux gens qui vont tester votre appli.
Sachez aussi que cette vérification ne pourra se faire qu'avec un vrai navigateur et pas des trucs du genre un webhook Stripe, un GitHub, un script en curl ou encore n'importe quel client automatique qui restera coincé devant cette page de connexion.
Pour ces cas-là précieusement, je vous recommande plustôt d'ouvrir un tunnel public le temps du test et de le couper juste après. Et si le webhook doit tourner durablement, passez sur un tunnel nommé avec Cloudflare Access, sur votre propre domaine.
Maintenant, parlons un petit peu à agents IA parce que oui... Un agent de code a besoin d'un endroit pour vous montrer ce qu'il vient de faire de beau, et Cloudflare décrit justement ce cas de figure dans son article.
Pour éviter qu'un agent IA ne diffuse publiquement ce qu'il vient de faire à la vue de tous, ce que recommande Cloudflare, c'est donc d'ajouter une ligne dans le fichier d'instructions de l'agent AGENTS.md comme ceci :
Quand tu lances un Quick Tunnel, ajoute toujours --allowed-mail moi@exemple.fr.
Sauf qu'une consigne reste une consigne... C'est un prompt que l'agent peut choisir d'ignorer... Donc gardez bien en tête que ces fichiers sont traités comme du contexte et pas comme une configuration imposée.
Maintenant, si vous voulez vraiment bloquer une action, peu importe ce que décide le modèle, ce que je vous recommande d'utiliser à la place, c'est un hook "PreToolUse". Moi, j'en mets partout dans mes configs Claude Code pour plus de sécurité.
Si vous ne savez pas ce qu'est un hook, en fait c'est un petit script contenant la commande en JSON, et que Claude Code lance avant chaque commande bash. Si ce script se termine avec le code "2" l'appel est alors bloqué. Pour faire ça, il faut donc créer dans le dossier .claude/hooks/ de votre projet, le script suivant :
#!/bin/bash
# .claude/hooks/tunnel-protege.sh
COMMAND=$(jq -r '.tool_input.command')
if echo "$COMMAND" | grep -qE 'cloudflared.*tunnel.*--url|wrangler.*tunnel.*quick-start' \
&& ! echo "$COMMAND" | grep -q -- '--allowed-mail'; then
echo "Quick Tunnel public refusé : ajoutez --allowed-mail, ou demandez-moi d'abord." >&2
exit 2
fi
exit 0
Puis rendez-le exécutable avec chmod +x, et installez jq si vous ne l'avez pas encore fait.
Déclarez-le ensuite dans le .claude/settings.json du projet, sur l'outil Bash comme ceci :
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/tunnel-protege.sh"
}
]
}
]
}
}
Maintenant, si ça vous prend trop le chaud de faire ça, sachez que j'ai fait un petit kit à télécharger ici, pour les Patreons :
Ensuite, à partir de là, un cloudflared tunnel --url ou un wrangler tunnel quick-start lancé sans le paramètre --allowed-mail ne fonctionnera pas, et l'agent recevra le message du hook qui lui dira d'ajouter l'option ou de vous demander s'il doit y avoir un contournement.
Et bien sûr, un tunnel nommé lancé avec cloudflared tunnel run, lui, passera normalement.
Comme d'hab, ce genre de garde-fou a ses limites, puisqu'il ne lit que le texte de la commande et ne vérifiera pas l'adresse qui suit l'option. Il ne verra non plus les tunnels qui pourraient être lancés depuis un script ou à l'aide d'une variable d'environnement TUNNEL_URL, qui permet aussi de lancer un Quick Tunnel. Voilà, donc laissez la consigne dans AGENTS.md en plus du hook, au cas où... Les deux devraient bien se compléter.
Pour les soutiens Patreon , le kit ci-dessus reprend donc ce hook avec les consignes à coller dans AGENTS.md, dont l'exception des clients automatiques (l'agent vous demande au lieu de retirer l'option).
Il y a aussi là dedans un script qui lance le tunnel protégé et ne renvoie que son adresse. Et si vous préférez scripter ça vous-même, partez de --output json, qui transformera chaque ligne du log en objet JSON. L'adresse sera alors accessible dans le champ message, et vous pourrez alors l'extraire avec une expression régulière.
Ah et un dernier point avant de lâcher un agent là-dessus sur le portable de votre boulot, je vous invite à lire ce que Proofpoint a documenté concernant des campagnes de malware qui s'appuient sur ce genre de tunnels gratuits. Ça explique pourquoi des outils de sécurité comme Elastic ont des règles qui repèrent cloudflared quand il est utilisé pour exposer un service local. Leur conseil c'est de bloquer les domaines de tunnel quand l'usage n'est pas autorisé, donc si vous comptez utiliser ça dans votre boite, allez voir Dieu Tout Puissant (le sysadmin grognon quoi...) pour lui demander l'autorisation. Il va pester, souffler, éventuellement vous cracher dessus puis finira probablement par accepter, donc pas d'inquiétude ^^.
Et comme la protection par mail est gratuite, au même titre que les Quick Tunnels eux-mêmes, je ne vois aucune raison valable de balancer une démo accessible sur le web sans utiliser cette authentification.

Depuis quelques semaines, il y a un peu de remue-ménage dans notre belle France grâce notamment aux lycéens et étudiants qui sont gavés de leurs conditions de merde pour étudier. Du coup, ils protestent de manière tout à fait légitime, un peu comme avant eux, les soignants, les pompiers, les agriculteurs et j'en passe... Comment leur en vouloir puisqu'à part quelques bandeurs de fascisme et autres agents du chaos à la petite semaine, y'a pas grand monde de très satisfait de ses conditions de vie et de travail en ce moment dans notre chouette pays.
Tout ce qui se passe en ce moment, me parait donc on ne peut plus "naturel", un peu comme quand on a de la fièvre à cause d'un méchant virus.
Mais trêve de blabla, cette révolte de la jeunesse en termes d'organisation est très intéressante à observer puisque les lycéens se coordonnent de manière parfaitement fluide à l'aide de groupes Snapchat / Instagram , sur des groupes WhatsApp ou encore grâce à TikTok qui sert essentiellement à faire tourner les infos. De leur côté, les gilets jaunes quant à eux appellent à manifester le 17 octobre et s'organisent essentiellement via Telegram.
Or quand on lit certains "guides du manifestant" qu'on peut trouver en ligne, ils ne conseillent pas tous la même chose niveau tech. Par exemple, le wiki d'Extinction Rebellion demande d'"éviter au maximum" de venir en manif avec son téléphone, tout comme le guide de la LDH qui recommande de le laisser chez soi ou de prendre un téléphone basique . Alors que la CGT , dans son guide écrit au contraire de "Filmer la scène" quand quelqu'un se fait interpeller, tout comme l' Union étudiante qui pousse à filmer les blocus, en floutant évidemment les personnes présentes.
C'est vrai qu'en cas d'interpellation par ceux qui redeviendront un jour, je l'espère, des "gardiens de la paix", un téléphone resté à la maison ne racontera rien à personne. Et si vous n'avez pas prévu de filmer, c'est encore la meilleure option c'est vrai. Mais si vous venez quand même avec votre smartphone en manif (Rappel : manifester est un droit et c'est légal malgré ce que laissent penser les apparences), voici les 11 trucs à installer ou à configurer avant de sortir de chez vous.
C'est LA messagerie chiffrée de bout en bout que recommandent Amnesty et l' EFF , sur iOS comme sur Android. Depuis 2024, vous pouvez même y créer un nom d'utilisateur pour ne plus distribuer votre numéro à tout le cortège, même s'il faut toujours un numéro de tel pour s'y inscrire. Par contre, inutile de rêver d'y faire migrer tout votre lycée, car un groupe Signal est plafonné à 1 000 personnes.
Attention, Signal n'est pas invisible pour autant. Dans les réquisitions qu'il publie, il n'a jamais fourni que la date de création d'un compte et sa dernière connexion (aucune IP, mais aucune demande française n'y figure non plus). Il reconnaît par contre que son "Sealed Sender" ne cache ni les horaires ni l'IP, et une étude du NDSS montre qu'un serveur qui observe ces horaires pourrait relier deux interlocuteurs en 5 messages. Et comme aucune messagerie ne protège un téléphone déverrouillé, le vrai risque en manif reste le téléphone lui-même, d'où le code long et le verrouillage express plus bas.
Dans Signal, les messages peuvent s'effacer tout seuls après un certain délai que vous déterminez qui peut aller jusqu'à 4 semaines. Et ce qui est cool c'est que vous pouvez fixer un délai par défaut pour toutes les nouvelles discussions plutôt que de faire ça conversation par conversation. Pour régler ça, ça se passe dans Paramètres puis Confidentialité. Signal prévient quand même que celui qui reçoit un message peut toujours en faire une capture écran avant qu'il ne disparaisse mais bon, c'est pas si mal. Pensez également à faire le ménage avant de partir de chez vous, en supprimant les conversations et en quittant vos anciens groupes.
Bonne nouvelle pour les groupes de lycéens, WhatsApp envoie tous ses messages, discussions de groupe comprises, avec le même protocole que Signal, si on en croit son livre blanc sorti en février 2024. Telegram par contre, c'est une autre histoire puisque seuls ses "chats secrets" sont chiffrés de bout en bout, et ils ne se font qu'entre vous et votre destinataire. Le reste est stocké sur leurs serveurs et leur politique de confidentialité prévoit que sur une décision judiciaire valide visant un suspect, Telegram peut transmettre alors votre adresse IP et votre numéro de téléphone. Donc comme canal pour passer des appels, ça passe mais pour vous organiser dans le cadre d'une manif, je vous conseille de prendre autre chose.
Amnesty conseille un code d'au moins six chiffres minimum mais le mieux selon moi c'est de mettre sur votre tel un vrai mot de passe / phrase de passe bien long. Car votre empreinte digitale ou la reconnaissance faciale peuvent servir très facilement à déverrouiller votre téléphone de force. Ils arrivent à obtenir des choses formidables avec des clés de bras autour du cou visiblement... Et l'EFF dit pareil.
Le choix du verrouillage sur Android, à gauche, et le choix du type de code sur iPhone, à droite, jusqu'au code alphanumérique personnalisé (capture EFF, licence CC BY)
Attention quand même, ce code ne vous donne pas le droit de dire "non" puisque, de ce que j'ai compris, l'article 434-15-2 du Code pénal punit de 3 ans de prison et 270 000 € d'amende le refus de remettre "une convention secrète de déchiffrement" sur réquisition. Et la Cour de cassation a jugé le 7 novembre 2022 que le code d'un téléphone peut en être une s'il est équipé d'un moyen de "cryptologie" comme ils disent. Son guide de la LDH détaille les conditions qui doivent être remplies pour que vous soyez légalement obligé de lâcher votre mot de passe. Il faut que ce soit une vraie réquisition et pas un simple "débloque ton téléphone p'tit con" devant le lycée. Le code empêche donc qu'on ouvre votre téléphone sans rien vous demander, et pour le reste, ça se discutera avec votre avocat s'il y a garde à vue.
Si vous conservez néanmoins le déverrouillage par empreinte au quotidien, apprenez à minima le geste qui la coupe. Sur Android , activez d'abord "Afficher l'option de blocage" dans les réglages d'affichage de l'écran de verrouillage, puis un appui simultané sur Marche et Volume-haut fera apparaître "Mode Blocage", qui désactivera le déverrouillage par empreinte ou par visage jusqu'au prochain déverrouillage avec le code.
Sur iPhone , maintenez un bouton de volume et le bouton latéral durant 2 secondes, puis relâchez, et le code redeviendra obligatoire.
Après, le mieux c'est carrément d'éteindre votre téléphone dès que vous croisez des personnes susceptibles d'abuser de leur autorité sur vous.
L'EFF comme Amnesty conseillent également de passer en mode avion quand vous n'avez personne à appeler, ce qui empêche les transmissions et limite le pistage, avec en prime de la batterie économisée pour la journée. Pensez aussi à couper le Wi-Fi et le Bluetooth, ainsi que le service de localisation dans les réglages.
Une fois en mode avion, il vous faut de toute évidence une carte qui marche sans réseau. CoMaps c'est l'idéal pour ça, puisque c'est un projet communautaire né d'Organic Maps et de Maps.Me, qui cherche et calcule ses itinéraires hors ligne, avec uniquement le GPS et sans avoir recours aux données mobiles. Vous pouvez donc consulter la carte localisation coupée, et ne la rallumer que le temps de vous repérer. L'appli est gratuite, dispo sur iOS et Android, et elle assure ne collecter aucune information.
Sachez aussi que filmer reste votre droit puisque d'après le Défenseur des droits , hors des lieux privés, un policier ou un gendarme ne peut pas s'opposer à ce qu'on l'enregistre. Mais avant de publier quoi que ce soit sur les réseaux, il faut flouter ! Signal propose donc depuis 2020 un outil de floutage dans son éditeur d'images, dont le traitement se fait entièrement sur votre téléphone. Signal reconnaît toutefois qu'il ne détecte pas tous les visages à coup sûr, d'où la présence d'un outil "pinceau" pour flouter à la main ce qu'il aurait raté. Vérifiez donc bien chaque photo avant de l'envoyer dans un de vos groupes, ou passez-la dans un outil gratuit d'anonymisation comme celui dont je vous ai déjà parlé.
Sur iPhone, au moment de partager depuis l'app Photos, touchez Options et désactivez la Localisation. La mention "Lieu non inclus" s'affichera alors. Et pour ne plus enregistrer la position du tout, ça se trouve dans les Réglages, Confidentialité et sécurité, Service de localisation, Appareil photo, puis "Jamais". Sur Android, l'app Scrambled Exif retirera les métadonnées des images que vous partagerez. Attention quand même à ne pas trop compter sur cette suppression EXIF qui parfois n'est pas exhaustive selon les applis que vous utilisez.
Des lecteurs m'ont aussi parlé de SimpleX et de Session. SimpleX n'a ni numéro ni identifiant de profil, et il a été audité par Trail of Bits en 2022 et 2024. Par contre, ses serveurs par défaut sont tenus par deux opérateurs seulement, et sa politique de confidentialité admet qu'ils peuvent partager des données sur décision de justice. Les notifications Android arrivent parfois en retard, et il faut que tout votre groupe l'installe (480 000 utilisateurs par mois, d'après lui). Bref, c'est sérieux, mais pour un lycée entier, Signal reste plus réaliste.
Session, je vous le déconseille. Pas de "forward secrecy", un protocole v2 censé corriger ça mis en pause en août 2026, et un dernier audit qui date de 2021.
Cette messagerie passe de téléphone en téléphone par Bluetooth, sans compte ni numéro, et l'Inde s'en est beaucoup servie quand leur gouvernement a coupé le net il y a quelques mois. Sauf que le BISI a noté que Bitchat avait une authentification faible qui permet d'usurper un contact, et des clés qui ne changent pas à chaque message. Donc c'est pas le pied. Quant à Briar , ça ne tourne que sur Android et ne reçoit plus de vraies MàJ... Pour moi, tant que le réseau internet est dispo, Signal fait mieux que ces 2 apps.
Un autre truc important à avoir sur vous, c'est un stylo. En effet, le guide de la LDH conseille d'écrire le nom et le numéro de votre avocat sur votre bras, et d'apprendre par cœur les numéros à appeler, puisque votre téléphone vous sera confisqué en cas de garde à vue. La CGT précise cependant que le nom de l'avocat et son barreau sont suffisants car la police est obligée de le contacter.
Et si vous êtes mineur, la déclaration des droits du ministère de la Justice est claire comme de l'eau de roche : Vous devez être assisté d'un avocat dès le début de votre garde à vue.
Voilà, bonnes manifs à tous, ne lâchez rien et prenez soin de vous car les tirs sont souvent tendus, malheureusement !

Windows 11 dans une machine virtuelle sur un Mac Apple Silicon, ça se fait depuis looooongtemps avec des outils comme Parallels ou UTM. Mais tart, l'outil en ligne de commande qui crée et clone des VM comme on le ferait avec des conteneurs, n'en est pas capable, parce que la virtualisation d'Apple sur laquelle il repose ne gère officiellement que macOS et Linux.
Sauf qu'un dev nommé Mustafa Akin, vient de publier un fork qui permet d'installer Windows 11 avec tart sans un seul clic.
Je viens de le tester sur mon Mac Studio M4 Max avec l'ISO française de Windows 11 et j'ai trouvé que ça fonctionnait super, d'où ce petit tuto.
Pour vous lancer là dedans, il vous faut donc un Mac Apple Silicon sous macOS 26.6 ou 27, Xcode pour compiler tout ça, et bien sûr une ISO de Windows 11 ARM64 ( faudra vous démerder ensuite avec la licence ). Par contre, faut le savoir, ce fork repose sur deux réglages privés d'Apple, non documentés, qu'une mise à jour de macOS pourra shooter à tout moment. Donc ne montez pas votre futur homelab là dessus sans un plan de repli.
Sur son site, Mustafa Akin publie un binaire tout fait, mais j'ai préféré compiler le programme car le script de création du paquet de son fork signe proprement l'application en local avec le droit de virtualisation qui va bien.
git clone --branch windows-guest-extras https://github.com/mustafaakin/tart.git
cd tart
git checkout e4c623c
./scripts/package-windows-preview.sh 0.1.0-windows-preview
export PATH="$PWD/dist/windows-preview/tart.app/Contents/MacOS:$PATH"
La commande export rend ce tart.app accessible au niveau du système prioritaire devant un éventuel tart déjà installé. Il ne reste alors qu'à lui passer votre ISO... tart téléchargera alors les pilotes virtio-win et WinFsp, fabriquera son propre média d'installation et démarrera Windows sans rien demander de plus.
tart create win11 --from-iso ~/Downloads/Win11_Arm64.iso
Ça m'a pris en tout et pour tout 26 minutes pour obtenir cette VM Windows fonctionnelle. Notez également que l'installation force l'anglais américain et que d'autres langues peuvent poser souci mais avec mon ISO française, l'interface est bien restée en français. Seul le clavier est resté en QWERTY au départ.
L'auteur écrit sur son blog que l'install de l'agent doit se faire manuellement pour l'instant mais ce qu'il a oublié de préciser c'est que le pilote viosock, celui qui relie le Mac à la VM, n'est pas dans la liste des pilotes que tart injecte (viostor, viogpudo, NetKVM, viorng et viofs). Résultat, chez moi, tart exec ne fonctionnait pas. Comme ce pilote se trouve dans l'ISO virtio-win que tart a gardée dans son cache, il suffit donc de le copier dans un dossier partagé, contenant l'agent publié avec la préversion :
hdiutil attach -readonly -nobrowse ~/.tart/cache/windows/sha256:303f7ae40dad495d6ae474fdc571df58958a4dbc5c37a522d80f9a203867949d.iso
mkdir -p ~/tart-share
cp -R /Volumes/virtio-win-0.1.302/viosock/w11/ARM64 ~/tart-share/viosock
hdiutil detach /Volumes/virtio-win-0.1.302
curl -L -o ~/tart-share/tart-guest-agent.exe https://github.com/mustafaakin/tart/releases/download/windows-preview-0.1.0/tart-guest-agent.exe
tart run win11 --dir=share:$HOME/tart-share
Comme la commande tart run garde la main, laissez-la tourner et ouvrez un second terminal pour la suite, en y refaisant l'export ci-dessous depuis le dossier tart, sinon vous appellerez un autre tart.
export PATH="$PWD/dist/windows-preview/tart.app/Contents/MacOS:$PATH"
Au démarrage, la session admin (mot de passe admin) s'ouvre alors toute seule et vous arrivez sur le bureau. Le dossier partagé apparaît sur le lecteur Z:, dans un dossier share. Ouvrez PowerShell en administrateur (et n'oubliez pas que le clavier est en QWERTY) pour installer le pilote, puis déclarer l'agent comme tâche lancée à l'ouverture de session, parce que c'est dans cette session que sont le presse-papiers et le bureau :
pnputil /add-driver Z:\share\viosock\viosock.inf /install
mkdir "C:\Program Files\Tart"
copy Z:\share\tart-guest-agent.exe "C:\Program Files\Tart\"
$a = New-ScheduledTaskAction -Execute "$env:SystemRoot\System32\conhost.exe" -Argument '--headless "C:\Program Files\Tart\tart-guest-agent.exe" --run-agent'
$t = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
$s = New-ScheduledTaskSettingsSet -ExecutionTimeLimit ([TimeSpan]::Zero) -RestartCount 999 -RestartInterval (New-TimeSpan -Minutes 1)
$p = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive -RunLevel Highest
Register-ScheduledTask -TaskName "Tart Guest Agent" -Action $a -Trigger $t -Settings $s -Principal $p
Start-ScheduledTask -TaskName "Tart Guest Agent"
Get-Service VirtioSocketWSP
Le service VirtioSocketWSP doit alors afficher Running. S'il n'existe pas, c'est que le pilote n'est pas passé et tart exec ne répondra pas. Relisez alors la sortie de pnputil et vérifiez que le dossier viosock contient bien viosock.inf.
Retournez ensuite dans le terminal du Mac et entrez cette commande pour connaitre le numéro de version du Windows :
tart exec win11 cmd /c ver
Microsoft Windows [version 10.0.26200.8037]
Informations système dans la VM : Windows 11 Famille, build 26200, sur une "Apple Virtualization Generic Platform" en ARM64
L'intérêt de tout ça c'est surtout d'avoir un Windows jetable. Vous devez arrêtez d'abord la VM de base avec tart exec win11 shutdown /s /t 0 puis pour cloner la VM, faites un : tart clone win11 w1 . C'est instantané, et y'a plus qu'à la démarrer avec un tart run w1 --no-graphics.
Avec --no-graphics ça démarre sans fenêtre et vous pouvez alors lancer ce que vous voulez avec tart exec. Ensuite pour tout stopper, un petit tart stop w1, et un tart delete w1 pour supprimer la VM et voilà...
En tout cas, n'en faites pas votre Windows de tous les jours car il n'y a ni son ni accélération graphique, pas de possibilité de suspendre le Windows et la virtualisation imbriquée se fige dès que Windows veut démarrer WSL2 ou Hyper-V.
La commande Get-Tpm confirme aussi l'absence de TPM. Et selon l'auteur, le disque est le point faible de ce Windows ARM 64 sous tart, en partie parce que tart rempli très vite les SSD avec ses logs. Pensez aussi à changer le mot de passe, puisque le compte est admin avec le mot de passe admin, et que SSH est ouvert sur le réseau interne de tart.
Mais pour tester des logiciels Windows ou scripter des trucs, ça tient bien la route.
Source : Mustafa Akin
![]()
AirCard , c'est une appli macOS gratuite qui permet de remplacer l'image par défaut d'une carte dans Apple Wallet, directement depuis votre Mac relié à l'iPhone par un câble USB et tout ça sans jailbreak. Je l'ai essayée sur mon iPhone 16 Pro Max et ça marche du tonnerre. Attention quand même, l'appli n'a aucun bouton pour revenir en arrière, mais ne vous inquiétez pas je vais tout vous expliquer.
Ce tour de passe-passe nous vient d'AirLift, une faille du service AirTraffic, celui là même qui synchronise les médias d'un Mac vers iOS. Et AirLift s'en sert pour lire et écrire dans des dossiers qu'il n'est pas censé toucher, depuis un Mac déjà appairé avec l'iPhone. Cette petite vuln a été testée à partir de iOS 18.0, et Apple peut évidement la corriger quand elle veut mais ce serait quand même vraiment dommage parce que c'est bien cool. Maintenant rassurez vous, côté paiement, rien ne bouge ou n'est transféré ou créé. On ne change que l'image d'une carte du wallet c'est tout !
Je vous propose maintenant de rentrer dans le dur.
Il vous faut donc un Mac (Apple Silicon ou Intel), un iPhone, un câble USB qui transmet les données et une carte déjà ajoutée à Wallet. Téléchargez AirCard.dmg dans les releases du dépôt, ouvrez-le et glissez l'appli dans le dossier des Applications. Si macOS refuse de la lancer parce que l'éditeur est inconnu, faites un clic droit sur l'appli, Ouvrir, puis Ouvrir une seconde fois. Sinon, faut passer par Sentinel ou par cette commande qui retire le blocage :
sudo xattr -cr /Applications/AirCard.app
Branchez l'iPhone au Mac en USB, déverrouillé, et acceptez de faire confiance à l'ordinateur. Dans AirCard, restez sur l'onglet Apple Wallet et cliquez sur Scan Cards. Sur l'iPhone, double-cliquez sur le bouton latéral et Apple Pay s'ouvrira comme quand vous faites un paiement, avec Face ID. Une fois authentifié, touchez la carte à relooker, et une deuxième fois si rien ne bouge. Ce geste permet en fait à AirCard de récupérer l'identifiant de la carte (un hash), et elle peut apparaître ensuite dans la fenêtre du Mac.
Si le scan ne trouve rien, ouvrez Log dans AirCard et cherchez "Connected to the unified device log stream". Relancez ensuite un scan, authentifiez-vous et touchez vraiment la carte, ou passez d'une carte à l'autre. Si ça bloque encore, débranchez, déverrouillez l'iPhone et rebranchez. Des utilisateurs disent sur le GitHub du projet que le scan ne détecte pas toutes les cartes voire aucune avec cette 1.2.5. Moi j'ai pas eu de problème mais il arrive parfois que iOS remplace certaines valeurs par "private", et le scanner ne peut alors pas les récupérer.
Ensuite, cliquez sur l'emplacement de la carte où il y a le symbole +, ou glissez-y directement une image. AirCard la recadre alors automatiquement en 1536 × 969 pixels bien centrée avec le ratio d'une carte. Cela veut dire que peu importe le design que vous voulez utiliser, gardez bien ce qui est important pour vous au centre de l'image. Ensuite cliquez sur Flash Skins et ça appliquera votre image sur votre carte dans Apple Wallet. Chez moi, l'opération a pris entre 30 secondes jusqu'à parfois 1 min (j'ai pas super chronométré non plus, hein) mais le flash est allé jusqu'au bout à chaque fois.
Ensuite quittez Wallet depuis le sélecteur d'apps et relancez-le, ou redémarrez carrément l'iPhone et hop, votre nouveau visuel de carte apparaîtra.
J'ai donc comme beaucoup commencé par un skin d'Amex Black, sans chichi sur l'une de mes CB, histoire de frimer...
Puis sur ma seconde CB, je me suis fait un skin de carte Vitale maison. Au départ, je me suis fait un PNG avec Pixelmator, tout ce qu'il y a de plus normal avec la bonne taille et tout et tout, mais ça n'a jamais voulu se mettre sur ma carte. Donc, j'ai refait l'image en important simplement mon visuel dans l' éditeur de cardart.cc , qui exporte un PNG clean au bon format en 1536 × 969 et ça a fonctionné.
Et voilà, quand je paie en sans contact, maintenant ça donne ça... Je pense que les caissier.es vont flipper.
D'ailleurs, si vous cherchez d'autres visuels, il y en a plein sur cardart en téléchargement gratuit. La carte d'identité de Bob l'Eponge m'a tenté aussi, je l'avoue....
Notez que AirCard sait aussi habiller le clavier du code de verrouillage avec des thèmes en .passthm. Suffit de vous rendre dans l'onglet Passcode, vous glissez le fichier passthm, vous l'appliquez puis vous redémarrez, et là, normalement, vous avez un super beau clavier. Pour ma part, je n'ai pas essayé parce que je m'en fous un peu, mais bon, c'est là.
Ah et sinon, si vous n'avez pas de Mac, il y a aussi une version AirCard-iOS qui fera le taf uniquement depuis l'iPhone, mais ça exige iOS 18 minimum, une installation par sideload (SideStore, AltStore, TrollStore ou LiveContainer) et un appairage par le mode développeur. Donc, c'est un peu plus relou qu'avec l'application pour macOS.
Et le petit piège dont je vous parle au début, c'est que la version 1.2.5 de Aircard n'a pas de bouton pour restaurer le visuel d'origine. Donc, si celui-ci ne vous plaît plus, vous pouvez soit le remplacer par un autre, soit vous devez retrouver votre visuel d'origine en téléchargement sur le web. Après, peut-être qu'en supprimant la carte du wallet et en la recréant, ça réparera le visuel, je ne sais pas... Faudra tester !
Source : AirCard

Sauvegarder un dossier sur un serveur, vérifier l'espace disque du PC du salon, relancer un service sur le NAS, et j'en passe... Chez moi ça se concrétise au travers de crontabs différents et de tâches planifiées Windows, et malheureusement, comme je n'ai pas toujours le nez dessus, le jour où l'une d'elles tombe en rade, bah je m'en rends compte des jours, voire des semaines plus tard... Heureusement, il existe un outil qui s'appelle CTFreak et qui permet de centraliser tout ça derrière une seule interface web !
CTFreak, c'est donc un ordonnanceur de tâches auto-hébergé, édité en solo par Jean-Yves Pellé, un développeur français, et cela depuis presque 4 ans. Vous l'installez chez vous, il se connecte à vos machines en SSH ou en WinRM, et il y exécute tout ce que vous lui demandez. C'est top parce que grâce à ça, il n'y a même rien à installer sur les machines pilotées.
CTFreak vous propose ainsi 9 types de tâches à créer. La commande locale par exemple tourne sur la machine qui héberge CTFreak, et la commande distante fait la même chose mais sur un ensemble de machines de votre choix. Ensuite viennent les tâches de type scripts bash et PowerShell, les playbooks Ansible, les scripts SQL, ou encore les rapports SQL qui sortent de vrais tableaux et autres graphiques directement depuis vos bases de données (pratique pour illustrer vos rapports).
Il y a aussi la classique requête HTTP, pour taper sur une API ou vérifier qu'un site répond. Et surtout le "workflow", c'est-à-dire une tâche dont le boulot est d'en déclencher d'autres, en série ou en parallèle. Vous pouvez même imbriquer des workflows dans des workflows, si le cœur vous en dit, et surtout, si vous n'avez pas peur de vous y perdre.
Les neuf types de tâches proposés à la création, de la commande locale au rapport SQL
Pour installer CTFreak, vous récupérez le binaire, vous le rendez exécutable, et c'est finito ! C'est un fichier unique de 56 Mo, sans la moindre dépendance, dispo en amd64 comme en arm64 (j'ai fait mes tests sur une Ubuntu 24.04 en ARM). Et il est également dispo en paquets Docker, Snap et Cloudron, mais ils tournent en bac à sable et n'embarquent pas Ansible, donc si les playbooks vous intéressent, restez sur le binaire. Comme l'URL de download se termine par l'architecture, pensez bien à remplacer amd64 par arm64 si votre machine est en ARM.
sudo curl -sL https://ctfreak.com/download/release/latest/linux/amd64 -o /usr/local/bin/ctfreak
sudo chmod +x /usr/local/bin/ctfreak
ctfreak run
Ouvrez ensuite http://IP-du-serveur:6700 et connectez vous avec admin / ctfreak. Changez ce mot de passe tout de suite dans le menu Profile, et surtout n'exposez pas ce port sur Internet sans un reverse proxy devant. En effet, cette interface va bientôt contenir les accès de toutes vos machines.
Ensuite pour en faire un service qui redémarre tout seul, copiez l'unité systemd de
la doc d'installation
dans /etc/systemd/system/ctfreak.service, puis activez-la.
sudo systemctl daemon-reload
sudo systemctl enable --now ctfreak
Et voilà, vous êtes prêts à commencer !
Tout se passe dans un projet, donc vous en créez un (j'ai appelé le mien Homelab), puis vous cliquez sur New task. Le plus simple pour commencer est la commande locale. Je lui ai collé une archive de mon dossier Documents, et coché Scheduled avec une expression cron pour 3h30 du matin.
tar -czf /home/korben/sauvegardes/documents-$(date +%F).tar.gz -C /home/korben Documents
Le bouton Execute permet de lancer la tâche tout de suite, pour ne pas attendre 3h30 pour savoir si ça marche, et la page d'exécution affiche le statut, la durée et le journal complet. La fiche du projet vous montre ensuite les deux informations qui manquent toujours avec cron : 1/ quand est ce que la tâche est passée pour la dernière fois, et 2/ si elle s'est bien terminée.
Là où ça devient intéressant, c'est quand vous ajoutez d'autres machines. Côté CTFreak il n'y a aucun agent à déployer, mais côté cible il faut quand même activer le serveur SSH intégré de Windows (ou WinRM, au choix) et installer PowerShell 7.2 ou plus récent, sans quoi les journaux d'erreur remonteront mal. Vous enregistrez ensuite le mot de passe ou la clé dans Credentials, vous déclarez la machine dans Nodes avec son OS, son IP et son identifiant, et le bouton Ping vous dira tout de suite si la connexion passe.
Ensuite vous créez une tâche de type Powershell Script, moi je l'ai planifiée tous les lundis à 8h. Le champ Node Set filter accepte ensuite des noms de machines, mais surtout des tags : j'ai mis #windows, donc toute machine que je taguerai comme ça entrera dans la tâche sans que je la retouche. C'est bien fichu hein ?
$libre = [math]::Round((Get-PSDrive C).Free / 1GB, 1)
Write-Host "Espace libre sur C: $libre Go"
if ($libre -lt 30) { Write-Error "Alerte : moins de 30 Go libres" ; exit 1 }
Le script PowerShell, l'expression cron du lundi matin et le filtre #windows qui trouve une machine
Et le journal qui remonte ensuite est vraiment complet. On y retrouve chaque ligne horodatée à la microseconde, la sortie du script, et le code de retour qui décide du statut. Ma machine Windows n'ayant que 22,1 Go de libre, la tâche a échoué comme prévu et s'est affichée en rouge dans la liste.
Le journal de l'exécution ratée : la sortie du script sur la machine distante, puis la sortie en erreur
Alors bien sûr, une tâche qui plante sans prévenir personne, ça ne sert pas à grand-chose. C'est pourquoi CTFreak permet d'envoyer des alertes sur Discord, Slack, Mattermost, Microsoft Teams, Telegram, ntfy ou par mail. Il peut même ouvrir directement un ticket dans GitHub, GitLab, Jira, Linear ou YouTrack quand un truc casse.
Dans l'autre sens, chaque tâche expose un webhook entrant, ce qui permet de la déclencher depuis un dépôt Git ou n'importe quel outil tiers, et une API REST complète fait pareil mais par script.
Le reste ensuite, c'est que du confort qui se découvre quand on utilise l'outil... Il y a par exemple une explorateur de fichiers qui parcourt vos machines depuis le navigateur, des calendriers qui empêchent une tâche de tomber un jour férié, ou encore la possibilité de partager vos projets entre équipe avec différents droits d'accès. L'authentification passe même par votre fournisseur OpenID Connect si vous en avez un.
Et les données dans tout ça ?
Hé bien elles restent bien au chaud dans un dossier avec une base SQLite dedans. C'est pratique parce que, si vous voulez sauvegarder votre ordonnanceur, il suffit juste de faire une copie de ce dossier.
Maintenant, avant de vous lancer, sachez que l'édition gratuite vous limite à 8 tâches, avec 1 paramètre par tâche, 3 utilisateurs, 1 calendrier, 1 notificateur d'alerte et 1 notificateur de tickets. Surtout, elle n'exécute rien en parallèle. Vos tâches passent une par une, quel que soit le nombre de machines visées. Par contre, bonne nouvelle, le nombre de machines pilotées n'est bridé dans aucune édition. Vous pouvez donc déclarer 3 nœuds comme 50 sur la version gratuite, c'est le nombre de tâches qui limité dans la version gratuite, mais pas la taille de votre parc.
Autre chose à savoir aussi, c'est que les secrets (mots de passe...etc) sont stockés tels quels en clair dans la base SQLite. C'est bien indiqué dans la documentation, donc ce n'est pas une surprise, mais heureusement, y'a une commande qui permet de basculer tout ça en AES-256-GCM :
sudo systemctl stop ctfreak && ctfreak encrypt AES && sudo systemctl start ctfreak
Faites-le, mais préférez quand même une clé SSH dédiée à un mot de passe de compte.
Côté tarifs, la page affiche l'édition Pro à 369 € la première année puis 299 €, la Business à 599 € puis 519 €, et la Sovereign à 899 € puis 799 € pour les environnements coupés d'Internet, le tout par instance.
Et si vous partez sur l'édition Pro, le code KORBEN15 vous fait 15 % de réduction sur la première année. Il est valable jusqu'au 31 octobre 2026 inclus.
Reste que pour du homelab, la version gratuite est téléchargeable ici et suffit largement pour se faire une idée.

SlopTotal est un projet qui se présente lui-même comme le "VirusTotal du texte IA", alors faut pas s'étonner que ça m'intéresse ! Vous y collez un texte, un PDF ou une URL, et ensuite 23 détecteurs le passent au crible, en parallèle à l'aide de classifieurs neuronaux, de tests statistiques et autres heuristiques. Ensuite, un score calibré de 0 à 100 résume leurs avis et doit vous dire normalement si tel ou tel texte a été écrit avec de l'IA
J'ai donc installé ça sur ma machine puis passé 36 textes divers et variés (IA et humains) dans mon instance. Parmi eux, 24 ont été écrits par Claude, ChatGPT et Gemini (12 en français, 12 en anglais), avec comme consigne d'avoir un ton neutre, et pour d'autres un ton de "blogueur" ^^. Les 12 autres textes, eux, sont humains. Je lui ai donné 6 de mes articles écrits entre 2018 et 2021 ainsi que 6 billets de blog tech en anglais publiés entre 2020 et 2021.
Voici donc mes résultats...
Sur les 12 textes humains, 4 ont été pris pour de l'IA (verdict "Likely AI-generated" ou pire), ce qui représente 33 %, et ils étaient tous en anglais !! Et sur mes 24 textes écrits par une IA, 9 ont été pris pour une réalisation humaine (verdict "Clean"), ce qui équivaut à 38 %. Ah et ils étaient tous en français.
Le README annonce pourtant mieux comme résultats donc je suis assez étonné (1 texte humain sur 66 classé "Likely AI"), mais sur d'autres genres de textes, comme la presse ou les livres et en 100% english. Alors oui, mon échantillon est petit, mais pour savoir si un texte vient d'une IA, SlopTotal ne me semble pas fiable
Le rapport de SlopTotal pour un article de 455 mots écrit par Claude : 23,6 sur 100, verdict "Clean", 4 moteurs sur 23 en alerte.
Le rapport de SlopTotal pour un billet du blog d'avril 2020 : 56,9 sur 100, "Likely AI-generated", 9 moteurs sur 23 en alerte.
Après c'est pas un nouveau problème car je pense par exemple à OpenAI qui a retiré son propre classifier en juillet 2023 parce que la précision était trop faible ( The Register ). Vanderbilt a débranché également celui de Turnitin le mois suivant et des chercheurs de Stanford ont testé en 2023, 7 détecteurs en leur faisant analyser 91 rédactions humaines TOEFL de non-anglophones et en moyenne, ils en ont pris 61 % pour de l'IA.
Toutefois, 2 études plus récentes ont également testé des détecteurs commerciaux (pas SlopTotal donc...), et sur du texte humain ancien, elles se rejoignent. Le NBER trouve par exemple un taux de faux positifs quasi nul chez Pangram, de 0,1 à 0,3 % chez OriginalityAI et d'environ 0,7 % chez GPTZero, sur 1 992 textes humains d'avant 2020. De son côté, le chercheur Jonathan Karr et ses collègues n'ont trouvé aucun positif IA en testant avec Pangram et GPTZero, des tonnes de résumés textes datés de 2013 à 2015.
Par contre, ces études divergent sur l'humanisation. Par exemple, selon le NBER, Pangram tient bon face à l'humanizer StealthGPT alors que moins de 4 % des textes IA passés par Undetectable AI restent signalés chez Karr. Ce dernier note aussi qu'à l'inverse, un résumé écrit par un humain et simplement retouché par une IA est quant à lui, signalé comme IA dans 38 à 80 % des cas. Ça pourrait expliquer pas mal de petits problèmes de "littérature" qu'on a en ce moment, looool.
Bref, installez-le pour vous faire votre propre idée, en commençant par des textes dont vous connaissez l'auteur, mais surtout pas pour "accuser" quelqu'un. Je pense d'ailleurs qu'aucun détecteur ne devrait être la seule preuve d'une accusation... Par exemple, un texte humain qui est passé dans un correcteur orthographique full IA ou alors un texte qui est dicté avec un modèle de speech to text IA peuvent très bien être reconnus comme étant des textes IA alors qu'en fait ce sont juste des textes écrits / dictés par des humains et qui ont été "un peu" modifiés ou "un peu" réorganisés par un LLM. Je dis ça parce que c'est exactement ce que fait mon application de reconnaissance vocale Kassis , qui dispose de fonctionnalités de correction et de réécriture... héhé.
Source : SlopTotal sur GitHub

Hier, le bidouilleur Yash Garg a publié sur son blog une astuce incroyable permettant de diffuser le contenu de sa PS5 sur Discord sans avoir besoin de carte d'acquisition. Son astuce c'est tout simplement de faire croire à sa console que son Mac EST le serveur de Twitch qui doit recevoir la vidéo et comme j'ai trouvé ça cool, je vous explique.
Le point de départ en fait, c'est que Yash diffuse souvent ses parties à des potos sur Discord. Pourtant, cette bonne vieille PS5 ne sait pas partager le stream de ses jeux aussi facilement. Elle peut juste diffuser par défaut vers YouTube et Twitch, à condition d'y être connecté via une option prévue pour ça par Sony. Cela veut dire que pour streamer vers Discord, sa seule vraie option c'est donc la carte d'acquisition, mais celles qui marchent bien coûtent un rein et notre ami ne voulait pas investir.
Il s'est donc mis à utiliser Remote Play qui permet de jouer à la PS5 depuis un Mac. Grâce à ça, la console se connecte à son MacBook et il partage l'écran du Mac sur Discord. Sauf que cela exige de brancher la manette et les écouteurs sur le Mac, et en plus, parfois ça lag de fou au niveau des commandes. Sans parler de la qualité de l'image, qui est choisie par la console, sans possibilité de réglage par l'utilisateur. Pas cool.
Alors, il a imaginé une solution qui je pense va vous intéresser si vous voulez streamer vos parties de PS5 ailleurs que sur Twitch et Youtube. En fait, comme la PS5 ne connaît pas par cœur l'adresse de Twitch, elle la demande aux serveurs DNS à chacune des diffusions. Du coup, celui qui contrôle ce DNS contrôle où se dirige le flux. Yash a donc monté sur son Mac un petit serveur DNS maison qui renvoie tout simplement l'adresse IP du Mac à la place de celle de Twitch.
Il a ensuite paramétré son routeur (un GL.iNet sous OpenWrt) pour forcer l'utilisation de ce DNS pour sa console, sans rien modifier sur la PS5. Cette dernière pousse alors son flux en 1080p à 60 fps vers le Mac, qui le lit, tout ça avec moins d'une seconde de délai avant de le diffuser sur Discord. L'ami Yash s'en sert chaque jour depuis quelques semaines et pour le moment, il n'a pas rencontré le moindre souci.
Par contre, ça ne passe pas avec YouTube car la console envoie bien sa vidéo au Mac, mais vérifie également régulièrement auprès de YouTube que le direct est bien en cours de diffusion. Et comme rien n'arrive, bah elle coupe tout simplement la diffusion au bout d'une minute.
Voilà, si ça vous intéresse, il a fait un article complet où il détaille tout, du DNS au routeur, avec le code de sa petite application qu'il a écrite et qui se loge dans la barre de menu de son Mac. Voilà, si ça vous tente, c'est par ici.

Jev, je ne l'ai jamais utilisé mais Kev, en revanche, je l'ai branché dans mon outil de sélection de sujets de veille pour qu'il me dise notamment si un sujet correspond à ce qui me plaît ou pas. C'est en cours de test, donc je ne vais pas vous livrer de conclusion hâtive sur si ça fonctionne bien ou pas, mais si je vous en parle, c'est parce que Sylvain Peyronnet, le papa du moteur de recherche français Ibou , publie à son tour 3 modèles de la même famille, baptisés ArseneLupin, conçu également pour faire du décisionnel
Pour ceux qui ne suivent pas l'actualité IA, le nouveau truc à la mode en ce moment, c'est Jev, un modèle maison de
TypeSafe
qui est le premier de ce qu'ils appellent les modèles System One. Au lieu de générer du texte qu'il faut ensuite parser, ce reçoit un état (un texte, un ticket, un objet JSON) et des questions typées : oui ou non (noul), un choix parmi plusieurs options (choice) ou une note sur une échelle (score). Et il renvoie pour chacun de ces choix, des probabilités que votre code peut ensuite exploiter directement pour trier, faire du routage ou prendre des décisions. Par exemple, avec ça, on peut faire de la qualification de tickets de bug ou de l'anti-spam, ce genre de choses.
Alors forcément, suite à ça, des clones ouverts ont débarqué. Le premier que j'ai découvert, c'est Kev , de Jared Palmer, qui s'appuie sur Qwen3.5 et Qwen3.8, soit 0,8 à 27 milliards de paramètres, et laya qui part d'un encodeur ModernBERT-large pour 421 millions de paramètres au total.
Perso, avec Kev dans mon outil de veille, Pour le moment, j'ai un peu de mal à voir si c'est mieux qu'une décision prise par un Qwen 3.6 classique qui génère une réponse textuelle mais Kev a été entraîné sur des textes de 384 tokens au max, et les articles qui tombent dans ma veille dépassent largement ce gabarit...
ArseneLupin, c'est donc la version d'Ibou, annoncée par Sylvain la semaine dernière. Sa v1.1 repose donc sur Qwen3.5-4B, la mini sur Qwen3.5-0.8B et ArseneLupinstral sur Ministral 8B. Les poids sont sous licence Apache 2.0 et le code pour s'en servir et l'intégrer est fourni, mais pas le code d'entraînement ni les données.
C'est encore jeune, donc il n'y a pas eu de benchmark indépendant, mais Ibou en a fait et voici ce qu'ils obtiennent avec une classification d'intentions de recherche en dix catégories. Avec la 1.1, ils obtiennent 50,7 % de bonnes réponses, contre 39,7 % pour la mini et 43,9 % pour Jev 1.13.
Bref, ce sont leurs mesures, mais si elles sont justes, ça veut dire qu'Arsène Lupin est plus efficace que Jev.
Alors pour ce tuto, j'ai pris la v1.1 qui est la plus "balèze".
À la fin de cette section, vous aurez donc un serveur local qui crache du JSON accessible sur le port 8000. Il vous faut Python 3.11 ou une version plus récente et une 10aine de Go libre puisque le modèle complet pèse 9,3 Go en bfloat16.
J'exclus au téléchargement le dossier gguf, qui contient la version 8 bits de 4,5 Go destinée à llama.cpp. Pour démarrer, il faut donc créer un environnement virtuel, puis récupèrer le modèle, et installe le code de service avec la version de transformers qui va bien, c'est à dire la 5.17.0 :
python3 -m venv lupin && source lupin/bin/activate
pip install -U huggingface_hub
hf download IBOU-SEARCH/ArseneLupin-v1.1 --local-dir arsenelupin-v1.1 --exclude "gguf/*"
cd arsenelupin-v1.1
pip install ./code "transformers==5.17.0"
Par défaut, le fichier serve.yaml envoie le modèle sur une carte NVIDIA (cuda:0). Sur un Mac, il faudra donc le basculer sur le GPU d'Apple (mps), et sur une machine sans GPU, ce sera cpu. Je pense que je ne vous apprends rien, vous avez l'habitude,
Ensuite, on lance le serveur. Notez juste que sous Linux, le sed s'écrit sans les deux apostrophes après le -i. :
sed -i '' 's/cuda:0/mps/' serve.yaml
python -m arsenelupin serve --config serve.yaml --calibration calibration/default.json --port 8000
Le serveur ArseneLupin v1.1 à l'écoute sur le port 8000, poids chargés
Au bout de quelques secondes, le serveur écoutera sur 127.0.0.1:8000. Quant à la version GGUF, vous pouvez, si vous voulez, le faire tourner dans un llama.cpp ou équivalent à condition d'en avoir un assez récent qui connait l'archi de Qwen3.5.
Pour tester, je me suis inspiré de mon outil de veille. On donne au modèle le titre et le résumé d'un sujet et on lui demande si ça parle d'un outil qu'on peut installer, dans quelle rubrique il faut le ranger et à quel point ça pourrait intéresser des gens comme vous, c'est à dire des lecteurs technophiles / bidouilleurs.
Placez donc ça dans un fichier nommé veille.json, dans le dossier du modèle :
{
"state": {
"titre": "ArseneLupin, trois modèles de décision publiés par Ibou",
"resume": "Le moteur de recherche français Ibou publie sur Hugging Face trois modèles qui répondent par oui ou non, par un choix ou par une note, avec des probabilités. Les poids sont sous licence Apache 2.0 et le code de service est fourni."
},
"questions": {
"installable": {"type": "noul",
"instructions": "Le texte présente-t-il un outil que le lecteur peut installer lui-même ?"},
"rubrique": {"type": "choice",
"instructions": "Dans quelle rubrique ranger ce sujet ?",
"criteria": {"ia": "Intelligence artificielle et modèles de langage",
"dev": "Outils pour développeurs et infrastructure",
"securite": "Sécurité informatique, failles et vie privée",
"materiel": "Matériel, gadgets et bricolage électronique"}},
"interet": {"type": "score",
"instructions": "Ce sujet intéressera-t-il un lecteur technophile qui aime tester des outils ?",
"criteria": ["Pas du tout", "Un peu", "Beaucoup"]}
}
}
Puis dans un second terminal ouvert dans le même dossier, tapez la ligne de commande curl suivante pour lancer l'évaluation avec ArseneLupin.
curl -s http://127.0.0.1:8000/v1/systemone -H 'Content-Type: application/json' -d @veille.json | python3 -m json.tool
La réponse à la requête de veille : "ia" à 0,72, un oui/non hésitant à 0,53 et un score de 1,47
Comme vous pouvez le voir, pas une ligne de texte généré, chaque question revient avec ses probabilités. On voit donc que la rubrique "ia" l'emporte à 0,72, loin devant "dev" à 0,19, et le niveau "Beaucoup" ressort à 0,59 pour l'intérêt, ce qui donne un score moyen de 1,47 sur une échelle qui va de 0 à 2. Par contre, pour savoir si c'est un outil installable, le modèle hésite quand même un peu avec un timide 0,53 de probabilité pour le oui.
Il renvoie quand même une indication qui est plutôt importante à savoir là décision : "decision": true, car aucun seuil n'est appliqué côté serveur (c'est ce que dit le "decision_status": "unthresholded"). C'est donc à votre code de décider qu'en dessous de 0,7, par exemple, la décision revient à un humain plutôt que de partir dans la base de données automatiquement. Sur mon Mac Studio M4 Max, la requête a pris entre 2,4 et 2,8 secondes pour ces huit options.
J'ai fait un 2ème essai avec un commentaire de spam bien grossier : "Super article !!! Pour gagner 500 € par jour depuis chez vous, cliquez vite sur mon profil, places limitées." La v1.1 le classe en spam à 0,86 et lui colle un ton positif à 0,78, ce qui est vrai au premier degré. Et la version mini du modèle répond deux fois plus vite, en 0,8 seconde, mais descend à 0,76 sur le spam et hésite sur le ton... À voir donc si ça suffit pour vous d'utiliser le modèle mini ou pas, selon vos besoins.
Le code livré avec le modèle se lit facilement et la mécanique est plutôt simple à capter. En fait chaque option devient une question oui/non posée au Qwen affiné, du genre "ce candidat décrit-il la bonne réponse ?".
Ainsi, 4 catégories pour classer un contenu se résume en 4 questions sur le même texte accompagnée d'une petite tête de lecture (2 561 paramètres sur la v1.1) qui transforme le dernier état caché du modèle en score. Un softmax répartit ensuite ces scores en probabilités, et la confidence n'est rien d'autre que la plus forte d'entre elles...
Pour que ça reste rapide malgré toutes ces passes, le serveur lit une seule fois le texte commun aux options, puis calcule toutes les options simultanément.
En fait avec ArseneLupin, on reproduit le principe de Jev mais avec un LLM ouvert (Qwen) en ne lui faisant produire qu'un seul token, limité aux choix proposés. Ce qu'apporte Ibou, c'est donc un modèle LLM ultra affiné (Autant qu'un bon Saint Nectaire) pour ce type d'exercice de prise de décision.
Reste ensuite la confiance à accorder à ces probabilités. Dans le dossier calibration, vous verrez des températures ajustées selon les trois workflows d'exemple fournis par Ibou, et il y a également, dans le fichier default.json, une calibration par défaut. C'est celle-là qu'on a utilisée dans notre exemple, mais vous pouvez aussi régler vous-même votre propre température ajustée selon vos usages.
Maintenant, avant de lui confier quoi que ce soit, posez-vous un peu et donnez-lui une cinquantaine d'exemples que vous avez déjà classés à la main. Comme ça, vous pourrez comparer ArsèneLupin et le LLM que vous utilisez d'habitude pour savoir qui est le plus fiable. N'hésitez pas à y mettre aussi des textes plus ou moins longs parce que le serveur accepte jusqu'à 32 768 tokens par option. Ça tombe bien parce que ça me gênait un peu dans mon intégration avec Kev sur mon outil de veille. Donc je pense que je vais rapidement basculer sur ArsèneLupin pour ma veille en remplacement de Kev.
Et si vous venez de Jev, attention, la requête a la même forme mais pas la réponse !! Pour une question oui/non, Jev renvoie un champ noul là où ArseneLupin renvoie un p_yes, et pour une note, ArseneLupin range ses probabilités dans une liste quand Jev utilise un dictionnaire.
Cela veut dire qu'un client écrit pour l'API de TypeSafe ne lira pas du tout le résultat de ArseneLupin tel quel, donc prévoyez une petite couche de conversion avant de mettre les deux en concurrence sur vos data.

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 !
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é.
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 ?
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.
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.
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

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 !

Un emplacement M.2 finalement, ce n'est rien d'autre qu'un bonne vieille connexion PCIe d'une à quatre lignes selon la machine (sauf quand il est câblé en SATA, mais ça, j'en reparle à la fin). Et en général, comme le montre la photo ci-dessous, ce qu'on y met, c'est un SSD pour avoir du stockage rapide et efficace
Emplacement d'un M.2 sur la carte mère d'un laptop ( source )
Mais aujourd'hui, on va s'ouvrir un petit peu l'esprit sur cet emplacement M.2, parce que OUI, rien ne vous oblige à y mettre un SSD !
Mais avant de commander quoi que ce soit, sortez le manuel de votre carte mère ou la doc de votre mini-PC et regardez le type (PCIe ou SATA) de votre connecteur M.2, le format accepté et surtout le nombre de lignes de cet emplacement.
Le nombre de lignes, c'est le nombre de voies de circulation entre la carte M.2 et le processeur. Plus il y en a, plus ça va vite, donc en général, pour une carte réseau, une ligne (x1) ou deux (x2) suffisent. Mais si vous partez sur une carte graphique, il faudra 4 lignes minimum (x4).
Par exemple, le Beelink ME Mini , lui, dispose de 5 emplacements PCIe 3.0 x1 et un seul en x2. Et sur une ASRock B850 Pro-A , le 4e emplacement M2 tourne en x4... mais retombe en x2 dès qu'un disque occupe l'un des autres ports M.2 en SATA3.
Regardez aussi ce que l'emplacement partage, car sur cette même carte mère ASRock, occuper par exemple le 3ème emplacement désactive purement et simplement le slot PCIE2. Vérifiez aussi que la puce du contrôleur M.2 dispose bien d'un pilote pour votre système, et demandez-vous par où passera le câble car mis à part l'accélérateur IA que je vous présente un peu plus bas, toutes les cartes qui suivent traînent un truc derrière elles. Donc, il faudra peut-être découper votre boîtier ou laisser dépasser des trucs...
Allez, c'est parti !
Pour un NAS ou un routeur maison, la carte 5 GbE de KALEA à 29,90 € embarque une Realtek RTL8126 qui se branche sur un emplacement à clé M ou B+M et déporte son port RJ45 sur une équerre classique de PC. Et bonne nouvelle, comme la RTL8126 est une puce PCIe 3.0 x1, une seule ligne suffit ! Elle est reconnue par le pilote r8169 de Linux depuis le noyau 6.9, et sous FreeBSD (donc OPNsense ou pfSense) par le pilote officiel de Realtek , realtek-re-kmod, qui s'installe à part.
La carte 5 GbE de KALEA, avec son port RJ45 déporté sur une équerre
Maintenant, si vous voulez du 10 GbE, la carte de REKONG à 98,32 € passe par une Marvell AQC113. Et si j'en crois la fiche du vendeur, elle accepte du Gen4 x1 ou du Gen3 en x4, x2 et x1. Sauf qu'une ligne Gen3, c'est 8 Gbit/s, ce qui veut dire que sur un emplacement Gen3 x1, elle plafonnera sous ses 10 Gbit/s. Donc à ce prix-là, autant prendre la 5 GbE. Par contre, en Gen3 x2 (16 Gbit/s) ou en Gen4 x1 (32 Gbit/s), elle pourra tenir les 10 Gbit/s sans problème,
Côté logiciel, Linux la gère avec son pilote atlantic, mais sous OPNsense, c'est une autre histoire. Le pilote FreeBSD d'Aquantia, lui, ne prend pas en charge l'AQC113 et il faudra passer par un pilote communautaire .
Si vous faites tourner Frigate pour vos caméras , oubliez le Google Coral, qui n'est plus recommandé par Frigate . Mais attention, avant d'acheter un autre accélérateur IA à la place, regardez d'abord si votre processeur ne sait pas déjà faire le boulot, car le détecteur OpenVINO de Frigate tourne sur le GPU intégré des processeurs Intel de 6e génération ou plus récents. Un N100, par exemple, analyse une image en 15 ms environ avec MobileNetV2, sans rien acheter de plus, donc vous n'en aurez peut-être même pas besoin.
Par contre, si ça ne suffit plus, le module Hailo-8 de LUCKFOX à 201,59 € vous amènera 26 TOPS sur une interface PCIe Gen3 à quatre lignes. Frigate le prend en charge, avec environ 7 ms par image, mais mesurées avec YOLOv6n, donc c'est loin d'être comparable aux 15 ms du N100.
Maintenant, le truc cool, c'est que vous n'avez pas besoin d'un emplacement x4. La preuve, l'AI HAT+ 26 TOPS de Raspberry Pi, construit autour du même Hailo-8, tourne sur le port PCIe du Pi 5, qui n'a qu'une seule ligne. Un emplacement M.2 en x1 fera donc l'affaire, même si Frigate note que les PC x86 à deux lignes font mieux que le Pi.
Le module M.2 Hailo-8, avec sa puce sous un capot métallique
Ici, c'est la seule carte de la liste qui exige un emplacement x4. L'adaptateur OCuLink de RIITOP à 36,95 € transformera instantanément votre port M.2 en prise OCuLink PCIe 4.0 x4 (jusqu'à 64 Gbit/s). On doit ensuite le relier au dock Minisforum DEG1 (prix 109,00 €), sur laquelle se plug la carte graphique (à acheter séparément avec son alim) et se branche sur une alimentation ATX ou SFX. Le câble OCuLink, lui, est livré avec le dock .
L'adaptateur M.2 de RIITOP et sa prise OCuLink
Notez que le DEG1 de Minisforum n'est compatible qu'avec les machines qui gèrent le PCIe 4.0 x4, donc visez un emplacement Gen4 x4. Et l'OCuLink ne se branche pas à chaud, faudra éteindre le PC avant.
Le dock DEG1 de Minisforum, avec le slot qui reçoit la carte graphique
Et si vous préférez rester à l'intérieur du boîtier, la nappe ADT-Link à 35,45 € ressortira l'emplacement M.2 en slot PCIe x16 prévu pour une carte graphique. Alors je dis x16, mais c'est seulement au niveau du format PCIe 3.0 parce que la carte, en réalité, ne recevra que les lignes réellement disponibles de l'emplacement M.2.
La nappe R43SR d'ADT-Link, du connecteur M.2 au slot PCIe x16
Et si le port USB-C en façade de votre boîtier reste inerte faute de connecteur sur la carte mère, l'adaptateur Type-E de CY à 32,99 € transformera l'emplacement M.2 en connecteur interne Type-E à 20 Gbit/s. Il repose sur une ASMedia ASM3242, conçue pour quatre lignes PCIe Gen3 (sur deux, on tombe à 16 Gbit/s), et ne fait ni vidéo, ni audio, ni recharge PD.
L'adaptateur M.2 de CY, son connecteur Type-E et son dissipateur
Maintenant, si un connecteur USB 3.0 à 19 broches est encore libre, un simple adaptateur EZDIY-FAB à 14,99 € réveillera ce port en USB 3.2 Gen 1, sans avoir à toucher à votre emplacement M.2.
L'adaptateur en L d'EZDIY-FAB, vu sous deux angles
Côté stockage, le contrôleur SATA de Namvo à 29,99 € vous ajoutera 6 ports SATA 6 Gbit/s grâce à une ASMedia ASM1166 , reliée en PCIe Gen3 x2. Ça fait 16 Gbit/s à partager entre les 6 disques, et moitié moins sur un emplacement x1.
Le contrôleur SATA de Namvo
Enfin, pour ajouter du Wi-Fi 6E à une tour qui n'en a pas, il vous faudra un module Intel AX210 à 28,37 € et un adaptateur Jectse à 9,62 € qui le fera tenir dans un emplacement à clé M. Comme Intel documente son AX210 comme étant du Wi-Fi (PCIe) et BT (USB), l'adaptateur fait passer le Wi-Fi par une ligne PCIe et le Bluetooth par un petit câble USB 2.0 fourni, à relier à un connecteur interne de la carte mère. Et les antennes ne figurent ni sur la fiche du module ni dans le colisage de l'adaptateur, donc faudra les acheter à part.
Méfiez-vous par contre de la liste de compatibilité de la fiche Jectse, qui dit supporter aussi l'AX201. Intel classe ce module en "M.2: CNVio2", et pas en PCIe et USB. Bref, attention à bien prendre un AX210 et pas un 201
Voilà et si votre emplacement libre s'avère être câblé en SATA, bah oubliez toutes ces cartes... Toutes ces cartes parlent uniquement le PCIe. Il ne vous restera alors plus qu'à y mettre un SSD SATA... Snif.
Source : XDA Developers

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 !

Saviez-vous que Silent Hill, premier du nom, peut aujourd'hui être terminé sur PC, en grand écran et sans émulateur ? Et oui, c'est possible parce que le jeu est compilable directement pour votre machine à partir du code source obtenu à partir d'un gros travail de reverse engineering.
Et ce genre de portage n'est plus un cas isolé du tout. Depuis Zelda 64 recompilé , la scène RECOMP a franchement explosé, au point qu'on ne sait plus trop où donner de la tête. Il y a des portages qui sont très complets et fonctionnels du début à la fin, et puis des projets en cours qui sont à moitié finis, qui plantent, etc.
Alors j'ai fait mes recherches et aujourd'hui, je vous présente 10 projets de recompilation qui valent le coup ! Je commence donc par les deux qui se jouent pour de vrai.
Le port PC de Silent Hill , donc, pour commencer. Dans ce portage, chaque carte, chaque boss, chaque cinématique et chaque fin fonctionnent, et vous pouvez boucler le jeu aujourd'hui si vous le voulez. Vous récupérez au passage la 16:9, la correction de perspective PGXP, des caméras alternatives et un gestionnaire de mods, et les disques PAL français sont reconnus tout seuls. Je précise aussi que la décompilation PSX en dessous est un travail communautaire de longue haleine, mais que le portage, lui, est assisté par IA (avec Claude Opus 4.6 et 4.7).
Le launcher du port PC, réglé en 1920x1080 avec PGXP activé et la limite de FPS à zéro
Dans la même catégorie, il y a Golden Balloon qui ressuscite ce que son dépôt appelle sobrement le kart racer Nintendo 64 de 1997. Pas d'émulateur là non plus mais un jeu compilé pour votre machine, qui lit votre ROM en local, sans jamais l'envoyer nulle part. Vous pouvez même jouer directement dans le navigateur à 2 ou 4 joueurs en écran partagé ou en multijoueur directement en ligne (ça c'est en bêta).
La page du portage : le jeu compilé pour votre processeur, affiché en WebGPU, et rien à installer
Après, il y a d'autres projets qui démarrent plutôt bien même s'ils sont encore en chantier.
Je pense à Party Board qui en est le meilleur exemple. En gros, c'est Mario Party 4 porté sur Windows, Linux, macOS, Android et iOS, avec un mode en ligne à deux. Tout n'est pas parfait, c'est un work in progress, mais ça progresse assez vite, donc je pense que c'est un projet à suivre si vous aimez Mario Party.
Party Board sur GitHub : le dernier commit remonte à l'heure qui précède la capture
De son côté, DKC1Recomp s'attaque à Donkey Kong Country sur Super Nintendo, et son statut affiché est "playable bring-up". Ça veut dire que ça démarre, ça se joue, mais on en est aux toutes premières versions. La totalité du code du jeu est générée statiquement et ça peut tourner sous Windows, macOS et même via une app iPhone et iPad native. Par contre, comme d'hab', il vous faut la ROM.
Notez que Snesrecomp apparaît en sous-module dans l'arborescence de DKC1Recomp
Lost Odyssey Recomp est sans doute le plus ambitieux du lot puisqu'il s'agit d'un très gros jeu Xbox 360 traduit depuis son binaire PowerPC vers du natif, en Direct3D 12 ou Vulkan. D'après ses auteurs, les zones d'ouverture et quelques scènes sont testées, mais pas encore une partie complète, et il reste des soucis de rendu et de stabilité. La dernière version embarque quand même un pack de shaders qui vous évite leur compilation au premier lancement.
La ville industrielle de Lost Odyssey, avec sa minimap de navigation en haut à droite
Viennent ensuite les outils, ceux qui fabriquent les portages plutôt que de les livrer...
On a d'abord RecompOne qui recompile statiquement les exécutables PlayStation 1 vers du C# et fournit la couche qui rejoue le matériel de la console. Pas besoin de BIOS ni du moindre fichier Sony, vos fichiers de jeu suffisent. Le projet est fait par des humains, et aucune contribution écrite par une IA ne sera acceptée, et l'auteur explique qu'il ne fera la promotion d'aucun portage produit de cette façon.
L'IA c'est la vraie ligne de fracture de la scène en ce moment...
RecompOne et son logo aux couleurs de la PlayStation, publié sous licence MIT
DolRecomp fait la même chose pour la GameCube et la Wii. Il sait extraire un disque GameCube tout seul, et s'appuie sur Wiimms ISO Tool pour les images Wii, qu'il vous propose d'installer au passage. Sa grosse limite, c'est qu'il ne traduit que le processeur. En effet, tout le runtime autour, il faut l'apporter, ou partir du modèle que fournit ModernGekko. Autant dire que c'est un outil de bricoleur et pas un bouton "portage".
Luigi's Mansion qui tourne dans une fenêtre Windows sobrement nommée MansionRecomp
ps3recomp de son côté vise la machine la plus tordue de la liste, le Cell de la PlayStation 3, avec un objectif simple : transformer un binaire PS3 en exécutable natif sans passer par l'émulation. Et face à l'émulateur RPCS3 , l'argument n'est pas la compatibilité mais la performance native, et évidemment, un code C++ nettement plus facile à modder.
Chez ps3recomp, la toute première version publiée s'appelait Hello, Cell
Le neuvième outil, spoiler alert, c'est le mien. Ça s'appelle KOMPOTE et c'est un recompilateur universel de ROMs. Je bosse dessus depuis trois ou quatre mois et il permet de recompiler des ROMs Game Boy dans toutes ses déclinaisons, NES, Super NES, les consoles Sega, la Lynx, la Nintendo 64, la Neo Geo, le Commodore 64. Vous glissez une ROM dessus, ça vous sort un exécutable natif, ou une version WebAssembly pour jouer depuis une page web.
C'est une bêta réservée aux Patreons pour l'instant, dispo sous macOS, Windows et Linux et comme pour les autres projets de ce type, ça n'embarque aucun code propriétaire. J'y ai également intégré des petites fonctionnalités sympas sur l'affichage (effets VHS, GB color...etc), l'amélioration du son, les sauvegardes automatiques, du rewind, une API pour pouvoir piloter les jeux avec un TAS, le support des codes Game Genie et j'en passe...
Et puis il y a surtout CubeShelf , qui est le premier signe que tout ça commence à s'organiser. C'est un gestionnaire de bibliothèque GameCube qui installe et met à jour les runtimes de plusieurs jeux portés d'un coup... Mario Party 4, Soulcalibur II, Super Mario Strikers... etc. Ça prépare vos images disque et gère les mods GameBanana .
La page du projet CubeSelf
Voilà, donc comme je vous le disais, aucun de ces projets ne contient le moindre fichier de jeu. C'est à vous d'amener votre propre ROM ou votre image disque, et parfois même le BIOS de la machine en plus, sinon rien ne se lancera ou ne se recompilera. Et ensuite, une fois que vous aurez une version recompilée de votre jeu préféré, vous pourrez y jouer depuis votre ordinateur comme bon vous semble, sans devoir passer par un émulateur ou la console d'origine.
Bref, si vous ne deviez en essayer qu'un aujourd'hui, prenez Silent Hill ! C'est vraiment un super portage !!

J'ai installé 2 interrupteurs Sonoff Zigbee dans mon bureau hier, un pour la lumière et un pour le volet roulant, et ça m'a pris quelques dizaines de minutes. Que du bonheur !
Les deux bêtes sont l'Orb-ZBW1L et l' Orb-ZBRBS (lien affilié). Le premier est un interrupteur mural Zigbee 3.0 à un bouton, qui fonctionne sans fil neutre et supporte jusqu'à 6 A de charge, ce qui règle le cas des vieux emplacements où il n'y a que la phase. Le second interrupteur que j'ai installé, quant à lui, pilote un volet roulant, et son appairage se fait très facilement par un appui d'environ cinq secondes sur le bouton arrière.
Notez que le volet demande un calibrage pour connaître sa course, et c'est là que j'ai failli faire une bêtise. En effet, Zigbee2MQTT expose une action start_automatic qui fait parcourir tout le trajet au moteur. Chez moi ça a duré plusieurs minutes, capteur de statut muet et position bloquée à 50 %. J'ai donc cru qu'il y avait un problème et j'ai stoppé le moteur, alors qu'il avait presque fini. Bref, au moment du calibrage, pensez donc bien à le laisser tourner cinq bonnes minutes.
Bon, après, je n'ai pas vraiment de mérite parce que j'ai surtout laissé aussi Claude Code m'aider à mettre tout ça en place avec son MCP Home Assistant, comme je vous l'expliquais dans cet article .
Vive les wagos !
Le vrai morceau qui m'intéresse après, c'est Alexa. En effet, ces deux appareils passent par un pont Matter local vers Alexa ( Home-Assistant-Matter-Hub ), déjà appairé depuis des semaines, et je les ajoute directement là-dessus. Comme ça, tout mon matos dispo Home Assistant apparaît dans Alexa sans problème. Ça me permet de dire des trucs comme "Alexa, allume la lumière du bureau" ou "Alexa ouvre le volet à moitié" ou "Alexa ferme le volet de 30%".
Et ça me permet surtout de faire des scénarios d'automatisation assez cool. Par exemple, mon volet se ferme tout seul quand le soleil passe sous 5° au-dessus de l'horizon... donc pas à heure fixe !
En fait, comme en décembre le soleil descend plus obliquement qu'en juin, le fameux "30 minutes avant le coucher du soleil" ne donne pas la même pénombre d'une saison à l'autre. Alors que 5°, si... Enfin bref, je ne sais pas si vous faites comme ça chez vous, mais moi je trouvais ça plus adapté à ce que je voulais.
trigger:
- platform: numeric_state
entity_id: sun.sun
attribute: elevation
below: 5
action:
- service: cover.close_cover
target:
entity_id: cover.volet_bureau
Après, mon garde-fou, le but ultime de toute cette affaire, c'est qu'on ne voie pas l'intérieur du bureau depuis la rue ! Du coup, j'ai mis en place une règle supplémentaire qui fait que si le volet s'ouvre alors que le soleil est déjà bas, les lumières s'éteignent. Et je déclenche ça dès le début de l'ouverture, pour qu'il fasse déjà noir à l'intérieur pendant que le volet remonte.
Ah et j'ai oublié de le préciser mais comme l'électricité et moi ça fait deux, j'ai donc photographié les fils des anciens interrupteurs pour demander un peu d'aide à ChatGPT avant de rebrancher tout ça avec des wagos. Je n'ai eu aucun court-circuit, youpi !! J'ai aussi bien pris soin de couper le disjoncteur général pour ne pas finir comme Claude François, car je précise quand même qu'on est sur du 230 V, et qu'une IA qui lit une photo ne remplace pas un électricien !
Le vieil interrupteur que j'ai remplacé
Mais ça permet quand même de mieux comprendre ce qu'on est en train de faire et de débrouiller des situations un peu compliquées parfois, quand le boulot à l'origine était mal fait.
Voilà, en tout cas, je suis très content de ces deux interrupteurs et je pense que je vais en acheter d'autres, notamment pour le reste des volets roulants de la maison.

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 !

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.
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 !

Ce matin, lors de mon live sur Twitch , je présentais un petit peu les nouveautés que j'avais mises en place sur mon site, et parmi elles, les kits IA.
Et je me suis dit que c'était un peu con parce que je ne vous en ai pas parlé publiquement. Donc on va régler ça ici, maintenant, tout de suite !
Vous le savez, je suis toujours à la recherche d'idées un peu sympas, d'innovations, de trucs un peu cool à faire sur mon site. Et comme il m'arrive souvent de faire des tutoriels pour vous expliquer comment installer telle ou telle saloperie sous Linux, sur un Docker, sur un Windows, etc., je me suis dit qu'en plus du tutoriel, ce que je pouvais vous proposer, c'était des petits fichiers zip qui embarquaient tout le savoir de mon tuto.
Des kits avec une vraie expérience derrière, afin que votre agent IA puisse installer le même outil que moi en autonomie complète. Voici donc le genre d'encadré que vous pourrez retrouver dans certains de mes articles :
Comme ça, au lieu de suivre le tuto et de taper vous-même les lignes de commande, vous donnez mon zip et le prompt qui va bien fourni avec à votre agent, qui peut être Claude Code, ChatGPT, Codex ou encore des choses open source et locales, comme par exemple une combinaison de Qwen 3.7 avec OpenCode. Et ensuite, celui-ci se débrouille sur votre machine pour faire tourner l'outil qui vous fait envie.
Maintenant, pour produire ces kits IA, je ne fais pas ça n'importe comment : ça repose sur de vraies installations réalisées de A à Z, ça repose aussi sur la doc officielle du projet, ce qui permet comme ça, d'anticiper les problèmes que vous pourriez avoir sur votre machine. Comme ça, l'agent sait ce qu'il a à faire, si jamais il rencontre un petit blocage parce que vous avez un souci de permission ou qu'une version de Python n'est pas la même, etc. Et cela peu importe l'OS.
Et comme dans le kit, ce sont essentiellement des fichiers Markdown accompagnés de scripts Python, Shell, PowerShell, etc, vous pouvez évidemment tout relire, tout vérifier...etc.
Voilà, si ça vous intéresse, vous pouvez retrouver l'ensemble des kits IA ici . Il n'y en a pas encore beaucoup, mais à chaque fois que je ferai un tuto, j'en ferai un.
Par contre, pour en profiter, il faudra évidemment être abonné à mon Patreon ^^.
Enjoy !

Si vous avez déjà voulu essayer une distrib sans toucher à votre machine, vous connaissez la corvée... Faut dénicher la bonne ISO (32/64 bits, ARM...etc), créer la VM, et passer 20 minutes dans des réglages pour que ce soit joli ou qu'on puisse y faire du copier coller dans l'hôte et l'invité. Boxes , l'application de virtualisation du projet GNOME, vous permet d'éviter tout ça et c'est top si vous aimez économiser un peu de jus de cervelle. Vous choisissez le système dans une liste, et il va chercher l'image et l'installe tout seul en VM pendant que vous faites autre chose, par exemple venir sur Twitch regarder mon live .
La liste couvre Debian, Fedora, Ubuntu, OpenSUSE, CentOS Stream, Red Hat Enterprise Linux et Windows. Pour son fonctionnement Boxes s'appuie sur du solide avec qemu-kvm, libvirt-glib et spice-gtk, donc le code de votre système invité s'exécute directement sur le processeur de l'hôte via KVM, pour obtenir ce que la doc de GNOME appelle des "performances proches du natif".
Une fois la VM créée, vous lui fixez la quantité de mémoire et le stockage qu'elle a le droit de prendre sur votre système, histoire qu'elle ne vous freeze pas la machine. Et bien sûr, vous pouvez prendre des instantanés pour la ramener à un état antérieur, ce qui est la fonction qu'on utilise tout le temps, si comme moi vous aimez casser volontairement vos OS avec des bidouilles alternatives des enfers.
Le reste, c'est du confort : vous branchez une clé USB sur votre machine et vous la redirigez dans la VM, le presse-papiers est partagé entre les deux, et vous déposez un fichier depuis votre gestionnaire de fichiers dans la fenêtre de Boxes pour l'envoyer à l'invité.
L'affichage des VMs dans Boxes se redimensionne tout seul quand vous changez la taille de la fenêtre, et il y a même de l'accélération 3D pour certains des systèmes supportés.
Après, cette "simplicité" se paye puisque des choses comme la config des adaptateurs réseau ou la mise à jour du matériel virtuel, n'est pas visible dans l'interface . Et comme le Flatpak embarque toute la pile de virtualisation dans son propre conteneur, vous n'irez pas rattraper ça en douce dans les fichiers. Donc si vraiment vous avez besoin de mettre les mains dans le cambouis au niveau de ces réglages-là, prenez plutôt virt-manager dès le départ, c'est fait pour.
Son auteur, Felipe Borges a d'ailleurs réécrit entièrement l'application en GTK4 et partage ses résultats depuis août . Cette version-là installe dorénavant Windows 11 sans le moindre contournement manuel, en configurant Secure Boot et un TPM virtuel automatiquement. C'était la fonction la plus réclamée sur la version classique et elle ajoute aussi un périphérique VSOCK, qui permet de se connecter directement en SSH sur les VM en systemd 256 ou plus récent.
Attention quand même, ça reste une bêta destinée aux tests et pas à la production, et son auteur conseille de sauvegarder les données de vos VM avant d'y aller. Il précise aussi qu'il travaille là-dessus sur son temps libre, en plus de maintenir GNOME Settings et de son job à temps plein chez Red Hat ! Encore un hyperactif !! lol. Donc soyez patient si vous ouvrez un ticket de support.
Pour ce qui est disponible aujourd'hui, Boxes ne tourne que sur Linux, la version stable est la 50.0 sortie depuis mars 2026, et ça se télécharge via Flathub comme ceci :
flatpak install flathub org.gnome.Boxes
Dernier truc à savoir, Felipe, le mainteneur, a proposé de retirer Boxes du cœur de GNOME pour en faire une application indépendante, et le retrait est programmé pour GNOME 52 en mars 2027. Flathub deviendra alors le seul canal officiellement supporté, et le nom perdra son "GNOME" pour devenir simplement Boxes. L'identifiant Flatpak ne bougeant pas, les installations existantes continueront de se mettre à jour sans rien casser.
Et si vous voulez comparer avec une autre solution similaire, je vous avais déjà parlé de QuickEmu pour monter des VM sans y passer l'après-midi, mais Boxes, lui, joue sur le terrain du tout à la souris, et ça j'imagine que ça vous plait plus !
Merci à Hub pour le partage !!

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
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'é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 )
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.
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.
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.
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

L'équipe Next-gen Kaldi de Xiaomi a sorti OmniVoice, un modèle de synthèse vocale qui parle 646 langues et qui est capable de "recopier" une voix à partir d'un extrait de huit secondes minimum. Et tout ça en local et gratuitement !
Le français y est d'ailleurs la cinquième langue du corpus d'entraînement, avec 23 675 heures d'audio de référence sur les 581 000 qu'ils ont avalées. Autant dire que le modèle a entendu du français toute sa vie, et ça s'entend au résultat.
Voilà donc comment cloner votre propre voix, du début à la fin. Comptez 3,3 Go de poids que la première génération ira chercher toute seule, donc prévoyez une connexion pour ce coup-là, et quelques minutes de manipulation une fois qu'ils sont sur votre disque.
Pour cela, il vous faut Python 3.10 à 3.13 (PyTorch 2.8 n'existe pas encore pour 3.14, vous vous prendriez un "No matching distribution found"), et un environnement isolé (sinon vous allez casser autre chose). Sur Mac, les deux lignes suivantes suffiront puisque le modèle utilise le GPU intégré via MPS :
python3 -m venv ~/omnivoice-env && source ~/omnivoice-env/bin/activate
pip install torch==2.8.0 torchaudio==2.8.0
pip install omnivoice num2words
Sur Linux et Windows, ça devra se faire avec une carte NVIDIA (sous Windows, l'environnement s'active avec omnivoice-env\Scripts\activate) sauf que PyTorch doit venir de l'index CUDA, donc remplacez la deuxième ligne par celle-ci :
pip install torch==2.8.0+cu128 torchaudio==2.8.0+cu128 --extra-index-url https://download.pytorch.org/whl/cu128
Notez que sans carte graphique du tout, ça marche quand même. J'ai rejoué la même installation dans un conteneur Linux en processeur seul, elle passe sans rien changer... mais il m'a fallu cinq fois la durée de l'audio en temps de calcul.
Une fois installé, pour savoir que c'est en place, tapez omnivoice-infer --help et là, la liste des options doit s'afficher, sans la moindre erreur d'import. Le num2words de la troisième ligne, lui, ne sert qu'au chemin Python dont je parle plus bas, alors gardez-le sous le coude.
C'est l'étape que tout le monde bâcle et c'est pourtant celle qui est décisive pour avoir un bon résultat. Le projet recommande entre 3 et 10 secondes, pas plus car au-delà, ça ralentit le calcul et ça dégrade le clonage. Prenez donc un passage où vous parlez sans blanc, sans "euh", sans musique derrière, et découpez-le proprement comme ceci avec ffmpeg (ou autre logiciel de votre choix) :
ffmpeg -i mon-enregistrement.m4a -ss 12 -t 8 -ac 1 -ar 24000 moi.wav
La qualité de cet extrait est très importante donc si vous enregistrez votre voix, mettez bien le micro près de la bouche, dans une pièce sans écho, et évitez les MP3 récupéré à partir de YouTube .
Écrivez ensuite dans un fichier ce que dit exactement l'extrait, mot pour mot. Vous pouvez sauter cette étape (le modèle transcrit alors tout seul avec Whisper), sauf qu'il téléchargera 1,6 Go de plus pour ça et qu'il se plante parfois sur un nom propre, ce qui abîme le clonage.
Avant de taper quoi que ce soit, relisez bien votre texte et réécrivez les chiffres en toutes lettres. La ligne de commande n'a aucune option de normalisation, donc "2345" sortira n'importe comment alors que "deux mille trois cent quarante-cinq" se lit tout seul. C'est du côté Python que la normalisation se fait, avec normalize_text=True, la langue passée en language="fr" et le num2words de tout à l'heure... sans la langue, votre texte français part chez le normaliseur anglais qui réclamera même une lib sans version précompilée pour les Mac Apple Silicon.
Voici la commande complète :
omnivoice-infer --model k2-fsa/OmniVoice \
--text "Bonjour, ceci est un test de clonage de voix en français réalisé avec OmniVoice." \
--ref_audio moi.wav --ref_text "$(cat moi.txt)" \
--language fr --num_step 32 --output ma-voix.wav
Vous devez voir passer un "Saved to ma-voix.wav" au bout de quelques secondes. Sur mon M4 Max, j'ai compté 4 à 6 secondes de calcul pour 5,4 secondes d'audio, et moitié moins avec --num_step 16 au prix d'un peu de netteté. Au passage, le facteur 40 fois plus rapide que le temps réel qu'annonce le projet sur son site, ça a été mesuré sur un H100 avec des noyaux d'accélération maison, et pas sur un ordi de bureau...
Si la ligne de commande vous rebute, vous pouvez aussi passer par la commande : omnivoice-demo --ip 127.0.0.1 --port 8001 qui permet de faire la même chose mais dans le navigateur, avec le bouton d'import pour l'extrait et un menu déroulant pour la langue. Pensez juste à lancer export GRADIO_ANALYTICS_ENABLED=False avant, parce que l'interface web appelle les serveurs de Gradio au démarrage et qu'on n'a pas envie de leur filer nos data à ceux-là.
L'audio, lui, ne bouge pas de votre machine.
L'extrait de référence de 8 secondes chargé à gauche, la langue calée sur French, et la sortie de 5 secondes à droite une fois le clonage terminé.
Et si vous voulez vraiment débrancher la machine du réseau, faites-le dans le bon ordre, sinon la commande de génération part chercher les poids et se vautre sur un httpx.ConnectError suivi d'un LocalEntryNotFoundError. Récupérez donc le modèle d'abord, dans un dossier bien à vous :
hf download k2-fsa/OmniVoice --local-dir ~/omnivoice-modele
Ensuite vous coupez tout et vous passez ce dossier à --model à la place du nom du dépôt. Ça marche même sur une machine qui n'a jamais vu Internet, il suffit d'y copier le dossier. Et si vous préférez garder le cache par défaut, un export HF_HUB_OFFLINE=1 fait la même chose. J'ai rejoué la génération avec toutes les sorties réseau refusées par le système, le fichier sort quand même en 8 secondes... donc non, votre voix ne part chez personne.
Maintenant, une fois que c'est fait, écoutez le fichier avant d'en faire quoi que ce soit, parce que le modèle avale parfois des morceaux de phrase. Sur mes 24 générations de la même phrase, 5 ont perdu ou déformé un mot. C'était presque toujours le premier ou le dernier... et ce n'est pas une surprise, c'est un bug connu de l'outil. Faut donc relancer parfois plusieurs fois pour avoir un résultat OK.
Dernier truc pour ceux qui passeront par Python : la voix se sauvegarde une fois pour toutes. model.create_voice_clone_prompt() puis .save("ma_voix.pt") produisent un fichier minuscule que les sessions suivantes rechargeront sans repasser par l'extrait ni par la transcription. Regénérez alors une phrase avec, et comparez à l'oreille : si c'est bien la même voix, vous pouvez ranger le WAV de référence.
Voici l'extrait que j'ai généré avec ma voix. Ces 6 secondes d'audio ont pris 14 secondes à la génération sur mon Mac Studio :
Si vous faites faire le boulot par Claude Code, Codex ou n'importe quel agent IA, voilà le brief à lui donner tel quel. J'y ai mis les pièges qui m'ont coûté un peu de temps :
Alors le code d'OmniVoice est bien sous licence Apache 2.0, mais les poids du modèle, eux, sont sous CC-BY-NC à cause du corpus qui a servi à les entraîner. Cela veut dire que tout usage commercial est interdit. Donc si vous avez prévu un projet afin de gagner de l'argent, regardez plutôt du côté de Chatterbox , qui est sous licence MIT, qui parle également français et qui "tatoue" même ses sorties (vu que maintenant c'est obligatoire avec la loi IA).
Pour l'usage perso, en revanche, rien ne vous arrête, et le règlement européen sur l'IA exclut explicitement de son champ l'activité personnelle non professionnelle.
Ce qui est cool avec Omnivoice, c'est que ce clonage de votre voix se fait à 100% en local et c'est bien tout l'intérêt de la manœuvre ! Et si l'idée c'est plutôt de faire lire vos ebooks par la machine, je vous invite à jeter un œil à MLX-Audio côté Mac.
Source : OmniVoice sur GitHub

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

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.
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.
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.
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

Convertir une vidéo avec ffmpeg, ça prend 2 minutes... Mais ça c'est quand on connaît les commandes et les paramètres de l'outil, par cœur. Sinon, vous êtes partis facilement pour une demi-heure de documentation.
Mais votre vie va changer puisque FFmpeg Commander est une page web qui règle ce problème-là. Vous cochez ce que vous voulez obtenir, et la commande s'écrit toute seule en dessous, prête à être copiée.
Le formulaire couvre en réalité ce qu'on demande le plus souvent à ffmpeg. Je pense notamment au conteneur, aux codecs vidéo et audio, au débit ou au CRF (la qualité), mais aussi la résolution, le découpage d'un extrait, sans oublier quelques filtres... Si vous touchez un réglage, la commande se réécrit alors dans la foulée, et vous voyez donc tout de suite quelle option votre clic vient d'ajouter.
Le formulaire et la commande juste en dessous
Et depuis sa refonte, il y a surtout de super "recettes". 34 préréglages rangés par usage, dont six catégories entières arrivées d'un coup : du MP4 en faststart pour le web, du vertical en 1080x1920 pour les réseaux sociaux, du HEVC 10 bits pour l'archivage, le désentrelacement d'un vieux DVD, la stabilisation d'une action cam, ou l'extrait de 10 secondes qu'on doit se faire toujours en urgence.
Ce qui est cool c'est que tous vos réglages sont encodés dans l'URL. Du coup une recette se partage en collant un lien, et la personne en face se retrouvera avec le même formulaire, dont les cases seront déjà cochées. Par contre, vos préréglages maison, eux, resteront dans le stockage local de votre navigateur.
Une fois que vous avez la commande qu'il vous faut, vous ouvrez votre terminal, vous collez la commande et puis ça va lancer FFmpeg et convertir votre fichier tranquillement.
Pour le reste, c'est du MIT et c'est gratuit. L'auteur prévient lui-même que son outil ne couvre pas tout ffmpeg et que le résultat dépend aussi de votre version. Relisez donc bien la commande avant de la lancer, surtout sur un fichier que vous n'avez pas en double.
À tester sur ffmpeg-commander.com , et le code est sur GitHub si vous voulez le faire tourner chez vous.
Source : FFmpeg Commander

Pour fabriquer une application Windows native, le passage par Visual Studio était jusqu'ici la voie normale. Mais c'était sans compter sur Microsoft qui a publié winapp , un outil en ligne de commande qui permet de faire tout pareil directement depuis un terminal : il crée le projet, le construit, le lance avec son identité de paquet et sort le résultat sous la forme d'un fichier d'installation MSIX.
C'est encore estampillé en version "expérimentale" par ses auteurs, mais ça fonctionne déjà très bien pour des trucs basiques. C'est pour ça qu'aujourd'hui, je vous propose un petit tuto pour afficher un Hello World dans une vraie fenêtre Windows. Vous allez voir, c'est fastoche !
Il vous faut donc Windows 10 version 1809 au minimum, le mode développeur activé dans Paramètres, Système, Options avancées, et le SDK .NET 10 ou plus récent. Visual Studio, non par contre, y'en a pas besoin. Les deux installations se font via winget, dans un terminal normal :
winget install Microsoft.DotNet.SDK.10
winget install Microsoft.winappcli --source winget
Faites ensuite un winapp --version et vous saurez si le CLI répond.
La commande new fabrique l'application à partir des modèles WinUI 3 officiels, qu'elle télécharge toute seule dès qu'on la lance. Sans option elle vous pose des questions, mais avec celles que je vous mets ci-dessous, elle ne demandera rien et prendra le modèle le plus dépouillé du lot :
winapp new --template winui --name HelloKorben --use-defaults
cd HelloKorben
Vous récupérez alors un projet C# complet, avec son manifeste de paquet et ses icônes. Et surtout, le modèle winui vous donne une fenêtre vide, ce qui tombe bien puisqu'on va écrire dedans. Notez que le pack de modèles est encore publié en 0.0.6-alpha, donc si un nom de fichier a bougé depuis, winapp new --list vous sortira la liste de ce que le vôtre propose.
Attention, là y'a un petit piège ! Le fichier qui décrit la fenêtre s'appelle MainWindow.xaml, sauf que ce n'est pas celui-là qu'il faut toucher. Ouvrez plutôt MainPage.xaml, qui est à la racine du projet, et remplacez son <Grid /> vide par ces quelques lignes :
<Grid>
<TextBlock Text="Hello World !"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="48" />
</Grid>
Ensuite, un petit winapp run construira le projet, l'enregistrera auprès de Windows avec une identité de paquet qui pointe droit sur votre dossier de build, et le lancera. Votre fenêtre s'ouvre alors avec le Hello World au milieu :
winapp run
La fenêtre HelloKorben ouverte par winapp run, et derrière, le terminal qui vient de la construire en 12 secondes
Bon, là, on a fait un Hello World, mais bien sûr, si vous faites chauffer une IA là-dessus, vous pouvez faire des trucs un peu plus complexes sans forcément savoir coder, et tout ça, une fois encore, sans Visual Studio.
Maintenant, à quoi bon empaqueter ?
Cette identité de paquet, ce n'est pas de la paperasse. En fait c'est elle qui ouvre à votre application les notifications natives, les associations de fichiers, les protocoles maison et les API d'IA locale de Windows. Donc si vous voulez du sérieux, il faut publier l'application compilée dans un dossier, et ça, c'est possible comme ceci directement dans votre terminal :
dotnet publish -o ./publish
L'empaquetage fabrique au passage un certificat de développement et l'installe dans le magasin Personnes de confiance de la machine mais faut que je vous prévienne, la commande qui suit réclame un terminal ouvert en admin dans lequel il faudra refaire le cd vers votre dossier de projet pour qu'il s'y retrouve.
winapp pack ./publish --generate-cert --install-cert
Le MSIX signé sort dans le dossier du projet, nommé d'après le GUID du paquet
Vous obtenez alors un .msix signé, nommé d'après l'identité du paquet, sa version et son architecture, qui s'installe chez vous d'un double clic. Et cette identité, le modèle la génère sous forme de GUID : ne cherchez pas le nom de votre application dans le nom du fichier. Par contre, ne l'envoyez pas tel quel à un collègue, parce que le paquet réclamera le runtime Windows App SDK. Ajoutez --self-contained à la commande pack et le runtime partira dans le paquet. Le certificat, lui, reste un certificat de développement local : sur le PC d'en face, Windows refusera le paquet tant que ce certificat n'y sera pas installé aussi.
Maintenant, si vous vous demandez à quoi sert vraiment ce CLI, c'est surtout l'étape MSIX qui sera moins douloureuse car vous n'aurez pas besoin de lancer Visual Studio.
Source : Neowin

Vous le savez, je suis un grand défenseur des flux RSS . C'est d'ailleurs pour ça que le mien est complet !! Je dois être le dernier à faire ça, alors, abonnez-vous (c'est gratuit) car ça me permet de continuer à faire ce que j'aime et ce que vous aimez aussi apparemment, puisque vous êtes de plus en plus nombreux à venir ici !
Mais bon, bref, si je vous parle de ça aujourd'hui, c'est parce que j'ai découvert RSSMonster, un lecteur de flux RSS que vous installez sur votre machine, et qui a la particularité de rapprocher tout seul les articles qui parlent du même truc et qui leur met une note.
J'ai de la lecture...
La qualité d'écriture compte pour moitié, le ton pour un quart, et le dernier quart mesure à quel point le texte est promotionnel, si bien qu'un publireportage descendra tout seul. J'ai trouvé ça plutôt malin. Et les articles qui racontent le même "fait" sont regroupés dans un Event, donc vous lisez l'actu qu'une fois sans vous fader tous les copycats.
Et le plus cool, c'est que ce tri tourne sur votre ordi, sans avoir besoin de la moindre clé d'API. Chez Miniflux ou FreshRSS, la liste officielle des fonctionnalités ne mentionne rien de tel. Quant à NewsBlur, celui-ci apprend à masquer ou surligner les articles selon ce que vous lui dites aimer, ce qui n'est pas la même chose que rapprocher deux actus pour les dédupliquer. Dans le même genre, je vous avais quand même déjà parlé d' un lecteur RSS qui s'y met aussi.
RSSMonster est livré avec deux fichiers Docker Compose. Le premier monte l'application et un collecteur de flux au-dessus de SQLite, sans un seul modèle (c'est celui de la procédure express du README). Le second ajoute MySQL, un worker dédié à l'IA et le service d'inférence, et c'est lui qui allume tout ça.
En fait, si vous choisissiez SQLite, la concurrence des traitements optionnels sera plafonnée à un, donc, ce sera un peu plus lent. Et surtout, le profil léger tel qu'il est livré ne démarre pas le worker IA et coupe l'inférence, donc pas de regroupement ni de notes tant que vous ne les activez pas à la main. Ça ira donc pour une install perso, mais si vous voulez mettre ça sur un serveur pour le partager à tous vos potes ou dans votre entreprise, je vous conseille vraiment de choisir MySQL directement. Parce qu'après, la bascule de l'un vers l'autre a l'air plus hasardeuse.
Enfin, rassurez-vous, il y aura toujours la possibilité d'exporter un fichier OPML avec tous vos abonnements et les catégories. Par contre, ça ne transporte que votre liste de flux, pas les articles déjà collectés ni ce que vous avez lu.
C'est celui que je vous conseille pour commencer. Côté prérequis : git, Docker et Docker Compose. On commence par cloner le dépôt :
git clone https://github.com/pietheinstrengholt/rssmonster.git
cd rssmonster
Ensuite, faut générer deux secrets. Lancez cette commande deux fois, les résultats doivent différer :
openssl rand -hex 32
Créez un .env à la racine, lisible par vous seul :
touch .env && chmod 600 .env
JWT_SECRET=votre-premier-secret
FEVER_CREDENTIAL_SECRET=votre-second-secret
Ajoutez-y RSSMONSTER_BIND_ADDRESS=0.0.0.0 tout de suite pour y accéder depuis une autre machine, le port n'écoutant que sur la boucle locale. Et ne sautez pas les secrets, car le Compose refuse de démarrer si l'un des deux manque :
docker compose up -d
Ouvrez http://localhost:3000. Pas de compte admin par défaut, c'est le premier que vous créez qui devient l'administrateur, et notez bien vos identifiants. Ensuite, allez dans réglages puis flux, et importez ensuite votre OPML.
L'écran de connexion au premier démarrage
Si vous aviez déjà lancé le profil léger, coupez-le d'abord avec docker compose down, qui arrête les conteneurs sans toucher à vos données. N'y ajoutez surtout pas -v, car ça supprimera le volume et la base. Et MySQL démarrera vide et vous devrez réimporter votre OPML comme sur une install neuve.
Ensuite, ajoutez ces quatre valeurs dans le même .env, à côté de vos deux secrets :
DB_DATABASE=rssmonster
DB_USERNAME=rssmonster
DB_PASSWORD=un-mot-de-passe-solide
MYSQL_ROOT_PASSWORD=un-autre-mot-de-passe-solide
Et lancez l'autre fichier :
docker compose -f docker-compose.mysql.yml up -d --build
Ne paniquez pas si localhost:3000 ne répond pas dans la foulée. L'application attend que MySQL et l'inférence soient dispo, et celle-ci commence par télécharger ses trois modèles donc ça prend quelques minutes. Le contrôle de santé de l'outil lui laisse dix minutes, donc allez vous faire un ti café (dans sa couche ? nooon).
L'ajout d'un flux, sa catégorie et sa fenêtre de rattrapage
Voilà, amusez-vous bien.
Source : le dépôt GitHub de RSSMonster

NTLite , j'sais pas si vous connaissez, mais ça permet d'ouvrir le fichier d'installation de Windows, celui que vous gravez sur une clé USB, et ça vous laisse en retirer des composants avant que la moindre machine ne démarre. C'est super pratique pour alléger des install afin de tout faire rentrer dans des images ISO, WIM, ESD et SWM.
Le nom vous dit d'ailleurs peut-être quelque chose parce que derrière se cache Dino Nuhagić, le même auteur que pour l'app nLite, l'outil qui charcutait les CD de Windows XP . Et 20 ans plus tard, le principe n'a pas bougé, et seules les cibles ont changé.
Dans cette même image que vous préparez avec NTLite, vous pouvez aussi coller les mises à jour cumulatives (celles qui vous bouffent 20 minutes au premier démarrage) et les pilotes, pour que le PC soit à jour tout de suite et qu'il voie ses disques NVMe pendant l'installation. Puis surtout, faire en sorte que l'installation puisse se faire sans surveillance (sans clic clic suivant, OK, clic clic...etc), avec le partitionnement, les bons comptes utilisateurs et la région déjà choisie.
Et il n'a même pas besoin d'une image pour faire sa petite affaire puisqu'il sait éditer un Windows déjà installé, sur une autre partition, dans un disque virtuel monté, ou carrément le C:\Windows sur lequel vous êtes en train de lire cette page... Vous cochez, vous appliquez vos choix, vous redémarrez, et c'est fait !! Pas besoin de réinstaller !
Alors évidemment, il reste la question du prix. Parce qu'il s'agit d'un outil payant. Mais rassurez-vous, pour une utilisation personnelle, c'est totalement gratuit. Il fait l'installation sans surveillance, l'intégration basique des mises à jour et des pilotes, l'édition d'un Windows déployé, et un retrait de composants que l'éditeur qualifie lui-même de "basique".
La licence payante débloque uniquement le retrait de n'importe quel composant Windows (les non basiques), ainsi que le nettoyage des applications MSIX et Appx, la gestion des tâches planifiées, l'import des pilotes de votre propre machine et leur ciblage par matériel. Rassurez-vous, certaines fonctionnalités IA comme Copilot ou Recall, récemment intégrées dans Windows 11, sont également désactivables par la version gratuite.
Maintenant, attention avant de tout décocher dans la joie et la bonne humeur, retirer trop de choses d'une image Windows peut lui coûter sa capacité à évoluer ou à être modifié, et le projet tiny11builder l'explique bien dans sa doc . Par exemple son script le plus agressif produit un système auquel on ne peut plus ajouter ni langue, ni mise à jour, ni fonctionnalité.
Et ça vaut pour tous les outils du genre, NTLite compris.
Sachez aussi que si les 40 balles de la version payante de NTLite vous freinent, tiny11builder est tout aussi capable de fabriquer des images Windows 11 allégées avec des scripts PowerShell. En plus c'est open source, et de son côté, le WinUtil de Chris Titus fera le ménage, les réglages et les mises à jour sur une installation fraîche. Et ça c'est tout gratos !
À récupérer sur
ntlite.com
, ou en une ligne avec winget pour ceux qui sont pressés ( winget install ntlite )
Enjoyyyy !

Depuis ce week-end, bonne nouvelle les zamis, puisque ce bon vieux ffmpeg sait maintenant fabriquer des images qui n'ont jamais été filmées. Oui oui ! Et ça c'est possible grâce à un filtre qui s'appelle fruc_vulkan, qui permet de calculer le mouvement entre deux images grâce au bloc dédié des GeForce RTX, pour ensuite synthétiser ce qui manque entre les deux. Grâce à ça, un 24 images par seconde ressort sans souci en version 60 images par seconde.
La cadence de sortie se paramètre, donc vous pouvez aussi faire du 25 vers du 50, du 30 vers 60, ou n'importe quelle valeur intermédiaire. C'est donc beaucoup plus souple que le filtre équivalent côté AMD, frc_amf, qui ne sait que doubler la fréquence et ne fonctionner qu'en DirectX...
Fabriquer ce genre d'images intercalaires n'a rien de neuf, cela dit... L'outil RIFE convertissait déjà du 24 fps en 96 en 2020. Mais ce qui change ici, c'est qu'il n'y a plus de chaîne externe, plus d'aller-retour par des milliers de PNG, puisque tout tient dans le graphe de filtres, entre le décodage et l'encodage.
Le filtre logiciel historique de ffmpeg, minterpolate, existe pourtant depuis des années mais c'était loin d'être du temps réel. Alors que là, le vrai gain avec cette nouvelle feature, c'est qu'on passe en full temps réel. Ça veut dire que sur un catalogue à réencoder, l'interpolation cesse d'être l'élément qui bloque toute la chaîne de conversion.
Pour l'essayer il vous faut une RTX 30 ou plus récente. Il faut aussi compiler une version de développement car ce filtre est arrivé après la sortie de ffmpeg 9.0, ce qui veut dire que pour le moment, il n'est dans aucune release et ne sera dans aucun paquet avant la prochaine.
La commande suit ensuite le motif habituel des filtres Vulkan, qui veulent les images en mémoire GPU :
ffmpeg -init_hw_device vulkan=vk:0 -filter_hw_device vk -i entree.mp4 -vf "format=yuv420p,hwupload,fruc_vulkan=fps=60,hwdownload,format=yuv420p" sortie.mp4
L'auteur du filtre prévient quand même qu'en 2160p24, les réglages par défaut ne suivront pas en temps réel et qu'il faudra alors descendre la qualité d'estimation du mouvement. Ça s'écrit comme ceci :
fruc_vulkan=fps=60:perf=medium:grid=2
En traitement par lots maintenant, la question ne se pose pas, c'est juste plus lent.
Maintenant, les pros de l'encodage, redescendez de votre chaise parce que j'ai quand même quelques mauvaises nouvelles... Tout d'abord, on n'a aucune stat indépendante sur le débit ou la qualité. Et il y a aussi un défaut que l'auteur du patch documente lui-même... En fait, dans les zones sans texture, le moteur invente un mouvement faux mais cohérent, qui laisse des "fantômes" autour des objets. La parade existe heureusement, mais c'est une heuristique, qui demande quelques réglages à la main sur des échantillons.
Et il y a aussi un coût qu'on oublie... Car doubler la cadence, c'est donner deux fois plus d'images à avaler à l'encodeur, donc, il y a toujours une espèce de goulot d'étranglement. Et puis après il y a le rendu... un film de cinéma en 24 images par seconde qu'on monte à 60 prend immédiatement un aspect téléfilm que les cinéastes détestent !! Imaginez l'Odyssée de Nolan avec l'aspect visuel de Plus Belle La Vie... Ahahaha. Après sur de l'animation ou un ralenti, ça se défend bien sûr mais sur du cinéma, c'est un choix à prendre et pas une amélioration. En tout cas, c'est mon avis.
Ah et dernier point, parce que la confusion est déjà partout dans les commentaires sur le net : Tout ça se passe à l'encodage ! Je répète : A L'ENCODAGE ! Le fichier qui sort de ffmpeg est une vidéo NORMALE. Absolument personne n'aura besoin d'une carte graphique GeForce pour la regarder ! OK ? 😘
Source : Phoronix

Hier, je suis tombé sur ce tweet :
Kuber, un développeur de 19 ans a demandé à Claude Code, de lui pondre un pilote pour sa vieille imprimante pour macOS. Et visiblement, ça a intéressé pas mal de monde puisque le tweet a fait +3 millions de vues.
Il a ensuite publié le dépôt sur Github et la transcription complète de la session. Et ce que ça raconte c'est surtout un bras de fer avec macOS, et un montage bidouillesque au possible qui finit par tenir sur une machine virtuelle Linux et un daemon root.
Pour la petite histoire, son imprimante est une HP Laser 1008a. C'est en réalité une Samsung rebrandée car HP a racheté la division impression de Samsung , il y a une dizaine d'années. Et ces machines parlent un langage un peu niche qui est le SPL3. C'est un langage maison qui n'est ni du PostScript ni du PCL standard. Et comme vous vous en doutez, HP n'a jamais sorti de pilote macOS pour cette gamme. Donc officiellement, cette imprimante ne peut pas imprimer depuis un Mac.
La mission a donc consisté à recompiler SpliX, un pilote libre qui parle le SPL3 et à se battre avec macOS pour qu'il puisse causer via l'interface USB de l'imprimante déclarée en IPP-over-USB. Il a fallu ensuite ruser en mettant en place une VM Linux afin de faire tourner h24 un codec de HP uniquement dispo sous Linux. Et voilà ! La file d'impression envoie le travail sur un port local, un daemon root le récupère, le fait passer par le codec dans cette VM, et écrit le résultat directement sur l'USB.
Bref, ça marche et ça imprime maintenant depuis n'importe quelle application.
Alors vous l'aurez compris, ce n'est pas vraiment un dev de pilote pour macOS mais plutôt une espèce d'assemblage de différents éléments pour la plupart libres, afin de réussir à imprimer sous macOS avec ce modèle d'imprimante. Mais ce qui est intéressant, c'est que le mainteneur de SpliX a débarqué sur le dépôt de Kuber avec une archive de fichiers de test et une série de questions. Cela veut dire que si lui et Kuber trouvent l'octet qui diffère, la VM Linux et le daemon root vont disparaître et il ne restera plus qu'un paquet tout ce qu'il y a de plus classique à installer.
Voilà c'est finalement la seule partie de l'histoire où on répare vraiment quelque chose. Mais ça reste quand même une belle histoire où l'IA permet de s'affranchir des limites techniques imposées par les fabricants et éditeurs de logiciels. Et ça, moi j'adore !
Source : le fil de Kuber sur X , avec la transcription intégrale de la session et le dépôt du projet .

Allez, on va faire un jeu. Cherchez un disque dur externe sur Amazon et regardez où pointe le premier lien de la page. Bingo, ça part sur une adresse en /sspa/click, autrement dit un emplacement publicitaire. Et c'est pas le mieux noté, c'est pas le moins cher, non, c'est juste celui qui a payé le plus pour être là.
Et moi, ce qui me saoule vraiment, c'est que les filtres n'y peuvent rien.
Pour remédier à cela il faut sortir l'artillerie. J'ai d'abord pensé à faire un filtre uBlock Origin, puis à me coder une extension Firefox, avant de me rappeler que Tampermonkey tournait déjà dans mon navigateur.
Direction le repo Greasy Fork, donc, où traîne un script qui fait exactement ça . Une cinquantaine de règles CSS, qui dégagent du DOM les résultats sponsorisés de la recherche, les carrousels promo, les encarts publicitaires de la fiche produit, l'upsell Prime et les bannières de marque.
On passe ainsi de ça :
À ça :
Et ça fonctionne super sur toutes les versions d'Amazon, y compris Amazon.fr.
Trois réglages attendent dans le menu du gestionnaire de scripts. Un compteur qui affiche en bas de page ce qui a été retiré et pourquoi, une journalisation console pour les curieux, et une option qui redirige les pages de navigation vers la vraie liste de résultats.
Attention quand même à ce qui saute en plus des pubs. Le bloc "Les gens qui ont acheté ça, ont aussi acheté ça". Le script s'attaque aussi à Rufus, l'assistant d'achat maison et côté installation, il vous faut Tampermonkey, Violentmonkey ou Greasemonkey. Sur Firefox, ça s'arrête là. Par contre sur Chrome, depuis la version 138, il faut en plus activer un switch "Allow User Scripts" sur la fiche de l'extension, coupé par défaut sur toute extension fraîchement installée.
Voilà, j'espère que ça vous aidera à avoir un Amazon un peu plus propre. Maintenant, n'oubliez pas, Amazon, c'est le mal, donc si vous avez les moyens de payer 2x plus cher la même chose et que vous aimez passer votre vie dans les transports ou en bagnole à faire une espèce de chasse au trésor à travers toute la ville, pour trouver le produit qu'il vous faut, le mieux reste encore et toujours d'acheter dans des magasins physiques. Lol.

Ce mois-ci, je suis en mode déménagement / vidage de cartons / montage de meubles Ikea et bien sûr, j'en profite pour réinstaller mon matos... Mon système d'alarme, mes caméras et un peu de domotique.
Sauf que la domotique, c'est pas mon kif car même si j'aime l'idée d'avoir des automatisations chez moi, ça fonctionne un moment, puis après ça ne fonctionne plus, souvent parce que les Raspberry Pi passent leur temps à corrompre les cartes SD... Puis surtout, je manque de temps pour me prendre la tête à régler des scénarios au poil de cul.
Mais là, c'est aussi un peu les vacances et y'a plusieurs paramètres qui ont changé. Déjà la nouvelle maison est plus petite. J'ai aussi un mini PC à disposition qui ne faisait pas grand chose. J'ai également une caisse de matos divers et variés (Zigbee / Zwave et autre) qui prend la poussière. Et puis les nouveautés dans ma vie, c'est bien sûr l'IA et Alexa.
Je me suis donc chauffé un peu, et je vais vous raconter ce que j'ai mis en place ces derniers temps.
Le point de départ, c'est ce mini PC. Un NiPoGi Pinova P1 (lien affilié) que j'avais acheté en 2023, un Ryzen 3 4300U avec 16 Go de RAM et 1 To de SSD, qui n'avait jamais vraiment trouvé sa vocation. Complètement surdimensionné pour de la domotique, vous vous en doutez, et c'est exactement pour ça qu'il est parfait.
Parce que le vrai sujet, c'est pas la puissance, c'est le stockage. Mes install précédentes mouraient toutes de la même façon : une carte SD qui rend l'âme au bout de quelques mois d'écritures permanentes. Là, le système tourne sur un SSD, et rien que ça, ça règle le problème qui m'avait dégoûté les fois d'avant.
J'ai donc collé Home Assistant OS dessus, ce qu'on appelle HAOS pour les intimes. C'est la version "système d'exploitation" qui prend la machine entière et qui pilote tout elle-même, sans Linux à administrer en dessous ni Docker à maintenir. Et puis avec cette version, vous récupérez au passage le magasin d'add-ons et les sauvegardes automatiques, sans rien configurer. Sur une machine dédiée qui ne fait que ça, c'est franchement le mode le plus tranquille.
Et là, premier petit piège à savoir au niveau du BIOS si vous vous lancez... Pour démarrer, HAOS exige en effet que le mode UEFI soit activé et que le Secure Boot soit désactivé. Si vous zappez ça, votre clé USB ne bootera jamais et vous allez tourner en rond un bon moment.
Et tant que vous êtes dans le BIOS, y'a un troisième réglage dont la doc ne parle pas et qui est pourtant le plus important sur la durée : le comportement après une coupure de courant. Ça s'appelle "Restore on AC Power Loss", "After Power Failure" ou "AC Back Function" selon les marques, et il faut le passer sur "Power On". Sans ça, la moindre micro-coupure vous laisse une maison sans domotique jusqu'à ce que quelqu'un rentre appuyer sur le bouton. Et ça, croyez-moi, on n'en veut pas quand on est parti en vacances.
Le reste après, c'est du classique. Vous récupérez l'image générique x86-64 et vous la flashez sur une clé USB avec Balena Etcher. Attention à bien prendre haos_generic-x86-64 et pas une version pour Raspberry Pi ou pour machine virtuelle, sinon vous allez vous demander longtemps pourquoi ça ne démarre pas. Ensuite vous bootez le mini PC sur la clé, l'installeur écrit le système sur le SSD interne, et c'est plié. Vous retirez la clé, ça reboote, et l'interface vous attend :
http://homeassistant.local:8123
Si ça ne répond pas, c'est que votre box ne fait pas de mDNS, allez juste chercher l'IP dans sa liste de clients. Et voilà, un Home Assistant tout neuf.
Maintenant, passons à la suite parce que j'ai une caisse pleine de matos à réveiller.
Dans ma caisse, y'avait notamment un dongle USB Sonoff (lien affilié) pour le Zigbee. Je le branche, et je décide de partir sur Zigbee2MQTT plutôt que sur ZHA, l'intégration native. Le choix se paye tout de suite en complexité (il faut un broker MQTT à côté, Mosquitto en l'occurrence), mais il se rembourse largement après, parce que Zigbee2MQTT expose absolument tous les réglages internes des appareils. Vous verrez plus bas pourquoi c'est déterminant.
Le mini PC qui va me faire oublier mes galères avec le Raspberry Pi
Sauf que rien ne s'est passé comme prévu. J'installe les modules recommandés, et Zigbee2MQTT n'apparaît tout simplement pas dans la liste. Bon. Une fois que j'ai réussi à le sortir de sa cachette, c'est la configuration du port série de la clé qui m'a offert un vrai moment de solitude : on modifie, on clique sur "Submit", ça a l'air de sauvegarder... et la page revient vierge, sans plus rien à sélectionner. Allez savoir si le réglage est passé ou pas !
Le truc à retenir en fait, c'est qu'il faut désigner la clé par son identifiant stable et pas par un /dev/ttyUSB0 qui peut changer au reboot. Le chemin ressemble à ça :
/dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_...-if00
Une fois ça compris, le bridge est monté et n'a plus bougé. Mais c'est ce genre de conneries qui font lâcher la domotique à pas mal de monde, je pense.
Deuxième claque, et celle-là est plus vicieuse. Mes prises connectées Meross, je les avais appairées à l'époque avec l'app du fabricant. Résultat, elles étaient déjà mariées au cloud Meross, et impossible de les récupérer proprement depuis l'app iPhone pour les basculer ailleurs.
La solution est donc passée par HACS, le magasin de composants communautaires, et un custom component qui s'appelle Meross LAN. L'intérêt, c'est qu'il parle aux prises en local, sur votre réseau, sans faire l'aller-retour par les serveurs du fabricant. Même logique avec l'app Sonoff LAN pour un interrupteur USB que j'avais (lien affilié). Vos automatisations continuent donc de tourner même quand le cloud du constructeur est dans les choux ou quand votre fibre est coupée.
J'ai aussi buté sur un cas plus tordu avec du matos Tuya car j'ai des appareil qui sont vendus sous une autre marque, avec leur app maison, et qui n'existent pas dans le cloud Smart Life sur lequel s'appuie l'intégration Tuya standard. Donc intégration cloud inutilisable... C'est vraiment le problème numéro un de l'objet connecté grand public, et c'est pour ça que je vous conseille de vérifier si un appareil a besoin du cloud avant de l'acheter, pas après.
Du coup, HACS est devenu mon meilleur pote sur ce chantier. J'y ai pris Meross LAN pour les prises, Sonoff LAN pour l'interrupteur, Alexa Media Player pour mes Echo et l'intégration Dyson. Il n'y a que mon capteur de qualité d'air air-Q qui était supporté nativement, sans rien avoir à installer.
Et maintenant, la partie qui a vraiment tout débloqué. Parce que jusqu'ici, j'avais du matériel qui répondait, mais toujours zéro automatisation. Et c'est précisément là que je décrochais avant car l'éditeur graphique de Home Assistant devient vite limitant, et dès qu'on veut une condition un peu fine, on se retrouve à taper du YAML avec des templates Jinja et à se planter d'indentation ou de paramètres.
Du coup j'ai fait un truc très à la mode en ce moment... J'ai branché Claude Code directement sur mon Home Assistant via un serveur MCP conçu spécialement pour ça . En gros, le MCP c'est ce qui donne des outils concrets à l'IA. Grâce à ça elle peut lister mes entités, lire leur état en direct, et surtout écrire les automatisations dans HA. Je décris ce que je veux en français, il va regarder ce que j'ai réellement comme capteurs chez moi, et il écrit le scénario.
Et ça pour moi, ça change complètement le rapport tordu que j'ai à ma domotique. Et voilà comment en quelques jours, je me suis retrouvé avec 21 automatisations qui tournent, ce que je n'aurais jamais fait à la main. Pas parce que l'IA est magique, mais parce qu'elle supprime la friction. Je n'ai qu'à formuler les idées qui me passent par la tête et l'IA fait le job sans que j'ai à me galérer avec du paramétrage.
À noter que Home Assistant a aussi sa propre intégration Model Context Protocol Server depuis la version 2025.2, mais elle fait plutôt l'inverse : elle expose vos appareils à un assistant. Moi je voulais un truc qui écrive la config à ma place.
Voilà le scénario dont je suis le plus fier, parce qu'il résout un problème que j'ai vraiment dans cette nouvelle maison : pas de clim, et un bureau qui monte en température. Ce n'est pas que je ne veux pas en installer , c'est que je viens d'arriver, que y'a pénurie de ventilos et de pompes à chaleur et en plus je suis en location, donc ce n'est pas si simple que ça. Mes seules armes pour le moment, c'est donc un Dyson qui filtre et qui brasse, et des fenêtres à ouvrir au bon moment.
Mon fidèle ventilo !
Ce que j'ai fait du coup, c'est que le Dyson démarre tout seul quand l'air se charge en pollution et s'arrête quand c'est redevenu propre. Concrètement il se lance quand les PM2,5 dépassent 10 µg/m³ ou les PM10 dépassent 18 µg/m³ pendant 5 minutes d'affilée. Les 5 minutes de délai, c'est important car sans ça, un simple passage devant le capteur déclenche tout.
Mais le truc dont je suis vraiment content, c'est qu'il ne souffle pas pareil selon si je suis là ou pas. Si le capteur de présence me détecte, il démarre à 20% seulement, histoire de rester silencieux pendant que je bosse. Si je suis absent, il part direct à 100% et il purge la pièce à fond. Même logique pour les COV : au-dessus de 1000 ppb, c'est 30% en ma présence et 100% quand j'ai le dos tourné.
Le reste suit la même idée : une purge à fond pendant mon absence, un régime plus doux dès que je rentre dans la pièce, le mode nuit uniquement si je suis présent, et une alerte quand les filtres arrivent en bout de course.
Mais le vrai casse-tête, c'était l'aération. Parce que oui, quand l'air intérieur devient mauvais, la solution évidente c'est d'ouvrir les fenêtres. Sauf qu'en pleine canicule, ouvrir c'est la pire idée du monde : vous virez vos polluants et vous encaissez 35 degrés à la place. Je me suis retrouvé au départ plusieurs fois avec Alexa qui me disait d'aérer alors que c'était juste pas possible.
La solution que j'ai trouvé, c'est donc de mettre en place un scénario qui ne me conseille d'ouvrir que si quatre conditions sont réunies en même temps : il fait plus de 26 degrés chez moi, il fait au moins 2 degrés de moins dehors, l'air extérieur est plus sec que le mien, et la qualité de l'air extérieur est correcte. Alors let's go, Alexa me dit d'ouvrir les fenêtres. Et ça, elle le réévalue toutes les 10 minutes.
La condition sur l'humidité est celle à laquelle je n'avais pas pensé au départ, et que Claude Code m'a conseillé de lui-même, et c'est pourtant la plus utile. Comparer les températures toutes seules, ça ne suffit pas, c'est pourquoi le scénario compare les points de rosée, et pas les pourcentages d'humidité. Parce que de l'air à 24 degrés bien humide vous rafraîchit beaucoup moins que de l'air à 25 degrés bien sec, et vous vous retrouvez avec une pièce moite que vous mettrez la nuit à assécher.
Les notifs que j'ai sur le smartphone et qui sont lues par Alexa
Petite subtilité technique au passage : je ne regarde pas la température qu'il fait dehors, mais la plus chaude des deux prochaines heures. Ça évite d'ouvrir dix minutes avant que ça remonte. Et ça oblige à passer par un helper, parce qu'un template Home Assistant ne peut pas appeler un service tout seul... il faut donc une automatisation qui va chercher la prévision et la dépose dans une variable, toutes les 10 minutes.
Et surtout, il me dit quand refermer, avant que la chaleur ne revienne. Là, je referme quand la fraîcheur est acquise, quand la prévision annonce que c'est fini, ou quand l'air du dehors se dégrade. Et le message diffusé par Alexa m'explique laquelle des trois raisons s'applique.
Deux petits helpers mémorisent aussi qu'une aération est déjà en cours, histoire qu'Alexa ne me répète pas la même chose toutes les cinq minutes. Et si je m'absente pendant l'opération, j'ai droit à un rebriefing en rentrant.
Au passage, j'ai fait deux erreurs de débutant. La première c'est que j'avais posé mon capteur de qualité d'air juste à côté de la fenêtre. Il mesurait donc l'air de la rue et pas celui de mon bureau, et les scénarios se déclenchaient n'importe quand. Déplacé au fond de la pièce, tout est redevenu cohérent. Bref, placez vos capteurs là où vous vivez, pas là où c'est pratique à brancher.
La seconde, c'est que j'ai fini par limiter les annonces vocales sur la plage 8h-22h parce que se faire réveiller à 3h du matin par une enceinte qui vous parle de particules fines, ça vous passe l'envie de la domotique très vite !
Et si vous n'avez pas de clim non plus et que vous cherchez plus radical, Vincent avait aussi testé un rafraîchisseur pendant la canicule .
Dans ma caisse à domotique, y'avait aussi un détecteur de présence Moes (lien affilié) en Zigbee, à ondes millimétriques, ce qu'on appelle un capteur mmWave. Un petit module qui coûte trois fois rien, et c'est clairement ma meilleure surprise de tout ce chantier.
Parce qu'un détecteur de mouvement classique, un PIR, détecte la chaleur qui bouge. Donc quand vous êtes assis à votre bureau en train de lire ou de regarder une vidéo, au bout de deux minutes il décide que la pièce est vide et vous éteint la lumière. Alors que le mmWave, lui, détecte la présence statique : il vous voit même immobile, parce qu'il capte les micro-mouvements et la respiration. Pour un bureau, c'est le jour et la nuit !
Le capteur AirQ à gauche / Le capteur mmWave à droite
Et c'est ici que le choix de Zigbee2MQTT paye enfin, parce qu'il expose tous les réglages internes du capteur. J'ai pu fixer la distance de détection à 225 cm, les sensibilités de mouvement et de présence statique à 4 sur 5, et un délai avant extinction de 20 secondes. Ce réglage de distance est important puisque le capteur peut porter jusqu'à 6 mètres, et à pleine portée il traverse allègrement une cloison pour aller détecter la pièce d'à côté.
Le résultat, c'est que quand j'approche de mon bureau, ma barre lumineuse BenQ s'allume toute seule via mon interrupteur Sonoff. Une deuxième automatisation allume la lampe d'ambiance sur une prise Meross, et une troisième éteint tout quand je quitte la pièce.
Et surtout, le déclencheur n'est pas la présence, mais la distance : la barre s'allume quand la cible passe sous 175 cm et ce chiffre-là, je ne l'ai pas sorti de mon chapeau. J'ai relevé 25 mesures en me plaçant assis, debout et en circulant derrière le bureau. Comme ça, un seuil serré exclut proprement tout ce qui n'est pas moi devant mon écran. Si vous devez retenir une chose sur le mmWave, c'est de bien noter vos vraies distances avant de choisir un seuil, sinon vous passerez des semaines à corriger des déclenchements bizarres.
Rien de spectaculaire au final, mais c'est un super confort !
Parce que non, même avec l'IA tout ne marche pas du premier coup. Une nuit, je quitte le bureau juste après minuit, et le lendemain matin je retrouve toutes les lumières allumées. Huit heures dans le vide. L'automatisation d'extinction sur absence n'était pourtant pas cassée : elle n'a simplement jamais eu l'information qu'il fallait pour se déclencher.
Le coupable, c'est le défaut classique des radars mmWave : la cible fantôme. Le capteur s'est verrouillé sur un écho statique et a continué à annoncer quelqu'un dans la pièce, en oscillant tranquillement entre 241 et 269 cm toute la nuit. Pour Home Assistant, j'étais donc toujours là. C'est ça la contrepartie de la détection statique... quand un radar voit quelqu'un d'immobile, il ne sait pas faire la différence entre vous et un artefact.
La parade, c'est donc une automatisation garde-fou : si la cible reste au-delà de 175 cm pendant 90 minutes d'affilée alors que les lumières sont allumées, on éteint tout. Le seuil reprend la calibration de la barre BenQ, et les 90 minutes valent le double de la plus longue plage légitime que j'aie observée sur trois jours (49 minutes). Elle ne remplace pas l'extinction sur absence, mais rattrape le cas où celle-ci n'a jamais pu partir.
Bref, l'IA écrit vite les scénarios c'est sûr, mais elle ne les teste pas en conditions réelles dans votre vraie maison. Un scénario parfait sur le papier peut très bien ne jamais se déclencher parce qu'un capteur ment donc il faut comprendre ce qui a été écrit, et surtout aller regarder l'historique quand quelque chose cloche.
Et puis y'a les petites morts silencieuses... Une de mes prises connectées est passée en "unavailable" et y est restée plusieurs jours sans que je m'en rende compte. C'est un autre piège de la domotique... Quand un truc tombe, rien ne vous prévient, ça arrête juste de marcher. D'où l'intérêt d'avoir aussi des automatisations qui surveillent votre installation elle-même, et pas seulement votre maison.
Voilà, c'est un petit début, mais ça me permet de me remettre en selle tranquillement. En tout cas, l'option mini PC + LLM est un bon choix pour avoir une install domotique rapidement fonctionnelle, je pense.
Ce que j'ai fait aussi c'est installer Tailscale sur le mini PC, pour accéder à mon Home Assistant depuis l'extérieur sans ouvrir le moindre port sur ma box. C'est de loin la méthode la plus propre, et c'est gratuit pour un usage perso.
Ensuite, je pense que je vais sortir les ESP32 du tiroir. L'add-on ESPHome est déjà installé, il ne me manque plus que le courage de m'y mettre. Si ça vous tente, j'avais montré comment transformer un ESP32 à 5 euros en capteur domotique.
J'ai aussi pas mal de matos Z-Wave à recycler, donc je pense que je vais aussi prendre une petite clé Z-Wave à rajouter sur l'ordi.
Voilà pour ce début d'aventure domotique dans mon nouveau chez moi. Pour le moment, je me suis surtout concentré sur l'aération, la pollution, la gestion de la chaleur mais je pense que j'aurais de nouveaux scénarios qui viendront peupler mes rêves dans les semaines qui viennent et je ne manquerai pas de vous en causer.

Ce serait trop cool non, si avec un double-clic sur un .docx dans votre gestionnaire de fichiers Linux, Word s'ouvrait directement ? Et je ne vous parle pas d'un bureau Windows complet en plein écran ou d'une session de bureau à distance. Juste une fenêtre Word tout ce qu'il y a de plus classique, avec son icône dans votre barre des tâches, épinglable et "alt-tabbable" comme le reste.
Hé bien, c'est ce que fait
WinPodX
, qui fait tourner un conteneur Windows sous KVM en arrière-plan et découpe l'affichage application par application via FreeRDP RemoteApp. Comme ça, les liens mailto: partent vers Outlook ou les schémas slack: ou vnc: vers l'application qui les a déclarés.
Tout ce qui est presse-papiers, son, imprimantes et votre dossier personnel sont partagés d'office, et le conteneur se met en pause tout seul quand personne ne s'en sert.
Jusque-là, WinApps dont je vous ai déjà causé, qui fait tourner Office sous Linux , faisait déjà l'essentiel avec les fenêtres détachées, le dossier personnel partagé, le clic droit qui envoie un fichier vers une application Windows. Mais WinPodX se distingue aussi dans l'autre sens puisque vos applications Linux remontent également dans le menu "Ouvrir avec..." du Windows, et dans un dossier "Linux Apps" du menu Démarrer. Bref, l'accès aux apps et aux fichiers marche dans les 2 sens, pour plus de transparence dans vos usages.
Si ça vous intéresse, sachez qu'il vous faut une licence Windows valide, car WinPodX ne la fournit pas (logique), que la virtualisation doit être activée dans le BIOS, avoir un accès à /dev/kvm, 8 Go de RAM et une trentaine de gigas de libre. La première installation prend cinq à dix minutes le temps de télécharger l'ISO, et les suivantes sont quasi instantanées.
Pour l'installer :
curl -fsSL https://raw.githubusercontent.com/kernalix7/winpodx/main/install.sh | bash
Il y a également un paquet pour openSUSE, Fedora, Debian, Ubuntu, Arch et NixOS, un AppImage pour les autres. C'est sous licence MIT, et sans aucune télémétrie puisque celle de Windows a été elle-même coupée par défaut. Ah et l'interface du OuinOuin peut être configurée en français.
Par contre, pas d'accélération GPU, ce qui exclut les jeux et la 3D à moins de monter un passthrough à la main. Préférez Wine pour ça...

Je suis trop content, le numéro d'août du magazine officiel Raspberry Pi est sorti avec un dossier spécial cyberdeck en couverture, et ses 132 pages sont téléchargeables gratuitement en PDF.
Un cyberdeck, si ça ne vous dit rien, c'est un ordinateur portable bricolé à la main. Petit écran, clavier physique, look cyberpunk assumé. On fabrique la machine que le commerce ne vend pas, pour un usage qui n'appartient qu'à soi. J'en ai déjà montré un y'a pas longtemps, même si faut encore voir ce que ça donne une fois posé sur un bureau.
Le dossier de Raspberry Pi Magazine en aligne une dizaine. Un Amstrad PPC 640 de 1987 vidé de ses entrailles pour loger un Raspberry Pi 3 et une appli de narration qui se déclenche à l'insertion d'une disquette. Une machine à écrire Smith Corona de 1989 refaite à neuf autour d'un Raspberry Pi 4. Un sac à dos qui trimballe un labo mobile, radio logicielle et outils Kali Linux...etc. Y'a de quoi faire !
On y croise aussi un Hackberry Pi monté en outil de pentest, une pochette rose façon clutch avec un Pi Model A+, et le PiDex Doomsday Companion, caisse étanche à panneau solaire qui embarque Wikipedia sur clé USB.
Vient ensuite le montage pas à pas. Brian Corteil y déroule la construction d'une machine logée dans une valise étanche de type Pelican (lien affilié), avec un Raspberry Pi 5, un écran tactile 7 pouces, un clavier Bluetooth, une carte son USB et une batterie LiPo protégée par un fusible.
Et rassurez-vous, le tuto ne se contente pas d'aligner des références à commander sur Amazon... Non, il détaille même le calcul d'alimentation à faire à la main, I = P/V, soit 28 W et environ 5,6 A pour un Pi 5 et son écran à pleine luminosité. Il conseille également de prototyper en carton votre cyberdeck avant de vous lancer dans la CAO, et préfère un power bank au LiPo pour ceux qui ne veulent pas jouer avec les batteries (BOUM !).
Pour récupérer le fichier PDF du magazine, le lien passe d'abord par une page de don. Si vous êtes un gros radin, le bouton No thanks, take me to the free PDF déclenchera quand même le téléchargement sans compte ni adresse mail. C'est en anglais bien sûr et pour ceux qui aiment le toucher du papier, l'édition physique coûte 7,99 livres.
Ah et le contenu est sous licence Creative Commons BY-NC-SA 3.0, sauf mention contraire. Amusez-vous bien !!

Diagram-design , c'est un skill pour Claude Code, Codex et Pi qui vous fabrique un schéma technique sous forme de fichier HTML autonome. Vous double-cliquez, ça s'ouvre dans le navigateur, et le diagramme est là, super clean et sans avoir à faire de build ou importer des images.
27 types de diagrammes sont couverts, du schéma d'architecture au diagramme de séquence en passant par la machine à états, le Gantt et le quadrant, chacun en 3 variantes : claire, sombre et éditoriale. Bref, de quoi illustrer une doc ou un article de blog sans dessiner les boîboîtes vous-même, une par une comme dans un Excalidraw .
Le type Loop, avec son moyeu de mémoire partagée. Les pointillés sont les écritures en retour.
Il sait aussi partir de ce que vous avez déjà. Vous lui pointez un fichier draw.io ou un bloc Mermaid planqué dans un README, et il le reprend. Attention, ce n'est pas une conversion hein, mais un re-dessin (ça se dit ?? j'sais pas mais je m'en fous) complet. Il va même récupérer le diagramme embarqué dans un .drawio.png, vous savez, celui qui ressemble à du charabia quand vous ouvrez le fichier dans un éditeur.
Ce qu'il jette au passage ce sont les coordonnées de la source, sa palette, ses polices, les connecteurs en diagonale de draw.io et la mise en page automatique de Mermaid. Ce qu'il garde par contre, ce sont les composants, les relations, les regroupements et le sens de lecture.
À la fin de l'import, il rend même un genre de relevé de fidélité en vous indiquant les noeuds en entrée, les noeuds qu'il a dessinés et les noeuds orphelins qu'il a supprimé.
Un fichier draw.io de 12 nœuds redessiné en niveau de détail équilibré, pour un billet de blog.
La sortie se règle ensuite sur 4 critères. Le format d'abord, HTML, SVG ou PNG. Puis la taille, qui ne touche pas que le cadre. Une planche 16:9 destinée au vidéoprojecteur reçoit des libellés en 16px, une image de doc en reçoit des 12px.
Le troisième critère élague votre dessin, avec 24 nœuds au maximum en mode fidèle, 12 en équilibré, 7 en simplifié, et la coupe suit toujours le même ordre : les décorations, puis les doublons, puis les grappes de feuilles, puis l'infrastructure.
Le quatrième change le vocabulaire, mais pas le nombre de boîtes pour s'adapter au public à qui est destiné le diagramme. Pratique pour passer d'un diagramme hyper technique à quelque chose qui pourra être compris de la direction ou des commerciaux.
Reste l'allure du diagramme... Vous lui donnez par exemple l'URL de votre site, il lit la page d'accueil, en tire la couleur de fond, celle du texte, celle des boutons et la pile de polices, puis range tout ça dans des rôles, et voilà vous avez le design de vos rêves.
Mais surtout, avant d'écrire quoi que ce soit, il contrôle le contraste en AA. Si une de vos couleurs ne tient pas la route à la taille où vivent les libellés, entre 9 et 12px, il propose une valeur corrigée et explique pourquoi. Vous validez le diff, et le guide de style du skill est mis à jour pour tous les schémas suivants.
Et au premier schéma dans un nouveau projet, il refusera même de partir sur le thème par défaut sans vous demander. Il vous proposera naturellement d'aller consulter votre site, de coller vos couleurs à la main, ou encore d'assumer le défaut en connaissance de cause.
Côté installation, ça passe par les plugins pour Claude Code et Codex, par npx pour Codex, par une ligne pour Pi. C'est sous licence MIT et c'est gratuit. Tout est ensuite produit en local, et l'import Mermaid se contente de lire le texte, sans rendu ni appel réseau. Il n'y a que l'export PNG qui réclame un extra, à savoir Playwright, à installer à côté.
Maintenant, c'est pas le même usage qu'un bloc Mermaid qui lui est destiné à évoluer en permanence. Là c'est vraiment pour faire des rendus sous la forme d'une image finie et jolie. Donc à vous de voir !

Bonne nouvelle les amis, je viens de vous mettre en ligne un sélecteur de distribution Linux !! 35 distributions dans la balance, vingt questions max et à l'arrivée, le nom du Linux qu'il vous faut !
Parce que oui, la "meilleure" distribution Linux n'existe pas dans l'absolu. En fait, le bon choix dépend de votre machine, de votre usage et du temps que vous acceptez d'y passer. Posez la question à deux personnes, l'une répondra Linux Mint, l'autre CachyOS, et les deux auront raison !
L'outil vous demande vos usages et ce que vous avez sous la main... L'âge de la machine, la RAM, la carte graphique, un Windows à garder à côté, et ce que vous comptez en faire, jouer compris.
Le questionnaire se raccourcit ensuite selon ce que vous avez déjà répondu et au final, vous repartez avec une distribution, sa fiche technique et 2 alternatives si celle-là ne vous branche pas.
J'ai remarqué que ce qui manquait à la plupart des classements de ce type, c'était le "pourquoi pas cette distrib ?". C'est pour cela que mon sélecteur affiche aussi les distributions écartées avec la raison de leur élimination, et celles qui ne démarreront même pas chez vous. Hé oui, un vieux PC en 32 bits n'a plus grand monde à se mettre sous la dent depuis que Debian 13 a supprimé son noyau i386.
Et quand Linux n'est pas la réponse à votre besoin, il vous prévient. Par exemple, si votre travail dépend de la suite Adobe ou d'un jeu avec un système anti-triche, l'outil ne fera pas semblant du contraire.
Et bien sûr, tout cela tourne exclusivement dans votre navigateur, et rien ne part ailleurs dans le cloud. En plus c'est gratuit ! 35 distributions ne font évidemment pas tout l'écosystème Linux, et j'ai dû faire des choix mais ça vous donne déjà un nom précis sur lequel vous lancer en toute sérénité.
Et si vous voulez découvrir les autres services Korben c'est par ici .

Je m'en doutais un peu mais c'est confirmé, derrière chaque session GeForce NOW tourne un vrai Windows, et cette machine virtuelle est moins verrouillée qu'elle en a l'air. En effet, une démo du moddeur Zortos montre le service qui s'ouvre non pas sur un jeu, mais sur un bureau complet, avec barre des tâches, menu démarrer et icônes.
La manip passe par le jeu Trove... Pendant le lancement, Zortos ouvre le navigateur web intégré de Steam, se balade dans les dossiers de la machine, récupère un exécutable et remplace quelques chemins dans le répertoire du jeu. Au démarrage suivant, Windows s'affiche alors à la place du jeu. Tout ça repose sur SalsaNOW , un outil open source signé dpadGuy.
Une fois le bureau ouvert, la machine encaisse à peu près tout ce qui ne réclame pas de droits administrateur. Zortos y a fait tourner Wallpaper Engine pour les fonds animés et LM Studio avec le modèle Gemma 4. Et pour les logiciels qui exigent une installation privilégiée, ils peuvent sans souci être préparés en version portable sur son propre PC, puis décompressés là-haut.
Reste que ce bureau est un bac à sable. La session tourne en compte utilisateur simple, donc pas de droits administrateur, pas d'anticheat noyau, et beaucoup d'installations qui finissent sur un refus d'accès.
L'autre mur, c'est la persistance. Sans l'option de stockage payante, tout disparaît à la déconnexion. Et même en la prenant, la machine ne conserve que vos Documents, l'AppData du compte, baptisé kiosk, et le contenu du lecteur I:. Tout le reste repart de zéro à la session suivante, et fermer l'explorateur de fichiers coupe la connexion sur-le-champ.
Dernier filtre, et pas le moindre, ça ne fonctionne que sur les abonnements payants, ceux dont je détaillais les formules quand Nvidia a sorti son client Linux natif . L'offre gratuite est hors jeu, tout comme les GeForce NOW opérés par les partenaires alliance.
Maintenant, qu'en est-il du règlement ? Eh bien comme vous vous en doutez, les conditions d'utilisation interdisent formellement de contourner les mécanismes de sécurité ou d'authentification du service, et Nvidia se réserve le droit de suspendre ou de restreindre un compte à sa discrétion. En cas de suspension, la période coupée n'est pas remboursée.
Mais à ce jour, aucun bannissement lié à ces méthodes n'a été rapporté, et Nvidia n'a sorti ni correctif ni communiqué. Voilà, c'est rigolo comme bidouille, mais si vous vous lancez, c'est votre compte que vous mettez en jeu.
Reste maintenant à voir combien de temps la porte restera ouverte.

Si vous avez un Mac Apple Silicon et que vous en avez assez de payer des tokens à chaque requête, Rapid-MLX vaut le détour. C'est un moteur d'inférence local maintenu par Raullen Chai, qui tape directement dans les kernels MLX d'Apple, sans repli sur llama.cpp ni couche Metal intermédiaire. Et si le nom vous dit vaguement quelque chose, c'est normal puisque c'est un fork de vLLM-MLX, le serveur de Wayner Barrios dont je vous parlais en mai . Rapid-MLX a juste pris un rythme de publication plus soutenu des deux.
Ce que ça vous donne, c'est donc un serveur HTTP qui parle le même langage que l'API d'OpenAI et celle d'Anthropic. Vos scripts, Cursor, Aider, LangChain ou Claude Code continuent de fonctionner, sauf qu'ils tapent sur votre machine au lieu d'un datacenter.
Donc je vous propose de voir ensemble comment installer ça.
Le script d'installation contrôle plusieurs choses avant de lancer quoi que ce soit, et autant les connaître d'avance. Il faut une puce Apple Silicon et il n'y a pas de version Linux ni Windows, ni de support CUDA ou AMD.
Le script d'installation accepte encore macOS 13 Ventura, mais le vrai plancher est macOS 14 Sonoma. La formule Homebrew l'exige, et surtout MLX, la brique Apple sur laquelle tout repose, ne publie de paquets macOS que pour les versions 14, 15 et 26. Sur un Mac resté en Ventura, ça cassera donc à l'installation des dépendances, quel que soit le chemin choisi.
Dernier point à avoir en tête, c'est pensé pour votre machine à vous et pas pour un serveur. Vous n'y trouverez donc ni authentification multi-utilisateurs, ni quotas de requêtes.
Le plus simple, c'est Homebrew :
brew install rapid-mlx
Si vous gérez déjà vos environnements Python vous-même, les autres chemins existent :
uv tool install rapid-mlx@latest
python3.12 -m pip install rapid-mlx
Il y a aussi un installeur en une ligne (curl -fsSL https://rapidmlx.com/install.sh | bash) qui détecte votre RAM et vous propose un modèle adapté. Il crée un venv isolé dans ~/.rapid-mlx/ et pose le binaire dans ~/.local/bin/. Un curl | bash reste un curl | bash. La formule Homebrew fait exactement le même boulot, donc l'installeur en ligne perd de son intérêt.
L'installation de base pèse dans les 460 Mo et la vision, l'audio et les embeddings sont des extras optionnels, vous les ajouterez seulement si vous en avez l'usage.
C'est là que la plupart des gens se plantent, en chargeant un modèle trop gros et en concluant que "ça rame". Sur Mac, la RAM est unifiée, donc le modèle mange directement dans la mémoire que se partagent le CPU et le GPU.
Les paliers recommandés par le projet :
| RAM | Modèle conseillé |
|---|---|
| 8 à 23 Go | `qwen3.5-4b-4bit` |
| 24 à 47 Go | `gpt-oss-20b-mxfp4-q8` |
| 48 à 95 Go | `qwen3.6-35b-8bit` |
| 96 Go et plus | `gpt-oss-120b-mxfp4-q8` |
Le catalogue complet se liste avec la commande rapid-mlx models, et rapid-mlx info <alias> vous donne le profil détaillé d'un modèle. Si vous voulez sortir du catalogue maison,
le filtre matériel de Hugging Face
que je vous montrais fin juin fait exactement ce tri à votre place.
Pour utiliser un autre modèle que celui par défaut, il suffit de reprendre l'alias affiché par rapid-mlx models et de le passer en argument. Et si vous préférez télécharger les poids à l'avance, sans rien lancer, c'est le boulot de rapid-mlx pull, qui accepte aussi bien un alias du catalogue qu'un identifiant Hugging Face :
rapid-mlx pull qwen3.5-9b-4bit
Le modèle atterrit dans le cache Hugging Face de votre machine, et ensuite rapid-mlx chat qwen3.5-9b-4bit ou rapid-mlx serve qwen3.5-9b-4bit chargeront ce modèle-là. Le pull préalable reste facultatif, chat et serve téléchargent d'eux-mêmes ce qui manque, mais autant rapatrier les gigas tranquillement avant plutôt qu'au moment où vous voulez bosser.
Avant de bricoler des intégrations, testez en direct :
rapid-mlx chat
Ça part sur qwen3.5-4b-4bit par défaut, télécharge les poids au premier lancement (comptez 2,5 Go) et vous lâche dans une interface (REPL). /help listera les commandes slash, et /exit vous permettra de quitter le chat.
Une subtilité qui évite de mal interpréter ce premier test, c'est que dans le chat, le raisonnement est coupé par défaut, histoire que le modèle ne vous déballe pas sa réflexion à l'écran. En mode serveur par contre c'est l'inverse, et ça change la vitesse ressentie du tout au tout. J'y reviens plus bas.
Le vrai intérêt, c'est le mode serveur :
rapid-mlx serve qwen3.5-4b-4bit
Vous récupérez un endpoint sur http://localhost:8000. Le test qui confirme que tout est en place :
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"default","messages":[{"role":"user","content":"Dis bonjour !!"}]}'
Et côté Python, vous gardez le SDK OpenAI tel quel, seule l'URL de base change :
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")
print(client.chat.completions.create(
model="default",
messages=[{"role": "user", "content": "Say hello"}],
).choices[0].message.content)
Pointez n'importe quel client compatible OpenAI sur http://localhost:8000/v1 et c'est réglé. Cursor, Aider, LibreChat, Open WebUI, LangChain, tous marchent avec ce seul changement d'URL. Il y a aussi /v1/embeddings pour du RAG local et /v1/responses pour le Codex CLI.
C'est le morceau le plus intéressant du lot, et il tient en deux variables d'environnement. Serveur lancé d'un côté, puis dans un autre terminal :
ANTHROPIC_BASE_URL=http://localhost:8000 ANTHROPIC_API_KEY=not-needed claude
Attention quand même, l'URL de base doit être la racine, sans /v1 à la fin. Le SDK Anthropic ajoute /v1/messages tout seul, donc si vous mettez /v1 vous obtenez /v1/v1/messages et ça casse.
Depuis la 0.10.14, l'appel d'outils passe par une grammaire contrainte activée par défaut, donc plus besoin de bidouiller un --tool-call-parser à la main pour que les tool calls soient parsables. Pour du Claude Code sérieux, visez plutôt un gros modèle, la doc officielle recommande par exemple qwen3.6-35b-4bit en exemple.
Le réflexe à avoir avant de chercher ailleurs :
rapid-mlx doctor
Les trois pannes les plus courantes sont toujours les mêmes.
Débit décevant côté serveur, c'est le raisonnement : les Qwen 3.5 et 3.6 démarrent en mode réflexion, donc ils pensent à voix haute avant de répondre, et --no-think règle l'affaire.
Plantage mémoire, votre modèle est trop gros pour la RAM disponible, redescendez d'un palier ou prenez une quantification plus agressive. Appels d'outils qui arrivent en texte brut, la récupération automatique gère la plupart des cas, sinon vous forcez le parser correspondant à votre modèle.
Voilà, grâce à ça, votre Mac est maintenant un serveur d'IA super rapide ! Plus de facture au token, et vos prompts ne sortent plus de la pièce.
Merci à Philobois pour le lien !

Si vous avez un Raspberry Pi et que Chromium commence à vous fatiguer, le VRAI Chrome, celui des chads que vous êtes, est enfin dispo en ARM64 !! Enfin, dispo... Si vous savez où chercher, parce que la page de téléchargement de Google vous propose toujours l'installeur amd64, qui ne tournera jamais sur votre machine. C'est Joey Sneddon, d'OMG! Ubuntu, qui a trouvé la combine en bidouillant l'URL depuis son Pi 5.
Avant toute chose, vérifiez que vous êtes bien en 64 bits, parce qu'un système 32 bits refusera le paquet :
dpkg --print-architecture
Si ça répond arm64, le fichier est là , 126 Mo. Il s'installe comme n'importe quel .deb local, en laissant apt gérer les dépendances :
wget https://dl.google.com/linux/direct/google-chrome-stable_current_arm64.deb
sudo apt install ./google-chrome-stable_current_arm64.deb
Le RPM existe aussi pour les distributions qui préfèrent, en remplaçant la fin du nom par aarch64.rpm.
J'ai ouvert le paquet pour regarder ce qu'il y avait dedans. Son fichier de contrôle annonce google-chrome-stable en version 150.0.7871.186, architecture arm64, un peu plus de 400 Mo une fois installé. Soit exactement la même version que le paquet x86 poussé le même soir. Le même Chrome, à la même révision.
Et le canal stable n'est pas seul. Le dépôt de Google sert aussi la beta (151.0.7922.47), la dev (152.0.7967.2) et la canary (152.0.7974.0) pour les puces ARM, et son fichier Release déclare noir sur blanc les deux architectures. Les quatre canaux ont été publiés dans la même minute que leurs équivalents x86.
Est-ce qu'on se retrouve coincé sur cette version, à re-télécharger le .deb à la main tous les mois ? Non. Le script de post-installation contenu dans le paquet ajoute le dépôt Google en précisant l'architecture, et les cinq paquets y sont indexés en arm64 exactement comme en x86. Les mises à jour ont donc de quoi arriver par apt, comme d'habitude.
Alors pourquoi s'embêter, puisque Chromium tourne sur ARM depuis des années ? Pour deux trucs. D'abord ma synchro du compte Google, qui ramène favoris, mots de passe et extensions. Et ensuite, Widevine, le module DRM, qui est ici un vrai binaire aarch64 et pas une couche de compatibilité comme l'émulateur FEX financé par Valve . Netflix et les autres plateformes à DRM s'ouvriront enfin sur un SBC !!!
Mais avec une nuance à connaître avant de vous réjouir qui est que sous Linux, Widevine reste au niveau "Software Secure". Cela veut dire que sur Netflix, la qualité plafonnera entre 720p et 1080p. De la HD donc et pas de la 4K. Désoléééé !
Google avait promis tout ça en mars, pour le deuxième trimestre et son billet annonçait même une installation via chrome.com/download pour les autres distributions, ce qui est malheureusement le morceau qui manque aujourd'hui.
Cela veut dire aussi que rien ne garantit que ce paquet soit considéré comme étant prêt par ses auteurs donc si votre machine doit rester stable, laissez passer quelques semaines avant de vous y essayer.
Manque plus que quelqu'un chez Google ait le courage d'appuyer sur "publier".

Vous connaissez Doully ? Mais siii, l'humoriste avec la voix la plus cassée du stand-up français ? Perso je l'aime bien, elle est aussi trash que drôle et aujourd'hui, elle a mis en ligne son propre guidage vocal pour Waze, avec le lien qui va bien pour l'installer dans votre bagnole.
Avant que vous vous fassiez des idées, non, elle n'est pas motorisée au Jack Daniel's. C'est sa vraie voix tout simplement. Elle le répète à qui veut l'entendre : "Non je ne suis pas bourrée, et oui je suis née avec cette voix et cette diction de clocharde". On ne choisit pas.
Pour ceux qui ne l'ont jamais entendue, voici un extrait de son spectacle Hier j'arrête, comme ça vous saurez à quoi vous attendre au prochain rond-point.
Le truc marrant, c'est que ce n'est pas un pack de voix de star négocié à coups de contrats avec Google. Elle a tout simplement utilisé la fonction voix personnalisée de Waze, dispo pour tous dans votre téléphone. Si vous voulez faire pareil qu'elle, direction les réglages de son, "Nouvelle voix", et il ne reste plus qu'à enregistrer les phrases une par une avant de baptiser le tout. Et hop, ça apparaîtra dans la liste.
Et vous pouvez ensuite la refiler aux copains. Dans "Voix personnalisées", balayage vers la gauche, "Partager", et l'appli génère un lien. Bref, c'est ce qu'a fait Doully pour sa communauté.
Un point à connaître quand même avant de partir sur l'autoroute des vacances avec Doully à fond dans les haut-parleurs : Waze réserve les noms de rues aux voix qui portent la mention "Avec les noms de rue" dans la liste. Comme une voix enregistrée au micro dans son salon ne peut évidemment pas deviner le nom de votre départementale préférée, vous aurez les virages et les alertes façon Doully, mais pas l'adresse. C'est la vie, soyez fort !
Voilà, en tout cas, je trouve que c'est une super idée, donc c'est pour ça que je relaie ça ici. Sur mon Waze c'est installé en tout cas !
Pour ceux que ça intéresse, la voix de Doully, c'est par ici , à ouvrir depuis le téléphone où Waze est installé.
Le GPS le plus éclaté de la route, c'est cadeau !

Je viens de perdre de précieuses minutes sur un truc qui aurait dû me prendre trente secondes : Récupérer le numéro DUNS de mon entreprise.
Si vous ne savez pas ce que c'est, bienvenue au club ! En gros, c'est un identifiant que Dun & Bradstreet, une société américaine, a déjà collé à mon entreprise sans jamais me demander mon avis. C'est l'équivalent B2B de ce qu'Experian ou Equifax font sur les particuliers et leur job, depuis 1841 (oui, ils sont plus vieux que l'ampoule électrique), c'est de ficher les boîtes du monde entier et de revendre l'info.
C'est un peu le societe.com des américains quoi. Ils font le même taf que les mormons mais en maintenant une base de plus de 600 millions d'entreprises avec pour chacune, qui la dirige, son chiffre d'affaires, sa taille, si elle paie ses fournisseurs à temps, si elle a frôlé la faillite...etc. Bref, grâce à eux, sans le savoir, on a une note de solvabilité et une espèce de carte d'identité de notre entreprise.
Comme ça, avant qu'une banque ne vous prête de l'argent, ou qu'un gros client ne signe avec nous, ça permet de savoir si votre entreprise est solvable et réelle.
Sauf qu'à aucun moment, on ne nous demande notre avis. En France par exemple, leur partenaire exclusif c'est Altares qui crée automatiquement nos fiches à partir des registres publics (INSEE, RCS) dès que votre entreprise a un SIRET. On est donc enregistré par défaut et ensuite pour consulter SA PROPRE fiche ou la corriger, bah faut passer à la caisse.
Voilà, c'est juste un data broker de plus qui agrège des données en bonne partie publiques, pour y ajouter du comportement de paiement, et facturer l'accès aux pigeons qui passent.
Mais alors leur VRAI coup de génie, c'est ce code DUNS lui-même !!
Ce n'est qu'une numérotation privée, mais Apple, Google, l'administration américaine (les marchés publics US ont longtemps tourné au DUNS) l'ont adoptée comme standard. Cela veut dire que cet identifiant fait maison attribué par une société américaine est devenu un passage quasi obligé pour publier une app sur l'AppStore ou décrocher un contrat. Bref, c'est plus un numéro, c'est un péage mondial.
Et moi, tout ce que je voulais faire, c'était publier des applications sur l'App Store et sur Google Play. Sauf que voilà, pour le faire en tant qu'entreprise, eh bien, il faut ce numéro DUNS.
Le truc rigolo, c'est que ce numéro est censé être communicable gratuitement, mais j'ai eu beau chercher, que ce soit sur les sites officiels ou sur les sites alternatifs (qui sont parfois de grosses arnaques), tous exigent une "petite" contribution pour connaître le numéro.
Sympa la pression quand justement vous ne savez pas où les trouver.
Cette exigence n'est pas nouvelle et date de la vague de vérification d'identité que Google impose à tous les développeurs Android , et c'est là que la chasse au trésor commence, sauf que le trésor est derrière un racket bien organisé.
Vous tapez le nom de votre entreprise sur verif.com, un service d'Altares-D&B. La fiche s'affiche, pas mal d'infos s'affichent SAUF la seule ligne que vous cherchez. À la place du DUNS, une zone de flou et un bouton pour acheter le rapport à 39 euros hors taxe.
Et d'autres sites vous vendent également une "recherche instantanée" à 3,90 euros... C'est un peu le même délire qu'avec notre KBIS nationale, car comme écrit dans la FAQ de Verif.com, ce numéro est gratuit !
Sauf que c'est tellement galère ou looong de l'obtenir que tout le monde finit par payer. Il y a bien, soi-disant, la possibilité de faire une demande directe chez Dun & Bradstreet ou chez verif.com / altares, mais j'ai retourné leur page contact, il y a tout sauf ça... Pire, le petit formulaire "Obtenir un DUNS", renvoie vers Verif.com qui veut nous facturer les 39 € HT dont je vous parlais ci-dessus.
Enfin ça, c'est ce que je croyais. Parce qu'il existe bien un service officiel, gratuit et instantané pour lire votre numéro, sauf que Dun & Bradstreet le planque bien : ça s'appelle UPIK (pour Unique Partner Identification Key). Vous allez sur le portail UPIK , vous tapez le nom de votre boîte, vous choisissez "France" dans la liste des pays, et là, magie, les neuf chiffres s'affichent en clair, sans compte à créer, sans un centime à sortir. J'ai testé, le numéro arrive en 3 secondes... celui-là même que verif.com me masquait derrière ses 46,80 €. Même base de données, même numéro, prix qui n'a plus rien à voir.
Le seul hic, c'est qu'UPIK sait juste lire, pas créer. Si votre entreprise est déjà fichée chez D&B (et une boîte française immatriculée l'est quasi toujours), vous avez vos chiffres direct. Mais si elle n'y figure pas encore, UPIK vous renvoie gentiment vers le partenaire du coin... Altares. Et rebelote, le péage. C'est là que la deuxième combine entre en jeu, celle qui fabrique le numéro gratos quand tout le monde veut vous le vendre, et elle vient d'où on ne l'attend pas du tout : Apple.
Direction developer.apple.com/enroll/duns-lookup . Oui, faut aller chez Apple, même si votre appli part sur le Play Store de Google parce que ces derniers proposent un service qui interroge la même base Dun & Bradstreet que tout le monde, et recrache le même numéro.
Il vous faut juste un identifiant Apple, gratuit, que vous avez sûrement déjà dans un tiroir et renseigner quelques infos.
Apple vous réclame alors quelques infos telles que le nom légal exact de l'entreprise, l'adresse du siège, l'adresse postale et vos coordonnées professionnelles. Recopiez le nom légal au caractère près, tel qu'il figure sur votre extrait d'immatriculation KBIS et validez !
Si votre boîte est déjà dans la base D&B, et une société française immatriculée y est quasi toujours, Apple renverra alors sur votre boite mail le précieux numéro DUNS gratuitement. Et si votre société n'apparaît pas, vous soumettez vos infos pour une création gratuite, et ça devrait prendre quelques jours max (ouais les mecs prennent leur temps). Après dans les deux cas, la facture sera identique à savoir que ça vous coutera zéro euro !!! Ouf !
Une fois les neuf chiffres en poche, retour dans Play Console ou sur Apple Connect et voilà, vous allez pouvoir enregistrer votre entreprise chez eux. Attention à l'adresse car elle doit correspondre exactement à celle qu'a enregistrée D&B, pas à celle que vous croyez avoir.
Et voilà...
J'espère que vous aurez la chance de tomber sur mon article et que ça vous aura éviter bien des galères ! Le DUNS est gratuit mais ne pas connaître cette astuce peut vous coûter cher !

Odysseus, c'est le workspace IA que PewDiePie a balancé sur GitHub fin mai. Chat, agents, recherche web, email, calendrier, notes et documents, tout est réuni dans un superbe cockpit auto-hébergé dans lequel les modèles et l'historique peuvent rester sur VOTRE machine. Vous avez aussi un éditeur Markdown avec historique de versions, une génération d'images intégrée, et un mode Compare pour opposer deux modèles côte à côte en aveugle (exclusion faite des services tiers liés à la recherche web, l'email et le calendrier, évidemment...).
J'ai voulu l'installer sur mon Mac, mais j'ai quand même rencontré un petit piège qui a failli transformer l'expérience en échec... Voici donc comment le faire tourner correctement sous Mac + quelques idées de ce que vous allez pouvoir faire avec ce truc.
Odysseus évolue vite. La branche main est stable et testée, mais la branche dev peut casser n'importe quand. Privilégiez la branche stable en la clonant explicitement :
git clone https://github.com/odysseus-dev/odysseus.git
cd odysseus
git checkout main
Sur Apple Silicon, Docker ne peut pas accéder au GPU Metal. Les modèles tournent sur le CPU, et ça rame comme pas permis. Du coup, sur Mac, on est obligé d'installer ça en natif.
Ouvrez un terminal et lancez ça :
git clone https://github.com/odysseus-dev/odysseus.git
cd odysseus
./start-macos.sh
Le script installe alors les dépendances et démarre le serveur. Sur mon Mac, AirPlay squattait le port 7000, donc l'interface s'est ouverte automatiquement sur http://127.0.0.1:7860. Ensuite, au premier lancement, il faut renseigner un nouveau mot de passe pour le compte admin.
Si vous accédez à Odysseus depuis une autre machine (VPS ou serveur distant), ouvrez un tunnel SSH plutôt que d'exposer le port directement sur Internet :
ssh -L 7860:127.0.0.1:7860 user@votre-serveur.com
Ensuite, accédez simplement à http://127.0.0.1:7860 en local. C'est plus sécurisé que d'ouvrir le port sur le public.
Pour du rapidos sans que ça devienne stupidos, j'ai choisi pour mes tests Qwen3-30B-A3B. Ce modèle n'active qu'une partie de ses paramètres à chaque réponse, ce qui colle bien à la RAM unifiée d'un gros Mac.
La première fonctionnalité assez cool dans cet outil, c'est le Cookbook qui permet de télécharger des modèles adaptés à notre config. Ce dernier a correctement reconnu mon M4 Max et ses 128 Go mais s'est ensuite planté comme une merde sur llama.cpp avec cette option --flash-attn auto invalide. Après avoir retiré le paramètre, le serveur restait aux abonnés absents tandis que l'interface l'affichait toujours comme actif. Bref, j'ai laissé tombé llama.cpp.
Le Cookbook reconnaît bien le M4 Max et propose des modèles adaptés. Le lancement, lui, a planté.
L'autre option qui s'est offerte à moi, ça a été Ollama ( je vous ai montré comment l'installer par ici ). Vous récupérez le modèle qui vous intéresse avec et vous lancez le serveur ouvert sur le réseau local :
ollama pull qwen3:30b-a3b
OLLAMA_HOST=0.0.0.0:11434 ollama serve
Dans les réglages d'Odysseus, ajoutez ensuite http://localhost:11434/v1. Et hop, ça fonctionne !! La version 1.0.2 propose aussi maintenant MLX dans le Cookbook, mais Ollama reste le chemin qui a vraiment tenu bon durant mes tests. Vous aurez peut-être plus de chances que moi.
L'ajout manuel de l'endpoint Ollama a été le chemin le plus fiable.
Bonus : Si vous n'avez pas de GPU ou que vous préférez la fiabilité, vous pouvez aussi connecter une API externe comme OpenAI ou OpenRouter. Dans les réglages, ajoutez simplement votre clé API et Odysseus basculera sur ces modèles cloud. C'est moins gratuit que du local, mais ça marche sans galère.
Alors, cet outil fait plein de choses et on peut l'utiliser vraiment pour ce qu'on veut, mais pour ma part, je vous ai isolé trois cas d'usage compatibles avec mon activité.
Premier scénario, la tournée de veille du matin. Je lui donne les liens reçus durant la nuit, il les classe par sujet, repère les doublons et propose trois angles courts. Je garde les sources dans un document local, avec les objections et les points à vérifier. Et comme vous l'avez vu sur mes captures d'écran, le chat sait déjà faire du brainstorming puisqu'il m'a sorti trois angles exploitables en quelques secondes...
Trois angles d'articles en 29 secondes, avec un brouillon versionné ouvert à droite.
Deuxième scénario, un dossier par article. J'y range le brief, les liens primaires, les citations, les captures et les versions du texte. L'éditeur Markdown récupère le titre depuis le premier H1 et conserve l'historique. Avec deux modèles configurés, le mode Compare permet d'opposer deux intros ou deux plans côte à côte sans envoyer le brouillon chez un fournisseur.
Troisième scénario, le secrétaire de rédaction local. Il surveillerait une boîte dédiée aux alertes de sécurité, préparerait la liste des sujets urgents et poserait des rappels dans le calendrier. Sur le papier, c'est exactement le type de corvées chiantes qu'un agent devrait pouvoir absorber mais en pratique, jamais de la vie, je ne lui laisse faire des actions automatiques comme envoyer des mails, ou gérer mon calendrier. Pour moi, c'est pas encore assez safe.
J'ai demandé à l'agent de retrouver un document et de le résumer. Il a dépensé près de 1 800 jetons à deviner comment appeler manage_documents, sans jamais lancer l'outil de recherche. De son côté, le calendrier a terminé sur un Could not extract JSON puis la recherche web a trouvé le bon dépôt GitHub, mais le modèle en a choisi un faux.
Le pompon, c'est la fonctionnalité Deep Research. Après 4 minutes de boulot, ça m'a généré 13 pages issues de 6 sources retenues. L'outil a donné la bonne conclusion au document, mais ensuite, a totalement inventé une vidéo, un numéro de marque et plusieurs statistiques. Donc pour l'utiliser dans un cadre journalistique, sans contre-vérification intégrale, ça ne sera pas possible.
Le rapport affirme que le site est vide alors qu'il contient un guide complet. Jolie hallucination, présentée comme une preuve.
Bon, je suis content de l'avoir testé mais Odysseus ressemble encore à un super cockpit dont plusieurs boutons ne sont pas encore reliés au moteur. Le chat via Ollama et les documents sont utilisables, mais le Cookbook, les agents, le calendrier et la recherche factuelle restent trop fragiles. Mais attention, n'allez pas croire que je critique le travail de PewDiePie, car le projet est encore très jeune, donc tous ces petits défauts sont normaux. Le potentiel d'Odysseus est énorme, mais pour le moment, je ne suis pas prêt de lui confier la gestion de mes sources, ou la rédaction d'un brouillon d'article sans perdre des heures à tout vérifier.
Voilà, le code est sur GitHub sous licence AGPL . Je vous laisse découvrir ça !
Merci à Remouk pour le partage et pour finir, je vous laisse avec cette vidéo de Renaud Dékode qui a aussi testé Odysseus :
