English · 日本語 · Español · 中文

Marc-Alexis Manso-Peters — la version texte

Tout ce que dit la console, sans la console : le même texte, en HTML simple, pour les lecteurs d’écran, les moteurs de recherche, et quiconque préfère lire.

Retour à la console (il faut JavaScript)

À mon propos

Salut, je suis Marc-Alexis. Voilà, j’ai 23 ans, euh… c’est mon site personnel. En dessous, il y a des icônes avec tout ça, et vous pouvez cliquer sur les icônes pour avoir des infos diverses sur moi.

Les livres que je conseille

Onze livres parmi ceux que mes notes citent le plus, et le mien, évidemment. Si vous en ouvrez un, son auteur vous attend en première page.

Né pour briller — Marc-Alexis Manso-Peters

Vingt-trois ans de combats, de doutes, de NixOS et de lait de soja : le récit bouleversant d’un homme qui a couru 21,1 km sans jamais abandonner (dernier de sa catégorie) et réglé sa brosse à dents depuis un terminal. Une autobiographie, au premier degré apparent.

Ce que j’en garde — Tous les jours un peu. C’est comme ça qu’on finit, même dernier.

Flow — Mihály Csíkszentmihályi

Un psychologue décrit le « flow », cet état où on est complètement absorbé par ce qu’on fait, et explique comment le provoquer au travail, dans ses loisirs et avec les autres.

Ce que j’en garde — Les meilleurs moments ne sont pas passifs, mais actifs.

Factfulness — Hans Rosling, Ola Rosling, Anna Rosling Rönnlund

Les auteurs montrent qu’on se trompe tout le temps sur l’état du monde, et décrivent les dix instincts qui nous font mal lire les chiffres.

Ce que j’en garde — Le monde n’est pas divisé en deux.

How to Live — Derek Sivers

Vingt-sept chapitres, et chacun donne une réponse différente (souvent contradictoire avec les autres) à la question « comment vivre ? ». À la fin, une conclusion relie le tout.

Ce que j’en garde — Tout essayer, s’attendre à ce que rien ne marche.

Art as Therapy — Alain de Botton, John Armstrong

Les auteurs proposent de voir des œuvres d’art connues comme des outils pour la vie de tous les jours, et les relient à l’amour, au travail, à la nature, à l’argent ou à la politique.

Ce que j’en garde — L’art comme un outil de croissance personnelle.

Steal Like an Artist — Austin Kleon

Un petit livre en dix principes sur la créativité, tiré d’une conférence donnée à des étudiants. L’idée principale, c’est que tout travail créatif s’appuie sur des influences.

Ce que j’en garde — Le fardeau de l’originalité absolue.

Dopamine Nation — Anna Lembke

Une psychiatre part des neurosciences et de cas de ses patients pour expliquer comment courir après les plaisirs faciles mène à la dépendance, et comment retrouver un équilibre.

Ce que j’en garde — La balance douleur-plaisir.

The Inevitable — Kevin Kelly

L’auteur décrit douze tendances technologiques qui, d’après lui, vont changer la vie de tous les jours pendant trente ans, comme le partage, le filtrage, ou le fait d’accéder aux choses plutôt que de les posséder.

Ce que j’en garde — La technologie possède des tendances inévitables.

Theory of Everything — Ken Wilber

Ken Wilber présente sa théorie « intégrale », qui cherche à relier le corps, l’esprit, l’âme et la dimension spirituelle, puis il l’applique aux affaires, à la politique, à la médecine et à l’éducation.

Ce que j’en garde — Pourquoi les débats entre niveaux de conscience échouent.

Anything You Want — Derek Sivers

Derek Sivers a créé CD Baby, l’a fait grandir puis l’a vendu, et il en tire quarante leçons. Il défend une boîte pensée pour ses clients plutôt que pour le profit.

Ce que j’en garde — Le business n’est pas une affaire d’argent.

Race et histoire — Claude Lévi-Strauss

Lévi-Strauss a écrit ce texte en 1952 pour l’UNESCO. Il y refuse toute hiérarchie entre les cultures, et montre que le progrès vient des échanges entre elles.

Ce que j’en garde — Toutes les cultures bougent, mais pas dans la même direction.

Die With Zero — Bill Perkins

L’auteur conseille de dépenser son argent de son vivant, dans des expériences, au lieu de l’accumuler jusqu’à sa mort. Il donne aussi une méthode pour prévoir ces dépenses selon l’âge.

Ce que j’en garde — L’argent sert à vivre des expériences.

Pourquoi j’apprends le chinois

Parce que j’adore la robotique, et qu’en robotique, les boss, c’est la Chine.

Et la Chine va devenir n° 1 mondial en influence. Donc, de la même manière qu’il faut apprendre l’anglais, je dois apprendre le chinois.

Puce NFC

J’ai une puce sous la peau. C’est un flexNT, un tag NFC souple en biopolymère, glissé sur le dessus de ma main gauche, sous l’auriculaire. Il est passif et n’a pas de batterie, il ne se réveille que quand on approche un lecteur. La voici, à gauche.

Type
NFC / RFID
Fréquence
13,56 MHz
Puce
NTAG216 — 924 o
Taille
9 × 22 × 0,4 mm
Boîtier
Biopolymère souple, USP Class VI
Alimentation
Passive, zéro batterie

Ce que j’en fais

On approche un téléphone et elle répond. C’est tout ce qu’elle fait, et c’est déjà beaucoup trop.

Pourquoi faire ça ?

Parce que je pouvais. Et transformer un bout de mon corps en télécommande, c’est exactement le genre de truc inutile et génial que j’adore.

