Profilbilde av Magnus Rundberget

Magnus Rundberget

Systemutvikler

+47 928 83 365
magnus@kodemaker.no

Utvikler med 30 års erfaring

  • Bruker agentisk utvikling med Claude Code daglig, også til større oppgaver, og har integrert KI-søk i et produkt i drift
  • Opprinnelig backendutvikler som har fått skikkelig sansen for frontendutvikling
  • Funksjonell programmerer med OO-bakgrunn
  • Solid erfaring med arkitektur, analyse og design, men liker best å kode
  • Yter best i små, smidige team med fokus på hyppige leveranser, læring og trivsel

«Magnus is one of those rare individuals who has the ability to understand a concept at the high level as well as the implementation minutia at the same time. His skills and deep experience in software architecture along with his professional, patient and calm nature allowed me to gain not only the information needed about the project on which we worked, but insights and inspiration in the more general field of software development.»

- Mitul Thobhani, Owner and Co-Founder, Portfolio Software Limited

Om Magnus

Magnus er en ringrev som er like engasjert i faget nå som da han skrev sin første Othello-implementasjon på høgskolen, om ikke mer. Han er analytisk av natur og nøler ikke med å brette opp ermene for å levere det som trengs, raskt og med høy kvalitet.

Med sin bredde og erfaring kan Magnus ta mange forskjellige roller i et prosjekt. Han trives best i team som leverer ofte og forbedrer seg hele tiden. Læring er viktig for Magnus, og han er like opptatt av å dele kunnskap som av å utvikle seg selv.

I drømmeprosjektet får Magnus være med på hele reisen, fra problem og idé til fungerende kode. I eksisterende løsninger ser han alltid etter hva som kan gjøres bedre. Han bidrar ofte med å sette opp eller forbedre CI/CD-prosesser, redusere teknisk gjeld, gi bedre brukeropplevelser og automatisere prosesser.

Magnus er svært opptatt av funksjonell programmering, både med og uten sterk statisk typing. Språk som ClojureScript og Elm, og ideene bak dem, fikk ham til å kaste seg over frontendutvikling med stor entusiasme.

I perioder bidrar Magnus mye til åpen kildekode. Han gjør det for å lære, gi noe tilbake og dele kunnskap.

Magnus bruker agentisk utvikling med Claude Code daglig, også til større oppgaver som refaktoreringer på tvers av kodebasen. I Lovdata-prosjektet har han også jobbet med integrasjonen mot KI-søket i nye Lovdata Pro.

Stiftelsen Lovdata

Ny versjon av Lovdata Pro med KI-søk. Fullstack i Elm og Kotlin, med integrasjon mot KI-søket og monitorering i Datadog.

Oiiku

Smart bordplasseringsmodul for automatisk plassering av mange event-deltakere basert på potensielt motstridende ønsker. Clojure, Kotlin og OptaPlanner.

Aprila Bank

Etablering og utvikling av tjenester for en ny bank for B2B-markedet. Basert på bl.a. Kotlin, Rust, Elm og Google Cloud.

Animalia

Applikasjon for veterinærer og produsenter for registrering av medisinering og helserelatert informasjon. Tjenestebasert arkitektur laget med Clojure, ClojureScript, Oracle og Docker Cloud.

Teknologi


Programmeringsspråk

Elm, Clojure, ClojureScript, Kotlin, Groovy, JavaScript, Java, Haskell, Java EE, TypeScript, Visual Basic, XSLT, Python, Node.js, Swift, Rust, C# og Node


Utviklingsverktøy

Light Table, Gradle, Subversion, Rational Rose, Maven, CVS, Ant, Eclipse, Git, Rational suite, Dbartisan, Visual Studio, Visual age, Websphere studio, MKS, Webpack, TogetherJ, Cygwin og IntelliJ IDEA


DevOps

Docker, Jenkins, Ansible, Amazon Web Services (AWS), TeamCity, Hudson, Datadog, Terraform, Kubernetes, Bamboo, Travis CI, Google Cloud Platform, Tivoli, Log4j, Google cloud run, Firebase, Docker cloud og CruiseControl


Web- og apputvikling

Websphere, Spring, Epicentric portal, MS IIS, ASP, Tomcat, Grails, Xalan, Apache, Iplanet enterprise directory, Websphere portal, JBoss, JBoss Portal, Netty, Tapestry, Adobe reachform og Jbossws



Utvikling

JUnit, COM+, Buster.JS, Easymock, Xerces, Arrow, Spock, Swing admin console, Junitee, Electron, SAAJ, Axis, SwiftUI, Boot, JAXB, Jmx og Grinder


Data

Oracle, Microsoft SQL Server, DB2, SQL Server, Mq series, PostgreSQL, Datomic, PL/SQL, Kafka, Hibernate, DynamoDB, Elasticsearch, Quartz, Mq series integrator, Sybase, Apache Camel, Sql reporting services, MariaDB, Solr, Hibernate search, Influx DB, Verity search, JBoss Messaging, MongoDB, Lucene og DataScript


Webutvikling

Twitter Bootstrap, React, Frontend, jQuery, re-frame, Pegjs, D3, AngularJS, Flash og CSS


Software

GitLab, JIRA, Confluence, CA SiteMinder, Erwin, Lotus notes, Auth0, Domino, Secureway directory stellent cms, Peoplesoft crm, Site server commerce, WebLogic, Ms exchange og Agresso


Annet

