11 Punkte von GN⁺ 2026-01-02 | 1 Kommentare | Auf WhatsApp teilen
  • Mit 73 Programmierprojekt-Ideen so zusammengestellt, dass Entwickler gleichzeitig Lernen und kreative Herausforderungen erleben können
  • Jedes Projekt deckt unterschiedliche Bereiche ab, darunter Netzwerke, Systeme, AI, Grafik, Sicherheit und Datenbanken
  • Die meisten Ideen sind darauf ausgelegt, zentrale technische Prinzipien direkt selbst zu implementieren, sodass sich Theorie und Praxis gemeinsam erlernen lassen
  • Zu jedem Eintrag gehören passende Paper, offizielle Dokumentation und Tutorial-Links, die einen klaren Lernpfad aufzeigen
  • Bietet einen Anlass, Programmierung nicht nur als Coding, sondern als Kunst des Erforschens und Erschaffens zu begreifen

Überblick

  • Viele Entwickler möchten ein Side Project starten, wissen aber nicht, was sie bauen sollen
    • Im Internet gibt es viele gängige und langweilige Ideen
  • Dieser Beitrag stellt 73 unterhaltsame Projekte mit hohem Lernwert vor
    • Jedes Projekt ist so aufgebaut, dass man bestimmte technische Konzepte durch eigene Implementierung lernen kann

Netzwerk- und Systemprojekte

  • BitTorrent-Client: Implementierung eines Datei-Download-Clients, um die Funktionsweise von P2P-Netzwerken zu lernen
  • DNS-Server: Aufbau eines Servers mit Query-Empfang, Paket-Parsing, Domain-Auflösung und Caching
  • Container-Runtime: Lernen von Kernel-Namespaces, chroot und Prozessisolierung ohne Docker
  • TCP/IP-Stack: Direkte Implementierung des TCP/IP-Protokolls im Linux-User-Space
  • Load Balancer: Implementierung von Request-Verteilung, Health Checks und Session-Persistenz zwischen Backend-Servern

Daten und verteilte Systeme

  • RAFT-Protokoll: Implementierung eines Systems für verteilten Konsens und Fehlerbehebung
  • Redis-Klon: Aufbau einer In-Memory-Datenbank mit Basisbefehlen, RDB-Persistenz, Replikation und Transaktionen
  • Kafka-Broker: Implementierung eines verteilten Log-Systems, das Topic-Erstellung sowie Message-Producer- und -Consumer-Anfragen verarbeitet
  • SQL-Engine und Optimizer: Lernen von Query-Ausführung und Optimierung, angelehnt an die Struktur von SQLite
  • CI-System: Aufbau eines integrierten Systems zur automatischen Überwachung von Git-Repositories, Ausführung von Tests und Berichterstattung der Ergebnisse

Künstliche Intelligenz und Algorithmen

  • Wordle-Solver: Programm zur Wortableitung auf Basis von Informationstheorie und Entropie
  • Deepfake-Generator: Implementierung von Gesichtsverwandlung mit Optimal Transport
  • Random Forest: Lösen von Klassifikationsproblemen durch eigene Implementierung von Entscheidungsbäumen und Random Forest
  • Neuronales Netzwerk-Framework: Aufbau eines Deep-Learning-Frameworks mit Tensoren, Autograd und Optimierern
  • Evolutionäres Design: Simulation zur automatischen Evolution mechanischer Strukturen mit genetischen Algorithmen

Grafik und Spieleentwicklung

  • Ray Tracer: Rendering einer 3D-Szene mit Kugeln, Ebenen und Beleuchtung
  • OpenGL-Renderer: Implementierung eines Mini-Renderers zum Erlernen der Grundlagen der Grafikprogrammierung
  • Dangerous-Dave-Remake: Nachbau des klassischen Spiels mit SDL
  • Schach-Engine: Implementierung eines Schachspiels inklusive UCI-Engine
  • Procedural Crossword: Automatische Kreuzworträtsel-Erzeugung mit Constraint Propagation

Sicherheit und Kryptografie

  • Authentifizierungsserver (JWT/Sessions): Implementierung von Kryptografie, Token-Ablauf und Session-Management
  • Anonymes Wahlsystem: Entwurf einer kryptografischen Abstimmung mit Zero-Knowledge-Proofs (ZKP)
  • VPN: Aufbau eines Mesh-VPN, das Traffic ohne zentralen Server weiterleitet
  • Malware-Experimente: Test von Firewall-Reaktionen in einer virtuellen Maschinenumgebung
  • Zip-Archivierer: Eigene Implementierung von Komprimierung, Verschlüsselung und Bündelung

