Eine Politik der Vergänglichkeit: Die Computerphilosophie eines Programmierers

2025-05-13

Dieser Artikel beschreibt die ungewöhnlichen Computergewohnheiten eines Programmierers, die sich um eine „Politik der Vergänglichkeit“ drehen. Diese Philosophie besagt, dass alle Daten entweder bewusst permanent und organisiert oder streng temporär sein sollten, um versehentliche Dauerhaftigkeit zu vermeiden. Beispiele hierfür sind das Deaktivieren des persistenten Shell-Verlaufs, das regelmäßige Löschen des GUI-Desktops und das häufige Schließen des Browsers. Der Autor erklärt die Vorteile, wie z. B. erhöhte Effizienz, bessere Organisation und weniger Datenmüll. Verwandte Praktiken wie die Verwaltung von Unternehmensaufzeichnungen und die automatisierte Betriebssystemkonfiguration werden ebenso behandelt wie Ausnahmen von der Politik, z. B. E-Mails und der Browserverlauf, die aufgrund ihrer unvorhersehbaren Nützlichkeit dauerhaft gespeichert werden.

Mehr lesen

Die Philosophie der Coroutinen: Überlegungen eines Programmierers

2025-03-27

Dieser Artikel befasst sich mit der Philosophie der Coroutinen aus der Perspektive der persönlichen Erfahrung des Autors. Von frühen Versuchen, Coroutinen in C mit Preprozessor-Tricks zu simulieren, bis hin zu den nativen C++20-Coroutinen teilt der Autor seine Einsichten in deren Verwendung und Vorteile. Ein Vergleich von Coroutinen mit Zustandsautomaten und Threads hebt deren Flexibilität, Debug-Fähigkeit und einfache Bereinigung hervor, was besonders nützlich für sequentielle Aufgaben wie Netzwerkprotokolle und Datenstromverarbeitung ist. Der Autor untersucht verschiedene Implementierungen von Coroutinen, Optimierungstechniken mit Warteschlangen und Vorfiltern und gibt einen Ausblick auf die Zukunft der Coroutinen.

Mehr lesen
Entwicklung

Die Entwicklung der PuTTY-Icons: Von Hand gezeichnet bis SVG

2025-03-12

Dieser Artikel beschreibt die Entwicklung der PuTTY-Icons von handgezeichneten Bildern in den 1990er Jahren bis zu den heutigen skalierbaren SVG-Vektoren. Der Autor erstellte zunächst 32x32 Pixel große Icons mit dem MSVC-Icon-Editor, eingeschränkt durch die 16-Farben-Palette und die damalige Anzeigetechnologie. Im Laufe der Zeit, um höhere Auflösungen und die Bedürfnisse verschiedener Tools zu erfüllen, verfeinerte der Autor den Prozess und entwickelte schließlich ein Skript, das automatisch Icons in verschiedenen Größen und Formaten generiert. Dies mündete in SVG-Versionen, die echte Skalierbarkeit erreichen. Die Designphilosophie bleibt einfach und klar und spiegelt den „beruhigend altmodischen“ Stil von PuTTY wider, der bis heute verwendet wird.

Mehr lesen
Entwicklung Icon-Design

Bugtracker neu gedacht: Trennung der Belange

2025-03-10

Nach jahrelanger Nutzung verschiedener Bugtracker stellt der Autor einen grundlegenden Fehler in deren Datenrepräsentation fest, der zu wiederkehrenden Frustrationen führt. Drei Hauptprobleme werden hervorgehoben: ein einheitliches Feld „Fix-Version“, das Fakten und Pläne vermischt; ein zweistufiges System aus Status und Auflösung, das die Grenze zwischen der Code-Realität und zukünftigen Absichten verschwimmen lässt; und die Vermischung von Buglisten mit To-Do-Listen, die Probleme für nicht-Bug-bezogene Aufgaben schafft. Der Autor schlägt ein Prinzip der „Trennung der Belange“ vor, das eine Aufteilung in „Fakten“- und „Pläne“-Tabellen vorschlägt. Die Faktentabelle erfasst objektive Informationen über Bugs (Existenz, Version, Schweregrad), während die Planungstabelle Absichten, Zeitpläne und subjektive Prioritäten verfolgt. Diese Trennung vereinfacht das Bugtracking, passt sich besser an verschiedene Projekttypen an und ermöglicht sogar das vollständige Weglassen der Planungstabelle für Projekte, die sich ausschließlich auf die Behebung von Bugs konzentrieren.

Mehr lesen

Alleinunterhalter: Ein erfahrener Programmierer lehnt Git-Forges ab

2025-03-05

Der erfahrene Programmierer Simon Tatham verwendet seit langem unabhängige Git-Repositories für seine Open-Source-Projekte und meidet dabei beliebte Plattformen wie GitHub und GitLab. Er erläutert seine Beweggründe: Vertrauen – er bevorzugt die Eigenkontrolle gegenüber der Abhängigkeit von großen Unternehmen; Effizienz – er vermeidet den Overhead komplexer Forge-Systeme; Benutzererfahrung – er minimiert den Aufwand für die Kontoerstellung; und Workflow-Autonomie – er priorisiert unabhängige Entwicklungsprozesse gegenüber Plattformbeschränkungen. Er bevorzugt das Senden von Patches per E-Mail und beschreibt seine bevorzugten Methoden, darunter eine Git-Repository-URL, inkrementelle Git-Bundles und andere Ansätze, wobei er seine Logik für jeden Ansatz erklärt. Obwohl er die geringere Transparenz seiner Methode zugibt, ist er noch nicht überzeugt, dass die Vorteile von Forges die Nachteile überwiegen. Er schließt mit der Aussage, dass er offen für alternative Systeme ist, die sowohl Transparenz als auch leichtgewichtiges Management bieten.

Mehr lesen
Entwicklung Code-Hosting

Ein tiefer Einblick in XOR: Von der Booleschen Logik zur Kryptographie

2025-02-18

Dieser Artikel befasst sich eingehend mit dem scheinbar einfachen XOR-Operator (Exklusiv-ODER) in der Informatik. Ausgehend vom XOR in der Booleschen Logik geht er zu bitweisen Operationen auf ganzen Zahlen über und untersucht die Anwendungen von XOR in der Kryptographie, Pixelgrafik, Spieltheorie und endlichen Körpern. Der Autor verwendet eine ansprechende Erzählweise und zahlreiche Beispiele, um die Eigenschaften und Verwendungen von XOR zu erklären, wie z. B. seine Rolle als einfache Verschlüsselungsmethode in der Kryptographie, reversibles Zeichnen und Löschen in der Pixelgrafik und die Bestimmung optimaler Strategien im Spiel Nim. Schließlich verbindet der Artikel XOR mit mathematischen Konzepten wie der symmetrischen Differenz von Mengen, Gruppen mit Exponent 2, Nim-Summe, dem endlichen Körper GF(2) und CRC-Prüfsummen und enthüllt die tieferen mathematischen Grundlagen und die breiten Anwendungen des XOR-Operators.

Mehr lesen
Entwicklung bitweise Operationen