Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

C64UX - Un shell Unix-like pour Commodore 64

Par : Korben ✨
24 avril 2026 à 09:23

Je viens de tomber sur un projet qui va vous renvoyer direct dans les années 80 !! Ça vous dirait que votre vieux Commodore 64 puisse balancer un prompt façon Unix, avec login, éditeur de texte et 30 commandes ? Hé bien c'est exactement ce que propose C64UX , codé en assembleur pur, sans patch ROM ni rien.

L'auteur, Anthony Scarola a sorti sa dernière version en février 2026, avec une bannière de démarrage qui balance fièrement des [ OK ] à chaque étape de la séquence de boot, exactement comme un vrai système Linux un peu trop fier de lui !

En gros sur votre Commodore 64 , vous bootez normalement sous BASIC puis vous lancez le programme c64ux.prg (un simple LOAD et RUN), vous tapez votre username et votre mot de passe, et hop, vous atterrissez dans un shell qui propose 30 commandes :

LS, CAT, NANO, RM, CP, MV, SAVE, LOAD, THEME, UPTIME, DRIVE, STAT, WRITE, ECHO, SAVEREU, LOADREU, WIPEREU, PASSWD, MEM, DATE, TIME, PWD, RESET, UNAME, VERSION, WHOAMI, CLEAR, DOS, EXIT et HELP.

Et la commande EXIT vous ramène à BASIC.

La config initiale de C64UX : création du compte, date et heure, avant de tomber sur le prompt

Sous le capot de C64UX, c'est de l'assembleur 6502 brut de décoffrage. Et surtout, le projet n'utilise que les routines standard du C64, sans aucune ROM modifiée, ni aucune cartouche spéciale. Du coup ça tourne aussi bien sur un vrai C64 d'époque que sur un Ultimate 64 moderne ou dans l' émulateur VICE .

Mais le vrai morceau de bravoure dans ce projet c'est la persistence REU. Car votre shell avec ses fichiers, vous pouvez le dumper dans l'extension mémoire de l'époque via SAVEREU puis tout restaurer après coup avec LOADREU. Très pratique pour ne pas perdre vos précieux textes à chaque reset ! Par contre, sans extension REU branchée, tout s'efface au redémarrage, faudra donc penser à taper la commande SAVE à la main pour écrire sur disquette.

La sortie de la commande HELP, avec la liste des commandes disponibles

L'éditeur baptisé NANO (inspiré du vrai mais en mode super minimaliste) fait bien le taf aussi. Et les themes changent la couleur de bordure, le fond et le texte d'un coup, entre NORMAL (le bleu royal classique), DARK, ou GREEN pour se la jouer Matrix.

Création d'un fichier avec WRITE, lecture avec CAT, puis STAT et LS pour voir les métadonnées

