Magnus Rundberget

Systemutvikler

Magnus er en ringrev som er like engasjert (om ikke mer) i faget sitt nå, enn da han skrev sine første Commodore 64-program på 80 tallet. Han er analytisk av natur og nøler ikke med å brette opp ermene for å sørge for at rikig ting blir levert så fort som mulig med så høy kvalitet som mulig.

Med sin bredde og erfaring kan Magnus ta mange forskjellige roller i et prosjekt. Han passer nok aller best i team med fokus på hyppige leveranser og kontinuerlig forbedring. Læring er noe som er veldig viktig for Magnus og han er like opptatt av å dele kunnskap som han er av egen utvikling.

Drømmeprosjektene til Magnus er der han får være med å på hele reisen med å løse problemer og realisere ideer i fungerende kode. Når Magnus jobber med videreutvikling av eksisterende løsninger, er han alltid opptatt av hvordan man kan gjøre ting bedre. Magnus bidrar ofte med å sette opp eller forbedre CI/CD prosesser, komme opp med tiltak for redusering av teknisk gjeld eller med å ta grep for bedre brukeropplevelser og smartere prosessautomatisering.

Magnus har i de siste årene blitt svært opptatt av funksjonell programmering både med og uten sterk statisk typing. Programmeringsspråk som ClojureScript og Elm og deres underliggende ideer, har gjort at han har kastet seg over frontendutvikling med stor entusiasme.

I perioder er Magnus svært aktiv med å bidra til OpenSource. Motivasjonen for å gjøre det er drevet av ønsket om å lære, følelsen av å gi noe tilbake samt å dele kunnskap.

Teknologi

Favoritter for tiden:
Bruker på jobben:
Vil lære mer:

Magnus' anbefalinger

Inventing on principle
Tooling og Design

Fantastisk foredrag av Bret Victor. Programmering er et kreativt yrke. Det er antageligvis mye lettere å være kreativ dersom man kan ta, se, observere og endre helt fritt og dynamisk på et kjørende program. Hadde det ikke vært digg å kunne spole tilbake det du nettopp gjorde i appen din, endre noen parametere og så kjøre på nytt. Kanskje tom for å sammenligne. Dette foredraget var bl.a med på å inspirere mye av tankene rundt verktøy som Light Table og programmeringspråket Elm

Se foredraget
Let's be Mainstream

Evan Czaplicki (forfatter av Elm) forsøker å få med hardcore funksjonelle programmerere (med en hang for typer) til å begynne å kommunisere med utenforstående på mer forståelige termer. Etter å ha sett denne fikk jeg endelig lyst til å kikke på et typet funksjonelt språk.

Se foredraget
Test-driven JavaScript Development

Dette foredraget av Christian Johansen var en grunnene til at jeg i stor grad kastet jQuery-scripting på båten. En inspirerende og lærerik testdrevet sesjon hvor man lager en autocomplete-komponent.

Se foredraget

Magnus snakker gjerne om

Fluefiske

Du går langs en deilig elv omringet av flott norsk natur. I sidesynet ser du plutselig en liten uregelmessighet i vannoverflaten. Du stopper for å kikke. Etter en liten stund ser du en ørret som forsiktig stiger til overflaten og slurper i seg en liten døgnflue. Pulsen stiger, du skifter flue og navigerer deg forsiktig i posisjon for å kaste …

Bloggposter

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.

Les 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.

Les 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.

Les artikkel

Foredrag

Screencasts

Sideprosjekter

Light Table

Etter å ha vært en ivrig bruker av Light Table i 1,5 år, bestemte jeg meg sommeren 2015 til å ta steget opp å joine opensource teamet til Light Table for å forsøke å gjenopplive prosjektet. Det er nok å ta tak i for å si det sånn !

Bidrag til fri programvare

Prosjekter

Mercell
Kotlin, TypeScript, Kafka, Amazon Web Services (AWS) og DynamoDB

Mercell er en av de ledende aktørerne i Europa innen anbudsformidling. De har en offensiv vekststrategi og har gjennom flere oppkjøp vokst fort de siste par årene. Mercell er i ferd med å lage en ny felles plattform for leverandører. I starten av vårt prosjekt identifiserte vi vha analyser og brukerundersøkelser at det i dag fantes et gap i tjenestetilbudet for leverandører.

Vårt oppdrag var å utvikle en tjeneste som gir en totaloversikt over en leverandørs pågående anbudsprosesser. Vi skulle også utvikle tjenester som gir mulighet for leverandører til samarbeid og samhandling i fasene for evaluering av anbud og innlevering av tilbud. Teamet vårt er et autonomt domeneteam og vi har stor frihet i valg av teknologi og arbeidsmetodikk. Vi har valgt en reactive inspirert arkitektur og benytter oss av Javalin/Kotlin på backend og React/Typescript på frontend. Kommunikasjon mellom backend og frontend skjer via Websockets (for lesing) og REST/commands (for skriving). På litt sikt vil våre tjenester splittes inn i mindre selvstendige komponenter også kjent som Micro Frontends. Integrasjon mot andre domener foregår ved bruk av Kafka. Brukerene skal sikres en sømløs brukerreise med integrasjon mot et felles autentiseringsløsning (i dag Auth0).

Rolle: Tech lead, utvikler og arkitekt

Norled
Clojure, ClojureScript, Datomic, DataScript og Amazon Web Services (AWS)

Utvikler nye informasjonssystemer for fergedrift for Norled.

Tomra
Java, Elm, JavaScript, TypeScript og GitLab

Tomra har pantemaskiner over hele verden. Disse samler inn store mengder informasjon samt krever administrasjon fra backoffice personell. Magnus jobbet med modernisering/omskriving av software for kommunikasjon mot pantemaskiner og foretok løpende vedlikehold av administrasjonsapplikasjoner. Han jobbet også med en POC for å modularisere administrasjonsapplikasjon ved å skille ut kampanjerelatert funksjonalitet. I POC’en brukte vi Elm på frontend og REST endepunkter på backend.

Se flere prosjekter

Referanser

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»

Se flere referanser