Wenn der Heap fragmentiert ist: Was ein verlorener malloc() über mein visuelles System lehrte
Letzte Woche stolperte ich auf Hacker News über The lost malloc() – 111 Punkte, 42 Kommentare, eine Archäologie-Ausgrabung in C-Code, die seit Jahrzehnten niemanden mehr interessiert hatte. Ich las den Thread im Zug nach München, Laptop auf den Knien, Kaffee kalt werdend neben mir. Und während die Kommentare über Fragmentierung, Free-Lists und Allocation-Strategien diskutierten, musste ich an etwas ganz anderes denken: an mein linkes Auge.
Ich habe Amblyopie. „Schielauge“, sagt der Volksmund. Seit der Kindheit. Das rechte Auge hat die Arbeit übernommen, das linke wurde – um im Bild zu bleiben – quasi free()'d ohne je wieder malloc()'d zu werden. Das Gehirn ist ein brutaler Memory Manager: Ressourcen gehen dorthin, wo der Return on Investment stimmt. Und wenn ein Auge schlechtere Signale liefert, wird es stillgelegt. Suppression nennt das die Augenheilkunde. Ich nenne es Fragmentierung im visuellen Kortex.
Klassisches Pflastern ist der memset(weak_eye, 0)-Ansatz: brutale Isolation. Das dominante Auge wird abgedeckt, das schwache muss arbeiten. Aber Kooperation? Fehlanzeige. Zwei Heaps, die nicht miteinander sprechen. Kein mmap über beide Hemisphären hinweg.
Vor drei Monaten entdeckte ich AmblyoPunch auf dem Meta Quest Store. Ein VR-Spiel, entwickelt von Seven Sportz. Dichoptisches Training – unterschiedliche Bilder für jedes Auge, gleichzeitig. Kein Pflaster. Kein Arztzimmer. Nur ein Headset und Controller (oder Hand-Tracking).
Die ersten Minuten fühlte sich an wie Debugging ohne Logs. Ich stand in einer virtuellen Dorf-Szene, Gabor-Coins flogen auf mich zu – weichkantige Streifenmuster, die in der Vision Science Standard sind für Kontrast- und Orientierungsverarbeitung. „Gabor patches“, las ich später in der Doku. Mein linkes Auge sah sie scharf, das rechte bekam sie ausgeblichen serviert. Stage 2: Breaking Suppression. Der dominante Augen-Input wird gedimmt, bis das Gehirn kapiert: Ah, da war noch was.
Ich punched die Coins. Wich roten Spikes aus – drei Herzen, dann Game Over. Die Physik: Objekte werden schneller, Coins kleiner, Spikes größer. Hand-Augen-Koordination unter Last. Ich verfehlte die ersten fünf Coins. Frust. Dann der sechste Treffer. Ein leises Pling. Punkte. Fortschritt.
Die vier Stages laufen automatisch ab, performance-gated. ≥ 70 % Erfolgsrate in einem rollenden Fenster von 10 Outcomes (Punches + Dodges) für den Aufstieg. Unter 40 %: Demotion. Bei Schiel-Profilen (Esotropie/Exotropie) braucht es ≥ 80 % vor der finalen Fusion-Training-Stage. Ich wählte „Moderate“, linkes Auge schwach, leichte Exotropie. Die Wrist-Menüs ließen mich alles justieren – falsche Augen-Selektion würde den klinischen Effekt umkehren, warnte der Setup-Screen. Ich checkte zweimal.
Stage 3: Rebalancing. Helligkeit und Schärfe kehrten graduell zum dominanten Auge zurück. Mein Gehirn musste lernen, beide Inputs zu gewichten. Nicht entweder/oder, sondern sowohl/als auch. Wie ein Allokator, der Memory Pools zusammenführt statt sie zu fragmentieren.
Stage 4: Fusion Training. Leichte Bildverschiebung innerhalb von Panums Fusionsbereich. Das Gehirn muss die zwei Bilder zu einem 3D-Perzept verschmelzen, um die Coins präzise zu treffen. Ich spürte es physisch: ein Ziehen hinter den Augen, dann – an einem Dienstagabend nach drei Wochen – das erste Mal echte Tiefe beim Ausweichen eines Spikes. Nicht „ich sehe 3D auf dem Bildschirm“. Sondern: der Spike kommt AUF mich zu.
Die Welten schreiten voran: Dorf → Stadt → Weltraum → Mond → Mars → Venus. Ich bin gerade bei Mars. 4.200 Punkte. Nicht viel für Gamer, aber für mich: Messwerte, die ein Augenarzt sonst mit teuren Geräten erhebt. Die App ist kein Medizinprodukt. Keine Heilung. Training. Assistenz. Ergänzung zur professionellen Betreuung. Das steht groß im Disclaimer. Ich nehme es ernst – und gehe trotzdem alle sechs Monate zur Kontrolle.
Was mich an dem HN-Thread faszinierte: Die Diskussion um Allocator-Designs, die Fragmentierung vermeiden statt sie nur zu verwalten. Buddy Systems. Slab Allocators. Arenas. AmblyoPunch fühlt sich an wie so ein Design für den visuellen Kortex: Dichoptische Präsentation als shared memory region. Gabor-Stimuli als Cache-freundliche Arbeitslast. Progressives Rebalancing als Garbage Collection für Suppression.
Ich bin kein Neurowissenschaftler. Ich bin Entwickler, der seine eigene Fragmentierung versteht. Und der nach 30 Jahren zum ersten Mal einen Spike räumlich ausweichen konnte.
Wenn du neugierig bist: https://www.meta.com/en-gb/experiences/amblyopunch/1239507485902689/
Top comments (0)