Une politique de transience : la philosophie d’utilisation de l’ordinateur d’un programmeur

2025-05-13

Cet article détaille les habitudes inhabituelles d’utilisation de l’ordinateur d’un programmeur, centrées sur une « politique de transience ». Cette philosophie dicte que toutes les données doivent être soit délibérément permanentes et organisées, soit strictement temporaires, évitant la permanence accidentelle. Des exemples incluent la désactivation de l’historique persistant du shell, le nettoyage régulier du bureau de l’interface graphique et la fermeture fréquente du navigateur. L’auteur explique les avantages, tels que l’augmentation de l’efficacité, une meilleure organisation et la réduction des données inutiles. Des pratiques connexes, telles que la gestion des enregistrements d’entreprise et la configuration automatisée du système d’exploitation, sont discutées, ainsi que des exceptions à la politique, telles que les e-mails et l’historique du navigateur, qui sont conservés de façon permanente en raison de leur utilité imprévisible.

Lire plus

La Philosophie des Coroutines : Réflexions d’un Programmeur

2025-03-27

Cet article explore la philosophie des coroutines à travers le récit personnel de l’auteur. De ses débuts à simuler des coroutines en C avec des astuces de préprocesseur jusqu’à l’arrivée des coroutines natives en C++20, l’auteur partage ses réflexions sur leur utilisation et leurs avantages. Une comparaison des coroutines avec les machines à états et les threads met en lumière leur flexibilité, leur facilité de débogage et de nettoyage, particulièrement utiles pour les tâches séquentielles comme les protocoles réseau et le traitement de flux de données. L’auteur explore différentes implémentations de coroutines, des techniques d’optimisation utilisant des files d’attente et des pré-filtres, et offre un aperçu de l’avenir des coroutines.

Lire plus
Développement

L'évolution des icônes de PuTTY : du dessin à la main au SVG

2025-03-12

Cet article retrace l’évolution des icônes de PuTTY, des dessins à la main des années 1990 aux vecteurs SVG évolutifs d’aujourd’hui. L’auteur a initialement créé des icônes de 32x32 pixels à l’aide de l’éditeur d’icônes MSVC, limité par la palette de 16 couleurs et la technologie d’affichage de l’époque. Au fil du temps, pour s’adapter à des résolutions plus élevées et aux besoins de différents outils, l’auteur a affiné le processus, développant finalement un script qui génère automatiquement des icônes de plusieurs tailles et formats. Cela a abouti à des versions SVG, atteignant une véritable évolutivité. La philosophie de conception reste simple et claire, reflétant le style « rassurant et démodé » de PuTTY, et continue d’être utilisée à ce jour.

Lire plus
Développement Conception d'icônes

Repenser les outils de suivi des bogues : une séparation des préoccupations

2025-03-10

Après des années d’utilisation de divers outils de suivi des bogues, l’auteur identifie une faille fondamentale dans leur représentation des données, source de frustrations récurrentes. Trois problèmes majeurs sont mis en évidence : un champ unifié « Version de correction » qui confond faits et projets ; un système à deux niveaux, État et Résolution, qui brouille la distinction entre la réalité du code et les intentions futures ; et la confusion entre les listes de bogues et les listes de tâches, ce qui pose des problèmes pour les tâches non liées aux bogues. L’auteur propose un principe de « séparation des préoccupations », suggérant une division en tables « faits » et « projets ». La table des faits enregistre les informations objectives sur les bogues (existence, version, gravité), tandis que la table des projets suit les intentions, les échéances et les priorités subjectives. Cette séparation simplifie le suivi des bogues, s’adapte mieux aux différents types de projets et permet même l’omission complète de la table des projets pour les projets axés uniquement sur la résolution des bogues.

Lire plus

En solo : Un programmeur chevronné rejette les forges Git

2025-03-05

Le programmeur chevronné Simon Tatham utilise depuis longtemps des référentiels Git indépendants pour ses projets open source, évitant les plateformes populaires comme GitHub et GitLab. Il détaille son raisonnement : la confiance – préférant l'autocontrôle à la dépendance aux grandes entreprises ; l'efficacité – en évitant la surcharge des systèmes de forge complexes ; l'expérience utilisateur – en minimisant le fardeau de la création de comptes ; et l'autonomie du flux de travail – en priorisant les processus de développement indépendants aux contraintes de la plateforme. Il privilégie l'envoi de correctifs par e-mail, détaillant ses méthodes préférées, notamment l'URL d'un référentiel Git, les paquets Git incrémentaux et d'autres approches, en expliquant sa logique pour chacune. Tout en reconnaissant la moindre transparence de sa méthode, il n'est pas encore convaincu que les avantages des forges l'emportent sur leurs inconvénients. Il conclut en se disant ouvert à des systèmes alternatifs qui offrent à la fois transparence et gestion légère.

Lire plus
Développement Hébergement de code

Plongeon au cœur du XOR : De la logique booléenne à la cryptographie

2025-02-18

Cet article explore en profondeur l'opérateur XOR (OU exclusif) en apparence simple de l'informatique. En commençant par le XOR en logique booléenne, il progresse vers les opérations bit à bit sur les entiers et explore les applications du XOR en cryptographie, en infographie, en théorie des jeux et dans les corps finis. L'auteur utilise une narration captivante et de nombreux exemples pour expliquer les propriétés et les utilisations du XOR, telles que son rôle de méthode de chiffrement simple en cryptographie, le dessin et l'effacement réversibles en infographie, et la détermination des stratégies optimales dans le jeu de Nim. Enfin, l'article relie le XOR à des concepts mathématiques tels que la différence symétrique des ensembles, les groupes d'exposant 2, la somme de Nim, le corps fini GF(2) et les sommes de contrôle CRC, révélant les fondements mathématiques plus profonds et les applications étendues de l'opérateur XOR.

Lire plus
Développement