Fire feil drepte tekstmarkering på iOS — og hver av dem skjulte den neste
En Lexical-editor i en vaul-drawer fungerte overalt unntatt på en ekte iPhone: markeringshåndtakene lot seg ikke dra, rullingen låste seg ved kantene, verktøylinjen dukket under tastaturet. Gjetting fikset ingenting, for det fantes ingen enkelt skyldig — det var fire uavhengige, og hver maskerte den neste. Det som fungerte var en biseksjonsrigg: samme skjelett med én bryter per mistenkt, testet på en fysisk enhet. Her er hele jakten — href som forgifter markeringen, vauls drag-håndterere, vår egen tap-focus, en beholder som flytter seg under fingeren — pluss obduksjonen av rulle-låsen og de tre engangsskrivingene av scrollTop som fikk rubber-band til å føles naturlig, inkludert å fange et sveip midt i spretten.
En kaskade av agenter: terminalen velger den som faktisk virker
Da Claude delvis gikk ned og noen modeller sluttet å svare, prøvde jeg å bytte til Gemini — og oppdaget at reserven min hadde vært ødelagt i månedsvis. Slik bygger du en som faktisk holder.
system-droid: en vakthund som selv sjekker og reparerer systemene mine
De lokale tjenestene mine døde alltid lydløst — morgenrapporten kom ikke, tokens utløp, backupen frøs. Så jeg bygde en launchd-droid som sjekker alt annenhver time, reparerer det som trygt kan fikses via en Claude-agent, og skriver til meg bare når et menneske virkelig trengs.
En statisk side som i hemmelighet er en A/B-test
En A/B-test bygges vanligvis slik at siden faller bort fra CDN-en til en rendering per forespørsel. Slik trenger det ikke være. Hold hver variant helt statisk og la en proxy (Next.js sitt omdøpte middleware) løse tildelingen via en eksperimentplattform, ut fra en stabil device-id — og skriv bare om når besøkende ikke er i kontrollgruppen. URL-en endres aldri, CDN-en cacher fortsatt, og den vanlige veien koster ingenting.
Deploy til Vercel fra CI når den som committer ikke er teammedlem
Flytt et repo inn i en GitHub-organisasjon, og Vercel begynner stille å blokkere deployene dine: committen «kunne ikke matches mot et teammedlem». Slik deployer jeg i stedet fra GitHub Actions med Vercel-CLI-en — committene mine teller fortsatt i min egen GitHub-graf, dashbordet viser fortsatt hvem som pushet, og jeg kjøper ikke én plass per bidragsyter.
Next.js Memory Leak: Fetch + Standalone-modus — 2 år uten fiks
Next.js patcher den globale fetch og legger til et cache-lag som lekker minne ved hver forespørsel. I Docker/K8s fører dette til OOM-krasj hver par timer. Buggen har eksistert siden Next.js 14 og er fortsatt uløst i 16.2.x.
Flere Claude Code-kontoer på én enhet
Hvordan bruke to (eller flere) Claude Code-kontoer parallelt — personlig og bedrift — med full isolasjon ved hjelp av én enkelt miljøvariabel.
Lazy-last blogginnhold i SolidStart uten å miste SSG
Bloggen din leverer sannsynligvis hvert innleggs brødtekst i én enkelt bundle — min hadde vokst til 2,88 MB og ble lastet ned selv på indekssiden, der du bare trenger titlene. Slik delte jeg hvert innleggs tekst i en lazy-chunk som lastes ved behov, mens hver side forblir fullstendig serverrendret for SEO.
CRAFT: en metode for å bruke AI uten å miste faglig skarphet
Å påpeke et problem uten å gi en løsning sår bare uro. Etter innlegget om AI-drevet avlæring kommer her resepten: CRAFT — fem prinsipper (Challenge First, Review Adversarially, Ask Why Not What, Friction on Purpose, Test Your Understanding) under ett enkelt aksiomet: AI gjør det du allerede mestrer, du gjør det du fortsatt lærer deg. En praktisk og letthugsket metode for å bruke AI hver dag uten å miste ferdigheter i det stille.
Én lytter i stedet for én klientkomponent per knapp
I det øyeblikket du legger klikk-analyse på en komponent, blir den en klientkomponent som sender med JavaScript. Gjør det på tvers av et helt nettsted, og sporingen alene blåser opp bundelen din. Her er alternativet som har ligget i plattformen fra tidenes morgen: én delegert lytter, deklarative data-attributter og komponenter som forblir ren, tjenerrendret HTML.
En jevn trekkspillmeny helt uten JavaScript
Alle griper etter React-state og en høydemålende hook for å bygge en trekkspillmeny. Nettleseren har levert en innebygd variant i årevis — og fra og med 2024 animeres den åpen og lukket med ren CSS. Her er hele teknikken: details[name], ::details-content, interpolate-size, og den ene egenskapen som gjør at også lukkingen animeres.
Fang en tredjepartsverdi i det den lander på window
Et skript du ikke kontrollerer skriver resultatet sitt til en window-global på et tidspunkt du ikke kan forutsi. Det meste av koden kjører om kapp med det via et timeout eller sløser med main thread ved polling. Her er accessor-property-trikset som gjør skrivingen om til en hendelse — pluss getteren du ikke må glemme, og hvordan du kan erstatte verdien helt.
Tilpass tekst til containeren med ren CSS — uten JavaScript
Alle skriver en JavaScript-hook som krymper font-size til teksten får plass i en container. Her er et fullt fungerende alternativ helt uten JS — med container query-enheter, clamp() og språkbevisst orddeling, inkludert kaskadefellen som får folk til å gi opp.
next/dynamic redder deg ikke: Hvorfor CMS-drevne Next.js-sider sender hver eneste chunk
Våre CMS-drevne Next.js-sider sendte alle ~100 seksjonskomponentene på hver eneste route — til tross for lærebokriktig bruk av next/dynamic. Vi uttømte alle fikser på bundler-nivå (direkte import(), oppdeling i filer, Turbopack-config, webpack splitChunks) før vi fant den egentlige årsaken: nåbarhet, ikke chunking. Kodegenerering ved byggetid + rewrites kuttet first-load JS med 53%.
Jeg drar boardene mine ut av Miro og inn i Obsidian
Export-knappen i Miro gir deg en PNG eller en PDF — et bilde av dataene, ikke dataene. Hvis boardene dine er load-bearing maps of thinking bygget opp gjennom år, hører de hjemme i Obsidian: editable, searchable, i et lokalt vault. Sånn dro jeg boards ut av Miro via REST API og konverterte til Excalidraw / Obsidian Canvas — med posisjoner, farger, fonts, curved connectors, mindmap nodes — og lærdommen strekker seg lenger enn Miro: enhver SaaS bør møtes med en exit plan FØR du åpner den for første gang.
Claude Code Multi-Profile, v2: en ren XDG-arkitektur
Etter en måned med den gamle alias-baserte tilnærmingen bygde jeg om Claude Code multi-profile-oppsettet mitt til en XDG-kompatibel struktur under ~/.config/claude-profiles/. Den egentlige grunnen var ikke ryddighet — det var oppdagelsen av at ~/.claude.json er en separat fil i home-roten der MCP-servere lagt til via --scope user stille bodde.
Stillheten som AI-en slo av
Er det fortsatt verdt å lære programmering når det finnes AI? Det høylytte svaret er feil fra begge sider. Med evidensgrunnlaget fra 2025–2026 (Nature, Anthropic, AI & Society) er spørsmålet ikke "AI eller ikke", men hvilke ferdigheter du overlater til AI og hvilke du holder for deg selv — og én ting har faktisk endret seg: før tvang virkeligheten deg til å lære gjennom motstand, AI slo det presset stille av.
Slik skriver du Claude Code-agenter som ikke lyver til deg
To regler for å bygge pålitelige Claude Code-agentpipelines: én agent per spesialisering, og shell-kommandoer i stedet for prompts overalt der svaret må være kvantitativt.
Hvordan koble Claude Desktop til Obsidian — En reise gjennom 4 MCP-servere
En virkelig historie om å finne en stabil måte å automatisere refaktorering av Obsidian-vault via Claude. Hva som gikk i stykker, hva som fungerte, og hvorfor VaultForge viste seg å være det eneste fungerende alternativet.
Svarte hull som rekursive universer: fra fysikk til eksistensens formål
Hva om hvert svart hull er et Big Bang for et nytt univers? En utforskning av rekursiv kosmologi og kognitiv lukking.
AI drepte CMS — i hvert fall for enkle nettsider
Hvorfor tradisjonelle innholdshåndteringssystemer blir unødvendige for porteføljer, blogger og landingssider.
Hvordan koble Perplexity AI til Obsidian via MCP — Notater direkte fra chatten
Sett opp Perplexity Desktop til å lese og skrive til Obsidian-vaultet ditt med MCP filesystem-server. Søk på nettet og lagre i notatene dine i én samtale.
Daglig AI-nyhetsdigest med Claude Code CLI og Obsidian — Null avhengigheter
Hvordan jeg bygde en daglig nyhetsforskningsagent med et 6-linjers bash-skript, Claude Code headless-modus og macOS launchd.
Next.js Dark Mode uten blinking eller React 19-advarsler
Hvordan erstatte next-themes med Zustand + useServerInsertedHTML for flimmerfri mørk modus i Next.js 15+.
Hvordan jeg eliminerte 94 render-blokkerende CSS-filer i Next.js 16 med en dårlig dokumentert Turbopack-funksjon
Etter dager med å prøve hver tilnærming — fra experimental.inlineCss til MutationObserver-hacks — oppdaget jeg Turbopack Import Attributes som løser problemet med render-blokkerende CSS i Next.js App Router.