Olav er en svært selvgående og strukturert programvareutvikler som alltid ønsker å levere så godt som mulig. Han har allsidig teknisk erfaring og han har et kontinuerlig ønske om å lære. Han liker å legge planer og jobbe strukturert deretter. Disse egenskapene gjør ham i stand til å levere kontinuerlig verdi og oppnå de resultatene som til enhver tid trengs.
Gjennom sin karriere har han levert til oppstartsbedrifter som Tings og Enode, og bidratt i flere større og mindre prosjekt, både andres og egendrevne.
One of the many qualities of Olav was his eagerness to take on big challenges, lay out a plan, execute and keep stakeholders up to date until delivery. An independent engineer that manages himself and manages upward. - Nikolai Heum, CTO Enode
Olav er grundig, strukturert og svært enkel å samarbeide med. Han planlegger godt, dokumenterer tydelig og tar ansvar for å gjøre ting ordentlig. Han er rolig, prinsippfast og skaper trygghet rundt seg. Han er alltid tilgjengelig og følger opp på en profesjonell måte. Han har også hatt en viktig rolle i å sikre at vi som team brukte Linear på en ryddig og effektiv måte, noe som løftet kvaliteten på prosjektstyringen vår betraktelig. - Johan Jøsok, COO Tings (full attest)
Siden jeg begynte å leie meg ut til utviklingsjobber i studietiden (2017-2020) har jeg bygget, markedsført og solgt produkter fra scratch, vedlikeholdt og overtatt eksisterende kodebaser, ledet planlegging i tech-team, og designet og implementert arkitektur for flere omfattende IT-systemer.
Disse systemene omfatter blant annet arkitektur for API-integrasjoner (som Lade- HVAC-integrasjonene i Enode og Reparasjonsintegrasjonene i Tings), og webscrapingsystemer som bygget opp databaser i verdensklasse som og Tings sin markedsdatabase.
Arbeidet mitt er drevet av systematiske arbeidsprosesser med CI/CD, Git og IaC og automatiske tester som en selvfølgelig del av arbeidet. Aller helst knytter jeg disse systemen mot et felles, smidig arbeidsverktøy der tverrfaglige team planlegger og jobber sammen, som i Tings, der jeg blant annet bygget planleggingen av tech-teamets oppgaver og koordinerte slik at teamet leverte det som var forventet og skapte en forutsigbar og trygg ramme i hele organisasjonen.
En annen ting som er gjennomgående arbeidet mitt er et kontinuerlig ønske om å lære. Dette har flere ganger dratt meg ut av komforsonen som "ren utvikler" og dyttet meg mot mer sammensatte roller. To tydelige eksempler på dette er da jeg bygget og solgte et produkt alene etter studiene og da jeg brukte all fritid på et designstudio, hvor vi blant annet jobbet med tjenestedesign og designmetodikk.
De siste årene har jeg også tilegnet meg kunnskap om- og brukt LLM/AI/KI som et naturlig verktøy i verktøyskuffen, sammen med en sunn skepsis til teknologien. Blant annet har jeg jobbet med å bruke KI-teknologi i produksjon flere ganger. KI, brukt med omhu, gir en fantastisk mulighet til å lage brukeropplevelser som ikke var mulig uten på grunn av dets evne til å strukturere informasjon som ellers er utilgjengelig for et dataprogram. De mulighetene har jeg hatt glede av å utnytte i blant annet bildescanningsfunskjoner, kobling av ustrukturert brukerdata og strukturerte reparasjonstjenester de siste årene.
Generelt trives jeg veldig godt med utfordringer som krever pragmatisk tilnærming og muligheten til å få mye ut av lite. Jeg etterstreber å kommunisere godt med de jeg jobber med for å sikre at vi er samkjørte, og for å unngå misforståelser uderveis.
Postgres, Redis, S3, MySQL, Elastic, Firebase, MongoDB, Pinecone
DigitalOcean, Elastic Cloud, Kubernetes, Supabase, OpenAI API, Azure AI, Amazon Web Services (AWS), Google Cloud, Docker/Compose, Algolia, Upstash, Raspberry Pi, K3S, Deno, Node, JVM, Enonic XP, Railway, Fly.io, Heroku
BullMQ, Fastify, Express, Javalin, Spring Boot, Prisma, Taskforce OAuth 2.0, GraphQL, Terraform, AWS Cloud Development Kit (CDK), Grafana, Axiom, OpenAPI, Javalin, Maven, Gradle
Web Components, Lit, TailwindCSS, React Native, Next.js, Fresh, HTMX, VanJS, Progressive Web Apps (PWA), Fresh (Deno)
Typescript, Javascript, Kotlin, Python, HTML/CSS, Clojure, Java
Git, Github Actions, K9S, Intellij, VSCode, Notion, Docker, Docker Compose, Github, Linear, Shortcut, Slack, Figma, Linux
CI/CD, TDD, Integration Testing, Agile, Story Points, Kanban, Tjenestedesign
Hos Tings fikk jeg lov til å være programvareutvikler i ambisiøs klimastartup! Jeg jobbet med utvikling av serversystemene til Tings. Dette inkludererte API-design- og implementasjon for partnere og app, avanserte KI-drevne kvitteringsprosseseringssystemer, vedlikehold av infrastruktur og crawler-systemer til analyseverktøy av annehåndsmarked for å nevne noe.
Det hårete målet til Tings var å få slutt på bruk- og kastsamfunnet. For å få til det, jobbet vi på lag med, snarere enn å arbeide mot, de som i dag lever av bruk og kast. Les mer her og se mer her.