Funksjonell programmering, Buddy, Ms dna, Webservices, .NET, Automatisert testing, SOAP, Mts, EJB, Borland JBuilder, Constraint programming, Aspekt-orientert programmering, Grasshopper, Ms market, Tcp, Xfire, JSON, DevOps, Pki, Programmering, Rup, Windows, HP Unix, Arkitektur og Udp


Prosjekter


Arbeidsgiver

Kodemaker Systemutvikling AS


Stiftelsen Lovdata
04.2023 -

Utvikling av ny versjon av det juridiske arbeidsverktøyet Lovdata Pro

Lovdata utvikler en ny versjon av det juridiske arbeidsverktøyet Lovdata Pro. Den kraftig moderniserte versjonen er langt mer mobilvennlig og får betydelige løft på en rekke andre områder.

Magnus ble opprinnelig leid inn for å tilføre ekspertkompetanse på Elm. Han jobber som fullstackutvikler og bidrar også med kompetanse på arkitektur og utviklingsmetodikk.

Nye Lovdata Pro har KI-søk. Magnus har jobbet med backend-integrasjonen mot KI-søket i Kotlin, med feilhåndtering og monitorering i Datadog. I det daglige bruker han agentisk utvikling med Claude Code, også til større oppgaver.

Elm, Kotlin, Kunstig intelligens, Språkmodeller, Claude Code, KI Agenter, Datadog, Solr, MariaDB og GitLab


The Social Gaming Group
11.2022 - 03.2023

Strømlinjeforming av utrulling av ny og oppdatert spillsoftware for Shuffle og Darts.

I 2018 var Kodemaker med på å utvikle software for flere dartspill, som ble lansert da utestedet Oche åpnet. Siden den gang er det laget tilsvarende spill for Shuffle, og installasjonene har spredt seg over hele verden. Kodemaker ble engasjert for å effektivisere utrullingen av ny software, slik at den kan skalere i takt med vekstambisjonene.

Oppgavene til Magnus:

  • Oppsett av byggepipelines i GitLab
  • Utvikling av Ansible-playbooks for oppsett og installasjon av spillsoftware
  • Utvikling av en tjeneste for asynkron installasjon (Clojure og PostgreSQL)

Clojure, Ansible og GitLab


FFL AS
11.2021 - 02.2023

Fantasy Football fikk et nytt og spennende spill. Kodemaker stod for utvikling av både app og backend.

Fantasy football er et stort og voksende marked. FFL ville som ny og ambisiøs aktør ta en ledende posisjon med et engasjerende, morsomt og svært brukervennlig spill. Da muligheten til å være med på utviklingen dukket opp, øynet to av Kodemakers mest fotballgale utviklere drømmeoppdraget.

Kodemaker var ansvarlig for utvikling av app, backend og integrasjon mot tredjepartsleverandører av data, og for å etablere rutiner for CI/CD og devops og lage nødvendige administrasjonsverktøy. Vi bidro selvfølgelig også med domenekunnskap og kreative innspill for et best mulig produkt.

Rolle: Fullstackutvikler, DevOps, tech lead

Kotlin, Swift, SwiftUI, Google cloud run, Firebase, Terraform, PostgreSQL, Arrow og Funksjonell programmering


Mercell
10.2020 - 11.2021

Utvikling av ny samarbeidstjeneste for leverandører i en anbudsportal.

Mercell er en av de ledende aktørene i Europa innen anbudsformidling og har vokst raskt gjennom flere oppkjøp. Selskapet holdt på å lage en ny felles plattform for leverandører, og tidlig i prosjektet fant vi gjennom analyser og brukerundersøkelser et gap i tjenestetilbudet for leverandører.

Oppdraget var å utvikle en tjeneste som gir leverandøren en samlet oversikt over pågående anbudsprosesser, og tjenester for samarbeid i fasene for evaluering av anbud og innlevering av tilbud. Teamet var et autonomt domeneteam med stor frihet i valg av teknologi og arbeidsmetodikk. Vi valgte en reaktivt inspirert arkitektur med Javalin/Kotlin i backend og React/TypeScript i frontend. Frontend og backend kommuniserte via WebSockets (lesing) og REST/kommandoer (skriving). Planen var å dele tjenestene opp i mindre, selvstendige komponenter (micro frontends). Integrasjon mot andre domener gikk via Kafka, og en felles autentiseringsløsning (Auth0) ga brukerne en sømløs brukerreise.

Rolle: Tech lead, utvikler og arkitekt

Kotlin, TypeScript, Kafka, Amazon Web Services (AWS), DynamoDB, Terraform, Auth0, Funksjonell programmering, Docker, React og DevOps


Norled
04.2019 - 09.2020

Utvikling av nytt informasjonssystem for fergedrift

Utviklet nye informasjonssystemer for fergedrift for Norled.

Clojure, ClojureScript, Datomic, DataScript, Amazon Web Services (AWS), Kubernetes, Influx DB, Kafka og Travis CI


Tomra
10.2018 - 04.2019

Utvikling og modernisering av backoffice-løsninger for pantemaskiner

Tomra har pantemaskiner over hele verden. Maskinene samler inn store mengder informasjon og må administreres av backoffice-personell. Magnus moderniserte og skrev om programvaren for kommunikasjon med pantemaskinene, og stod for løpende vedlikehold av administrasjonsapplikasjoner. Han laget også en POC for å modularisere administrasjonsapplikasjonen ved å skille ut kampanjefunksjonaliteten, med Elm i frontend og REST-endepunkter i backend.

Java, Elm, JavaScript, TypeScript, GitLab, Amazon Web Services (AWS) og SQL Server


Protector Forsikring
2018

Utvikling av B2B- og B2C-forsikringsportal