Et puis pour moi, le corps est un terrain de jeu, il n’a rien de figé. Avec ça, mon second cerveau sur Obsidian et quelques scarifications choisies, ça fait un mélange un peu décalé, entre la techno et le primitif.

L’opération

Les questions que tout le monde pose

Ça fait mal ?

Comme une grosse piqûre, pendant deux secondes. C’est moins long qu’un tatouage, et beaucoup plus geek.

On peut te tracker au GPS ?

Non. C’est passif, sans batterie, et ça ne se lit qu’à quelques centimètres. Il n’y a pas de GPS, et elle n’émet rien toute seule. Calmez-vous.

Et à l’IRM ?

En général, un tag souple en biopolymère passe sans souci, mais je préviens quand même le manipulateur à chaque fois.

Ça s’enlève ?

Oui, une petite incision suffit. Mais franchement, pourquoi je ferais ça ?

C’est la puce 5G de Bill Gates ?

Exactement. Il m’envoie un SMS tous les matins pour prendre des nouvelles. (Non.)

C’est légal ?

En France, c’est légal sous supervision médicale. Les Pays-Bas ont le meilleur cadre (les studios doivent avoir une licence), la Suède est numéro un mondial par habitant, et aux États-Unis, ça dépend de l’État.

Un semi-marathon sous LSD

Le 23 avril 2023, j’ai couru semi-marathon, 21,1 km, sous 200 microgrammes de LSD, soit le double d’une dose ordinaire. J’ai fini. C’est à peu près tout ce qu’il y a à en dire de flatteur.

Épreuve
Semi-Marathon de la Presqu’Île
Date
23 avril 2023
Distance
21,1 km
Produit
LSD-25, 200 µg (dose ordinaire : 100)
Temps officiel
2 h 51 min 14 s
Temps réel
2 h 48 min 09 s
Vitesse
7,5 km/h
Classement
1823ᵉ sur 1840
Dans ma catégorie
21ᵉ sur 21
Club déclaré
Le Semi Diabolique

Disclaimer légal

Cette page web contient un récit entièrement fictionnel d’une course de semi-marathon sous l’influence de LSD. L’ensemble du contenu présenté ici est une œuvre de fiction créée uniquement à des fins de divertissement et d’information éducativement éducatrice.

L’auteur n’a jamais consommé de LSD ni participé à l’activité décrite. Toute ressemblance avec des événements réels, des personnes vivantes ou décédées, ou des expériences vécues est purement fortuite.

Ce site ne constitue en aucun cas une incitation à la consommation de substances illicites ou à la pratique d’activités sportives. À la manière de la pétanque, du volley-ball, ou du basketball.

L’auteur et les gestionnaires de ce site web délirant déclinent toute responsabilité concernant :

C’est de l’acide lysergique diéthylamide, un psychédélique. Il déforme la perception et l’humeur, et même la façon de penser. On a des hallucinations visuelles et sonores, et surtout le temps et l’espace ne se mesurent plus pareil.

Ça se prend sur un buvard, un petit carré de papier qu’on pose sur la langue. Les effets durent de six à douze heures, et ils changent énormément selon la dose, l’endroit et l’état d’esprit de celui qui le prend (moi, en l’occurrence).

Une dose ordinaire, c’est cent microgrammes, et un microgramme c’est un millionième de gramme, donc autant dire rien. Moi, j’en ai pris deux cents.

Pour être précis, c’était du LSD-25. Il en existe d’autres, mais c’est le seul qui a été étudié sérieusement. Sur les autres, on ne sait presque rien, et franchement ça suffit comme raison de ne pas y toucher.

Ces substances ne sont pas légales et on se les procure par des biais dérobés. D’ailleurs, pour acheter du LSD, il suffit d’aller sur

La médaille de finisher et le diplôme qui va avec. 1823ᵉ sur 1840, mais j’ai fini quand même.

Je suis arrivé dernier de ma catégorie, sur vingt et un partants. C’est écrit noir sur blanc sur le certificat, donc autant ne pas le cacher.

C’est une photo du parcours, prise ce jour-là. Déplacez le trait.

En gros, les surfaces respirent. Un mur uni se met à onduler très lentement, comme si on le regardait à travers de l’eau. Les motifs réguliers (un gravier, un feuillage, du crépi) se réorganisent en dessins qui ont l’air d’avoir toujours été là. Les couleurs saturent et les contours se doublent d’un liseré. Rien à voir avec un film : le monde reste le même, il devient juste instable sur les bords. Et pendant les presque trois heures de course, ça ne s’est jamais arrêté.

Ce que j’en retiens

Questions et réponses

Pourquoi faire ça ?

J’avais dix-neuf ans, et j’avais lu un bouquin sur un type qui a fait quatre-vingts kilomètres dans cet état. Le livre était mauvais, mais l’idée m’a suivi pendant des mois. Y’a pas plus profond que ça.

C’est légal, non ?

Non. En France, le LSD est classé comme stupéfiant, et l’usage peut coûter un an de prison et 3 750 € d’amende. Je ne vais pas faire semblant du contraire.

Ça t’a fait courir plus vite ?

7,5 km/h, et dernier de ma catégorie. Je vous laisse juger.

Tu as couru avec ta mère ?

Oui, elle était sur le parcours. Elle savait ce que j’avais pris, et elle, elle n’avait rien pris : elle a couru à jeun, comme une personne normale. Je le précise parce qu’après, on me pose toujours la question.

Et oui, je suis

En cagoule noire de justicier, dans une cave. Le texte couvre l’image : « non merci, je ne vais pas prendre de côtes de porc, je vous remercie cependant pour votre offre. »