Tings Convert var et produkt der vi viste annenhåndsverdien til et produkt i nettbutikker. Teamet gikk fra ide, brukerundersøkelser og innledende research i Januar, til å være live hos kunder tidlig i Mars. På under ett år var vi i nettbutikken til Anton Sport, Elkjøp, Vertical Playground og Fjellrevenshop (Les mer om produktet her).
Her var jeg hovedansvarlig for det tekniske designet og implementasjonen. Jeg jobbet blant annet med innhenting av datagrunnlaget (se Tings Listing Database), sikkerhetsplanlegging av løsningen, API-design, en egen motor for AB-testing av funksjoner og analytics, frontendutvikling av webkomponenten, og integrasjon med partnere.

Relevant teknologi: Typescript, Clickhouse, Web Components, API-design, Security Management, AB-testing, Analytics, Google Tag Manger, Vite, Unit Testing, E2E Testing
"Tings Listing Database" var et prosjekt der vi skulle bygge opp en totaloversikt over annenhåndsmarkedet i Norden, med globale ambisjone på sikt. Foretningshensikten med denne databasen var å støtte opp under Tings Convert, og å gi oss unik innsikt og kompetanse på annehåndsmarked. Derfor fikk jeg ansvaret for å bygge et skalerbart IT-system som hentet inn annonser fra populære nordiske platformer som som Finn, Blocket, Tise og DBA. I skrivende stund har systemet bygget en database med 460 millioner søkbare annonser fordelt fra hele Norden, i en søkbar Elasticsearch-database.

Her har jeg både designet arkitekturen, implementert løsningen og vedlikeholdt og videreutviklet fra start. Løsningen er skrevet i Typescript, og bruker BullMQ med Redis som køsystem for å hente annonser. Vi bruker Postgres brukes for dynamisk avlastning av køene slik at belastningen på platformene vi jobber mot og vår egen ressursbruk forblir optimal. De største utfordringene i dette prosjektet var å håndtere skalerbarhet, og å balansere scraping-serverens press mot tredjepartene med vårt behov for nye annonser, og lave driftskostnader, og klassiske "backpressure"-problemer i køsystemet og minnebruk i Redis-databasen. For å løse disse utfordringene bygget jeg blant annet: avlastningssystemer i Postgresdatabase, kontinuerlig monitorering med varsler og miljøvariabel-basert konfigurasjon som enkelt kunne endres og oppdateres uten nedetid.
I tillegg til selve løsningen bygget jeg visualiseringer og monitorering i Grafana og automatiserte Slack-meldinger som gjorde at resten av teamet fikk innsikt i resultatene det leverte og følte et delt eierskap til resultatene. Infrastrukturen kjørte primært på det Kubernetes-baserte DigitalOcean App Platform.