Videreutvikling og forbedring av selvbetjeningsportalen for Protectors forsikringsprodukter. Portalen er en SPA med REST-integrasjoner mot kjernesystemene. Oppgaver: Utvikling av ny funksjonalitet, teknologievaluering, mentoring i moderne funksjonell utvikling og rådgivning ved innføring av Scrum og smidige prinsipper.

JavaScript, TypeScript, Node, Webpack, Docker og TeamCity


Oche
2018

Utvikling av nytt spillkonsept for dart.

Med moderne teknologi og hardware, stilig design og autentiske piltavler laget vi et nytt og spennende spillkonsept for å popularisere dart i Norge. Magnus jobbet hovedsakelig med logikken i dartspillene og teknisk frontend.

Clojure, ClojureScript og Python


Oiiku
2017

Utvikling av bordplasseringsmodul for "smart" automatisk plassering av tusenvis av deltakere.

Utvikling av bordplasseringsmodul til et system for eventhåndtering. Modulen skulle effektivt plassere tusenvis av deltakere og samtidig balansere ulike konfigurerbare kriterier. Oppgaver: Utvikling av backend-tjenester og integrasjon mot kjernemodulene i eventsystemet, og å finne en best mulig løsning på det NP-komplette problemet med å plassere tusenvis av deltakere automatisk på tvers av hundrevis av bord.

Clojure, Kotlin, AngularJS, Ansible, Datomic, MongoDB, Gradle og TeamCity


Aprila Bank
2017

Etablering og utvikling av tjenester for en ny bank for B2B-markedet.

Utvikling av tjenester og produkter for en ny B2B-bank, en startup som ville tilby banktjenester til små og mellomstore bedrifter på en helt ny og spennende måte. Oppgaver: Integrasjon mot diverse tredjepartsløsninger, etablering av mikrotjenester, teknologievalueringer, frontendutvikling, automatisert testing m.m.

Kotlin, Elm, PostgreSQL, Google Cloud Platform, GitLab, Kubernetes, Rust og Amazon Web Services (AWS)


Animalia - Dyrehelseportalen
2016

Utvikling av applikasjon til veterinærer og produsenter for registrering av medisinering og helserelatert informasjon

Utvikling av applikasjon for veterinærer og produsenter for registrering av medisinering og helserelatert informasjon. Prosjektet var en omskriving av en eksisterende applikasjon til en moderne, responsiv webapplikasjon. Første versjon gikk i produksjon i januar 2017 og ble deretter videreutviklet kontinuerlig. Oppgaver: Analyse, design og fullstackutvikling av en mikrotjenestebasert arkitektur med flere sluttbrukerapplikasjoner.

Clojure, ClojureScript, re-frame, Docker, Oracle, SQL Server, Elasticsearch, Docker, Docker cloud, Twitter Bootstrap og Jenkins


Animalia - Vedlikehold og videreutvikling
2015

Vedlikehold og videreutvikling av flere av de eksisterende Grails-applikasjonene i Animalia

Vedlikehold og videreutvikling av flere av de eksisterende Grails-applikasjonene i Animalia. Oppgaver: Utvikling, feilretting, refaktorering og arkitekturarbeid med tanke på applikasjonenes levetid.

Grails, Groovy, Oracle, Docker og JavaScript


Animalia - Helsegris
2014

Utvikling av ny applikasjon for oppfølging av dyrehelse for griser

Utvikling av ny applikasjon for oppfølging av dyrehelse for griser. Prosjektet hadde også som mål å lage en del gjenbrukbare tjenester. Oppgaver: Utvikling, mentoring og veiledning i utvikling av tjenestearkitekturer.

Clojure, ClojureScript, Docker, Ansible, Twitter Bootstrap, React, Buster.JS, Jenkins og Oracle


Animalia - Sauekontrollen
2013

Fullstackutvikling i Grails

Fullstackutvikling i Grails. Prosjektets ekspert på JavaScript/TDD og provisjonering (Ansible).

Grails, Groovy, jQuery, Twitter Bootstrap, Ansible, Buster.JS, Oracle, Tomcat, Jenkins, Git og Spock


Animalia - Storfekjøttkontrollen
2012

Hjelpe til med å transformere og utvide eksisterende systemer til moderne webteknologi basert på Java-plattformen

Animalia er et fagmiljø for kjøtt- og eggbransjen og tilbyr verdikjedesystemer til bønder og deres rådgivere. Animalia har en klar strategi om å tilby gode og moderne selvbetjeningsløsninger på web. Magnus ble leid inn for å hjelpe til med å transformere og utvide eksisterende systemer til moderne webteknologi basert på Java-plattformen. Oppgaver: Utvikling av frontend og backend for nytt system, mentoring i smidig utvikling og mentoring av fast ansatte og nyansatte i moderne systemutvikling.

Grails, Groovy, jQuery, Twitter Bootstrap, Oracle, Tomcat, Jenkins, Git og Spock


Storebrand Aktuarsystemer
2011

Utvikling av ny funksjonalitet og arkitekturforbedringer i pensjonskassesystem for store offentlige og private kunder

Storebrand Aktuarsystemer er et datterselskap i Storebrand-konsernet og har utviklet et pensjonskassesystem for store norske kunder. Behovet for å utvikle ny funksjonalitet i raskere tempo økte stadig, samtidig som det hadde bygget seg opp en del teknisk gjeld. Magnus ble først og fremst leid inn som seniorutvikler på Java-delen av løsningen. Oppgaver: Utvikling av ny funksjonalitet i Java, PL/SQL og noe .NET. Scrum-mentoring og mentoring i beste praksis innen systemutvikling. Forbedring av utviklingsprosessen og hjelp med innføring av nye, produktive verktøy og disipliner.