La nuit, bras croisés contre un mur de briques sous un réverbère, en cape et loup noirs. En haut, en lettres vertes : « Super-hero VEGAN ».

En collant de super-héros bleu et rouge, cape rouge, loup noir et poings sur les hanches, au milieu d’un garage. En bas, en grosses lettres jaunes : « VEGAN ».

Les questions

Non, mon plus grand bonheur n’est ni ma famille, ni ma copine, mais ces deux briques. Soja vanille™ et Soja chocolat™.

Tu prends tes protéines où ?

Lentilles, pois chiches, tofu, seitan, céréales. Je n’y pense pas plus souvent que vous ne pensez aux vôtres. L’Académie américaine de nutrition et de diététique dit que les régimes vegans sont adéquats pour tous les stades de vie, y compris les sportifs de haut niveau. Mais merci de vous inquiéter pour moi.

Tu es carencé ?

Non. Un comprimé de B12 par semaine. La B12 est faite par des bactéries, pas par des animaux. Un steak contient de la B12 parce que la vache a été supplémentée ou a mangé des bactéries.

Les plantes aussi souffrent, non ?

Non idiot bête que tu es. Les plantes n’ont pas de nocicepteurs ni de système nerveux. C’est de la SVT 5e. (connard)

Le lion mange bien de la viande.

Tu es un lion connard ? Ton Lion™ il a un iPhone 17 Pro Max de connard ?

Bon mais c’est la nature.

Le lion tue les petits de ses rivaux, mais bizarrement y’a que pour la viande où on peut l’utiliser comme exemple parce que moi quand je tue les enfants d’un concurrent vous faites le chouin chouin parce que j’ai tué votre gosse. Faut savoir au bout d’un moment merde à la fin.

Moi je pourrais pas, j’aime trop le fromage / la viande / insérer un truc que je mange pas mais que vous appréciez.

ok. j’ai pas le souvenir d’avoir demandé par contre vous ferez gaffe.

Quel est ton salaire annuel ?

Bon là y’a carrément plus aucun rapport avec le véganisme ! Mais j’entends, cette question est légitime mais le contexte ne s’y prête pas.

L’humain est omnivore par évolution.

L’évolution humaine est descriptive (ce qui s’est passé), pas prescriptive (ce qui devrait être). L’évolution nous a aussi donné l’agriculture, la cuisson, et les supermarchés. Si on suit la logique évolutionniste, on devrait manger de la viande crue.

Est-ce que tu es exemplaire ?

En tant qu’individu ? Oui, absolument, je suis un exemple pour tout un chacun. Cependant, en termes de véganisme, non : il est vrai, et je me confesse, des fois j’achète des Kinder Country remplis de lait. Mais c’est trop bon, putain d’merde, je peux pas résister aux sirènes du capitalisme au bout d’un moment. Et des fois je tue des vaches avec un couteau, pour le plaisir aussi.

Mon stage chez Kyber

Le poste

Développeur embarqué en stage chez Kyber, de septembre 2026 à début février. Kyber pilote des machines à distance, en temps réel : robots, drones, véhicules. Moi, je fais les démos : le firmware, les robots, les cartes.

Mes photos du stage : moi au bureau avec le cône de VLC sur la tête, puis mon poste, un portable posé entre les deux moitiés de mon clavier fendu.

Poste
développeur embarqué, stagiaire
Depuis
septembre 2026, jusqu’à début février
Cursus
M1 systèmes embarqués, EFREI Paris
Langages
Rust, C et C++
Systèmes
ESP-IDF, Linux embarqué construit avec Yocto
Robotique
ROS 2, MAVLink
Au banc
KiCad, fer à souder, multimètre, alimentation de labo
Ce que j’y fais

Je bosse sur plusieurs chantiers en même temps, pas sur un seul sujet pendant six mois : un banc qui mesure la latence d’un écran, un robot chien qui marche piloté à distance, et des cartes électroniques à dessiner et à relire. Il y a une page pour chacun juste après.

Kyber, c’est quoi

Kyber fait passer la vidéo, le son, les commandes et la télémétrie par un seul lien, sur la même horloge, avec 8 à 10 ms de bout en bout. Le SDK est open source (licence AGPL v3), et derrière, c’est l’équipe qui a fait VLC. Oui, le cône orange.

Pourquoi 8 ms

D’après Kyber, la coordination œil-main tourne entre 30 et 50 ms. En dessous, le robot ne réagit plus après le geste mais pendant. Leur formule, c’est qu’à 200 ms on regarde, et qu’à 8 ms on pilote.

Mesurer la latence

Mon chantier principal, c’est un banc qui mesure le temps entre l’appui sur une touche et le moment où l’image change. Comment ? ███████ ██ █████████ ███, et ████ █████████ ██████. Projet interne, dossier caviardé.

La tablette
██████ ████, sur ████████
Le firmware
en Rust, sur ██████
Le capteur
[DONNÉES SUPPRIMÉES]
Les modes
███ ████ ██████, ██ ████ ███████
Le résultat
[DONNÉES SUPPRIMÉES]
La règle du départ

Au départ, on a posé une règle : rien de compliqué qui puisse casser, quitte à perdre █ ms de précision. Du coup, on a laissé tomber ███ ████████████ ██████, et ████████ ██ █████ dans un vrai clavier.

Le parasite

Un parasite à ██ Hz décalait toutes les mesures. La cause : ████ ██████████ collée aux ████ du ████████. [DONNÉES SUPPRIMÉES]

La soudure

