Skip to main content

05 — Texte

Blog

Über Webentwicklung, Performance, Tools — und hin und wieder etwas Größeres.

06. Okt. 2026Auf Vercel aus einem git-pre-push-Hook deployen: Org-Repo, Hobby-Plan, keine CI-SecretsVercels Git-Integration lehnt ein privates Repo einer GitHub-Organisation im Hobby-Plan ab, und der CI-Weg braucht Repo-Secrets, die du vielleicht nicht anlegen darfst. Hier die leichtere Variante: ein lokaler pre-push-Hook, der genau den gepushten Commit mit der Vercel-CLI deployt, während alle weiter unter ihrem eigenen Namen pushen.Vercel · Git Hooks · CI/CD
7 Min. Lesezeit
06. Okt. 2026AktualisiertVon der CI aus auf Vercel deployen, wenn der Committer kein Teammitglied istVerschiebe 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.Vercel · GitHub Actions · CI/CD
8 Min. Lesezeit
05. Sept. 2026Vier Bugs töteten die Textauswahl auf iOS — und jeder verdeckte den nächstenEin 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.iOS · Safari · WebKit
15 Min. Lesezeit
29. Aug. 2026Eine Kaskade von Agenten: das Terminal wählt den, der gerade läuftAls 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.Claude Code · AI · CLI
9 Min. Lesezeit
17. Aug. 2026system-droid: ein Wachhund, der meine Systeme selbst prüft und selbst repariertMeine 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.Claude Code · AI · Automation
10 Min. Lesezeit
14. Aug. 2026Eine statische Seite, die heimlich ein A/B-Test istEin 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.Next.js · A/B Testing · Proxy
8 Min. Lesezeit
10. Aug. 2026AktualisiertNext.js Memory Leak: Fetch + Standalone-Modus — 2 Jahre ohne FixNext.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.Next.js · Memory Leak · Docker
10 Min. Lesezeit
09. Aug. 2026AktualisiertMehrere Claude Code Accounts auf einem GerätWie man zwei (oder mehr) Claude Code Accounts parallel nutzt — persönlich und geschäftlich — mit vollständiger Isolation durch eine einzige Umgebungsvariable.claude-code · productivity · cli
4 Min. Lesezeit
05. Aug. 2026Blog-Inhalte in SolidStart lazy laden, ohne SSG zu verlierenDein 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.SolidJS · SolidStart · Performance
8 Min. Lesezeit
05. Aug. 2026AktualisiertCRAFT: eine Methode, um AI zu nutzen, ohne das eigene Können zu verlierenEin 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.ai · learning · career
6 Min. Lesezeit
28. Juli 2026Ein Listener statt einer Client-Komponente pro ButtonIn 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.JavaScript · Analytics · Event Delegation
10 Min. Lesezeit
28. Juli 2026Ein flüssiges Akkordeon mit null JavaScriptAlle 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.CSS · HTML · Accordion
9 Min. Lesezeit
27. Juli 2026Einen Drittanbieter-Wert im selben Moment abfangen, in dem er auf window landetEin 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.JavaScript · Web · Third-Party Scripts
9 Min. Lesezeit
24. Juli 2026Text mit reinem CSS an seinen Container anpassen — ohne JavaScriptJeder 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.CSS · Container Queries · Typography
11 Min. Lesezeit
18. Juli 2026next/dynamic wird dich nicht retten: Warum CMS-gesteuerte Next.js-Seiten jeden Chunk ausliefernUnsere 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%.Next.js · Performance · Code Splitting
14 Min. Lesezeit
30. Juni 2026Ich hole meine Boards aus Miro nach ObsidianDer 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.obsidian · miro · automation
6 Min. Lesezeit
23. Juni 2026AktualisiertClaude Code Multi-Profile, v2: eine saubere XDG-ArchitekturNach 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.claude-code · productivity · cli
9 Min. Lesezeit
22. Juni 2026Die Stille, die AI ausgeschaltet hatLohnt 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.ai · learning · career
8 Min. Lesezeit
29. Mai 2026Claude Code Agents schreiben, die dich nicht anlügenZwei 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.claude-code · agents · ai
6 Min. Lesezeit
03. Mai 2026Wie man Claude Desktop mit Obsidian verbindet — Eine Reise durch 4 MCP-ServerEine 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.Obsidian · Claude · MCP
9 Min. Lesezeit
17. Apr. 2026Schwarze Löcher als rekursive Universen: Von der Physik zum Sinn der ExistenzWas wäre, wenn jedes Schwarze Loch ein Urknall eines neuen Universums ist? Eine Untersuchung rekursiver Kosmologie, Hawking-Strahlung und kognitiver Schließung.physics · philosophy · consciousness
10 Min. Lesezeit
17. Apr. 2026KI hat das CMS getötet — zumindest für einfache WebsitesWarum traditionelle Content-Management-Systeme für Portfolios, Blogs und Landing Pages unnötig werden — und wie KI-Tools die gesamte CMS-Schicht ersetzen.ai · cms · web-development
8 Min. Lesezeit
12. Apr. 2026Perplexity AI mit Obsidian über MCP verbinden — Notizen direkt aus dem ChatRichten 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.Obsidian · Perplexity · MCP
5 Min. Lesezeit
12. Apr. 2026Täglicher AI News Digest mit Claude Code CLI und Obsidian — Null AbhängigkeitenWie ich einen täglichen Nachrichtenrecherche-Agenten mit einem 6-Zeilen Bash-Skript, Claude Code Headless-Modus und macOS launchd gebaut habe.Claude Code · AI · Obsidian
7 Min. Lesezeit
11. Apr. 2026Next.js Dark Mode ohne Flackern oder React 19 WarnungenWie man next-themes durch Zustand + useServerInsertedHTML ersetzt, für flackerfreien Dark Mode in Next.js 15+ ohne React 19 Script-Warnungen.next.js · react-19 · dark-mode
8 Min. Lesezeit
08. Apr. 2026Wie ich 94 Render-blockierende CSS-Dateien in Next.js 16 mit einem kaum dokumentierten Turbopack-Feature eliminiert habeNach 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.Next.js · CSS · Performance
12 Min. Lesezeit

27 Einträge