Java, PL/SQL, Gradle, TeamCity, Subversion, .NET, JUnit, Apache Camel, Spring og Oracle


Forsvaret FLO/IKT
2010

Utvikling av proxyløsning for webservice-kall over ustabile nettverk

FLO/IKT holdt på med en svært omfattende SOA-implementasjon. En av utfordringene i Forsvaret er at mange nettverk har lav båndbredde og/eller ustabile forbindelser. Derfor ble det utviklet en proxybasert løsning for å håndtere webservice-kall også i slike nettverk, og løsningen var tenkt som en viktig komponent i SOA-arkitekturen. Oppgaver: Med utgangspunkt i en spesifikasjon og referanseimplementasjon fra Forsvarets forskningsinstitutt skulle Magnus lage en produksjonsklar første versjon som skulle integreres i SOA-arkitekturen.

SOAP, Webservices, Netty, Udp, Tcp, Java, Jmx, JAXB, SAAJ, Swing admin console, Gradle, Subversion, Hudson, Confluence, JIRA og Grasshopper


Telenor Mobil
2009

Oppgradering av mellomvareplattform (COS)

Oppgradering av mellomvareplattform (COS): Java 4 → Java 6, WebLogic 8 → WebLogic 10 og Maven 1 → Gradle. Oppgaver: Scrum-assistanse, utvikling av webservices, porting av biblioteker, WebLogic-konfigurasjon, ytelsestesting, analyse og migrering av byggesystem.

WebLogic, Java, Maven, Gradle, MKS, JUnit, Easymock, Xfire, Axis, Bamboo, Cygwin, Grinder, Java EE og Spring


Forsvaret FLO/IKT
2008-2009

Modernisering og videreutvikling av fagapplikasjoner for dokumenthåndtering

Modernisering av fagapplikasjoner for dokument- og rapporthåndtering til Web 2.0. Oppgaver: Kravstyring, arkitekturevaluering, utvikling på alle applikasjonslag, ytelsestesting, mentoring.

Java, Tapestry, Spring, Hibernate, Lucene, Hibernate search, Tomcat, Apache, Maven, Hudson, Easymock, Subversion, JIRA og Confluence


Nordic Lottery Systems
2006-2008

Internettspill

Utvikling av nytt internettspill med svært høye oppetids og ytelseskrav. Oppgaver: Requirements Managament (user stories og use cases), DDD, Design og utvikling av JEE komponenter, Team admin, Ytelsesoptimlisering.

Java, Spring, JBoss, JBoss Portal, JBoss Messaging, Jbossws, Hibernate, Apache, PostgreSQL, Oracle, Flash, Quartz, Maven, Ant, JUnit, Junitee, Easymock, Aspekt-orientert programmering, CruiseControl, Eclipse, IntelliJ IDEA, CVS, JIRA og Confluence


EDB ASA
2005

Migrering av driftsmiljø for Storebrand

Migrering av driftsmiljø for Storebrand. Oppgaver: Ekspertråd, assistanse, “troubleshooting”, konfigurasjon, performance tuning, mentoring, dokumentasjon.

Websphere, Mq series, Domino, DB2, Microsoft SQL Server og Oracle


Trygge barnehager
2004-2005

Utvikling av ASP-tjenester

Utvikling av ASP tjenester for barnehagesektoren. Omfattet tjenester innen; opptak, økonomi, hjemmeside og kvalitet i barnehager. Oppgaver: Etablering av IT arkitektur mål og plan, Teknisk ansvarling mot outsourcings leverandør, teknologievalueringer, rådgivning på prosess og metode.

.NET, Visual Studio, C#, SQL Server, Sql reporting services og Ms exchange


IBM Danmark
2003

Virk.DK, felles G2B portal for danske myndigheter

Virk.DK prosjektet er resultatet av en stor satsning fra den danske stat for å realisere en G2B portal, hvor virksomheter etterhvert skal kunne foreta all kommunikasjon med myndighetene elektronisk. Oppgaver: Design/utvikling av arbeidsflyter, utvikling av portlets, digitale signaturer.

Java EE, EJB, Websphere portal, Tivoli, DB2, Secureway directory stellent cms, Adobe reachform, Webservices, Pki, Ant, Log4j, JUnit, CVS, Xerces, Xalan og Websphere studio


Arbeidsgiver

PriceWaterhouseCoopers, England


PWC internt
2002-2003

CRM Implementasjon

CRM Implementasjon. Virksomhetskritisk prosjekt med målsetning å konsolidere all kunde-og kontaktinformasjon for PWC UK til en sentralisert kilde. Prosjektet var en PeopleSoft 8.8 implementasjon og hadde en mengde grensesnitt til firmaets kjernesystemer. Oppgaver: Arkitektur governance, Design/utvikling av portlets, integrasjon mot SSO, design og utvikling av integrasjonsgrensesnitt Rolle: Teknisk arkitekt.

Peoplesoft crm, Websphere, Mq series integrator, CA SiteMinder, Epicentric portal, Java, Java EE, XSLT, SOAP og Borland JBuilder


Pwc internt
2002-2003

Risk Managment Reporting

Risk Managment Reporting, System for distribuert analyse og rapportering av risiko vurdering internt i firmaet. Systemet hadde hovedsaklig partnere som brukergruppe, og blir benyttet globalt. Oppgaver: Analyse/design, koordinering mot indisk outsourcet team, arkitekturprototype, databasedesign.