J’ai perdu une heure et demie sur le montage, et au final c’était une soudure. Depuis, je vérifie fil par fil dès le début, et je mesure avant d’accuser un composant.

L’essai A/B

Avant d’accuser une nouvelle version du firmware, je fais un essai A/B : le même montage, les deux versions, à cinq minutes d’écart. Cette fois-là, la nouvelle version n’y était pour rien.

Les robots

Un robot chien qui marche, piloté à distance à travers Kyber. Sa marche est réécrite en Rust, son visage s’affiche sur son écran en Slint, et tout ce qu’il raconte passe en MAVLink.

Le Mini Pupper dans ma main, avec ma tête sur l’écran derrière. Puis un chronomètre filmé par la caméra du rover et renvoyé sur l’écran, et une horloge à la milliseconde à côté de la pince du rover.

Le robot
Mini Pupper 2, un quadrupède open source de Mangdang
Dedans
un Raspberry Pi CM4, et un ESP32-S3 pour les douze servos
Le système
une image Linux à nous, construite avec Yocto
La marche
en Rust, à 200 Hz
Le visage
Slint, sur l’écran du chien
Le pilotage
une manette, à travers Kyber, en MAVLink
Le portage

Le logiciel du chien est prévu pour Ubuntu. Ma tâche, c’était de le faire tourner sur une image Yocto à nous, et maintenant la caméra, l’écran, la carte des servos, la marche et la manette marchent dessus.

Les saccades

Quand je rejoue mes gestes, il marche bien. En direct, il saccade. Ça ne vient ni de la marche, ni de la manette, ni de Kyber, et je cherche encore d’où ça vient.

La carte muette

La carte des servos ne répondait pas. Le logiciel officiel ouvrait le port série sous son ancien nom, alors que le système livré avec le chien tournait avec une version corrigée. Ce que j’en retiens : il faut lire ce qui tourne vraiment sur la machine, pas seulement le dépôt.

Les cartes

Côté cartes électroniques, j’en dessine, je relis celles des autres, et je fais démarrer les neuves.

Une carte qui s’allume pour la première fois, avec sa diode verte. Puis l’alimentation de labo qui affiche 5,16 V.

Logiciel
KiCad : schéma, routage, ERC et DRC
Format
HAT Raspberry Pi
Microcontrôleurs
SAMD21, RP2354A, ███████
Firmware
PlatformIO, et du Rust
Au banc
alimentation de labo, multimètre
Le stock

Sur le papier, le meilleur régulateur n’avait aucun stock chez l’assembleur. Ce que j’en retiens : la disponibilité compte autant que la fiche technique.

Relire les autres

Je relis aussi les cartes des autres, en repartant de zéro. Une erreur que je ne referai pas : affirmer une largeur sans avoir vérifié les pistes et les zones de cuivre.

Une carte neuve

Une carte neuve à SAMD21 ne fait rien toute seule. Il faut lui écrire un firmware de test, l’essayer depuis le PC, et noter la procédure pour la flasher.

Mon setup Linux

NixOS

Mes deux machines sont décrites dans un seul dépôt git, du noyau à la couleur du curseur. Rien n’y entre parce que « ça existait avant ».

Distribution
NixOS, et home-manager pour tout le reste
Méthode
une flake, deux machines
La tour
dieu — i5-6400, Radeon RX 580
Le portable
ThinkPad P14s — Ryzen AI 7 PRO 350
Non libre
accepté paquet par paquet, jamais en bloc
La doc

Chaque page de la doc liste les fichiers qu’elle décrit. Si je commite un changement de config sans mettre sa page à jour, le commit est refusé. Et le site de la doc se republie tout seul après chaque commit.

Le bureau

Hyprland range les fenêtres, et une barre que j’ai écrite moi-même affiche ce qui ne va pas. Le tout en orange sur noir.

Compositeur
Hyprland, configuré en Lua
Une config
pour deux machines : elle lit leur nom
Barre
Quickshell, en QML
Thème
« braise » — #ff6b1a sur #0e0e0f
Formes
des squircles, pas des coins arrondis
Polices
Figtree, et Iosevka compilée maison
La barre

Elle a remplacé trois programmes d’un coup : la barre, le lanceur et les notifications. Le principe est simple, s’il y a un souci elle l’affiche, sinon elle n’affiche rien.

Le fond d’écran

C’est une matrice de points lumineux, animée en shader. Avant elle, il y a eu un tunnel de néons, une photo, un ciel de rubans et un horizon marin. Je les ai tous refusés.

Zéro raccourci

Un jour, Hyprland a chargé telle quelle une config enregistrée à moitié. Il a tourné avec zéro raccourci clavier, sans afficher la moindre erreur.

Le terminal

Une fenêtre kitty, avec une session tmux dedans. C’est Hyprland qui range les fenêtres en tuiles, pas le terminal.

Émulateur
kitty
Multiplexeur
tmux
Shell
zsh en mode vi, starship
Éditeur
Neovim, décrit en Nix avec nixvim
Outils
fzf, zoxide, eza, bat, fd, ripgrep
Et aussi
yazi, lazygit, btop
13,5

C’est la taille de police du terminal. Elle est calculée pour tomber pile sur des pixels entiers, avec l’écran à l’échelle 4/3.

Neovim

Toute sa config est écrite en Nix, environ 1 400 lignes. Les raccourcis commencent par la touche Espace.

Willy Wonka

Mon clavier est coupé en deux, sans fil, et il porte le nom d’un chocolatier.

