Benjamin Geer

Créer un client Bittorrent en Rust

Aperçu # Pour mon deuxième exercice d’apprentissage de Rust (après OrganicLox), j’ai décidé de réaliser un client pour Bittorrent, le protocole de transfert de données pair-à-pair. Les clients Bittorrent que j’ai utilisés ont des interfaces graphiques complexes qui semblent destinées aux gens qui téléchargent des torrents à longueur de journée, plutôt que pour l’utilisateur occasionnel comme moi, qui veut tout simplement obtenir un seul fichier. Et comme beaucoup d’applications à interface graphique, les clients Bittorrent ont tendance à accumuler des fichiers qui occupent de l’espace disque dans des répertoires obscurs. Je fais beaucoup de choses dans le terminal et quand j’ai besoin de télécharger un fichier, mon réflexe est d’utiliser curl. Je me suis donc dit, pourquoi ne pas créer quelque chose comme curl pour Bittorrent ? En pensant à l’indicateur de progression de curl, l’idée m’est venue à l’esprit de faire quelque chose de semblable avec Ratatui, une bibliothèque de création d’environnements en mode texte (TUI), que je voulais de toute façon essayer.

Mona Ja‘bub, Conduire la société vers le changement

[Version française du texte publié en espagnol.1] Mona Salem Said Ja‘bub, قيادة المجتمع نحو التغيير: التجربة التربوية لثورة ظفار (1969-1992) [Conduire la société vers le changement : l’expérience éducative de la révolution du Dhofar (1969-1992)], Beyrouth : مركز دراسات الوحدة العربية [Centre d’études de l’unité arabe], première édition 2010, deuxième édition 2023, 368 pages. Ce premier livre de Mona Ja‘bub, historienne omanaise, a été salué dans le monde arabe pour son approche de l’histoire sociale et culturelle de la révolution du Dhofar en Oman. Publié par une maison d’édition arabe prestigieuse spécialisée dans les sciences sociales, le livre a d’abord été retiré par les autorités omanaises du Salon international du livre de Mascate en 2012, puis remis en vente le lendemain, signe d’un assouplissement de la censure. Il se concentre sur des questions de genre et de circulation des idées et, en se penchant sur des événements historiques peu connus en dehors du monde arabe, apporte une contribution originale à l’étude de la réception mondiale du maoïsme et du marxisme dans les années 1960 et 1970.

Créer une machine virtuelle en Rust

Aperçu # Pour m’aider à apprendre le langage Rust, j’ai décidé de réaliser un interpréteur pour Lox, le langage de script que Robert Nystrom a créé à des fins pédagogiques pour son livre Crafting Interpreters. Je m’intéresse aux langages de script qui sont destinés à être embarqués dans des applications, et cet exercice m’a semblé un bon moyen d’en savoir plus sur la construction de ce type de langage. Le livre de Nystrom présente, étape par étape, le développement de deux versions de l’interpréteur. Alors que la première, en Java, parcourt un arbre de syntaxe abstraite (AST) pour exécuter un script, la deuxième, en C, comporte une machine virtuelle qui exécute du bytecode. Cette deuxième version m’intéressait davantage. Au fil des ans, j’avais réalisé deux interpréteurs qui parcourent des arbres de syntaxe abstraite, en commençant par Apache FreeMarker, ainsi qu’un compilateur source à source optimisant utilisant l’inférence de types. Mais je n’avais pas encore fait de machine virtuelle. L’idée me rappelait de bons souvenirs de programmation en assembleur sur l’Apple II quand j’avais quinze ans. Le jeu d’instructions de la machine virtuelle de Nystrom est plus simple que celle du processeur Motorola 6502 de l’Apple II, mais le principe est le même. J’ai donc sauté la première partie du livre pour aller directement à celle où il s’agit de la machine virtuelle.

Calculer des mesures de centralité avec le réseau de transport en commun parisien

J’ai pensé qu’il serait intéressant d’essayer un peu d’analyse de réseau élémentaire en utilisant le réseau du métro et du RER parisiens, en commençant par des indices de centralité. Il s’agit de mesures qui classent les sommets d’un graphe en fonction de leur importance, selon une définition quelconque de l’importance. Par exemple, dans un réseau de transport, la centralité d’une station pourrait donner une indication de la probabilité que les passagers passent par cette station au cours de leur itinéraire. Un opérateur de transports en commun pourrait utiliser ces informations pour évaluer les inconvénients que causerait la fermeture de certaines stations, par exemple en raison d’inondations ou de travaux, et pour l’aider à identifier les moyens les plus efficaces d’améliorer la résilience du réseau. J’utiliserai ici Python, networkx et SQLite.

Mal partum

En 2024 j’ai fait les sous-titres anglais du court-métrage Mal partum, un beau documentaire sur la dépression post-partum. Émilie D. s’est appuyée sur son expérience personnelle pour réaliser un film qui apporte des connaissances pratiques dont nous pouvons tous nous servir.