Magnus Rundberget

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.

Favoritter for tiden: Elm, Haskell, Clojure, ClojureScript og Figwheel
Bruker på jobben: Clojure, Reframe, Docker, Python og ClojureScript
Vil lære mer: Elm, Rust, Haskell, Idris og Kubernetes

Magnus' anbefalinger

Inventing on principle

Fantastisk foredrag av Brett 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

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 …

Screencasts

Elm package docs preview in Light Table

Screencast som demonstrerer forhåndsvisning av pakke dokumentasjon for Elm i Light Table. Se videoene.

Managing and diagramming elm packages with d3 in Light Table

Screencast hvor jeg demonstrerer avhengighetshåndtering og viser avhengighetsgraf (laget med d3) for min Elm Light Table plugin. Se videoene.

Elm plugin for Light Table

Screencast som demonstrerer første versjon av min elm plugin for Light Table Se videoene.

A pinch of Clojure love to Light Table

Screencast som demonstrerer kule features i min Light Table refactoring plugin Se videoene.

Clojure refactoring in Light Table

Screencast som demonstrerer litt av min Light Table refactoring plugin Se videoene.

The Groovy Light Table Plugin

Screencast om bruk av Groovy og Gradle i Light Table Se videoene.

Creating and Using Snippets in Light Table

Screencast som viser hvordan lage og bruke snippets i LightTable med lt-snippets Se videoene.

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

Screencast med demo av dashboard og autotest features for LightTable InstaBuster Se videoene.

InstaBuster: JavaScript testing with LightTable & Buster.JS

Screencast med en kort introduksjon til LightTable InstaBuster Se videoene.

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 ! Light Table på Github

Magnus' bloggposter

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 samt litt historie om hvordan biblioteket ble til. Les posten

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

I min blogserie om å lage en CRUD applikasjon i Elm og Haskell har tiden kommer for å oppgradere Elm koden til versjon 0.18. Mye av oppgraderingen denne gangen kunne automatiseres vha verktøy fra Elm Community. Resten av endringene var relativt mekaniske. Posten går relativt detaljert til verks med å sammelikne forskjellene mellom 0.17 og 0.18. Les posten

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

For å kunne tilby enda mer avansert Elm støtte i Light Table har jeg implementert en hjemmesnekret AST vha peg.js. Dette har gitt vesentlig forbedret autocomplete og endel hendige refactor relaterte funksjoner. Les posten

Magnus' foredrag

Elm - Awesomesauce or just yet another language for the frontend

Elm er kanskje et av de mest spennende språkene og platformene for å lage solide, raske og vedlikeholdbare web frontends. I dette fordraget får du en liten smakebit av fordelene med funksjonell programmering (med typer) i Elm. Du får også en innføring i hvordan Elm er mere enn bare et språk. Språket, plattformen og arkitekturen promoterer en ny måte å tenke på som virkelig fanger ens oppmerksomhet. Foredraget består av noen få slides og en solid dose med live-coding ! Se video

Functional Frontends with Elm

Lyntale hvor jeg lager en enkel Chat klient med Elm

Functional Reactive Programming for the Web using Elm

I dette foredraget får du en oversikt over hvordan Elm omfavner Funksjonell Reaktive Programmering vha signaler (verdier som endrer seg over tid). Du vil lære litt om Elm platformen og arkitekturen for en typisk Elm applikasjon. Live koding står også på blokka ! Se video

Gradle - Det er faktisk ditt bygg

Mange klamrer seg fortsatt til illusjonen at alle bygg er (nesten) helt like. Det stemmer kanskje i knøtteligaen, men i litt større organisasjoner finner man alltid spesielle krav til bygge/leveranseprosessene. Det virker logisk å velge et byggeverktøy som er svært fleksibelt og samtidig er basert på konvensjoner. Det verktøyet heter Gradle. Se video

Open source

Elm

  • Utviklet Elm Bootstrap. Elm bibliotek for å lage responsive webapplikasjoner med Twitter Bootstrap 4.
  • Utviklet Elm Light Table Plugin. Light Table plugin for Elm. Syntax-highlighting, repl/inline eval, elm reactor integrasjon mm
  • Har bidratt til node-test-runner.

Clojure

  • Utviklet rewrite-cljs. ClojureScript port av rewrite-clj. Bibliotek for traversering og omskriving av Clojure/ClojureScript/EDN- kode
  • Har bidratt til buddy-auth.

Light Table

  • Utviklet Clj-Light-Refactor. Plugin som gir Clojure refactoring support til Light Table
  • Utviklet AsciiLight. Light Table plugin for live-edit visning av Asiidoctor dokumenter
  • Utviklet lt-snippets. Snippet/templates plugin for Light Table
  • Utviklet LightTable InstaBuster. Light Table plugin for BusterJS
  • Utviklet LightTable-Groovy. Groovy plugin for Light Table. Steg 1 er å lage et langt bedre Groovy Console. Steg 2 er helt åpent. Sky’s the limit!

Groovy

Prosjekter

Protector Forsikring 2018-

