Vue lecture

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

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

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é

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

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 !

psmux - Le vrai tmux natif pour Windows (sans WSL)

Splitter son terminal en plusieurs panneaux, gérer des sessions persistantes, le tout avec les mêmes raccourcis que tmux... mais sous un bon gros Windows des familles, nativement, en Rust et sans avoir besoin de se galérer avec WSL !

C'est exactement ce que fait psmux , un multiplexeur de terminal conçu pour PowerShell et cmd.exe qui utilise directement l'API ConPTY de Windows 10/11. Du coup, pas de couche d'émulation Unix, pas de Cygwin, pas de MSYS2... ça tourne direct sur votre bécane.

Pour ceux qui débarquent, un multiplexeur de terminal ça permet de découper votre console en plusieurs zones (des "panes" que j’appellerai "panneau" parce que merde c'est + français), de jongler entre plusieurs sessions, et surtout de retrouver votre boulot exactement là où vous l'avez laissé même après une déconnexion. Sous Linux, tout le monde utilise tmux pour ça mais sous Windows, jusqu'ici c'était soit WSL (installer tout un sous-système Linux juste pour splitter un terminal, c'est un peu overkill quand même !), soit des splits basiques via Windows Terminal qui ne gèraient ni les sessions persistantes ni le détachement. Snif...

psmux en action sous PowerShell

L'installation est rapide. Un petit winget install psmux et hop, c'est réglé. Ça passe aussi par Cargo, Scoop ou Chocolatey pour les puristes. Ensuite, vous tapez psmux dans PowerShell 7 et vous retrouvez vos marques : Ctrl+B pour le prefix, les mêmes commandes split-window, new-session, attach... L'outil implémente 76 commandes tmux avec plus de 126 variables de formatage. Et y'a même un mode copie Vim avec 53 raccourcis clavier.

Bref, si vous avez une mémoire musculaire ultra développée pour tmux, vous êtes chez vous !

Et le truc cool, c'est que psmux lit directement vos fichiers .tmux.conf existants. Du coup, vos raccourcis custom et pas mal de thèmes (Catppuccin, Dracula, Nord...) fonctionneront directement, même si les configs tmux les plus complexes avec des scripts bash ou TPM peuvent nécessiter des ajustements. Et y'a aussi Tmux Plugin Panel pour vous accompagner dans l'ajout de plugins et de thèmes.

Alors je vous connais les raloux sous OuinOuin, vous allez me dire "Windows Terminal fait déjà des splits avec Alt+Shift+D"... sauf que non, c'est pas pareil. Windows Terminal découpe votre fenêtre visuellement mais ne gère ni les sessions persistantes, ni le scripting, ni le détachement. Avec psmux, vous lancez une session le lundi, vous fermez votre terminal, vous revenez le mardi et tout est encore là : vos panneaux, vos processus, votre historique. C'est ça la vraie différence avec un simple split visuel.

D'ailleurs, si vous utilisez Claude Code ou d'autres agents IA en ligne de commande , psmux intègre un support pour les agent teams qui permet à chaque agent de spawner dans son propre panneau automatiquement.

Côté support souris, c'est complet : clic pour sélectionner un panneau, drag pour redimensionner les bordures, molette pour remonter dans l'historique du buffer. Tout est activé par défaut, pas besoin de rajouter set -g mouse on comme sous tmux. L'outil tourne sous Windows 10 et 11, et le projet est sous licence MIT.

Après c'est encore jeune et y'a quelques galères connues notamment le support des caractères CJK et UTF-8 multi-octets qui peut se planter comme une merde sur des textes longs. Et split-window -c ne préserve pas toujours le répertoire courant (oubliez pas de vérifier votre pwd après un split). Par contre, le dev répond en quelques heures, et des PR externes sont mergées régulièrement... donc c'est bon signe !

Bref, c'est propre, c'est natif, et ça lit vos .tmux.conf ! Que demande le peuple barbu emprisonné sous Windows, finalement ? Eh bien pas grand chose de plus pour être heureux.

Basalt - Vos coffres Obsidian direct dans le terminal

Un TUI en Rust pour gérer vos coffres Obsidian sans quitter le terminal c'est ce que propose Basalt qui détecte automatiquement vos vaults, affiche le markdown avec un rendu visuel, et depuis la v0.12.3, y'a même un mode vim intégré. Le tout sans avoir besoin que la vraie app tourne en arrière-plan !

Et c'est là toute la différence avec le CLI officiel d'Obsidian dont je vous parlais il y a quelques jours. Car le CLI a besoin de l'app qui tourne via un socket local. Basalt, lui, lit en fait vos fichiers .md directement sur le disque. Du coup, ça marche en SSH, sur un serveur headless, ou sur n'importe quelle machine où vous avez juste vos fichiers markdown. C'est carrément pratique !

L'installation se fait en une commande :

cargo install basalt-tui

Au premier lancement, l'outil va alors chercher automatiquement vos coffres en lisant le fichier de config (sous macOS c'est dans ~/Library/Application Support/obsidian/obsidian.json). Comme ça, hop hop, vos vaults apparaissent, vous naviguez au clavier et vous passez d'un coffre à l'autre avec Ctrl+G. Vous pouvez aussi passer par aqua ou télécharger un binaire pré-compilé sur la page releases si vous préférez.

Basalt en action, navigation dans un vault Obsidian

Vous ouvrez alors une note et le markdown s'affiche avec un rendu visuel : les # disparaissent au profit d'indicateurs plus colorés, les blocs de code ont un fond distinct, les callouts > [!NOTE] sont reconnus, et les wiki-links [[Ma Note]] sont également parsés. D'ailleurs, quand vous renommez une note avec r, tous les wiki-links qui pointent vers elle sont mis à jour automatiquement dans tout le vault. Pas de search-replace à la main, ça fait toujours du bien !

Après faut pas s'attendre à un clone complet non plus. Y'a pas de rendu pour le gras, l'italique ou les tableaux. Pas de recherche dans les notes. Pas de graph view. L'éditeur intégré est expérimental (pas d'undo, pas de copier-coller, pas de sélection). C'est assumé de ce que j'ai pu voir, car le projet se présente comme un compagnon minimaliste.

Et c'est justement pour ça que le mode vim est le bienvenu, à vrai dire. Vous pouvez activer ça dans votre config TOML comme ceci :

vim_mode = true

Le mode vim en action dans Basalt

Et là vous avez hjkl pour naviguer, gg / G pour sauter en haut et en bas, w / b pour les mots, i pour l'insertion. C'est pas forcément aussi complet qu'un vrai vim, mais franchement, pour parcourir vos notes c'est agréable.

Le vrai kiff, c'est la config TOML qui permet de lancer un éditeur externe sur la note en cours :

[global]
key_bindings = [
 { key = "ctrl+alt+e", command = "exec:vi %note_path" },
]

Du coup, le workflow devient : Basalt pour naviguer et lire et un raccourci clavier pour ouvrir dans vim (ou n'importe quel éditeur) quand vous voulez éditer sérieusement. C'est le genre de combo qui fonctionne bien quand vous bossez en full terminal .

Le projet est sous licence MIT, écrit en Rust avec ratatui, et tourne sur Linux, macOS et Windows. Tiens, la v0.12.3 ajoute aussi la création de notes et dossiers directement depuis l'explorateur avec n et N... Ça avance plutôt vite comme projet !!

Voilà, si vos notes vivent dans des coffres et que le terminal c'est votre habitat naturel, Basalt fera bien le boulot.

WebTerm - Apprendre le terminal Linux sans rien installer

Le terminal Linux / MacOS, ça fait encore flipper pas mal de monde et c'est exactement pour cette raison que des gens ont créé WebTerm , un petit site web qui simule un terminal directement dans le navigateur pour vous apprendre les commandes de base... sans risquer de claquer un rm -rf votre disque dur !

En gros, vous ouvrez le site dans Chrome ou Firefox, et vous avez un faux terminal devant vous avec des exercices progressifs. Ça part des trucs vraiment basiques genre pwd, ls, cd (oui, le B.A.-BA quoi) et ça monte jusqu'aux commandes plus costaudes comme grep, find, chmod ou carrément des tutos Git avec branches et commits. Y'a 8 modes d'apprentissage au total et une trentaine d'exercices, du débutant complet au "je veux maîtriser le versioning". En fait c'est plutôt bien découpé et chaque mode rajoute une couche de difficulté.

Le truc sympa c'est que tout se passe dans votre navigateur comme ça pas besoin d'installer Ubuntu, pas besoin de VirtualBox, pas besoin de WSL... vous ouvrez la page et vous tapez vos commandes dans un prompt bash comme un vrai sysadmin qui pue de la gueule (un classique !). Perso, pour quelqu'un qui n'a jamais touché à la ligne de commande, c'est quand même VACHEMENT moins flippant qu'un vrai terminal où une mauvaise manip peut vous foutre dans la mierda.

D'ailleurs si vous maîtrisez déjà un peu le sujet, y'a aussi un mode Free Play qui vous lâche dans la nature sans consignes. Vous tapez ce que vous voulez, vous expérimentez... un bac à sable quoi. Et comme sur un vrai shell Bash ou Zsh, vous avez la complétion par Tab et l'historique des commandes avec les flèches haut/bas.

Bon, c'est pas non plus un émulateur complet hein, donc faut pas s'attendre à pouvoir installer des paquets apt ou lancer des scripts bash complexes. Sauf si vous avez une vraie VM sous la main, mais là c'est plus le même délire. Par exemple, les pipes genre | entre commandes, ça passe pas non plus, et ça ne marche pas sur smartphone.

C'est desktop only... et dans le terminal, tout se fait au clavier, donc pas de souris. Et pour ceux qui se demandent, le site est dispo en anglais et en japonais (le projet vient d'une boîte japonaise qui s'appelle init Inc.), mais les commandes Linux c'est universel donc ça ne change rien sur l'apprentissage. Après si vous cherchez des tutos en français, là faudra aller voir ailleurs.

Et si vous voulez aller plus loin après avoir joué avec WebTerm, je vous recommande de jeter un oeil à mon article sur les raccourcis clavier Bash qui va vous faire gagner un temps de fou !

Voilà pour 15 minutes de pratique par jour c'est plutôt bien foutu et vous pourrez gagner en autonomie dans ce fichu terminal qui vous effraye depuis tant d'années.

try - Fini les dossiers test-final-v3 qui traînent partout !

Vous avez combien de dossiers test sur votre machine ? Dix ? Cinquante ? Deux cents ? Tobi Lütke, le mec qui a cofondé Shopify, avait le même problème... Alors il a pondu try , un petit script Ruby qui donne un vrai foyer chaleureux à vos expérimentations de dev déjanté.

Le principe est hyper simple. Vous tapez try redis dans votre terminal, et magie magie, soit ça vous envoie direct dans votre dossier d'expérimentation Redis existant, soit ça vous propose d'en créer un nouveau avec la date du jour en préfixe, genre 2025-08-17-redis-experiment. En fait c'est con, mais rien que le préfixe de date, ça change tout... car 3 semaines plus tard, quand vous cherchez ce bout de code pondu à 2h du mat en rentrant de soirée, hé bien vous le retrouvez !

La recherche fuzzy fait le boulot, comme ça par exemple vous tapez pgres, ça matche postgres-local. Vous tapez connpool, ça retrouve connection-pool. Et ce sont les résultats les plus récents qui remontent en premier, parce que bon, ce que vous avez touché hier est souvent plus pertinent que le truc d'il y a 6 mois. Et y'a même un petit score de pertinence affiché à côté de chaque résultat !

Côté installation, un gem install try-cli suivi d'un eval "$(try init)" dans votre .zshrc, et c'est terminé. Ça marche aussi avec Fish et via Homebrew pour ceux qui préfèrent. D'ailleurs, le cœur du truc tient dans un seul fichier Ruby, par contre, faut Ruby 3.0 minimum (le Ruby livré avec macOS est trop vieux, donc un petit brew install ruby avant si besoin).

Y'a aussi quelques bonus plutôt pas mal. Par exemple la commande try . (si vous êtes dans un repo Git) crée un worktree du repo courant dans votre dossier d'expérimentations, ce qui est super pratique pour tester un truc sans polluer votre branche principale. Et try clone URL_GITHUB clone un repo direct dans un dossier daté, genre 2025-08-17-nom-du-repo. Si vous aimez les outils jetables bien rangés , c'est exactement le délire.

Bon, vous pourriez faire un alias bash à la place, mais finalement la recherche fuzzy et le classement par date, c'est quand même autre chose qu'un bête mkdir. Tous vos dossiers vivent dans ~/src/tries par défaut (changeable via TRY_PATH), avec une petite interface en mode texte qui affiche le temps écoulé depuis votre dernier passage. Le README dit que c'est pensé pour les cerveaux qui papillonnent... et franchement, si vous êtes comme moi, du genre à avoir 15 projets en cours, c'est pile le délire qui va vous sauver !! Si vous passez votre vie dans le terminal , c'est un de ces projets qu'on installe et qu'on n'oublie plus.

Attention quand même, le projet est encore jeune et quelques bugs trainent côté Homebrew et avec Ruby 4.0.

Amusez-vous bien !

Shells Unix - 5 redirections que vous copiez sans comprendre

2>&1, >, >>, 2>/dev/null... Si ces symboles dans votre terminal Linux ou macOS vous font autant flipper qu'un regex, respirez un grand coup ! Quand vous aurez lu cet article, vous verrez qu'en fait c'est super simple à comprendre, et en 5 minutes vous saurez enfin ce que vous copiez-collez depuis des années depuis StackOverflow.

En fait, dans les shells Unix (bash, zsh, etc.), y'a 3 canaux de base : stdin (entrée, numéro 0), stdout (sortie normale, numéro 1) et stderr (les erreurs, numéro 2). Tout le reste, de > à 2>/dev/null, découle de ces 3 numéros.

> - Écrire dans un fichier (et tout écraser)

echo "Salut" > fichier.txt

Ça redirige stdout vers fichier.txt. Si le fichier existe déjà... c'est mort, il est écrasé sans sommation. Du coup, faites gaffe avec vos logs, une commande mal placée et ce sont des heures de données qui disparaissent.

D'ailleurs, si vous êtes du genre parano (et oui, vous avez raison !), set -o noclobber dans votre .bashrc empêchera > d'écraser un fichier existant lors d'une commande tapée à la main. Pour y arriver, il faudra utiliser >| pour forcer.

>> - Ajouter à la suite

echo "Ligne 2" >> fichier.txt

Même principe que >, sauf que ça ajoute à la fin au lieu d'écraser. C'est ce que vous voulez 99% du temps pour des logs (sauf si vous voulez repartir de zéro, là > fait le job). Une lettre de différence entre "tout va bien" et "où sont passés mes logs, boudiouuu ???".

2> - Rediriger les erreurs

commande_foireuse 2> erreurs.log

Le 2 c'est stderr, en gros (y'a pas d'espace entre le 2 et le >, sinon bash croit que 2 est un argument). Tout ce qui sort en erreur finit dans erreurs.log au lieu de polluer votre terminal. Perso, je trouve ça super pratique pour garder une trace propre quand vous lancez des scripts via crontab -e.

Et 2>> existe aussi, pour cumuler les erreurs au fil du temps au lieu d'écraser le fichier à chaque exécution.

2>&1 - Fusionner erreurs et sortie normale

commande > output.log 2>&1

Le fameux ! Le &1 dit à bash "le 1 c'est un file descriptor, pas un fichier qui s'appelle littéralement 1". Du coup stderr (2) est redirigé vers le même endroit que stdout (1), ou plutôt vers là où stdout pointe au moment où bash évalue la ligne. Ça va, vous suivez toujours ? ^^

Attention, l'ordre compte ! Bash lit les redirections de gauche à droite. > output.log 2>&1, stdout pointe vers le fichier, puis stderr suit... tout va dans le fichier. 2>&1 > output.log, stderr copie stdout qui pointe ENCORE vers le terminal, puis stdout est redirigé vers le fichier. Résultat, les erreurs restent dans votre terminal. Le piège classique.

Et &> fait la même chose en plus court :

commande &> output.log

&> est super pratique, mais spécifique à bash / zsh donc pour la portabilité, préférez quand même > fichier 2>&1.

2>/dev/null - Le trou noir

find / -name "*.conf" 2>/dev/null

/dev/null, c'est le trou noir d'Unix. Tout ce que vous envoyez là-dedans disparaît. Super pratique avec find qui vous crache 200 "Permission denied" pour un seul résultat utile.

Et si vous voulez TOUT faire disparaître (stdout + stderr) ? Un petit &>/dev/null et c'est réglé. Pratique dans vos scripts /etc/cron.d/ quand vous voulez zéro bruit (bon, j'exagère un chouïa, je sais...).

Si vous aimez les raccourcis bash , j'ai aussi ce qu'il faut.

Bref, voilà ce sont juste 5 opérateurs à retenir, et avec ça vous couvrez à peu près tout. Donc la prochaine fois que vous copierez un 2>&1, au moins vous saurez pourquoi.

Source d'inspiration

sudo-rs - 40 ans de silence cassés par des astérisques

Si vous utilisez Ubuntu 26.04, vous avez peut-être remarqué un truc bizarre dernièrement en tapant votre mot de passe sudo... Ouiiiiii, y'a des petites étoiles qui apparaissent !! Pas de panique, c'est "normal". Enfin, c'est nouveau...

En effet, sudo-rs, la réécriture en Rust de la bonne vieille commande sudo, a décidé d'activer pwfeedback par défaut. En gros, quand vous faites un sudo apt install bidule, au lieu du trou noir habituel, vous voyez maintenant des ***** défiler pendant la saisie du mot de passe. C'est un changement qui casse une convention vieille de 40 ans... et ça, forcément, ça fait du bruit !

Pour rappel, Ubuntu a basculé sur sudo-rs (le remplaçant en Rust du bon vieux sudo en C) depuis la version 25.10. Ça fait partie du même mouvement de réécriture des outils système en Rust, comme les coreutils dont je vous avais parlé. Et la 26.04 vient de "cherry-picker" comme on dit, un patch upstream qui active le feedback visuel par défaut.

Un bug report sur Launchpad ( #2142721 ) est bien sûr arrivé direct, en mode vénère genre "*ÇA FAIT DES DÉCENNIES qu'on n'affiche pas la longueur du mot de passe pour empêcher le shoulder surfing ! C'est quoi ce bordel !!?? *"

Et la réponse des devs : Won't Fix. Circulez les relous !

En fait, leur argument c'est que le bénéfice sécurité est "infinitésimal". Parce que bon, votre mot de passe sudo c'est le même que celui de votre session (celui que vous tapez à l'écran de login, devant tout le monde). Et le bruit des touches trahit déjà la longueur de toute façon. Du coup, ils ont préféré régler le problème UX qui paume les débutants depuis le début des années 80.

D'ailleurs, en 2013 je vous expliquais comment activer ces étoiles manuellement avec sudo visudo (ça date de fou !!) et maintenant c'est l'inverse, faut expliquer comment les virer ! Linux Mint avait d'ailleurs déjà sauté le pas de son côté depuis un moment.

Perso, le truc qui me gonfle c'est pour les tutos vidéo. Quand vous faites un screencast, les astérisques révèlent la longueur de votre mot de passe à tous vos spectateurs. Du coup faut aller reparamétrer chaque machine avant de filmer ou faire du masquage en post prod. C'est pas la fin du monde, mais bon, la flemme...

Alors pour désactiver ces jolies zétoiles :

sudo visudo

Et ajoutez cette ligne à la fin de /etc/sudoers :

Defaults !pwfeedback

Sauvegardez (Ctrl+X sous nano), et c'est réglé. Attention, ne touchez à rien d'autre dans ce fichier, une erreur de typo et sudo ne marchera plus. Grâce à cette manip, ce sera retour au trou noir ! Youpi !

Source

Snitch - Le netstat qui ne pique plus les yeux

Si vous avez déjà tapé [ss -tulnp](https://www.it-connect.fr/lister-les-ports-en-ecoute-sous-linux-avec-lsof-netstat-et-ss/) dans un terminal, vous savez que c'est moche. Genre, VRAIMENT moche. Les colonnes qui se chevauchent, les adresses tronquées, bref c'est un festival du bordel. Mais c'était sans compter sur ce dev qui a pondu Snitch , un outil en Go sous licence MIT qui vient concurrencer ss et netstat... sauf que pour une fois, c'est lisible, regardez :

L'interface de Snitch en action, sobre et lisible

En gros, c'est un ss moderne avec une interface TUI interactive. Vous lancez la commande dans votre terminal et tadaaa, vous avez un tableau propre avec toutes vos connexions réseau, les processus associés, les ports, les protocoles... le tout avec des couleurs et une navigation au clavier. Rien à voir donc avec le pavé monochrome habituel !

Le truc cool aussi ce sont les filtres. Vous pouvez taper snitch ls proto=tcp state=listen pour ne voir que les sockets TCP en écoute, ou snitch ls proc=nginx pour traquer votre serveur web. Y'a même un filtre contains= pour chercher dans les adresses... genre contains=google pour voir tout ce qui cause avec Mountain View.

D'ailleurs, côté commandes c'est en fait bien fichu. snitch ls pour un tableau statique, snitch json pour du JSON brut si vous voulez scripter, et snitch watch -i 1s pour streamer les connexions en temps réel. Du coup ça s'intègre nickel dans vos pipelines.

La TUI elle-même vaut le détour. Vous naviguez avec j/k (comme dans Vim, forcément), vous basculez TCP/UDP avec t/u, et le plus jouissif... vous pouvez killer un processus directement avec la touche K. Plus besoin de noter le PID et d'ouvrir un autre terminal ! Sauf que attention, sur Linux faut quand même lancer en root pour avoir les infos complètes sur les processus, parce que l'outil va lire dans /proc/net/*. Ça ne marche pas non plus sur Windows, c'est Linux et macOS uniquement.

Pour ceux qui aiment personnaliser leur terminal (oui, je vous connaîs...), y'a une quinzaine de thèmes, Catppuccin, Dracula, Nord, Tokyo Night, Gruvbox... la config se fait dans ~/.config/snitch/snitch.toml et l'outil peut aussi conserver vos préférences de filtres entre les sessions (faut activer remember_state dans la config).

Côté installation, c'est pas la mer à boire. brew install snitch sur macOS, go install github.com/karol-broda/snitch@latest si vous avez Go, yay -S snitch-bin sur Arch, et y'a même des images Docker pour les plus prudents !

Donc si vous êtes du genre à surveiller votre trafic réseau ou à garder un oeil sur vos outils de diagnostic Linux , c'est clairement à tester.

Perso, pour du debug réseau rapide, je trouve que c'est carrément plus agréable que de se taper un ss -tulnp.

notion-cli - Pilotez Notion depuis votre terminal

Si vous utilisez Notion au quotidien et que vous avez toujours rêvé de piloter vos bases de données depuis un terminal... y'a enfin un truc qui tient la route.

Ça s'appelle notion-cli , c'est un binaire Go qui embarque 39 commandes couvrant TOUTE l'API Notion. Il s'agit d'un seul exécutable pour macOS, Linux et Windows (amd64 et arm64) sans dépendance qui vous permet de gérer pages, bases de données, blocs et commentaires sans jamais ouvrir un navigateur.

L'installation, c'est du classique : brew install 4ier/tap/notion-cli sur macOS, go install pour les puristes, npm install -g notion-cli-go ou même Docker. Il faut juste un token d'intégration Notion (le ntn_xxxxx que vous générez sur notion.so/my-integrations), vous le collez dans ~/.config/notion-cli/config.json ou en variable NOTION_TOKEN, et c'est parti.

notion-cli en action dans le terminal

Le truc cool, ce sont les filtres humain-friendly. Au lieu de se taper du JSON pour filtrer une base, vous écrivez Status=Done et l'outil se débrouille tout seul. En fait, il détecte le type de chaque propriété (texte, date, sélection...) et adapte le filtre automatiquement. C'est carrément pas mal, je trouve.

Et côté Markdown, c'est la fête ! Vous exportez une page entière avec notion block list <page-id> --md --depth 3, et inversement, vous injectez un fichier .md dans Notion via notion block append <page-id> --file notes.md. Pour ceux qui bossent avec de la doc technique, ça simplifie sérieusement les choses. Bon, ça ne marche pas avec les blocs synchronisés ou les embeds exotiques, mais pour le reste c'est nickel.

D'ailleurs le mode "pipé" est vraiment malin. Car dans le terminal, l'outil affiche de jolies tables colorées mais dès que vous le "pipez" vers jq ou un script, il bascule en JSON automatiquement. Du coup, intégrer ça dans un pipeline shell ou un cron... c'est aucun parsing à faire. Voilà quoi.

Après des CLI pour Notion, y'en a déjà quelques-uns. Sauf que la plupart sont soit limités aux tâches (comme notion-cli-go qui gère surtout le côté todo), soit cantonnés à l'export (et souvent liés à un OS ou un langage précis).

Celui de 4ier, c'est donc le premier à couvrir l'API en entier : pages, bases, blocs, commentaires, fichiers, utilisateurs, et même un accès REST brut via notion api GET /v1/endpoint. En gros, c'est le gh de GitHub, mais pour Notion (et pour une fois, c'est pas juste du blabla marketing ^^).

Les cas d'usage qui tuent c'est par exemple un script cron qui crée une entrée hebdo avec notion page create <db-id> --db "Name=Weekly" "Status=Todo". Un backup qui exporte vos pages critiques en Markdown toutes les nuits. Ou un CI/CD qui met à jour un changelog Notion à chaque deploy. Quelques lignes de bash et c'est réglé, car l'outil gère tout le reste ! C'est hyper rare un CLI qui couvre autant de terrain.

Y'a aussi le côté agent-friendly pour ceux qui kiffent l'IA. L'outil retourne des codes de sortie propres, du JSON exploitable, et s'installe comme skill agent via npx skills add 4ier/notion-cli. Dans la lignée de Gemini CLI , on voit de plus en plus d'outils pensés terminal-first... et je trouve que c'est carrément bien.

Après comme souvent quand je vous présente des outils, le projet est tout frais (v0.3.0, licence MIT), avec une petite communauté donc attention, car comme tout ce qui dépend d'une API tierce, si Notion bouge ses endpoints... voilà quoi. Mais c'est propre, c'est testé, et ça tourne déjà très bien.

Votre navigateur va pouvoir souffler un peu.

Systemd-analyze - L'outil indispensable pour accélérer son boot Linux

Vous trouvez que votre Linux met 3 plombes à démarrer et vous regardez l'écran de boot défiler en vous demandant ce qui peut bien prendre autant de temps ?

Hé bien bonne nouvelle los amigos del manchos, si vous utilisez une distribution basée sur systemd (comme Debian, Ubuntu, Fedora, Arch, et compagnie), il existe un outil natif déjà installé qui permet de diagnostiquer tout ça : systemd-analyze

Ce truc c'est un peu le médecin légiste de votre démarrage système. Il dissèque chaque étape, identifie les unités qui traînent la patte, et vous permet de comprendre où part votre précieux temps. Pour ceux qui débarquent, systemd est le système d'initialisation adopté par la plupart des distributions modernes, et il permet justement de lancer plein de trucs en parallèle pour gagner du temps.

Pour commencer, la commande de base c'est tout simplement :

systemd-analyze time

Elle vous sort un récapitulatif du temps passé dans chaque phase, généralement le kernel, l'initrd (le RAM disk initial), et l'espace utilisateur. Selon votre configuration, vous pourriez aussi voir passer le firmware ou le bootloader. Ça donne un truc du genre "Startup finished in 2.5s (kernel) + 19s (initrd) + 47s (userspace)". Déjà là, vous savez si le problème vient de votre noyau ou de vos services.

Mais le truc vraiment cool pour fouiller un peu plus dans le détail, c'est :

systemd-analyze blame

Cette commande vous balance la liste des unités systemd, triées par le temps qu'elles ont mis à s'initialiser. C'est un peu comme un classement des cancres de la Ve République. Vous voyez direct qui sont les boulets qui ralentissent tout le monde. Genre ce service réseau qui attend 20 secondes une connexion qui n'arrivera jamais, ou ce truc de logs qui prend son temps pour se réveiller.

Attention quand même, y'a un petit piège car un service qui met 10 secondes à démarrer ne signifie pas forcément que votre boot est rallongé de 10 secondes. Pourquoi me diriez-vous ? Hé bien parce que systemd lance plein de trucs en parallèle. Un service peut donc prendre son temps tranquille pendant que d'autres bossent en même temps sans bloquer personne.

Pour vraiment piger ce qui coince sur le chemin critique, lancez plutôt :

systemd-analyze critical-chain

Ça, c'est le top car ça vous montre la chaîne critique, c'est-à-dire la séquence exacte d'événements qui détermine vraiment votre temps de démarrage final. Vous voyez exactement quelles unités sont sur le chemin et lesquelles attendent les autres. Le temps après le "@" indique quand l'unité est devenue active, et le temps après le "+" montre combien de temps elle a pris pour démarrer. C'est bien plus fiable que blame pour identifier les vrais goulots d'étranglement.

Et si vous êtes du genre visuel, y'a même :

systemd-analyze plot > boot.svg

Et avec ça, hop, ça génèrera un magnifique graphique SVG qui représentera la chronologie de votre séquence de boot. Vous pourrez ensuite l'ouvrir dans votre navigateur et voir en un coup d'oeil ce qui démarre quand et combien de temps ça dure. C'est super pratique pour épater la galerie ou juste visualiser l'ordre de lancement.

Maintenant, une fois que vous avez identifié les coupables, comment on fait pour accélérer tout ça ?

Déjà, vous pouvez désactiver les services dont vous n'avez pas besoin avec :

sudo systemctl disable nom-du-service

Gardez en tête que disable supprime seulement le lancement automatique au boot, mais n'empêche pas une activation indirecte via une dépendance ou un socket. Si vous voulez vraiment qu'un service ne démarre plus jamais, utilisez mask. Et surtout, ne désactivez pas n'importe quoi comme un bourrin, hein ! Je vous connais ! Non, non, avant de toucher à un service, vérifiez d'abord ce qui en dépend :

systemctl list-dependencies nom-du-service

Car si vous cassez un truc important, votre système risque de ne plus démarrer correctement. Donc si vous n'êtes pas sûr, gardez vos mimines dans vos poches. D'ailleurs, si vous bidouillez vos fichiers d'unité (comme pour automatiser Shiori par exemple), sachez que vous pouvez aussi les vérifier pour débusquer les erreurs avec :

systemd-analyze verify /chemin/vers/unite.service

C'est super pratique pour éviter les mauvaises surprises au prochain redémarrage. Voilà et si vous cherchez d'autres astuces pour optimiser votre machine Linux , n'hésitez pas à jeter un oeil à mon article sur TLP.

Ah j'oubliais, y'a aussi la commande systemd-analyze security qui permet d'analyser le niveau d'exposition sécurité de vos services. Elle attribue un score heuristique d'exposition basé sur les options de durcissement (hardening) actives. Plus le score est bas, mieux le service est protégé contre d'éventuelles failles. C'est donc un excellent point de départ pour identifier les services qui mériteraient un peu plus de love côté isolation.

Bref, cet analyseur de démarrage c'est vraiment l'outil indispensable pour qui veut comprendre et optimiser son boot Linux. C'est natif, c'est puissant, et ça vous évite de passer des heures à chercher pourquoi votre machine met autant de temps que vous à se réveiller le matin ^^.

VHS - Scriptez vos démos terminal en GIF

Vous vous souvenez des cassettes VHS ?

Bon, là rien à voir avec le magnétoscope de mémé qui clignote à 12:00 mais je suis quand même content de vous présenter VHS , un petit outil open source concocté par la team Charm dont je vous ai déjà parlé.

Y'a pas longtemps, je cherchais un moyen propre de faire une petit démo d'un projet perso et je ne sais pas si vous connaissez Terminalizer (j'en avais déjà parlé), mais là pour le coup, j'ai préféré l'approche de VHS parce qu'au lieu d'enregistrer votre terminal en "live" comme Terminalizer et de me faire stresser à chaque faute de frappe, ça me permet de scripter entièrement en amont ma démo.

En fait vous écrivez un fichier ".tape" avec vos instructions, et l'outil génère un rendu (GIF, MP4, WebM) nickel chrome. C'est donc le rêve de tous les perfectionnistes comme moi qui recommencent 15 fois la même capture parce qu'ils ont oublié un sudo ou qu'ils ont bafouillé sur le clavier.

Pour l'installer, comme d'hab :

brew install vhs

Après si vous passez par Docker, c'est possible aussi mais il vous faudra impérativement ttyd et ffmpeg installés sur votre machine pour que ça tourne.

Ensuite, voici à quoi ressemble un scénario en .tape :

Output demo.gif
Set FontSize 20
Set Width 1200
Type "echo 'Salut les amis !'"
Sleep 500ms
Enter
Sleep 2s

Et là, c'est magique, vous lancez la commande et c'est parti :

vhs demo.tape

Il lance alors un terminal invisible, tape les commandes pour vous, et enregistre le rendu. Hop, c'est dans la boîte mes petits Spielberg !

Mais ça ne s'arrête pas là puisqu’on peut aussi contrôler la vitesse de frappe pour donner un effet plus naturel, ou utiliser la commande "Wait" pour mettre le script en pause jusqu'à ce qu'une certaine chaîne de caractères apparaisse à l'écran. Genre pour ne pas couper la vidéo pendant un "npm install" qui dure trois plombes.

Et ce qui est top moumoute avec VHS , c'est que comme c'est du code, vous pouvez versionner vos démos sur Git. Mieux encore, vous pouvez les intégrer dans votre CI/CD avec GitHub Actions. Du coup, si votre CLI change, votre GIF de documentation se régénère automatiquement (à condition de configurer le commit du résultat, bien sûr). C'est ti pas beau ça ?

Comme ça s'en est fini des GIFs flous ou des screencasts qui pèsent une tonne. Avec VHS c'est propre, c'est net, et c'est maintenable !

jq-quest - Apprenez à maîtriser jq sans vous prendre la tête

Si vous avez déjà croisé la route de jq , c'est probablement parce que vous vous la touchez un peu dans le terminal et que vous avez déjà joué avec du format JSON (logs, APIs, config...).

Jq, tout le monde l'adore parce que ça filtre, ça mappe et surtout ça transforme du JSON directement depuis le terminal. Mais la syntaxe de ce truc, aïe aïe aïe, c'est comme faire de la Regex. C'est de l'apprentissage sur le tas surtout. Faut copier coller des trucs en provenance de RIP-StackOverflow ou de ChatGPT-le-sang-de-la-veine. Et le pire c'est que 2 jours après, on a tout oublié !!! Puis lire la doc officielle, m'en parlez pas, c'est comme lire autre chose que mon site... c'est pas le criss de fun ^^.

Heureusement, pour ceux qui veulent vraiment monter en compétence sans s'endormir, il existe jq-quest .

C'est un petit projet sympa hébergé sur Codeberg qui propose une approche "learning by doing" (apprendre en faisant, pour les anglophobes). Au début, je pensais que c'était juste un QCM basique, mais en fait non puisqu'il faut vraiment taper les commandes et se salir les mains.

Pour essayer, suffit de cloner le dépôt, vous lancez le script, et on vous donne un input JSON et l'output attendu. À vous ensuite de trouver la bonne commande jq pour passer de l'un à l'autre.

Il vous faudra juste jq d'installé sur votre machine. Attention par contre, si vous êtes sous Windows, il faudra passer par WSL ou Git Bash, parce que le script .sh ne va pas aimer PowerShell.

Ça s'installe donc en deux secondes comme ceci :

git clone https://codeberg.org/gturri/jq-quest.git
cd jq-quest

Ensuite, vous lancez votre premier exercice :

./jq-quest.sh 1-pretty-print.json

Le script va alors vous afficher l'instruction, le JSON d'entrée et ce qu'il attend en sortie :

INSTRUCTION: Pretty print the json
INPUT: {"k1": "v1", "k2":[1, 3, 7]}
EXPECTED OUTPUT: {
 "k1": "v1",
 "k2": [
 1,
 3,
 7
 ]
}

Vous tapez votre proposition de filtre, et il vous dit si c'est bon ou pas. Pour proposer une solution, suffit de taper :

./jq-quest.sh 1-pretty-print.json 'SOLUTION'

Si vous séchez (et croyez-moi, ça va arriver), vous pouvez demander un indice avec :

./jq-quest.sh 1-pretty-print.json hint

Ou carrément la solution si vous êtes au bout du rouleau :

./jq-quest.sh 1-pretty-print.json solution

Mais rassurez vous, les exercices sont progressifs, ça commence par du "pretty print" basique (le truc qu'on fait tous), puis on attaque les filtres simples, les clés spéciales, les tableaux, et petit à petit on arrive sur des trucs bien plus costauds comme les itérations sur objets, le slicing ou les opérations mathématiques.

Ce genre de tuto interactif c'est top parce que jq, c'est hyper puissant, mais la courbe d'apprentissage est un peu raide au début. Là, en une petite heure, vous pouvez plier les exercices et avoir enfin compris la logique du truc au lieu de tâtonner à chaque fois.

D'ailleurs, si vous aimez ce genre d'outils pour parser de la donnée, je vous rappelle qu'il existe aussi fq pour les fichiers binaires ou encore htmlq pour le HTML . J'aurais pu vous parler d'outils graphiques pour faire ça, mais franchement, rien ne vaut la ligne de commande pour comprendre ce qu'on fait. Et si vous êtes plutôt Python, jetez un oeil à jc qui convertit la sortie des commandes classiques en JSON.

Bref, si vous voulez arrêter de souffrir à chaque fois que vous devez extraire un champ d'un JSON interminable, faites un tour sur jq-quest, ça va vous dérouiller les neurones.

Si vous êtes dev et que ce genre de tuto vous parle, suivez Korben sur LinkedIn pour d'autres découvertes.

Un grand merci à Guillaume pour la découverte.

Mole - L'outil CLI qui remplace CleanMyMac et toute la clique

Vous en avez marre de payer des licences pour des apps de nettoyage macOS qui font grosso modo la même chose ? CleanMyMac, AppCleaner, DaisyDisk, Sensei, iStat Menus... C'est pas les options qui manquent, mais le portefeuille finit par tirer la gueule, du coup, quand je suis tombé sur Mole, je me suis dit que j'allais vous en parler.

Mole c'est un outil en ligne de commande (donc ça fait peuuuuur, ahaha mais c'est cool vous allez voir) qui regroupe toutes ces fonctionnalités dans un seul binaire. C'est open source, sous licence MIT, et ça pèse que dalle et en gros, l'idée c'est de taper la commande "mo" suivi d'un paramètre et hop, ça fait le taf.

mo # Interactive menu
mo clean # Deep cleanup
mo uninstall # Remove apps + leftovers
mo optimize # Refresh caches & services
mo analyze # Visual disk explorer
mo status # Live system health dashboard
mo purge # Clean project build artifacts

mo touchid # Configure Touch ID for sudo
mo update # Update Mole
mo remove # Remove Mole from system
mo --help # Show help
mo --version # Show installed version

mo clean --dry-run # Preview cleanup plan
mo clean --whitelist # Adjust protected caches
mo uninstall --force-rescan # Rescan apps and refresh cache
mo optimize --whitelist # Adjust protected optimization items

Par exemple, pour le nettoyage en profondeur, c'est mo clean. L'outil va scanner vos caches système, les logs, les données des navigateurs, et tout le bordel qui s'accumule avec le temps. Dans les exemples donnés par le développeur, il parle de récupérer jusqu'à 95 Go d'espace disque. Évidemment ça dépend de votre usage, mais ça donne une idée du potentiel.

Pour désinstaller proprement une app, mo uninstall fera le job. Et contrairement à la méthode du glisser-déposer dans la corbeille qui laisse traîner des fichiers de préférences partout, Mole traque tous les fichiers associés à l'application et les vire ensemble, comme ce que fait AppCleaner...

Côté monitoring système, mo status vous affiche un dashboard temps réel avec CPU, RAM, réseau, et métriques de santé. Un peu comme iStat Menus mais directement dans votre terminal. Et avec mo analyze, vous avez un explorateur visuel de l'espace disque avec des barres de progression ASCII. Très DaisyDisk vibes. Et mo analyze c'est pareil mais pour l'espace disque...

La commande mo optimize va rafraîchir les caches système et relancer certains services pour remettre de l'ordre. Et pour les devs, mo purge est une tuerie : ça nettoie les dossiers de build de vos projets (node_modules, target, build...) qui peuvent facilement bouffer des dizaines de gigas si vous bossez sur plusieurs projets.

Petit bonus sympa, mo touchid permet de configurer Touch ID avec sudo, ce qui vous évitera de taper votre mot de passe admin 15 fois par jour.

Voilà... Maintenant si ça vous chauffe, l'installation se fait soit via Homebrew avec brew install tw93/tap/mole, soit via curl directement. Le projet est écrit en Shell et Go, ce qui explique qu'il soit aussi léger et rapide. Seul bémol relevé par le développeur, évitez iTerm2 qui a des soucis de compatibilité. Alacritty , Kitty , WezTerm ou Ghostty par contre fonctionnent nickel.

L'outil supporte aussi les options classiques genre --dry-run pour prévisualiser les changements sans rien supprimer, --whitelist pour protéger certains éléments, et --debug pour les curieux et la navigation se fait avec les flèches ou en mode Vim (hjkl) pour les puristes.

Bref, si vous êtes à l'aise avec le terminal et que vous en avez marre de multiplier les apps payantes pour faire des trucs basiques, Mole mérite un petit test !

sqlit - Quand y'en a marre de lancer SQL Server Management Studio pour une requête

Vous aussi vous avez ce truc où vous devez juste faire un petit SELECT rapide sur votre base de données, et là vous lancez un monstre du genre SQL Server Management Studio ou DBeaver, vous attendez que ça se charge pendant 47 ans, que ça bouffe les 2 Go de RAM qu'il vous reste, et tout ça pour une requête de 3 lignes ?

Moi ça m'énerve profondément, j'avoue... Pas le temps, pas la patience !

Heureusement, y'a un dev qui en a eu encore plus marre que moi et qui a pondu sqlit . C'est une interface TUI (Terminal User Interface, je précise...) qui tourne direct dans votre terminal et qui supporte un paquet de bases de données différentes telles que PostgreSQL, MySQL, SQL Server, SQLite, MariaDB, Oracle, DuckDB, CockroachDB, Supabase, Turso... La liste est longue mais en gros, si ça parle SQL, sqlit sait s'y connecter.

Le truc est inspiré de lazygit , un client Git en TUI que beaucoup de devs adorent, ce qui fait qu'on retrouve cette approche "lazy" où l'interface se suffit à elle-même. Comme ça y'a pas besoin de mémoriser 150 raccourcis clavier, puidqu'il y a une aide contextuelle qui s'affiche et qui vous dit quoi faire, comme votre maman quand vous ne l'avez absolument pas sollicitée.

On a donc de l'autocomplétion SQL qui va chercher les noms de tables et de colonnes, un historique des requêtes par connexion (pratique pour retrouver cette requête chelou qu'on avait bidouillée y'a 3 semaines), et même la gestion des tunnels SSH intégrée pour se connecter à des bases distantes. Les utilisateurs de Vim seront contents aussi, car y'a un mode d'édition modal pour naviguer comme dans votre éditeur préféré.

Pour l'installer, c'est hyper simple :

pip install sqlit-tui

Et après vous tapez sqlit dans votre terminal et c'est parti. Les drivers pour chaque type de base de données s'installent à la demande la première fois que vous essayez de vous connecter. Donc pas de dépendances inutiles qui traînent si vous utilisez juste PostgreSQL par exemple.

Y'a aussi un mode CLI si vous voulez scripter vos requêtes :

sqlit query -c "MaConnexion" -q "SELECT * FROM Users" --format csv

Le seul truc naze je trouve, c'est le nom "sqlit" qui ressemble trop à SQLite. Bon courage pour googler des infos dessus... Je sais de quoi je parle, toutes les 2 semaines, y'a une entreprise Korben qui pop en voulant surfer sur mon buzz (ouais j'ai le melon, mdr) et qui passe toutes ses levées de fonds en adwords pour se positionner avant moi sur Google ^^. C'est couillon ^^.

Bref, si vous vivez dans le terminal et que vous en avez marre de lancer des client lourds juste pour un SELECT, c'est vraiment pratique.

Telehack - Replongez dans l'Internet de 1985

Quand je revoie des films comme WarGames ou Hackers, je me rends compte que je suis un poil nostalgique de ces écrans noirs avec du texte vert, des modems qui crapotent, et de la magie des connexions longue distance sur des réseaux qui tenaient avec du scotch et des prières… Hé bien cool pour moi (et pour vous, si vous avez la même pathologie de moi) y’a un taré des Internet qui a recréé tout ça, et c’est jouable directement dans votre navigateur.

Ça s’appelle Telehack , et c’est une simulation complète de l’ARPANET et d’Usenet tels qu’ils existaient entre 1985 et 1990. Le site propose 26 600 hôtes virtuels, des milliers de fichiers d’époque, des jeux d’aventure textuels, un interpréteur BASIC fonctionnel et même des utilisateurs historiques reconstitués à partir de vraies archives. Le créateur, connu uniquement sous le pseudo “Forbin” (une ref au film “Le Cerveau d’acier” de 1970), a vraiment pondu un truc de dingue que vous devez tester absolument !

Le plus beau dans tout ça, c’est que vous pouvez vous y connecter comme à l’époque. En telnet sur les ports 13, 1337 ou 8080, en SSH sur le port 2222, et même… avec un vrai numéro de téléphone américain (+1 213 835-3422) accessible en modem analogique 14,4 kbps. Pour les nostalgiques du grésillement, c’est du bonheur.

Une fois connecté, vous vous retrouvez donc avec une invite de commande minimaliste. Tapez ensuite netstat pour voir la liste des hôtes accessibles, puis telnet pour vous connecter à un système distant, ou dial pour composer des numéros de téléphone virtuels comme un vrai phreaker des années 80. Y’a même des outils de hacking d’époque comme wardial.exe et porthack.exe pour progresser dans le jeu et débloquer de nouveaux systèmes.

Côté contenu, c’est également un vrain musée vivant. Toutes les archives Usenet intégrées proviennent de la collection d’Henry Spencer, un type de l’Université de Toronto qui a sauvegardé plus de 2 millions de messages entre 1981 et 1991 sur 141 bandes magnétiques récupérées de justesse avant d’aller à la poubelle.

Ces messages sont les plus anciens posts Usenet encore existants, et vous pouvez donc les lire directement dans Telehack. C’est pas ouf ça ?

Pour les amateurs de jeux, y’a Zork , Adventure et tout un tas de jeux en Z-code jouables directement. L’interpréteur BASIC inclus permet également d’exécuter des centaines de programmes historiques et si vous aimez Star Wars en ASCII , le film complet en animation texte est disponible.

D’ailleurs, la simulation au sein de Telehack va assez loin dans le réalisme puisque comme je vous le disais, les utilisateurs historiques sont reconstitués à partir de vraies archives UUCP de l’époque. Vous pouvez faire un finger @host sur n’importe quel système pour voir qui est “connecté”. Les mots de passe des systèmes sont volontairement faibles (secret, love, trustno1…) comme c’était le cas à l’époque et le côté hacking vous fera gagner des badges (HACK5, HACK10, HACKER) au fur et à mesure que vous compromettez des systèmes.

Telehack est passé à ce jour d’un petit projet en 2010 à une communauté de plus de 50 000 utilisateurs et vu la qualité du truc, c’est mérité. Pour ceux qui ont connu cette époque ou ceux qui veulent comprendre comment c’était avant le web, c’est une expérience unique, les amis !

Pour y accéder : telehack.com dans votre navigateur, ou telnet telehack.com si vous voulez faire les choses proprement. Enjoy !

Itoa - Pour convertir une image en ASCII Art

Vous avez un iPhone qui prend des photos 48 mégapixels, un écran Retina qui affiche 254 pixels par pouce, et des GPU qui font tourner des jeux en 4K mais ce que vous n’avez pas c’est Itoa , un outil web qui fait exactement l’inverse puisqu’il transforme vos images haute-définition en une grille de caractères ASCII monochrome / couleur de 10 symboles maximum (Par exemple : .:-=+*#%@).

Car l’ASCII art, c’est littéralement la mise à mort volontaire de l’image. Vous prenez quelque chose qui a besoin de millions de pixels pour exister et vous le réduisez à une poignée de caractères typographiques et en 2025, ça continue !

Sur que itoa (ça veut dire “image to ascii art”, au fait) fait ça très bien ! C’est donc, vous l’aurez compris, un convertisseur image-vers-ASCII codé en React et Vite qui tourne directement dans votre navigateur. Vous glissez dessus une image JPG, PNG ou GIF, et hop, l’outil vous la transforme en grille de caractères.

Deux modes sont dispo : monochrome pur et dur, ou couleur où chaque caractère hérite de la teinte du pixel d’origine. Vous pouvez aussi contrôler la taille de sortie (petit, moyen, grand) et exporter le résultat en PNG si vous voulez le partager ou l’imprimer.

Techniquement, itoa utilise l’API Canvas HTML5 pour analyser votre image. Ensuite, l’image est redimensionnée en gardant son ratio, puis chaque pixel est analysé. Pour le mode monochrome, l’algorithme calcule la luminance et ensuite l’outil mappe la valeur sur une échelle de caractères allant du plus clair (.) au plus foncé (@). Et pour le mode couleur, chaque pixel conserve sa couleur RGB d’origine via des balises HTML.

Bien sûr, itoa n’est pas le seul convertisseur ASCII du monde. Y’a pas exemple ManyTools.org qui fait le job depuis des années, Folge.me avec son interface moderne et ses options couleur, ou encore ASCII-Art-Generator.org qui peut exporter en SVG.

Bref, si vous aimez la nostalgie tech ou si vous voulez illustrer des .txt, c’est l’outil qu’il vous faut !

A découvrir ici !

❌