MS IIS, COM+, Microsoft SQL Server, Rational suite, ASP, Visual Basic, XSLT, CA SiteMinder og Epicentric portal


Pwc internt
2002

Virksomhetsportal

Virksomhetsportal, Portalløsning for alle firmaets ansatte i Storbrittania. Portalen tilbyr en samlet personlisert brukerflate og aksess til de fleste av firmaets kritiske systemer. En viktig suksessfaktor for systemet var innføring av en SSO (Single Sign-On) infrastruktur. Oppgaver: Rådgivning integrasjon mot portal, rådgivning integrasjon mot SSO, design og utvikling av portlets.

Epicentric portal, Websphere, CA SiteMinder, Iplanet enterprise directory, Verity search, Oracle, DB2, Microsoft SQL Server, Lotus notes, MS IIS, Mq series, Java, Java EE, ASP, XSLT, Eclipse og Rational suite


Arbeidsgiver

Net Professionals UK LTD


HM C&E - Engelske tolldirektoratet
2001-2002

G2B Portal for engelske tollvesenet

G2B Portal. eEnabling av tjenester fra tolldirektoratet mot publikum og bedrifter. Oppgaver: Governance, Analyse/Design, Team ledelse og utvikling.

Arkitektur


Arbeidsgiver

Objectware AS


Storebrand
2000-2001

Råd på nett, Unit Linked

Utvikling av tjenester for Storebrands nettbank. Oppgaver: Team ledelse, OOAD, utvikling og mentoring.

Java, Java EE, Websphere, Visual age, Lotus notes, TogetherJ, JUnit, Xalan, Xerces, XSLT og DB2


Aftenposten
1999-2000

Elektronisk innkjøpssystem

Elektronisk innkjøpssystem. Oppgaver: Team ledelse, OOAD og utvikling.

Visual Basic, Ms dna, Microsoft SQL Server, MS IIS, ASP, Mts, COM+, Ms market, Site server commerce, Rational Rose og Rup


Domino DA
1999

Bonuspoengsystem

Bonuspoengsystem. Oppgaver: Rådgivning, Team ledelse, OOAD og utvikling.

Ms dna, Mts, Mq series, Oracle, Agresso, PL/SQL, COM+, Visual Basic, Rational Rose og Erwin


Telnor bedrift
1997-1999

Fakturagrunnlagssystem

Fakturagrunnlagssystem. System for prising av telenor bedrifts datatjenester. Oppgaver: Design, utvikling, kravanalyse og testing.

Windows, HP Unix, Visual Basic, COM+, Sybase, Rational Rose, Erwin og Dbartisan


Anbefalinger


Simon Skrede

Director of Development, Lovdata

«Magnus has worked for Lovdata since March 2023 as a developer and project QA for a complex rewrite of our main software offering to the legal professional market in Norway. He has worked full-stack with our Elm frontend and Kotlin backend. Since literally the first hour he sat down at his desk, he has consistently delivered value to the project with professional craftsmanship and enthusiasm for both domain and technology. Through teaching sessions both one-on-one and with the whole team, he has also shared his knowledge with his co-workers. He is a good team player and though humble in nature, he will ask the right questions and will not hesitate to state his mind on the important issues.»


Yuwen He

Product Manager, Mercell

«I had the pleasure of working with Magnus during his time as a consultant and tech lead on our team at Mercell. From the outset, Magnus demonstrated exceptional leadership and technical expertise, making our collaboration not only seamless but highly effective.

As a Product Manager, I found Magnus to be an excellent co-pilot. Alongside me and our UX designer, Magnus formed an integral part of the product trio. Together, we collaborated effortlessly to ensure our products were desirable, feasible, and user-friendly. The synergy within our trio was exceptional, enabling us to deliver solutions that truly added value for private corporations, helping them succeed in public procurement.

I joined the team late, but Magnus ensured I was brought up to speed swiftly with a thorough and well-structured overview of the project. His clarity and resourcefulness were invaluable in getting me integrated and productive quickly.

Beyond his own technical contributions, Magnus took an active role in mentoring two junior developers on our team. His hands-on coaching in best practices and constructive one-on-one feedback helped them grow significantly in their roles.

Magnus’s influence extended well beyond the team. He actively collaborated with external partners and was a key contributor to strategic and architectural decision-making across the company. His insights were consistently thoughtful, practical, and forward-looking, earning him the respect and trust of everyone he worked with.

Magnus is a resourceful and highly respected tech expert, and I would welcome the opportunity to work with him again in the future. I wholeheartedly recommend him to any organization seeking a skilled, collaborative, and inspiring leader in technology.»


Daniel Haukaas

Produkteier, FFL AS

«Det var både gøy og lærerikt å jobbe med Magnus på fantasy football-prosjektet FFL i 2022. Magnus er flink til å se helheten og tenke nøye igjennom valgene man tar før man begynner å implementere, noe jeg satt stor pris på når vi jobbet sammen. Vil absolutt anbefale Magnus videre.»


Simon Herberg

Architect, Telenor

«Karl Magnus was part of a team that upgraded our JAVA and Weblogic software. In addition he was the driving force behind the replacement of Maven 1.x with Gradle for our build system. He worked well both within the team and on individual tasks.»


Mitul Thobhani

Owner and Co-Founder, Portfolio Software Limited

«Magnus is one of those rare individuals who has the ability to understand a concept at the high level as well as the implementation minutia at the same time. His skills and deep experience in software architecture along with his professional, patient and calm nature allowed me to gain not only the information needed about the project on which we worked, but insights and inspiration in the more general field of software development.»


