Skip to main content

Blogg

Om webutvikling, ytelse, verktøy — og nå og da noe større.

JavaScriptAnalyticsEvent DelegationServer ComponentsPerformance

É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.

28. juli 202610 min lesing
Les artikkelen
CSSHTMLAccordionFrontendPerformance

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.

28. juli 20269 min lesing
Les artikkelen
JavaScriptWebThird-Party ScriptsFrontendPatterns

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.

27. juli 20269 min lesing
Les artikkelen
CSSContainer QueriesTypographyFrontendPerformance

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.

24. juli 202611 min lesing
Les artikkelen
Next.jsPerformanceCode SplittingTurbopackReact Server Components

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%.

18. juli 202614 min lesing
Les artikkelen
obsidianmiroautomationtoolsopen-source

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.

30. juni 20266 min lesing
Les artikkelen
ailearningcareermethodology

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.

23. juni 20266 min lesing
Les artikkelen
ailearningcareerengineering

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.

22. juni 20268 min lesing
Les artikkelen
claude-codeproductivityclidevtools

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.

13. juni 20269 min lesing
Les artikkelen
claude-codeagentsaiprompt-engineeringautomation

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.

29. mai 20266 min lesing
Les artikkelen
claude-codeproductivityclidevtools

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.

5. mai 20264 min lesing
Les artikkelen
ObsidianClaudeMCPAutomationAI

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.

3. mai 20269 min lesing
Les artikkelen
physicsphilosophyconsciousnessblack-holescosmology

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.

17. april 202610 min lesing
Les artikkelen
aicmsweb-developmentopinionworkflow

AI drepte CMS — i hvert fall for enkle nettsider

Hvorfor tradisjonelle innholdshåndteringssystemer blir unødvendige for porteføljer, blogger og landingssider.

17. april 20268 min lesing
Les artikkelen
ObsidianPerplexityMCPAIProductivity

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.

12. april 20265 min lesing
Les artikkelen
Claude CodeAIObsidianAutomationProductivity

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.

12. april 20267 min lesing
Les artikkelen
next.jsreact-19dark-modezustandperformance

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+.

11. april 20268 min lesing
Les artikkelen
Next.jsCSSPerformanceTurbopackSCSS

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.

8. april 202612 min lesing
Les artikkelen
Next.jsMemory LeakDockerAWS LambdaNode.js

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.

19. mars 202610 min lesing
Les artikkelen