Modèle
Corne Choc Pro, de Keebart
Liaison
Bluetooth, une moitié par main
Écrans
un nice!view sur chaque moitié
Firmware
ZMK, compilé chez moi
Disposition
QWERTY, modificateurs sous les doigts
Couches
six
Les écrans

Chaque couche a son animation, avec de vrais accessoires de Charlie et la chocolaterie (2005) qui tournent en 3D : le Golden Ticket, la sucette, la Wonka Bar et le dentifrice Smilex.

Le nom

Il s’appelait Cyril Hanouna jusqu’au 4 octobre 2026.

La dictée

Sur une des couches, j’ai deux touches pour la dictée : une qui enregistre ma voix, et une qui colle le texte transcrit.

Mes outils

Deux outils que j’ai écrits pour moi, et qui vivent dans le terminal : mes tâches et mon agenda.

Stylite
les tâches — serveur et CLI en Go, TUI en Rust, web en Svelte
Comput
l’agenda — CLI en Python, TUI en Rust (ratatui)
Où
sur mon serveur ; mes deux machines lui parlent directement
Le calendrier
auto-hébergé, en CalDAV : l’iPhone le lit aussi
Stylite

C’est mon gestionnaire de tâches, fait maison. Il a une boîte de réception, une vue aujourd’hui, une vue à venir et le journal de ce qui est fait, avec des projets, des rubriques et des échéances. Toutes les tâches de ce site sont dedans.

Comput

Mon agenda. Il a des vues mois, semaine, jour et agenda. Les rendez-vous sont à leur place et à leur durée, côte à côte s’ils se chevauchent, et un trait marque l’heure qu’il est. Il a remplacé khal et vdirsyncer.

Le TUI

C’est une interface en texte, dans le terminal, qui se pilote uniquement au clavier : j et k pour bouger, ? pour voir toutes les touches, et une virgule pour ouvrir toutes les commandes. Ça ne fait jamais attendre, le premier écran sort du cache et la synchro se fait en fond.

Les réglages

Le thème, la disposition et les touches sont décrits dans ma config NixOS, et vérifiés à l’installation. Si une touche est prise deux fois, c’est l’installation qui échoue, du coup je ne le découvre pas au lancement. Les deux ont le thème braise.

Le filet

Chaque commande de Comput peut aussi répondre en JSON, et tout ce que j’écris peut se défaire : u annule la dernière modif, à l’identique. Si le rendez-vous a été changé entre-temps sur le téléphone, l’annulation est refusée au lieu de l’écraser.

Les manies

Les trucs qui ne servent à rien, ou presque.

Anti-croissant

Si vous profitez de mon ordi resté ouvert pour annoncer que je paie les croissants, le message est remplacé, la webcam vous prend en photo, et l’écran se verrouille sur « PAS DE CROISSANT POUR VOUS ». Ça marche aussi avec « crwassan » et « tnassiorc ».

Le capot

Le point rouge du logo ThinkPad épelle « marc-alexis » en morse, en boucle. Celui d’ici aussi, regardez-le. Ça ne sert strictement à rien.

juice

Un outil que j’ai fait pour gérer l’énergie et la veille. Il change de réglages selon l’endroit où je suis, et il coupe le turbo du processeur pour que le ventilateur se calme.

Projets

Je règle ma brosse à dents depuis un terminal. Oui, vraiment. Le reste est à peu près du même niveau.

nothing-toolbox

nothing headtrack dans un terminal, en animation : un casque low-poly blanc, au-dessus d’un sol quadrillé, suit les mouvements de la tête. Il hoche, il tourne, il se penche.

Un outil en ligne de commande pour piloter mon casque, le Nothing Headphone (1), depuis Linux. Réduction de bruit, égaliseur, codec, batterie, et même son capteur d’orientation. Le tout sans sortir le téléphone, sans appli et sans créer de compte.

Langage
Rust, licence MIT
Liaison
Bluetooth classique, RFCOMM canal 15
Trames
en-tête 0x55, CRC-16/MODBUS
Testé sur
Nothing Headphone (1), modèle B170
Depuis
octobre 2026
Une connexion à la fois

Le casque n’accepte qu’une connexion à la fois, la deuxième se fait refuser. Du coup, un démon garde la connexion ouverte et passe les commandes des autres par un socket local. Changer la réduction de bruit prend environ 0,3 s en direct, et 50 ms en passant par le démon.

Hocher la tête

Le casque envoie son orientation (en quaternions) une dizaine de fois par seconde. Avec nothing headtrack --viz, ça dessine un casque 3D low-poly dans le terminal, style PS2. Et nothing gestures transforme un hochement de tête en lecture/pause, et un secouement en piste suivante. Oui, je change de musique en secouant la tête.

L’égaliseur

nothing eq edit dessine la courbe dans le terminal et l’envoie au casque pendant que je bouge les bandes. Le gain total est calculé exactement comme dans l’appli.

Le protocole

Je l’ai décrit dans le dépôt, et pour chaque info je note d’où elle vient : vue sur le casque, lue dans l’appli, ou déduite. Petit piège : passer de l’AAC au LDAC fait redémarrer le casque, qui revient au bout de 7 s environ.

laifen-toolbox

laifen tui dans un terminal, en animation : une brosse à dents low-poly en acier poli tourne sur un sol quadrillé pendant le brossage, et à côté, le panneau des modes et de la batterie compte les secondes.

Pareil que pour le casque, mais pour ma brosse à dents, une Laifen Wave. Je règle ses quatre modes, la durée du brossage et le rappel des 30 secondes, je vois la batterie, et en bonus il y a une vue 3D de la brosse dans le terminal. Toujours sans téléphone.