I en oppstartsbedrift som Tings skjer endringer hyppig og planer blir sjelden liggende uendret. Denne omstillingsevnen krever god samkjøring, og i en lengre periode hadde jeg ansvar for ukentlige planleggingsmøter i et tett og tverrfaglig tech-team. Her var mitt ansvar å passe på at det vi planla samsvarte med det vi fikk levert, og at alle som trengte noe fra andre deler av teamet (salg, design, produkt) fikk de de trengte, at de riktige menneskene ble involvert, og at avklaringer som trengtes ble tatt så fort som mulig. Det var også mitt ansvar å håndtere løpende oppgaver som dukket opp gjennom uken (bugs o.l.), og finne riktig prioritering og person til dem.
Fordi vi estimerte oppgavene vi tok på oss og hadde statussjekker hver uke, kunne vi måle en markant forbedring av prosessen. Etter få uker var arbeidsflyten for hele organisasjonen forbedret fordi det fantes klare rammer, og en prioritering som alle følte seg trygge på.

Nøkkelord: Agile, Linear, Story Points, Kanban, Retrospective, Product Backlog Management,
Tings (Appen for tingene dine) var hovedproduktet til Tings AS mens jeg jobbet der. Appen utgjør et tiltak inn i sirkulærøkonomien gjennom å gjøre mennesker bevisst på hva de eier, og fasilitere for sirkulære, bærekraftige valg i samarbeid med våre kommersielle partnere. Det hårete målet til Tings var å få slutt på bruk- og kastsamfunnet! For å få til det, jobbet vi særlig med løsninger som skulle være lønnsomme for detaljvarehandelbransjen - å spille på lag med, snarere enn å arbeide mot, de som i dag lever av bruk og kast.
Nøkkelord: Typescript, React Native, MySQL, Elastic, Redis, BullMQ, Prisma, Node, Kubernetes, DigitalOcean App Platform, Miro, Figma,
Tings-appen satset lenge på integrasjon med reparsjon og salgsløsninger. Ideen var at brukeren skulle få en digital oversikt over de de eier, og kunne bestille reparasjoner og videresalg fra tredjeparter gjennom et strømlinjeformet grensesnitt (vår løsning).
På dette prosjektet jobbet jeg som backendutvikler, og hadde ansvar for designet av backend-arkitekturen. Rollen inkluderte designarbeid (Wrapper/Adapter pattern), mikrotjenestearbeid, køsystemer for dynamisk oppdatering fra partner og ikke minst samkjøring med tech-teamet til eksterne partnere som IKEA, Eplehuset, Elektroimportøren, og Circulær og Repairable.
Jeg designet også en løsning som brukte AI/LLM til å finne riktig type reparsjonstjeneste basert på en brukers fritekst-input gjennom et konfigurerbart tag-system. Dette var en svært god bruk av AI fordi vi brukte det til å omforme fritekst til konkrete, strukturerte data som vi selv hadde kontroll på. Slik fikk vi forbedret brukeropplevelsen drastisk uten at vi samtidig havnet i situasjoner der brukeren fikk gale svar fordi språkmodellen fant på ting.
Nøkkelord: OpenAI API, LLM, AI, Redis, Software Design, API Integrations, Team Coordination, MySQL, Arkitect, Prisma
Tings-appen var en React Native-app med svært mange ulike funksjoner som ble utviklet med hyppig iterasjon og læring og endring underveis. Her jobbet jeg som backendutvikler og bygget "Backend For Frontend"-drevne (BFF) API-er. Hensikten med dette var å bygge API-er som er bygget for en spesifik frontend slik at det bare er akkurat den dataen som trengs, som sendes. Kort sagt betyr det at det er frontend-behovene som legger til rette for API-designet.
En konsekvens av dette var at jeg jobbet svært tett med frontendutviklerne om å finne akkurat de løsningene som fungerte best for dem, etter hvert som vi utviklet stadig nye design- og funksjonsbehov. Vi jobbet ofte i verktøy som Miro og Figma for å tegne ut og designe endepunkt og brukerflyter sammen, slik at vi ble så samkjørte som mulig fra start. Denne planleggingen tok jeg ofte en lederrolle i når det var naturlig. Dette var en rolle jeg trivdes godt i. Frontenden var skrevet i React Native, og etter hvert i SwiftUI. Ved behov satt jeg meg også inn i den og bidro der.