Videreutvikling og forbedring av portalløsning for self-service på forsikringsprodukter fra Protector. Portalen er implementer som en SPA med REST integrasjoner mot kjernesystemene. Oppgaver: Utvikling av ny funksjonalitet, teknologievaluering, mentoring på moderne funksjonell utvikling og rådgiving ifm. innføring av SCRUM/smidig prinsipper.

(Konfidensielt) 2018

Utvikling av nytt spillkonsept knyttet til Dart.

Oiiku 2017

Utvikling av bordplasseringsmodul til Event håndteringssystem. Bordplasseringen skulle kunne effektiv plassere 1000vis av deltakere effektivt samt balansere diverse konfigurerbare kriterier. Oppgaver: Utvikling av backend tjenester og integrasjon mot kjernemoduler i eventsystemet. Finne best mulig løsning for å løse det NP komplette problemet å automatisk best mulig plassere tusenvis av deltakere på tvers av hundrevis av bord.

Aprila Bank 2017

Utvikling av tjenster/produkter for ny B2B bank. Startup som har som mål å tilby banktjenester til små og mellomstore bedrifter på en helt ny og spennend måte. Oppgaver: Integrasjon mot diverse 3.parts løsninger, etablering av mikrotjenster, teknologievalueringer, frontend utvikling, automatisert testing mm.

Animalia - Dyrehelseportalen 2016

Utvikling av applikasjon til veterinærer og produsenter for registrering av medisinering og helserelatert informasjon. Prosjektet er en omskrivning/nyutvikling av en eksisterende applikasjon til en moderne responsiv webapplikasjon. Første versjon av ny applikasjon gikk i produksjon i Januar 2017 og er nå under kontinuerlig videreutvikling. Oppgaver: Analyse, design og full-stack utvikling av en mikrotjeneste-basert arkitektur med flere sluttbruker-applikasjoner.

Animalia - Vedlikehold og videreutvikling 2015

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

Animalia - Helsegris 2014

Utvikling av ny applikasjon for oppfølging av dyrehelse for griser. Det er også et mål for prosjektet å lage endel gjenbrukbare tjenester. Oppgaver: Utvikling, mentoring og veiledning på utvikling av tjenestearkitekturer.

Animalia - Sauekontrollen 2013

Full-stack utvikling i Grails. Prosjektekspert på JavaScript/TDD og provisjonering (Ansible).

Animalia - Storfekjøttkontrollen 2012

Animalia er et fagmiljø for kjøtt og eggbransen. Animalia tilbyr verdikjedesystemer til bønder og deres rådgivere. Man har en klar strategi om å tilby gode og moderne selvbetjeningsløsninger på web. Magnus er leid inn for å hjelpe til med transformasjon og utvidelsen av eksisterende systemer til moderne web-teknologi basert på Java-platformen. Oppgaver: Utvikling av frontend og backend for nytt system. Mentoring i smidig utvikling. Mentoring av fastansatte/nyansatte i moderne systemutvikling.

Storebrand Aktuarsystemer 2011

Storebrand Aktuarsystemer er et datterselskap i Storebrand konsernet. De har utviklet et pensjonskassesystem som håndterer pensjonskasser for store norske kunder. Man har et stadig økende behov for å utvikle ny funksjonalitet i et raskere tempo. Samtidig har man også opparbeidet endel teknisk gjeld. Magnus er leid inn i første rekke som seniorutvikler på java delen av løsningen. Oppgaver: Utvikling av ny funksjonalitet i Java, Pl/SQL og noe .Net. SCRUM mentoring og mentoring på best practices innen systemutvikling generelt. Forbedring av eksisterende utviklingsprosess, bistand med innføring av nye produktive verktøy og disipliner.

Forsvaret FLO/IKT 2010

FLO/IKT holder for tiden på med en svært omfattende SOA implementering. En av utfordringene i forsvaret er at man har mange nettverk med lav båndbredde og/eller ustabile forbindelser. Man er derfor i gang med å utvikle en proxy basert løsning for å håndtere webservice kall også i denne type nettverk. Denne løsningen ser man for seg vi bli en viktig komponent i SOA arkitekturen. Oppgaver: Basert på en spesifikasjon og referansemplementasjon fra Forsvaret forskningsinstitutt var Magnus sin oppgave å lage en produkuksjonsklar første versjon som skal integreres i SOA arkitekturen.

Telenor Mobil 2009

Oppgradering av mellomvareplattform (COS). Oppgradering av Java4-Java6, weblogic8-weblogic10 og maven1-gradle. Oppgaver: Scrum assistanse, Utvikling av webservices, porting av biblioteker, weblogic konfigurasjon, ytelsestesting, byggesystem analyse og migrering.

Forsvaret FLO/IKT 2008-2009

Modernisering av fagapplikasjoner for dokumenthåndtering/rapporthåndtering til Web 2.0. Oppgaver: Kravstyring, Arkitekturevaluering, Utvikling på alle applikasjonslag, ytelsestesting, mentoring.

Se flere prosjekter i Magnus' CV

Magnus' 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


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


Magnus Rundberget

Systemutvikler
+47 928 83 365
magnus@kodemaker.no