É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.
CRAFT: en metode for å bruke AI uten å miste faglig skarphet
En diagnose uten kur er bare angst. 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.
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.
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.
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.
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.
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.
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.