Sur le forum Lemon64, Scarola balance une nouvelle version à peu près toutes les semaines et reconnaît lui-même être un petit nouveau en assembleur. Mais gros respect pour avoir déjà sorti 10 releases en un peu plus d'un mois quand même ! Notez que comme tout bon développeur qui sait vivre avec son temps (#troll), il s'aide d'un peu d'IA (Claude Code en l'occurrence) pour l'écriture du code.

Voilà, si vous avez un Commodore 64 qui traîne ou juste un émulateur VICE sous la main, foncez tester, c'est sympa !

Lastversion - Trouver la dernière version de n'importe quoi

Par : Korben ✨
23 avril 2026 à 14:37

Vous bossez sur un Dockerfile et vous avez besoin de la dernière version de nginx. Vous ouvrez GitHub, vous cliquez sur Releases, vous copiez-collez. Et 3 minutes plus tard, rebelote pour curl. Puis pour PHP. Sans parler du fait que dans votre script d'auto-update, vous avez hardcodé une "v3.2.1" qui dort là depuis 2023 parce que personne n'a pris le temps de mettre à jour le fichier.

Lastversion , c'est le petit CLI Python signé Danila Vershinin qui remplace cette corvée par une seule ligne. Vous tapez lastversion apache/incubator-pagespeed-ngx et vous récupérez le numéro de la dernière version.

Le truc marche sur GitHub, GitLab, BitBucket, PyPI, Wikipédia, les flux RSS, les plugins WordPress, Helm charts, Gitea, SourceForge... et même sur des sites qui publient leurs versions comme ils veulent, genre nginx.org.

La beauté du bazar, c'est qu'il comprend les humains, parce que, c'est vrai, les mainteneurs font un peu n'importe quoi avec leurs tags. Ils étiquettent release-1.2.3 au lieu de 1.2.3, ils marquent des release candidates en stable sans le faire exprès, ils changent de format entre v20150121 et v2.0.1 sans prévenir. lastversion détecte toutes ces incohérences et vous renvoie la véritable dernière stable, celle que vous vouliez dès le départ. C'est pénible à gérer à la main quand vous avez vingt dépendances à suivre. Maintenant c'est réglé tout seul avec ce petit bidule.

Et les sources exotiques, c'est tout un délire. lastversion windows vous crache le build Windows en cours, lastversion ios pour iOS, lastversion rocky vous renverra 8.4 et lastversion https://en.wikipedia.org/wiki/Rocky_Linux aussi, parce que le bidule va carrément parser la page Wikipédia pour vous.

Alors certains d'entre vous me diront que ce n'est pas utile au quotidien. Peut-être jusqu'au jour où vous devez scripter une vérif de version d'OS sans dépendre d'un outil système. Par contre, si vous enchaînez cinquante requêtes par heure sur un token GitHub anonyme, faudra pas s'étonner de manger un rate limit dans la tronche.

Côté one-liners qui tuent, y'a déjà de quoi faire.

wget $(lastversion --assets mautic/mautic) télécharge direct la dernière archive.

lastversion --pre Aircoookie/WLED --format assets --filter ESP32.bin -d ESP32.bin récupère le dernier firmware ESP32 WLED.

Pour Nginx, lastversion https://nginx.org --major stable renvoie 1.16.1 pendant que --major mainline renvoie 1.17.9.

Vous voyez l'idée, c'est du pipe-friendly pur jus.

Et le mode install, c'est un autre délire. Vous tapez lastversion install mailspring et hop, il récupère l'AppImage ou le RPM du dépôt, il l'installe, et c'est fini. Attention quand même, sur les dépôts un peu bordéliques il va parfois se vautrer sur le packaging et juste vous balancer le tarball brut. Bon, c'est pas la mort, vous dézippez à la main et vous passez à la suite...

Combiné avec cron, @daily /usr/bin/lastversion install mailspring -y et votre bureau sera toujours à jour sans passer par un store. Pour tous les outils qui ne sont ni dans apt, ni dans un snap, ni dans un flatpak, c'est l'alternative la plus propre à avoir sous la main.

L'install se fait via pip install lastversion sur à peu près tout, ou yum install lastversion après avoir ajouté le repo GetPageSpeed si vous êtes sur CentOS, RHEL, Rocky, Alma, Fedora ou Amazon Linux.

Le projet est publié sous licence BSD-2, codé en Python, et il y a aussi une API utilisable directement (from lastversion import latest) si vous préférez appeler ça dans vos scripts plutôt que de piper dans un subprocess.

Bref, un chouette outil à ranger entre vos redirections bash et votre gestionnaire SSH , catégorie petits trucs qui font gagner 10 minutes par semaine.

Apfel - Le LLM caché de votre Mac enfin libéré

Par : Korben
5 avril 2026 à 09:24

J'sais pas si vous saviez mais Apple a planqué un LLM dans votre Mac et ne veut pas que vous y touchiez... enfin, pas directement. En effet, leur modèle est là, intégré au système via le framework FoundationModels, il tourne sur le Neural Engine sans connexion internet mais Apple l'a verrouillé derrière Siri. Du coup, impossible de l'appeler depuis un script ou un pipe shell et c'est là qu' apfel intervient !

L'outil s'installe en une commande :

brew install Arthur-Ficial/tap/apfel

Et hop, vous avez accès au modèle directement depuis votre terminal. Faut Apple Intelligence actif également, sinon, ça ne fonctionnera pas.

Ensuite, vous lui posez une question, et il vous répond. Vous lui "pipez" un fichier, et il le traite. Et le tout sans rien télécharger puisque le modèle est déjà sur votre machine !

C'est un LLM de 3 milliards de paramètres, quantifié en 2 et 4 bits, qui tourne nativement sur la puce Apple Silicon (M1 et au-delà) et il se défend plutôt bien face à Qwen-2.5-3B, si on en croit les benchmarks. La fenêtre de contexte est limitée à 4096 tokens (entrée + sortie combinées), soit environ 3000 mots, donc faut pas espérer lui faire digérer un roman mais pour transformer du texte, classifier des données ou résumer un paragraphe... ça fait bien le taf.

Apfel expose donc ce modèle de trois façons différentes. En CLI pure (compatible stdin/stdout, sortie JSON, codes d'erreur propres), en serveur HTTP compatible OpenAI sur localhost:11434 (avec streaming SSE, tool calling et CORS activé), et en chat interactif multi-turn.

Le serveur OpenAI c'est malin parce que d'un coup, tous vos outils savent causer à l'API OpenAI (Cursor, Continue.dev, n'importe quel SDK) et peuvent utiliser l'IA locale de votre Mac sans rien changer à leur code. Et le support MCP (Model Context Protocol) natif c'est très chouette aussi puisqu'il suffit de lancer apfel avec le flag --mcp, pour qu'il découvre automatiquement les outils disponibles, exécute les appels et renvoie les résultats.

D'ailleurs côté vie privée, c'est du béton armé car le framework FoundationModels d'Apple n'a pas accès à vos contacts, emails, calendrier ou photos et tout tourne sur le Neural Engine et le GPU, sans connexion internet.

Si vous avez déjà bidouillé avec Ollama et les modèles locaux , apfel c'est un peu la même philosophie... sauf que là vous n'avez rien à télécharger et contrairement à Perspective Intelligence qui transforme votre Mac en serveur web avec PostgreSQL et tout le tralala, apfel reste hyper minimaliste.

Attention quand même, faut être sous macOS 26 Tahoe minimum donc si vous êtes encore sous Sequoia 15.x ou Ventura 13.x, c'est mort, le framework FoundationModels n'existe pas sur ces versions. Et si vous avez un Mac Intel... ben non plus, le Neural Engine c'est Apple Silicon only.

Le projet inclut aussi des scripts démo sympas dans le dossier demo/.

Y'a par exemple cmd qui convertit du langage naturel en commandes shell, explain qui décortique les messages d'erreur, gitsum qui résume vos commits récents, ou encore mac-narrator qui commente l'activité de votre système en temps réel (c'est votre Mac qui se raconte à lui-même).

