blogy

Reader

Read the latest posts from blogy.

from linarphy

TL;DR : Je suis passé sur Ergo-L depuis octobre, et c’est vraiment cool.

Ma première relation avec le clavier

Dans mon enfance, j’ai été assez peu amené à utiliser un clavier. J’utilisais l’ordinateur familial pour jouer à Papyrus, Adibou ou les Sims deux heures par semaines. Je n’ai pas de souvenir précis de mon aisance sur le clavier, mais je suppose qu’elle était rudimentaire. Il me semble que j’associai les touches aux actions de chaque jeu, qui utilisait de toute façon principalement la souris, qui paraissait beaucoup plus pratique.

Pendant mon adolescence, l’ordinateur familial s’est arrêté de fonctionner, et je ne jouais plus. J’utilisais par contre l’ordinateur de mes parents pour aller sur youtube et internet en général (je ne me souviens plus de la durée, mais c’était ~ une fois par semaine). C'est là où j’ai développé ma frappe, avec une main, et les yeux rivés sur le clavier.

J’ai eu l’immense chance d’avoir accès à un ordinateur à 14 ans, un proche m’offrant alors son vieil ordinateur qu’il avait recyclé en y mettant edubuntu. J’y ai découvert Linux, et me suis engouffré dans le terrier de lapin qu’est le logiciel libre. Mais toujours la même frappe : une main, vision du clavier.

À un moment donné, j’apprends l’existence d’autres “layout”, et je croise parfois des discussions en parlant sur le web.

Apprentissage de l’AZERTY

C’est pendant la pandémie COVID-19, en tant qu’étudiant, que je me décide à tenter quelque chose. Je code beaucoup, pour le fun, et la lenteur de ma frappe m’embête. Je ne me pose pas la question d’apprendre une autre configuration, et commence directement à apprendre la frappe à deux mains “à l’aveugle”.

Pour ce faire, je décide de faire deux heures d’exercice par jour, sans jamais regarder mon clavier. C’est très frustrant. Après deux semaines, je ne regarde plus mon clavier, et la frappe à deux mains est automatique.

Apprentissage du Bépo

À force de croiser des utilisateurs du bépo dans la vie réel, et des discussions dessus sur internet, je décide de passer le cap. Adieu l’AZERTY, bonjours le bépo. Enfin, j’essaie. Une première tentative avec une semaine d’exercice (~ 1h par jour) s’arrête lorsque je dois partir sans mon PC, et à mon retour, j’ai la sensation de repartir de zéro. Je tente donc une nouvelle approche.

Dès que j’ai envie, je m’entraîne au bépo. Quelques minutes, parfois une heure, mais pas beaucoup plus. J’essaie de le voir comme un jeu. Après quelques mois, quand je sens que je trouve les touches bépo sans le vouloir, je tente une transition complète.

Découverte de l’Ergo-L

Le jour même de ma transition au bépo, je découvre Ergo-L… Et je vois déjà que modifier ma configuration vim pour le bépo est embêtant. J’hésite. J’ai beaucoup perdu en AZERTY, avec cet entraînement au bépo. Je me décide à revenir en AZERTY (pour pouvoir taper mes mots de passe et travailler sur vim), tout en m’entraînant à Ergo-L.

Je re-tente la méthode “2h par jour”, très frustrante, mais qui fonctionne un peu. Début octobre 2025, après deux semaines, je fais une transition complète.

J’effectue ma transition sans que ma frappe ergol soit fluide. D’une part, je suis pressé, d’autre part, je me dis que ça peut être une nouvelle forme d’apprentissage. Ma saisie est llllleennnnntteeee.

Et maintenant ?

J’ai beaucoup amélioré ma vitesse de frappe, même si j’ai un taux d’erreur très élevé. Ça me convient pour un usage quotidien, et j’ai une vitesse finale (en comptant mes corrections de fautes) comparable à mon ancienne vitesse en AZERTY.

Pour le code, c’est carrément énorme. La touche alt me change la vie. Je n’ai pas modifié ma configuration neovim du tout en passant d’AZERTY à Ergo-L, et, si c’est moins agréable, ça ne change pas grand-chose.

Si je veux améliorer ma frappe à présent, c’est en m’exerçant tous les jours sur des sites, pour diminuer les erreurs. Je pense que je vais m’y mettre dans quelque temps. J’ai acheté mon premier clavier ergonomique (le Quacken, bigup @ergonautes@eldritch.cafe), qui n’est pas encore arrivé est en cours d’acheminement. On verra bien ce que ça donnera.