Web- und Anwendungsentwicklung

  • Webserver: Unterstützung für HTTP-Request-Verarbeitung, Auslieferung statischer Dateien, Routing und Reverse Proxy
  • Kollaborativer Editor: Implementierung eines verteilten Texteditors auf Basis von CRDT
  • Browser-Engine: Aufbau einer einfachen Engine für HTML/CSS-Parsing und Rendering
  • Video-Editor: Client-seitiger Editor, der im Browser ausgeführt wird
  • Browser-Erweiterung: Speichert Passwörter, Formulare und Zwischenablagezustände und füllt sie automatisch aus

Datenvisualisierung und Suche

  • Googlebot: Einen Webcrawler bauen, um die Grundstruktur von Suchsystemen zu lernen
  • Wikipedia-Suchmaschine: Implementierung von Indexierung, Tokenisierung und Ranking-Algorithmen
  • Wissensgraph: Visualisiert Beziehungen zwischen Entitäten und aktualisiert sich automatisch aus dem Web
  • Google-Maps-Engine: Kartensystem zur Indexierung von Straßen-, Gelände- und Ortsdaten
  • CDN-Caching-System: Entwurf einer Cache-Struktur, die doppelte Requests für statische Assets verhindert

Hardware und Embedded

  • Laser-Tag-System: Echtzeit-Erkennungssystem mit IR-Codierung und MQTT-Kommunikation
  • Smart-Home-App: IoT-Projekt mit Unterstützung für IR-Gerätesteuerung, Zeitplanung und Automatisierung
  • Game Boy Advance-Emulator: Nachbildung von CPU-, Speicher-, Grafik- und Eingabestruktur

Blockchain und Finanzen

  • Bitcoin-Node: Implementierung von Block-Download und Validierungsfunktionen
  • Aktienhandels-Bot: Automatisierter Handel auf Basis eines eventgesteuerten Systems
  • Anonyme Abstimmung und Smart Contracts: Zuverlässiges Wahlsystem auf Blockchain-Basis

Fazit

  • Die 73 Projekte betonen einen experimentellen Ansatz des Lernens durch direkte Implementierung zentraler Technologien
  • Jede Idee verweist über offizielle Dokumentation, Paper und Tutorials auf praxisorientiertes Weiterlernen
  • Ein praktischer Vorschlag, um Programmierung wieder als Kunst des Erforschens und Erschaffens zu entdecken