Langage
Rust, licence MIT
Liaison
Bluetooth LE, par BlueZ
D-Bus
à la main, sans bibliothèque
Trames
en-tête 0xAA, somme XOR
Testé sur
Laifen Wave, modèle LFTB01-P
Elle dort

La brosse se rendort après chaque commande, et met en général une vingtaine de secondes à revenir. Une fois, deux minutes. Donc laifen shell enchaîne plusieurs commandes sur une seule connexion, pour ne pas attendre à chaque fois.

Pas touche

Le protocole permet de remettre la brosse à zéro, ou de réécrire son firmware. Casser sa brosse à dents avec une mauvaise trame, ce serait bête. Donc laifen n’envoie que des commandes que j’ai essayées sur une vraie brosse, relues, puis remises comme avant. Les autres ne sont même pas dans le code.

La vue 3D

laifen tui dessine une brosse low-poly en acier poli, style PS2, sur un sol miroir. Pendant le brossage, la tête bouge avec l’amplitude et la vitesse du mode, mais au ralenti, sinon on ne verrait rien.

kishot

Une planche de kishot : une carte électronique en six vues 3D, de dessus, de dessous, de trois quarts et de profil, sous un en-tête qui la décrit.

kishot transforme une carte KiCad en planches qu’on peut envoyer à quelqu’un : six vues 3D, le cuivre couche par couche, et sur chacune un en-tête qui dit quelle carte c’est. Pas d’interface, juste une commande, et elle sort la même image à chaque fois.

Langage
Python 3.9+, un seul fichier, sans dépendance
Il pilote
kicad-cli et ImageMagick
KiCad
versions 9 et 10
Licence
MIT
Ce qui a changé

kishot --diff compare la carte avec une ancienne version dans git. Le cuivre enlevé est en rouge, l’ajouté en vert, et chaque changement est entouré, sinon une petite piste passe inaperçue. Il sort aussi un GIF qui passe de l’une à l’autre en fondu.

Avant de commander

Si on lui demande, il sort aussi une nomenclature visuelle, les Gerbers redessinés par un autre outil que KiCad, la sérigraphie comme le fabricant va l’imprimer, et des PDF à l’échelle 1 pour poser les vrais composants sur la feuille.

Les pull requests

Une GitHub Action poste les planches des différences en commentaire d’une pull request, et met ce commentaire à jour à chaque push. Ça prend à peu près deux minutes et demie à chaque fois, surtout parce qu’il faut télécharger KiCad.

Le tour

kishot -s spin fait tourner la carte sur elle-même, à 20 images par seconde, dans un GIF pixelisé comme un jeu PS2.

Bouillon

La page de recherche de Bouillon, sur le mot « blue » : une grille de vignettes, réduites ici à des aplats de couleur.

Mon archive d’images, la plupart récupérées sur Are.na. Claude Haiku met des tags sur chaque image, et elle reçoit aussi un vecteur pour la recherche sémantique. Du coup, je la retrouve avec un mot, ou avec une idée qui s’en approche.

Serveur
FastAPI, SQLite et sqlite-vec
Recherche
par mots-clés, par le sens, ou les deux
Terminal
un client en Rust
Mac
une app native en Swift
À la demande

Le serveur ne tourne que quand je m’en sers. Une porte le démarre à la première requête et l’éteint après quinze minutes sans personne. Le processus fait 2 Go, donc autant qu’il dorme le reste du temps.

Dans le terminal

Le client en Rust affiche les images directement dans le terminal : de vraies images dans kitty, des demi-blocs ailleurs. Il a aussi un mode qui fait défiler Are.na une image après l’autre, et je garde ou je passe. Un peu comme Tinder, mais pour des images.

Sur le Mac

Pour l’app Mac, le modèle CLIP est converti en Core ML. Côté images, il donne presque exactement la même chose que l’original (un cosinus de 0,9997). Sur un M4, 5 880 vignettes passent en 177 secondes.

juice

L’énergie et la veille de mon portable, qui changent selon le wifi et le chargeur.

Le tableau de bord de juice dans un terminal : l’énergie du chargeur vers le système et la batterie, la courbe des deux dernières heures, et l’état de la batterie.

Un outil fait maison pour gérer l’énergie et la veille de mon portable. C’est un seul binaire qui fait trois trucs : un tableau de bord dans le terminal, un démon qui fait le vrai travail, et les commandes pour la barre et le bureau.

Langage
Rust : ratatui, wayland-client
Contexte
le réseau, le secteur ou la batterie
Inactivité
le protocole Wayland ext-idle-notify-v1
Depuis
octobre 2026
Les presets

J’écris une liste de presets, chacun avec ses conditions, et c’est le premier qui colle qui s’applique. Le fichier est relu dès qu’il change, pas besoin de réinstaller. Et pour qu’un wifi qui saute une seconde ne change pas tout, il faut deux relevés de suite avant de redescendre dans la liste.

Le ventilateur

En passant en profil équilibré, le ventilateur est descendu de 5 290 à 4 460 tours par minute, et le processeur de 80 à 67 °C. Si je coupe le boost, il plafonne à 2 GHz au lieu de 5,09. Les trucs lourds vont nettement moins vite, forcément.

À chaud

Les minuteries d’inactivité passent par un protocole Wayland, donc je peux changer les délais sans rien redémarrer.

Monolithe

Quatre écrans de Monolithe en noir et blanc, côte à côte : le démarrage, une dalle noire dans un anneau de repères ; la grille des apps ; Souffle, une colonne qui monte sous le mot « INHALE » ; une page de The Time Machine.

