Skip to main content

Blog

Om webudvikling, ydeevne, værktøjer — og en gang imellem noget større.

JavaScriptAnalyticsEvent DelegationServer ComponentsPerformance

Én listener i stedet for én klientkomponent pr. knap

I det øjeblik du tilføjer klik-analytics til en komponent, bliver den til en klientkomponent, der sender JavaScript med. Gør det på tværs af et helt website, og tracking alene puster dit bundle op. Her er alternativet, der har ligget i platformen hele tiden: én delegeret listener, deklarative data-attributter og komponenter, der forbliver ren server-renderet HTML.

28. juli 202610 min læsning
Læs artiklen
CSSHTMLAccordionFrontendPerformance

En jævn accordion helt uden JavaScript

Alle griber efter React-state og en højdemålende hook for at bygge en accordion. Browseren har haft en indbygget af slagsen i årevis — og siden 2024 animerer den både åbning og lukning med ren CSS. Her er hele teknikken: details[name], ::details-content, interpolate-size og den ene egenskab, der også får lukningen til at animere.

28. juli 20269 min læsning
Læs artiklen
JavaScriptWebThird-Party ScriptsFrontendPatterns

Fang en tredjeparts-værdi i det øjeblik den lander på window

Et script du ikke kontrollerer, skriver sit resultat til en global variabel på window på et tidspunkt du ikke kan forudsige. Det meste kode kører om kap med det via en timeout eller spilder main thread på polling. Her er accessor-property-tricket, der gør skrivningen til en event — plus den getter du ikke må glemme, og hvordan du helt kan substituere værdien.

27. juli 20269 min læsning
Læs artiklen
CSSContainer QueriesTypographyFrontendPerformance

Tilpas tekst til dens container med ren CSS — uden JavaScript

Alle skriver en JavaScript-hook, der skrumper font-size, indtil teksten passer i en container. Her er et fuldt fungerende alternativ helt uden JS — med container query-enheder, clamp() og sprogbevidst orddeling, inklusive kaskadefælden, der får folk til at give op.

24. juli 202611 min læsning
Læs artiklen
Next.jsPerformanceCode SplittingTurbopackReact Server Components

next/dynamic redder dig ikke: Hvorfor CMS-drevne Next.js-sider sender hver eneste chunk

Vores CMS-drevne Next.js-sider sendte alle ~100 sektionskomponenter på hver rute — på trods af lærebogsagtig brug af next/dynamic. Vi udtømte alle bundler-niveau-fixes (direkte import(), fildeling, Turbopack-konfiguration, webpack splitChunks), før vi fandt den egentlige årsag: nåbarhed, ikke chunking. Codegen på build-tidspunkt + rewrites skar first-load JS med 53%.

18. juli 202614 min læsning
Læs artiklen
obsidianmiroautomationtoolsopen-source

Jeg trækker mine boards ud af Miro og ind i Obsidian

Export-knappen i Miro giver dig en PNG eller en PDF — et foto af dataene, ikke dataene selv. Hvis dine boards er load-bearing maps of thinking bygget op gennem år, hører de hjemme i Obsidian: editable, searchable, i et lokalt vault. Sådan trak jeg boards ud af Miro via REST API og konverterede til Excalidraw / Obsidian Canvas — med positioner, farver, fonts, curved connectors, mindmap nodes — og lektien rækker længere end Miro: enhver SaaS skal mødes med en exit plan FØR du åbner den første gang.

30. juni 20266 min læsning
Læs artiklen
ailearningcareermethodology

CRAFT: en metode til at bruge AI uden at miste sit faglige fodfæste

En diagnose uden kur er bare angst. Efter indlægget om AI-drevet afkvalificering kommer her recepten: CRAFT — fem principper (Challenge First, Review Adversarially, Ask Why Not What, Friction on Purpose, Test Your Understanding) under ét aksiomet: AI gør det, du allerede mestrer; du gør det, du stadig er ved at lære. En praktisk og lettilgængelig metode til at bruge AI hver dag uden stille at miste sine kompetencer.

23. juni 20266 min læsning
Læs artiklen
ailearningcareerengineering

Stilheden, som AI'en slukkede

Er det stadig værd at lære programmering, når der findes AI? Det højlydte svar er forkert fra begge sider. Med evidensgrundlaget fra 2025–2026 (Nature, Anthropic, AI & Society) er spørgsmålet ikke "AI eller ej", men hvilke færdigheder du overlader til AI, og hvilke du beholder selv — og én ting har faktisk ændret sig: før tvang virkeligheden dig til at lære gennem modstand, AI slukkede stille det pres.

