Prosjekter

Her er noen av prosjektene jeg har jobbet med de siste årene. Hvert prosjekt inneholder en liten beskrivelse av innhold, hva jeg lærte og fremstillinger av resultater!

Dett er ikke en uttømmende liste og inneholder ingen prosjekter relatert til skolearbeid, sistnevnte finner du på GitHub.

Sikkerhetsmikrotjeneste for Kartverket

Prosjektet samler tilgangskontroll, audit logging og risikobasert overvåkning i én tjeneste med klare API-er og eventstrømmer.

Teknologistakk
Prosjektside
Læringsutbytte
  • Angrepsvektorer i webapplikasjoner
  • Docker
  • Github Actions og byggekjede
  • Full-stack utvikling
Introduksjon

Introduksjon

Sommeren 2025 hadde jeg sommervikariat i Bekk, der jeg jobbet hos Kartverket! Bakgrunnen for prosjektet var en satsning på digital sikkerhet hos Kartverket. Jeg jobbet på et team bestående av to sikkerhetsutviklere og to fullstack utviklere. Vi jobbet med Governance, Risc and Complience (GRC) med fokus på dynamisk applikasjonsskanning (DAST). Dynamisk skanning av applikasjoner betyr å skanne applikasjonen mens den kjører. En slik skann kan innebære å crawle applikasjonens URL for åpne endepunkter, skjemaer, inputfelt og manglende headers. Vi bygget en mikrotjeneste som bruker et verktøy for slike skanninger (Tenable) til å skanne Kartverket sine tjenester som eksponeres til internett før de deployeres.

Frontend

Frontend

Vi bakte metrikkene vi fikk fra skanningene inn i et dashboard i Kartverket sin utviklerportal. Av sikkerhetsmessige hensyn publiserer jeg ikke bilder av dashboardet her, men her ser du en etterlikning. Vi bygde dette som en npm-pakke for Backstage in Security Metrics plugin, som gjør det mulig å legge den til på Kartverket sin utviklerportal. På dette prosjektet utviklet jeg store deler av frontenden, herunder å lage komponenter, koble opp endepunkter og route gjennom proxy for autentisering.

Backend

Backend

Vi brukte PostgresQL og Kotlin med SpringBoot for backenden. Her var vi nødt til å knytte resultatene fra skanningene opp mot repoene tjenestene tilhørte, slik at utviklerene i Kartverket får en oversikt over hvor sikkerhetshullene ligger. Dette gjorde vi med GitHub sitt API og GraphQL. Her satt jeg opp endepunkter og controllere. Avbildet ser du kollega og sikkerhetsutvikler Aleksander under en kodegjennomgang. :)

Morsom sommer med mye teamarbeid ☀️

Hadde en veldig kul sommer i Bekk! Lærte mye om styring av team, å jobbe på større prosjekter og om sikkerhet i utvikling.

Illustrasjon for Sikkerhetsmikrotjeneste for Kartverket

api.vuhnger.dev - Personlig API for mikrotjenestene mine

Eksponerer stabile API-er som har caching og rate-limits som gir pålitelig data til dashboards.

Teknologistakk
Prosjektside
Læringsutbytte
  • Stabilt API-design
  • Sikker eksponering av endepunkter
  • Kubernetes

Hvorfor i det hele tatt sette opp et REST API for dette?

Det er i bunn to grunner! Først og fremst liker jeg å ha fri tilgang på min egen data, men først og fremst for å lagre roterende refresh-tokens som tillater meg å hente fersk data fra strava.

Arkitektur

Backenden består av tre servere; én reverse proxy, én server for APIene og én server for n8n. Jeg bruker Caddy til reverse proxy og Kubernetes til å håndtere skalering.

Illustrasjon for api.vuhnger.dev - Personlig API for mikrotjenestene mine

TERJE - KI-drevet tjeneste for monitorering og gjenoppretting av serverinfrastruktur

TERJE bruker logger og shell-kommandoer til å diagnosere clusteret mitt og rette opp i systemfeil autonomt.

Teknologistakk
Prosjektside
Læringsutbytte
  • Analyse av metrikker, logger og hendelser
  • Automatisering av self-healing
  • KI, agenter og prompting

Men er dette egentlig programmering?

