Planet Grep

Planet'ing Belgian FLOSS people

Planet Grep is maintained by Wouter Verhelst. All times are in UTC.

May 21, 2022

At work, as with many other companies, we're actively investing in new platforms, including container platforms and public cloud. We use Kubernetes based container platforms both on-premise and in the cloud, but are also very adamant that the container platforms should only be used for application workload that is correctly designed for cloud-native deployments: we do not want to see vendors packaging full operating systems in a container and then shouting they are now container-ready.

Sadly, we notice more and more vendors abusing containerization to wrap their products in and selling it as 'cloud-ready' or 'container-ready'. For many vendors, containers allow them to bundle everything as if it were an appliance, but without calling it an appliance - in our organization, we have specific requirements on appliances to make sure they aren't just pre-build systems that lack the integration, security, maintainability and supportability capabilities that we would expect from an appliance.

Even developers are occasionally tempted to enlarge container images with a whole slew of middleware and other services, making it more monolithic solutions than micro-services, just running inside a container because they can. I don't feel that this evolution is beneficial (or at least not yet), because the maintainability and supportability of these images can be very troublesome.

This evolution is similar to the initial infrastructure-as-a-service offerings, where the focus was on virtual machines: you get a platform on top of which your virtual machines run, but you remain responsible for the virtual machine and its content. But unlike virtual machines, where many organizations have standardized management and support services deployed for, containers are often shielded away or ignored. But the same requirements should be applied to containers just as to virtual machines.

Let me highlight a few of these, based on my Process view of infrastructure.

Cost and licensing

Be it on a virtual machine or in a container, the costs and licensing of the products involved must be accounted for. For virtual machines, this is often done through license management tooling that facilitates tracking of software deployments and consumption. These tools often use agents running on the virtual machines (and a few run at the hypervisor level so no in-VM agents are needed).

Most software products also use licensing metrics that are tailored to (virtual) hardware (like processors) or deployments (aka nodes, i.e. a per-operating-system count). Software vendors often have the right to audit software usage, to make sure companies do not abuse their terms and conditions.

Now let's tailor that to a container environment, where platforms like Kubernetes can dynamically scale up the number of deployments based on the needs. Unlike more static virtual machine-based deployments, we now have a more dynamic environment. How do you measure software usage here? Running software license agents inside containers isn't a good practice. Instead, we should do license scanning in the images up-front, and tag resources accordingly. But not many license management tooling is already container-aware, let alone aligned with a different way of working.

But "our software license management tooling is not container-ready yet" is not an adequate answer to software license audits, nor will the people in the organization that are responsible for license management be happy with such situations.

Product lifecycle

Next to the licensing part, companies also want to track which software versions are being used: not just for vulnerability management purposes, but also to make sure the software remains supported and fit for purpose.

On virtual machines, regular software scanning and inventory setup can be done to report on the software usage. And while on container environments this can be easily done at the image level (which software and versions are available in which containers) this often provides a pre-deployment view, and doesn't tell us if a certain container is being used or not, nor if additional deployments have been triggered since the container is launched.

Again, deploying in-container scanning capabilities seems to be contra-productive here. Having an end-to-end solution that detects and registers software titles and products based on the container images, and then provides insights into runtime deployments (and history) seems to be a better match.

Authorization management (and access control)

When support teams need to gain access to the runtime environment (be it for incident handling, problem management, or other operational tasks) most companies will already have a somewhat finer-grained authorization system in place: you don't want to grant full system administrator rights if they aren't needed.

For containers, this is often not that easy to accomplish: the design of container platforms is tailored to situations where you don't want to standardize on in-container access: runtimes are ephemeral, and support is handled through logging and metric, with adaptation to the container images and rolling out new versions. If containers are starting to get used for more classical workloads, authorization management will become a more active field to work out.

Consider a database management system within the container alongside the vendor software. Managing this database might become a nightmare, especially if it is only locally accessible (within the container or pod). And before you yell how horrible such a setup would be for a container platform... yes, but it is still a reality for some.


Auditing is a core part of any security strategy, logging who did what, when, from where, on what, etc. For classical environments, audit logging, reporting and analysis are based upon static environment details: IP addresses, usernames, process names, etc.

In a container environment, especially when using container orchestration, these classical details are not as useful. Sure, they will point to the container platform, but IP addresses are often shared or dynamically assigned. Usernames are dynamically generated or are pooled resources. Process identifiers are not unique either.

Auditing for container platforms needs to consider the container-specific details, like namespaces. But that means that all the components involved in the auditing processes (including the analysis frameworks, AI models, etc.) need to be aware of these new information types.

In the case of monolithic container usage, this can become troublesome as the in-container logging often has no knowledge of the container-specific nature, which can cause problems when trying to correlate information.


I only touched upon a few processes here. Areas such as quality assurance and vulnerability management are also challenges for instance, as is data governance. None of the mentioned processes are impossible to solve, but require new approaches and supporting services, which make the total cost of ownership of these environments higher than your business or management might expect.

The rise of monolithic container usage is something to carefully consider. In the company I work for, we are strongly against this evolution as the enablers we would need to put in place are not there yet, and would require significant investments. It is much more beneficial to stick to container platforms for the more cloud-native setups, and even in those situations dealing with ISV products can be more challenging than when it is only for internally developed products.

Feedback? Comments? Don't hesitate to drop me an email, or join the discussion on Twitter.

May 20, 2022

I have a new laptop. The new one is a Dell Latitude 5521, whereas the old one was a Dell Latitude 5590.

As both the old and the new laptops are owned by the people who pay my paycheck, I'm supposed to copy all my data off the old laptop and then return it to the IT department.

