Stian koder NRKs valgkamp-dekning

Ukas Koder Stian Veum Møllersen, kjent fra Kortslutning og BartJS, forteller om en hektisk hverdag.

"Bilde av meg underveis i et foredrag på Scotland JS fra i fjor sommer" skriver Stian Veum Møllersen. 📸: Privat
"Bilde av meg underveis i et foredrag på Scotland JS fra i fjor sommer" skriver Stian Veum Møllersen. 📸: PrivatVis mer

Hvordan begynte du med koding? 👶

Mitt første møte med programmering var på slutten av barneskola, i et program som het Games Factory 2. Der hadde du et grafisk grensesnitt for å sette opp hva som skulle skje når det skjedde ting som kollisjoner eller tastetrykk. Var ikke bevist på at jeg drev med programmering da, men i ettertid så ser jeg en ganske klar likhet til mer moderne fenomener som Scratch

Senere, etterhvert som internett begynte å bli populært og tilgjengelig, var det GeoCities som gjaldt. Derfra var veien kort til Frontpage og DreamWeaver, og videre til HTML. Fortsatt ingen bevissthet rundt det at jeg drev med programmering, det var mer leketøy og moro. Litt som penn og papir, bare med datamaskinen i steden.

Første gang jeg var bevisst på at jeg drev med programmering var når jeg fikk tak i Lego Mindstorms. Litt tilfeldig var dette rundt samme tid ble bredbånd dagligdags, og en helt ny verden av online gaming åpna seg. Så interessen for programmering ble overskygga før den var komme særlig godt i gang.

«Første gang jeg var bevisst på at jeg drev med programmering, var når jeg fikk tak i Lego Mindstorms.»

Søkte meg inn på Datateknikk på NTNU etter VGS, fordi det handla om datamaskiner og hadde bedre jobbutsikter enn arkeologi, som var andrevalget. Fikk fullstendig sjokk av Java i førsteklasse, og uten de bra folka jeg tilbrakte studietida med tror jeg at det hadde blitt med det ene året. Et spill-prosjekt i nevnte Java-fag fikk jeg mitt første møte med AI, den fascinasjonen varte studiene ut.

Siden AI ikke var like utbredt i 2012 som det er nå, var planen etter studiene å jobbe med Java i 40 år og så gå av med pensjon. Heldigvis ville livet det annerledes, og jeg snubla inn i webutvikling takket være mitt første oppdrag som konsulent. Den opplevelsen åpna øynene mine for brukergrensesnitt, design, HTML, CSS og JavaScript. Veien fra ide til kode til resultat ble plutselig veldig mye kortere, noe som definitivt hjalp meg med å finne tilbake til den kreative skapergleden fra barndommen.

Det er egentlig der jeg befinner meg i dag. Har en større verktøykasse og idebank, men det er fortsatt nysgjerrighet, utforskerglede og kreativt utløp som driver meg. Har ikke falt tilbake på ideen om å finne raskeste vei til pensjonstilværelsen enda.

"Midi-kontrolleren på bildet bruker jeg når jeg driver med generative systemer og kreativ kode. Enklere å styre parameterene direkte enn å rekompilere koden" skriver Stian Veum Møllersen. 📸: Privat
"Midi-kontrolleren på bildet bruker jeg når jeg driver med generative systemer og kreativ kode. Enklere å styre parameterene direkte enn å rekompilere koden" skriver Stian Veum Møllersen. 📸: Privat Vis mer

Hva jobber du med akkurat nå? 🛠️

Nå jobber jeg i NRK, i Teknologi, Produkt og Produksjonsdivisjonen (TPPD) i et team som heter Digital Historieutvikling. Digital Historieutvikling (eller DH som vi kaller det) er et team som jobber med å styrke digital historiefortelling i NRK, gjennom å pushe grenser for hva vi kan levere på digitale flater.

Det oppnår vi gjennom arbeid med spesialsaker og større redaksjonelle prosjekter som for eksempel valg eller store sportshendelser som Fotball-VM og OL. I disse arbeidene lager vi tekniske rigger som ligger på utsiden av det vanlige CMS-et til NRK, slik at vi får rom til å eksperimentere og teste nye ting. I tillegg tar vi de nyttigste teknikkene fra dette arbeidet og gjør dem tilgjengelige som verktøy alle journalistene i NRK kan benytte seg av.