Perso, cmd c'est celui qui m'a le plus plu, même si bon, avec 4096 tokens de contexte, faut pas lui demander des commandes ffmpeg de 200 caractères.

Mais au-delà des démos, c'est en vrai que ça devient fun. Je vous montre quelques usages classiques d'abord :

apfel -f README.md "Résume ce projet en 3 phrases"

apfel -f code.py -s "Tu es un développeur expérimenté" "Trouve les bugs"

echo "Traduis ça en allemand : Salut" | apfel

Et les trucs un peu plus funs :

git diff HEAD~1 | apfel -f CONVENTIONS.md "Review ce diff par rapport à mes conventions"

apfel -f old.swift -f new.swift "Qu'est-ce qui a changé entre ces deux fichiers ?"

demo/oneliner "compte les IPs uniques dans access.log"

Vous pouvez même piper la sortie en JSON pour chaîner avec jq, ou lancer le mode --serve et brancher Cursor dessus pour avoir de l'autocomplétion locale gratuite. Et si vous êtes du genre parano, le mode --chat avec --context-strategy summarize gère automatiquement le contexte quand la conversation dépasse les 4096 tokens.

Et côté écosystème, y'a aussi apfel-gui (une interface SwiftUI native pour chatter avec le modèle, avec speech-to-text et text-to-speech on-device) et apfel-clip qui est en développement (ce sont des actions IA qui s'ajoutent dans la barre de menus pour corriger la grammaire, traduire, résumer) et le tout sous licence MIT, évidemment.