Un seul problème : je ne peux plus taper le symbole °, et c’est parfois agaçant.

(ce post a été rédigé avec ergo-l)

 
Lire la suite...

from linarphy

I was trying to push a new git repo on another git server (git is peer-to-peer) to publish transparent open access data for my work. For the record, it was using Gitlab 😮‍💨.

Imagine my surprise (not) when I saw the message “Received disconnect from X.X.X.X port 22:2: Too many authentication failures”. Being a good pupil, all my SSH connections are protected with SSH key (except for one organization, but this will maybe be explained in another post). All my SSH keys expire (manually, as I delete them) every year, and this was the second time I used this SSH key.

I have two mirrors : one on my personal repo, one on the office repo. Two different SSH keys, of course, and the configuration worked for the first one… So, why should I get this 😧 ?

git push
Énumération des objets: 26, fait.
Décompte des objets: 100% (26/26), fait.
Compression par delta en utilisant jusqu'à 14 fils d'exécution
Compression des objets: 100% (23/23), fait.
Écriture des objets: 100% (26/26), 120.55 Kio | 15.07 Mio/s, fait.
Total 26 (delta 0), réutilisés 0 (delta 0), réutilisés du pack 0
remote: Checking connectivity: 26, done.
To git.linarphy.net:linarphy/step2angle.git
 * [new branch]      main -> main
La branche 'main' est paramétrée pour suivre la branche distante 'main' depuis 'origin'.
Received disconnect from X.X.X.X port 22:2: Too many authentication failures
Disconnected from X.X.X.X port 22
fatal: Impossible de lire le dépôt distant.

Veuillez vérifier que vous avez les droits d'accès
et que le dépôt existe.