Mon propre firmware pour une liseuse à encre électronique, la Xteink X4 Pro. Il y a la liseuse CrossPoint, et par-dessus mes outils à moi : les tâches et l’agenda du jour, une saisie au clavier, un minuteur, un exercice de respiration. Le nom vient de 2001, l’Odyssée de l’espace : une dalle noire qu’on tient dans la main.

Langage
C++, avec PlatformIO
Puce
ESP32-S3, 8 Mo de PSRAM, 16 Mo de flash
Écran
encre électronique, 4,3 pouces, 800 × 480, noir et blanc
Base
un fork de CrossPoint Reader, licence MIT
Depuis
octobre 2026
Pourquoi un fork

CrossPoint s’occupe déjà du matériel, de la lecture, du Wi-Fi et du HTTPS. Par contre, le projet ne veut pas d’apps interactives ni de connexion active, donc mes ajouts n’y entreront jamais et le fork reste perso. Repartir du SDK tout nu, ça voulait dire tout réécrire et perdre la liseuse au passage.

Rien ne bouge

L’encre ne sait pas faire d’animation. Il y a du noir, du blanc, du gris en tramant, un rafraîchissement rapide qui laisse des fantômes, ou un lent qui prend 1,7 s. Le seul truc qui bouge en douceur sur l’appareil, c’est la lumière. Souffle la fait respirer : 5 s pour inspirer, 5 s pour expirer.

La place

Le firmware prend 90,9 % de sa partition de flash, et une seule image plein écran pèse 48 Ko. Les polices sont refaites pour le 1 bit : un pixel est noir s’il est couvert à moitié, et aucun texte ne fait moins de 12 px.

Le coupable

Le tas plantait un parcours sur deux, et c’était la faute de l’émulateur : son faux Wi-Fi écrivait dans de la mémoire déjà rendue. Je l’ai contourné pour l’émulateur seulement, et après, sept parcours complets sur sept sans un plantage.

Pas encore flashée

La liseuse n’était pas encore arrivée quand j’ai fait tout ça. Donc tout a été écrit et testé dans un émulateur qui fait tourner le vrai binaire, et les images de cette page viennent de là.

Stylite

Le TUI de Stylite dans un terminal, sur des tâches de démonstration : à gauche les vues et les domaines, à droite la vue Aujourd’hui, ses tâches rangées par domaine et par projet.

Mon gestionnaire de tâches, comme Things 3, sauf qu’il tourne chez moi. Un serveur, et quatre façons d’écrire dedans : un TUI, une app web sur le téléphone, une app Mac, et une ligne de commande pour les agents IA.

Serveur
Go et SQLite : une API REST, un WebSocket
Terminal
Rust, avec ratatui
Web
SvelteKit, installable, hors ligne
Dans git
depuis mai 2026
Hors ligne

L’app web garde toutes les données sur le téléphone. Quand j’écris quelque chose, ça s’affiche tout de suite, puis ça attend dans une file et ça part une requête à la fois quand le réseau revient. Une tâche créée hors ligne a un numéro provisoire, remplacé par le vrai à l’envoi.

Les mêmes vues des deux côtés

Les vues (aujourd’hui, à venir, le journal) sont calculées par le serveur, et recalculées par l’app web pour qu’elle marche hors ligne. Un test demande 22 vues aux deux, et il faut exactement les mêmes réponses.

Pour les agents

stylite-cli couvre toute l’API et sait se décrire tout seul : le catalogue de ses commandes en JSON, le schéma de chaque champ, et des codes de sortie stricts. Si une seule étape d’une écriture en lot rate, tout le lot est annulé.

Défaire

Chaque écriture est notée dans un journal. Si j’annule la suppression d’un projet, tout ce qu’il contenait revient.

spotify-terminal

spt dans un terminal, sur la page d’un artiste : ses titres les plus écoutés, ses albums, et la barre du lecteur en bas. Les pochettes sont réduites ici à quelques pavés de couleur.

spt, c’est un lecteur Spotify dans le terminal : la bibliothèque, la recherche, les artistes, les albums, et le son qui sort de l’ordi, sans l’app Spotify. Il n’est pas officiel, et il faut un compte Premium. Au départ, c’est un fork de spotify-tui, la version de Fusor.

Langage
Rust, licence MIT
Lecture
librespot, dans le même processus
Interface
du HTML et du CSS, compilés en vues de terminal
Depuis
octobre 2026
D’où il part

spotify-tui savait déjà lire, chercher et parcourir la bibliothèque. Par-dessus, en 82 commits, j’ai ajouté les pochettes, les pages d’artiste, les likes, la file d’attente, les paroles synchronisées, la radio, les podcasts, les touches de vim et un fichier de réglages. Depuis la version 0.2.0, ce n’est plus un fork.

Du HTML dans un terminal

Oui, du HTML dans un terminal. Les vues sont des gabarits HTML avec leur CSS, transformés en interface de terminal à la compilation, et branchés sur un état en Rust. Le thème est appliqué à la feuille de style au lancement, donc pour en changer, pas besoin de recompiler.

Les pochettes

Elles passent par le protocole graphique de kitty, avec des caractères Unicode qui leur réservent la place, du coup elles marchent aussi dans tmux. Chaque image a son propre identifiant, pour que deux lecteurs ouverts en même temps ne se marchent pas dessus.

Le souffle

J’avais un souffle dans le casque : PipeWire proposait d’abord un format 8 bits, maintenant spt garde celui de la carte son. La sortie audio se rouvre toute seule quand son flux meurt, et la musique baisse en fondu quand je mets pause.

Ce site

L’accueil de ce site : le personnage au milieu d’une gerbe de tours de verre cyan, et le menu à droite.