22. juni 20268 min læsning
Læs artiklen
claude-codeproductivityclidevtools

Claude Code Multi-Profile, v2: en ren XDG-arkitektur

Efter en måned med den gamle alias-baserede tilgang byggede jeg mit Claude Code multi-profile-setup om til en XDG-kompatibel struktur under ~/.config/claude-profiles/. Den egentlige grund var ikke ryddelighed — det var opdagelsen af, at ~/.claude.json er en separat fil i home-roden, hvor MCP-serverne tilføjet via --scope user stille boede.

13. juni 20269 min læsning
Læs artiklen
claude-codeagentsaiprompt-engineeringautomation

Sådan skriver du Claude Code-agenter, der ikke lyver for dig

To regler for at bygge pålidelige Claude Code-agentpipelines: én agent pr. specialisering, og shell-kommandoer i stedet for prompts overalt, hvor kvantitative svar er involveret.

29. maj 20266 min læsning
Læs artiklen
claude-codeproductivityclidevtools

Flere Claude Code-konti på én enhed

Sådan bruger du to (eller flere) Claude Code-konti parallelt — personlig og virksomhed — med fuld isolation ved hjælp af én enkelt miljøvariabel.

5. maj 20264 min læsning
Læs artiklen
ObsidianClaudeMCPAutomationAI

Sådan forbinder du Claude Desktop med Obsidian — En rejse gennem 4 MCP-servere

En virkelig historie om at finde en stabil måde at automatisere refaktorering af Obsidian-vault via Claude. Hvad der gik i stykker, hvad der virkede, og hvorfor VaultForge viste sig at være den eneste fungerende mulighed.

3. maj 20269 min læsning
Læs artiklen
physicsphilosophyconsciousnessblack-holescosmology

Sorte huller som rekursive universer: fra fysik til eksistensens formål

Hvad hvis hvert sort hul er et Big Bang for et nyt univers? En udforskning af rekursiv kosmologi og kognitiv lukning.

17. april 202610 min læsning
Læs artiklen
aicmsweb-developmentopinionworkflow

AI dræbte CMS — i hvert fald for simple hjemmesider

Hvorfor traditionelle indholdsstyringssystemer bliver unødvendige for portfolioer, blogs og landingssider.

17. april 20268 min læsning
Læs artiklen
ObsidianPerplexityMCPAIProductivity

Sådan forbinder du Perplexity AI med Obsidian via MCP — Noter direkte fra chatten

Opsæt Perplexity Desktop til at læse og skrive dit Obsidian-vault ved hjælp af MCP filesystem-server. Søg på nettet og gem i dine noter i én samtale.

12. april 20265 min læsning
Læs artiklen
Claude CodeAIObsidianAutomationProductivity

Daglig AI-nyhedsdigest med Claude Code CLI og Obsidian — Nul afhængigheder

Hvordan jeg byggede en daglig nyhedsforskningsagent med et 6-linjers bash-script, Claude Code headless-tilstand og macOS launchd.

12. april 20267 min læsning
Læs artiklen
next.jsreact-19dark-modezustandperformance

Next.js Dark Mode uden blink eller React 19-advarsler

Sådan erstattes next-themes med Zustand + useServerInsertedHTML til flimmerfri mørk tilstand i Next.js 15+.

11. april 20268 min læsning
Læs artiklen
Next.jsCSSPerformanceTurbopackSCSS

Hvordan jeg eliminerede 94 render-blokerende CSS-filer i Next.js 16 med en dårligt dokumenteret Turbopack-funktion

Efter dage med at prøve enhver tilgang — fra experimental.inlineCss til MutationObserver-hacks — opdagede jeg Turbopack Import Attributes, der løser problemet med render-blokerende CSS i Next.js App Router.

8. april 202612 min læsning
Læs artiklen
Next.jsMemory LeakDockerAWS LambdaNode.js

Next.js Memory Leak: Fetch + Standalone-tilstand — 2 år uden fix

Next.js patcher den globale fetch og tilføjer et cache-lag, der lækker hukommelse ved hver anmodning. I Docker/K8s fører dette til OOM-nedbrud hver par timer. Buggen har eksisteret siden Next.js 14 og er stadig uløst i 16.2.x.

19. marts 202610 min læsning
Læs artiklen