Norman Katz

Development Director, Nordic Lottery Systems

«When I joined NLS Magnus was the person to go to to get answers to any and all questions relating to the complex rules of our online lottery. In time, I came to rely on him to make initial scoping estimates of potential coding projects. For those projects we chose to pursue, his estimates and their related task lists formed the basis for further detailed planning. Furthermore, Magnus's estimates could always be relied on to be very close to the eventual reality. Magnus was always looking for ways to improve our product. For example, on a project that sought through simulation techniques to validate the correctness of the product's internal calculations, Magnus recognized that this would provide the ideal test bed for profiling the product's performance. Through his efforts we were able to greatly speed up the application, in addition to fullfilling the primary purose, validation of its calculations. I recommend Magnus without reservation»


Bill Lewis

Head Of Application Development, PricewaterhouseCoopers

«Magnus joined us towards the start of our exposure to Web Technology and greatly helped us make the right decisions. I would have no hesitation recommending Karl for his technical capability and clarity of thought»


Sertifiseringer og kurs


2008

  • Sertifisert ScrumMaster

1999

  • Microsoft Certified Professional

Utdanning


2004

BI

Master of Management (1 av 4 moduler), eInnovasjon (A score)


1993-1996

Høgskolen i Buskerud

Ingeniør, Linje for datateknikk


1989-1992

Røyken videregående skole

Naturfaglinje


Presentasjoner




2016



Bidrag til fri programvare


  • TypeScript WebSocket Machine - Klientbibliotek for websocket-kommunikasjon i nettleser. Bygget rundt en tilstandsmaskin med støtte for automatisk gjenoppkobling og pulskontroll.
  • Elm Bootstrap - Elm-bibliotek for å lage responsive webapplikasjoner med Twitter Bootstrap 4.
  • Elm Light Table Plugin - Light Table-plugin for Elm. Syntax highlighting, REPL/inline eval, integrasjon med elm reactor m.m.
  • rewrite-cljs - ClojureScript-port av rewrite-clj. Bibliotek for traversering og omskriving av Clojure-, ClojureScript- og EDN-kode.
  • Clj-Light-Refactor - Plugin som gir refaktoreringsstøtte for Clojure i Light Table.
  • AsciiLight - Light Table-plugin for live forhåndsvisning av Asciidoctor-dokumenter.
  • lt-snippets - Plugin for snippets og maler i Light Table.
  • LightTable InstaBuster - Light Table-plugin for BusterJS.
  • LightTable-Groovy - Groovy-plugin for Light Table. Steg 1 er å lage en langt bedre Groovy Console. Steg 2 er helt åpent. Sky’s the limit!
  • gradle-buster-plugin - Gradle-plugin for å kjøre JavaScript-tester med BusterJS i JVM-prosjekter.
  • Har bidratt til node-test-runner, buddy-auth og gradle-ssh-plugin

Andre faglige bidrag


Elm package docs preview in Light Table

Screencast som demonstrerer forhåndsvisning av pakkedokumentasjon for Elm i Light Table.

Managing and diagramming elm packages with d3 in Light Table

Screencast som demonstrerer avhengighetshåndtering og en avhengighetsgraf (laget med d3) i min Elm-plugin for Light Table.

Elm plugin for Light Table

Screencast som demonstrerer første versjon av min Elm-plugin for Light Table.

A pinch of Clojure love to Light Table

Screencast som demonstrerer kule funksjoner i min refaktoreringsplugin for Light Table.

Clojure refactoring in Light Table

Screencast som demonstrerer litt av min refaktoreringsplugin for Light Table.

The Groovy Light Table Plugin

Screencast om bruk av Groovy og Gradle i Light Table

Creating and Using Snippets in Light Table

Screencast som viser hvordan man lager og bruker snippets i Light Table med lt-snippets.

InstaBuster Part 2: Powerful JavaScript testing using Light Table and Buster.JS

Screencast med demo av dashboard og autotest-funksjoner i Light Table InstaBuster.

InstaBuster: JavaScript testing with LightTable & Buster.JS

Screencast med en kort introduksjon til Light Table InstaBuster.

Light Table

Etter å ha vært en ivrig bruker av Light Table i 1,5 år bestemte jeg meg sommeren 2015 for å bli med i open source-teamet til Light Table og forsøke å gjenopplive prosjektet. Det var nok å ta tak i, for å si det sånn!

Artikkel: Constraint Solvers og utfordrende planlegging

For kombinatorisk komplekse planleggingsproblemer kan constraint solvers være et svært nyttig verktøy å ha i verktøykassen. Jeg har selv bare hatt bruk for det noen få ganger, men da har det vært utrolig snasent i bruk. Hva i huleste er constraint solvers og hvordan kan man ta de i bruk?

Artikkel: Moro med trær og glidlåser

Av og til støter du borti programmeringsoppgaver der det gir mening å bruke tre-strukturer for å komme opp med en elegant løsning. I denne bloggposten ser vi på hvordan man kan bruke en tre-struktur for å implementere et hierarkisk søkefilter med noen fiffige krav. For å krydre det litt ekstra, skal vi gjøre det med et funksjonelt språk (Elm) hvor mutering er umulig!

Artikkel: Snasen rutehåndtering i Kotlin med Arrow.kt

Kan du få rutehåndteringskoden din til å ha robust feilhåndtering og være lettlest/lett å vedlikeholde? Kanskje?! Vi tar en titt på hvordan man kan bruke Arrow.kt som et hjelpeverktøy når man implementerer rutehåndtering i Kotlin.

