Blogg
Notater fra arbeidet med programvare.
Buggen som levde i gapet mellom to tjenester
To tjenester regnet 'sold' på to forskjellige måter. Admin fikk en 409 Conflict som ikke ga mening fra noen av sidene. Buggen var ikke i noen av tjenestene — den var i gapet mellom dem, og en kontrakttest stopper den neste.
#microservices#debugging#distributed-systems#war-storyHvorfor vi sendte EntityManager som parameter
En stock-drift-bug som ingen klarte å reprodusere lokalt. Fiksen var én signaturendring — slutt å injecte EntityManager i NestJS-singletons, send den per request i stedet.
#nestjs#typescript#concurrency#dependency-injection#war-storyHiring managers leser byggvalgene dine, ikke «Om»-siden
Hver tekniske beslutning i furevikstrand.cloud var også et hiring-signal — tre-lags degradering, et selv-hostet dashboard, en delt kodevei. Ingenting av det vises på en CV; alt av det vises i repoet og på det live nettstedet.
#hiring#careeradvice#portfolio#softwareengineeringJeg bygde mitt eget dashboard for å se hva besøkende spør chatten om
/admin er en server-rendret, basic-auth-gated Next.js-side som leser chat-events fra MySQL — 13 paneler for trafikk og chat, inkludert en miss-kø som gjør oppdagede hull til leverte svar på rundt 30 sekunder.
#admin#analytics#selfhosted#privacy#mysql#nextjsEn AI-chat som ikke ryker når API-nøkkelen går tom
Tre lag med graceful degradation — Claude, Ollama og en ren TypeScript-nøkkelordmatcher — holder chatten i gang selv om API-saldoen treffer null eller LLM-serveren faller ut.
#chat#claude#ollama#typescript#nextjs