Profilbilde av Magnus Rundberget

Magnus' bloggposter

Se profil

2025

Constraint Solvers og utfordrende planlegging

26.02.2025

Kotlin og Constraint programming

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?

Les artikkel

2024

Moro med trær og glidlåser

27.08.2024

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!

Les artikkel

2023

Snasen rutehåndtering i Kotlin med Arrow.kt

29.11.2023

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.

Les artikkel
Deklarativ validering av json i TypeScript

15.03.2023

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.

Les artikkel

2021

Lage ditt eget websocket-bibliotek som en tilstandsmaskin?

11.02.2021

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

2020

Clojure zippers - snasen traversering og manipulering av trær

13.05.2020

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

2019

CSS animasjoner i ClojureScript - Del 1: CLJSS

16.10.2019

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
Elm Light 0.4.0 - AST driven Elm features in Light Table using PEG.js

15.09.2019

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 artikkel

2017

Introducing Elm Bootstrap

01.03.2017

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 artikkel

2016

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

21.11.2016

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 artikkel
Oh no! Learning Elm has gotten me confused about static vs dynamic typing.

13.06.2016

Etter lenge å ha vært overbevist om at dynamisk typing var det eneste saliggjørende reflekterer jeg over min gryende tvil etter å ha brukt en solid dose tid på å sette meg inn i statisk typede funksjonelle språk.

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

30.05.2016

I min blogserie om å lage en CRUD applikasjon i Elm og Haskell har tiden kommer for å oppgradere Elm koden til versjon 0.17. Ting har på overflaten endret seg dramatisk siden 0.16, men en strukutert gjennomgang av prosessen viser at de fleste endringene er trivielle og sluttresultat er unektelig bedre enn forrige versjon.

Les artikkel
Elm Maybe - Dealing with null/Nothing

16.04.2016

Tony Hoare ansees som mannen som fant opp null reference. Han kaller det sitt billion dollar mistake. I Elm har man ikke null og de problemene det medfører. I stedet bruker man en eksplisitt type man kaller Maybe (noen språk kaller det Option). I denne blogposten tar jeg for meg hvordan det er å jobbe med Maybe verdier og sammenligner litt med JavaScript. Det er ikke mange gode unnskyldninger for å ta med null i ett nytt språk, men enda så skjer det med nye språk som blir laget den dag i dag. Forstå det den som kan.

Les artikkel
Elm and ClojureScript joining forces in the elm-light plugin

14.03.2016

Jeg tenkte det måtte være kult å se om man kunne få Elm og ClojureScript til å spille sammen i Light Table. I denne blogposten forklarer jeg hvordan jeg implementerte en Modul utforsker vha både Elm og ClojureScript

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

01.03.2016

Blogserie som omhandler min ferd for å lære meg statiske sterkt typed funksjonelle språk. Tiden har 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

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

19.01.2016

Blogserie som omhandler min ferd for å lære meg statiske sterkt typed funksjonelle språk. I denne episoden implementerer jeg routing i Elm frontenden

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

14.01.2016

Blogserie som omhandler min ferd for å lære meg statiske sterkt typed funksjonelle språk. I denne episoden implementerer jeg persistens vha en god gammeldags relasjonsdatabase

Les artikkel

2015

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

28.12.2015

Blogserie som omhandler min ferd for å lære meg statiske sterkt typed funksjonelle språk. I serien tar jeg for meg utvikling av en CRUD applikasjon med Elm til frontend og Haskell for backend. Førte episode tar for seg en spike for å få en helt enkel basis på plass.

Les artikkel
Minesweeper - a brief journey from JavaScript/React to Elm

10.11.2015

Jeg tar utgangspunkt i en minesveiper implementasjon fra Christian Johansen i JavaScript/React og hviser hvordan man kan implementere det samme spillet i Elm. Bloggposten sammenligner flere implementasjonsdetajer og reflekterer kort om statisk vs. dynamisk typing.

Les artikkel
ClojureScript - Performance tuning rewrite-cljs

04.08.2015

Rewrite-cljs er mitt bibliotek for å traversere og omskrive clojure/clojurescript kode. I denne blogposten forteller jeg litt om hvordan jeg tunet ytelsen bl.a ved å komme nærmere jernet (JavaScript)

Les artikkel
Showcasing rewrite-cljs - Parembrace for Light Table