Artikkel: Deklarativ validering av json i TypeScript

Du validerer vel json fra rest-kallene dine før du slipper dem løs i den nydelige typesikre domenemodellen din? Kanskje du ikke gjør det, eller bare delvis, fordi det er skikkelig tungvint?

I denne bloggposten ser vi på hvordan biblioteket Zod kan hjelpe deg over kneika, slik at du virkelig kan begynne å stole på typene dine.

Artikkel: Lage ditt eget websocket-bibliotek som en tilstandsmaskin?

I jula som var satt jeg og nerdet litt innimellom all julekosen. Jeg prøvde å finne et lite bibliotek for enkel håndtering av websockets i en nettleserapplikasjon. Nå følger det jo med en standard WebSocket implementasjon i alle nettlesere, men jeg ville også at den skulle ha støtte for automatisk gjenoppkobling og pulskontroll mot server. Etter å ha søkt litt på npm som seg hør og bør, fant jeg ikke noen som helt fristet å dra inn. Kanskje jeg skal lage et lite bibliotek selv da? Hva om jeg implementer det ved å basere meg på en Finite State Machine i bunn? Det hadde vært digg om biblioteket hadde en funksjonell kjerne og at sideeffekter håndteres separat. Her er det bare å brette opp armene å se hva vi kan få til.

Artikkel: Clojure zippers - snasen traversering og manipulering av trær

Har du hørt om zippers før? Ikke glidlåser altså, men en teknikk for å representere aggregerte datastrukturer slik at de kan enkelt traverseres og manipuleres nærmest vilkårlig. La oss utforske zippers litt nærmere og se hvordan du kan bruke de i Clojure.

Artikkel: CSS animasjoner i ClojureScript - Del 1: CLJSS

I 2018 fikk jeg sjansen til å jobbe i et spillprosjekt. Da ble det etterhvert mange og sammensatte animasjoner som bød på flere spennende utfordringer. I dette innlegget skriver jeg litt om hvordan vi løste CSS in JS for ClojureScript og hvordan vi brukte det til animasjoner.

Artikkel: Introducing Elm Bootstrap

Lansering av mitt nye Elm-bibliotek for å lage responsive webapplikasjoner med Twitter Bootstrap. Du får en oversikt over hva og hvorfor, og litt historie om hvordan biblioteket ble til.

Artikkel: Typed up CRUD SPA with Haskell and Elm - Part 6: Elm 0.18 Upgrade

I bloggserien om å lage en CRUD-applikasjon i Elm og Haskell er tiden kommet for å oppgradere Elm-koden til versjon 0.18. Mye av oppgraderingen kunne denne gangen automatiseres med verktøy fra Elm Community, og resten var relativt mekanisk. Posten sammenligner forskjellene mellom 0.17 og 0.18 i detalj.

Artikkel: Elm Light 0.4.0 - AST driven Elm features in Light Table using PEG.js

For å tilby enda bedre Elm-støtte i Light Table har jeg laget en hjemmesnekret AST ved hjelp av PEG.js. Det har gitt vesentlig bedre autocomplete og en del hendige refaktoreringsfunksjoner.

Artikkel: Oh no! Learning Elm has gotten me confused about static vs dynamic typing.

Lenge var jeg overbevist om at dynamisk typing var det eneste saliggjørende. Etter å ha brukt en solid dose tid på statisk typede funksjonelle språk reflekterer jeg over min gryende tvil.

Artikkel: Typed up CRUD SPA with Haskell and Elm - Part 5: Elm 0.17 Upgrade

I bloggserien om å lage en CRUD-applikasjon i Elm og Haskell er tiden kommet for å oppgradere Elm-koden til versjon 0.17. På overflaten har mye endret seg siden 0.16, men en strukturert gjennomgang viser at de fleste endringene er trivielle, og sluttresultatet er unektelig bedre enn før.

Artikkel: Elm Maybe - Dealing with null/Nothing

Tony Hoare regnes som mannen som fant opp null-referansen, og han kaller den selv sin «billion dollar mistake». Elm har ikke null og problemene det fører med seg. I stedet bruker man en eksplisitt type som heter Maybe (noen språk kaller den Option). I denne bloggposten ser jeg på hvordan det er å jobbe med Maybe-verdier, og sammenligner litt med JavaScript. Det finnes få gode unnskyldninger for å ta med null i et nytt språk, men det skjer likevel den dag i dag. Forstå det den som kan.

Artikkel: Elm and ClojureScript joining forces in the elm-light plugin

Jeg tenkte det måtte være kult å se om Elm og ClojureScript kunne spille sammen i Light Table. I denne bloggposten forklarer jeg hvordan jeg laget en modulutforsker med både Elm og ClojureScript.

Artikkel: Typed up CRUD SPA with Haskell and Elm - Part 4: Feature creep

Bloggserie om min ferd for å lære meg statisk, sterkt typede funksjonelle språk. Tiden er kommet for å peise på med mer funksjonalitet og en god del refaktorering. Her får jeg kjørt meg skikkelig på både Elm og Haskell.

Artikkel: Typed up CRUD SPA with Haskell and Elm - Part 3: Routing

Bloggserie om min ferd for å lære meg statisk, sterkt typede funksjonelle språk. I denne episoden implementerer jeg routing i Elm-frontenden.

Artikkel: Typed up CRUD SPA with Haskell and Elm - Part 2: Persistence up and running

Bloggserie om min ferd for å lære meg statisk, sterkt typede funksjonelle språk. I denne episoden implementerer jeg persistens med en god gammeldags relasjonsdatabase.

