À 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
- Déverrouiller mon téléphone d’un contact
- Partager ma vCard en collant ma main
- Ouvrir une URL, ce site par exemple
- Stocker un petit secret
- Mettre légèrement mal à l’aise en soirée
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 :
- Les actions entreprises par les lecteurs suite à la lecture de ce contenu
- Toute interprétation erronée du caractère fictionnel de ce récit
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
- Le LSD n’aide pas à courir, j’ai tenu malgré lui.
- L’effort raccourcit les effets : cinq heures au lieu des huit à douze annoncées. C’est le seul truc vraiment curieux de toute l’histoire.
- Ma perception ne valait plus rien, du coup c’est ma montre qui a fait le boulot que ma tête ne faisait plus.
- J’avais l’impression d’être poursuivi par ce que je voyais, et pour continuer à avancer, c’est redoutablement efficace.
- Je déteste toujours autant la course à pied, ça au moins ça n’a pas bougé.
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
- Vengeur
- Entièrement
- Gainé,
- Adversaire
- Nocturne
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.
- E-mail : contact@marc-alexis.com — Une question, un projet, une idée bizarre, tout passe par là.
- GitHub : github.com/marc-alexis-com — Le code de mes projets publics.
- CV : cv-marc-alexis-manso-peters.pdf — Une page, en PDF.
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.