A simple way of doing this (and what I'd usually use) is to just rsync the home directory (and other relevant locations) to the new machine. However, for various reasons I didn't want to do that this time around; for one, my home directory on the old laptop is a bit of a mess, and a new laptop is an ideal moment in time to clean that up. If I were to just rsync over the new home directory, then, well.

So instead, I'm creating a tar ball. The first attempt was quite slow:

tar cvpzf wouter@new-laptop:old-laptop.tar.gz /home /var /etc

The problem here is that the default compression algorithm, gzip, is quite slow, especially if you use the default non-parallel implementation.

So we tried something else:

tar cvpf wouter@new-laptop:old-laptop.tar.gz -Ipigz /home /var /etc

Better, but not quite great yet. The old laptop now has bursts of maxing out CPU, but it doesn't even come close to maxing out the gigabit network cable between the two.

Tar can compress to the LZ4 algorithm. That algorithm doesn't compress very well, but it's the best algorithm if "speed" is the most important consideration. So I could do that:

tar cvpf wouter@new-laptop:old-laptop.tar.gz -Ilz4 /home /var /etc

The trouble with that, however, is that the tarball will then be quite big.

So why not use the CPU power of the new laptop?

tar cvpf - /home /var /etc | ssh new-laptop "pigz > old-laptop.tar.gz"

Yeah, that's much faster. Except, now the network speed becomes the limiting factor. We can do better.

tar cvpf - -Ilz4 /home /var /etc | ssh new-laptop "lz4 -d | pigz > old-laptop.tar.gz"

This uses about 70% of the link speed, just over one core on the old laptop, and 60% of CPU time on the new laptop.

After also adding a bit of --exclude="*cache*", to avoid files we don't care about, things go quite quickly now: somewhere between 200 and 250G (uncompressed) was transferred into a 74G file, in 20 minutes. My first attempt hadn't even done 10G after an hour!

I published the following diary on “A ‘Zip Bomb’ to Bypass Security Controls & Sandboxes“:

Yesterday, I analyzed a malicious archive for a customer. It was delivered to the mailbox of a user who, hopefully, was security-aware and reported it. The payload passed through the different security layers based on big players on the market!

The file is a zip archive (SHA256:97f205b8b000922006c32c9f805206c752b0a7d6280b6bcfe8b60d52f3a1bb5f) and has a score of 6/58 on VT. The archive contains an ISO file that, once mounted, discloses a classic PE file. But let’s have a look at the file… [Read more]

The post [SANS ISC] A ‘Zip Bomb’ to Bypass Security Controls & Sandboxes appeared first on /dev/random.

May 19, 2022

Lorsque j’ai signé pour la publication de Printeurs, mon éditeur m’a fait savoir qu’il attendait de la part des auteurs un certain investissement dans la promotion de leurs livres. J’ai demandé ce qu’il entendait par là et il m’a parlé de participer à des salons, des séances de dédicaces, ce genre de choses. Salons qui furent parmi les premières victimes du COVID en 2020 et 2021.

En 2022, il est temps de rattraper le temps perdu et d’honorer ma promesse. Je serai donc présent du vendredi 20 mai après-midi jusque dimanche 22 mai après-midi aux Imaginales à Épinal, la plus célèbre foire aux boudins de l’imaginaire.

Je n’ai aucune idée de ce que je suis censé faire.

Si j’ai très souvent entendu parler des Imaginales, je n’ai aucune idée de à quoi ressemble ce genre d’événements ni ce qu’on peut y attendre d’un auteur. C’est une nouvelle expérience pour moi et j’en suis assez curieux.

Si vous êtes dans le coin, n’hésitez pas à venir faire un petit coucou et me poser des questions sur le livre qui va sortir cette année. Cherchez une machine à écrire coincée entre une pile de « Printeurs », mon roman cyberpunk, et une pile de « Aristide, le lapin cosmonaute », mon livre pour enfants dont il ne reste qu’une poignée d’exemplaires. Le type derrière le machine qui fait « clac clac clac ding », c’est moi ! Ne vous sentez pas obligé d’acheter un bouquin. Quoi ? Mon éditeur (le type derrière moi, avec le fouet dans la main et un symbole € à la place des pupilles) me dit que si, c’est obligatoire.

Pratiquement, je serai au stand PVH édition, dans une petite tente blanche face à la fontaine au milieu du parc le samedi entre 11h et 19h et, à confirmer, le dimanche matin au même endroit, à côté d’une démonstration de jeu vidéo et d’une imprimante 3D.

J’avoue avoir longuement hésité à poster ce message, mais je me suis dit que si certains d’entre vous sont dans le coin, ce serait dommage de se rater. C’est toujours un plaisir pour moi de rencontrer des lecteurs de mes livres ou de mon blog. Certains d’entre vous me suivent et me soutiennent depuis près de 15 ans et il y a dans la rencontre en chair et en os, même très brève, quelque chose que des dizaines d’emails ne pourront jamais apporter.

Pour ceux qui ne seront pas à Épinal, ce n’est, je l’espère, que partie remise (entre nous, j’ai le secret espoir de pouvoir proposer une conférence aux Utopiales à Nantes, ce qui me donnerait une bonne excuse pour m’y rendre).

Recevez les billets par mail ou par RSS. Max 2 billets par semaine, rien d’autre. Adresse email jamais partagée et définitivement effacée lors du désabonnement. Dernier livre paru : Printeurs, thriller cyberpunk. Pour soutenir l’auteur, lisez, offrez et partagez des livres.

Ce texte est publié sous la licence CC-By BE.

May 17, 2022

I published the following diary on “Use Your Browser Internal Password Vault… or Not?“:

Passwords… a so hot topic! Recently big players (Microsoft, Apple & Google) announced that they would like to suppress (or, at least, reduce) the use of classic passwords. In the meantime, they remain the most common way to authenticate users against many online services. Modern Browsers offer lightweight password management tools (“vaults”) that help users to save their passwords in a central repository. So they don’t have to remember them, and they follow the golden rule that we, infosec people, are recommending for a long time: to not share passwords across services… [Read more]

The post [SANS ISC] Use Your Browser Internal Password Vault… or Not? appeared first on /dev/random.

May 15, 2022

De bedoeling van Finland en Zweden die lid worden van het huidige NATO mag niet zijn dat we meer NATO krijgen. Maar wel dat we een groter EU leger verkrijgen.

Alleen een goed EU leger zal in de toekomst een buurland zoals Rusland koest en kalm houden. De NATO zal dat niet doen. In tegendeel, het zal Rusland onrustig maken. Want dat speelt in NATO’s kaarten: een grootschalig conflict op het grondgebied van de EU met Rusland is in het grootste belang van de NATO om te blijven bestaan als organisatie.

M.a.w. moeten wij Europeanen heel erg veel investeren in onze eigen defensie. We moeten dit niet meer overlaten aan de VS. We moeten dit financieel én operationeel in eigen handel nemen.

We moeten bereid zijn en klaar staat om agressie van bijvoorbeeld Rusland te kunnen afslaan. Zelfs te bestraffen. Dat wil dus zeggen dat ook wij nucleaire wapens nodig hebben. In EU handen. Inzetbaar. Met een strategisch EU commando dat het middel ook effectief kan en vooral zal inzetten in geval van bepaalde scenarios.

Maar vooral moeten we investeren in diplomatie en realisme, realpolitik, met Rusland. Aan de hand van hun bezorgdheden, en die van ons.

Oekraïne was een bufferstaat. Dat werkte goed. Ik zou graag willen dat het dat zou blijven en zou zijn. Terwijl het graan produceert. Terwijl het groeit. Terwijl het eventueel over een paar decennium onderdeel van de EU wordt.

Maar zouden we niet eerst de Balkan eens eindelijk na zo’n godverdomme 20 jaar lid maken van de EU?! Kosovaren bijvoorbeeld kunnen nog steeds niet zonder reis visum naar de EU komen. Hoewel we daar de grootste NAVO-basis van West-Europa hebben (KFOR) staan. We praten hier nu over Oekraïne dat morgen lid van de EU zou kunnen worden. Terwijl de gehele Balkan-regio na haar oorlogen van de jaren negentig nog steeds, in 2022, niet geïntegreerd is.

 Two books about The Witcher and eentje over onze maatschappij.


I never played The Witcher game, but I did see the TV-series' first season in the months before Covid-19. The books are about the same characters, Geralt, Ciri, Yennefer and the others, but the story details differ from the TV-series. I saw the second season before I read any of the books.

Some dialogues are identical in both books and TV. And yes, the books also mix time periods! Anyway, so far these books are entertaining and I will definitely read more (I got eight, which is all of them I think).

While looking for wine in Antwerp I came across a 'Books & Wine' store. I did not find the wine I was looking for so I bought this book.

Bart Verhoeven is een millennial (een dertiger vandaag) en geeft zijn kijk op onze maatschappij. Hij slaat met momenten de nagel op de kop en het was leuk om typische Gen X observaties te lezen, maar dan geschreven door een snotneus. Het boek mocht ook 250blz langer zijn.

Hier en daar had ik wel mijn bedenkingen, zo kon ik me niet identificeren met de 'typische mens' in het begin van het boek. Ik laat immers mijn gsm achter als ik de stad in ga (het is rustgevend om offline te zijn in First life) en heb bijna nooit een smartphone bij.

May 14, 2022

An emotional book about shame, a historical book about Constantinople and an interesting take on prehistory (and society).


Three book covers

Brene Brown has a world famous Ted talk, though I must admit I didn't really understand it back in 2010. But when a beautiful South American lady gives you a book, then you read it. I read this in the summer of 2019 I think, before Covid-19.

This book about vulnerability, about shame, gave me a lot of insight in human behaviour, including my own. I did not realise how important shame was in live. Thank you Brown for writing this.


Lost to the West was upvoted on Hackernews as an interesting read. I was not disappointed. The book is about the East Roman Empire, on which we did not spend much time in school. We studied Egypt, Greece and Rome in detail, but only the Western part of Rome until the split in East and West Roman Empires. School only mentioned that the Eastern Empire lasted for 11 centuries, but that was it.

Some people may find this book with 1100 year history of emperors boring, there is a lot of repetition, but the message is intriguing. Constantinople, now Istanbul, and sometimes called Byzantium, really did shape Western Europe. This empire is at least as important as the Greeks and the (West)Romans to the current society in Europe.

The Sapiens book has been recommended to me by several people. I like prehistory a lot, it's my favorite time period. The book is interesting, and really easy to read, but is it science? I don't know. It's a good book though!


May 11, 2022

Le concept même de logiciel n’est pas évident. Comme le rappelait Marion Créhange, la première titulaire d’un doctorat en informatique en France, la manière d’influencer le comportement des premiers ordinateurs était de changer le branchement des câbles. Un programme était littéralement un plan de câblage qui nécessitait de s’arracher les mains sur des fils.

Petit à petit, les premiers informaticiens ont amélioré la technologie. Ils ont créé des ordinateurs « programmables » qui pouvaient être modifiés si on leur fournissait des programmes au format binaire, généralement des trous sur des cartes en carton qui étaient insérées dans un ordre précis. Il fallait bien évidemment comprendre exactement comment fonctionnait le processeur pour programmer la machine.

Les processeurs ont ensuite été améliorés pour comprendre des instructions simples, appelées « assembleur ». Les informaticiens pouvaient réfléchir avec ce langage qui donnait des instructions directes au processeur. Cependant, ils utilisaient d’autres formalismes qu’ils appelèrent « langage de programmation ». Les programmes étaient écrits sur papier dans ce langage puis, grâce à des tableaux, traduits en assembleur.

Vint alors l’idée de concevoir un programme qui effectuerait cette traduction. Le premier de ces programmes fut appelé « Traducteur de formules », « Formula Translator », abrégé en « FORTRAN ». Les traducteurs de formules furent rapidement renommés « compilateurs ». Avec un compilateur, il n’était plus nécessaire de comprendre ce que faisait le processeur. Il devenait possible de créer un programme dans un langage dit « de haut niveau » et de le donner à la machine.

Il faut cependant insister sur le fait qu’à l’époque, chaque ordinateur vient avec son propre système logiciel qui est extrêmement complexe et particulier. Faire tourner un programme requiert d’apprendre l’ordinateur en question. Faire tourner le même programme sur plusieurs ordinateurs différents n’est même pas envisagé.

Vu le prix élevé d’un ordinateur, comparables à celui d’une luxueuse villa, ceux-ci sont rares et partagés entre des dizaines d’utilisateurs, le plus souvent au sein des universités. L’un des gros problèmes informatiques de l’époque est de rentabiliser l’ordinateur. Il est possible d’interagir directement avec un ordinateur à travers un télétype : un gros clavier relié à un système électrique avec une bande de papier fournissant les résultats. Le problème du télétype c’est que lorsque l’utilisateur lit les résultats et réfléchit, l’ordinateur attend sans rien faire. Un peu comme si vous achetiez une voiture à 50.000€ pour la laisser 95% du temps dans son garage (ce qui est le cas, soi dit en passant).

Pour cette raison, l’interaction directe est découragée au profit des « batch » de cartes perforées. Le programmeur créé des cartes perforées contenant toutes les instructions qu’il veut effectuer (son « programme »), les donne dans une boîte au centre de calcul qui les insère dans l’ordinateur lorsque celui-ci est inoccupé. Le résultat est imprimé est envoyé au programmeur, parfois le lendemain ou le surlendemain.

Apparait l’idée de permettre de connecter plusieurs télétypes à un ordinateur pour donner une apparence d’interactivité tout en faisant en sorte que l’ordinateur traite séquentiellement les requêtes. Un projet est mis sur pieds pour faire de ce rêve une réalité : Multics. Multics est un projet à gros budget qui fait se collaborer une grande entreprise, General Electrics, une université, le MIT, et un laboratoire de recherche dépendant d’AT&T, le Bell Labs.

Multics possède les bons programmeurs et les bonnes idées. Mais une collaboration à une telle échelle nécessite beaucoup de managers, de politiciens, d’administratif, de paperasse. Bref, au bout de 5 ans, le projet est finalement considéré comme un échec. Les managers et les administrateurs vont voir ailleurs.

La première grande collaboration

Sans s’en rendre compte tout de suite, le défunt Multics laisse désœuvrés quelques programmeurs. Parmi eux, Ken Thompson vient d’avoir un enfant. L’anecdote est importante, car son épouse lui annonce partir un mois avec le bébé pour le présenter à sa famille, qui vit de l’autre côté du pays. Thompson se retrouve quatre semaines tout seul et décide de profiter de ce temps pour mettre en place une version simplifiée de Multics qu’il a en tête. Par dérision, il l’appelle Unics. Qui deviendra Unix. Au départ écrit en assembleur, il inventera le langage B qui sera utilisé par son pote Ritchie pour inventer le langage C avec lequel sera réécrit Unix en 1973.

Thompson et Ritchie sont également les premiers prototypes des geeks de l’informatique : barbe mal entretenu, cheveux en bataille, t-shirt trop large (à une époque où même la jeunesse rebelle n’imagine pas s’afficher autrement qu’en vestes de cuir cintrées), séances de programmation jusqu’à l’aube, arrivées au laboratoire vers 13h du matin, etc.

Dans ses réflexions, Thompson n’a qu’un mot à la bouche : « simplicité ». C’est d’ailleurs lui qui va pousser Ritchie à ce que le langage « C » s’appelle ainsi. Une lettre, c’est simple, efficace. Cette idée de simplicité sous-tend toute l’architecture d’Unix : plutôt que de faire un énorme système hyper complexe qui fait tout, on va faire des petits programmes et leur permettre de s’utiliser l’un l’autre. L’idée est révolutionnaire : un programme peut utiliser un autre pour obtenir une fonctionnalité. Arrive même l’idée du « pipe » qui permet à l’utilisateur de construire ses propres chaines de programmes. Cela semble évident aujourd’hui, mais c’est un progrès énorme à une époque où les concepteurs de systèmes d’exploitation tentent de faire un énorme programme capable de tout faire en même temps. Cette simplicité est d’ailleurs encore aujourd’hui ce qui fait la puissance des systèmes inspirés d’Unix. C’est également ce qui va permettre une vague de collaboration sans précédent : chaque individu peut désormais créer un petit outil qui va accroitre exponentiellement les capacités du système global.

Ritchie et Thompson présentent le résultat de leur travail lors d’une conférence en 1973. À la même époque vient justement d’apparaitre le concept non pas de connecter des ordinateurs directement entre eux, ce qui existait déjà, mais de leur permettre de servir de relais. Deux ordinateurs peuvent désormais se parler sans être connectés directement. Cela dessine un réseau, appelé ARPANET et qui deviendra INTERNET, l’interconnexion des réseaux.

Certains historiens estiment qu’environ la moitié des personnes connectées à ARPANET à l’époque était dans la salle lors de la présentation d’Unix.

Le concept est tout de suite un véritable succès.

Une chose importante est de savoir que le Bell Labs, où a été inventé Unix, faisait partie d’AT&T. Et qu’AT&T était, à ce moment-là, sous le coup d’un procès antitrust et n’avait pas le droit de faire autre chose que de vendre de l’équipement téléphonique. L’état américain voyait d’un très mauvais œil qu’une entreprise privée puisse devenir trop puissante. Dès que c’était le cas, dès qu’une position de monopole se dessinait, l’état intervenait rapidement.

AT&T commercialisait des lignes téléphoniques. L’objectif du Bell Labs était de développer des technologies qui nécessitaient l’utilisation de lignes téléphoniques afin d’en encourager l’usage. Mais AT&T ne cherchait pas à commercialiser directement ces technologies. Le procès antitrust rendait cela beaucoup trop risqué.

Pas du tout préoccupée par l’aspect mercantile, l’équipe UNIX se met à collaborer avec les universités, les chercheurs de tout bord. À l’université de Berkeley, tout particulièrement, on se met à améliorer les fonctionnalités. On s’échange du code source, des astuces. On se connecte directement aux ordinateurs de l’un et l’autre pour comprendre les problèmes. Bref, on collabore sans réellement réfléchir à l’aspect financier.

En Australie, le professeur John Lions enseigne Unix à ses étudiants en leur donnant… l’entièreté du code source à lire. Code source qu’il commente abondamment. Son syllabus fait rapidement le tour du monde comme un outil indispensable, le tout avec la bénédiction de Ken Thompson.

Petit à petit, Unix prend de l’importance et, chez AT&T, les juristes commencent un peu à se dire qu’il y’aurait des sous à se faire. La marque UNIX est déposée. Qu’à cela ne tienne, le « UNIX USER GROUP » est renommé « Usenix ». On demande à Ritchie et Thompson de ne plus partager leur travail. Qu’à cela ne tienne, celui-ci « oublie » malencontreusement des sacs remplis de bandes magnétiques dans un parc où, justement, se promenait un ami de Berkeley.

Ça vous donne un peu l’idée du niveau de collaboration et d’esprit frondeur qui anime l’ensemble. Ils ont peut-être des barbes et des t-shirts larges. Ils n’en restent pas moins intelligents et frondeurs. Ce sont des « hackers », le terme qu’ils se donnent et qui est encore utilisé aujourd’hui.

La première confiscation

En 1980, un changement politique se fait en occident avec l’élection de Margaret Thatcher au Royaume-Uni et de Ronald Reagan aux États-Unis. Leur doctrine pourrait se résumer en « faire passer les intérêts des entreprises avant ceux des individus ». La recherche, la collaboration, le partage et l’empathie sont devenus des obstacles sur la route de la recherche de profit. Plusieurs grandes mesures vont voir le jour et avoir une importance extrêmement importante, tant sur l’industrie du logiciel que sur notre avenir.

Le terme « propriété intellectuelle », un concept inventé en 1967 et jusque là à peu près ignoré, va devenir une stratégie essentielle des entreprises pour faire du profit. Historiquement, le concept de propriété permet d’asseoir le droit de jouir d’un bien sans se le faire enlever. Mais comment peut-on « voler » une propriété intellectuelle ? Cela semble absurde, mais c’est pourtant très simple : il suffit de convaincre la population que tout concept, toute œuvre possède un propriétaire et que le simple fait d’en jouir ou de l’utiliser est une atteinte aux intérêts économiques de l’auteur. Historiquement, les brevets offraient aux inventeurs un monopole limité dans le temps sur une invention en échange du fait que cette invention deviendrait publique une fois le brevet expiré. Bien que luttant contre les monopoles, l’état savait en offrir un temporaire en échange d’un bénéfice futur pour la société. L’idéologie du profit avant tout permet d’écarter complètement cette composante de l’équation. Le terme « propriété intellectuelle » permet d’étendre les monopoles temporaires, tant en termes de temporalité que de droits. Le propriétaire de la propriété intellectuelle ne doit plus rien à la société qui n’a plus qu’une fonction : préserver ses profits bien mérités.

Grâce à près de trente années de campagnes intensives, le concept de propriété intellectuelle est tellement ancré dans les mœurs que les écoles n’osent plus faire chanter leurs enfants sans s’assurer de payer des droits auprès d’un organisme quelconque qui, bien évidemment, ne demande que ça. La propriété intellectuelle est, intellectuellement, une escroquerie. Elle sonne également le glas de la collaboration et des grands progrès académiques. Même les universités, aujourd’hui, cherchent à préserver leurs propriétés intellectuelles. Par réflexe et en dépit de leur mission première.

Les concepts de collaboration et de bien-commun sont eux immolés sur l’autel de l’anticommunisme. Faire du profit à tout prix devient un devoir patriotique pour lutter contre le communisme. Cela a tellement bien fonctionné que malgré l’écroulement total du communisme, le concept du bien commun est rayé du vocabulaire. Plus de 30 ans après la chute du mur de Berlin, les gouvernements et les institutions publiques comme les universités doivent encore justifier leurs choix et leurs investissements en termes de rentabilités et de profits futurs.

Cette évolution des mentalités se fait en parallèle à la complexification du concept de logiciel. Graduellement, le logiciel est passé d’une série d’instructions à un véritable travail, une véritable œuvre. Il peut logiquement être commercialisé. La commercialisation d’un logiciel se fait via une innovation légale : la licence. La licence est un contrat entre le fournisseur du logiciel et l’utilisateur. Le fournisseur du logiciel impose ses conditions et vous devez les accepter pour utiliser le logiciel. Grâce à la propriété intellectuelle, le logiciel reste la propriété du fournisseur. On n’achète plus un bien, on achète le droit de l’utiliser dans un cadre strictement défini.

Notons que cette innovation commerciale découle en droite ligne de l’importance morale accordée aux profits. Si l’utilisateur ne peut plus acheter, stocker, réparer et réutiliser un bien, il doit payer à chaque utilisation. L’utilisateur est clairement perdant par rapport au cas d’usage où il achèterait le logiciel comme un bien dont il peut disposer à sa guise.

Aujourd’hui, chaque logiciel que nous utilisons est muni d’une licence et dépend le plus souvent d’autres logiciels également munis de leurs propres licences. Il a été démontré qu’il est matériellement impossible de lire tous les contrats que nous acceptons quotidiennement. Pourtant, la fiction légale prétend que nous les avons acceptés consciemment. Que nous devons nous plier aux conditions qui sont décrites. Chaque fois que nous cliquons sur « J’accepte », nous signons littéralement un chèque en blanc sur notre âme, en espérant que jamais le Malin ne vienne réclamer son dû.

Pour perpétuer l’esprit UNIX initial, cet esprit frondeur et hacker, l’université de Berkeley met au point la licence BSD. Cette licence dit, en substance, que vous pouvez faire ce que vous voulez avec le logiciel, y compris le modifier et le revendre, à condition de citer les auteurs.

Le livre de John Lions est lui interdit, car contenant la propriété intellectuelle d’AT&T. Il circule désormais sous le manteau, photocopié par des générations d’étudiants qui ne cherchent pas à le moins du monde à faire de l’ombre à AT&T, mais à simplement mieux comprendre comment fonctionne ou pourrait fonctionner un ordinateur.

L’apparition des ordinateurs personnels

Les ordinateurs sont de moins en moins chers. Et de plus en plus variés. L’entreprise IBM est le plus gros fournisseur d’ordinateurs, certains sont des mastodontes, d’autres ont à peine la taille d’une grosse valise (les « mini-ordinateurs »).

IBM a l’idée de créer des ordinateurs assez petits pour tenir sur un bureau : un micro-ordinateur. Il serait bon marché, peu puissant. Son nom ? Le « personal computer », le PC.

Seulement, comme AT&T auparavant, IBM est sous le coup d’un procès antitrust. Diplomatiquement, il serait dangereux de se lancer dans un nouveau marché. Pour éviter cela, IBM va tout d’abord concevoir le PC avec une architecture ouverte, c’est-à-dire des composants que n’importe qui peut acheter ou copier (contrairement aux concurrents comme Amiga, Commodore, Atari, etc.). Le système d’exploitation, le logiciel qui fera tourner la machine, est considéré comme l’un de ces composants. Problème : les systèmes Unix sont très chers et conçus avec des fonctionnalités très complexes comme le fait d’héberger plusieurs utilisateurs. Ils ne sont donc pas adaptés à un « personal computer ». IBM travaille bien sur son propre operating system (OS2), mais, en attendant, pourquoi ne pas sous-traiter la tâche ?

Un riche et important avocat d’affaires, William Gates, qui travaille, entre autres, pour IBM, entend parler de cette histoire et annonce que son fils vient justement de lancer une entreprise d’informatique. Le fils en question, appelé également William Gates, mais surnommé Bill, n’a jamais programmé d’operating system mais il propose à IBM d’en faire un à condition d’être payé pour chaque personal computer vendu. Tant qu’il y est, il ajoute dans le contrat qu’IBM est forcé d’installer son OS sur chaque PC vendu. Empêtré dans son procès antitrust et ne voyant pas un grand avenir pour une solution bon marché comme le PC, IBM accepte ces conditions qui sont pourtant étranges.

Bill Gates n’a jamais programmé d’OS, mais il connait un jeune informaticien de 22 ans, Tim Paterson, qui a fait ce qu’il appelle un « Quick and Dirty OS », QDOS. Un truc amateur et minimaliste qui n’a même pas les fonctionnalités qu’avait Unix 15 ans auparavant. Mais ce n’est pas grave. Bill Gates propose 50.000$ pour QDOS, qu’il rebaptise PC-DOS puis MS-DOS.

À cette même époque, un conseiller du président Reagan, un certain Robert Bork, se rend compte que s’il y’a bien un truc qui empêche de maximiser les profits des entreprises, ce sont les lois antimonopoles. Pauvre AT&T, pauvre IBM. Ces entreprises américaines auraient pu coloniser le monde et faire le bonheur de leurs actionnaires. Ces entreprises pourraient affaiblir économiquement le bloc soviétique. Au lieu de cela, les Américains eux-mêmes leur ont mis des bâtons dans les roues.

Il propose donc de tout simplement autoriser les monopoles. Bien sûr, ça se verrait un peu trop si on le dit comme ça du coup il propose de n’empêcher que les monopoles dont on peut démontrer qu’ils entrainent une hausse significative du prix pour le consommateur final. Cela permet de prétendre que l’on protège le consommateur final tout en faisant oublier que, premièrement, il est impossible de démontrer qu’un prix est trop haut et que, deuxièmement, les monopoles infligent bien d’autres problèmes à la société qu’une seule augmentation des prix.

L’impact de Robert Bork est primordial. Grâce à lui, Microsoft, la société de Bill Gates, s’arroge le monopole sur les systèmes d’exploitation tournant sur les ordinateurs personnels, qui deviennent, à la grande surprise d’IBM, un énorme succès au point d’éclipser les supercalculateurs. Il faut dire qu’IBM, par peur de devenir un monopole, a permis à d’autres constructeurs de se mettre à fabriquer leur propre PC : Dell, Compaq, etc. Et rien n’empêche Microsoft de fournir DOS à ces concurrents tout en les obligeant à ne fournir leurs ordinateurs qu’avec DOS, rien d’autre. En quelques années, le terme « PC » devient synonyme de micro-ordinateur et de… « Microsoft ». Les Atari, Armstrad, Commodore et autres Amiga disparaissent complètement malgré leur avance technologique indéniable.

Il faut dire que ce DOS merdique arrange pas mal de monde : il permet aux véritables informaticiens de rester en dehors de la plèbe avec leurs supercalculateurs et aux fournisseurs de véritables ordinateurs de continuer à pratiquer des prix délirants. Le PC avec DOS n’est qu’un jouet, pas un truc professionnel.

La résistance s’organise

Tous ces événements sonnent le glas de du premier âge d’or de l’informatique. L’informatique était jusque là un domaine de passionnés qui collaboraient, elle devient un domaine extrêmement lucratif qui cherche à contrôler autant que possible ses clients pour en tirer le maximum d’argent.

Richard Stallman, un chercheur en Intelligence Artificielle du MIT se rend compte que, graduellement, tous ses collègues se font embaucher par des entreprises privées. Une fois embauchés, ceux-ci ne peuvent plus collaborer avec lui. Ils emportent avec eux leurs codes, leurs recherches. Ils continuent à utiliser les codes disponibles sous licence BSD, mais ne partagent plus rien.Pire : ils ne peuvent même plus discuter du contenu de leur travail.

Richard, qui ne vit que pour l’informatique, en est très triste, mais la goutte d’eau viendra d’une imprimante. En effet, Richard avait modifié le logiciel tournant sur l’imprimante de tout le département pour éviter les bourrages et pour envoyer un email à la personne ayant initié l’impression une fois celle-ci terminée. Cependant, l’imprimante est ancienne et est remplacée. Richard Stallman ne se pose pas trop de questions et décide d’implémenter les mêmes fonctionnalités pour la nouvelle imprimante. À sa grande surprise, il ne trouve pas le code source des programmes de celle-ci. Il fait la demande au fabricant et se voit rétorquer que le code source appartient au fabricant, que personne ne peut le consulter ou le modifier.

Richard Stallman voit rouge. L’université a payé pour l’imprimante. De quel droit le fabricant peut-il empêcher un client de faire ce qu’il veut avec son achat ? De quel droit peut-il empêcher un « hacker » de comprendre le code qui tourne dans son propre matériel. Avec une grande prescience, il comprend que si la pratique se généralise, c’est tout simplement la fin du mouvement hacker.

Ni une ni deux, RMS démissionne du MIT, où il gardera néanmoins un bureau, pour lancer la Free Software Foundation, la fondation pour le logiciel libre. Son idée est simple : l’industrie vient de confisquer aux informaticiens la liberté de faire tourner les logiciels de leur choix. Il faut récupérer cette liberté.

Il théorise alors les quatre grandes libertés du logiciel libre :

  1. Le droit d’utiliser un logiciel pour n’importe quel usage
  2. Le droit d’étudier un logiciel pour le comprendre
  3. Le droit de modifier un logiciel
  4. Le droit de partager un logiciel et/ou ses modifications

Aujourd’hui, on considère « libre » un logiciel qui permet ces quatre libertés.

Il semble évident qu’un logiciel sous licence BSD est libre. Mais Stallman se rend compte d’un problème : les logiciels sont bien libres, mais les personnes les modifiant dans des entreprises privées ne partagent jamais leurs améliorations.

Il met alors au point la licence GPL. Celle-ci, comme toute licence, est un contrat et stipule que l’utilisateur d’un logiciel a le droit de réclamer les sources, de les étudier, les modifier et les redistribuer. Par contre, s’il redistribue le logiciel, il est obligé de conserver la licence GPL.

Si les licences propriétaires restreignent au maximum les libertés des utilisateurs et les licences apparentées à BSD donnent le maximum de libertés aux utilisateurs, la GPL restreint une seule liberté : celle de restreindre la liberté des autres.

La GPL définit donc une forme de bien commun qu’il n’est pas possible de privatiser.

Notons que, comme toute licence, la GPL est un contrat entre le fournisseur et l’utilisateur. Seul l’utilisateur peut demander le code source d’un logiciel sous licence GPL. Un logiciel GPL n’est donc pas nécessairement public. De même, rien n’interdit de faire payer pour un logiciel GPL. Richard Stallman lui-même gagnera un temps sa vie en vendant le logiciel libre qu’il développe, l’éditeur Emacs.

Stallman, RMS pour les intimes, ne s’arrête pas là. Puisque les systèmes d’exploitation UNIX sont des myriades de petits logiciels coopérants entre eux, il va les réécrire un par un pour créer un système entièrement sous licence GPL : GNU. GNU est l’acronyme de « GNU is Not Unix ». C’est récursif, c’est de l’humour de geek.

RMS travaille d’arrache-pied et le projet GNU est bien lancé. Il ne manque qu’un composant pourtant essentiel : le noyau ou « kernel » en anglais. Le noyau est la partie de code centrale qui fait l’interface entre la machine et tous les outils UNIX ou GNU.

La deuxième grande collaboration

En parallèle du travail de Richard Stallman, un tremblement de terre a lieu dans le monde Unix : l’entreprise AT&T s’est soudainement réveillée et s’est rendu compte qu’elle est le berceau d’un système d’exploitation devenu très populaire et surtout très rémunérateur.

Elle attaque alors en justice l’université de Berkeley pour diffusion illégale du code source UNIX sous le nom « Berkeley Software Distribution », BSD.

La distribution de BSD est un temps interrompue. Le futur de BSD semble incertain. Il apparaitra que le code de BSD avait bien été écrit par les chercheurs de Berkeley, ceux-ci ayant graduellement amélioré le code source UNIX original au point de le remplacer complètement, dans une version moderne du mythe du bateau de Thésée. Seuls 6 fichiers seront identifiés par le juge comme appartenant à AT&T, 6 fichiers qui seront donc remplacés par des nouvelles versions réécrites.

Mais, en 1991, cette conclusion n’est pas encore connue. Le système GNU n’a pas de noyau, le système BSD est dans la tourmente. Un jeune étudiant finlandais vient, de son côté, d’acquérir un nouvel ordinateur et rêve de faire tourner UNIX dessus. Comme les UNIX propriétaires sont vraiment trop chers, il télécharge les outils GNU, qui sont gratuits et, s’appuyant dessus, écrit un mini-noyau qu’il partage sur Usenet.

Si Internet existe, le web, lui, n’existe pas encore. Les échanges se font sur le réseau Usenet, l’ancêtre des forums web et le repaire des passionnés de n’importe quel domaine.

Le noyau de Linus Torvalds, notre jeune finlandais, attire rapidement l’attention de passionnés de Unix qui le nomment du nom de son créateur : Linux. Très vite, ils envoient à Linus Torvalds des améliorations, des nouvelles fonctionnalités que celui-ci intègre pour produire de nouvelles versions.

Influencé par les outils GNU, Linus Torvalds a mis sa création sous licence GPL. Il est donc désormais possible de mettre en place un système Unix sous licence GPL : c’est GNU/Linux. Enfin, non, ce n’est pas Unix. Car Gnu is Not Unix. Mais ça y ressemble vachement…

Bon, évidemment, installer le noyau Linux et tous les outils GNU n’est pas à la portée de tout le monde. Des projets voient le jour pour faciliter l’installation et permettent d’empaqueter tous ces composants hétéroclites. Ce sont les « Distributions Linux ». Certaines offrent des versions commerciales, comme Red Hat alors que d’autres sont communautaires, comme Debian.

Outre le noyau Linux, Linus Torvalds invente une nouvelle manière de développer des logiciels : tout le monde peut étudier, critiquer et contribuer en soumettant des modifications (des « patchs »). Linus Torvalds choisit les modifications qu’il pense utiles et correctes, refuse les autres avec force discussions. Bref, c’est un joyeux bazar. Sur Usenet et à travers les mailing-lists, les hackers retrouvent l’esprit de collaboration qui animait les laboratoires Unix des débuts. Des années plus tard, Linus Torvalds inventera même un logiciel permettant de gérer ce bazar : git. Git est aujourd’hui l’un des logiciels les plus répandus et les plus utilisés par les programmeurs. Git est sous licence GPL.

La « non-méthode » Torvalds est tellement efficace, tellement rapide qu’il semble évident que c’est la meilleure manière de développer des bons logiciels. Des centaines de personnes lisant un code source sont plus susceptibles de trouver des bugs, d’utiliser le logiciel de manière imprévue, d’apporter des touches de créativité.

Eric Raymond théorisera cela dans une conférence devenue un livre : « La cathédrale et le bazar ». Avec Bruce Perens, ils ont cependant l’impression que le mot « Free Software » ne fait pas professionnel. En anglais, « Free » veut dire aussi bien libre que gratuit. Les « Freewares » sont des logiciels gratuits, mais propriétaires, souvent de piètre qualité. Eric Raymond et Bruce Perens inventent alors le terme « open source ».

Techniquement, un logiciel libre est open source et un logiciel open source est libre. Les deux sont synonymes. Mais, philosophiquement, le logiciel libre a pour objectif de libérer les utilisateurs là où l’open source a pour objectif de produire des meilleurs logiciels. Le mouvement open source, par exemple, accepte volontiers de mélanger logiciels libres et propriétaires là où Richard Stallman affirme que chaque logiciel propriétaire est une privation de liberté. Développer un logiciel propriétaire est, pour RMS, hautement immoral.

Les deux noms désignent cependant une unique mouvance, une communauté grandissante qui se bat pour regagner la liberté de faire tourner ses propres logiciels. Le grand ennemi est alors Microsoft, qui impose le monopole de son système Windows. La GPL est décrite comme un « cancer », le logiciel libre comme un mouvement « communiste ». Apple, une entreprise informatique qui n’est à cette époque plus que l’ombre de son glorieux passé va piocher dans les logiciels libres pour se donner un nouveau souffle. En se basant sur le code de FreeBSD, qui n’est pas sous licence GPL, ils vont mettre au point un nouveau système d’exploitation propriétaire : OSX, renommé ensuite MacOS. C’est également de cette base qu’ils vont partir pour créer un système embarqué : iOS, initialement prévu pour équiper l’iPod, le baladeur musical lancé par la firme.

La seconde confiscation

Pour fonctionner et donner des résultats, un logiciel a besoin de données. Séparer le logiciel des données sur lesquelles il tourne permet de réutiliser le même logiciel avec différente données. Puis de vendre des logiciels dans lesquels les utilisateurs vont entrer leurs propres données pour obtenir des résultats.

L’un des arguments pour souligner l’importance du logiciel libre est justement l’utilisation de ces données. Si vous utilisez un logiciel propriétaire, vous ne savez pas ce qu’il fait de vos données, que ce soit de données scientifiques, des données personnelles, des documents dans le cadre du travail, des courriers. Un logiciel propriétaire pourrait même envoyer vos données privées aux concepteurs sans votre consentement. L’idée paraissait, à l’époque, issue du cerveau d’un paranoïaque.

Outre les données, un autre des nombreux combats libristes de l’époque est de permettre d’acheter un ordinateur sans Microsoft Windows préinstallé et sans payer la licence à Microsoft qui s’apparente alors à une taxe. Le monopole de Microsoft fait en effet qu’il est obligatoire d’acheter Windows avec un ordinateur, même si vous ne comptez pas l’utiliser. Cela permet à Bill Gates de devenir en quelques années l’homme le plus riche du monde.

Pour lutter contre ce monopole, les concepteurs de distributions Linux tentent de les faire les plus simples à utiliser et à installer. Le français Gaël Duval est un pionnier du domaine avec la distribution Mandrake, renommée plus tard Mandriva.

En 2004 apparait la distribution Ubuntu. Ubuntu n’est, au départ, rien d’autre qu’une version de la distribution Debian simplifiée et optimisée pour une utilisation de bureau. Avec, par défaut, un joli fond d’écran comportant des personnes nues. Ubuntu étant financé par un milliardaire, Mark Shuttleworth, il est possible de commander gratuitement des Cd-roms pour l’installer. La distribution se popularise et commence à fissurer, très légèrement, le monopole de Microsoft Windows.

L’avenir semble aux mini-ordinateurs de poche. Là encore le libre semble prendre sa place, notamment grâce à Nokia qui développe ce qui ressemble aux premiers smartphones et tourne sous une version modifiée de Debian : Maemo.

Mais, en 2007, Apple lance ce qui devait être au départ un iPod avec une fonctionnalité téléphone : l’iPhone. Suivit de près par Google qui annonce le système Android, un système d’exploitation prévu au départ pour les appareils photo numériques. L’invasion des smartphones a commencé. Plusieurs entreprises se mettent alors à collaborer avec Nokia pour produire des smartphones tournant avec des logiciels libres. Mais en 2010, un cadre de chez Microsoft, Stephen Elop, est parachuté chez Nokia dont il est nommé CEO. Sa première décision est d’arrêter toute collaboration avec les entreprises « libristes ». Durant trois années, il va prendre une série de décisions qui vont faire chuter la valeur boursière de Nokia jusqu’au moment où l’entreprise finlandaise pourra être rachetée… par Microsoft.

L’iPhone d’Apple est tellement fermé qu’il n’est, au départ, même pas possible d’y installer une application. Steve Jobs s’y oppose formellement. Les clients auront le téléphone comme Jobs l’a pensé et rien d’autre. Cependant, les ingénieurs d’Apple remarquent que des applications sont développées pour l’Android de Google. Apple fait vite machine arrière. En quelques années, les « app » deviennent tendance et les « App Store » font leur apparition, reprenant un concept initié par… les distributions Gnu/Linux ! Chaque banque, chaque épicerie se doit d’avoir son app. Sur les deux systèmes, qui sont très différents. Il faut développer pour Apple et pour Google.

Microsoft tente alors de s’imposer comme troisième acteur avant de jeter l’éponge : personne ne veut développer son app en 3 exemplaires. Dans les milieux branchés de la Silicon Valley, on se contente même souvent de ne développer des applications que pour Apple. C’est plus cher donc plus élitiste. De nombreux hackers cèdent aux sirènes de cet élitisme et se vendent corps et âmes à l’univers Apple. Qui interdit à ses clients d’installer des applications autrement que via son App Store et qui prend 30% de commission sur chacune des transactions réalisées sur celui-ci. Développer pour Apple revient donc à donner 30% de son travail à l’entreprise de Steve Jobs. C’est le prix à payer pour faire partie de l’élite. Les hackers passés à Apple vont jusqu’à tenter de se convaincre que comme Apple est basée sur FreeBSD, c’est un Unix donc c’est bien. Nonobstant le fait que l’idée même derrière Unix est avant tout de pouvoir comprendre comment le système fonctionne et donc d’avoir accès aux sources.

Ne sachant sur quel pied danser face à l’invasion des smartphones et à la fin du support de Nokia pour Maemo, le monde de l’open source et du logiciel libre est induit en erreur par le fait qu’Android est basé sur un noyau Linux. Android serait Linux et serait donc libre. Génial ! Il faut développer pour Android ! Google entretient cette confusion en finançant beaucoup de projets libres. Beaucoup de développeurs de logiciels libres sont embauchés par Google qui se forge une image de champion du logiciel libre.

Mais il y’a une arnaque. Si Android est basé sur le noyau Linux, qui est sous GPL, il n’utilise pas les outils GNU. Une grande partie du système Android est bien open source, mais les composants sont choisis soigneusement pour éviter tout code sous licence GPL. Et pour cause… Graduellement, la part d’open source dans Android est réduite pour laisser la place aux composants Google propriétaires. Si vous installez aujourd’hui uniquement les composants libres, votre téléphone sera essentiellement inutilisable et la majorité des applications refuseront de se lancer. Il existe heureusement des projets libres qui tentent de remplacer les composants propriétaires de Google, mais ce n’est pas à la portée de tout le monde et ce ne sont que des pis-aller.

En se battant pour faire tourner du code libre sur leurs ordinateurs, les libristes se sont vu confisquer, malgré leur avance dans le domaine, le monde de la téléphonie et la mobilité.

Mais il y’a pire : si les libristes se battaient pour avoir le contrôle sur les logiciels traitant leurs données, les nouveaux acteurs se contentent de traiter les données des clients sur leurs propres ordinateurs. Les utilisateurs ont perdu le contrôle à la fois du code et du matériel.

C’est ce qu’on appelle le « cloud », le fait que vos données ne sont plus chez vous, mais « quelque part », sur les ordinateurs de grandes entreprises dont le business model est d’exploiter au mieux ces données pour vous afficher le plus de publicités. Un business model qui fonctionne tellement bien que toutes ces entreprises sont, nous l’avons vu, les plus grosses entreprises mondiales.

État de la situation

Les progrès de l’informatique se sont construits en deux grandes vagues successives de collaboration. La première était informelle, académique et localisée dans les centres de recherches. La seconde, initiée par Richard Stallman et portée à son apogée par Linus Torvalds, était distribuée sur Internet. Dans les deux cas, les « hackers » évoluaient dans un univers à part, loin du grand public, du marketing et des considérations bassement matérielles.

À chaque fois, l’industrie et le business confisquèrent les libertés pour privatiser la technologie en maximisant le profit. Dans la première confiscation, les industriels s’arrogèrent le droit de contrôler les logiciels tournant sur les ordinateurs de leurs clients puis, la seconde, ils s’arrogèrent également le contrôle des données desdits clients.

Nous nous trouvons dans une situation paradoxale. Chaque humain est équipé d’un ou plusieurs ordinateurs, tous étant connectés en permanence à Internet. La puissance de calcul de l’humanité a atteint des proportions démesurées. Lorsque vous regardez l’heure sur votre montre Apple, il se fait plus de calculs en une seconde dans votre poignet que dans tous les ordinateurs du programme Appolo réunis. Chaque jour, votre téléphone transmet à votre insu presque autant de données qu’il n’y en avait dans tous les ordinateurs du monde lorsqu’Unix a été inventé.

Pourtant, cette puissance de calcul n’a jamais été aussi concentrée. Le pouvoir n’a jamais été partagé en aussi peu de personnes. Il n’a jamais été aussi difficile de comprendre comment fonctionne un ordinateur. Il n’a jamais été aussi difficile de protéger sa vie privée, de ne pas se laisser influencer dans nos choix de vie.

Les pouvoirs publics et les réseaux éducatifs se sont, le plus souvent, laissé prendre au mensonge qu’utiliser les nouvelles technologies était une bonne chose. Que les enfants étaient, de cette manière, éduqués à l’informatique.

Utiliser un smartphone ou une tablette éduque autant à l’informatique que le fait de prendre un taxi éduque à la mécanique et la thermodynamique. Une personne peut faire des milliers de kilomètres en taxi sans jamais avoir la moindre notion de ce qu’est un moteur. Voyager avec Ryanair ne fera jamais de vous un pilote ni un expert en aérodynamique.

Pour comprendre ce qu’est un moteur, il faut pouvoir l’ouvrir. L’observer. Le démonter. Il faut apprendre à conduire sur des engins simplifiés. Il faut en étudier les réactions. Il faut pouvoir discuter avec d’autres, comparer un moteur avec un autre. Pour découvrir l’aérodynamique, il faut avoir le droit de faire des avions de papier. Pas d’en observer sur une vidéo YouTube.

Ce qui nous semble évident avec la mécanique a été complètement passé sous silence avec l’informatique. À dessein, les monopoles, désormais permis, tentent de créer une expérience « magique », incompréhensible. La plupart des développeurs sont désormais formés dans des « frameworks » de manière à ne jamais avoir à comprendre comment les choses fonctionnent sous le capot. Si les utilisateurs sont les clients des taxis, les développeurs devraient, dans la vision des Google, Apple et autre Facebook, être des chauffeurs Uber qui conduisent aveuglément, sans se poser de questions, en suivant les instructions.

L’informatique est devenue une infrastructure humaine trop importante pour être laissée aux mains de quelques monopoles commerciaux. Et la seule manière de leur résister est de tenter de minimiser leur impact sur nos vies. En refusant au maximum d’utiliser leurs solutions. En cherchant des alternatives. En contribuant à leur création. En tentant de comprendre ce que font réellement ces solutions « magiques », avec nos ordinateurs, nos données et nos esprits.

L’informatique n’est pas plus compliquée ni plus ésotérique qu’un moteur diesel. Elle a été rendue complexe à dessein. Pour augmenter son pouvoir de séduction. Jusqu’aux termes « high-tech » ou « nouvelles technologies » qui renforcent, volontairement, l’idée que la plupart d’entre nous sont trop bêtes pour comprendre. Une idée qui flatte d’ailleurs bon nombre d’informaticiens ou de bidouilleurs, qui se sentent grâce à cela supérieurs alors même qu’ils aident des monopoles à étendre leur pouvoir sur eux-mêmes et leurs proches.

Le chemin est long. Il y a 20 ans, le concept d’open source m’apparaissait surtout comme philosophique. Aujourd’hui, j’ai découvert avec étonnement que je me plonge de plus en plus souvent dans le code source des logiciels que j’utilise quotidiennement pour comprendre, pour mieux les utiliser. Contrairement à la documentation ou aux réponses sur StackOverFlow, le code source ne se trompe jamais. Il décrit fidèlement ce que fait mon ordinateur, y compris les bugs. Avec l’entrainement, je me rends compte qu’il est même souvent plus facile de lire le code source des outils Unix que de tenter d’interpréter des dizaines de discussions sur StackOverFlow.

Le logiciel libre et l’open source sont la seule solution que j’envisage pour que les ordinateurs soient des outils au service de l’humain. Il y a 20 ans, les idées de Richard Stallman me semblaient extrémistes. Force est de constater qu’il avait raison. Les logiciels propriétaires ont été essentiellement utilisés pour transformer les utilisateurs en esclaves des ordinateurs. L’ordinateur n’est alors plus un outil, mais un moyen de contrôle.

La responsabilité n’en incombe pas à l’individu. Après tout, comme je l’ai dit, il est presque impossible d’acheter un téléphone sans Google. L’individu ne peut pas lutter.

La responsabilité en incombe aux intellectuels et aux professionnels, qui doivent élever la voix plutôt que d’accepter aveuglément des décisions institutionnelles. La responsabilité en incombe à tous les établissements du secteur de l’éducation qui doivent poser des questions, enseigner le pliage d’avions de papier au lieu d’imposer à leurs étudiants de se créer des comptes sur les plateformes monopolistiques pour accéder aux données affichées sur les magnifiques écrans interactifs financés, le plus souvent, par Microsoft et consorts. La responsabilité en incombe à tous les militants, qu’ils soient écologistes, gauchistes, anticapitalistes, socialistes, voire même tout simplement locaux. On ne peut pas militer pour l’écologie et la justice sociale tout en favorisant les intérêts des plus grandes entreprises du monde. On ne peut pas militer pour le local en délocalisant sa propre voix à l’autre bout du monde. La responsabilité en incombe à tous les politiques qui ont cédé le contrôle de pays, de continents entiers à quelques entreprises, sous prétexte de gagner quelques voix lors de la prochaine élection.

Je ne sais pas encore quelle forme prendre la troisième grande collaboration de l’informatique. Je sais juste qu’elle est urgente et nécessaire.

Recevez les billets par mail ou par RSS. Max 2 billets par semaine, rien d’autre. Adresse email jamais partagée et définitivement effacée lors du désabonnement. Dernier livre paru : Printeurs, thriller cyberpunk. Pour soutenir l’auteur, lisez, offrez et partagez des livres.

Ce texte est publié sous la licence CC-By BE.

May 09, 2022

Two weeks later, I'm still feeling the energy from our first in-person DrupalCon in two years!

This blog post is Part 3 of my DrupalCon keynote recap. In case you missed it, you can read up on Part 1 and Part 2. Part 1 focused on Drupal 10 updates. Part 2 talked about our new vision statement.

In my keynote, I also mapped out a potential strategy for Drupal 11. In this blog post, I explain Drupal 11's strategy, and how it aligns with our updated vision statement.

Drupal 11 to focus on a Composable Core, helped by Project Browser, Starter Templates and Automated Updates

Drupal 11's strategy is focused on (1) empowering ambitious site builders and (2) accelerating innovation in our contributed modules repository.

To accomplish these two goals, Drupal will have to double down on "composability", which is reflected by the six proposed initiatives below. I'm code-naming the two-year strategy for Drupal 11 "Composable Core".

Six focus areas for Drupal 11

Project Browser

In Drupal 9, we have over 8,000 modules and themes. In those 8,000 projects are some amazing innovations. But right now, it's hard for site builders to find them.

Many first-time adopters don't even realize Drupal can be extended with all these contributed modules and themes. Some site builders even give up on Drupal because once Drupal is installed, they don't know what to do next.

So, we have an opportunity to make all these great innovations easier to find.​​ The Project Browser Initiative would recommend or highlight great Drupal modules to use. It would also enable a one-click install process.

Under the hood, modules are still installed with Composer, making them easy to maintain and update.

Check out this video to learn more about Project Browser:

Starter Templates

While Project Browser would help site builders discover and install individual modules, it is not unusual to use 30+ contributed modules to build a site. It can take a lot of work to find and configure these modules, and to make sure they all work well together.

This is where the new Starter Templates concept comes in. Starter Templates are about installing and configuring groups of modules. For example, Starter Templates for an event website or a product website would include all of the necessary modules and configuration required for that type of website.

This concept bears a lot of resemblance with Drupal's 15-year-old concept of Drupal distributions. The goal of Starter Templates, however, is to be a lot easier to build and maintain than distributions.

Drupal site starter templates compared to distributions; starter templates are easier to implement and maintain

We don't know yet how exactly we'd implement Starter Templates, but we have some initial ideas. Join the #distributions-starter-templates Slack channel if you're interested in contributing.

Automated Updates

For Drupal 11, we will continue our work on the Automated Updates Initiative, which is meant to make updates to Drupal much easier.

Check out the video below for an update on Drupal's Automated Updates initiative:

GitLab Initiative

Accelerating innovation by empowering contributors continues to be a key priority for Drupal. We will keep working on the GitLab Initiative to bring better collaboration and development tools to Drupal contributors.

Check out this video for the latest on the GitLab Initiative:

The Great Module Migration

This proposed initiative focuses on making Drupal Core smaller. How? By responsibly moving more modules from core to contrib. This mean less code to maintain in core, so that Drupal can focus on innovation. Certain modules can also innovate faster as a contributed module.

To evaluate which core modules we might migrate, we developed a ranking system. The system evaluates each module's capabilities, adoption, strategic value, and maintenance effort.

Based on this early ranking system, we found that we could remove approximately 16 modules from core and keep approximately 64. Some of these modules could already be removed in Drupal 10. Drupal 11 could be 20% smaller compared to Drupal 9.

We believe it's safe to make core smaller, especially with a strong focus on Project Browser, Starter Templates and Automatic Updates.

Drupal 11 readiness

As a part of Drupal 11 readiness, we will continue to manage our third-party dependencies to keep Drupal secure.

Should we do more?

I'd love to see us do more in Drupal 11. I wish we could invest in embracing web components, building a decoupled administration backend, modernizing Views, and much more.

Investment like this often require small teams of dedicated developers; i.e. 3-5 developers for 6 to 12 months.

To get even more done for Drupal 11, it's important that organizations consider paying Drupal developers to work on larger, long-term contributions.

I covered this concept in past blog posts, such as the privilege of free time in Open Source and balancing Makers and Takers to sustain Open Source.

In the next year, the Drupal Association will start taking additional steps towards incentivizing larger contributions. Needless to say, I'm very excited about that. Stay tuned for more on that topic.

Let's get building

The early planning phases of a new release are an exciting time to discuss Drupal's potential for the future, and focus on ideas that will make the most impact for our users. I'm excited for us all to collaborate on Drupal 11 in the coming years.

May 06, 2022

Complètement inexistante il y a à peine soixante ans, l’industrie informatique est aujourd’hui devenue la plus importante du monde. Le monde est contrôlé par l’informatique. Comprendre l’informatique est devenu l’une des seules manières de préserver notre individualité et de lutter contre les intérêts d’une minorité.

Vous n’êtes pas convaincu de l’importance de l’informatique ?

En termes de capitalisation boursière, l’entreprise la plus importante du monde à l’heure où j’écris ces lignes est Apple. La seconde est Microsoft. Si l’on trouve un groupe pétrolier en troisième place, Alphabet (ex-Google) vient en quatrième et Amazon en cinquième place. En sixième place on trouve Tesla, qui produit essentiellement des ordinateurs avec des roues et, en septième place, Meta (ex-Facebook). La place de Facebook est particulièrement emblématique, car la société ne fournit rien d’autre que des sites internet sur lesquels le temps de cerveau des utilisateurs est revendu à des agences publicitaires. Exploiter cette disponibilité de cerveau également le principal revenu d’Alphabet.

Je pense que l’on n’insiste pas assez sur ce que ce classement boursier nous apprend : aujourd’hui, les plus grands acteurs de l’économie mondiale ont pour objectif premier de vendre le libre arbitre et la disponibilité des cerveaux de l’humanité. Le pétrole du vingt-et-unième siècle n’est pas « le big-data », mais le contrôle de l’esprit humain. Alphabet et Facebook ne vendent ni matériel, ni logiciels, mais bien un accès direct à cet esprit humain dans sa vie privée. Microsoft, de son côté, tente de vendre l’esprit humain dans un contexte professionnel. Bien qu’ayant également des intérêts publicitaires, une grande partie de son business est de prendre le contrôle sur les travailleurs pour ensuite le « sous-louer » aux employeurs, trop heureux de contrôler leurs employés comme jamais.

Tesla veut contrôler les déplacements des humains. C’est d’ailleurs une constante chez Elon Musk avec ses projets d’Hyperloop, de creusage de tunnels voire de conquête spatiale. Amazon cherche à contrôler toutes vos interactions marchandes en contrôlant les commerçants, que ce soit dans les magasins physiques ou en ligne (grâce à une hégémonie sur l’hébergement des sites web à travers Amazon S3).

Apple cherche, de son côté, à obtenir un contrôle total sur chaque humain qui entre dans son giron. Regardez autour de vous le nombre de personnes affublées d’Airpods, ces petits écouteurs blancs. Lorsque vous vous adressez à l’une de ces personnes, vous ne parlez pas à la personne. Vous parlez à Apple qui décide ensuite ce qu’elle va transmettre de votre voix à son client. Le client a donc payé pour perdre le contrôle de ce qu’il entend. Le client a payé pour laisser à Apple le choix de ce qu’elle va pouvoir faire avec son téléphone et son ordinateur. Si les autres sociétés tentent chacune de contrôler le libre arbitre dans un contexte particulier, Apple, de son côté, mise sur le contrôle total d’une partie de l’humanité. Il est très simple de s’équiper en matériel Apple. Il est extrêmement difficile de s’en défaire. Si vous êtes un client Apple, faites l’expérience mentale d’imaginer vivre sans aucun produit Apple du jour au lendemain, sans aucune application réservée à l’univers Apple. Dans cette liste, Apple et Tesla sont les seules à fournir un bien tangible. Ce bien tangible n’étant lui-même qu’un support à leurs logiciels. Si ce n’était pas le cas, Apple serait comparable à Dell ou Samsung et Tesla n’aurait jamais dépassé General Motors en ayant vendu qu’une fraction des véhicules de ce dernier.

Nous pouvons donc observer qu’une partie importante de l’humanité est sous le contrôle de logiciels appartenant à une poignée de sociétés américaines dont les dirigeants se connaissent d’ailleurs intimement. Les amitiés, les contacts entre proches, les agendas partagés, les heures de nos rendez-vous ? Contrôlés par leurs logiciels. Les informations que vous recevez, privées ou publiques ?Contrôlées par leurs logiciels. Votre position ? Les photos que vous êtes encouragés à prendre à tout bout de champ ? Les produits que vous achetez ? Contrôlés par leurs logiciels ! Le moindre paiement effectué ? Hors paiements en espèce, tout est contrôlé par leurs logiciels. C’est encore pire si vous utilisez votre téléphone pour payer sans contact. Ou Paypal, la plateforme créée par… Elon Musk. Les données des transactions Mastercard sont entièrement revendues à Google. Visa, de son côté, est justement huitième dans notre classement des sociétés les plus importantes.

Les déplacements ? Soit dans des véhicules contrôlés par les mêmes logiciels ou via des transports requérants des apps contrôlées… par les mêmes logiciels. Même les transports publics vous poussent à installer des apps Apple ou Google, renforçant leur contrôle sur tous les aspects de nos vies. Heureusement qu’il nous reste le vélo.

Votre vision du monde et la plupart de vos actions sont aujourd’hui contrôlées par quelques logiciels. Au point que le simple fait de ne pas avoir un smartphone Google ou Apple est inconcevable, y compris par les pouvoirs publics, votre banquier ou, parfois, votre employeur ! Il est d’ailleurs presque impossible d’acheter un smartphone sur lequel Google n’est pas préinstallé. Faites l’expérience : entrez dans un magasin vendant des smartphones et dites que vous ne voulez pas payer pour Apple ou Google. Voyez la tête du vendeur… Les magasins de type Fnac arborent fièrement des kilomètres de rectangles noirs absolument indistinguables les uns des autres. Google paye d’ailleurs à Apple plus d’un milliard de dollars par an pour être le moteur de recherche par défaut des iPhones. Même les affiches artisanales des militants locaux ne proposent plus que des QR codes, envoyant le plus souvent vers des pages Facebook ou des pétitions en ligne hébergées par un des monopoles suscités.

Vous pouvez trouver cet état de fait confortable, voire même pratique. Pour moi, cet état de fait est à la fois triste et dangereux. C’est cet engourdissement monopolistique qui nous paralyse et nous empêche de résoudre des problématiques urgentes comme le réchauffement climatique et la destruction des écosystèmes. Tout simplement, car ceux qui contrôlent nos esprits n’ont pas d’intérêts directs à résoudre le problème. Ils gagnent leur pouvoir en nous faisant consommer, nous faisant acheter et polluer. Leur business est la publicité, autrement dit nous convaincre de consommer plus que ce que nous aurions fait naturellement. Observez que, lorsque la crise est pour eux une opportunité, les solutions sont immédiates. Contre le COVID, nous avons accepté sans broncher de nous enfermer pendant des semaines (ce qui a permis la généralisation de la téléconférence et des plateformes de télétravail fournies, en majorité, par Google et Microsoft) et de voir notre simple liberté de déplacement complètement bafouée avec les pass sanitaires entérinant l’ubiquité… des smartphones et des myriades d’applications dédiées. Nous nous sommes moins déplacés (au grand plaisir de Facebook qui a servi d’intermédiaire dans nos relations sociales) et les smartphones sont devenus quasi-obligatoires pour présenter son QR code à tout bout de champ.

Nous avons accepté, sans la moindre tentative de rébellion, de nous faire enfermer et de nous faire ficher par QR code. En termes de comparaison, rappelons que la simple évocation de l’augmentation du prix de l’essence a entrainé l’apparition du mouvement des gilets jaunes. Mouvement qui s’est construit sur Facebook et a donc augmenté l’utilisation de cette plateforme.

Pour regagner son libre arbitre, je ne vois qu’une façon de faire : comprendre comment ces plateformes agissent. Comprendre ce qu’est un logiciel, comment il est apparu et comment les logiciels se sont historiquement divisés en deux catégories : les logiciels propriétaires, qui tentent de contrôler leurs utilisateurs, et les logiciels libres, qui tentent d’offrir de la liberté à leurs utilisateurs.

Le pouvoir et la puissance des logiciels nous imposent de les comprendre, de les penser. Sans cela, ils penseront à notre place. C’est d’ailleurs déjà ce qui est en train de se produire. Les yeux rivés sur notre écran, les oreilles bouchées par des écouteurs, nous réagissons instinctivement à ce qui s’affiche sans avoir la moindre idée de ce qui s’est réellement passé.

Les logiciels ne sont pas « magiques », ils ne sont pas « sexys » ni « hypercomplexes ». Ce ne sont pas des « nouvelles technologies ». Tous ces mots ne sont que du marketing et l’équivalent sémantique du « lave plus blanc que blanc de nos lessives ». Ce ne sont que des mots infligés par des entreprises au pouvoir démesuré dont le cœur est le marketing, le mensonge.

En réalité, les logiciels sont une technologie humaine, compréhensible. Une série de choix arbitraires qui ont été faits pour des raisons historiques, des séries de progrès comme des retours en arrière. Les logiciels ne sont que des outils manipulés par des humains. Des humains qui, parfois, tentent de nous faire oublier leur responsabilité, de la camoufler derrière du marketing et des icônes aux couleurs scintillantes.

Les logiciels ont une histoire. J’ai envie de vous la raconter…

(à suivre)

Recevez les billets par mail ou par RSS. Max 2 billets par semaine, rien d’autre. Adresse email jamais partagée et définitivement effacée lors du désabonnement. Dernier livre paru : Printeurs, thriller cyberpunk. Pour soutenir l’auteur, lisez, offrez et partagez des livres.

Ce texte est publié sous la licence CC-By BE.

May 05, 2022

Autoptimize can help improve your site’s performance, but in some cases after installing and activating you might encounter issues with your site. Although frustrating and maybe even scary, these problems can generally be easily resolved by re-configuring Autoptimize and I’ll be happy to share how you can do that. First off: if the problem is limited to just one (or two) page(s), go to that page’s...


May 04, 2022

With Drupal 10 around the corner, it's time to start laying out Drupal 11's development roadmap.

It's important we begin that work by reflecting on Drupal's purpose. Drupal's purpose has evolved over the years. In the past, the goal might have been to build the world's most powerful CMS. Today, I believe Drupal has become much bigger than a CMS alone.

Drupal enables everyone to participate in an Open Web. The web is one of the most important public resources. As a result, the Drupal community's shared purpose is to make that resource open, safe, and accessible to all. With 1 in 30 websites running on Drupal, we have a lot of influence on building the future of the web we want to see. In fact, we have an opportunity to help build a digital future that is better than the one we have today.

Drupal enables everyone to participate in an Open Web, a decentralized, public resource that is open, safe and accessible to all

To align with that purpose, and to drive the most impact, our vision also has to evolve. Five years ago, I declared that Drupal is for ambitious digital experiences. I'd argue that we have achieved that vision by investing in headless Drupal, Media, Layout Builder, and additional features that help enable the creation of ambitious digital experiences.

That is why I propose evolving our vision statement to "Drupal is for ambitious site builders".

Drupal is for ambitious site builders

Attracting more Drupal site builders will increase Drupal's potential user base, and in turn create a more open, accessible and inclusive web for all.

This shift also brings us back to our roots, which I've talked about in several of my previous DrupalCon keynotes.

What is an ambitious site builder?

An ambitious site builder sits in between the developer hand-coding everything using a framework, and the content author using a SaaS solution. There is a gap between developers and content authors that Drupal fills really well.

Drupal's unique strength is the Ambitious Site Builder

An ambitious site builder can get a lot of things done by installing and configuring modules, and using Drupal through the UI. But when needed, they can use custom code to make their site exactly how they want it to be. Ambitious site builders are the reason why Drupal became so successful in the first place.

I'm excited to see this vision come to life through the key initiatives for Drupal 11, which I'll talk about in my next blog post.

May 03, 2022

Last week, 1,300 Drupalists gathered in Portland, Oregon for DrupalCon North America. It was the first in-person DrupalCon in more than two years. I can't tell you how amazing it was to see everyone face-to-face.

In good tradition, I delivered my State of Drupal keynote. You can watch the video of my keynote or download my slides (262 MB).

I covered a lot of ground in this presentation, so I broke down my written summary into a three-part blog series. Part 1 below focuses on Drupal 10 updates. I'll be publishing Part 2 and Part 3 later this week, which will focus on Drupal's evolved vision and Drupal 11 proposed initiatives.

Drupal stands with Ukraine

I couldn't begin my presentation without acknowledging the loss of life and destruction in Ukraine. It's impacting many in the Drupal community, which is heartbreaking.

You may not be aware, but Ukraine is the sixth most active country in the world in terms of Drupal contributions. If you were to look at these contributions per capita, Ukraine's contributions are even more significant.

Both myself and the Drupal Association strongly condemn the Russian attacks on Ukraine. Many of us might want to know how to help. The Drupal Association has compiled a list of organizations that are accepting charitable donations.

Updates on Drupal 10

From there, I gave an update on Drupal 10. We had targeted a Drupal 10 release date of June 2022, but we made the decision to postpone until December 2022.

We had to move the date back because we have more work to do on the CKEditor 5 migration path. We're upgrading from CKEditor 4 to CKEditor 5. CKEditor 5 is a complete rewrite, with no upgrade path or backwards compatibility.

The Drupal community (and Acquia in particular) has spent thousands of hours working on an upgrade path for CKEditor to make the upgrade easy for all Drupal users. While that has gone well, we need some additional time to work through the remaining upgrade challenges. Fortunately, we are getting great support from CKSource, the company behind CKEditor.

Next, I walked through three important facts about Drupal 10.

  1. Symfony 6.2 — Drupal 10 will upgrade Symfony – a PHP framework that Drupal relies on heavily – from Symfony 4 to Symfony 6.2. At the time of the Drupal 10 release, Symfony 6.2 will be the latest and greatest release. For planning purposes, if you use Symfony components in your custom Drupal modules, you will have to upgrade those to Symfony 6.x.
  2. PHP 8.1 — We have changed the minimum PHP requirement from PHP 7.4 for Drupal 9 to PHP 8.1 for Drupal 10. This is in large part because Symfony 6.2 will require PHP 8.1. Drupal users will benefit from various improvements in the new version of PHP. It also means you might have to upgrade any custom code. Because Drupal 9.3 works with PHP 8.1, you could start that work now with Drupal 9.3. It's a good way to prepare for Drupal 10.
  3. Drupal 9 end-of-life — Drupal 9 end-of-life will happen in November 2023. Once Drupal 10 is released, you will have 11 months to upgrade your Drupal 9 sites to Drupal 10. The good news is, this should be the easiest upgrade in the history of Drupal. On Drupal 9's release date, 71% of deprecated API uses in contributed projects had automated conversions. Today, 93% of deprecated API uses for Drupal 10 across all contributed projects have automated conversions. And we're working on getting that even higher by the time that Drupal 10 is released.

With that, I provided some exciting updates on the five major Drupal 10 initiatives.


Drupal's new frontend theme, named Olivero, is now stable. It's the most accessible theme we've ever shipped. During DrupalCon, Olivero also became the default theme for Drupal 10. Everyone who installs Drupal 10 will be greeted by a new frontend theme. That is significant because we used the current default theme, Bartik, for 11 years.


Drupal's new backend theme, called Claro, also became the new default administration theme at DrupalCon. Another major milestone and reason to celebrate!


Starterkit, a new way of creating themes in Drupal, is on track to be stable by Drupal 10's new release date. Releasing Starterkit means that we can move faster with theming improvements in Drupal Core. It also means that end users won't need to worry about whether upgrading Drupal breaks any of their sites' themes.

Instead of sub-theming a core base theme, Starterkit generates a starter theme for you from its latest defaults. This new theme will be more of a clone or fork, and will not have a runtime dependency on a core base theme.

CKEditor 5

We have made great progress on our content authoring experience. Check out this video for the latest update:

Automated updates

Automated updates, the Drupal community's number one feature request, is progressing well.

The plan is to have Automatic Updates in one of the first minor versions of Drupal 10, or even in 10.0 in December if the community can help us test and finalize it in time. Check out this video to learn more:

In Parts 2 and 3 of this blog series later this week, I'll focus on our strategy and proposed initiatives for Drupal 11.

I'd like to thank everyone who made our first in-person DrupalCon in two years a reality. It was amazing to see everyone's faces again and collaborate in person. Your contributions and hard work, as always, are inspiring to me!

I would also like to thank all the people that helped with my keynote. In no particular order, they are: Ash Sullivan, Alex Bronstein, Matthew Grasmick, Gábor Hojtsy, Jess (xjm), Ted Bowman, Baddý Sonja Breidert, Leslie Glynn, Tim Lehnen, Adam Bergstein, Adam Goodman, Théodore Biadala, and Alex Pott.

April 29, 2022

Here we go with day 3! In the morning, there are always fewer people due to the short night. The gala dinner is always a key activity during Botconf!

The last day started with “Jumping the air-gap: 15 years of nation-state efforts” presented by Alexis Dorais-Joncas and Facundo Munoz. Does “air-gap” means a big castle in the middle of the Internet? That’s the image that usually pops un in our minds. They covered malware targeting “protected environments”. Such malware implement an offline, covert communication mechanism between the compromised systems and the attacker. Think about “Stuxnet”. They found 17 families of such malware and, as usual, attribution was not easy, sometimes controversial. They are two categories:

  • Connected frameworks (with a connected side and an air-gapped side). A classic approach is initial compromise (spear phishing) and a weaponised USB stick is used to reach the air-gapped side. Results are stored back to the USB drive hopping that the user will connect the USB back to the connected side. Another technique is to write commands from the C2 on the USB drive.
  • Offline frameworks (no Internet connectivity). A user must “import” the malware

Automated execution is the most effective technique to launch the malware, for example via LNK remote code execution. In the case of non-automated execution, the main techniques are:

  • Abuse of Windows auto run
  • Planting decoy files to lure victims
  • Rig existing files with malicious code

They reviewed some well-known malware sample and explained the techniques used to interact with the air-gapped systems. To exfiltrate data, they used modified directory entries to hide the content on the USB drive. By example, if you create an invalid directory name, Windows will ignore it and it will be hidden. Another technique is to hook some file-related API and when a specific file is used (ex: Word document), data is appended to documents. This is how the Ramsay malware works.
How to defend against those types of attacks? USB drives is the key element. So, disable/prevent usage at much as possible. When you can’t, disable automatic execution, sanitize USB drives before inserting them in the air-gapped system.

The next talk was presented by Eric Freyssinet: “A vision on Cyberthreats”. There were already talks in the past about the French law enforcement services. Eric today presented a picture of what he’s doing with his team and the challenges they are facing. Years ago, fighting cybercrime was a niche but today, it’s a key element. A keyword mentioned multiple times was “together”: “we have to share together, we have to talk and act together”. A cyberspace command has been created to not only fight cybercrime to also to be present on the Internet and offer services to citizens, such as a 24×7 chat. About the cyber threat landscape, in 2020, there are 100K cases (+21% over 2019). In Q1-Q2 2021, +38% over 2020!. Mail challenges today are fewer data available in cleartext. more and more data to process, cloud environments, and more to come! Criminals also evolve very quickly: “Crime as a Service”, more and more facing open cyber-criminal ecosystems.

After a welcome coffee break, we attended “Detecting and Disrupting Compromised Devices based on Their Communication Patterns to Legitimate Web Services”, presented by Hen Tzaban. This was a remote presentation because the speaker was not able to join us in Nantes. Hen is specialized in data analysis. Today, enterprise protection switched from a blacklist system (too complex to manage and prone to issues) to behavioral monitoring. In the past, look for IOC and block bad IP/domains in proxies/firewalls. Today, it shifted to user behavior because criminals use sites like Twitter, Google, GitHub, Pastebin, etc. Legitimate services! For example: the malware HAMMERTOSS uses Twitter. Akamai developed a framework based on PSD (Power Spectral Density and Neural Networks model. The goal is to detect compromised hosts inside the enterprise. For example for DNS traffic: beaconing, multi-stage channels, and DGA are common techniques. Hen explained how they implemented this technique at Akamai.

The next one was “ProxyChaos: a year-in-review of Microsoft Exchange exploitation” by Mathieu Tartare. Except if you live on a small island, you should be aware of this massive issue. So big that FBI decided itself to clean up infected systems. Quick overview: It’s a suite of vulnerabilities:

  • ProxyLogin
  • When chained, pre-auth RCE
  • On-premise Exchange 2013, 2016 & 2019 are affected (not the cloud version)

It started in January 2021, before being reported to Microsoft, which decided to release an out-of-band patch. In March 2021, mass exploitation started. How does it work? They use CVE-2021-26855 then install a WebShell (ChinaChopper). The name of the webshell is controlled by the attacker, so attribution is easier. What appended in the wild? More than 10 APT groups used this vulnerability. Multiple actors could be on the same server at the same time. Pre-auth means a huge amount of scans. Hafnium was the first group to use the vulnerability. Mathieu reviewed multiple groups’ activities. Matthieu also reviewed “ProxyShell”. The exploitation is a bit different but very similar to ProxyLogon. Vulnerabilities are exploited in chain and a malicious PST file will be used to drop the webshell and more fun happen.

Then, Eric Leblond presented “Suricata and IOCs” (in preview for a workshop in 2023?). After a quick introduction to his company (Stamus Networks) that develops Suricata. Some advanced features were covered by Eric: IPrep, Lua scripting support and dataset. The concept is list matching on sticky buffer keywords. By example:

alert http … (http_user_agent;dataset:isnotset,official_agents;)

You can also use IOC matching with datasets. Here is another example:

alert dns … (dns.rename; dataset:isset,ioc_d,string,load ioc_domains.lst;)

Dataset can be modified on packet path, for example, build a list of HTTP user agents seen on the network! You can also combine datasets. Ex: build a set of UA agents but not for the site from Alexa1M. To improve the integration of MISP and Suricata, a tool has been developed by Sebdraven: IOCmite Concept: improve the integration of MISP & Suricata. MISP > IOCmite > (stocket) > Suricata

After the lunch break, Souhail Hammou presented “Privateloader – The malware behind a havoc-wreaking Pay-Per-Install service”. PPI services monetise wide distribution of malware. There exist public and private PPI services. Once the malware is installed, the loader sent back info to the C2 server for “accounting” purposes. Then the “customer” is billed based on usage. The “PrivateLoader” was detected by Intel471 in 2021. It is developed in C++, uses HTTP for C2 communications and is heavily maintained. Main distribution channel is malicious websites delivering cracked software. The loader has a core module which disables some security features and grabs its configuration. One of the information retrieved is the geographical location. Based on it, different payloads will be sent. It can also target specific hosts depending on a “profile”. Two types of payloads can be downloaded: PE files and browser extensions (for Chromium). Payloads are delivered through Discord URLs. Installed payloads list is sent back to the C2 server. What about tracking PrivateLoader? They created fake bots but “passive” (to not ring a bell) and analyzed the malware dropped on victims.

The very last talk was “Qakbot malware family evolution” presented by Markel Picado Ortiz and Carlos Rubio Ricote. This was the second talk about Qbot. They spent a lot of time analyzing plenty of samples. Qbot has many versions! They showed the multiple changes found in the code. After reviewing the version changes, they gave some statistics about affiliate IDs, versions, and timestamps to visualize who used which version in time.

What about this 9th edition of Botconf? It was so great to meet people in real life! There was 300 attendees coming from almost all continents, avibrant and diverse community. As usual, they already announced the 10th edition that will be held in April 2023 in Strasbourg! Kudos to the crew for this awesome event!

The post Botconf Day 3 Wrap-Up appeared first on /dev/random.

April 28, 2022

The second day is already over. Here is my recap of the talks. The first one was “Identifying malware campaigns on a budget” by Max “Libra” Kersten and Rens Van Der Linden. The idea was to search for malicious activity without spending too much money. Read: “using as few resources as possible”. The solution proposed must be scalable, reusable, and repurposable. From a budget point of view, it was based on Raspberry Pi 3B (~65€) + the cost of electricity and free software. In their research, they used a dataset of 500K malicious emails (that can’t be disclosed but the same applies to any dataset). They normalized the data then applied different modules to them:

  • The first module was used to check the email subjects and, using the Levenshtein distance (number of character changes), they found clusters of emails.
  • The second module was used on lure images (the logos used in phishing campaings to make the victim more confident).
  • The third one was focusing on URLs with passive reconnaissance techniques as well as active techniques.

I was a bit surprised to see the last slides… without really demonstrating the scripts they used (also, nothing was shared). Too bad, I was expecting something that could be reused (like a GitHub repo to clone). An interesting question from the audience: why not use Karton to automate these processes?

Max stayed on stage for a second (long) presentation: “See ya Sharp: A Loader’s Tale”. He explained his research about a specific loader: Cyax-Sharp. What is a loader? It is used to “load” a remote/local payload. It is usually encrypted, obfuscated, and has anti-debugging features. If classic malware samples are analyzed, loaders attract less attention and we lack reports but they are an essential stage in the infection process. The malware ecosystem lacks a naming convention and this payload can be referenced as “ReZer0” or later “Cyax-Shart. This is confusing. He reviewed some capabilities of the loader like disabling WinDefender, and anti-sandboxing techniques (searching for some DLLs). Then, how the configuration is managed. What are the changes over time?

  • The configuration changed: new features added
  • Sleep is configurable and message box can be displayed

Max gave some statistics about his research. He collected 513 samples. Process hollowing is present in 72% of cases. The remaining is spread across MSBuild hollowing, vbc, regsvc or direct launch
Persistence is used in 54%, based on scheduled tasks. Regarding protections, 79% had both enabled (anti-vm, anti-analysis). Payload families? 54% was AgentTesla, others

After a short coffee break, we were back with “Into The Silent Night” presented by Yuta Sawabe and Ryuichi Tanabe. If restrictions are lighter regarding the COVID, they are still some travel issues between countries, and the speakers were not able to join Nantes. They recorded the presentation. Silent Night is the new name of ZLoader. The goal of this research was to track C2 servers. In this case, a DGA is used and make the analysts’ life more difficult. They build a tracking system to collect data, extract threat intel and analyze the results. Silent Night is a modular trojan from the Zeus family, delivered via exploit kits, fake software, phishing, etc. Its C2 communications can be identified via /cp.php, /gate.php or /logs.
The process they used:

  • collect sampled (VT,, Triage)
  • extract config via triage
  • calculate DGA domains
  • collect log files from C2 servers

Some results they shared:

  • 453 samples
  • 22 RC4 keys
  • Peak of Number of infections was in Sep 2021
  • Main country was US

When you know the DGA, domains are registered in advance and you can trace the future attack activities. 32 domains generated per day (not all of them used)

We continued with “A fresh look into the underground card shop ecosystem” with Beatriz Pimenta Klein and Lidia Lopez Sanz. This was interesting because I’ve no experience with these platforms. Where are cards sold?

  • Automated vending cards (AVCS)
  • Marketplaces
  • Forums & chats

They focused on the first type. But, how are they stolen? Via PoS malware that dumps from memory but skimmers remain a classic attack.CVVs are also known as “cards”: phishing pages, digital skimmers, leaks, info stealers. In the next part of the talk, they presented some card shops and compared them:

  • Brian’s Club
  • Legendary Rescator

By the way, the price of a cart can go from $3 to $269 depending on the country, the bank, the expiration date, etc. A lot of card shops are inactive because they organized their own closure, they have been seized by law enforcement agencies, or … exit scan (the most common one). It was interesting to learn that typosquatting is very common in card shops. They share the same cards and… deliver malware samples!

The next talk was presented by Dominika Regéciová: “Yara: Down the Rabbit Hole Without Slowing Down“. This talk was a review of YARA, performances, and changes. Dominika started with a quick review of YARA (who does not this tool developed by VT?). Writing YARA rules is pretty easy but when you need to scan a huge set of data (size or number of files), you’ll quickly face issues… like warnings from YARA or the required scan time. You’ll have to optimize the rules! The first optimization was to take into account “atoms” selection from strings. How YARA handles strings. Regular expressions are a common issue with YARA and may drastically affect the speed. The next issue was related to the “too many matches” problem. Dominika explained how to write better rules. She demonstrated the optimization with an example that was executed in 3 seconds instead of 45 mins (without optimization). If you’re interesting int this topic, have a look here.

Then, we had a talk provided by Alibaba Cloud: “Detecting emerging malware on cloud before VirusTotal can see it” by Anastasia Poliakova and Yuriy Yuzifovich. Why this research? Third-party validation has a cost (latency, costs!). Sometimes tools like VT give ambiguous results. Is a low VT score a sign of maliciousness? Also, many malware samples targeting Chinese customers are underreported to VT. To avoid these problems, Alibaba Cloud decided to start its own detection tool based on ssdeep… They explained in a lot of detail how to build a tool more efficiently than… VT! (that’s what they said). I had a discussion with other people about this and we all had the same feeling: Are they prepared a competitor to VT?

After the lunch break, we restarted with “Warning! Botnet is in your house…” by Vitaly Simonovich and Sarit Yerushalmi. For sure, I was curious about this title but it was not what I expected, however, the content was good. The research goals were: how botnets operate, for which purpose, and how it started.
The initial discovery was CVE-2017-9841 (target: PHPUnit RCE). It starts with a POST request and the return data is a PHP script with a system() and a curl + payload execution. The payload is “” which install a Python script in a crontab. Python payload grabs a zip file, unzip it and executes the new Python payload “”. This payload makes an HTTP request with a user-agent. In return, you get some JSON data. They found multiple bundles of files that targeted multiple vulnerabilities (RCE, RFI, …)
But what was the botnet purpose? To understand this, they created a honeypot and simulated a fake compromised host. After 1h, the attacker contacted the host. He added a second web shell, escalated his privileges, and got full control of the server. Third-party services were also used: GitHub & Pastebin to store more payloads. The bot was called “KashmirBlack”, why? It was the name of a git repo.
Later, they found the use of a dropbox account… and the associated token to access it.
Some numbers:

  • 285 bots
  • 480 attacks / day / bot
  • 140K attacks / day
  • 0.5% success
  • 1000 new bots / day

The next one was “How Formbook became XLoader and migrated to macOS” by Alexey Bukhteyev and Raman Ladutska. Here again, they were not able to travel and the talk was presented via an interactive Zoom session. Overview of the malware: banker & stealer malware. 100+ apps targeted. 6y old, 3000+ campaigns, worldwide targets. Now, called XLoader and targets macOS & Windows. First spotted in 01/2016, may 2018 last post from authors. In Oct 2020, XLoader was born. Formbook sales stopped and the XLoader model changed. They explained carefully how obfuscation is used to hide the functions and strings. More information is available here.

After the coffee break, Vasiliy Berdnikov and Aseel Kayal presented “SandyBlacktail: Following the footsteps of a commercial offensive malware in the Middle East”. This one was presented under TLP:Amber. Great reviews of the malware with plenty of details.

The next one was “Smoke and Fire – Smokeloader Historical Changes and Trends” presented by Marcos Alvarez. He started with a question to the audience. Many people know SmokeLoader but not many of us put our hands in the code. He did… intensively! His talk covered the findings and all changes across the years. But first, he explained with this loader is popular: Based on its simple business model, the cost, and complexity. Indeed it has many core features like anti-analysis, persistence, network & crypto features, payload injection, and extensions (modules). In the next part of the presentation, Marco presented all changes since 2011(!).

Why is it a successful loader?

  • Business model (direct with the author)
  • Cost
  • Complexity

Its core features are: anti-analysis, persistence, network, crypto, payload injection and… extensions (plugins) From an operational aspect: Initial recon + modules -> Data harvesting + infostealer -> Final payload (banker, ransomware, RAT).

The last talk was “PARETO: Streaming Mimicry” presented by Inna Vasilyeva. This was a sponsored talk but technical enough! PARETO is a botnet that infected Android devices (1M) to spook CTV apps. Inna explained that the malware mimics a streaming TV product to generate a higher price for ad impressions. This is achieved via the TopTopSDK. After technical details, she explained that a takedown operation has been started. Google and Roku were contacted as well as LE agencies.

This day ended with a round of funny/interesting lightning talks about the following topics:

  • ONYPHE (with a demo of a specific URL shown earlier today : /upl.php
  • Advanced Persistent Speaker @ Botconf and DESKTOP-Group status
  • Crowdsourcing the demise of Twitter’s business model
    • JusticeRage/twitter-blocklist
  • WTF VT?!
  • Should we care about formula injection?
  • Binary Analysis course
  • Hunting with Nuclei
  • Iranian & Russian eCrime: It’s complicated
  • Yet another dev fail?
  • Botnet Tracker
  • DDX – Detection, Detonation & Config eXtraction
  • Where’s my botconf recording?

Day 2 is over, the gala dinner is over, it’s now time to get some sleep hours for the last day!

The post Botconf Day 2 Wrap-Up appeared first on /dev/random.

April 27, 2022

Incredible! Here is my first wrap-up for two years! Now that the COVID seems under control, it’s so good to be back at conferences and meet a lot of good friends. Like most of the events, Botconf was canceled, postponed, uncertain until the COVID situation was better and, finally, it occurs live! For this edition, we are in Nantes, France. I arrived yesterday to attend a workshop performed by about MWDB. I learned some interesting concepts and will probably write one or two blog articles about this tool.

The first day started with some words by Eric Freyssinet, the boss of the conference. This edition was back to normal with around 300 people registered, and coming from multiple countries. After some words about the sponsors (without them, no conference), he remembered that Botconf respects the TLP and privacy of attendees (about pictures, by example). With this edition, we are also back to the roots, the very first edition was already organized in Nantes in… 2013!

The first time slot was assigned to Berk Albayrak and Ege Balci who presented “Behind the Scenes of QBot”. The talk was given under TLP:Amber so I respect what Eric said and I won”t disclose any information they provided. They make an in-depth analysis of the QBot infrastructure. QBot (also known as Qakbot) is a well-known bot that is active for a long time. They provided a lot of useful information about the botnet internals, how it works, and some statistics about victims.

The second talk was “RTM: sink-holing the botnet” presented by Rustam Mlirkasymov and Semyon Rogachev. They started to work on this case in 2019 with the help of law enforcement agencies across multiple countries that helped to collect enough pieces of evidence to catch the attackers behind the botnet. It’s not a secret that Russia remains the top-1 provider of malware. Most banking groups in 2008-2017 spoke Russian. The RTM is spread through spear-phishing emails and has multiple stages:

  • First stage: reconnaissance module (verifiy the presence of financial activity)
  • Second stage (RTM Core): download of the malware from a C2 server like Pony Stealer. It has many commands like reboot, shutdown, video-process, …
  • Third module (RTM Modules): many modules can be installed (like lateral movement, money stealing)

Of course, ransomware can also be deployed! The reconnaissance phase is based on the browser history (looking for the presence of interesting URLs). The most interesting part was the different ways used by the malware to connect to C2 servers: via blogs, via .bit domains or… based on Bitcoin transactions! The technique was explained, the IP address bytes are extracted from two transactions (2 x 2 bytes). Note that all C2 were proxy servers. When they understood how the Bitcoin transactions were used to generate the C2 IP. They create specifically crafted ones to “insert” a rogue IP address (that they managed) as a fake C2 server. This server was used to collect information (playing Man in the Middle) and redirect the traffic to official C2 servers. Brilliant technique!

The next presentation was “Private Clubs For Hackers: How Private Forums Shape The Malware Market” by David Décary-Hétu and Luca Brunoni. David is a legal guy and explained that there is a huge gap between legal people and “techies” but they have to work together to fight against criminals. The idea of this talk was to reduce this gap. They followed the criminal behavior of bad guys across different forums. These forums are used as sharing platforms. Sometimes, they are also used to perform transactions. Some of them are “public” while others are restricted (“private”) to keep out law enforcement agencies, researchers, etc. They try to create a safer and trusted environment… in theory! The initial question was: “Is there a myth of the elite or private forums?”. They compared two forums: one public with ~60K users and a private one with ~185K users and focused on malware trends. First finding, there is not a big difference in malware types (the goal remains the same: access the compromised computer and exfiltrate data). The type of access is RAT or bot but, on the private forum, more RAR were offered. About the exfiltration, the public forum offered more “stealers”. They also looked at prices, the reputation of vendors. What is the key difference? Not much:

  • On the private forum, reputation and creation of good profiles is key
  • On the private forum, they asked to not attack Russia
  • Both provide a high sense of inpunity.

Interesting talk, not technical but it provided a good overview of the “underground” market!

After the lunch, Leon Böck presented “Insights and Experiences from Monitoring Multiple P2P Botnets“. Based on the blind men and the elephant; Leon talked about similarities with botnets: what are the targeted devices? the behavior? the affected regions? First, efforts are necessary to perform the reserve engineering of the malware and be able to understand the P2P protocol used to communicate with the C2 infrastructure. Leon explained the approach that was used in this research, based on crawlers (getting data from an external point of view) and sensors (which are part of the P2P network). The goal was to create a “BMS” or Botnet Monitoring System. After a detailed review of the infrastructure in place, Leon completed the talk with some statistics he gathered, like the presence of a diurnal pattern in many botnets.

The next talk was tagged as TLP:Green: “TA410: APT10’s distant cousin” presented by Alexandre Côté Cyr and Matthieu Faou. They mentioned that a blog post will be released by Eset soon…

Then, “Operation GamblingPuppet: Analysis of a multivector and multiplatform campaign targeting online gambling customers” was presented by Jaromir HOREJSI and Daniel Lunghi. This research started with a sample of Xnote connected to the Operation DRBControl’s domain name. The infection vector was a fake chat application called “Mimi” (“secret” in Chinese). It targeted Windows and macOS computers. Built on ElectronJS, the malicious payload was delivered via extra code added at the end of the file electron-main.js. Another technique was a persistent XSS combined with a fake Flash installed. Yes, even if Flash is dead for a while, this technique still works. A third infection vector discovered was a fake .dmg to install BitGet (a Singapore cryptocurrency company application). Then, some payloads were reviewed (example: oRAT on macOS or AsyncRAT on Windows). Finally, the infrastructure was reviewed: 50 C2 servers, and 12 different RAT families(!). Based on “rude” strings, comments, it was clear that the actors were Chinese people:

After the afternoon coffee break, the next presentation was “Fingerprinting Bot Shops: Venues, Stealers, Sellers” by Bryan Oliver and Austin Turecek. The idea behind this research was to understand how bot shops and their ecosystems are used today. Some facts:

  • Infostealers are rent, data exfiltrated and used to bot shops
  • Bots are used to obtain initial access and/or monetised
  • Combo “email:pass” is no longer enough for initial access brokers! Bot shops are the way to go with infostealer and their data (ex: cookies, MFA details, …)
  • They covered 38 account shops, 5 bot shops over the last 3y
  • Main components are bot shops, malware developers, cloud providers
  • Some well-known bot shops: Genesis, Russian Market, Amigos, 2Easy
  • Some cloud providers: Ross Cloud, Cash Cloud, Dark Logs Cloud, …Cloud Altery

What about monetization?

  • Logs may be sold by category (and resold!)
  • Logs can be used by multiple actors
  • Persistent infections opens up new opportunities with status updates
  • Cashing out? Cryptocurrency of course!
  • Slack, Citrix, SSO, Okta access are sold and searchable (used for lateral movement)
  • Some bots on Russian market are identical: rent it on one, it disappear on the second

Techniques are also constantly updated: Browsers, proxies, new emulations, new data points.

The next one was “How to Eavesdrop on Winnti in a Live Environment Using Virtual Machine Introspection (VMI)” presented by Philipp Barthel and Sebastian Eydam. The goal was to explain a typical usage of a tool called Tycho to perform malware analysis but from the hypervisor point of view. The selection malware was Winnit, a classic APT RAT that was used to attack many DAX corporations. First, they explained what is “VMI” or Virtual Machine Introspection. It’s a kind of IDS to collect and detect suspicious behavior. From the IDS world, we have HIDS (host) and NIDS (network). VMI is the best of both. It connects to the hypervisor (to the malware does not detected the presence of an agent in the sandbox). Tycho can be used to interact with the OS and collected data. By example:

calc = tycho.open_process(“calc.exe”)

It seems to be a very powerful tool but… for me, the presentation was too much focused on a commercial tool. Indeed, Tycho is not free but it deserves to be tested. Based on Tycho, they reviewed how Winnit encrypts data, how it communicates with its C2 server, etc.

The last presentation was “Evolution of the Sysrv mining botnet” with György Luptak and Dorka Palotay. The idea was to explain how to reverse Golang binaries using Ghidra. Why? More and more malware samples are written in Go (IoT, Linux) and Sysrv was a good example. What are the (some) issues with Go (from a reverse engineering point of view):

  • Huge binaries (statically linked)
  • Unusual strings handling
  • No symbol names (stripped binaries)

Compared to other tools, Ghidra does not have all the capabilities by default. After a quick presentation of Sysrv (found in 2020, wormable and cryptominer), they explained how to use Ghidra to analyze Go code. Go programs are organized in packages. A package is a collection of source files in the same directory that are compiled together. They already exist tools to deobfuscate Go programs like obfuscate. But what about Ghidra? When you load Sysrc, Ghidra will find 3800+ functions! Where to start? Which one(s) is/are interesting? In the next part of the presentation, Dorka explained in detail how Go uses strings. In Go, they don’t end with a NULL character. After some examples, some Ghidra scripts were introduced to automatically extract strings (and function names) from Go programs. It was for me, the best talk of this first day! All scripts are available here.

Ready for day 2!

The post Botconf Day 1 Wrap-Up appeared first on /dev/random.

27 avril 2022

S’il y’a une personne qui n’est guère enchantée de me voir déconnecté, c’est mon éditeur. Certes, il comprend l’expérience. Mais il a un livre à promouvoir. Après tout, il a investi beaucoup d’argent et d’énergie pour produire la version audio de mon roman Printeurs et il espère me voir en faire la promotion, tant au format papier, électronique qu’audiolivre. Il attend de moi que je vous répète à longueur de journée que l’audiolivre lu par Loïc Richard m’a procuré des frissons, que Printeurs est un super roman pour dénoncer les abus de la publicité et de la surveillance mais pas que la version pirate est disponible sur

Mais comment promouvoir une œuvre si l’artiste ne tente pas d’occuper l’espace sur les réseaux sociaux ? C’est une problématique très actuelle pour de nombreux musiciens, comédiens, écrivains. Facebook, c’est mal. Mais c’est essentiel pour se faire connaître. Ou du moins, ça semble essentiel. C’est d’ailleurs la raison pour laquelle j’ai moi-même mis tellement de temps à supprimer mon compte.

Comme le souligne David Bessis dans son livre « Mathematica », si l’intuition et le rationnel ne s’accordent pas, il ne faut pas choisir entre l’un et l’autre. Il faut creuser jusqu’à comprendre d’où provient la dichotomie, jusqu’à ce que l’intuition et le rationnel soient alignés.

Reposons la question autrement : pourquoi les artistes ont-ils l’impression que les réseaux sociaux sont essentiels à leur carrière ? Parce qu’ils ont des retours : des commentaires, des likes, des partages. Des statistiques détaillées sur « l’engagement de leur communauté ». Qui leur fournit ces retours ? Les réseaux sociaux eux-mêmes !

Qui sont les artistes qui ont le plus de followers sur les réseaux sociaux ? Les artistes qui ont du succès… en dehors des réseaux sociaux !

Les réseaux sociaux nous font confondre la cause et l’effet. En soi, ils ne sont la cause d’aucun succès, ils ne font que souligner les succès existants. Ils ne font que récompenser l’utilisation de leur plateforme par une monnaie de singe qu’ils contrôlent. Le « Like ».

Lors d’un récent voyage en train, j’ai pu observer une jeune femme qui a passé le trajet sur son smartphone. D’un coup de pouce, elle faisait scroller son écran à une vitesse effrayante, ne s’arrêtant parfois qu’une milliseconde pour mettre un like avant de continuer. Le « Like » tant convoité n’est, en réalité, qu’une microfraction de seconde. Il ne représente rien. N’a aucune valeur. Pire, il est souvent ajouté par convention sociale (la jeune femme a notamment liké une photo représentant une main avec une bague à l’annulaire avant de reprendre son défilement effréné).

Poster du contenu sur les réseaux sociaux pour obtenir des likes est une quête chimérique. L’artiste travaille littéralement au profit du réseau social pour l’alimenter, pour donner une raison aux utilisateurs de venir le consulter. En échange, il peut avoir la chance de recevoir une impression virtuelle de succès.

Il arrive, parfois, de faire le buzz et de se faire connaître à travers les réseaux sociaux. J’ai fait cette expérience plusieurs fois durant ma carrière de blogueur. Certains de mes billets ont été vus par plusieurs centaines de milliers de personnes en une journée. D’autres m’ont valu des séquences à la télévision nationale. Aucun n’a eu le moindre impact durable sur ma vie si ce n’est d’être parfois reconnu comme « le blogueur qui… ».

Je parle d’expérience : le buzz n’a, la plupart du temps, aucun impact durable. Il ne permet pas de gagner autre chose que des statistiques. Il est complètement imprévisible, aléatoire. C’est le Graal de millions de marketeux qui passent leur journée à pondre des dizaines de tentatives de buzz.

Pour un artiste, vouloir faire le buzz sur les réseaux sociaux, c’est l’équivalent de jouer au lotto. Dix fois par jour. Contre une armée de professionnels qui jouent mille fois par jour et n’ont pas la moindre morale ou pudeur artistique. C’est commencer à réfléchir au nombre de messages à poster, le jour idéal pour « maximiser l’engagement ». C’est un métier. C’est stupide. C’est immoral. C’est tout sauf de l’art…

Au fond, qu’est-ce qu’un artiste ? Ou un artisan ?

C’est quelqu’un qui se consacre à son métier, qui tente en permanence de s’améliorer. Dans son « Mathematica » susnommé, David Bessis donne l’exemple du jeune Ben Underwood qui, après avoir perdu l’usage de ses yeux très jeune, a développé une capacité à explorer son environnement en émettant des clics avec la langue et en écoutant le son produit. Cette technique, qui parait incroyable, serait à la portée de tout un chacun. Les premiers résultats s’obtiendraient après une dizaine d’heures d’apprentissage.

Dix heures, cela ne parait rien. Mais dix heures concentrées entièrement consacrées à un unique sujet, c’est beaucoup. Il n’y a pas beaucoup de domaines auxquels nous consacrons une dizaine d’heures. Une dizaine d’heures, cela permet probablement de se lancer, de comprendre ce qui est possible. Une dizaine d’heures de piano permettent de jouer un petit morceau.

Pour devenir bon, il faut aller plus loin. Des centaines, des milliers d’heures. À partir de mille heures consacrées avec concentration sur un sujet, vous devenez un expert. Et à partir de dix mille heures, vous devenez, je crois, un véritable artiste, un orfèvre. Ce que vous produisez devient plus personnel, plus précis. Différent. Vous commencez à apporter une réelle plus-value au monde, vous créez quelque chose qui n’existe pas, que personne d’autre ne pourrait faire. Je me souviens d’avoir entendu que, tous les matins, Michael Jordan passait deux heures à lancer des ballons vers le panier de son terrain de basket personnel. Qu’ils soient bons ou mauvais, il y passait deux heures. Tous les matins. Tiger Woods affirme faire pareil sur les practices de golf, avouant que rien ne le rend plus heureux que d’avoir une pyramide de balles à frapper à la suite. Ce sont des stars, des artistes. Nous voyons leurs succès, nous les likons sur les réseaux sociaux. Mais nous ne voyons pas leur travail, les milliers d’heures passées à échouer mécaniquement dans l’ombre.

Les réseaux sociaux nous font apparaitre le succès comme une sorte de recette magique, une poudre de perlimpinpin avec effet immédiat. Il suffirait de la trouver, d’essayer encore et encore. Comme s’il suffisait de jouer encore et encore au lotto pour devenir riche.

C’est évidemment un mensonge. Un mensonge facile. Les algorithmes des réseaux sociaux récompensent ceux qui sont les plus actifs en mettant en avant leurs publications, en encourageant voire en créant de toutes pièces des likes. J’ai personnellement fait l’expérience d’acheter de la publicité sur Twitter. J’ai récolté beaucoup de likes. J’ai réussi à démontrer que la plupart étaient faux. Sur Facebook, le mensonge est encore plus transparent : le nombre de « clics » augmente comme par magie dès que l’on paye. Mais ces clics en question ne se transforment que très rarement en une action concrète.

Les plateformes marketing ont été pensées par le marketing pour le marketing. Elles ont été créées par des gens dont le métier est de vendre des cigarettes à des enfants de douze ans, de l’alcool aux adolescents, des SUVs aux citadins. De vous faire oublier que vous polluez en vous faisant polluer plus. De vous rendre malheureux pour vous faire croire que vous seriez heureux en consommant plus. De diluer la vérité pour la rendre indistinguable du mensonge.

Le simple fait d’utiliser une plateforme dédiée au marketing nous transforme en professionnels du marketing. En menteurs amoraux. Les militants écologistes, anticapitalistes ou les promoteurs d’actions locales qui utilisent ces réseaux sociaux sont, sans le savoir, complètement corrompus. Ils militent, sans s’en rendre compte, pour de l’ultra-consumérisme permanent. C’est se rendre en jet privé, la cigarette à la bouche, à une manifestation pour dénoncer l’inaction climatique. C’est tenir une réunion d’organisation du potager partagé dans un MacDonalds.

Comme l’explique Jaron Lanier dans « Who Owns the Future? », les réseaux sociaux promeuvent l’existence de « superstars » dans un modèle économique de type « The winner takes it all ». Un artiste est soit multimillionnaire, soit pauvre et ignoré. Il n’y a plus de juste milieu. La culture s’uniformise, s’industrialise. Si nous voulons, au contraire, promouvoir des arts plus variés, des communautés à taille humaine, refuser les règles monopolistiques est une simple question de bon sens. Et de survie.

Tout cela m’est apparu comme évident le jour où j’ai effacé mon compte Facebook. Tant que mon compte existait, j’étais incapable de le voir, de le vivre. J’avais beau me dire que je n’utilisais plus vraiment Facebook, le simple fait d’avoir des milliers de followers me donnait l’illusion d’une communauté à entretenir, d’une foule attendant avidement quelques mots de ma part. Une illusion de succès.

Mes posts avaient beau n’avoir que très rarement un impact, j’autojustifiais la nécessité de garder mon compte. Une bouffée de fierté m’envahissait lorsque mon compteur faisait un bon en avant.

L’illusion s’est dissipée à la seconde où mon compte a été supprimé.

J’ai l’intuition que l’art est l’exact contraire du marketing. Il faut consacrer du temps à s’améliorer, à s’exprimer.

Si nous voulons être artistes, nous devons refuser les règles du marketing. Chaque heure de disponible doit être consacrée à notre art au lieu d’être consacrée à devenir un expert… en marketing sur les réseaux sociaux.

C’est difficile. C’est long.

Nicholas Taleb, l’auteur du livre « Black Swan », a coutume de dire que « si c’est une bonne chose, mais qu’il n’y a aucun feedback immédiat, alors c’est qu’il y’a un avantage, un edge ». Si vous travaillez votre art dans votre cave au lieu de poster sur les réseaux sociaux, vous deviendrez meilleur. Si vous vous consacrez à faire des concerts locaux, à aller à la rencontre de votre public existant sans chercher à tout prix à l’agrandir, alors il s’agrandira sans que vous vous en rendiez compte. Vous n’aurez plus un compteur, mais des véritables humains en face de vous.

Lorsqu’un artiste se consacre aux réseaux sociaux, lorsqu’il parle de « sa communauté » pour désigner le chiffre inscrit sous le mot « followers », il trahit son art. Il abandonne la création pour faire du marketing. Sans surprise, il attire alors une foule de followers qui est sensible au marketing, qui clique sans trop réfléchir, qui suit la mode du moment, qui change d’avis à la moindre distraction. Sur les réseaux sociaux, le compteur ne reflète souvent que la version frustrée, aigrie, qui s’ennuie du véritable être humain qui respire, rit, chante et danse sans son téléphone. Sur les réseaux sociaux, les véritables amateurs d’art sont forcément déçus. Ils viennent pour l’art et sont, à la place, bombardés de publicités pour l’art en question. Plutôt que de lire un nouveau livre, ils reçoivent cent messages les invitant à lire un livre déjà lu.

Au plus je me suis éloigné des réseaux sociaux, au plus j’ai rencontré des personnes qui n’y étaient pas. Par conviction ou par simple incapacité d’y trouver de l’intérêt. Des humains qui lisent des livres plutôt que de suivre les auteurs sur Twitter. Qui vont à des expos photo plutôt que de scroller sur Instagram. Des lecteurs de mon blog qui me demandaient sincèrement d’arrêter d’écrire pour les réseaux sociaux, mais d’écrire pour eux. Je n’arrivais pas à les entendre.

Des millions de personnes ne sont pas sur les réseaux sociaux. Elles ne sont tout simplement pas représentées dans les statistiques. Elles n’existent pas pour le marketing. Elles changent le monde de manière probablement bien plus efficace que ceux qui créent des pages Facebook pour promouvoir l’écologie.

Les réseaux sociaux corrompent. Êtes-vous moralement et artistiquement alignés avec le fait que toutes les données de votre « communauté » sur Twitter vont désormais être la propriété privée d’Elon Musk, l’individu le plus riche de la planète qui, à l’heure où j’écris ces lignes, parle de racheter la plateforme ? L’élan artistique qui nous anime, nous transcende, nous dépasse ne nécessite-t-il pas, pour exister, d’être aligné avec nos valeurs morales les plus profondes ?

Peut-être que la responsabilité sociétale des artistes est d’utiliser leur pouvoir pour refuser la toute-puissance de quelques monopoles publicitaires. Simplement en refusant d’y être. En mettant en place une newsletter (si possible pas sur une plateforme à visée monopolistique) et un site web avec un flux RSS. En créant une véritable relation avec leur public. Une communauté se construit sur le long terme, en accueillant et respectant chaque nouveau membre, en étant patient, en espérant que fonctionne le bouche-à-oreille.

Les réseaux sociaux nous font croire qu’il n’y a pas d’alternative pour exister autre que de hurler « Regardez ! J’existe ! » à tout bout de champ. Il y’en a une. Celle qui consiste à chuchoter « Merci à vous d’être présents ce soir. Votre présence me réchauffe le cœur et m’inspire. »

Les artistes et les activistes n’ont jamais eu autant de pouvoir pour rendre le monde meilleur qu’aujourd’hui, alors qu’ils peuvent encore tout arrêter et rendre les plateformes marketing de moins en moins utiles.

Encore faut-il qu’ils en aient le courage, qu’ils abandonnent le rêve entretenu par les plateformes qu’ils pourraient devenir la prochaine superstar. Qu’il leur suffit de continuer de jouer à la roulette, d’acheter le prochain ticket. Que le succès véritable leur tend les bras pour peu qu’ils investissent 10, 20 ou 1000€ dans une publicité ciblée.

Si quitter les réseaux sociaux et leur ubiquité est difficile pour l’individu, elle est un devoir pour les créateurs, les artistes, les activistes. Cette prise de conscience est bien tardive de ma part, moi qui ai, pendant des années, succombé aux sirènes de l’apparence de succès, vous appelant à me suivre et à me liker.

À tous ceux qui m’ont écouté, je m’excuse sincèrement. Supprimez vos comptes. Puissent ces quelques lignes tenter de réparer une partie du mal auquel j’ai contribué. À tous ceux qui m’ont prévenu, je m’excuse de ne pas avoir réussi à vous entendre.

Recevez les billets par mail ou par RSS. Max 2 billets par semaine, rien d’autre. Adresse email jamais partagée et définitivement effacée lors du désabonnement. Dernier livre paru : Printeurs, thriller cyberpunk. Pour soutenir l’auteur, lisez, offrez et partagez des livres.

Ce texte est publié sous la licence CC-By BE.

April 25, 2022

I published the following diary on “Simple PDF Linking to Malicious Content“:

Last week, I found an interesting piece of phishing based on a PDF file. Today, most of the PDF files that are delivered to end-user are not malicious, I mean that they don’t contain an exploit to trigger a vulnerability and infect the victim’s computer. They are just used as a transport mechanism to deliver more malicious content. Yesterday, Didier analyzed the same kind of Word document. They are more and more common because they are (usually) not blocked by common filters at the perimeter… [Read more]

The post [SANS ISC] Simple PDF Linking to Malicious Content appeared first on /dev/random.

April 22, 2022

I use CrashPlan for cloud backups. In 2018 they stopped their Home solution, so I switched to their Business plan.

It works very well on Linux, Windows and Mac, but it was always a bit fickle on my QNAP NAS. There is a qpkg package for CrashPlan, and there are lots of posts on the QNAP support forum. After 2018, none of the solutions to run a backup on the NAS itself stopped working. So I gave up, and I didn’t have a backup for almost 4 years.

Now that I have mounted most of the network shares on my local filesystem, I can just run the backup on my pc. I made 3 different backup sets, one for each of the shares. There’s only one thing that I had to fix: if Crashplan runs when the shares aren’t mounted, then it thinks that the directories are empty, and it will delete the backup on the cloud storage. As soon as the shares come back online, the files are backed up again. It doesn’t have to upload all files again, because Crashplan doesn’t purge the files on it’s cloud immediately, but the file verification still happens. That takes time and bandwidth.

I contacted CrashPlan support about this issue, and this was their reply:

I do not believe that this scenario can be avoided with this product – at least not in conjunction with your desired setup. If a location within CrashPlan’s file selection is detached from the host machine, then the program will need to rescan the selection. This is in inherent drawback to including network drives within your file selection. Your drives need to retain a stable connection in order to avoid the necessity of the software to run a new scan when it sees the drives attached to the device (so long as they’re within the file selection) detach and reattach.

Since the drive detaching will send a hardware event from the OS to CrashPlan, CrashPlan will see that that hardware event lies within its file selection – due to the fact that you mapped your network drives into a location which you’ve configured CrashPlan to watch. A hardware event pointing out that a drive within the /home/amedee/Multimedia/ file path has changed its connection status will trigger a scan. CrashPlan will not shut down upon receiving a drive detachment or attachment hardware event. The program needs to know what (if anything) is still there, and is designed firmly to track those types of changes, not to give up and stop monitoring the locations within its file selection.

There’s no way around this, aside from ensuring that you either keep a stable connection. This is an unavoidable negative consequence of mapping a network drive to a location which you’ve included in CrashPlan’s file selection. The only solution would be for you to engineer your network so as not to interrupt the connection.

Nathaniel, Technical Support Agent, Code42

I thought as much already. No problem, Nathaniel! I found a workaround: a shell script that checks if a certain marker file on the network share exists, and if it doesn’t, then the script stops the CrashPlan service, which will prevent CrashPlan from scanning the file selection. As soon as the file becomes available again, then the CrashPlan service is started. This workaround works, and is good enough for me. It may not be the cleanest solution but I’m happy with it.

I first considered using inotifywait, which listens to filesystem events like modifying or deleting files, or unmount. However when the network connection just drops for any reason, then inotifywait doesn’t get an event. So I have to resort to checking if a file exists.


all_files_exist () {
    while read -r line; do
        [ -f "$line" ]
        if ! (exit $status); then
            echo "$line not found!"
            return $status
    done < "$file_list"

start_crashplan () {
    /etc/init.d/code42 start

stop_crashplan () {
    /etc/init.d/code42 stop

while true; do
    if all_files_exist; then
    sleep 60
  • file_list.txt contains a list of testfiles on different shares that I want to check. They all have to be present, if even only one of them is missing or can’t be reached, then the service must be stopped.
  • I can add or remove shares without needing to modify the script, I only need to edit file_list.txt – even while the script is still running.
  • Starting (or stopping) the service if it is already started (or stopped) is very much ok. The actual startup script itself takes care of checking if it has already started (or stopped).
  • This script needs to be run at startup as root, so I call it from cron (sudo crontab -u root -e):
@reboot /home/amedee/bin/

This is what CrashPlan support replied when I told them about my workaround:

Hello Amedee,

That is excellent to hear that you have devised a solution which fits your needs!

This might not come in time to help smooth out your experience with your particular setup, but I can mark this ticket with a feature request tag. These tags help give a resource to our Product team to gauge customer interest in various features or improvements. While there is no way to use features within the program itself to properly address the scenario in which you unfortunately find yourself, as an avenue for adjustments to how the software currently operates in regards to the attachment or detachment of network drives, it’s an entirely valid request for changes in the future.

Nathaniel, Technical Support Agent, Code42

That’s very nice of you, Nathaniel! Thank you very much!

April 20, 2022

I have a NAS, a QNAP TS-419P II. It’s about a decade old and it has always served me well. Due to various reasons I have never used it in an efficient way, it was always like a huge external drive, not really integrated in the rest of my filesystems.

The NAS has a couple of CIFS shares with very obvious names:

  • backup
  • Download
  • Multimedia, with directories Music, Photos and Videos

(There are a few more shares, but they aren’t relevant now.)

In Ubuntu, a user home directory has these default directories:

  • Downloads
  • Music
  • Pictures
  • Videos

I want to store the files in these directories on my NAS.

Mounting shares, the obvious way

First I moved all existing files from ~/Downloads, ~/Music, ~/Pictures, ~/Videos to the corresponding directories on the NAS, to get empty directories. Then I made a few changes to the directories:

$ mkdir backup
$ mkdir Multimedia
$ rmdir Music
$ ln -s Multimedia/Music Music
$ rmdir Pictures
$ ln -s Multimedia/Photos Pictures
$ rmdir Videos
$ ln -s Multimedia/Videos Videos

The symbolic links now point to directories that don’t (yet) exist, so they appear broken – for now.

The next step is to mount the network shares to their corresponding directories.

The hostname of my NAS is minerva, after the Roman goddess of wisdom. To avoid using IP addresses, I added it’s IP address to /etc/hosts:	localhost     modem	minerva

The shares are password protected, and I don’t want to type the password each time I use the shares. So the login goes into a file /home/amedee/.smb:


Even though I am the only user of this computer, it’s best practice to protect that file so I do

$ chmod 400 /home/amedee/.smb

Then I added these entries to /etc/fstab:

//minerva/download	/home/amedee/Downloads	cifs	uid=1000,gid=1000,credentials=/home/amedee/.smb,iocharset=utf8 0 0
//minerva/backup	/home/amedee/backup	cifs	uid=0,gid=1000,credentials=/home/amedee/.smb,iocharset=utf8 0 0
//minerva/multimedia	/home/amedee/Multimedia	cifs	uid=0,gid=1000,credentials=/home/amedee/.smb,iocharset=utf8 0 0
  • CIFS shares don’t have a concept of user per file, so the entire share is shown as owned by the same user. uid=1000 and gid=1000 are the user ID and group ID of the user amedee, so that all files appear to be owned by me when I do ls -l.
  • The credentials option points to the file with the username and password.
  • The default character encoding for mounts is iso8859-1, for legacy reasons. I may have files with funky characters, so iocharset=utf8 takes care of that.

Then I did sudo mount -a and yay, the files on the NAS appear as if they were on the local hard disk!

Fixing a slow startup

This all worked very well, until I did a reboot. It took a really, really long time to get to the login screen. I did lots of troubleshooting, which was really boring, so I’ll skip to the conclusion: the network mounts were slowing things down, and if I manually mount them after login, then there’s no problem.

It turns out that systemd provides a way to automount filesystems on demand. So they are only mounted when the operating system tries to access them. That sounds exactly like what I need.

To achieve this, I only needed to add noauto,x-systemd.automount to the mount options. I also added x-systemd.device-timeout=10, which means that systemd waits for 10 seconds, and then gives up if it’s unable to mount the share.

From now on I’ll never not use noauto,x-systemd.automount for network shares!

While researching this, I found some documentation that claims you don’t need noauto if you have x-systemd.automount in your mount options. Yours truly has tried it with and without noauto, and I can confirm, from first hand experience, that you definitely need noauto. Without it, there is still the long waiting time at login.

April 18, 2022

Jag brukade skriva på den här bloggen på nederländska. Nu är det mest på engelska, men undantagsvis är det här blogginlägget på svenska.

I september 2020 började jag lära mig svenska på kvällsskolan i Aalst. Varför? Det finns flera anledningar:

  • Jag spelar nyckelharpa, ett typiskt svenskt musikinstrument. Jag gÃ¥r pÃ¥ kurser hemma och utomlands, ofta frÃ¥n svenska lärare. Det var sÃ¥ jag lärde känna människor i Sverige och dÃ¥ är det bra att prata lite svenska för att hÃ¥lla kontakten online.
  • När man slÃ¥r upp nÃ¥got pÃ¥ nätet om nyckelharpa är det ofta pÃ¥ svenska. Jag har ocksÃ¥ en underbar bok “Nyckelharpan – Ett unikt svenskt kulturarv” av Esbjörn Hogmark och jag vill kunna läsa den och inte bara titta pÃ¥ bilderna.
  • Jag tycker att Sverige är ett vackert land som jag kanske vill besöka nÃ¥gon gÃ¥ng. Norge ocksÃ¥, och där talar man en märklig dialekt av svenska. 😛
  • Jag vill gÃ¥ en kurs pÃ¥ Eric Sahlström Institutet i Tobo nÃ¥gon gÃ¥ng. DÃ¥ skulle det vara bra att förstÃ¥ lärarna pÃ¥ deras eget sprÃ¥k.
  • Jag gillar sprÃ¥k och sprÃ¥kinlärning! Det hÃ¥ller min hjärna fräsch och frisk. 😀

And if you didn’t understand anything: there’s always Google Translate!

April 17, 2022

I have a user account (yes really) in a Hyundai Kona electric car.

A while ago there was a software update and now the owner cannot play radio (or any other music) through the car when Bluetooth on her smartphone is active. The car demands that music is played through the smartphone?!

Disabling Bluetooth on the smartphone solves this problem, but then phone calls are not handsfree?! The owner never accepted the new EULA for the update...

Yesterday I drove the car with my user account and was confronted with the new EULA. I decided to read it, but even though my account is in English (and the other account is in Dutch), this EULA was presented in French?!

I declined this EULA (the choice was 'agree' or 'disagree' in English even though the text was in French). The car immediately said "Audio Off". I could not open the "radio" menu on the screen, and also could not access the "media" menu to play the songs that I had been playing in that car from a USB stick since this summer?!

I find this very scary. 

Luckily I don't "own" a car. But can it even be considered "owning" if features can be disabled by the manufacturer?!

April 15, 2022

Now that Autoptimize has had “critical CSS” for over 2 years, it is time to let the old “Autoptimize Power-Up” which still has over 10K active installs finally go pining for the fjords. I pushed out an update for it which will see it deactivate itself if Autoptimize is at version 2.7 or higher.


Armed with the information from my previous research on a possible kernel bug, I opened a bug report on the Ubuntu bug tracker:

It wasn’t long until my bug got confirmed. Someone else chimed in that they had also experienced USB issues. In their case it were external drive devices. Definitely a showstopper!

As of this date, there is a beta for Ubuntu 22.04, and my hope is that this version will either include a new enough kernel (5.16 or up), or that Ubuntu developers have manually cherry-picked the commit that fixes the issue. Let’s check with the Ubuntu Kernel Team:

Ubuntu Kernel Team

Oops… based on upstream 5.15… that’s not good. Maybe they cherry-picked upstream commits? I checked and the kernel is currently at The changelog doesn’t mention anything about xhci or usb. I guess I still have to wait a bit longer…

April 13, 2022

"With everyone and their dog shifting to containers, and away from virtual machines (VMs), we realized that running vendor-provided software on VMs at Google was slowing us down. So we moved."

Bikram co-authored this blog post last year about DASInfra's experience moving workloads from Corp to Anthos. The group I run at work is going down a similar path by migrating VMs to Anthos on bare metal for on-prem.

Taken from The Playlist - a curated perspective on the intersection of form and content (subscribe, discuss)

flattr this!

"Without a next action, there remains a potentially infinite gap between current reality and what you need to do."

David Allen's Getting Things Done is the non-fiction book I've reread the most in my life. I reread it every couple of years and still pick up on new ideas that I missed before, or parts that resonate better now and I'm excited to implement. Before Google, I used to give this book to new employees as a welcome gift.

The book got an update in 2015, and I haven't read the new version yet, so I'm planning an extended GTD book club at work in Q2, spreading the book out over multiple sessions. (In fact, I did just that for the young adult version of the book with my 16 year old godson back home in Belgium) If you've run a GTD book club, drop me a line!

Find out more at Getting Things Done® - David Allen's GTD® Methodology

"Too many meetings end with a vague feeling among the players that something ought to happen, and the hope that it’s not their personal job to make it so. [...] ask “So what’s the next action on this?” at the end of each discussion point in your next staff meeting"

Taken from The Playlist - a curated perspective on the intersection of form and content (subscribe, discuss)

flattr this!

"Most women fight wars on two fronts, one for whatever the putative topic is and one simply for the right to speak, to have ideas, to be acknowledged to be in possession of facts and truths, to have value, to be a human being."

In honor of International Women's Day 2022 (this past March 8th), some quotes from the 2008 article that inspired the term "mansplaining": to comment on or explain something to a woman in a condescending, overconfident, and often inaccurate or oversimplified manner.

I've certainly been (and probably still am) guilty of this behavior, and this is a standing invitation to let me know when I'm doing it to you.

Read the original article with a new introduction at Men Explain Things to Me – Guernica

"None was more astonishing than the one from the Indianapolis man who wrote in to tell me that he had “never personally or professionally shortchanged a woman” and went on to berate me for not hanging out with “more regular guys or at least do a little homework first,” gave me some advice about how to run my life, and then commented on my “feelings of inferiority.” He thought that being patronized was an experience a woman chooses to, or could choose not to have–and so the fault was all mine. Life is short; I didn’t write back."

Taken from The Playlist - a curated perspective on the intersection of form and content (subscribe, discuss)

flattr this!

In the ever more vertical company that Google is becoming, it is even more important to collaborate on some of your communication - more people want to contribute to the message and get it right, and more thought needs to be given to the ever wider audience you're sending mails to.

A while back I copied over AppScript code from an internal Google project to send meeting notes to make a different tool which makes it easy to go from Google Docs draft to a mail in GMail and avoid embarrassing copy/paste errors. I'm happy to be able to retire that little side project in favor of a recently released built-in feature of Google Docs: Draft emails from Google Docs - Docs Editors Help

Taken from The Playlist - a curated perspective on the intersection of form and content (subscribe, discuss)

flattr this!

In previous blogposts I wrote about how I found a possible bug in the Linux kernel, or more precisely, in the kernel that Ubuntu derived from the mainline kernel.

To be able to install any kernel version 5.15.7 or higher, I also had to install libssl3.

The result is that I now have 37 kernels installed, taking up little over 2 GiB disk space:

$ (cd /boot ; ls -hgo initrd.img-* ; ls /boot/initrd.img-* | wc -l)
-rw-r--r-- 1 39M mrt  9 09:54 initrd.img-5.13.0-051300-generic
-rw-r--r-- 1 40M mrt  9 09:58 initrd.img-5.13.0-19-generic
-rw-r--r-- 1 40M mrt  9 09:58 initrd.img-5.13.0-20-generic
-rw-r--r-- 1 40M mrt  9 09:57 initrd.img-5.13.0-21-generic
-rw-r--r-- 1 44M mrt 30 17:46 initrd.img-5.13.0-22-generic
-rw-r--r-- 1 40M mrt  9 09:56 initrd.img-5.13.0-23-generic
-rw-r--r-- 1 40M mrt  9 09:56 initrd.img-5.13.0-25-generic
-rw-r--r-- 1 40M mrt  9 09:56 initrd.img-5.13.0-27-generic
-rw-r--r-- 1 40M mrt  9 09:55 initrd.img-5.13.0-28-generic
-rw-r--r-- 1 40M mrt  9 09:55 initrd.img-5.13.0-30-generic
-rw-r--r-- 1 45M mrt  9 12:02 initrd.img-5.13.0-35-generic
-rw-r--r-- 1 45M mrt 24 23:17 initrd.img-5.13.0-37-generic
-rw-r--r-- 1 45M mrt 30 17:49 initrd.img-5.13.0-39-generic
-rw-r--r-- 1 39M mrt  9 09:54 initrd.img-5.13.1-051301-generic
-rw-r--r-- 1 39M mrt  9 09:54 initrd.img-5.13.19-051319-generic
-rw-r--r-- 1 37M mrt  9 09:53 initrd.img-5.13.19-ubuntu-5.13.0-22.22
-rw-r--r-- 1 37M mrt  9 09:53 initrd.img-5.13.19-ubuntu-5.13.0-22.22-0-g3ab15e228151
-rw-r--r-- 1 37M mrt  9 09:52 initrd.img-5.13.19-ubuntu-5.13.0-22.22-317-g398351230dab
-rw-r--r-- 1 37M mrt  9 09:52 initrd.img-5.13.19-ubuntu-5.13.0-22.22-356-g8ac4e2604dae
-rw-r--r-- 1 37M mrt  9 09:52 initrd.img-5.13.19-ubuntu-5.13.0-22.22-376-gfab6fb5e61e1
-rw-r--r-- 1 37M mrt  9 09:51 initrd.img-5.13.19-ubuntu-5.13.0-22.22-386-gce5ff9b36bc3
-rw-r--r-- 1 37M mrt  9 09:51 initrd.img-5.13.19-ubuntu-5.13.0-22.22-387-g0fc979747dec
-rw-r--r-- 1 37M mrt  9 09:50 initrd.img-5.13.19-ubuntu-5.13.0-22.22-388-g20210d51e24a
-rw-r--r-- 1 37M mrt  9 09:50 initrd.img-5.13.19-ubuntu-5.13.0-22.22-388-gab2802ea6621
-rw-r--r-- 1 37M mrt  9 09:50 initrd.img-5.13.19-ubuntu-5.13.0-22.22-391-ge24e59fa409c
-rw-r--r-- 1 37M mrt  9 09:49 initrd.img-5.13.19-ubuntu-5.13.0-22.22-396-gc3d35f3acc3a
-rw-r--r-- 1 37M mrt  9 09:49 initrd.img-5.13.19-ubuntu-5.13.0-22.22-475-g79b62d0bba89
-rw-r--r-- 1 37M mrt  9 09:48 initrd.img-5.13.19-ubuntu-5.13.0-23.23
-rw-r--r-- 1 40M mrt  9 09:48 initrd.img-5.14.0-051400-generic
-rw-r--r-- 1 40M mrt  9 10:31 initrd.img-5.14.21-051421-generic
-rw-r--r-- 1 44M mrt  9 12:39 initrd.img-5.15.0-051500-generic
-rw-r--r-- 1 46M mrt  9 12:16 initrd.img-5.15.0-22-generic
-rw-r--r-- 1 46M mrt 28 23:27 initrd.img-5.15.32-051532-generic
-rw-r--r-- 1 46M mrt 17 21:12 initrd.img-5.16.0-051600-generic
-rw-r--r-- 1 48M mrt 28 23:19 initrd.img-5.16.16-051616-generic
-rw-r--r-- 1 45M mrt 28 23:11 initrd.img-5.17.0-051700-generic
-rw-r--r-- 1 46M apr  8 17:02 initrd.img-5.17.2-051702-generic
  • Versions 5.xx.yy-zz-generic are installed with apt.
  • Versions 5.xx.yy-05xxyy-generic are installed with the Ubuntu Mainline Kernel Installer.
  • Versions 5.xx.yy-ubuntu-5.13.0-zz.zz-nnn-g<commithash> are compiled from source, where <commithash> is the commit of the kernel repository that I compiled.

The kernels in bold are the kernels where something unexpected happens with my USB devices:

  • Ubuntu kernels 5.13.23 and up – including 5.15 kernels of Ubuntu 22.04 LTS (Jammy Jellyfish).
  • Ubuntu compiled kernels, starting 387 commits after kernel 5.13.22.
  • Mainline kernels 5.15.xx.

When Ubuntu finally bases their kernel on mainline 5.16 or higher, then the USB bug will be solved.

April 11, 2022

So what was DDD Ghent like?


I’m especially interested in sprinting on the CKEditor 5 module for Drupal core, since that’s what I am currently working on for Acquia, because that is one of the biggest must-haves/blockers for Drupal 10. 86% of issues worked on at DDD Ghent was not CKEditor 5, so … I’m hoping others will do blog posts similar to this one! :D

New contributors

I worked with at least a dozen people who’d never contributed to CKEditor 5 before. I mentored in various ways: how to do the issue write-up, how to debug, how to find examples, how to write a kernel test, how to use data providers, how to run and write a functional JS test, how to create a contrib-to-core CKE5 button upgrade path, etc.
I know that (my colleague and fellow CKEditor 5-in-core contributor) lauriii mentored scott_euser to help us get external images support, and he helped dawehner write a complex CKE5 plugin that the popular token_filter module will be able to use for its upgrade path too.

Thanks to all of you who contributed to the CKEditor 5 module in Drupal core last week (in alphabetical order): andreasderijcke, brentg DieterHolvoet, Dom., Eli-T, ifrik, jcnventura, joevagyok, marcvangend, mpp and seanB. Better still: several of these people started issues of their own and ended up collaborating on each other’s issues!


The #1 takeaway for Lauri and I was that the upgrade path we had written assumed valid text format + CKEditor 4 configuration, which was definitely a faulty assumption, since just like the text format admin UI had done historically, there was no validation for any of this: the site builder is expected to know valid filter orders and which filters ought not to be enabled while using CKEditor 4. This utter lack of validation and hence guidance is what CKEditor 5 definitely does much better. But … we need to get those sites upgraded to CKEditor 5 too. That was the top critical we found, and it’s already fixed: #3273312. Basically, most long-time Drupalists apparently create new text formats and always add filter_autop and filter_url to them out of habit. The majority of people testing the upgrade path ran into this!

But extra special thanks go to ifrik and Dom. — they worked on CKEditor 5 the entire week and both not only reported but also contributed to lots of issues!

The second most frequent hurdle was contrib CKE4 plugins not having any actionability: the user feels stuck. We’re improving on that in #3273325. And more importantly, we’re starting to see that some modules are obsolete, which means core can (and MUST!) provide an upgrade path for certain contrib modules — see #3274278 for the first of that, and we now have a Drupal handbook page where coordination is now happening.

And despite not feeling well at all, lauriii still attended the magnificent live accessibility testing that we got from Bram Duvigneau, where he basically applauded our CKEditor 5 toolbar configuration admin UI. (And found some hurdles in CKEditor 5 itself when using NVDA.)

So I’d say: the sprints at DDD were a big success!

And not just on the technical front: I got to show my hometown to many fellow Drupalists, so I have many beautiful memories to look back to :)

… but you don’t need --- at the start of a YAML file in Ansible.

What does the Ansible documentation say?

I know, I know, if you look at the official documentation on, then all of the examples start with ---. And if the official examples do it, then everyone should just blindly copy that without thinking, right?

Wrong! The Ansible documentation on YAML syntax says:

There’s another small quirk to YAML. All YAML files (regardless of their association with Ansible or not) can optionally begin with --- and end with .... This is part of the YAML format and indicates the start and end of a document.

© Copyright Ansible project contributors.

I’ve added the emphasis: optionally. They then continue with one example with --- at the start and ... at the end. The funny thing is, that’s about the only example on the Ansible documentation site (that I could find) that ends with .... So the end marker ... is clearly optional. What about the start marker ---?

What does the YAML specification say?

Ansible uses version 1.2 of the YAML specification and unless you are doing something really exotic, that’s the only version you should care about. Revision 1.2.0 was published in July 2009 and revision 1.2.2 in October 2021. That last revision doesn’t make any changes to the specification, it only corrects some errors and adds clarity.

Chapter 9 of the YAML spec introduces two concepts: documents and streams.

A stream can contain zero or more documents. It’s called a (character) stream because it can be something else than a file on your hard disk, for example some data that’s sent over a network connection. So your Ansible playbook file with extension .yml or .yaml is not a YAML document, it’s a YAML stream.

A document can have several parts:

  • Document prefix: optional character encoding and optional comment lines.
    Seriously, it’s 2022, are you going to make life hard for yourself and use any other encoding than ASCII or UTF-8? The default encoding that every YAML processor, inclusing Ansible, must support is UTF-8. So You Ain’t Gonna Need It.
    Comments can be placed anywhere, so don’t worry.
  • Document directives: these are instructions to the YAML processor and aren’t part of the data structure. The only directive I’ve occasionally seen in the wild is %YAML 1.2, to indicate the version of YAML used. That’s the default version for Ansible anyway, so You Ain’t Gonna Need It.
  • Document markers: a parser needs some way to know where directives stop and document content begins. That’s the directives end marker, ---. There is also a document end marker, ..., which tells a parser to stop looking for content and start scanning for directives again. If there are no markers and the first line doesn’t start with % (a directive), then a parser knows that everything is content. In real life you probably won’t ever have multiple documents in the same stream (file), instead you’ll organize your Ansible code in separate .yaml files, with playbooks and roles and tasks etc.
  • Document content: that’s the only really interesting stuff you care about.

YAML knows 3 types of documents:

  • Bare documents: don’t begin with directives or marker lines. Such documents are very “clean” as they contain nothing other than the content. This is the kind of YAML documents I prefer for Ansible.
  • Explicit documents: begin with an explicit directives end maker (---) but have no directives. This is the style that many people use if they just copy/paste examples from Stack Overflow.
  • Directives documents: start with some directives, followed by an explicit directives end marker. You don’t need directives for Ansible.

Configuring yamllint

I use ansible-lint and yamllint in a pre-commit hook to check the syntax of my Ansible files. This is currently my .yamllint.yml:

    present: false
    allowed-values: ['true', 'false', 'yes', 'no']

document-start makes sure that there is no --- at the start of a file. I also have opinions on truthy: an Ansible playbook is supposed to be readable both by machines and humans, and then it makes sense to allow the more human-readable values yes and no.

Do you also have opinions that make you change the default configuration of your linters?

April 08, 2022

Ubuntu mainline kernel packages 5.15.7 and later bump a dependency from libssl1.1 (>= 1.1.0) to libssl3 (>= 3.0.0~~alpha1).

However, package libssl3 is not available for Ubuntu 21.10 Impish Indri. It’s only available for Ubuntu 22.04 Jammy Jellyfish (which is still in beta as of time of writing) and later.

libssl3 further depends on libc6>=2.34 and debconf, but they are available in 21.10 repositories.

Here are a few different ways to resolve the dependency:

Option 1

Use apt pinning to install libssl3 from a Jammy repo, without pulling in everything else from Jammy.

This is more complicated, but it allows the libssl3 package to receive updates automatically.
Do all the following as root.

  • Create an apt config file to specify your system’s current release as the default release for installing packages, instead of simply the highest version number found. We are about to add a Jammy repo to apt, which will contain a lot of packages with higher version numbers, and we want apt to ignore them all.
$ echo 'APT::Default-Release "impish";' \
    | sudo tee /etc/apt/apt.conf.d/01ubuntu
  • Add the Jammy repository to the apt sources. If your system isn’t “impish”, change that below.
$ awk '($1$3$4=="debimpishmain"){$3="jammy" ;print}' /etc/apt/sources.list \
    | sudo tee /etc/apt/sources.list.d/jammy.list
  • Pin libssl3 to the jammy version in apt preferences. This overrides the Default-Release above, just for the libssl3 package.
$ sudo tee /etc/apt/preferences.d/libssl3 >/dev/null <<%%EOF
Package: libssl3
Pin: release n=jammy
Pin-Priority: 900
  • Install libssl3:
$ sudo apt update
$ sudo apt install libssl3

Later, when Jammy is officially released, delete all 3 files created above

$ sudo rm --force \
    /etc/apt/apt.conf.d/01ubuntu \
    /etc/apt/sources.list.d/jammy.list \

Option 2

Download the libssl3 deb package for Jammy and install it manually with dpkg -i filename.deb.

This only works if there aren’t any additional dependencies, which you would also have to install, with a risk of breaking your system. Here Be Dragons…

April 07, 2022

 I regularly fly between Belgium and my second home country Latvia. How much am I sponsoring Vladimir when doing that? About 25€. Back of the envelope calculation.

  • CRL - RIX return = 330 kg CO2 (source)
  • 1 l jet fuel a1 = 2.52 kg CO2 (source)
  • 1 l jet fuel = 0.85€ (source, some currency and SI conversion required)
  • refinery and distribution margin ~ 15% (conservative ballpark guesstimate based upon price/barrel for crude and jet a1 fuel)
  • percentage of Russian crude in EU: 27% (source)
  • (330/2.52)*.85*.85*.27 = 25.55€

P.S. More source countries have "interesting" policies. For example. 8% of EU imports are from Saudi Arabia.

P.P.S. Our upcoming holiday will be by night train. Exciting!

April 05, 2022

Je vous avais annoncé en grande pompe la suppression de mon compte LinkedIn puis la suppression d’autres comptes comme Facebook et Twitter. C’était un effort conscient, une volonté de le faire et d’être reconnu publiquement pour cet effort. C’était difficile.

Il en est parfois autrement. La suppression d’un service perçu comme incontournable se fait automatiquement.

La plupart de mes proches ont rejoint Signal et la gestion journalière de ma famille se fait sur Signal. Whatsapp me servait essentiellement pour les « groupes » d’amis, la famille élargie et quelques amis récalcitrants à Signal. La particularité de ces groupes est d’être particulièrement bavards et pas spécialement urgents. J’ai donc coupé complètement les notifications de Whatsapp il y a de cela déjà plus d’un an, le vérifiant manuellement tous les quelques jours pour voir « si je ne ratais rien ».

Alors que je me rendais chez une cousine à l’étranger, qui n’est pas sur Signal, j’ai lancé Whatsapp qui m’a affiché une erreur. Je n’ai pas prêté attention et j’ai utilisé le bon vieux SMS. Il y’a quelques jours, cette erreur m’est revenue en tête. La version de Whatsapp sur mon téléphone n’était plus valide depuis février, car je n’avais pas accepté une modification des conditions. Cela faisait donc près de deux mois que j’avais littéralement oublié de vérifier Whatsapp, sans doute porté par ma déconnexion. Comme je ne le vérifiais pas, mon téléphone l’a mis dans le « frigo » et comme il était dans le frigo, il n’a pas été mis à jour.

Curieux de voir ce que j’avais « raté » comme messages durant ces deux mois, j’ai mis à jour le logiciel et relancé l’application qui m’a annoncé que mon compte était déconnecté du téléphone. Je l’ai reconnecté, acceptant probablement implicitement les nouvelles conditions, pour découvrir que j’avais été déconnecté de toutes les conversations depuis février. Aucun message après cette date ne m’est parvenu.

Je ne sais pas ce qu’ont vu ceux qui ont tenté de me contacter, mais il est tout de même intéressant de constater que le système n’accepte pas qu’on puisse se déconnecter pour une durée assez longue. Nos téléphones sont littéralement conçus pour nous occuper tout le temps. Pour qu’on s’occupe d’eux.

Finalement, cette anti-fonctionnalité s’est révélée intéressante.

Car j’ai immédiatement été dans les préférences de mon compte et je l’ai supprimé définitivement sans avoir le moindre scrupule ou la moindre angoisse de rater quelque chose. Ai-je raté des opportunités ? Ai-je brisé des amitiés à cause de ce silence sur la plateforme appartenant à Facebook ? Je ne le saurai jamais, Whatsapp s’en est chargé à ma place…

Comme de nombreux services modernes, Whatsapp n’est indispensable que parce qu’on veut qu’il le soit. Parce que Facebook cherche à vous le faire croire en exploitant la peur ancestrale d’être exclus d’un groupe social.

Il suffit de s’en passer pour observer que le monde continue à tourner. Qu’il tourne probablement un tout petit mieux avec un compte Whatsapp de moins.

=> Suppression de mon compte Linkedin le 13 avril 2021

=> Suppression de mes comptes Facebook/Twitter en octobre 2021.

Recevez les billets par mail ou par RSS. Max 2 billets par semaine, rien d’autre. Adresse email jamais partagée et définitivement effacée lors du désabonnement. Dernier livre paru : Printeurs, thriller cyberpunk. Pour soutenir l’auteur, lisez, offrez et partagez des livres.

Ce texte est publié sous la licence CC-By BE.

April 04, 2022

We know that many of you are waiting on your FOSDEM T-shirt and hoodie. We finally have some news, but first we would like to apologize not only for not delivering your T-shirt in time, but also for not communicating or informing you of the status of your order. Now onto the better news: it took a very long time for the order to arrive at our T-shirt supplier. We currently are investigating why it took so long and we didn't receive an update earlier, but the good news is that they are finally printing and will be shipped舰

April 01, 2022

Petite vulgarisation du fonctionnement d’Internet et de son impact sur notre cerveau et notre société


Ce texte vous parait long, rébarbatif, indigeste. Pas d’animations, pas de vidéos. Il y’a de grandes chances que votre cerveau ait graduellement perdu sa capacité de concentration. Vous préférez désormais papillonner entre deux messages au lieu de lire un long texte. Si vous êtes plus jeune, vous n’avez peut-être jamais eu cette capacité à vous concentrer.

Ce n’est pas de votre faute. Votre cerveau est, à dessein, manipulé pour perdre sa capacité de concentration. Pour devenir une meilleure éponge publicitaire. Ce n’est pas une théorie du complot, mais une simple observation des mécanismes techniques mis en œuvre. La bonne nouvelle c’est que cette capacité de concentration peut être retrouvée.

Ce texte comme la vidéo du chaton trop mignon et le message « kess tu fé? lol! » qui vient de s’afficher sur votre écran ne sont, à la base, que des impulsions électriques envoyées depuis mon ordinateur vers le vôtre (que vous appelez téléphone, mais cela reste un ordinateur). Des 1 et des 0. Rien d’autre.

Comment est-ce possible ? Comment des 1 et des 0 peuvent-ils donner le pouvoir d’apprendre tout en nous faisant perdre la capacité de le faire ?

Compter en n’utilisant que 1 et 0 : le binaire

Tout système de communication est doté d’un alphabet, un ensemble de caractères arbitraires qui peuvent être assemblés pour former des mots. Certaines langues disposent de milliers de caractères (comme l’écriture chinoise).

Notre système de numération, hérité des Arabes, compte 10 chiffres qui permettent d’écrire une infinité de nombres. On pourrait également l’utiliser pour coder un message en remplaçant les lettres de l’alphabet. 01 serait A, 02 serait B et 26 serait Z. « BONJOUR » s’écrirait donc simplement « 02151410152118 ». Cela nous semble complexe, mais peut-être que si nous l’apprenions très jeune, nous pourrions lire ce système couramment. À noter que j’ai sciemment utilisé le 0 pour différencier le « 11 = AA (deux fois 1) » de « 11 = K (onze) ».

Nous avons donc réduit notre alphabet de 26 caractères à 10 via cette simple méthode.

Comment pourrions-nous réduire encore ? Par exemple en supprimant le chiffre « 9 ». Sans le chiffre 9, nous pouvons compter 1,2,3,4,5,6,7,8…10. 8+1 = 10 ! C’est ce qui s’appelle compter en base « 9 », car il n’y a que 9 chiffres.

Il faut bien reconnaitre que le fait de compter en base 10 nous semble naturel, mais que c’est tout à fait arbitraire. Les Romains, eux-mêmes, étaient incapables de le faire. Les Babyloniens, portant des sandales ou étant pieds nus, comptaient en base 20 (et nous tenons d’eux cette propension à dire « quatre-vingt », une « vingtaine »). D’autres comptaient en base douze. Certaines peuplades, comptant sur leurs phalanges au lieu de leurs doigts, utilisaient la base 14 (essayez sur vos phalanges, vous verrez).

Mais revenons à notre base 10, devenue base 9. Si nous retirons le 8, nous obtenons que 7+1 = 10. Et, logiquement, 77 + 1 = 100. De la même manière, nous pouvons retirer tous les nombres jusqu’à n’avoir plus que 0 et 1. Auquel cas, on pourra compter de la manière suivante : 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, …

Cette arithmétique binaire, notamment décrite par Leibniz, était une curiosité mathématique. Elle va cependant acquérir son importance lorsque vint l’idée de transmettre des messages à travers un câble électrique.

Sur un fil électrique, il n’y a que deux états possibles. Soit le courant passe, soit le courant ne passe pas. On ne peut transmettre que deux lettres, que nous notons désormais arbitrairement 0 et 1.

Vous remarquez qu’il est indispensable de se mettre d’accord sur la signification à donner à ces lettres. Au début du XIXe siècle, Samuel Morse propose le code qui porte son nom et qui est encore utilisé aujourd’hui. Mais ce code n’est pas du binaire ! En effet, il joue sur la longueur d’un signal et sur les silences entre les signaux. Techniquement, il y’a quatre lettres dans l’alphabet morse : le court, le long, le silence court et le silence long). Le morse est particulièrement adapté à la compréhension humaine. Les opérateurs télégraphiques qui l’utilisent quotidiennement deviennent capables de comprendre les messages en morse presque en temps réel.

Vers la fin du XIXe siècle apparaissent les machines à écrire et avec elles l’idée de transmettre des caractères écrits via une ligne électrique voire via ce qu’on appelle encore l’invention de Marconi : la radio. Pour simplifier, nous allons considérer que toute onde radio (radio, gsm, wifi, 3G, 4G, 5G) n’est jamais qu’un fil invisible. Dans tous les cas, on sait faire passer des 1 et des 0 d’une extrémité à l’autre du fil.

L’un des premiers codes proposant de convertir les lettres en binaire est le code Baudot, qui utilise 5 bits (le terme « bit » signifie « binary digit » ou « chiffre binaire »). 5 bits permettent 32 caractères possibles, ce qui est très peu. L’alphabet latin comporte 26 caractères, en majuscules et minuscules, ce qui fait 52, 10 chiffres, des symboles de ponctuation. Les langues comme le français rajoutent des caractères comme À,Ê,É,Ǜ,….

Les télétypes font leurs apparitions au début du XXe siècle. Il s’agit de machines à écrire reliées à un câble de communication. À chaque pression de la lettre du clavier, le code correspondant est envoyé et active l’impression du caractère correspondant à l’autre bout du câble. Un réseau de communication basé sur ce système se met en place mondialement: le réseau télex, notamment utilisé par les journalistes. Les particuliers peuvent également s’envoyer des télégrammes, qui sont facturés au mot ou à la lettre.

Envoyer des données binaires n’est pas une mince affaire, car le courant électrique a tendance à s’affaiblir avec la distance (on parle de « dispersion »). De plus, un courant n’est jamais parfaitement allumé ou éteint. It trace des courbes en forme de sinusoïdes. Il faut donc déterminer arbitrairement à partir de quand on considère un signal reçu comme un 1 ou un 0. Il faut également déterminer combien de temps dure chaque bit pour différencier 00000 de 0. Et que faire si le signal varie durant la période d’un bit? Prendre la valeur moyenne du courant?

La grande difficulté consiste donc à se mettre d’accord, à standardiser. C’est ce qu’on appelle un protocole. Un protocole n’est utile que si chacun peut le comprendre et l’utiliser à sa guise pour coder ou décoder des messages. Le langage parlé et le langage écrit sont des exemples de protocoles : nous associons des concepts à des sons et des images complètement arbitraires. Mais nous nous comprenons tant que cette association arbitraire est partagée.

Pour remplacer le code Baudot, chaque fabricant d’ordinateurs développe son propre codage. Ce n’est évidemment pas pratique aussi les Américains développent-ils l’ASCII, un codage sur 7 bits. Cela permet l’utilisation de 128 caractères au lieu de 32. Remarquons que la seule réelle innovation de l’ASCII est de mettre tout le monde d’accord, de créer un protocole, un langage.

En ASCII, A s’écrit 1000001, B 1000010, etc. Le « a » minuscule, lui, s’écrit 1100001. C’est pratique, le deuxième bit change pour identifier les majuscules des minuscules. À savoir que l’ASCII est particulièrement optimisé pour l’utilisation sur télétypes. L’ASCII prévoit des codes de contrôle de la machine comme le retour à la ligne, le fait d’activer une sonnette, de débuter ou de terminer une transmission.

Les premiers ordinateurs sont alimentés en données via des cartes perforées (un trou représente un bit 1, pas de trou un bit 0), mais, très vite, l’idée vient d’utiliser un clavier. Comme les télétypes sont disponibles, ceux-ci sont utilisés. Très naturellement, les premiers ordinateurs se mettent à stocker leurs données au format ASCII qui se prête bien à l’écriture sur carte perforée.

L’ASCII ne permet cependant que d’écrire en anglais. Beaucoup de caractères pour le français n’existent pas et les langues utilisant d’autres alphabets sont tout bonnement intraduisibles. Plusieurs solutions techniques ont été utilisées au cours du temps. Depuis les années 2010, le codage UTF-8 s’impose graduellement. Il permet l’écriture de la plupart des langues connues, y compris les langues mortes, les symboles mathématiques, scientifiques, mais également des centaines d’émojis. La particularité de l’UTF-8 est d’être compatible avec l’ASCII. Les caractères ASCII gardent exactement le même code binaire en UTF-8.

Les limites de l’ASCII se ressentent encore souvent dans l’informatique moderne : il n’est pas toujours possible de créer une adresse email possédant un accent ou de taper certains caractères dans la communication d’un virement chez certaines banques. L’utilisation d’encodages anciens fait parfois s’afficher des caractères bizarres.

Stocker des données : les formats

Si n’importe quelle donnée peut être convertie en bits, nous remarquons très vite que le point essentiel est de se mettre d’accord sur la manière de les convertir. Cette conversion se fait pour transformer la donnée et la stocker, c’est ce qu’on appelle le « format de fichier ». Un format ne repose pas toujours sur du texte. Pour stocker une image ou un son, par exemple, il faut définir d’autres formats que les formats texte. Il faut être capable de transformer une donnée en bits pour le stocker et, inversement, de transformer les bits en données pour y accéder.

Il existe deux grandes catégories de formats sur les ordinateurs. Les formats « texte », qui reposent sur un encodage de texte (ASCII, UTF-8 ou autres) et les autres, dits « formats binaires ». La particularité d’un format texte c’est que n’importe quel ordinateur dans le monde pourra toujours les ouvrir pour y lire le texte. Les formats binaires, eux, sont complètement incompréhensibles si on ne dispose pas de l’explication sur la manière de le traiter. On parle de « format ouvert » lorsque cette explication est disponible et de « format propriétaire » lorsqu’elle ne l’est pas.

Le texte a cependant des limites. Imaginons que nous souhaitions lui ajouter une mise en forme. L’une des solutions serait de définir un format complètement différent du texte standard (ASCII ou UTF-8). C’est ce qu’a fait par exemple Microsoft avec Word et le format .doc (ensuite devenu .docx). L’intérêt est évident pour l’entreprise : une fois qu’un utilisateur sauve ses données au format .doc, il est obligé d’utiliser Microsoft Word pour y accéder. Il ne peut pas utiliser un concurrent, car le format est propriétaire et que seul Microsoft Word permet d’ouvrir les documents. L’utilisateur doit donc convertir toutes ses données, ce qui peut être très long, voire impossible. L’utilisateur est prisonnier d’un logiciel appartenant à une entreprise. Ce n’est pas un détail, c’est une technique commerciale sciemment mise au point. Le terme technique est « vendor lock-in ».

Le format .doc étant tellement populaire, il finira malgré tout par être « compris » et implémenté dans des logiciels concurrents, cela malgré l’opposition active de Microsoft (on parle de « rétro-ingéniérie »). Pour répondre à des accusations légales d’abus de position dominante, Microsoft sortira le format successeur, le .docx, en le proclamant « format ouvert », les spécifications techniques étant disponibles. Cependant, et je parle d’expérience, il s’avérera que les spécifications techniques étaient d’une complexité ahurissante, qu’elles étaient par moment incomplètes voire fausses. De cette manière, si un concurrent comme LibreOffice offrait la possibilité d’ouvrir un fichier .docx, de subtiles différences étaient visibles, ce qui convainquait l’utilisateur que LibreOffice était buggué.

À l’opposé, des formats existent pour utiliser du texte afin de définir des styles.

Le plus connu et utilisé aujourd’hui est l’HTML, inventé par Tim Berners-Lee. Le principe du HTML est de mettre des textes entre des balises, également en texte. Le tout n’est donc qu’un unique texte.

Ces mots sont <b>en gras (bold)</b> et en <i>italique</i>.

Vous pouvez constater que, même sans comprendre le HTML, le texte reste « lisible ». Si vous sauvez vos données en HTML, vous êtes certains de toujours pouvoir les lire, quel que soit le logiciel. Le HTML permet d’insérer des références vers des images (qui seront alors intégrées à la page) ou vers d’autres pages, ce qu’on appelle des « liens ».

Utiliser les données : les algorithmes

Un ordinateur n’est jamais qu’une machine à calculer qui effectue des opérations sur des suites de bits pour les transformer en une autre suite de bits. Ces opérations sont déterminées par un programmeur. Un ensemble d’opérations est généralement appelé un « algorithme ». L’algorithme est une abstraction mathématique qui n’existe que dans la tête du programmeur. Lorsqu’il se décide à les écrire, dans un format de texte en suivant un « language », cet algorithme est transformé en « programme ». Oui, le programme est à la base un fichier texte. Les programmeurs écrivent donc du texte qui va servir à transformer des textes en d’autres.

Il est important de comprendre qu’un programme ne fait que ce qu’un programmeur lui a demandé. Il prend des données en entrées (des « inputs ») et fournit des données en sorties (des « outputs »). Un navigateur web prend en input un fichier HTML et le transforme pour l’afficher sur votre écran (votre écran est donc l’output).

Parfois, le programme ne fonctionne pas comme le programmeur l’avait imaginé, souvent parce que l’input sort de l’habituel. On parle alors d’un « bug », traduit désormais en « bogue ». Le bug est une erreur, un imprévu. Qui peut même résulter en un « crash » ou « plantage » (le programme ne sait plus du tout quoi faire et s’interrompt brutalement).

Tout ce que fait un programme est donc décidé à l’avance par un être humain. Y compris les crashs, qui sont des erreurs humaines du programmeur ou de l’utilisateur qui n’a pas respecté les consignes du programmeur.

Il existe cependant une nouvelle catégorie de programmes auxquels le nom spectaculaire a donné une grande visibilité : l’intelligence artificielle. Sous ce terme trompeur se cache un ensemble d’algorithmes qui ne sont pas du tout des robots tueurs, mais qui sont essentiellement statistiques. Au lieu de donner un output fixé par le programmeur, les programmes « intelligents » vont donner un résultat statistique, une probabilité.

Si un programme doit décider si une photo représente un homme ou un singe, il va, à la fin de son algorithme, fournir une valeur binaire : 1 pour l’homme et 0 pour le singe. Le programmeur humain va, par exemple, tenter de détecter la taille relative du visage et du crâne. Mais il est conscient qu’il peut se tromper. S’il est consciencieux, il va peut-être même consulter des zoologues et des anatomistes pour leur demander quelques règles générales.

Les algorithmes statistiques (dits « d’intelligence artificielle ») fonctionnent tous sur le même principe. Au lieu de demander à un programmeur de déterminer les règles qui différencient un singe d’un humain, les programmeurs vont concevoir un algorithme qui « s’initialise » avec une série de photos d’humains et une série de photos de singes. À charge du programme de détecter des corrélations qui échapperaient à l’œil humain. En output, l’algorithme va fournir une probabilité que la photo soit un humain ou un singe.

Le problème c’est que ces méthodes sont incroyablement sensibles aux biais de la société. Imaginons que l’équipe détectant le logiciel humain/singe injecte dans l’algorithme des photos d’eux-mêmes et de leur famille. Ils vont également au zoo local pour prendre les photos de singes. Le logiciel est testé et il fonctionne.

Ce que personne n’a réalisé c’est que toute l’équipe est composée de personnes de race blanche. Leur famille également. Les membres l’ayant testé également. Or, au zoo, le pavillon des chimpanzés était fermé.

Il s’ensuit que l’algorithme a très bien compris comment reconnaitre un singe : la photo est plus foncée. La première personne de race noire qui se présente devant le logiciel se fera donc traiter de singe. Le biais raciste de la société s’est vu renforcé alors même qu’aucun des programmeurs n’était raciste.

Les algorithmes apprenant avec des données issues de leurs propres algorithmes, ces biais se renforcent. Dans certaines villes aux États-Unis, les polices ont été équipées d’algorithmes « d’intelligence artificielle » pour prédire les prochaines infractions et savoir où envoyer des patrouilles. Ces algorithmes ont fait exploser le taux d’infractions dans les quartiers pauvres.

Le fait d’avoir des patrouilles en permanence à fait en sorte que les policiers furent bien plus à même d’observer et d’agir sur les petits délits (vente de drogue, tapage, jet de déchets, etc.). Ces délits renforcèrent la conviction que ces zones pauvres connaissaient plus de délits. Et pour cause : il n’y avait plus de policiers ailleurs. Le nombre d’interventions augmenta, mais la qualité de ces interventions chuta. Les policiers furent moins présents pour les crimes passionnels et les cambriolages, plus rares et également répartis dans les quartiers riches.

Nous pouvons voir un effet majeur des biais de ces « intelligences artificielles » sur Facebook : un algorithme pense que vous serez intéressé par la guerre en Ukraine. Vous cliquez, car il n’y a rien d’autre à lire et c’est désormais acté dans les algorithmes que vous êtes intéressés par la guerre en Ukraine. Vous vous verrez donc proposer des nouvelles sur la guerre en Ukraine. Comme elles vous sont proposées, vous cliquez dessus, ce qui renforce la conviction que vous êtes un véritable passionné de ce sujet.

Sous le terme « Intelligence artificielle », nous avons en fait conçu des systèmes statistiques à prophéties autoréalisatrices. Le simple fait de croire que ces systèmes puissent avoir raison crée de toutes pièces une réalité dans laquelle ces algorithmes ont raison.

Un autre problème éthique majeur soulevé par ces algorithmes, c’est que le programmeur n’est plus nécessairement informé de la problématique de base. Un algorithme de différenciation de photos, par exemple, sera développé génériquement pour diviser une série de photos dans une catégorie A et une catégorie B. Si on lui fournit des humains en A et des singes en B, il va apprendre à détecter cette différence. On peut également lui fournir des hommes en A et des femmes en B. Ou bien des citoyens reconnus en A et une minorité ethnique à éliminer en B.

Si une intelligence artificielle entrainée à trouver des rebelles en Afghanistan apprend que les terroristes sont susceptibles de changer de carte SIM plusieurs fois par jour près de la frontière avec le Pakistan, qu’un médecin effectuant la navette quotidienne vers plusieurs hôpitaux est mis par erreur sur cette liste et qu’il est tué par un drone lors d’une frappe ciblée (cas réel), est-ce la faute du programmeur de l’algorithme, de ceux qui ont générés les données concernant les terroristes ou ceux qui ont entré ces données dans l’algorithme ?

À noter que, scientifiquement, ces algorithmes sont incroyablement intéressants et utiles. Leur utilisation doit, cependant, être encadrée par des personnes compétentes qui en comprennent les forces et les faiblesses.

Transmettre des données

Stocker les données n’est pas suffisant, encore faut-il pouvoir les transmettre. De nouveau, le nœud du problème est de se mettre d’accord. Comment transmettre les bits ? Dans quel ordre ? À quelle vitesse ? Comment détecter les erreurs de transmission ?

C’est le rôle du protocole.

La particularité des protocoles, c’est qu’on peut les empiler en couches successives, les « encapsuler ».

Physiquement, un ordinateur ne peut transmettre des données qu’aux ordinateurs auxquels il est directement relié, que ce soit par câble ou par wifi (qui est encore un protocole, mais que vous pouvez imaginer comme un fil invisible). Le protocole le plus utilisé pour cela aujourd’hui est Ethernet. Observez votre routeur (votre « box »), il comporte généralement des emplacements pour connecter des câbles Ethernet (entrées jaunes et rectangulaires, le format de ce connecteur étant appelé RJ-45, car il y’a aussi un protocole pour le format des prises, on parle alors de « norme » ou de « standard »).

Dans les années 70, une idée géniale voit le jour : celle de permettre à des ordinateurs non connectés directement de s’échanger des messages en passant par d’autres ordinateurs qui serviraient de relais. Le protocole est formalisé sous le nom « INTERNET PROTOCOL ». Chaque ordinateur reçoit donc une adresse IP composée de quatre nombres entre 0 et 255 : (par exemple). Tout ordinateur ayant une adresse IP fait donc partie d’Internet. Le nombre de ces adresses est malheureusement limité et, pour résoudre cela, de nouvelles adresses voient le jour : les adresses IPv6. Les adresses IPv6 ne sont pas encore la norme, mais sont disponibles chez certains fournisseurs.

Le protocole IP (sur lequel on rajoute le protocole TCP, on parle donc souvent de TCP/IP) permet de relier les ordinateurs entre eux, mais ne dit pas encore comment négocier des échanges de données. Ce n’est pas tout de savoir envoyer des bits vers un ordinateur n’importe où dans le monde, encore faut-il les envoyer dans un langage qu’il comprend afin qu’il réponde dans un langage que moi je comprends.

Les premiers temps de l’Internet virent l’explosion de protocoles permettant d’échanger différents types de données, chacun définissant son propre réseau. Le protocole UUCP, par exemple, permettant la synchronisation de données, fut utilisé par le réseau Usenet, l’ancêtre des forums de discussions. Le protocole FTP permet d’échanger des fichiers. Le protocole Gopher permet d’échanger des textes structurés hiérarchiquement (selon le format Gophermap). Le protocole SMTP permet d’échanger des emails (selon le format MIME). Chaque protocole est, traditionnellement, associé avec un format (sans que ce soit une obligation). En 1990, Tim Berners-Lee propose le protocole HTTP auquel il associe le format HTML. Le réseau HTTP+HTML est appelé le Web. Il est important de noter que le Web n’est qu’une petite partie d’Internet. Internet existait avant le Web et il est possible d’utiliser Internet sans aller sur le web (on peut télécharger ses mails, lire sur le réseau Gopher voire sur le tout nouveau réseau Gemini, consulter les forums sur Usenet, le tout sans aller sur le web ni lancer le moindre navigateur web).

Le web utilise un format assez traditionnel dit « client/serveur ». Un ordinateur va faire une requête vers un autre ordinateur qui sert de serveur.

Supposons que votre ordinateur (ou téléphone, montre, tablette, routeur, frigo connecté, c’est pareil, ce sont tous des ordinateurs à l’architecture similaire) souhaite accéder à Il va tout d’abord déterminer l’adresse IP qui correspond au domaine « ». Il va ensuite créer une requête au format HTTP. Cette requête dit, en substance : « Donne-moi le contenu de la page ». Le serveur répond un paquet HTTP qui dit « Le voici dans cette boîte ». La boîte en question contient un fichier texte au format HTML.

Ce fichier HTML est interprété par votre navigateur. Si le navigateur s’aperçoit qu’il y’a des références à d’autres fichiers, par exemple des images, il va envoyer les requêtes automatiquement pour les avoir.

Il est important de noter que rien ne distingue un ordinateur client d’un ordinateur serveur si ce n’est le logiciel installé. Il est tout à fait possible de transformer votre téléphone en serveur. Ce n’est juste pas pratique, car il faut être disponible 24h/24 pour répondre aux requêtes. C’est la raison pour laquelle on a mis en place des « data-centers », des salles dans lesquelles des ordinateurs tournent en permanence pour servir de serveurs et sont surveillés pour être automatiquement remplacés en cas de panne. Mais un ordinateur reste un ordinateur, qu’il soit un laptop, un téléphone, un rack dans un data-center, un routeur, une montre connectée ou un GPS dans une voiture. L’important est que tous ces ordinateurs sont reliés par câbles, les plus importants étant des câbles sous-marins qui quadrillent les océans et les mers.

Lorsque votre téléphone se connecte à Internet, il cherche, sans fil, le premier ordinateur connecté par câble qu’il peut trouver. C’est soit votre borne Wifi (qui est un ordinateur auquel il ne manque qu’un écran et un clavier), soit l’ordinateur de votre fournisseur téléphonique qui se trouve dans la tour 3/4/5G la plus proche. Les fameuses antennes GSM (pour simplifier, on peut imaginer que ces antennes sont simplement de grosses bornes Wifi, même si les protocoles GSM et Wifi sont très différents).

À noter que les satellites n’interviennent à aucun moment. L’utilisation de satellites pour accéder à Internet est en effet très rare même si on en parle beaucoup. Lorsqu’elle existe, cette utilisation ne concerne que le « dernier maillon », c’est à dire faire le lien entre l’utilisateur et le premier ordinateur connecté par câble.

L’hégémonie du web

La confusion entre Internet et le Web est courante. Le Web est en effet devenu tellement populaire que la plupart des logiciels sont désormais réécrits pour passer par le web. La plupart d’entre nous consultent désormais leurs emails à travers un « webmail » au lieu d’un logiciel parlant le protocole SMTP nativement. Les documents sont également rédigés en ligne et stockés « dans le cloud ». Évidemment, cela se fait au prix d’une complexité accrue. Au lieu de recevoir des données par clavier et les afficher sur un écran, il faut désormais les envoyer via HTTP au serveur qui les convertit en HTML avant de les renvoyer, en HTTP, sur votre écran.

L’une des raisons du succès du web est que ce modèle renforce le « vendor lock-in » évoqué préalablement. Si vous aviez sauvegardé vos données au format .doc, il vous fallait Microsoft Word pour les ouvrir, mais les données restaient malgré tout en votre possession.

Le marketing lié au terme « cloud computing » a permis de populariser l’idée auparavant complètement incroyable de stocker ses données, même les plus personnelles, chez quelqu’un d’autres. Vos données, vos photos, vos documents, vos messages sont, pour la plupart d’entre vous, en totalité chez Google, Microsoft, Facebook et Apple. Quatre entreprises américaines se partagent la totalité de votre vie numérique et la possibilité de vous couper l’accès à vos données, que ce soit volontairement ou par accident (ce qui arrive régulièrement).

Ces entreprises ont construit un monopole sur l’accès à vos souvenirs et sur l’observation de vos actions et pensées. Y compris les plus secrètes et les plus inconscientes.

Car, rappelez-vous, en visitant une page Web, vous allez automatiquement envoyer des requêtes pour les ressources sur cette page. Il suffit donc d’ajouter dans les pages des ressources « invisibles » pour savoir sur quelle page vous êtes allé. Cela porte le nom de « analytics » ou « statistiques ». L’immense majorité du web contient désormais des « Google Analytics » ou des « widgets Facebook ». Cela signifie que ces entreprises savent exactement quelles pages vous avez visitées, avec quel appareil, à quelle heure, en provenant de quelle autre page. Elles peuvent même souvent connaitre votre position. Ces données sont croisées avec vos achats par carte de crédit (le mieux c’est si vous utilisez Google Pay/Apple Pay, mais Google possède un accord de partage de données avec Mastercard).

Pour faire de vous un client, une entreprise devait auparavant développer un logiciel puis vous convaincre de l’installer sur votre ordinateur. Désormais, il suffit de vous convaincre de visiter une page web et d’y entrer des données. Une fois ces données entrées, vous êtes et resterez pour toujours dans leurs bases de données clients. J’ai personnellement fait l’expérience de tenter de lister et de me désinscrire de plus de 500 services web. Malgré le RGPD, il s’est avéré impossible d’être supprimé pour plus d’un quart de ces services.

L’Université Catholique de Louvain est un bon exemple pour illustrer la manière dont ce mécanisme se met en place. Historiquement, l’UCL était un pionnier dans le domaine d’Internet et plus spécialement de l’email. La toute première liste de diffusion email ne concernait que des universités américaines et canadiennes avec deux exceptions : une université en Écosse et l’Université Catholique de Louvain. Le thème et l’expertise dans ce domaine sont donc importants. La faculté d’ingénierie, aujourd’hui École Polytechnique de Louvain, comprit très vite l’importance d’offrir des adresses email à ses étudiants. Les emails étaient, bien entendus, gérés en interne dans des ordinateurs de l’université.

Début des années 2010, ce service a été étendu à toute l’université, ce qui a entrainé une surcharge de travail, mais, surtout, une perte de contrôle de la part de la faculté d’informatique. L’administration de l’université, malgré l’opposition de membres éminents de la faculté d’informatique, a décidé de migrer les adresses des étudiants sur les serveurs Google, mais de garder les adresses du membre du personnel sur un serveur interne de type Microsoft Outlook.

Après quelques années, Microsoft a annoncé que si, au lieu d’utiliser Outlook en interne, les comptes mails étaient désormais hébergés sur les ordinateurs de Microsoft, les utilisateurs bénéficieraient de 100Go de stockage au lieu de 5Go. Les étudiants ont été également transférés de Google à Microsoft.

Au final, absolument toutes les données universitaires, y compris les plus intimes, y compris les plus confidentielles, sont dans les mains toutes puissantes de Microsoft. Parce que c’était plus facile et que chaque utilisateur y gagnait 95Go pour stocker l’incroyable quantité de mails que l’université se sent obligée d’envoyer à chacun de ses membres sans leur permettre de se désabonner. Parce que tout le monde le fait et qu’on ne peut en vouloir à ceux qui prennent ces décisions.

Toute donnée envoyée sur le cloud doit être considérée comme publique, car il est impossible de savoir exactement qui y a accès ni de garantir qu’elles seront un jour effacées. De même, toute donnée sur le cloud doit être considérée comme pouvant disparaitre ou pouvant être modifiée à chaque instant.

Analyse de la situation

Comme nous l’avons vu tout au long de cette explication, la communication repose sur l’existence d’un protocole ouvert et partagé. Le contrôle du langage est d’ailleurs l’une des premières armes des tyrans. Cependant, l’existence d’un protocole nécessite un accord. Se mettre d’accord est difficile, prend du temps, nécessite de faire des choix et des compromis.

La tendance actuelle est de chercher à éviter de faire des choix, à se recentraliser sur ce que les autres utilisent sans se poser de questions. On se recentralise sur le Web au point de le confondre avec Internet. On se recentralise sur Google/Facebook au point de les confondre avec le Web. Les développeurs informatiques eux-mêmes se recentralisent sur la plateforme Github (appartenant à… Microsoft), la confondant avec le logiciel de développement décentralisé Git.

Par confort, nous cherchons à éviter de faire trop de choix, mais le prix à payer est que d’autres font ces choix à notre place et nous en oublions que ces choix sont même possibles. Ces choix étant oubliés, ils deviennent de plus en plus difficiles à imaginer. Un cercle vicieux se met en place : au plus les monopoles ont du pouvoir, au plus il est difficile de ne pas utiliser un monopole, ce qui entraine le renforcement du pouvoir du monopole en question.

Quelques entreprises, toutes issues d’un même pays avec des ingénieurs qui se connaissent et qui viennent des mêmes universités, contrôlent : les ordinateurs que nous utilisons, les logiciels que nous y installons, les données traitées dans ces logiciels. Elles contrôlent également ce que nous allons voir, ce que nous allons lire, ce que nous allons acheter. Elles peuvent imposer des délais et des tarifs aux fournisseurs. Étant la principale source d’information des électeurs, les politiciens leur mangent dans la main.

Ces entreprises ont également un seul et unique but commun : nous faire passer un maximum de temps devant notre écran afin de nous afficher un maximum de publicités et de nous faire régulièrement renouveler notre matériel. Toute l’incroyable infrastructure du web et des milliers de cerveaux parmi les plus intelligents du monde se consacrent à une seule et unique tâche : comment faire en sorte que nous soyons le plus possible sur l’ordinateur dans notre poche sans jamais nous poser la question de savoir comment il fonctionne.

Grâce aux algorithmes statistiques, tout cela est désormais automatique. Personne chez Facebook ou Google ne va promouvoir des théories complotistes ou des discours d’extrême droite. C’est tout simplement que l’algorithme a appris ce qui fait revenir et réagir les utilisateurs, ce qui les empêche de réfléchir. Dans la catégorie A, l’utilisateur a été soumis à des textes de Hugo et Zola entrecoupés d’articles du Monde Diplomatique. Dans la catégorie B, un utilisateur a été soumis à des dizaines de « Incroyable : la vérité enfin dévoilée », « vous ne croirez pas ce que cette dame a fait pour sauver son enfant » et « Le candidat d’extrême droite traite les musulmans de cons ». Lequel de A ou B a cliqué sur le plus de lien et passé le plus de temps sur son téléphone ? Dans quelle catégorie d’articles va tenter d’apparaitre le politicien cherchant à se faire élire ?

La presse « traditionnelle » a été complètement détruite par ce modèle. Non pas à cause de l’érosion des ventes, mais parce que les journalistes sont désormais jugés aux articles qui font le plus de « clics ». Le rédacteur en chef ne pose plus des choix humains, il se contente de suivre les statistiques en temps réels. La plupart des salles de rédaction disposent désormais d’écrans affichant, en temps réels, les articles qui fonctionnent le mieux sur les réseaux sociaux. Même les blogs les plus personnels ne peuvent se passer de statistiques.

La plupart des entreprises, depuis votre boulangerie de quartier aux multinationales, utilisent les services de Google et/ou Microsoft. Cela signifie que toutes leurs données, toute leur infrastructure, toute leur connaissance, toute leur logistique sont confiées à une autre entreprise qui peut, du jour au lendemain, devenir un concurrent ou entrer en conflit. On a fait également croire que cette infrastructure était nécessaire. Est-ce que votre boucherie de quartier a vraiment besoin d’une page Facebook pour attirer des clients ? Est-ce que l’association locale d’aide aux démunis doit absolument communiquer sur Twitter ?

Les politiciens, la presse et l’économie d’une grande partie du monde sont donc entièrement soumises à quelques entreprises américaines, entreprises dont le business-model établi et avoué est de tenter de manipuler notre conscience et notre libre arbitre en nous espionnant et en abusant de nos émotions. Ces entreprises vivant du budget alloué au marketing nous font en permanence croire que nous devons, tous et tout le temps, faire du marketing. Du personnal-branding. Mettre en évidence notre carrière et nos vacances de rêves. Communiquer sur les actions associatives. Se montrer au lieu de faire. Prétendre au lieu d’être.

Ces entreprises cherchent également à cacher le plus possible le fonctionnement d’Internet tel que je vous l’ai expliqué. Elles tentent de le rendre incompréhensible, magique, mystique. Elles s’opposent légalement à toute tentative de comprendre les protocoles et les formats qu’elles utilisent. C’est à dessein. Parce que la compréhension est la première étape, nécessaire et indispensable, vers la liberté.

Internet est aujourd’hui partout. Il est incontournable. Mais plus personne ne prend la peine de l’expliquer. C’est de l’IA avec des blockchains dans un satellite. C’est magique. Même les développeurs informatiques utilisent des « frameworks REACT dans un Docker virtualisé » pour éviter de se poser la question « Que suis-je en train de construire réellement ? ».

Tenter de le comprendre est un devoir. Une rébellion. Si mon écran me captive autant, s’il affiche ces données particulières, c’est parce que d’autres êtres humains y ont un intérêt majeur. Parce qu’ils l’ont décidé. Et ce n’est probablement pas dans mon intérêt de leur obéir aveuglément. Ni dans celui de la société au sens large.

Lectures recommandées

Sur l’influence et la problématique des monopoles : « Monopolized: Life in the Age of Corporate Power » , David Dayen.
Sur le traitement de nos données et l’invasion dans notre vie privée : « The Age of Surveillance Capitalism », Shoshana Zuboff
Sur l’impact d’Internet sur nos facultés mentales : « Digital Minimalism », Cal Newport et « La fabrique du crétin digital », Michel Desmurget
Sur le fonctionnement des réseaux sociaux : « Ten Arguments For Deleting Your Social Media Accounts Right Now », Jaron Lanier

Recevez les billets par mail ou par RSS. Max 2 billets par semaine, rien d’autre. Adresse email jamais partagée et définitivement effacée lors du désabonnement. Dernier livre paru : Printeurs, thriller cyberpunk. Pour soutenir l’auteur, lisez, offrez et partagez des livres.

Ce texte est publié sous la licence CC-By BE.

March 31, 2022

"The global COVID-19 pandemic has had countless impacts on society. One interesting effect is that it has created an environment in which many people have been able to explore their gender identity and, in many cases, undergo a gender transition. As organizations return to in-person work, be it full-time or hybrid, there is a greater chance of “out” transgender, non-binary, or gender non-conforming employees in the workforce." (From the "5 Ally Actions Newsletter - Mar 25, 2022")

March 31 is the Transgender Day of Visibility. The COVID Cocoon is a nickname given for the phenomenon of people discovering their gender diversity during the pandemic environment.

The full report is an interesting read; one recommendation that we can all contribute to is on Culture and Communication: Proactively communicating that gender diversity is accepted, asking staff for their input, and being open and ready to listen helps create a culture where employees can feel safe, welcome, and valued.

Taken from The Playlist - a curated perspective on the intersection of form and content (subscribe, discuss)

flattr this!

March 29, 2022

Hier in België hebben wij arbeidsregels. Jullie hebben die in Nederland ook.

Wanneer een bedrijf onze Belgische regels aan haar laars lapt dan kan het gebeuren dat we de zaakvoerder van dat bedrijf in een Belgische gevangenis stoppen. Dat is niet uitgesloten.

Het kan daarna ook gebeuren dat een belangrijke klant van dat bedrijf onmiddellijke vragen heeft. En dus daamee eigenlijk aangeeft dat het heel binnenkort geen klant meer van dat bedrijf zal zijn.

Ik kan me voorstellen dat binnen de ééngemaakte EU markt, PostNL met haar handelspraktijken, het het Belgische BPost oneerlijke concurrentie heeft aangedaan. Daarvoor moet er dus ook een aanzienlijke schadevergoeding komen. Uiteraard bovenop de gevangenisstraf voor de CEO van PostNL. Een beetje slavenarbeid hier komen introduceren mag niet gezien worden als een goedkope onderneming zonder echte straf. Dat begrijpen jullie toch?

Nederlanders die hier in België wat komen “ondernemen” doen er goed aan onze arbeidsregels te bestuderen. Want het kan zo maar eens gebeuren dat we jullie ondernemers en aangestelde zaakvoerders in onze Belgische gevangenissen opvangen. Dat we hun depots verzegelen en sluiten. Ongeacht de economische consequenties. Ongeacht wat jullie er van vinden. Want wij vinden soms iets anders. En het is wat wij er van vinden dat er toe doet. Gezien hier de Belgische wetgeving van toepassing is.

Ga maar aan jullie kant van de grens mensenhandel, zwartwerk, en zo verder organiseren. Doe dat maar in jullie eigen land (hoewel ik vermoed dat de EU dat ook niet heel grappig zal vinden, maar goed dat is dan jullie eigen godverdomme probleem). Jullie ondernemers die dat hier wensen te doen zijn niet welkom in België. Komen ze toch, dan worden ze veroordeeld en opgesloten in onze gevangenissen.

Tot de volgende keer.

"Your Second Brain is for preserving raw information over time until it's ready to be used, because information is perishable. Your Second Brain is the brain that doesn't forget." - Tiago Forte

Personal Knowledge Management is going through a wave of innovation with new tools like Roam, Logseq, Obsidian, Notion, RemNote, and others gaining traction over Evernote, OneNote and the like. It's a great time to get curious or reacquaint yourself with the tools and processes that strengthen learning, processing, and expressing your knowledge work.

The expression "Second Brain" has been popularized by Tiago Forte, who's been running an online cohort-based class called Building a Second Brain I took the class last year and found it a powerful distillation of an approach to PKM and note-taking. If you want to learn more, they just wrapped up the Second Brain Summit and posted all videos online: Second Brain Summit 2022 - Full Session Recordings - YouTube

The next class cohort is open for enrollment until March 30th midnight ET, at Building a Second Brain: Live 5-Week Online Course, and runs from April 12th to May 10th, 2022.

"Taking notes is the closest thing we have to time travel." - Kendrick Lamar

Taken from The Playlist - a curated perspective on the intersection of form and content (subscribe, discuss)

flattr this!

March 28, 2022

Set back in the woods, in the Vermont foothills, only accessible by a dirt road, you'll find the perfect weekend cabin called the "Baby Barn".

A great room with 20 foot ceiling, tall glass windows and a large fire place
The great room of the Baby Barn in Londonderry, Vermont.
Baby barn
Baby barn

On Saturday, Vanessa and I went on a 14 km (9 mile) hike, called "Griffith Lake Loop". It is part of the Appalachian Trail. The hike took us more than 6 hours to complete. Not only did we have 640 meters (2,100 feet) of elevation gain, we also had to cross multiple streams, and hike through mud and snow. Because of the snow at higher altitudes, parts of the trail were hard to follow and quite exhausting. Two days later, my legs still hurt.

Vanessa crossing a stream by stepping from rock to rock
Vanessa crossing one of many streams on the Griffith Lake Loop trail in Vermont.

March 25, 2022

I published the following diary on “XLSB Files: Because Binary is Stealthier Than XML“:

In one of his last diaries, Brad mentioned an Excel sheet named with a .xlsb extension. Now, it was my turn to find one… What’s the magic behind this file extension? “XLS” means that we are facing an Excel sheet and “B” means that we have a binary workbook file. Within the current Microsoft office files format, data are stored in XML. In this case, they are stored in binary. For Microsoft Office, to open a normal or binary file is the same… but for an attacker, the plus-value is the increased level of obfuscation! Indeed, it’s more difficult to extract interesting information like… [Read more]

The post [SANS ISC] XLSB Files: Because Binary is Stealthier Than XML appeared first on /dev/random.

March 22, 2022

Recently I wanted to print some PDF files containing sheet music. The tedious way to do that, would be to open them one by one in Evince and press the print button. Surely there must be a more efficient way to do that?

$ ls -l --human-readable *.pdf
-r--r--r-- 1 amedee amedee 217K apr 15  2020 'Arthur original.pdf'
-r--r--r-- 1 amedee amedee 197K apr 13  2020 'Canal en octobre.pdf'
-r--r--r-- 1 amedee amedee  14K apr 13  2020  DenAndro.pdf
-r--r--r-- 1 amedee amedee  42K apr 14  2020 'Doedel you do.pdf'
-r--r--r-- 1 amedee amedee  57K apr 13  2020  Flatworld.pdf
-r--r--r-- 1 amedee amedee  35K apr 16  2020 'Jump at the sun.pdf'
-r--r--r-- 1 amedee amedee 444K jun 19  2016 'Kadril Van Mechelen.pdf'
-r--r--r-- 1 amedee amedee  15K apr 13  2020  La-gavre.pdf
-r--r--r-- 1 amedee amedee  47K apr 13  2020 'Le petit déjeuner.pdf'
-r--r--r-- 1 amedee amedee 109K apr 13  2020  LesChaminoux__2016_04_24.cached.pdf
-r--r--r-- 1 amedee amedee 368K apr 13  2020 'Mazurka It.pdf'
-r--r--r-- 1 amedee amedee 591K apr 13  2020 'Narrendans uit Mater.pdf'
-r--r--r-- 1 amedee amedee 454K apr 13  2020 'Neverending jig.pdf'
-r--r--r-- 1 amedee amedee 1,1M apr 14  2020 'Red scissors.pdf'
-r--r--r-- 1 amedee amedee  35K apr 13  2020  Scottish-à-VirmouxSOL.pdf
-r--r--r-- 1 amedee amedee  76K apr 14  2020 'Tarantella Napolitana meest gespeelde versie.pdf'
-r--r--r-- 1 amedee amedee 198K apr 15  2020 'Zot kieken!.pdf'

There are 2 console commands for printing: lp and lpr. One comes from grandpa System V, the other from grandpa BSD, and both are included in CUPS. The nice thing about these commands is that they know how to interpret PostScript and PDF files. So this is going to be easy: just cd into the directory with the PDF files and print them all:

$ lp *.pdf
lp: Error - No default destination.

Oops. A quick Google search of this error message tells me that I don’t have a default printer.

Configuring a default printer

First I use lpstat to find all current printers:

$ lpstat -p -d
printer HP_OfficeJet_Pro_9010_NETWORK is idle.  enabled since za 12 mrt 2022 00:00:28
printer HP_OfficeJet_Pro_9010_USB is idle.  enabled since za 12 mrt 2022 00:00:17
no system default destination

I have a HP OfficeJet Pro 9012e printer, which Ubuntu recognizes as a 9010 series. Close enough. It’s connected over network and USB. I’m setting the network connection as default with lpoptions:

$ lpoptions -d $(lpstat -p -d | head --lines=1 | cut --delimiter=' ' --fields=2)
copies=1 device-uri=hp:/net/HP_OfficeJet_Pro_9010_series?ip= finishings=3 job-cancel-after=10800 job-hold-until=no-hold job-priority=50 job-sheets=none,none marker-change-time=0 media=iso_a4_210x297mm number-up=1 output-bin=face-down print-color-mode=color printer-commands=none printer-info printer-is-accepting-jobs=true printer-is-shared=true printer-is-temporary=false printer-location printer-make-and-model='HP Officejet Pro 9010 Series, hpcups 3.22.2' printer-state=3 printer-state-change-time=1649175159 printer-state-reasons=none printer-type=4124 printer-uri-supported=ipp://localhost/printers/HP_OfficeJet_Pro_9010_NETWORK sides=one-sided

I can then use lpq to verify that the default printer is ready:

$ lpq
HP_OfficeJet_Pro_9010_NETWORK is ready
no entries

Printing multiple files from console

I found that if I naively do lp *.pdf, then only the last file will be printed. That’s unexpected, and I can’t be bothered to find out why. So I just use ls and feed that to a while-loop. It’s quick and dirty, and using find+xargs would probably be better if there are “special” characters, but that’s not the case here.

There’s one caveat: when the PDF files are printed one by one, then the first page will be at the bottom of the paper stack, so I need to print them in reverse order.

$ ls --reverse *.pdf | while read f; do lp "$f"; done

With that command I got 17 print jobs in the printer queue, one for each file.

Now that I know how to print from console, I’ll probably do that more often. The man page of lp describes many useful printing options, like printing double sided:

$ lp -o media=a4 -o sides=two-sided-long-edge filename

March 18, 2022


Snapped these photos on my commute home. I love both the detail and the motion.

March 17, 2022

Work on Autoptimize 3.0 is almost finished and it has some big changes both functionally and technically; fundamental change for new installations: by default Autoptimize will not aggregate JS/ CSS any more (HTTP/2 is ubiquitous and there are other advantages to not aggregating esp. re. inline JS/ CSS and dependencies) new: no API needed any more to create manual critical CSS rules. new: “ disable...


March 15, 2022

I published the following diary on “Clean Binaries with Suspicious Behaviour“:

EDR or “Endpoint Detection & Response” is a key element of many networks today. An agent is installed on all endpoints to track suspicious/malicious activity and (try to) block it. Behavioral monitoring is also a key element in modern SIEM infrastructure: To see a word.exe running is definitively not malicious, same with a Powershell script being launched. But if you monitor parent/child relations, to see a Powershell script launched from a Word process, that is suspicious! Here is a simple Sigma rule to detect this behavior… [Read more]

The post [SANS ISC] Clean Binaries with Suspicious Behaviour appeared first on /dev/random.

March 14, 2022

J’ai le plaisir de vous annoncer deux sorties dans deux domaines complètement différents : la version 1.0 du logiciel Offpunk, le navigateur web/gemini déconnecté que je développe et la version audiolivre de Printeurs, mon roman cyberpunk.

Printeurs, la version audiolivre

Printeurs – version CD

J’aime beaucoup lire à haute voix, déclamer, changer d’intonation pour interpréter les différents personnages. Mais en faisant un test avec le producteur d’audiolivres Voolume, j’ai très vite réalisé mes limites. L’exercice est épuisant et demande une expérience particulière.

C’est la raison pour laquelle nous avons fait appel au comédien Loïc Richard avec qui ce fut un plaisir d’échanger. J’ai pu lui confier ma vision des personnages, lui révéler des petits secrets qui n’apparaissent pas dans le livre, mais qui m’ont guidé pour les faire agir.

À la première écoute, un frisson m’a parcouru l’échine. C’était bien mon texte, mes personnages, mais ils semblaient s’être émancipés, avoir acquis une vie propre sous la voix de Loïc. J’adore ! Merci Loïc !

Tout ça pour dire que l’audiolivre Printeurs est disponible sur Voolume et bientôt sur toutes vos plateformes centralisées propriétaires, que je vous le conseille chaudement. Si vous souhaitez vous passer d’intermédiaire et obtenir des MP3 sans DRM, je vous encourage à pousser un peu mon éditeur pour les rendre disponibles sur son site.

L’avantage des MP3, c’est que ça se partage sur clé USB ou par… comment ? Bitruisseau ? Bitrivière ? Bitcascade ? Bref, un truc du genre, mais le contrôle de cerveau de mon éditeur m’empêche de me rappeler du nom exact.

Lien voolume:
Le site du comédien Loïc Richard:
Commander Printeurs version papier ou epub:

Offpunk, le navigateur déconnecté pour le smolnet

On reste dans le cyberpunk, mais on passe au texte écrit en vert sur un écran noir clignotant.

Sur le web, chaque site est devenu une véritable application qu’il faut apprendre à utiliser, réapprendre à chaque mise à jour, contre lequel il faut lutter pour ne pas être envahi de publicité ni espionné. Quant au contenu ? Il faut généralement se dépêtrer de tout ce qui l’entoure pour le trouver. Certains navigateurs disposent d’un mode « readability/lecture » qui permet de n’afficher que le texte de l’article. Un énorme effort d’ingénierie pour défaire l’effort d’ingénierie de ceux qui ont programmé le site en question. Souvent pour se rendre compte que la valeur du contenu nu est faible voire nulle. Avez-vous déjà réalisé que ce magnifique « thread » de 37 tweets que vous avez lus tweet par tweet n’est, une fois imprimé, qu’un assemblage maladroit de phrases mal agencées contenant très peu d’information de valeur ?

Parmi les programmeurs, les bidouilleurs, les amateurs de texte brut et autres geeks, une fronde se met en place contre cette complexité et hypercommercialisation d’un web où la seule manière d’exister est de passer dix fois plus de temps à promouvoir son contenu qu’à le créer, où l’objectif n’est plus de communiquer, mais de soutirer des données et d’augmenter le nombre de clics.

Le nom de cette fronde ? Il n’est pas officiel, bien entendu, mais la bannière « smolnet » revient souvent (avec des variantes comme « small web » ou le très ironique « slow web »). Ce qu’on trouve sur le smolnet ? Des blogs personnels et minimalistes sans publicités ni statistiques (se retirant parfois volontairement des moteurs de recherche), des contenus disponibles par RSS. Des capsules de texte disponibles sur le protocole Gemini (voire sur l’ancêtre du web, le vénérable protocole Gopher), des podcasts directement accessibles au format MP3. Certains incluent également les réseaux décentralisés comme Mastodon dans le smolnet.

Passionné par la mouvance, mais étant essentiellement déconnecté, j’ai créé un navigateur dédié au smolnet: Offpunk, dont je vous annonce la version 1.0, première version stable et mature.

Capture d’écran d’Offpunk sur un site Gemini

Offpunk est un logiciel en ligne de commande : pas de souris, pas de raccourcis clavier. Chaque action correspond à une commande.

Par exemple, la commande « go gemini:// » va vous afficher ma capsule Gemini. Sur celle-ci, chaque lien est représenté par un chiffre. Il suffit de taper ce chiffre pour suivre le lien. Puis de taper « back » (ou « b ») pour revenir à la page précédente.

Mais comment faire si plusieurs liens sont intéressants ? Nous allons les ajouter à un « tour », une liste de liens que l’on souhaite lire. Par exemple :  »tour 5 6 8-11″ (ce qui comprend automatiquement le 9 et le 10). Pour visiter la prochaine page dans le tour, il suffit de taper « tour » tout seul (ou « t »).

Cela parait un truc de geek, mais j’y trouve, au contraire, une simplicité reposante. Bon, après, je suis un geek qui s’est mis à Linux parce qu’il regrettait la ligne de commande DOS de son enfance.

Offpunk permet de visiter les pages Gopher, Gemini et Web de cette manière. Les pages web sont optimisées pour n’afficher que le contenu sans menus, publicités et autres. Offpunk permet également de s’abonner au flux RSS d’une page web avec la commande « suscribe ». Tout nouvel élément dans un flux sera immédiatement ajouté au prochain tour.

Capture d’écran d’Offpunk affichant une page web avec une image

La grande particularité d’Offpunk est que tout cela peut se faire de manière déconnectée ! Les contenus sont conservés sur le disque dur de manière permanente. Il suffit de lancer périodiquement la commande « sync » (depuis Offpunk ou en ligne de commande) qui va télécharger et ajouter à votre tour les contenus que vous avez demandés, mais qui n’étaient pas disponibles. Sync va également rafraichir les flux et autres pages auxquelles vous êtes abonnées pour peu que vous donniez une fréquence de rafraichissement (« sync 3600 » va rafraichir toutes les pages qui ont plus d’une heure).

Tous les contenus, quelle que soit leur origine, s’affichent donc identiquement comme du texte dans votre terminal. C’est très confortable et permet de se concentrer sur le sens des mots plutôt que sur leur emballage. Ce qui n’est pas toujours à l’avantage des contenus, il faut le dire. L’accès déconnecté permet également de classer les contenus en listes, de les organiser, de prendre des notes au sein de ces listes. La commande « help » vous permettra d’explorer toutes les fonctionnalités d’Offpunk.

Le logiciel fonctionne tellement bien que j’en viens à me demander si on est vraiment déconnecté quand on utilise Offpunk. Pour répondre à une déconnexion stricte, mon cerveau tordu a réussi à me faire programmer un logiciel qui me permet d’être connecté… tout en étant déconnecté. J’avoue ne pas l’avoir vu venir, ne croyant au départ utiliser le logiciel qu’occasionnellement pour télécharger un lien que j’aurais reçu par mail. Une fois encore, mon cerveau m’a roulé dans la farine pour satisfaire son addiction !

Mais je vous laisse tester vous-même !

Installer et tester Offpunk requiert, pour le moment, un ordinateur sous Linux ou BSD et de savoir télécharger et lancer un script Python, mais, comme il s’agit d’un logiciel libre, j’espère que d’autres le rendront disponible plus simplement à travers des paquets. La commande « version » est utile pour voir si certaines bibliothèques sont manquantes sur votre ordinateur, réduisant les fonctionnalités. Mais le mieux est d’utiliser « help » pour voir la liste de commandes possibles.

Offpunk, site officiel:
Ma présentation de Gemini:

Mon gemlog: gemini://

Quelques gemlogs francophones pour démarrer sur Gemini:


Recevez les billets par mail ou par RSS. Max 2 billets par semaine, rien d’autre. Adresse email jamais partagée et définitivement effacée lors du désabonnement. Dernier livre paru : Printeurs, thriller cyberpunk. Pour soutenir l’auteur, lisez, offrez et partagez des livres.

Ce texte est publié sous la licence CC-By BE.

March 11, 2022

Yes! Infosec conferences are back with in-person events! If we were able to attend virtual events from our sofa during the last two years, it’s much more fun to meet people “IRL” and have good times! Let’s hope that the pandemic will remain behind us.

I should restart publishing some wrap-ups (overview here) from conferences that I’ll attend. That’s why I updated the right menu on this page and will announce upcoming events. Keep an eye on it for more conferences!

The post In-Person Infosec Conferences Are Back appeared first on /dev/random.

I published the following diary on “Keep an Eye on WebSockets“:

It has been a while that I did not spot WebSockets used by malware. Yesterday I discovered an interesting piece of Powershell. Very small and almost undetected according to its Virustotal score (2/54). A quick reminder for those that don’t know what a “WebSocket” is. When you perform a classic HTTP request to a server, it replies with some data and closes the connection. WebSockets make the client/server push messages at any time without any relation to a previous request. Compared to HTTP, they allow bi-directional protocols, full-duplex and, over a single TCP connection… [Read more]

The post [SANS ISC] Keep an Eye on WebSockets appeared first on /dev/random.

March 10, 2022

I published the following diary on “Credentials Leaks on VirusTotal“:

A few weeks ago, researchers published some information about stolen credentials that were posted on Virustotal. I’m keeping an eye on VT for my customers and searching for data related to them. For example, I looking for their domain name(s) inside files posted on VT. I may confirm what researchers said, there are a lot of passwords leaks shared on VTI but yesterday, there was a peak of files uploaded on this platform… [Read more]

The post [SANS ISC] Credentials Leaks on VirusTotal appeared first on /dev/random.

March 09, 2022

I published the following diary on “Infostealer in a Batch File“:

It’s pretty common to see malicious content delivered as email attachments. Every day, my mailboxes are flooded with malicious content… which is great from a research point of view. Am I the only one to be happy when I see my catch-all mailboxes full of junk… [Read more]

The post [SANS ISC] Infostealer in a Batch File appeared first on /dev/random.

8 mars 2022

Il y a quelques jours, mon épouse est rentrée de la pharmacie interloquée : la cliente avant elle venait d’acheter des pastilles d’iode pour se protéger des retombées nucléaires. La pharmacienne affirma que c’était la quatrième aujourd’hui. Ma première pensée fut un incident dans une centrale. Au même moment, ma mère m’envoya un SMS pour savoir si nos passeports étaient en ordre, au cas où il faudrait fuir le pays.

Je commençai à subodorer une nouvelle hystérie médiatique, celle sur le COVID commençant à s’affadir. Sur le réseau Gemini, un gemlog que je suis répondait à un autre geminaute qui avait annoncé bloquer les requêtes provenant de Russie, ce qui me semblait particulièrement puéril. Écoutant les conversations et jetant un œil aux vitrines des marchands de journaux, je compris le sujet d’inquiétude en question. Poutine avait envahi l’Ukraine.

Mes connaissances en géopolitique sont essentiellement nulles. Cependant, je sais que des combats opposent les Russes et les Ukrainiens depuis 2014. Que l’escalade de ce conflit n’est pas réellement étonnante, voire était attendue. Que s’il est dramatique pour les populations concernées et pour leurs voisins directs (je pense aux Polonais, par exemple), ce conflit ne m’implique pas directement. Et surtout, que me gaver d’images ne peut absolument pas améliorer la situation.

Sans avoir besoin de me connecter, je devine que des images dramatiques doivent tourner en boucle. Certaines sont réelles et importantes. Certaines sont réelles, mais tout à fait anecdotiques. Certaines sont fausses ou issues d’autres événements, antérieurs parfois de plusieurs années. Certaines sont de la propagande pure et simple. Il n’y a qu’une certitude : il est impossible de faire la différence au milieu de ce que les analystes appellent « the fog of war », l’incertitude de la guerre.

Oui, Poutine dispose de l’arme nucléaire. Le conflit peut potentiellement dégénérer. Cela a toujours été le cas. Certains spécialistes, comme Vinay Gupta, annoncent depuis des années que le risque lié à une guerre nucléaire est statistiquement plus important que le risque lié au réchauffement climatique. C’est un fait dont je suis bien conscient, mais sur lequel je ne peux agir.

La seule question vraiment importante est : la probabilité de survie en cas de conflit mondial est-elle améliorée par la consommation de l’actualité ? Ma réponse, très personnelle, est négative. Je dirai même au contraire que se déconnecter de l’actualité permet d’avoir des raisonnements beaucoup plus rationnels et, dans mon cas, me permet de mieux percevoir les sentiments de la foule sans en être atteint moi-même. Je peux bien entendu me tromper, mais c’est un pari que je fais.

S’il est vraiment nécessaire ou intéressant de comprendre ce qui se passe, l’univers me le fera savoir. Il faut croire que les personnes que je suis par RSS ou sur Gemini sont très pertinentes, car je n’ai vu que très peu de choses sur la guerre en Ukraine. Parmi celles-ci, un simple lien, une analyse très pertinente qui vaut, je le pense, des centaines d’heures d’images tournant en boucle.


Il faut avouer que j’ai été très tôt baigné dans l’actualité.

J’ai grandi entre un père journaliste qui rapportait plusieurs quotidiens et hebdomadaires chaque soir à la maison et une mère institutrice qui a toujours insisté sur l’importance de se créer un réseau social, de l’entretenir, de créer des opportunités pour les autres et saisir celles qui se présentaient.

Tous les soirs, je lisais l’intégralité de cet incroyable échantillonnage de la presse écrite afin « d’être au courant ».

En 1996, mon professeur au lycée souhaitant voir si nous suivions l’actualité nous annonça qu’une décision politique importante avait été prise la veille. Savions-nous ce qui s’était passé ? Je levai le doigt et expliquai que la Belgique venait de décider d’abolir définitivement la peine de mort. Le professeur éclata de rire en me disant que ce n’était pas vrai, que la peine de mort n’existait plus en Belgique. Il faisait, lui, référence à une vague décision politique qui fit sans doute la une des journaux télévisés ce jour-là avant d’être oubliée la semaine suivante. L’abolition de la peine de mort, qui n’avait eu droit qu’à un vague article en page 5 du quotidien que je lisais, n’intéressait personne et sera effectivement ratifiée le 10 juillet, dans l’indifférence générale. Pourtant, l’événement me semblait clairement plus important qu’une décision politique que je savais déjà pareille à des milliers d’autres prises chaque année. J’avais 15 ans et je venais de comprendre que même les professeurs, adultes et intellectuels, ne cherchaient pas à percevoir l’importance historique d’un événement, mais se laissaient manipuler entièrement par le journal télévisé. Si le présentateur annonçait que c’était important, personne ne se posait de questions. Le lendemain, je posai l’article annonçant la future abolition de la peine de mort sur le bureau du professeur. Il me rétorqua que ce n’était pas important, la peine de mort n’étant de toute façon plus appliquée en Belgique. Le journal télévisé avait remplacé la messe dominicale. Le système scolaire a fort logiquement remplacé les obligations liturgiques par des « formations à l’actualité et la citoyenneté ». Sous le prétexte de se tenir au courant, la société tente d’uniformiser « ce qui est important » de ce qui ne l’est pas, de poser des jalons communs dans l’inconscient collectif.

Le 11 septembre 2001, mon téléphone sonna alors que je surfais sur le web depuis ma chambre d’étudiant. Un ami d’enfance m’ordonnait d’allumer la télévision. J’ai toujours eu horreur de la télévision, mais elle était presque en permanence allumée dans notre appartement, car indispensable à certains de mes colocataires. Pour une fois, elle était éteinte. Je répondis donc à mon ami de me raconter. Il me dit qu’un avion s’était écrasé sur le Pentagone, à Washington. Je rigolai. Un avion de tourisme s’était probablement écrasé dans une zone de « sécurité » et ça devait faire tout un foin. Pas besoin d’allumer la télévision pour cela. Mon ami insista, me disant que c’était sur toutes chaines.

Je dis d’accord en rigolant et raccrochai. Par honnêteté, je me rendis dans le salon et allumai la télévision. Je compris très vite qu’il se passait quelque chose de plus grave qu’un simple incident. Je me souviens d’avoir rappelé mon ami pour lui dire que ce n’était finalement pas un truc amusant puis d’avoir passé les heures suivantes devant cette télévision, à tenter de comprendre. Je me rendais sporadiquement dans ma chambre pour trouver des informations sur le web, mais les réseaux sociaux n’existaient pas. Les sites d’actualités étaient à la traine. Il n’y avait que peu d’information à glaner. Personne ne savait rien.

Les jours qui suivirent furent passés dans un état mental proche de l’hébètement à regarder en boucle les mêmes images de l’attentat qui devait changer la face du monde de manière profonde et insidieuse. Je tentai de me reprendre, me morigénant pour mon apathie physique, tentant de me convaincre que je ne pouvais pas agir sur ces événements et que je n’avais rien à gagner à regarder les mêmes images en boucle. Mais j’étais obnubilé et je fus aspiré dans cette hystérie médiatique, cette hallucination partagée dans laquelle nous nous débattons encore.

J’appris cependant de cette expérience, observant que le phénomène se reproduisait à chaque événement médiatique intense, de plus en plus fréquemment. L’arrivée des réseaux sociaux ne fit qu’aggraver le stress, la fatigue et les séquelles d’événements qui ne m’avaient pourtant pas touché autrement que par images interposées. Contrairement à la télévision, les réseaux sociaux étaient impossibles à éteindre. Lors d’attentats, ils se paraient même de publicités pour les sites d’actualités traitant du sujet. Comme ils étaient devenus notre principale source d’échange ou de recherche d’information, il devenait impossible d’avoir des relations humaines en ligne ou d’utiliser le web sans être bombardé des dernières nouvelles. Certaines actualités étaient devenues impossibles à ignorer. Ce n’était d’ailleurs pas spécialement les plus graves ou les plus importantes. C’étaient celles que les réseaux sociaux avaient décidé de considérer comme telles. J’ai beau mettre mon téléphone en mode avion, les notifications sur ceux de mon entourage interrompent désormais nos conversations pour nous prévenir, pour nous faire lâcher tout.

Alors que je me dirigeais vers le bureau d’un ami journaliste dans un espace de co-working, une après-midi de 2015, je le trouvai en état de choc, lisant compulsivement Twitter et bredouillant des paroles incompréhensibles à propos du magazine Charlie Hebdo. Ne voulant pas céder à la panique médiatique, je pris la résolution de sauvegarder tous les articles sur le sujet et de ne pas les lire avant une semaine.

Cette expérience me fit prendre conscience de l’inanité des articles rédigés à chaud. Personne ne sait rien. Tout le monde répète et amplifie les mêmes rumeurs. Les images sont hypnotiques et empêchent de penser.

La crise COVID me fit rechuter complètement. Outrepassant complètement les sites d’informations générales, dont l’inanité n’a d’égal que la pitoyable quête de sensationalisme, je passai des semaines sur des sites beaucoup plus spécialisés, lisant chaque nouveau papier scientifique sur le sujet. J’en ressortis épuisé et sans réelle valeur ajoutée. Même les spécialistes ont besoin de temps pour comprendre, tester, analyser. Penser. Il est impossible d’obtenir rapidement la connaissance qui, par essence, ne se construit que dans la durée.

Toutes ces expériences me convainquirent que l’immense majorité des informations ne nous est absolument pas utile et que l’univers nous fait parvenir, d’une manière ou d’une autre, ce que nous devons absolument savoir. La crise du COVID m’a d’ailleurs plusieurs fois illustré à quel point il est implicitement évident que chacun passe sa vie à regarder les informations. Faut-il mettre un masque ou non ? Faut-il avoir un certificat de vaccin ou non ? Les règles changeaient en permanence sans qu’une source établie soit nécessairement évidente à trouver. Il est considéré comme acquis que le citoyen est scotché aux annonces du gouvernement.

Dans son livre « TV Lobotomie », le neuroscientifique Michel Demurget explique que face à un écran, notre métabolisme consomme encore moins qu’au repos. Nous sommes littéralement dans une forme de catalepsie, dans une transe. Que ce soit le coup de sifflet final du match de football ou le générique de fin du film, nous sommes forcés, parfois douloureusement, de reprendre contact avec notre corps, avec la réalité physique. Mais, sur Internet ou dans les jeux vidéos, il n’y a pas de générique de fin. Nous sommes happés à en perdre le sommeil, à en oublier de manger. Des décès, heureusement rares et anecdotiques, de joueurs ayant passés plusieurs jours devant leur écran ont même été signalés en Corée.

L’écran a un effet hypnotique physique. Il capte notre attention. Faites l’expérience et entrez dans une pièce que vous ne connaissez pas comme un bar ou le salon d’un ami chez qui vous n’avez jamais été. Ne restez qu’une seconde et sortez immédiatement.

Si une connaissance est dans la pièce, il est possible que vous l’ayez reconnue. Il est également possible que vous ne l’ayez pas vue. Si un élément particulier décore la pièce, il est possible que vous l’ayez remarqué. Mais il est également probable que vous n’ayez pas fait attention.

Par contre, si un écran est allumé dans la pièce, vous l’avez vu. Vous ne pouvez pas l’avoir manqué. Vous pouvez même probablement dire ce qu’affichait cet écran. Voir citer le nom de l’émission, du présentateur télé ou du politicien qui s’exprimait. Il est impossible d’ignorer un écran. L’écran capte notre attention de manière autoritaire, indiscutable. Ne pas regarder un écran demande plus d’effort mental que de ne pas le voir.

Beaucoup de familles laissent un écran de télévision allumé en permanence. Une partie de leur cerveau traite, en permanence, l’image des écrans. À la longue, certains ont construit une tolérance qui rend ce processus inconscient, mais il est toujours là.

N’ayant jamais eu la télévision, je n’ai pas construit cette tolérance. Je suis donc particulièrement sensible aux écrans. Il m’est souvent rétorqué que ceux qui sont devenus tolérants ne voient plus l’écran, que c’est comme si l’écran n’était pas là.

Pourtant, ces mêmes personnes n’hésitent pas à interrompre une conversation que nous avons pour me dire « Oh, regarde ce qui se passe dans la télé », preuve que leur cerveau traite en permanence l’information.

Un manager dans une grande multinationale me confiait, alors que nous étions en voyage d’affaires, qu’allumer la télé était la première chose qu’il faisait en se réveillant dans sa chambre d’hôtel. Il a évoqué « le besoin d’avoir une présence ». Je pense aujourd’hui qu’il s’agit d’une addiction. Une partie de nos neurones a, pendant toute notre enfance, été éduquée a recevoir en permanence l’information d’un écran afin de pouvoir avertir le cerveau conscient si jamais quelque chose d’intéressant s’y passait. Au réveil, cette partie du cerveau est clairement en manque. Elle a besoin de sa dose de stimuli.
Lorsque mon fils de cinq ans est exceptionnellement autorisé à regarder un dessin animé sur l’ordinateur de mon épouse, il est immobile, figé. Mais lorsqu’il faut couper l’écran, il se met souvent dans une colère noire, violente, rappelant les crises de sevrage d’un drogué.

Le cerveau est encore aujourd’hui un domaine particulièrement mystérieux. Nous avons cependant appris énormément de son fonctionnement au cours des dernières décennies. Nous savons par exemple que plus un ensemble de neurones est activé en même temps, plus va s’épaissir la gaine de myéline entourant ces neurones, améliorant leur efficacité. C’est la base de l’apprentissage : plus nous accomplissons une action, meilleurs nous sommes pour l’accomplir, au point de devenir experts. Les neurones se développent exactement comme les muscles d’un sportif à l’entrainement.

Dans son livre Deep Work, Cal Newport suggère que, pour devenir un expert, il est donc important de se concentrer sur une et une seule tâche. Si nous passons d’une tâche à l’autre rapidement voire, pire, si nous prétendons faire du multitâche, l’effet sur les neurones sera trop diffus voire inexistant.

Les sportifs le savent bien : pour se muscler, il est important de travailler un système musculaire à la fois, avec des exercices relativement longs et réguliers. Soulever un poids puis faire une flexion de jambe avant de courir 100 m n’améliorera ni votre condition physique ni votre musculature.

Or, quelle est la compétence pour laquelle nous sommes désormais capables de nous concentrer pendant des heures ? Quelles sont les connexions neuronales que nous renforçons de manière quasi permanente à raison de plusieurs heures par jour ?

Regarder un écran. Cliquer. Faire défiler des images. Cliquer sur un titre provocateur sans même être capable d’arriver au bout du contenu, mais en étant persuadé d’avoir tout compris. Nous indigner. Réagir. Commenter. Critiquer. Nous sommes devenus des experts, nous développons les neurones qui nous rendent les meilleures machines à cliquer possibles.

Mais n’apprenons-nous pas en consommant tout ce contenu ? Ne sommes-nous pas en interaction avec une somme de connaissance humaine ? Ne développons-nous pas nos relations sociales ?

Dans son livre « Proust and the Squid », la neuroscientifique et spécialiste de la lecture Maryanne Wolf explique que lire un long livre dans lequel on s’immerge permet au cerveau de développer des capacités similaires à celles observées si l’aventure avait été réellement vécue par l’humain. Le cerveau oublie littéralement qu’il ne fait que lire et se construit comme s’il vivait des expériences. Si c’est incroyable, cela demande bien entendu une profondeur, une immersion intense et relativement longue comme on peut en trouver dans un roman. La concentration et la durée sont indispensables à ce processus.

L’écran, malheureusement, a exactement l’effet inverse. Michel Desmurget relate les expériences menées avec un professeur interagissant avec des enfants, soit dans la même pièce, soit par écran interposé. Alors que les interactions sont exactement identiques, le fait d’avoir un écran rend l’apprentissage virtuellement nul. L’enseignement à distance tant vanté durant la pandémie aura peut-être des conséquences à long terme sur notre société bien pire que la maladie elle-même.

Au contraire du livre, qui immerge le cerveau dans une réalité virtuelle, mais effective, l’écran isole et n’offre qu’une apparence. Il transmet et submerge le cerveau d’émotions, le transforme en récepteur passif. Au lieu de créer des compétences, des qualités adaptables, l’écran génère des réflexes instinctifs primaires tout en générant une fatigue, un épuisement intellectuel.

Daniel Kahneman, dans son livre séminal « Thinking Fast and Slow » a popularisé le concept des deux systèmes de pensées. Le système 1, intuitif, serait extrêmement rapide, mais soumis à de nombreuses erreurs. Il ne maitrise en effet pas les statistiques, les résultats contre-intuitifs ou nouveaux. Il se base sur les prérequis et l’expérience pour agir le plus rapidement possible. Le système 2, au contraire, est lent et cherche lui a agir le plus justement possible en analysant, en modélisant. Les deux systèmes sont incroyablement complémentaires, mais peuvent souvent entrer en conflit. Dans des situations d’urgence, le système 1 doit évidemment avoir la priorité. Pas besoin de comprendre l’origine de l’incendie sous nos yeux, l’important est de courir vers la sortie. Par contre, lorsqu’il n’y a pas d’urgence immédiate, prendre le temps de réfléchir est souvent une meilleure solution.

De par leur conception, les livres s’adressent au système deux. Que ce soient des essais scientifiques ou des romans des sciences-fictions, ils développent notre capacité d’analyse, nous confrontent à des situations inédites et nous explicitent les différentes possibilités. Les romans policiers, par exemple,nous enseignent en permanence que la vérité est plus subtile et complexe que ce que notre intuition nous fait croire. Le talent d’une Agatha Christie ou d’un Conan Doyle résidant justement à guider notre intuition pour nous révéler, à la dernière page, ses erreurs. L’erreur n’est souvent pas seulement un indice camouflé, mais bien une conception du monde. Dans « Le cheval pâle », Agatha Christie nous offre un roman qui semble fantastique, différent des policiers traditionnels. La surprise provient que tout ce qui parait surnaturel, qui ne semble avoir des explications qu’à travers le surnaturel se révèle, finalement, parfaitement rationnel et relativement simple. Avec un simple roman, Agatha Christie nous enseigne donc que notre système 1 a une tendance incroyablement forte à vouloir se fier aux apparences, quitte à réfuter les lois de la physique de notre univers. Il est plus facile de réfuter la somme de toute la connaissance scientifique humaine que d’admettre une erreur de sa propre intuition.

Contrairement aux livres, les écrans s’adressent immédiatement au système 1 et le renforcent. À travers une série incessante de stimuli, ils désactivent notre système 2, l’enterrent et nous font agir par réflexe.

Au plus nous cliquons, au plus nous renforçons le circuit neurologique nous encourageant à cliquer. À chaque clic, nous détruisons graduellement notre originalité, notre créativité, notre esprit critique et notre libre arbitre. Nous nous laissons emporter dans de torrents émotionnels qui sont d’autant plus forts lorsqu’ils sont partagés et socialement validés.

Il y a quelques jours, un chauffeur de taxi qui nous ramenait de la gare nous expliqua à quel point il était fier que ses enfants regardent le journal télévisé et soient si bien informés de tout ce qui se passait en Ukraine, connaissant les noms des ministres et d’autres détails. Il ajouta qu’on ne le croirait peut-être pas, mais qu’il transportait parfois des gens de 40 ans qui en savaient moins sur le sujet que ses enfants. Mon épouse étouffa un sourire en regardant son quarantenaire de mari médiaphobe.

J’ai alors pensé que si Vladimir Poutine a envahi l’Ukraine, cela ne change rien à ma vie. Cela ne change rien à ce que je peux faire. À ce que je dois faire. Bref, je m’en fous.

Poutine a envahi l’Ukraine et, soudainement, plus personne ne se préoccupe de savoir si nous avons tous un masque et trois doses de vaccin. Du jour au lendemain, Poutine semble avoir éradiqué le COVID. Il fallait un ennemi commun pour réconcilier antivaccins et provaccins : Poutine s’est sacrifié.

J’ai gardé mes réflexions pour moi. Mon épouse m’a fait un clin d’œil et le chauffeur a très vite embrayé sur les résultats désastreux de l’équipe de football locale.

Recevez les billets par mail ou par RSS. Max 2 billets par semaine, rien d’autre. Adresse email jamais partagée et définitivement effacée lors du désabonnement. Dernier livre paru : Printeurs, thriller cyberpunk. Pour soutenir l’auteur, lisez, offrez et partagez des livres.

Ce texte est publié sous la licence CC-By BE.

March 08, 2022

Ach Vladimir Putin, je ego -

Je bént geen genie in Stratego!

De mensen gaan dood.

De Dnipro kleurt rood

Speel jij toch maar liever met Lego.

March 04, 2022

For the people who want to know how to get around the ongoing media bans:

Do a Google search and type in ‘free ssh country‘. Use as ‘country‘ the country where the media is that you want to reach. Take the first hit. Create the SSH tunnel account that is freely available.

In a console (if you don’t have SSH, you can install it with for example Git Bash, Cygwin, etc on Windows. You can also use Putty of course – make a SOCKS tunnel). Note that the username and hostname will be different (the website will tell you).

ssh -D 1337 -q -C -N

For Firefox: Settings->Network Settings [Settings]->Manual Proxy configuration. Type next to SOCKS Host: localhost, and next to Port: 1337. Next check ‘Proxy DNS when using SOCKS v5’. You have equivalent settings in Chrome and Chromium among other browsers.

There are many options as VPN service. You can also search with Tor-browser if you think the secret services want to kill you or something. It’s not very likely, though. But if you are paranoid, then I guess sure.

Tor-browser itself might by the way also work just fine.

March 03, 2022

Now that I have a way to compile kernels from source, I want to find the exact commit where my input devices stop working. That means doing a git checkout of a certain commit, build the kernel, install it, reboot, select the new kernel in Grub, and see if my keyboard works. I am quite sure that I need to search between 5.13.0-22 and 5.13.0-23, but that’s still 634 commits!

$ git rev-list Ubuntu-5.13.0-22.22..Ubuntu-5.13.0-23.23 | wc --lines

This is where git bisect comes in. It’s sort of a wizard that guides you to find a bad commit. You tell it on which commit your software was known to work ok, and a commit where it doesn’t. It then picks a commit somewhere in the middle, you build your software and do your tests, and then tell git bisect if the result was good or bad. It will then give you a new commit to inspect, each time narrowing the search.

git bisect

Let’s do this!

$ git bisect start
$ git bisect good Ubuntu-5.13.0-22.22
$ git bisect bad Ubuntu-5.13.0-23.23
Bisecting: 316 revisions left to test after this (roughly 8 steps)
[398351230dab42d654036847a49a5839705abdcb] powerpc/bpf ppc32: Fix BPF_SUB when imm == 0x80000000
$ git describe --long 

In this first step, I get the 317th commit after 5.13.0-22. Let’s compile that commit:

$ time make clean olddefconfig bindeb-pkg \
    --jobs=$(getconf _NPROCESSORS_ONLN) \
    LOCALVERSION=-$(git describe --long | tr '[:upper:]' '[:lower:]')

This creates 3 .deb packages in the directory above:

$ ls -1 ../*$(git describe --long | tr '[:upper:]' '[:lower:]')*.deb

I only need to install the headers and the image, libc-dev isn’t needed.

$ sudo dpkg --install ../linux-{headers,image}-*$(git describe --long | tr '[:upper:]' '[:lower:]')*.deb

Verify that the kernel files are in the /boot directory:

$ ls -1 /boot/*$(git describe --long | tr '[:upper:]' '[:lower:]')*

Now I can reboot, select the new kernel in Grub, and test the keyboard. With commit 317, the keyboard worked, so the first bad commit has to be somewhere between commit 317 and 634:

$ git bisect good ; git describe --long
Bisecting: 158 revisions left to test after this (roughly 7 steps)
[79b62d0bba892e8367cb46ca09b623c885852c29] drm/msm/a4xx: fix error handling in a4xx_gpu_init()

Now it’s time again for make clean olddefconfig bindeb-pkg, dpkg --install and reboot. Turns out that commit 475 was a “bad” commit (one where the keyboard didn’t work):

$ git bisect bad ; git describe --long
Bisecting: 78 revisions left to test after this (roughly 6 steps)
[c3d35f3acc3a11b726959c7b2c25ab9e46310273] USB: serial: option: add Telit LE910Cx composition 0x1204

I’m not going to describe all the steps in full detail, by now you should get the gist of it. This was the sequence of steps that git bisect gave me:

  • 317: good
  • 475: bad
  • 396: bad
  • 356: good
  • 376: good
  • 386: good
  • 391: bad
  • 388: bad
  • 387: bad

And then we finally get the first bad commit, the 387th commit after 5.13.0-22, Ubuntu-5.13.0-22.22-387-g0fc979747dec:

$ git bisect bad ; git describe --long
0fc979747dece96c189bc29ef604e61afbddfa2a is the first bad commit
commit 0fc979747dece96c189bc29ef604e61afbddfa2a
Author: Pavankumar Kondeti <>
Date:   Fri Oct 8 12:25:46 2021 +0300

    xhci: Fix command ring pointer corruption while aborting a command
    commit ff0e50d3564f33b7f4b35cadeabd951d66cfc570 upstream.
    The command ring pointer is located at [6:63] bits of the command
    ring control register (CRCR). All the control bits like command stop,
    abort are located at [0:3] bits. While aborting a command, we read the
    CRCR and set the abort bit and write to the CRCR. The read will always
    give command ring pointer as all zeros. So we essentially write only
    the control bits. Since we split the 64 bit write into two 32 bit writes,
    there is a possibility of xHC command ring stopped before the upper
    dword (all zeros) is written. If that happens, xHC updates the upper
    dword of its internal command ring pointer with all zeros. Next time,
    when the command ring is restarted, we see xHC memory access failures.
    Fix this issue by only writing to the lower dword of CRCR where all
    control bits are located.
    Signed-off-by: Pavankumar Kondeti <>
    Signed-off-by: Mathias Nyman <>
    Signed-off-by: Greg Kroah-Hartman <>
    Signed-off-by: Kamal Mostafa <>
    Signed-off-by: Stefan Bader <>

 drivers/usb/host/xhci-ring.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

At first sight the commit description is quite cryptic, and the actual code change doesn’t tell me a lot either. But it’s a change in drivers/usb/host/xhci-ring.c, and xhci stands for eXtensible Host Controller Interface, and interface specification for USB host controllers. If it’s an issue with the USB host controller, then it makes sense that if I use 2 keyboards from different brands, neither of them would work. It also suggests that other USB devices, like external hard drives, wouldn’t work either, but that’s a bit harder to test. A keyboard is easy. Just look at NumLock LED, if it doesn’t go on then there’s an issue.

The first link in the commit description is just a long list of patches that were taken from upstream and integrated in the Ubuntu kernel, so that doesn’t help me. The second link is a thread on the mailing list, and there it gets interesting. mailing list thread

Some excerpts from the thread:

This patch cause suspend to disk resume usb not work, xhci_hcd 0000:00:14.0: Abort failed to stop command ring: -110.


Thanks for the report, this is odd.
Could you double check that by reverting this patch resume start working again.
If this is the case maybe we need to write all 64bits before this xHC hardware reacts to CRCR register changes.
Maybe following changes on top of current patch could help:

Mathias Nyman

Every time a developer says “this is odd”, my alarm bells go off. 😀

Further down in the thread there is a proposed update to the change. I’m going to try that patch, but that’s for another blog post.

Install some software

apt-get install imagej wget imagemagick bash

Get a JSON with all the versions of a image on Wikipedia

Let’s assume you want to watch how the invasion in Ukraine took place. That’s this one:

We only need the URL, so iiprop=|url. If you need the timestamp (when was the image file made) then use iiprop=|url|timestamp. A list of them you can find here.

You can use wget or in your browser just do save file as (use RAW data at the top then, for example in Firefox).

Fetch the images

#! /bin/bash

mkdir svg
cd svg
ITEMS=`cat api-result.json | jq '.query.pages."-1".imageinfo | .[] | .url'`
for a in $ITEMS
wget "$a"
sleep 1

Convert them to PNGs:

Normally they are already in the right order. So no renaming should be needed. Else you have to add to the iiprop of the query ‘timestamp’ and then with jg you extract that from the JSON to for example add it somehow to the filenames.

Or just use touch to change the file’s last modification date after wget fetched it and then here you use UNIX find to loop in the right order, and write PNG files like 0001.png, 0002.png, etc.

#! /bin/bash
cd ..
mkdir png
for a in svg/*
# You can come up with a better translation for the filename
b=`echo $a | sed s/svg//g`
convert -density 250 -size 1546x1038 $a png/$b.png

Convert PNGs to a movie

  • Start imagej
  • File > Import > Image Sequence
  • Select the png directory where the images where converted to
  • File -> Save As -> AVI -> fill in 2 frames per second -> movie.avi

Convert into fake-news, propaganda, etc

  • Use another software to insert dramatic background music
  • Upload to youtube for fame and fortune or whatever
  • Buy likes, become a hipster, convert from hipster to influencer

March 02, 2022

Compiling a Linux kernel sounds scary and complicated, but I found out it actually isn’t.

The first thing to do, is to install some prerequisites:

$ sudo apt install --yes asciidoc binutils-dev bison build-essential ccache \
    crash dwarves fakeroot flex git git-core git-doc git-email kernel-package \
    kernel-wedge kexec-tools libelf-dev libncurses5 libncurses5-dev libssl-dev \
    makedumpfile zstd
$ sudo apt-get --yes build-dep linux

Next I cloned the Ubuntu Impish repository. This takes a while…

$ git clone git://
$ cd ubuntu-impish

Now let’s see which versions are in the repository:

$ git tag --list

The two tags that interest me, are Ubuntu-5.13.0-22.22 and Ubuntu-5.13.0-23.23. I’m starting with the former.

git checkout Ubuntu-5.13.0-22.22

First I copy the configuration of the current running kernel to the working directory:

$ cp /boot/config-$(uname --kernel-release) .config

I don’t want or need full debugging. That makes an enormous kernel and it takes twice as long to compile, so I turn debugging off:

$ scripts/config --disable DEBUG_INFO

I need to disable certificate stuff:

$ scripts/config --disable SYSTEM_TRUSTED_KEYS
$ scripts/config --disable SYSTEM_REVOCATION_KEYS

Next: update the kernel config and set all new symbols to their default value.

$ make olddefconfig

Then the most exciting thing can start: actually compiling the kernel!

$ make clean
$ time make --jobs=$(getconf _NPROCESSORS_ONLN) bindeb-pkg \
    LOCALVERSION=-$(git describe --long | tr '[:upper:]' '[:lower:]')
  • time is to see how long the compilation took.
  • getconf _NPROCESSORS_ONLN queries the number of processors on the computer. make will then try to run that many jobs in parallel.
  • bindeb-pkg will create .deb packages in the directory above.
  • LOCALVERSION appends a string to the kernel name.
  • git describe --long shows how far after a tag a certain commit is. In this case: Ubuntu-5.13.0-22.22-0-g3ab15e228151
    • Ubuntu-5.13.0-22.22 is the tag.
    • 0 is how many commits after the tag. In this case it’s the tag itself.
    • 3ab15e228151 is the abbreviated hash of the current commit.
  • tr '[:upper:]' '[:lower:]' is needed because .deb packages can’t contain upper case letters (I found out the hard way).

Now go grab a coffee, tea or chai latte. Compilation took 22 minutes on my computer.

Chai latte

When the compilation is done, there are 3 .deb packages in the directory above:

$ ls -1 ../*.deb

Install the linux-headers and the linux-image packages, you don’t need the libc-dev package.

$ sudo dpkg --install \
    ../linux-{headers,image}-*$(git describe --long | tr '[:upper:]' '[:lower:]')*.deb

The kernel is now installed in the /boot directory, and it’s available in the Grub menu after reboot.

$ ls -1 /boot/*$(git describe --long | tr '[:upper:]' '[:lower:]')*

Kernel ubuntu-5.13.0-22.22-0-g3ab15e228151 is, for all intents and purposes, the same as kernel 5.13.0-22-generic, so I expected it to be a “good” kernel, and it was.

For kernel Ubuntu-5.13.0-23.23 I did the same thing: starting from the git checkout. I skipped copying and editing the config file, because between minor releases I don’t expect there to be much change. I did run make olddefconfig for good measure, though. As expected, the keyboard and mouse didn’t work with the compiled ...-23 kernel.

Next up: using git bisect to find the exact commit where it went wrong. It’s got to be somewhere between ...-22 and ...-23!

March 01, 2022

Cover Image

How to take care of your tribe

The other day I read:

"If you're hiking and you stop to let other people catch up, don't start walking immediately when they arrive. Because that means you got a rest and they didn't. I think about this a lot."

I want to dissect this sentiment because I also think it says a whole lot, but probably not the way the poster meant it. It's a perfect example of something that seems to pass for empathetic wisdom, but actually holds very little true empathy: an understanding of people who actually think differently from each other.

Joffre Lakes - British Columbia

Point of Interest

Let's start with the obvious: the implication is that anyone who doesn't follow this advice is some kind of asshole. That's why people so readily shared it: it signals concern for the less able. A "fast hiker" denies others reasonable rest, mainly for their own selfish satisfaction, like some kind of bully or slave driver. But this implication is based on a few hidden assumptions.

Most obviously, it frames the situation as one in which only the slow hikers' needs are important. They don't get to enjoy the hike, because they arrive exhausted and beat. Meanwhile those "selfish" fast hikers are fully rested, and even get to walk at pace that is leisurely for them, if they want. So any additional rest is a luxury they don't even need. Still, they refuse to grant it to others unless they are properly educated. How rude.

To me, it seems that neither fast nor slow is actually happy in this situation. The kind of person who is fit enough to hike quickly, and faster than the rest, is likely the kind of person who wants to "feel the burn" in their muscles, and enjoys being exhausted at the end of the day. Meanwhile the kind of person who walks slowly, and complains about not being able to keep up, simply doesn't see extreme exertion and pushing their limits as a net plus.

Indeed, it assumes that it's very important for the entire group to stick together. That it would be bad to split up, or for someone to be left walking alone behind the pack. And also, that simply by walking ahead of others, you are forcing people to keep up, by excluding them and making them look bad. This implies that the goal of the hike is mainly social and tribal, and not e.g. exercise, or exploration, or developing self-sufficiency. But unless you're hiking in dangerous wilderness, there is no hard reason to prefer larger numbers.


Experienced hikers know that trails are typically classified by steepness and challenge. Certain places are also fine some times of the year, but not in snow or rain. Sometimes it involves ropes and mudslides. The entire idea of one-size-fits-all hiking trails is simply unrealistic, because those are called garden paths, and they usually have wheelchair ramps.

You can't even say that "average" walkers in the middle of the pack are automatically setting out the reasonable compromise, simply because that's what the majority in the group is comfortable with. Because what's considered average depends entirely on who shows up, and where they want to go.

The original "lesson" is not actually about respecting people's needs, or about ensuring accessibility for all. It's mainly about disregarding some people's preferences entirely in favor of certain others, holding up some arbitrary level of preference and skill as the norm. What's too far ahead is considered unreasonable. But if you take the advice to its logical conclusion, it would mean that everyone has to perform at the lowest common level, even if someone obviously doesn't belong there, and would be happier elsewhere.

In a world where many consider direct criticism a taboo, this to me is a far more valuable lesson, even if it's a far less agreeable and comfortable interpretation. If it seems absolute, that's itself a mistake: life is not a singular hike, measured on a single yardstick. We lead in some areas, and straggle in others. If you find yourself constantly lagging behind, you should find a different hiking group, instead of demanding that everyone else slow down. If you are leading and getting bored, don't be afraid to scout ahead: you'll be happier too.


It's Physics, Jim

There's another lesson buried here, which is worth exploring: why is it that some hikers can effortlessly go up and down winding paths for hours, while others can barely manage to keep up? Simply chalking it up to physical strength or fitness is not enough.

Imagine you are asked to move a bunch of heavy items from one place to another. You are given a choice of either a crate or a small wagon, both exactly the same size. I doubt anyone would prefer the crate, because we all understand the physics involved on an intuitive level. When you pull a wagon, you only exert yourself when you're trying to move it; but in order to use the crate, you must first lift it up, and then keep it suspended in the air. Even if you don't move while holding the crate, your arms will get tired.

This means that the effort required to use the wagon depends mainly on the distance and mass you need to move. Whereas the effort required for the crate also involves the amount of time you are holding the crate up. If you move it more slowly, you spend more of your energy simply staying in place. In contrast, the faster you move it, the less energy it wastes, even if it momentarily takes more effort. The next time you carry some heavy groceries into the house, observe your own movements, particularly the last "nudge" to get them onto the kitchen counter, and you will realize you already knew this.

This too applies to the hiking scenario: if you're climbing a slope, then simply staying upright takes significant physical effort. If you can ascend faster, you actually waste less of your energy doing so. When descending, the same applies: the harder you push back against gravity, the more tired you will get. Becoming an experienced hiker means developing a natural sense of balance and motion that takes maximum advantage of this. While climbing, you will learn to quickly push through any difficult spots, spending more time with your feet on solid, level ground. While descending, you will let yourself fall from ledge to ledge. You learn to move more like a wagon, less like a crate. Obviously it also helps to have the right wheels, aka footwear.

This is really general life advice. If you spend your time stressed, dealing with chaotic communication and planning, suffering the fallout of past mistakes, yours or others', then you're constantly standing on uneasy ground, wasting your energy just staying in place. If you can instead recognize trouble ahead, and know where you're going to plant your feet, it can feel effortless.

People make the same argument about e.g. obesity or poverty, that it creates a vicious cycle of reinforcing conditions. But they often fail to make the distinction in the two different ways to address it, because their main concern is a non-descript offer of aid and concern. If someone is standing on a slope, you don't just offer them your hand and let them hold on indefinitely, wasting both people's energy, because you will soon both fall down. You should instead get them on solid ground instead, and get them to move better on their own. If someone wants sympathy and aid but rejects offers of working on a solution, that means they don't want to expend any effort in solving it themselves.

There is however a flipside here: offers of aid have to be genuine and clearly stated. If someone is struggling socially, telling them to "just be yourself" is obliviousness masquerading as advice. Telling someone to open up, when you don't actually want to hear their point of view, is purely for self-satisfaction.

Here too, criticism and empathy are typically perceived as being at odds: the person who criticises unfruitful ways of offering aid is dismissed as uncaring, even if they are reading the situation better than most. But if everyone suddenly turns back and runs down a slippery slope again without thinking, being the loud asshole who asks what the hell they are doing is actually the sane thing to do.

white feather girls white feather girls

Evo Psych Too

I don't think it's a coincidence that this morality lesson comes in the form of a hiking story. In our modern world, hiking is mainly a leisure activity, undertaken exactly because it speaks to our distant past of small tribes roaming in dangerous wilds: watch out for bears and bandits, stay in contact with each other, always be prepared, and don't underestimate the elements.

Unlike the clean and artificial environment of a gym, nature offers us an unfiltered and barely controllable obstacle course, where some of our lesser used instincts can come back to the forefront. All it takes is one storm to turn a carefully manicured park into a new wild challenge, which is accessible to some and inhospitable to others.

This is a contrast which contemporary society is very uneasy to acknowledge. Under the guise of equality and tolerance, anything that threatens to separate the men from the boys, or the men from the women, is considered improper in the "right" circles. Yet evolutionary psychology is impossible to ignore on this point: tens of thousands of years of selective pressure have cleaved humanity down the middle, creating entirely different social expectations. The most important data point here comes from our notions of bravery and cowardice.

Bravery is a virtue both men and women can have: fearlessness in the face of danger. Yet cowardice is a vice reserved uniquely for men: women can indulge in it as much as they like, with no social repercussions.

Today, you can see this split clearly in the discussion around refugees. While women are said to "flee from danger", men are accused of "leaving people behind". The presence of children is usually said to make the difference, but the crucial point here is of course whom the children are assumed to be safer with. If you think that's the mother, then you are tacitly admitting that you believe she is more likely to—and perhaps more deserving of—receiving unconditional aid and shelter, even in a war zone.

Furthermore, the archetype of a mean girl is someone who uses an authority figure to do her dirty work. This ought to register as cowardly, but simply doesn't. Despite half a century of organized gender study, I know of no feminist who has seriously endeavored for this patriarchal social construct to be dismantled. Indeed, women's groups shaming men for cowardice in a time of war is a historical fact.

In hiking terms, it means that those who have learned to navigate dangerous terrain out of necessity are oddly assumed to be unreasonably privileged, while those who instinctively expect the presence of ropes and steps are said to be disadvantaged. This is entirely backwards to me, but it also seems obvious there is no convincing people otherwise. All you can do is realize that there are some who persistently demand you help them up, but who will never extend the same courtesy in return. They do so without ever feeling any shame about it, so you must draw your lessons accordingly.

* * *

This is a far less agreeable and happy-go-lucky interpretation of the hiker's dilemma, and one I doubt typical virtue peddlers will be comfortable with.

The original underlying sentiment was that social concerns and group norms always override meritocracy. That there is no reasonable view otherwise. But social issues are themselves difficult hurdles to navigate and path around, almost always subjective and based entirely on the framing. In doing so, proponents are merely striving for a meritocracy based on a different scoring system, one where they come out on top and ahead, far from risk and danger. It's cowardly not to admit it. And if it threatens to wash away all that was built, then it's imperative to oppose it.

(If you think this is a call for war, you are not paying attention.)

As I wrote previously, I’m suspecting a Linux kernel bug somewhere between versions 5.13.0-22 and 5.13.0-23, in the Ubuntu kernels. I wanted to know if the issue only surfaced in Ubuntu-flavored kernels, or also in the upstream (mainline) kernels from

There is an Ubuntu Mainline PPA with all the upstream kernels, but I found it a bit too opaque to use. Fortunately I found the Ubuntu Mainline Kernel Installer (UMKI), a tool for installing the latest Linux kernels on Ubuntu-based distributions.

Ubuntu Mainline Kernel Installer (UMKI)

The UMKI is pretty straightforward. It fetches a list of kernels from the Ubuntu Mainline PPA and a GUI displays available and installed kernels, regardless of how they were installed. It installs the kernel, headers and modules. There is also a CLI client.

To install the UMKI:

sudo add-apt-repository ppa:cappelikan/ppa
sudo apt update
sudo apt install mainline

With that out of the way, there’s the matter of deciding which kernels to try. The “interesting” Ubuntu kernels are 5.13.0-22 and 5.13.0-23, so the mainline kernels I definitely want to test, are around those versions. That means 5.13.0 and 5.13.1. I also want to try the latest 5.13.x kernel, so that’s 5.13.19, and the most recent stable kernel, 5.16.11 (as of 2022-03-01).

To summarize, I have tested these mainline kernels:

  • 5.13.0
  • 5.13.1
  • 5.13.19
  • 5.16.11

The result (after several reboots)? With all of them, my keyboard and mouse worked without a hitch. That means the issue most likely doesn’t occur in (stable) mainline kernels, only in kernels with additional patches from Ubuntu.

Up next: compiling kernels from source.

Lasciate ogne speranza, voi ch’intrate.

Dante Alighieri