Skip to main content

05 — Tekster

Blogg

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

06. okt. 2026Deploy til Vercel fra en git pre-push-hook: org-repo, Hobby-plan, ingen CI-hemmeligheterVercels Git-integrasjon avviser et privat repo som eies av en GitHub-organisasjon på Hobby-planen, og CI-veien krever repo-hemmeligheter du kanskje ikke har lov til å legge til. Her er det lettere alternativet: en lokal pre-push-hook som deployer akkurat den pushede committen med Vercel-CLI-en, mens alle fortsetter å pushe under sitt eget navn.Vercel · Git Hooks · CI/CD
7 min lesing
06. okt. 2026OppdatertDeploy til Vercel fra CI når den som committer ikke er teammedlemFlytt 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.Vercel · GitHub Actions · CI/CD
8 min lesing
05. sep. 2026Fire feil drepte tekstmarkering på iOS — og hver av dem skjulte den nesteEn 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.iOS · Safari · WebKit
15 min lesing
29. aug. 2026En kaskade av agenter: terminalen velger den som faktisk virkerDa 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.Claude Code · AI · CLI
9 min lesing
17. aug. 2026system-droid: en vakthund som selv sjekker og reparerer systemene mineDe 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.Claude Code · AI · Automation
10 min lesing
14. aug. 2026En statisk side som i hemmelighet er en A/B-testEn 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.Next.js · A/B Testing · Proxy
8 min lesing
10. aug. 2026OppdatertNext.js Memory Leak: Fetch + Standalone-modus — 2 år uten fiksNext.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.Next.js · Memory Leak · Docker
10 min lesing
09. aug. 2026OppdatertFlere Claude Code-kontoer på én enhetHvordan bruke to (eller flere) Claude Code-kontoer parallelt — personlig og bedrift — med full isolasjon ved hjelp av én enkelt miljøvariabel.claude-code · productivity · cli
4 min lesing
05. aug. 2026Lazy-last blogginnhold i SolidStart uten å miste SSGBloggen 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.SolidJS · SolidStart · Performance
8 min lesing
05. aug. 2026OppdatertCRAFT: 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.ai · learning · career
6 min lesing
28. juli 2026Én lytter i stedet for én klientkomponent per knappI 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.JavaScript · Analytics · Event Delegation
10 min lesing
28. juli 2026En jevn trekkspillmeny helt uten JavaScriptAlle 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.CSS · HTML · Accordion
9 min lesing
27. juli 2026Fang en tredjepartsverdi i det den lander på windowEt 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.JavaScript · Web · Third-Party Scripts
9 min lesing
24. juli 2026Tilpass tekst til containeren med ren CSS — uten JavaScriptAlle 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.CSS · Container Queries · Typography
11 min lesing
18. juli 2026next/dynamic redder deg ikke: Hvorfor CMS-drevne Next.js-sider sender hver eneste chunkVå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%.Next.js · Performance · Code Splitting
14 min lesing
30. juni 2026Jeg drar boardene mine ut av Miro og inn i ObsidianExport-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.obsidian · miro · automation
6 min lesing
23. juni 2026OppdatertClaude Code Multi-Profile, v2: en ren XDG-arkitekturEtter 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.claude-code · productivity · cli
9 min lesing
22. juni 2026Stillheten som AI-en slo avEr 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.ai · learning · career
8 min lesing
29. mai 2026Slik skriver du Claude Code-agenter som ikke lyver til degTo 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.claude-code · agents · ai
6 min lesing
03. mai 2026Hvordan koble Claude Desktop til Obsidian — En reise gjennom 4 MCP-servereEn 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.Obsidian · Claude · MCP
9 min lesing
17. apr. 2026Svarte hull som rekursive universer: fra fysikk til eksistensens formålHva om hvert svart hull er et Big Bang for et nytt univers? En utforskning av rekursiv kosmologi og kognitiv lukking.physics · philosophy · consciousness
10 min lesing
17. apr. 2026AI drepte CMS — i hvert fall for enkle nettsiderHvorfor tradisjonelle innholdshåndteringssystemer blir unødvendige for porteføljer, blogger og landingssider.ai · cms · web-development
8 min lesing
12. apr. 2026Hvordan koble Perplexity AI til Obsidian via MCP — Notater direkte fra chattenSett 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.Obsidian · Perplexity · MCP
5 min lesing
12. apr. 2026Daglig AI-nyhetsdigest med Claude Code CLI og Obsidian — Null avhengigheterHvordan jeg bygde en daglig nyhetsforskningsagent med et 6-linjers bash-skript, Claude Code headless-modus og macOS launchd.Claude Code · AI · Obsidian
7 min lesing
11. apr. 2026Next.js Dark Mode uten blinking eller React 19-advarslerHvordan erstatte next-themes med Zustand + useServerInsertedHTML for flimmerfri mørk modus i Next.js 15+.next.js · react-19 · dark-mode
8 min lesing
08. apr. 2026Hvordan jeg eliminerte 94 render-blokkerende CSS-filer i Next.js 16 med en dårlig dokumentert Turbopack-funksjonEtter 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 · CSS · Performance
12 min lesing

27 oppføringer