Artikkel: Typed up CRUD SPA with Haskell and Elm - Part 1: Spike time

Bloggserie om min ferd for å lære meg statisk, sterkt typede funksjonelle språk. I serien utvikler jeg en CRUD-applikasjon med Elm i frontend og Haskell i backend. Første episode er en spike for å få en helt enkel basis på plass.

Artikkel: Minesweeper - a brief journey from JavaScript/React to Elm

Med utgangspunkt i en minesveiper som Christian Johansen har laget i JavaScript/React, viser jeg hvordan samme spill kan implementeres i Elm. Bloggposten sammenligner flere implementasjonsdetaljer og reflekterer kort over statisk vs. dynamisk typing.

Artikkel: ClojureScript - Performance tuning rewrite-cljs

rewrite-cljs er mitt bibliotek for å traversere og omskrive Clojure- og ClojureScript-kode. I denne bloggposten forteller jeg hvordan jeg forbedret ytelsen, bl.a. ved å komme nærmere jernet (JavaScript).

Artikkel: Showcasing rewrite-cljs - Parembrace for Light Table

En liten fortelling om stegene jeg gikk gjennom for å lage en skikkelig paredit-plugin for Clojure/ClojureScript i Light Table. Et nytt ClojureScript-bibliotek ble unnfanget i prosessen.

Artikkel: Implementing a Clojure ns-browser in Light Table with React

Buzzword-kompatibel post om hvordan man elegant kan bruke React for view-logikk i Light Table. Posten går også i dybden på den grunnleggende arkitekturen i Light Table.

Artikkel: Taming those pesky datetimes in a clojure stack

En liten erfaringsrapport med tips og triks for å håndtere datoer i Clojure/ClojureScript i en tjenestebasert, lagdelt arkitektur.

Artikkel: Securing Clojure Microservices using buddy - Part 4: Secure and liberate a service app

Bloggserie om autentisering og autorisasjon i en mikrotjenestearkitektur i Clojure med Buddy. Del 4 viser hvordan man kan sikre en tjeneste som bruker REST-biblioteket Liberator.

Artikkel: Implementing a Clojure threading refactoring in ClojureScript using Light Table

En kort gjennomgang av hvordan man kan implementere en refaktoreringsfunksjon i Light Table med clojure.zip.

Artikkel: Securing Clojure Microservices using buddy - Part 3: Token revocation

Bloggserie om autentisering og autorisasjon i en mikrotjenestearkitektur i Clojure med Buddy. Del 3 ser på mulige løsninger for å trekke tilbake tokens ved hjelp av refresh tokens.

Artikkel: Securing Clojure Microservices using buddy - Part 2: WebApp authentication and authorization

Bloggserie om autentisering og autorisasjon i en mikrotjenestearkitektur i Clojure med Buddy. Del 2 handler om bruk av tokens og cookies for autentisering og autorisasjon i en Clojure-webapplikasjon.

Artikkel: Securing Clojure Microservices using buddy - Part 1: Creating Auth Tokens

Bloggserie om autentisering og autorisasjon i en mikrotjenestearkitektur i Clojure med Buddy. Del 1 handler om en tjeneste som genererer signerte tokens for autentisering og autorisasjon.

Artikkel: Bootifying my ring app

Boot er et spennende alternativ til Leiningen for bygging av Clojure-applikasjoner. Jeg deler noen erfaringer med Boot i et Clojure Ring-prosjekt.

Artikkel: A Groovy Light Table client - Step 5: Gradle dependencies in Light Table with dagre-D3

Del 5 i en bloggserie der jeg beskriver stegene for å lage en skikkelig Groovy-plugin for Light Table. Her kombinerer jeg det rike API-et i Gradle med fleksibiliteten i Light Table for å vise avhengighetsgrafer med D3. Kule greier!

Artikkel: A Groovy Light Table client - Step 4: Exploring new avenues with Gradle

Del 4 i en bloggserie der jeg beskriver stegene for å lage en skikkelig Groovy-plugin for Light Table. Her handler det om Gradle-støtte for å hente ut og bruke classpath, og for å liste opp og kjøre tasks.

Artikkel: A Groovy Light Table client - Step 3: Running out of quick wins

Del 3 i en bloggserie der jeg beskriver stegene for å lage en skikkelig Groovy-plugin for Light Table. Her kommer noen små forbedringer som gir en REPL-lignende opplevelse med Groovy.

Artikkel: A Groovy Light Table client - Step 2: Evaluating Code

Del 2 i en bloggserie der jeg beskriver stegene for å lage en skikkelig Groovy-plugin for Light Table. Her evaluerer jeg Groovy-kode og viser resultatene inline i Light Table.

Artikkel: A Groovy Light Table client - Step 1: Connecting the client

Del 1 i en bloggserie der jeg beskriver stegene for å lage en skikkelig Groovy-plugin for Light Table. Her kobler jeg Light Table til en Groovy-klientprosess.

Artikkel: Getting my feet wet with Clojure using Light Table

En liten erfaringsrapport fra mine første steg med å skrive produksjonskode i Clojure i Light Table.

Artikkel: Javascript testing in your JVM projects using Gradle and BusterJS

Hadde det ikke vært kjekt å kunne ta med JavaScript-testing i CI for JVM-prosjektet ditt? Gradle Buster Plugin to the rescue!

Artikkel: A groovy infatuation growing

Etter mange år med Java begynte jeg så smått å bli litt lei. Det fantes jo mange andre språk på JVM-plattformen. Etter å ha jobbet med Gradle en periode fikk jeg mer og mer sansen for Groovy.