That’s not good. So I try to ssh in the server, directly, with `ssh git@hostname -vvv', and… surprise ! It doesn’t look at the good key. I check my configuration, everything looks good… I re-check with the exact same command and configuration and… TADAAAA, it works now 🥳.

So, I try to git push again, and everything works again.

I don’t know what the root cause is, and I may never know 🤨. But there are multiple identifiable cause that increase the frequency of this type of issues.

First, OpenSSH client. It has a great history, one of the oldest SSH server and client, still there and doing great, implementing tons of stuff 🧓. Yet, it still forces people to create a .ssh folder in their $HOME directory without caring about .config which is a specification that has more than 20 years (for the 0.6 version). I was not born when the specification was starting to be crafted, and OpenSSH still does not care 😡.

Even Mozilla now (since one month) respect this specification.

Yes, you can force OpenSSH to use a custom config file with the -F option. But then, you have to work additional hours to adapt every software configuration that uses OpenSSH in the background to add this flag everywhere (when it is possible !).

Speaking about configuration file, its syntax is weird. I know how to read the doc, so it’s fine, but still.

But the strangest thing is its inability to select ONLY ONE key. When you add the nice -i /path/to/ssh/key argument, OpenSSH will still try others keys. I KNOW other keys won’t work. Stop trying everything you can to connect to the server. That is not sane default 🤬 ! If you don’t ask for any key, I understand, but if you ask specifically for one, why using other keys ?

And it’s worse than what you think: If there is a mistake in your configuration, OpenSSH will accept it and if a valid key still exists, the user won’t know the key specified in the configuration is bad. So when you will clean your devil ~/.ssh folder and delete «unused keys », the surprise of being locked out, without any SSH key to connect to your server, will not be nice. Don’t worry, even if you don’t delete any keys, adding too many keys will make OpenSSH take minutes to find the good one, and you will think that the server is slow 🕜.

Erratum: I just discovered the -o IdentitiesOnly=yes option, but the fact that it not the default when specifying -i /path/key is beyond my comprehension.

Let’s speak about the verbosity of the SSH client, too. I want to know, first, if everything go right, then, how my configuration file is used, then what packet I send and receive with their code. Right now, you can get the first and last information, but good luck understanding if OpenSSH does what it does because you wrote something or if this is default behavior.

The second factor is Gitlab connection. Sometimes it works, sometime not. And being self-hosted software is no excuse. Codeberg, with forgejo, does well better, and without the AI bullshit 💩 and without being a huge company. Gitlab has a lot of feature, that you will absolutely never use, and this clutters your entire screen, which makes every operation harder than it should.

 
Lire la suite...

from linarphy

L’incident

Il est tard, et je reçois deux mails d’OVH m’indiquant que Hetzner et CSIRI-MU se plaigne de scan d’IP de la part d’un de mes VPS.

Première hypothèse : l’email est un scam et ne provient pas d’OVH. Je vérifie la source du mail, ça a bien l’air de provenir de chez eux. Je regarde attentivement le contenu : pas de lien bizarre associé à un quelconque scam. Je mets l’hypothèse de côté et vérifie si le serveur incriminé m’appartient. C’est bien le cas. Premiers frissons. Je regarde ce serveur et m’aperçois que le port 443 d'admin0.linarphy.net (le serveur ayant effectué les opérations malveillantes) ne répond pas.

C’est confirmé, on a pénétré dans mon système. C’est bizarre, mais juste ce fait me met mal à l’aise, comme si on avait pénétré dans mon intimité. Beaucoup plus grave, admin0 est un composant essentiel de mon infrastructure. Par chance, admin1 réplique toutes les données, et ce backup n’est pas compromis. Heureusement, car ces serveurs hébergent mon DNS, mon LDAP et tout plein de trucs essentiels au fonctionnement des autres serveurs. J’en conclus directement que l’attaque n’est pas ciblée et a probablement été automatique, ou au moins semi-automatique. De toute façon, le pirate aurait mieux fait de rester discret et non de scanner des IP si cela avait été le cas. Me voici (un peu) rassuré.

La solution est simple : reset le serveur, mettre admin1 en tant que main dns et de créer une réplique sur admin0. admin1 et admin0 héberge FreeIPA. Je remarque tout de même que le port 443 d’admin1 ne répond pas non plus. Tant qu’à faire, autant essayer de comprendre ce qu’il s’est passé. Une chose est sûre : je ne vais pas beaucoup dormir cette nuit (si je dors).

La connexion à mon compte LDAP via clef privé géré par nsss fonctionne, mais je n’y suis plus sudoer. La configuration LDAP a donc changé. Je peux me connecter avec le mot de passe root qui ne semble pas avoir été modifié (quelle erreur). Je regarde les logs d’Apache (après tout, il ne répond pas), et je vois un restart à minuit. Bizarre. En tout cas, Apache dit qu’il écoute aux ports 443 et 80 en ce moment. J’en conclus que ma configuration Apache a été modifiée. Ça pue. Je peux initier un ticket Kerberos avec mon mdp admin : il n’a pas été modifié.

Je redémarre tout avec systemctl restart ipa et tout redevient comme avant. Si ça se trouve, la panne n’est pas liée à l’incident. Je me rends compte que ma méconnaissance des rouages interne de FreeIPA ne me permet pas de tracer correctement un coupable.

Je cherche dans le syslog, je cherche dans les bash_history, sans rien trouver, à part un restart du service httpd à minuit pile, des heures avant l’incident.

Paranoïa ?

Plus j’y regarde, plus les “preuves de hack” me paraissent faibles. La non-réponse du port 443 ? Largement possible qu’il soit dû à une erreur du côté de FreeIPA. Après tout, ce logiciel est très complexe et une malfonction peut arriver.

Je ne suis plus sudoer ? En fait, avais-je fait le setup qui me permet d’être sudoer dans les serveurs d’administration ? Après quelques recherches, non.

Qu’est-ce qui a été modifié ? Rien.

Pourtant, OVH m’a transmis des plaintes de scans d’IPs. Que s’est-il passé ? Je n’en sais rien.

J’envoie un mail de réponse à OVH en expliquant mes recherches, et le fait qu’aucune brèche n’est visible, en leur demandant s’ils avaient d’autres explications.

Je change toutes les clefs ssh, je change tous les mots de passes, et je m’arrête là.

Conclusion

Plusieurs mois après cet incident, j’en tire deux leçons :

  • ça ne méritait pas d’y passer une nuit blanche comme je l’ai fait. Je n’ai de toute façon pas les compétences en cybersécurité. Aujourd’hui encore, il est dur d’affirmer avec certitude si quelqu’un a tenté (ou tente) de pénétrer un de mes systèmes. Tout ce que je sais, c’est que je n’ai pas reçu de nouvelles plaintes (pour le moment !), et que mes systèmes sont sécurisés de la meilleure manière possible, d’après mes connaissances.
  • ça ne sert de paniquer (oui, c’était évident), et OVH s’en fout. Ils doivent envoyer ce genre de mail toutes les minutes et n’ont évidemment pas vu ma réponse.
 
Lire la suite...

from linarphy

Je lisais ce vieil article sur systemd et la structure des débats en ligne le concernant. On y lit, en très résumé, que les défenseurs et les détracteurs de systemd n'ont pas la bonne foi suffisante pour débattre de ce sujet. Et cela m'a d'abord fait tiquer, parce qu'on confond ici les prises de positions avec les gens qui les donnent. Puis-je me suis rappelé des débats en lignes auxquels je participe (par chance, assez peu tout de même).

Il ne faut jamais confondre ce qui a été dit et qui le dit. J'ai souvent tendance à émettre un discours simple au départ d'un débat, quelle que soit sa complexité. On pourrait alors croire que j'ai un avis tranché et non informé. Parfois, c'est le cas, mais parfois, non. J'ajoute juste une brique à un inventaire déjà existant d'argument, généralement déjà disponible sur cette même discussion.

Il y a un discours consensuel sur “les minorités qui parlent fort”. Mais dans les faits, ce n'est pas la seule grille d'analyse. Les discours sont certes sûrement plus tranchés en ligne, mais ce n'est pas plus le fait des individus que celui de la structure des échanges.

Engager un débat avec une personne qu'on ne connaît pas est complexe. Cela nécessite de comprendre ses définitions et sa logique (s'il y en a 🫠). Sur internet, c'est possiblement avec des centaines de personnes qu'un débat a lieu. S'attendre à ce que tout se passe comme lors de discussion orale est irrationnel.

Entre le post qui n'emploie pas le bon mot, celui qui développe mal un bon argument, ou celui qui est rempli d'implicites dont l'interprétation varie pour chaque lecteur, le débat d'idée est complexe. Ce n'est pas forcément négatif, les combats sur terminaux interposés sont aussi l'occasion de former des alliances, des amitiés. L'écoute des autres sur internet est étonnamment bonne, dans la plupart des cas. Ce qui rappelle que l'humain est un animal empathique qui a tendance à se soucier des autres, malgré ce que l'on croit. Si les oppresseurs ont plus la parole, c’est aussi le cas dans la vraie vie.

Il est trop facile de condamner des “internautes moyen” trop bêtes pour avoir un avis constructif en ligne. Dans la réalité, on en fait tous partie, et c'est normal. Je me méfierai toujours beaucoup plus d'un discours qui se clame nuancé en appelant à l'apaisement via des solutions individuelles que d'un autre qui se prend pour ce qu'il est : un bruit de plus dans l'océan d'internet.

Car on lit des discours de beaucoup d'individus différents. Cependant, on les aperçoit surtout lorsque ielles crient fort. Mais presque tout le monde crie fort au moins une fois dans sa vie. En soi, rien de grave. Tant qu'on comprend qu'on lit la transcription de l'avis d'une personne inconnue, et non son avis directement.

 
Lire la suite...

from linarphy

I always had this project to have THE 🪄 perfect tagging system, that will let hierarchical directories and files explode 💥 in their stupidity. The Thing that will allow anyone to search for a study on penguins made less than 2 years ago and published in any open science libraries that I read about between two and one month. The kind of thing everyone dream about.

I first tried to implement a tagging 🏷 system as my first rust project (which didn't go very far, I admit). It showed me how hard it is to set up metadata, you have to define a grammar 🗂, that determine what data can have a metadata. Then I tried to document it, defining a set of rule to create such a system. First, by describing two concepts: tag, and relationship.

I quickly realized that you can implement boolean logic here, with set and sub-set. So I had: tags, relationships and operations, at the end. The missing piece was a taxonomy.

Then I tried to model simple system, and failed to determine which grammar would describe the best what is a resource, even what is a location of a resource (because then, you need a protocol, an authority, and at this point, you understand you just need to follow URI format, but you want to go beyond that, so you try to model authority, etc.).

Then I discovered it 🤩. The name of what I was thinking of. It already exists. Made by smart (weird?) people: ontology. Seems hard, but fun (at least for me, at first glance !). I'll try to experiment with that in a (hopefully) near future. I always try too much to go fully abstract/conceptual, which can be a curse. It's seem cool for this at least.

Now the trap to avoid is redefining the wheel, I hope think all these smart people already defined norm to follow. Have to find (and understand !) them now.

The more I go into this rabbit hole 🕳, the more I feel like it take a long time to get it done right. If I want to tag a document (let's say a scientific paper 📕), I have to define what metadata I CAN add to this “type” of document (and then, is “type” a metadata ?).

I have to install protégé (to edit OWL and/or RDF files) to define a knowledge graph stored in a Neo4j/GraphDB database. Maybe I'll post on this kind of thing in a (hopefully 😅) near future.

At least I know where I am headed now 🫡 !

 
Read more...