Bref, c'est un super modèle mais avec 3 milliards de paramètres et 4096 tokens de contexte, faut pas s'attendre non plus à remplacer Claude ou GPT. Les maths complexes, la génération de code avancée et les longues conversations, c'est pas son truc mais pour du scripting, de la classification ou transformer du texte à la volée... ça dépanne carrément !

Et ce modèle préfère refuser plutôt qu'halluciner, ce qui est plutôt une bonne surprise je trouve. Voilà, si vous avez un Mac Apple Silicon sous macOS Tahoe, apfel et ses outils valent le coup d'œil pour vos petites tâches IA basiques / rapides de tous les jours.

term.everything - Faites tourner Firefox dans votre terminal

Par : Korben
1 avril 2026 à 10:14

Et si je vous disais qu'on pouvait faire tourner Firefox dans un terminal ? Et pas un navigateur en mode texte, hein. Non, le véritable Firefox, avec ses onglets, les images, la totale... Hé oui c'est possible et que ça fonctionne via SSH, donc depuis un serveur distant. Bienvenue dans le futur (ou le passé, j'sais plus trop) !

Term.everything c'est un compositeur Wayland construit from scratch en Go qui, au lieu de balancer l'image sur votre écran, la convertit en caractères ANSI et l'affiche dans le terminal. Du coup, n'importe quelle app GUI Linux peut tourner là-dedans. Firefox, un gestionnaire de fichiers, un lecteur vidéo... et même Doom (parce que si ça peut pas faire tourner Doom, ça compte pas). Le binaire fait une poignée de Mo, c'est sous licence AGPL-3.0, et y'a zéro dépendance externe.

L'outil propose 2 modes d'affichage. Le mode basique qui convertit les pixels en blocs Unicode, et dont la qualité dépend du nombre de lignes et colonnes de votre terminal. Plus vous zoomez out (Ctrl+- sur Alacritty), plus c'est net... mais plus ça rame. Donc si votre terminal supporte le protocole image, genre Kitty ou iTerm2, l'autre mode, c'est du rendu pleine résolution et là non seulement c'est pas dégeu mais en plus ça marche bien !

Le truc vraiment dingue, c'est surtout le SSH parce que si vous avez un serveur Linux distant, vous vous connectez dessus en SSH, vous lancez term-everything firefox et hop, Firefox s'affiche dans votre terminal local. Pas de X11 forwarding relou à mettre en place ni de VNC / RDP zarbi.

Pour les admins sys qui gèrent des serveurs headless, c'est quand même sympa ! D'ailleurs si vous aimez les outils SSH bien pensés , celui-ci aussi va vous plaire.

Par contre, on est encore en bêta et certaines apps vont planter ou refuser de se lancer. C'est normal, c'est un compositeur Wayland complet écrit par un seul gars (chapeau l'artiste !). Ce n'est donc pas le genre de truc qu'on met en prod, mais pour du dépannage sur un serveur Debian distant ou juste pour la beauté du geste, ça envoie du pâté.

Le créateur de term.everything est d'ailleurs le même qui avait codé Fontemon , un jeu vidéo caché dans une police de caractères. On est donc clairement dans la catégorie "parce qu'on peut le faire et que c'est marrant".

Bref, si vous voulez épater vos collègues en lançant KDE dans un terminal par-dessus SSH, ou juste jouer à Doom dans tmux, c'est par là que ça se passe.

Amusez-vous bien et merci à Lorenper pour l'info !

QMD - Un moteur de recherche local pour vos notes Markdown

Par : Korben
23 mars 2026 à 10:52

Si vous êtes comme votre blogueur préféré (hi hi) et que vous avez des tonnes de fichiers markdown qui traînent dans des dossiers obscurs depuis des années, voici l'outil parfait pour rendre tout ceci à nouveau utilisable dans la vraie vie.

En tout cas, c'est plus pratique qu'un grep !

Ça s'appelle QMD (Quick Markdown Search) et c'est un outil en ligne de commande dispo sur GitHub qui va indexer tout votre bazar de notes pour les rendre consultables rapidement. QMD combine la recherche plein texte classique (BM25) avec de la recherche vectorielle sémantique et du re-ranking via LLM, ce qui veut dire que c'est ultra puissant. On est un peu sur le même principe qu'un RAG en fait puisque l'IA locale est utilisée pour comprendre le sens de votre requête et pas juste chercher des chaînes de caractères bêtes et méchantes. J'utilise depuis un petit moment maintenant un système similaire avec LEANN pour indexer tous les articles de korben.info et retrouver des connexions entre mes contenus, et je peux vous dire que quand on goûte à la recherche sémantique, le bon vieux grep a un goût de carton.

L'outil est même capable de faire de l'expansion de requête (Query Expansion) pour deviner ce que vous cherchez vraiment.

Techniquement, ça tourne avec bun ou npm et ça s'appuie sur node-llama-cpp pour faire tourner des modèles GGUF directement sur votre machine. Tout reste chez vous donc niveau vie privée c'est nickel. C'est un peu la même philosophie que des outils comme Khoj ou Blinko dont je vous ai déjà parlé, mais en version CLI pour le terminal.

L'installation est hyper facile si vous avez déjà Bun, mais prévoyez quand même un peu de place (environ 3 Go) pour les modèles qui iront s'installer au chaud dans ~/.cache/qmd/models/ et installez sqlite si vous êtes sur macOS :

brew install sqlite # Pour macOS
npm install -g @tobilu/qmd

Ensuite, y'a plus qu'à vous créer vos collections en pointant vers vos dossiers, et en lançant l'indexation comme ceci :

qmd collection add ~/mes-notes --name notes
qmd embed # L'étape indispensable pour générer les vecteurs

Et hop, vous pouvez lancer des recherches !!

C'est magique ! Perso, j'utilise presque tout le temps la commande "qmd query" plutôt que "search" parce que le mode hybride est bien plus puissant je trouve. Vous avez aussi "qmd vsearch" si vous voulez une recherche purement sémantique, genre quand vous cherchez un concept sans connaître les mots exacts utilisés dans vos notes. En fait, quand vous tapez une requête, QMD va chercher via les mots-clés, via les vecteurs (le sens), puis fusionner tout ça avec un algo RRF, et refaire passer un petit coup de LLM par dessus pour trier les résultats par pertinence.

Après vous l'aurez capté en me lisant, si vous avez une machine un peu ancienne sans GPU costaud, l'étape de re-ranking risque de prendre un peu de temps... mais c'est le prix de la qualité et de la sécurité ^^.

D'ailleurs, si vous utilisez Claude Desktop ou Claude Code, sachez que QMD intègre également un serveur MCP (Model Context Protocol). Du coup, vous pouvez connecter QMD à Claude et lui permettre d'aller fouiller dans vos notes pour répondre à vos questions. Et bonne nouvelle, QMD propose maintenant un mode HTTP daemon (qmd mcp --http --daemon) qui garde les modèles chargés en mémoire, ce qui évite de les recharger à chaque requête. Attention par contre, dans ce cas précis, les extraits de vos notes seront envoyés à Claude (donc dans le cloud).

QMD est aussi dispo en tant que librairie Node.js (npm install @tobilu/qmd) pour ceux qui voudraient l'intégrer dans leurs propres scripts ou workflows d'automatisation. Avec les options --json et --files en sortie, ça se branche facilement dans un pipeline.

Perso je trouve ça génial parce que ça comble le fossé entre le simple fichier texte et les usines à gaz de gestion de connaissances. Par exemple, si vous êtes un grand adepte de Silverbullet ou d' Obsidian , c'est le top pour l'indexation globale de vos écrits.

Voilà, si vous voulez un moteur de recherche personnel qui en a sous le capot et qui respecte votre vie privée, foncez tester ça.

Source

❌
❌