Nøkkelord: BFF, Backend For Frontend, Node, Typescript, Prisma, React Native, MySQL, SwiftUI, React Native, Miro, Figma
En av kjernene i Tings-produktet var en epost-integrasjon der brukeren kunne logge på sin iCloud/Gmail/Outlook-addresse gjennom deres OAuth-portaler og gi Tings tilgang til kvitteringsdata slik at nye kjøp automatisk dukket opp i appen. På dette prosjektet jobbet jeg som backendutvikler og vedlikeholdt systemet og integrasjonen over tid. Systemet var bygget med BullMQ, Redis og Postgres, og diverse LLM/AI-løsninger for tolkning av kvitteringer.
Nøkkelord: Typescript, Redis, BullMQ, Postgres, LLM, LLMWhisperer, Product Matching, Azure AI, Kubernetes, EmailEngine

I Tings-appen var det mulig å ta bilde av en ting med telefonkameraet, og automatisk få den inn i biblioteket sitt i appen. Jeg var med på å bygge backend for denne løsningen, som brukte en kombinasjon av en eksisterende produkt-database med GTIN/SKU-matching, vektordatabaser og AI-modeller til å identifisere rett produkt på en effektiv og sikker måte.
Nøkkelord: Vector Database, Pinecone, AI, Image Processing, Product Matching
Enode er en ekstremt raskt voksende energistartup, basert i Oslo. Hovedproduktet til Enode er et API som samler tilgang til energi-hardware (elbiler, solcellepaneler etc.) under ett API. Her var jeg med som en av de første utviklerne, og jobbet med å designe og utvikle API-er som ble brukt av bl.a. TotalEnergies, Fjordkraft, E.ON og Statkraft. Som tidlig ansatt i en startup, var jeg med i en svært kritisk fase i selskapets levetid.

Jeg var svært sentral i arbeidet med å utvide Enode-platformen fra å kun støtte elbiler, til å også støtte elbilladere og varmeovner. Dette arbeidet inkluderte utformingen av intern spesifikasjon for begge kategoriene, finne ut av hvordan et system bygget for elbiler kunne bli agnostisk til produktkategori, og implementere nødvendige endringer i diverse tjenester som Enode består av internt for å få til dette. Jeg jobbet også med implementasjon mot forskjellige API-ene til ulike hardware-leverandrer, som blant annet Easee, Adax, Zaptec, Wallbox, og Mill. Siden den gang har Enode utvidet arkitekturen jeg var med på å bygge, og utvidet støtten til et imponerende antall leverandører.

Da Enode bestemte seg for å gå "All Inn" for AWS etter hvert som selskapet og kundemassen vokste, skjønte vi at vi trengte innsikt i hvordan integrasjon mot ulike leverandører (Tesla, Audi, Easee osv.) til en hver tid fungerte for å garantere en god oppetid for kundene våre. Derfor brukte jeg AWS Cloud Formation Kit i Typescript for å gi varslinger til riktige mennesker når ulike integrasjoner hadde feilrater over gitte grenseverdier e.l.
Vi skrev CDK gjennom Typescript-SDK-et AWS tilbyr, og dette lot oss generere nye systemer for hver nye leverandør som ble lagt til i systemet vårt dynamisk, slik at vi alltid hadde skikkelig innsikt og varsling fra dag en. I samme stil brukte jeg også CDK til å bygge "dashbord" med alt fra oversikt over databaseytelse til integrasjonstilstand. Jeg utformet disse dashbordene sammen med andre teammedlemmer, som brukte dem til å få oversikt daglig. Slik bidro arbeidet med en nøkkelrolle i organisasjonens drift.
Da jeg begynte i Enode hadde alle kundene hver sin database med hver sin dertilhørende server. Dette fungerte utmerket til prototyping, men etter hvert som kundebasen økte, trengte vi et mer strømlinjeformet og professjonalisert oppsett. Derfor bisto jeg i arbeidet med å flytte over kunder fra det gamle oppsettet til en ny, felles postgres-database hvor hver kunde hadde sitt eget "schema", med synkroniserte migreringer og tabeller. Min oppgave i dette arbeidet var primært å skrive SQL-script for å gjennomføre selve migreringen og å oppdatere database-kode slik at den fungerte med den nye arkitekturen.
Enode består av en login-portal i tillegg til API-et. Denne er koblet opp mot en OAuth-server, og logger brukere inn hos tredjepartsleverandører (Tesla, Audi etc.) slik at Enode kan bruke deres kontoer på deres vegne, med samtykke. Her jobbet jeg tett med frontendutvikler for å koordinere endringer og migreringer til nye versjoner av API-et. Jeg jobbet også noe med frontenden selv (React, Typescript) dersom det var mindre endringer som trengtes for å støtte oppunder backend-endringene jeg jobbet med. På den måten fikk jeg levert kjerneoppgavene mine uten å avbryte andres arbeid.