Mitt nåværende prosjekt er NRKs dekning av valget til høsten på web. Der skjer det mye gøy og interessant. Akkurat nå jobber jeg med litt forskjellige ting relatert til det. Jeg bidrar i utvikling av grensesnittet til Valgomaten (Node.js backend, Preact frontend, med tung vekt på ytelse, tilgjengelighet og universell utforming). Jeg jobber sammen med journalister for å kvalitetsikre påstandene som blir presentert i Valgomaten (Python med pandas og seaborn for dataknaing og visualisering, litt Prolog for simulering og utforsking). Jeg jobber også med den grafiske profilen til valgdekninga til NRK, hvor jeg snekrer på et generativt system (se intervjuet med Kjetil Golid for et par uker siden) for å kunne lage randomisert og kontekst-sensitiv dekor til innhold på NRK.no.

Lokalene i NRK. "Pulten min er innerst i høyre hjørne" skriver Stian Veum Møllersen. 📸: Privat
Lokalene i NRK. "Pulten min er innerst i høyre hjørne" skriver Stian Veum Møllersen. 📸: Privat Vis mer

Hvordan ser en typisk arbeidsdag ut for deg? ☕

Jeg har veldig få typiske arbeidsdager føles det som. Utover et fast mandagsmøte i teamet og noen faste statusmøter med valg-prosjektet er det mye opp til hva som foregår rundtom. Det blir mange samtaler med de andre folka som er involvert i valg-prosjektet etterhvert som vi lager ting eller har behov for å dele informasjon. Valget er et ganske massivt prosjekt i NRK sammenheng, med folk fra nesten samtlige avdelinger involvert, så det er behov for en del kommunikasjon og møter.

Teamet jeg sitter i jobber med mange ulike prosjekter i paralell, så det hender jeg får bidra med litt synsing og spisskompetanse hvis behovet dukker opp. Ellers er det utrolig mye rart og interessant som skjer rundt i NRK. Folk er veldig flinke til å dele erfaring, opplevelser og anna nyttig inspirasjon.

Hva synes du er de mest spennende språkene, rammeverkene eller teknologiene akkurat nå? ✨

Det er utrolig fascinerende å studere språk med en godt gjennomtenkt design- eller problemløsingsfilosofi. Har hatt mye glede av å dykke ned i språk som Clojure, F#, StandardML, Scheme, Joy og Prolog. Desto mer et språk tvinger meg til å angripe problemstillinger på nye måter, desto mer glede får jeg igjen for tid brukt. På det siste punktet er det kanskje Joy og paradigmet Concatenative Programming som har hatt mest påvirkning på programmeringen min de siste årene. Det gikk så langt at jeg endte opp med å implementere mitt eget programmeringspråk for å utforske effekten av den programmeringstilen på programmatisk kunst i nettleseren.

Webben som plattform tar ganske naturlig opp en del av fokusen min, og det er ganske fornøyelig å følge med på hvordan utviklinga er der om dagen. Nettlesere blir stadig mer habile på grafikk og det åpner seg stadig nye muligheter for grafisk uttrykk. Vi får bedre støtte for eksisterende teknologi som SVG og WebGL, nye CSS-properties, og nye JS-API-er for ting som timeline animasjon (WebAnimationAPI) og paint-pipelinen (Houdini).

Rammeverk og biblioteker er flyktige greier, de kommer og går. Ofte sterkt knytta til en bestemt problemstilling eller et sett med forutsetninger som ikke alltid er så godt kommunisert. Det blir mange variasjoner over samme tema, spesielt siden vi utviklere har en tendens til å tenke at vår egen problemforståelse gjelder generelt. Fordelen med rammeverk og biblioteker er at de gir en god boost til produktivitet når problemstillingene overlapper, ulempen er at de ikke er så veldig interessante å dvele ved siden problemstillinger endrer seg ganske ofte. Det er sjeldent et bibliotek eller rammeverk endrer tilnærmingen til problemløsing like mye som et programmeringspråk eller åpner like mange muligheter som en plattform.

Hva er du mest stolt av å ha laget? 🏆

Av konkrete teknologiske ting jeg har laga er det språket Ait jeg er mest stolt av. Det er definitivt det prosjektet jeg har lagt igjen mest av meg selv i. Teknologien bak er ikke spesielt imponerende eller interessant, men resultatet er akkurat passende tankevekkende og utenom det vanlige.

Jeg har vært involvert i utrolig mange gøyale og kule prosjekter gjennom mine år som utvikler. Det artigste og mest kreative jeg har vært med på, var et kunstprosjekt med navnet Pushwagnesizer. Det hadde som mål å koble sammen det digitale og det fysiske i en hyllest av Pushwagner og ble laget av Bekk til European Design Festival 2018 i Oslo. Hele det prosjektet er ganske godt beskrevet på bloggen til Bekk.