12.06.2015

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

Les artikkel
Implementing a Clojure ns-browser in Light Table with React

22.04.2015

Buzzword compliant post om hvordan man elegant kan bruke React.JS for implementering av view-logikk i Light Table. Posten går også i dybden på den grunnleggende arkiteturen i Light Table

Les artikkel
Taming those pesky datetimes in a clojure stack

27.03.2015

En liten erfaringsrapport med tips og triks for hvordan håndtere datoer i Clojure/ClojureScript i en tjeneste/lagdelt arkitektur

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

25.03.2015

En blogserie hvor jeg ser på autentisering og autorisasjon i en clojure microservices arkitektur med bruk av Buddy. I del 4 ser vi på hvordan vi kan sikre en service app basert som benytter REST-biblioteket Liberator

Les artikkel
Implementing a Clojure threading refactoring in ClojureScript using Light Table

16.03.2015

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

Les artikkel
Securing Clojure Microservices using buddy - Part 3: Token revocation

15.02.2015

En blogserie hvor jeg ser på autentisering og autorisasjon i en clojure microservices arkitektur med bruk av Buddy. I del 3 ser vi på mulige løsninger for å trekke tilbake tokens vha refresh tokens

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

02.02.2015

En blogserie hvor jeg ser på autentisering og autorisasjon i en clojure microservices arkitektur med bruk av Buddy. Del 2 handler om å bruk av tokens og cookies for autentisering og autorisasjon i en clojure web applikasjon.

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

27.01.2015

En blogserie hvor jeg ser på autentisering og autorisasjon i en clojure microservices arkitektur med bruk av Buddy. Del 1 handler om å lage en service som generer signerte tokens for bruk i autentisering og autorisasjon.

Les artikkel
Bootifying my ring app

19.01.2015

Clojure og Boot

[Boot.clj] (https://github.com/boot-clj/boot) er et spennende alternative til Leiningen for bygging av clojure applikasjoner. Jeg deler noen erfaringer med bruk av Boot.clj i et clojure ring prosjekt

Les artikkel

2014

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

18.06.2014

Del 5 i en blog serie hvor jeg beskriver stegene jeg tar for å forsøke å lage en dugandes Groovy plugin for Light Table. Del 5 kombinerer det rike api’et i Gradle og fleksibiliteten i Light Table til å vise dependency grafer vha D3. Kule greier !

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

26.05.2014

Del 4 i en blog serie hvor jeg beskriver stegene jeg tar for å forsøke å lage en dugandes Groovy plugin for Light Table. Del 4 handler om implementasjon av Gradle støtte for uthenting og bruk av classpath, samt opplisting og eksevkvering av tasks

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

14.05.2014

Del 3 i en blog serie hvor jeg beskriver stegene jeg tar for å forsøke å lage en dugandes Groovy plugin for Light Table. Del 3 handler om noen små forbedringer for å gi en REPL lignende opplevelse med Groovy.

Les artikkel
A Groovy Light Table client - Step 2: Evaluating Code

23.02.2014

Del 2 i en blog serie hvor jeg beskriver stegene jeg tar for å forsøke å lage en dugandes Groovy plugin for Light Table. Del 2 handler om hvordan jeg får evaluert Groovy kode og vist resultater inline i Light Table.

Les artikkel
A Groovy Light Table client - Step 1: Connecting the client

16.02.2014

Del 1 i en blog serie hvor jeg beskriver stegene jeg tar for å forsøke å lage en dugandes Groovy plugin for Light Table. I denne posten beskriver jeg hvordan jeg kobler opp Light Table til en Groovy klient-prosess.

Les artikkel
Getting my feet wet with Clojure using Light Table

09.02.2014

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

Les artikkel

2013

A groovy infatuation growing

19.08.2013

Etter mange år med java begynte jeg så smått å bli litt lei. Det var jo mange andre språk på JVM plattformen der ute. Etter å ha jobbet med gradle en periode fikk jeg mer om mer sansen for Groovy.

Les artikkel
Javascript testing in your JVM projects using Gradle and BusterJS

19.08.2013

Gradle, JavaScript og Buster.JS

Hadde det ikke vært kjekt om du kunne inkludert javascript testing som en del av CI for JVM prosjektet ditt ? Gradle Buster Plugin to the rescue !

Les artikkel