Krets er navnet på mitt eget foretak. Gjennom Krets har jeg jobbet med produktutvikling og levert frilanstjenester, stort sett som bigesjeft ved siden av studier og jobb. Dette har gitt meg utrolig mye fordi det har gitt meg praktisk erfaring med å levere noe jeg alene er ansvarlig for, og alt det praktiske som kommer med å drive en egen bedrift. Gjennom Krets er jeg daglig leder, salgsansvarlig, økonomiansvarlig, arbeider og alt i mellom. Dette gir en variasjon jeg liker godt!
Høsten 2025 ble jeg leid inn til å få i stand en POC-versjon av et spennende nytt app-konsept i det norske markedet! Her tok jeg over en eksisterende kodebase som dessverre ikke leverte til kundens forventning. Da satte jeg meg raskt inn i systemet og fikk sydd sammen noe som faktisk leverte. I tillegg var jeg med i planleggingen- og utviklingen av nye funksjoner, og introduserte Kanban-planleggging. Utfordringen i dette prosjektet var å få til mye med lite, og det er en type utfordring jeg liker veldig godt!
Nøkkelord: react native, postgres, kanban-planning, agile
NRSS er en tjeneste jeg har laget som lar brukeren lytte til podcaster fra NRK i andre apper enn NRK sin app. Det begynte som et hobbyprosjekt, men det fikk fort en del oppmerksomhet på Twitter og Reddit, som har ført til stor trafikk. I snitt har tjenesten 70k treff hver dag. Prosjektet har også fått noe mediedekning i kode24: https://www.kode24.no/artikkel/nrk-laser-ned-podcastene-sine-olav-laser-dem-opp-igjen/167125.
Tjenesten er "Open Source" og tilgjengelig for alle på https://nrss.deno.dev.

Newslab kom tilbake til meg da de trengte teknisk rådgivning og hjelp med et interaktivt filmprosjekt for Nobels Fredsprissenter. Her bisto jeg med med researcharbeid for å kartlegge hvorvidt deres ønskede løsning var mulig å gjennomføre. Jeg laget en prosjektplan for å realisere alle parters ønsker, og bidro i tidlige faser av gjennomføringen av denne. Filmprosjektet lever i dag på https://dialog.nobelpeacecenter.org.

Sammen med designer Sindre Moen utviklet jeg en helt ny webløsning for 120 Hours, som er verdens største arkitektkonkuranse for studenter. Løsningen er tilgjengelig på 120hours.no. Kunden ønsket seg en ren, enkel og informativ landingsside som koblet seg opp mot et digitalt, søkbart arkiv med tidligere bidrag, sammen med et CMS hvor de enkelt kunne oppdatere innhold selv. Det viktigste for oss var hastighet i bruk. Når siden har lastet inn, er den kjapp, effektiv og responsiv. Det samme gjelder søket, som oppleves kjapt i bruk, med mange tusen bidrag.
Jeg bygget en løsning med Next JS, Algolia, Sanity CMS, Typescript og Tailwind CSS. Løsningen lever i dag og jeg har driftsansvar her. Løsningen mottar flere tusen nye bidrag hvert år konkuransen kjøres, og alt sammen er søkbart i arkivløsningen vi bygget. Løsningen lever på https://www.120hours.no.