Le site sur lequel vous êtes, là, maintenant. C’est mon portfolio, rejoué dans le dashboard d’une PlayStation 2 : fond noir, tours de verre cyan, textes jaunes, cartes mémoire.

Interface
Vue 3, Vite et Pinia
3D
Three.js : le champ, les objets, la tête
Style
du CSS à la main, sans framework
Le son
les échantillons d’une vraie PS2
L’aquarium
un service d’écriture en Rust
Depuis
juillet 2026
Les tours

Sur la vraie console, il y a une tour de verre par jeu, et sa hauteur dépend du temps passé dessus. Ici, il y a une tour par porte de l’accueil, et sa hauteur dépend de ce qu’il y a à lire derrière.

Les objets

Les objets 3D de cette page et des fiches sont écrits en code, et ils partagent une seule scène qui passe d’une page à l’autre, parce qu’un navigateur ne tient qu’une quinzaine de contextes WebGL.

En texte

Tout le site existe aussi en version texte, en français, anglais, japonais, espagnol et chinois, pour les lecteurs d’écran (et les connexions pourries).

Les secrets

Il y a seize easter eggs à trouver. Le compteur du bandeau dit combien il en reste, mais jamais où chercher. Bon courage.

Contact

Le plus simple, c’est de m’envoyer un mail. Il n’y a ni formulaire ni robot au milieu, il arrive directement dans ma boîte et c’est moi qui l’ouvre.

Système

Accès accordé, mais aucun clavier branché. Branchez-le : il sera pris tout seul.

Les tours

Le dashboard d’une PlayStation 2 dessine une tour de verre pour chaque sauvegarde de la carte mémoire. Ici, il y a une tour par entrée du menu, et celle qui brille, c’est celle que vous survolez.

Les blocs

Les cubes violets qui dérivent, ce sont les blocs libres de la carte. Il en reste, donc le site n’est pas fini, et il ne le sera sans doute jamais.

L’ancien site

Avant ce site, marc-alexis.com en était un autre, en trois langues, avec un OS complet et des figurines à collectionner. Il est rangé dans une carte mémoire, quelque part sur le serveur.

Les modèles 3D

Le coffre, l’épave, la barque, l’axolotl et le marteau viennent de Sketchfab, sous licence Creative Commons : « Minecraft Chest » par Blender3D, « Fishing boat » par Pabooklas, « Minecraft boat » par vovash, « Minecraft Axolotl » par Marina Vildanova, « Toy Hammer » par Pedro Perim. Ils ont été réduits de 41 Mo à 344 Ko pour tenir ici. Le crabe, c’est Ferris : personnage de Karen Rustad Tölva, modèle 3D de RayMarch, dans le domaine public. Les deux sons du coffre viennent de Minecraft.

La tête

La tête de « À mon propos » part de FLAME 2023 Open, un modèle de tête du Max Planck Institute for Intelligent Systems (T. Li, T. Bolkart, M. J. Black, H. Li et J. Romero, SIGGRAPH Asia 2017), sous licence CC-BY-4.0. Il a été ajusté sur quatre photos de Marc-Alexis, puis réduit à 1 342 triangles.

Les logos

Sur la fiche Linux, le flocon de NixOS est redessiné en volume d’après le logo de Tim Cuthbertson pour le projet NixOS (CC BY 4.0), et le logo de Neovim d’après celui de Jason Long (CC BY 3.0).

Les couvertures

Les couvertures de « Les livres que je conseille » appartiennent à leurs éditeurs et à leurs illustrateurs. Elles sont montrées en petit, pour recommander les livres, rien de plus.

Les portraits

Les photos des auteurs, sur la page des livres ouverts, viennent de Wikimedia Commons, recadrées et réduites : Mihály Csíkszentmihályi par Ehirsh (domaine public), Hans Rosling par la Gapminder Foundation (CC BY 3.0), Derek Sivers par lui-même (CC BY-SA 4.0), Alain de Botton par Fronteiras do Pensamento (CC BY-SA 2.0), Austin Kleon par Larry D. Moore (CC BY 4.0), Anna Lembke par EthicsinSociety (CC BY 3.0), Kevin Kelly par Cmichel67 (CC BY-SA 4.0), Ken Wilber par le Kanzeon Zen Center (CC BY 2.0), Claude Lévi-Strauss par Bert Verhoeff pour le Nationaal Archief (CC0), Bill Perkins par le World Poker Tour (CC BY 3.0). Les versions recadrées des photos CC BY-SA restent sous la même licence.

Les logos des projets

Sur l’écran Projets, les logos des technos viennent de Simple Icons (CC0). Chacun reste la marque de son propriétaire, cité pour nommer l’outil ; celui de Rust est sous CC BY-SA 4.0 (Rust Foundation), celui de KiCad sous GPL 3.0 ou ultérieure, celui de Wayland sous licence MIT. La carte des planches de kishot est la RoyalBlue54L Feather de Lord’s Boards, sous licence CERN-OHL-P v2.

Les caractères chinois

Sur l’écran Chinois, les caractères en pointillés viennent de Make Me a Hanzi, de Shaunak Kishore, tirés des polices Arphic PL KaitiM GB et UKai d’Arphic Technology, sous Arphic Public License.

Le chien robot

Le Mini Pupper 2 de la fiche Kyber est le modèle 3D officiel de MangDang (dépôt mini_pupper_ros, paquet mini_pupper_description), sous licence Apache 2.0. Ses pièces ont été allégées, recolorées à la manière du site, et ses yeux ajoutés ; ses articulations sont les siennes.