1 Kommentare

 
GN⁺ 2026-01-02
Hacker-News-Kommentare
  • Manche meinen, diese Liste wirke KI-generiert, aber ich denke eher, dass „es von Grund auf selbst zu bauen“ der beste Weg ist, die Abhängigkeit von KI zu verringern
    In Japan nennt man so einen Prozess „Shugyo (修行)“. Handwerker schärfen ihre Werkzeuge lange nicht aus Effizienzgründen, sondern um das Wesen von Stahl zu verstehen
    Redis oder Git selbst zu bauen bedeutet nicht, nur ein Ergebnis zu produzieren, sondern durch die Reibung des Prozesses ein Denkmodell aufzubauen. Genau das ist der Teil, den KI nicht ersetzen kann

    • Die japanische Fokussierung auf Detailgenauigkeit ist immer beeindruckend. Ich versuche auch, diese Haltung auf mein Leben anzuwenden
    • Ich frage mich, ob das Wiederholung einschließt. Soll man Redis also etwa 20-mal neu bauen?
    • Es steckt zwar etwas Marketing drin, aber ich finde es trotzdem gut, dass statt der eigenen kostenpflichtigen Tutorials die offizielle Redis-Dokumentation empfohlen wird
    • Es wirkt etwas übertrieben, in jedem Kommentar zu erwähnen, dass man diesen Begriff in Japan benutzt. Wenn man sich das Alter des Accounts ansieht, hat es auch leicht etwas von einem Bot
    • Viele der besten Kameraleute kamen ursprünglich aus der Lichtabteilung. Ich denke, das ist dasselbe Prinzip
  • Hier ist meine Sammlung von Projektideen: Challenging programming projects every programmer should try

    • Diese Liste ist kompakter und erklärt klar, was man bei jedem Projekt lernt, deshalb ist sie viel besser. Der Originalbeitrag wirkt dagegen eher wie „100 Bücher, die man gelesen haben sollte“ — mehr Aufzählung als Praxis
    • Im Studium habe ich mit einem Zync-FPGA Space Invaders implementiert, und es hat wirklich Spaß gemacht, Hardware und Software getrennt zu entwerfen. Ein Kommilitone baute einen Mikrofon-Frequenzanalyse-Block und steuerte es mit einer Blockflöte
    • Diese Liste gefällt mir besser. Ich habe zwar noch nie eine Tabellenkalkulation implementiert, aber das möchte ich ehrlich gesagt auch nicht unbedingt tun
    • Schön, diesen Artikel wiederzusehen — ich hatte ihn vor langer Zeit als Lesezeichen gespeichert
  • Die Liste stammt von codecrafters.io. Diese Plattform lässt einen Projekte Schritt für Schritt umsetzen und bietet dabei Integrationstests und Community
    Ich arbeite auch gerade am Projekt „Build your own Redis“ und es macht ziemlich viel Spaß. Es ist nicht KI-generiert; eher scheint es eine Sammlung von Ideen aus der Community zu sein

  • Ich kann nur dringend empfehlen, einmal einen BitTorrent-Client selbst zu bauen. Die Spezifikation ist einfach, und die Detailprobleme sind interessant. Wenn man danach selbst den Debian-Kernel herunterlädt, ist das sehr befriedigend
    Wenn man zusätzlich Magnet-Links oder Seeding implementiert, lernt man noch tiefer. Durch diese Erfahrung habe ich mich für P2P-Systeme und DHTs (wie Chord) interessiert

    • Im Studium hatte ich ein Projekt, bei dem wir einen „P2P-Client“ bauten, und es hat wirklich Spaß gemacht, Dinge wie Handshakes oder die Chunk-Größe selbst zu implementieren
  • Diese Liste ist etwas seltsam. Zum Beispiel ist #58 die Implementierung von malloc, was für Anfänger ziemlich schwierig ist, und direkt danach verlangt #59, ein Streaming-Protokoll von Grund auf zu bauen. Die Schwankung im Schwierigkeitsgrad ist viel zu groß

    • Etwa ab der Mitte merkt man einen Stil, der nach KI klingt. Es wirkt unnatürlich
  • Mich würde interessieren, was ihr von der 4chan-/g/-Programmier-Challenge haltet. Die Schwierigkeitseinteilung wirkt etwas willkürlich. Zum Beispiel ist es schon merkwürdig zu sagen, ein Bootloader sei schwieriger als ein C-Compiler
    Referenzbild-Link

    • Der Link öffnet das Bild nicht direkt. Es wäre wohl besser, auf eine .md-Datei zu verlinken
  • Es ist gut, kleine, abgeschlossene Tools oder Protokolle selbst zu bauen. Die Zufriedenheit kommt dabei weniger aus der Größe als aus Klarheit und dem Gefühl, etwas vollständig abgeschlossen zu haben

  • Ich frage mich, ob das vielleicht Astroturfing ist

    • Bei CodeCrafters ist so etwas nicht zum ersten Mal passiert. Siehe früherer Fall
  • Manche Projekte sind an einem Tag erledigt, andere haben eher den Umfang einer Bachelor-Abschlussarbeit oder sogar einer Masterarbeit

  • Wenn ich diese Liste sehe, habe ich das Gefühl, kein guter Programmierer zu sein

    • Die meisten Projekte wirken anfangs überwältigend, aber wenn man sie in kleine Einheiten zerlegt, sind sie durchaus machbar
    • Tatsächlich sind viele Aufgaben selbst für erfahrene Entwickler schwierig. Aber genau deshalb sind sie eine Herausforderung. Man sollte sich nicht mit anderen vergleichen, sondern sich auf den Lernprozess konzentrieren
      Um anzufangen, sollte man sich frühere Arbeiten in einem Themengebiet ansehen, das einen interessiert. Zum Beispiel lohnt sich ein Blick auf die Arbeiten von Adam Dunkels. Sie sind für Embedded gedacht, also klein und leicht verständlich
      Falls nötig, kann man auch KI-Tools nutzen, um beim Verstehen oder Generieren von Code Unterstützung zu bekommen