Newslab tok kontakt med meg fordi de trengte teknologikompetanse for å levere til en kunde i filmbransjen. Der laget jeg skreddersydde webkomponenter som blir brukt i forbindelse med markedsføring av film. Arbeidet innebar tett dialog med oppdragsgiver og integrasjon av flere API-er. Min innsats gjorde at Newslab kunne levere en løsning de ellers ikke hadde hatt kompetanse til å levere, på svært kort tid.
Løsningen innebar Node, Typescript, REST-APIer, Test Drive nDevelopment, React og integrasjon mot CMS-løsningen Vev.
Produktet Krets var et digitalt verktøy som hjalp SMB-bedrifter med å få tilbakemelding fra kundene sine. Dette er et solo/grunderprosjekt som jeg startet i 2020. Her gjorde jeg med andre ord alt fra utvikling til markedsføring og salg, og strukturerte alt arbeid selv. Krets er ikke lenger et aktivt prosjekt, men det leverte verdi til betalende kunder i flere år. Jeg er veldig stolt over å ha gått rett fra skolebenken til å starte en bedrift som jeg lærte utrolig mye av.
Nøkkelord: DigitalOcean, docker, REST, postgres, API-design, react, nextJS, funksjonell programmering, brukertesteing, kunderelasjoner, salg, node, typescript, REST, CI/CD
Flexify (siden kjøpt opp av Witted) der selvstendige konsulenter kunne opprette profil og bli koblet til oppdragsgivere. Da det kom var konseptet ganske nytt i Norge, og tilsvarer platformer som Folq, Witted og Brainbase i dag. Etter å ha testet konseptet i en prototypefase, ble jeg leid inn for å bygge en produksjonsklar versjon fra bunnen sammen med en venn fra studiene.
Vi bygget en Next.JS-applikasjon på Google Firebase, med autentisering, sanntidschat, varslingssystem, kontraktgenerering og Algolia-drevet, for å nevne noe. Etter hvert som platformen levde, utvidet platformen seg til å bli en av norges største av sitt slag, med flere tusen konsulenter og mange oppdragsgivere.
Jeg driftet og vedlikeholdt platformen i flere år etter at den ble sluppet til markedet, både under Flexify og senere med Witted. Da hadde jeg ansvar for tekniske valg, stabilitetstiltak som å introdusere gode E2E-tester med Cypress, og gode enhets- og integrasjonstester for database-logikk, tilgangskontroll o.l.

