Vier Bugs töteten die Textauswahl auf iOS — und jeder verdeckte den nächsten
Ein Lexical-Editor in einem vaul-Drawer funktionierte überall, nur nicht auf einem echten iPhone: Die Auswahl-Griffe ließen sich nicht ziehen, das Scrollen verklemmte an den Rändern, die Toolbar tauchte unter die Tastatur. Raten half nicht, denn es gab keinen einzelnen Schuldigen — es waren vier unabhängige, und jeder maskierte den nächsten. Was funktionierte, war ein Bisektions-Prüfstand: dasselbe Gerüst mit einem Schalter pro Verdächtigem, getestet auf physischer Hardware. Dies ist die ganze Jagd — href, das die Auswahl vergiftet, vauls Drag-Handler, unser eigener Tap-Focus, ein Container, der unter dem Finger wandert — plus die Obduktion der Scroll-Sperre und die drei einmaligen scrollTop-Schreibvorgänge, die das Rubber-Band-Scrollen nativ anfühlen ließen, einschließlich des Abfangens eines Swipes mitten im Federn.
Eine Kaskade von Agenten: das Terminal wählt den, der gerade läuft
Als Claude teilweise ausfiel und einige Modelle nicht mehr liefen, wollte ich auf Gemini wechseln — und merkte, dass mein Fallback seit Monaten kaputt war. So baut man einen, der wirklich hält.
system-droid: ein Wachhund, der meine Systeme selbst prüft und selbst repariert
Meine lokalen Dienste starben immer lautlos — der Morgenbericht kam einfach nicht, Tokens liefen ab, Backups froren ein. Also baute ich einen launchd-Droiden, der alle zwei Stunden alles prüft, per Claude-Agent repariert, was gefahrlos geht, und mir nur schreibt, wenn wirklich ein Mensch gebraucht wird.
Eine statische Seite, die heimlich ein A/B-Test ist
Ein A/B-Test wird meist so gebaut, dass die Seite vom CDN auf ein Rendering pro Request fällt. Muss aber nicht sein. Halte jede Variante vollständig statisch und lass einen Proxy (Next.js' umbenanntes Middleware) die Zuordnung über eine Experiment-Plattform auflösen, anhand einer stabilen Device-ID — und schreibe nur um, wenn der Besucher nicht in der Kontrollgruppe ist. Die URL ändert sich nie, das CDN cached weiter, und der häufige Pfad kostet nichts.
Von der CI aus auf Vercel deployen, wenn der Committer kein Teammitglied ist
Verschiebe ein Repo in eine GitHub-Organisation, und Vercel blockiert klammheimlich deine Deploys: Der Commit „konnte keinem Teammitglied zugeordnet werden“. So deploye ich stattdessen aus GitHub Actions mit der Vercel-CLI — meine Commits zählen weiterhin für meinen eigenen GitHub-Graphen, das Dashboard zeigt weiterhin, wer gepusht hat, und ich kaufe nicht für jeden Mitwirkenden einen Seat.
Next.js Memory Leak: Fetch + Standalone-Modus — 2 Jahre ohne Fix
Next.js patcht den globalen fetch und fügt eine Cache-Schicht hinzu, die bei jeder Anfrage Speicher verliert. In Docker/K8s führt dies alle paar Stunden zu OOM-Crashes. Der Bug existiert seit Next.js 14 und ist in 16.2.x noch ungelöst.
Mehrere Claude Code Accounts auf einem Gerät
Wie man zwei (oder mehr) Claude Code Accounts parallel nutzt — persönlich und geschäftlich — mit vollständiger Isolation durch eine einzige Umgebungsvariable.
Blog-Inhalte in SolidStart lazy laden, ohne SSG zu verlieren
Dein Blog liefert vermutlich den Text jedes Beitrags in einem einzigen Bundle — meins war auf 2,88 MB angewachsen und wurde sogar auf der Übersichtsseite geladen, wo du nur Titel brauchst. So habe ich den Text jedes Beitrags in einen Lazy-Chunk ausgelagert, der bei Bedarf lädt, während jede Seite für SEO vollständig servergerendert bleibt.
CRAFT: eine Methode, um AI zu nutzen, ohne das eigene Können zu verlieren
Ein Problem zu benennen, ohne eine Lösung zu bieten, sät nur Angst. Nach dem Beitrag über AI-bedingte Kompetenzaushöhlung folgt jetzt das Rezept: CRAFT – fünf Prinzipien (Challenge First, Review Adversarially, Ask Why Not What, Friction on Purpose, Test Your Understanding) unter einem einzigen Axiom: AI erledigt, was du bereits beherrschst; du übernimmst, was du noch lernst. Eine praktische, einprägsame Methode, um AI täglich einzusetzen, ohne dabei still und leise Fähigkeiten einzubüßen.
Ein Listener statt einer Client-Komponente pro Button
In dem Moment, in dem du einer Komponente Klick-Analytics hinzufügst, wird sie zu einer Client-Komponente, die JavaScript ausliefert. Mach das über eine ganze Website hinweg, und allein das Tracking bläht dein Bundle auf. Hier ist die Alternative, die seit jeher in der Plattform steckt: ein einziger delegierter Listener, deklarative Data-Attribute und Komponenten, die reines serverseitig gerendertes HTML bleiben.
Ein flüssiges Akkordeon mit null JavaScript
Alle greifen zu React-State und einem höhenmessenden Hook, um ein Akkordeon zu bauen. Der Browser liefert seit Jahren ein natives — und seit 2024 animiert es das Öffnen und Schließen mit reinem CSS. Hier die vollständige Technik: details[name], ::details-content, interpolate-size und die eine Eigenschaft, die auch das Schließen animiert.
Einen Drittanbieter-Wert im selben Moment abfangen, in dem er auf window landet
Ein Skript, das du nicht kontrollierst, schreibt sein Ergebnis zu einem unvorhersehbaren Zeitpunkt in eine globale Variable auf window. Der meiste Code liefert sich dabei ein Wettrennen mit einem Timeout oder verschwendet den main thread mit Polling. Hier ist der Accessor-Property-Trick, der das Schreiben in ein Event verwandelt — plus der getter, den du nicht vergessen darfst, und wie du den Wert komplett ersetzen kannst.
Text mit reinem CSS an seinen Container anpassen — ohne JavaScript
Jeder schreibt einen JavaScript-Hook, der die font-size verkleinert, bis der Text in einen Container passt. Hier ist eine voll funktionsfähige Alternative ganz ohne JS — mit Container-Query-Einheiten, clamp() und sprachabhängiger Silbentrennung, samt der Kaskaden-Falle, an der viele aufgeben.
next/dynamic wird dich nicht retten: Warum CMS-gesteuerte Next.js-Seiten jeden Chunk ausliefern
Unsere CMS-gesteuerten Next.js-Seiten lieferten auf jeder Route alle ~100 Section-Komponenten aus – trotz lehrbuchmäßigem Einsatz von next/dynamic. Wir haben jede Lösung auf Bundler-Ebene ausgereizt (direktes import(), Datei-Splitting, Turbopack-Konfiguration, webpack splitChunks), bevor wir die wahre Ursache fanden: Erreichbarkeit, nicht Chunking. Codegen zur Build-Zeit plus rewrites senkten das First-Load-JS um 53%.
Ich hole meine Boards aus Miro nach Obsidian
Der Export-Button in Miro liefert dir ein PNG oder PDF — ein Foto der Daten, nicht die Daten selbst. Wenn deine Boards load-bearing Denkkarten aus jahrelanger Arbeit sind, gehören sie in Obsidian: editierbar, durchsuchbar, im lokalen Vault. Wie ich Boards per REST API aus Miro gezogen und nach Excalidraw bzw. Obsidian Canvas konvertiert habe — mit Positionen, Farben, Fonts, Curved Connectors, Mindmap Nodes — und die Lehre reicht weiter als Miro: jedes SaaS gehört mit einem Exit Plan betrachtet, BEVOR du es zum ersten Mal öffnest.
Claude Code Multi-Profile, v2: eine saubere XDG-Architektur
Nach einem Monat mit dem alten Alias-Ansatz habe ich mein Claude-Code-Multi-Profile-Setup auf eine XDG-konforme Struktur unter ~/.config/claude-profiles/ umgebaut. Der eigentliche Grund war keine Ordnungsliebe — ich habe entdeckt, dass ~/.claude.json eine separate Datei im Home-Root ist, in der die per --scope user hinzugefügten MCP-Server still vor sich hin lebten.
Die Stille, die AI ausgeschaltet hat
Lohnt es sich noch, Programmieren zu lernen, wenn es AI gibt? Die laute Antwort ist auf beiden Seiten falsch. Mit der Evidenzbasis 2025–2026 (Nature, Anthropic, AI & Society) lautet die Frage nicht "AI oder nicht", sondern welche Skills du an AI abgibst und welche du bei dir behältst — und eine Sache hat sich wirklich geändert: Früher hat dich die Realität durch Reibung zum Lernen gezwungen, AI hat diesen Druck leise ausgeschaltet.
Claude Code Agents schreiben, die dich nicht anlügen
Zwei Regeln für zuverlässige Claude Code Agent-Pipelines: ein Agent pro Spezialisierung, und Shell-Befehle statt Prompts überall dort, wo quantitative Antworten gefragt sind.
Wie man Claude Desktop mit Obsidian verbindet — Eine Reise durch 4 MCP-Server
Eine echte Geschichte über die Suche nach einem stabilen Weg, das Obsidian-Vault-Refactoring über Claude zu automatisieren. Was kaputt ging, was funktionierte, und warum VaultForge die einzige funktionierende Option war.
Schwarze Löcher als rekursive Universen: Von der Physik zum Sinn der Existenz
Was wäre, wenn jedes Schwarze Loch ein Urknall eines neuen Universums ist? Eine Untersuchung rekursiver Kosmologie, Hawking-Strahlung und kognitiver Schließung.
KI hat das CMS getötet — zumindest für einfache Websites
Warum traditionelle Content-Management-Systeme für Portfolios, Blogs und Landing Pages unnötig werden — und wie KI-Tools die gesamte CMS-Schicht ersetzen.
Perplexity AI mit Obsidian über MCP verbinden — Notizen direkt aus dem Chat
Richten Sie Perplexity Desktop ein, um Ihren Obsidian Vault über den MCP Filesystem Server zu lesen und zu beschreiben. Recherchieren Sie im Web und speichern Sie in Ihren Notizen — in einem Gespräch.
Täglicher AI News Digest mit Claude Code CLI und Obsidian — Null Abhängigkeiten
Wie ich einen täglichen Nachrichtenrecherche-Agenten mit einem 6-Zeilen Bash-Skript, Claude Code Headless-Modus und macOS launchd gebaut habe.
Next.js Dark Mode ohne Flackern oder React 19 Warnungen
Wie man next-themes durch Zustand + useServerInsertedHTML ersetzt, für flackerfreien Dark Mode in Next.js 15+ ohne React 19 Script-Warnungen.
Wie ich 94 Render-blockierende CSS-Dateien in Next.js 16 mit einem kaum dokumentierten Turbopack-Feature eliminiert habe
Nach Tagen des Ausprobierens jedes Ansatzes — von experimental.inlineCss bis MutationObserver-Hacks — entdeckte ich Turbopack Import Attributes, die das Render-blockierende CSS-Problem im Next.js App Router lösen.