Ellers er jeg veldig stolt over å ha vært med å starte opp BartJS meetupen i Trondheim, sammen med Mikael Brevik. Etter at jeg flytta til Oslo i 2015 har Mikael, med gode hjelpere, grodd den videre til å bli et ganske aktivt community på Slack og en populær podcast. Det har vært veldig gøy å følge med på alt det gøyale de finner på fra sidelinja.

Siden vi er inne på podcast, er jeg også ganske fornøyd med hva Kortslutning har blitt. At folk faktisk hører på og kommer med innspill og tilbakemeldinger er utrolig gøy.

Hva er det vanskeligste ved å være utvikler? 🤷

Sørge for at alle som jobber med en problemstilling, jobber med samme problemstilling. Hvilke abstraksjoner og operasjoner bruker vi for å modellere problemdomenet i kode? Stemmer den modellen overens med forståelsen av domenet i teamet/organisasjonen? Hva med brukerens forståelse av domenet? Er modellen den samme på tvers av kodebasen? Hva med på tvers av systemer eller over integrasjonspunkter?

«Er modellen den samme på tvers av kodebasen?»

Det er så mange kjipe utfordringer i en utviklingsprosess som kan spores tilbake til divergerende modeller og ulik forståelse av samme problemstilling. Som bransje har vi en tendens til å prøve å kaste så mye teknologi og prosess vi kan på problemet, til det går over av seg selv eller løsningen blir så rigid at det ikke er rom for endring.

Hvis vi isteden anerkjenner at det er mennesker, med all den irasjonalitet og tvetydighet som følger med, som driver med programmering og tar noen hint fra humaniora om hvordan vi kan kommunisere bedre, så har jeg trua på at ting kan bli bedre.

Hva synes du norske utviklere bør bli flinkere på? 🙋

Dette henger litt sammen med forrige spørsmål. Vi hadde hatt veldig godt av, som bransje, å anerkjenne andre fagdisipliners rolle i systemutvikling. Spesielt de som har gode mellommenneskelige egenskaper blir ofte ikke satt pris på og bidragene de har til god team atmosfære og kommunikasjon blir avfeid som underordna teknologiske bidrag.

Dette er en ganske voksen bestilling, som involverer store systemiske endringer i teknologibransjen, men vi kan starte med noen små steg i riktig retning. Koden vi jobber med er det nærmeste for mange, og her er det mange muligheter til å få bedre innsikt i mennesklige problemstillinger. Hva kommuniserer vi til andre utviklere (og våre fremtidige selv) gjennom koden vi skriver? Har vi gjort rede for antagelsene vi har gjort? Hva har vi tatt for gitt? Hvilke metaforer lener vi oss på?

Når du begynner å tenke langs disse linjene skal det godt gjøres å ikke få respekt for hvor mye kommunikasjon og mellommenneskelige egenskaper har å si for hvor effektivt vi kan jobbe.

Hva liker du å gjøre når du ikke jobber? 🕹️

Jeg er fan av rekreasjonell programmering. Har vært inne på kreativ programmering et par ganger tidligere i intervjuet, det er gjerne noe relatert til det jeg driver med når jeg programmerer på fritiden. Det er ålreit å få utløp for kreative impulser i et medium jeg trives med.

Den allerede nevnte podcasten Kortslutning tar en ganske beskjeden del av fritiden min. Har veldig mye moro sammen med min medsammensvorne Mikael når vi lager nye episoder. Holder gjerne noen foredrag i løpet av et år, som også tar opp fritid i perioder.

«Det er mange interessante paraleller mellom matlaging og programmering.»

Ellers er jeg også glad i å lage mat. I tillegg til å være enda et medium jeg kan være kreativ i, er det også mange interessante paraleller mellom matlaging og programmering. Begge feltene har mange etablerte regler og beste praksis som ikke alltid er så godt forklart eller begrunna. Det er gøy å pirke litt borti sånt for å finne ut hvorfor ting er som de er.

Når jeg skal koble skikkelig av foretrekker jeg opplevelser fremfor avslapping. Det går mye i konserter og musikk-relatert moro. En skogtur med telt/hengekøye eller en tur til et eller annet gøyalt og annerledes sted i verden (helst et sted jeg kan kjøre tog) i ny og ne, for å bryte opp hverdagen litt.