Ja og nei. Dette prosjektet er mindre teknisk enn jeg pleier å jobbe. For uten å sette opp serveren og konfigurere triggere og agenter, så er ikke dette særlig komplekst, men det fungerer som et Proof-Of-Concept på hva man enkelt kan gjøre med ny teknologi.

Hvordan fungerer TERJE?

Terje er en KI-agent som ved jevne mellomrom kjører health-checker av tjenestene mine. Hvis de ikke ser operative ut, følger TERJE en prosedyre for å feilsøke og gjenopprette tjenestene. TERJE har en 80% suksessrate på mine ad-hoc tester, men intensjonen er å gjøre systemet smartere og mer avansert med tid. TERJE benytter en LLM chain og en Structured Output Parser for å gi outpput som kan parses til JSON og analyseres.

Hvor lurt er det å gi en KI-agent fri tilgang til å kjøre kommandoer på clusteret ditt?

Godt spørsmål! Det er selvfølgelig idiotisk, men TERJE kjører med begrensede tilganger og er implementert med Human-In-The-Loop ved kommandoer som modifiserer systemet. Dette gir meg mulighet til å sjekke hvilken kommando TERJE foreslår å kjøre, gitt hvilke systemer som er nede og hva feilen er.

Hva er n8n?

n8n er en plattform for automatisering med mange integrasjoner. Plattformen er low-code og veldig enkel å bruke, her er det bare kreativiteten (og din tilgang på KI-tokens) som setter grenser for hva man kan gjøre på kort tid. :)

Illustrasjon for TERJE - KI-drevet tjeneste for monitorering og gjenoppretting av serverinfrastruktur

vuhnger.dev - Personlig nettside

Nettsiden samler prosjekter, CV og visualiseringer jeg bruker til å forklare arbeidet mitt.

Teknologistakk
Prosjektside
Læringsutbytte
  • Komponentbasert design
  • Tilgjengelighet, kontrast og responsivitet
  • Webutvikling
Visuell identitet

Visuell identitet

Jeg liker teknologi - særlig arkitektur og datastrukturer, jeg vil at nettsiden min skal gjenskape den identiteten. Derfor ser du blant annet et 'Minimal Spanning Tree' (MST) som bakgrunn på hovedsiden. Dette er en datastruktur som representerer den 'billigste' måten å koble alle nodene i eksempelvis et nettverk sammen. Hvis du ikke vet hva dette er, så er ikke det så farlig, men det er meningen å se litt nerdete ut.

Teknisk

Nettsiden er ikke så kompleks, den bruker Next.js og vanilje-react, men denne gangen har jeg utfordret meg selv til å legge en innsats i å lære brukervennlig design og tilstand i webapplikasjoner.

Illustrasjon for vuhnger.dev - Personlig nettside

Universet - Læringsplattform og monitorering av studenter på Universitetet i Oslo

Plattformen revolusjonerer høyere utdanning ved å tilby studenter en ny måte å lære dateknologi på. Plattformen tar studentene gjennom oppgaver i nettverk, sikkerhet og programmering. Oppgavene presenteres som puslespill, der man må knekke koder for å komme seg videre i spillet. Spillet er også gamifisert for å øke fullføringsraten hos studentene, og det har det gjort! Studentene som har gjennomført prosjektet har høyere beståttrate på eksamen (ja, dette er nok også til dels survivorship bias, men ta gjerne kontakt hvis du vil høre mer!).

Teknologistakk
Læringsutbytte
  • Full-stack utvikling
  • Dashboarding for veiledere og emneansvarlige
En introduksjon til front- og backendutvikling

En introduksjon til front- og backendutvikling

Dette prosjektet var mitt første internship. Bildene viser hvordan prosjektet ser ut nå, etter fire år med iterasjon, men jeg utviklet på dette prosjektet sommeren 2023 og 2024!

Første møte med REST APIer

Da jeg jobbet på dette prosjektet i 2023 hadde jeg kun hatt tre emner innen programmering, derfor var læringskurven noe bratt da vi fikk beskjed om å bygge en plattform som kan håndtere oppgaveløsning, monitorering og gamifisering av studenter. Jeg lærte å sette opp databaser, endepunkter og webutvikling!

Illustrasjon for Universet - Læringsplattform og monitorering av studenter på Universitetet i Oslo