Kadens var et lite foretak jeg startet og drev med Sindre Moen. Målet med Kadens var å jobbe i grensesnittet mellom teknologi, arkitektur og design. I tillegg til "fagarbeidet" hadde jeg også ansvar for økonomi, regnskapsføring, planlegging og fremdrift.
Vi ble hyret inn for å lage en nettside for HB Arkitekter. De ønsket seg en oppdatert nettflate som de kunne bruke under innsalgsmøter med potensielle kunder. Vi designet og bygget denne siden. Den lever her og brukes fortsatt aktivt av arkitektkontoret. Vi drifter også denne ved behov.
Nøkkelord: Clojure, HTMX, Docker, Railway.app, Tailwind CSS
Trygg Sykling By var et læringsprosjekt vi gjorde med den hensikt å lære oss tjenestedesignmetodikker. Prosjektet handlet om å kort oppsummert om å bruke tjenestedesignmetodikkens "Double Diamond"-metode til å finne forbedringspotensial for sykkelinfrastrukturen i Oslo. Dette var et lærerikt prosjekt hvor jeg fikk brukt "skoleevner" gjennom lesing av lange rapporter og researcharbeid, og utfordret komfortsonen gjennom "guerilla interviews" og mer fokuserte dybdeintervjuer.
Nøkkelord: Dobule Diamond, Service Design, Guerilla Interviews, Research
Se her for fullstendig beskrivelse. Vedlikeholdsarbeid av 120 Hours ble også gjort under Kadens.
Da jeg studerte jobbet jeg for høyskolen med å hjelpe og undervise førsteårsstudenter i fagene "Introduksjon til databaser (MySQL)", "Avansert Javaprogrammering" og "Algoritmer og datastrukturer". Dette var givende blant annet fordi jeg selv fikk en dypere forståelse for fagene jeg lærte bort. Sammen med dette kom naturligvis tilfredsstillensen med å hjelpe andre mennesker. Denne jobben ga meg med andre ord både undervisningskompetanse og forbedret kommunikasjonsevne.
Jobben jeg gjorde var også god nok til at studenter kom tilbake til meg etter at jeg sluttet for å be om råd og veiledning. Dette tar jeg som et tydelig tegn på at min jobb ble verdsatt og ga dem verdi.
Under mitt internship hos Enonic laget demoapper i React for deres CMS-platform. Her lærte jeg masse om React, Javascript, HTML og CSS. Jeg satt meg også inn i "Service Workers" og flere Web-API-er som "Background Synchronization API", "Web Bluetooth API" og "Web Storage API".
Dette arbeidet var del av en større satsning på Progressive Web Apps (PWA) hos Enonic. Mitt arbeid var med på å vise at det var mulig å bygge PWA-er på den eksisterende Enonic-plattformen og ble brukt til kommunikasjon med kunder.
Jeg deltok på Norges Banks hackathon i forbindelse med utarbeiding av Digitale Sentrabankspenger. Sammen med Asbjørn Riddervold designet og implementerte jeg en Proof of Concept-løsning som muliggjør sikre, automatiske utbetalinger av DSP fra velferdsstaten i en sandkasse-blokkjede utviklet av Norges Bank. En av utfordringene til blokkjeder er at alle transaksjoner var synlige av alle. Vi ønsket å utvikle noe som gjorde at disse transaksjonene ble vanskelige og helst umulige å spore. Dette løste vi med Ethereum-baserte smartkontrakter, Verifiable Credentials, og Zero Knowledge Proofs.
Nøkkeord: Ethereum, Verifiable Credentials, Veramo, Desentralisert identitet, TypeScript, tRPC, GitHub, Zero Knowledge Proofs, Circom, Node.js, npm, Typechain, Ethers.js, Hardhat,
Jeg har laget og vedlikeholder flere open source-prosjekter. De fleste av dem er laget fordi jeg ser et problem eller i min egen utviklingsflyt som jeg vil forbedre. Flere av dem er tatt i bruk av andre. Jeg liker å dele arbeidet mitt på denne måten fordi det er en super måte å lære noe på. Noen av prosjektene er trukket frem under.
RSS It Later er en liten servertjeneste som lar brukeren lagre artikler til en egen RSS-feed. Dette er en tjeneste jeg har laget for meg selv og som jeg bruker daglig. Tjenesten lever på https://rss-it-later.fly.dev/.
Nøkkelord: Kotlin, Javalin, Kotlin HTML/CSS DSL, Kotlin, Jetbrains Exposed ORM, XML/RSS, PostgreSQL, JUnit 5, Gradle, Docker Compose, Docker, Open Source,
Paperpod er et open source-prosjekt som, via en nettleserutvidelse, konverterer tekstlig innhold på nett til oppleste podcast-episoder i en personlig RSS-feed. Med andre ord gjør tjenesten at brukeren kan høre på nyhetsartikler o.l. i en hvilken som helst podcastspiller. Motivasjonen bak tjenesten er todelt: delvis er den bygget fordi jeg savnet produktet på markedet. Dernest er den bygget som et læringsprosjekt; Jeg skaffet meg blant annet verdifull erfaring med mikrotjenestearkitektur, og drifting av slike i produksjon.
Nøkkelord: DigitalOcean, docker, docker compose, docker swarm, container orchestration, REST, terraform AWS Polly, terraform, postgres, API-design, nextJS, funksjonell programmering, brukertesteing, kunderelasjoner, prototyping, node, typescript, REST, CI/CD, AWS S3
Markblog er en liten site-generator som lar brukeren lagre markdown-filer og generere HTML-filer i et ferdig blog-format, med støtte for nye blogginnlegg, RSS-feed og egendefinert CSS.
Nøkkelord: Deno, Markdown, Github Actions, Open Source
Serialize XML er et bibliotek som lar brukeren serialisere objekter til XML. Selv har jeg brukt det i flere prosjekter, blant annet NRSS.
Kall er et bibliotek som abstraherer REST-kall mot API-endepunkt og håndterer JSON-serialisering og deserialisering. Jeg laget dette mens jeg bygget REST-API for Krets, og både jeg og andre har brukt det i andre prosjekter.
Nøkkelord: Node.js, Deno, Typescript, REST, Open Source
Santiy Sync Hook er en et hjelpebibliotek som lytter til hendelser i Sanity og sender dem videre til en ekstern database. Jeg laget dette da jeg skulle holde Algolia og Sanity i sync som del av 120 Hours-prosjektet sin arkivløsning.
Nøkkelord: Algolia, Sanity, Node.js, Typescript, Open Source
Utdanningen min er noe av det mest givende jeg har gjort. Det er fordi jeg elsket friheten til å strukturere og stå fullstendig ansvarlig for egen hverdag, samtidig som jeg fikk bruke tid på å lære meg helt nye, nyttige og meningsfulle ting. Hovedvekten av utdanningen min er Bachelorgraden min fra Høyskolen Kristiania. Senere har jeg også hatt et opphold i Nederland hvor jeg studerte politikk, språk og samfunn.
Høsten 2022 flyttet jeg til Nederland og tok emner ved det selektive College University Utrecht. Her tok jeg emner i Nederlandsk(B2), samt nederlandsk politikk, kultur, literatur og samfunn. Etter å ha "tenkt programvareutvikling" i flere år, ga dette meg sunne, nye perspektiver og tilnærming til læring. Jeg oppnådde toppkarakter i emnene jeg tok.
Jeg har en bachelorgrad i Informatikk fra Høyskolen Kristiania med spesialisering i programmering. Her hadde jeg emner som Enterprise Programming, Software Design og Algorithms and Data Structures. Løpet inkluderte bl.a. grundige inføringer i mikrotjenesteutvikling i Kotlin og Java, API-design og webutvikling med Node, emeddedutvikling med C/C++, og algoritmefag.
Ved løpets ende hadde jeg de beste resultatene for hele kullet, på tvers av studieprogram, A i snitt. Under trekker jeg frem noen av de mest interessante fagene jeg hadde under utdanningen.
I "Algoritmer og Datastrukturer" lærte jeg om ulike datastrukturer, fordelen og ulempen med disse, om kompleksitetanalyse og ulike algoritmer for bl.a. søk og sortering. Praktisk implementering av de ulike algoritmene i Java var også helt sentrale deler av kurset.
Dette kurset ga meg en grunnforståelse for hvorfor et dataprogram er effektivt eller ikke effektivt. Disse ferdigheten har jeg brukt hver dag siden når jeg vurderer hvordan jeg skal bygge effektive løsninger, særlig i situasjoner der programmet må være skaleringsklart.
"Enterprise Programmering" var et omfattende kurs som ga meg innføring i hvordan man bygger, strukturerer og vedlikeholder store, stabile systemer. Kurset baserte seg på primært på å bygge Java- og Kotlin-backends med både React-drevne og serverside-renderede webapper. Kurset dekket sikkerhetspraksis, testderevet utvikling, køsystemer med RabbitMQ, REST-APIer, Docker, Monorepo i Maven, E2E-testing, Databasemigreringer og mye annet.
"Smidig Prosjekt" var et fag der studenter fra ulike teknologiliner (design, backendutvikling, spilldesign m.m.) ble satt sammen i grupper for å jobbe med et selvvalgt prosjekt fra ide til realisering. Jeg velger å trekke frem dette faget fordi jeg lærte masse om å jobbe med ulike mennesker med ulike fagbakgrunn, og å evne å bygge bro mellom disse. Gruppen jeg var en del av bygget en interessekartlegger som skulle motvirke ensomhet i fadderuken, på initiaitiv fra No Isolation, som på dette tidspunktet hadde et samarbeid med høyskolen. Faget lot meg erfare samholdet og gleden som kommer fra å jobbe konsentrert, sammen som en gjeng med et felles ønske om å bygge noe kult og nyttig.