nrk.no

Høydepunkter fra NDC 2014, del 1

Kategori: Dev

Hans-Christian Holm legger ut om arkitekturen på yr.no. Foto: Bård Rolstad Henriksen

Konferansetid! Det deilige avbrekket hvor man får en pust i bakken fra den daglige bryggesjauingen og heller kan tilegne seg faglig påfyll i inspirerende omgivelser. Sammen med likesinnede utviklere fra fjern og nær klumper vi oss sammen i trange foredragssaler for å trekke inn tung luft og lett inspirasjon.

I år stilte NRK mannsterke på Norwegian Developers Conferance (NDC). Siden oppstarten i 2008 har NDC utviklet seg til å bli en av Norges største faglige møteplasser for utviklere fra hele landet. Konferansen ble i sin tid opprettet som et .Net-alternativ til JavaZone, men har siden den gang utviklet seg til å dekke et bredt fagfelt. Her kan du få ny kunnskap om det aller meste. Bortsett fra Java da.

Fra backend til frontend, fra funksjonelt til imperativt, fra smidig til selvutvikling – store fagområder er dekket hver eneste dag, og som deltager kan du velge og vrake i ni parallelle sesjoner. Noen ganger er det en pine å måtte velge mellom fem spennende tema, andre ganger er det vanskelig å velge blant ni på papiret uinteressante spor. Da kan det lønne seg å følge etter han kjendisdyrkende kollegaen din som kan navnet på alle de store kanonene og velge foredrag deretter.

Med så mange foredrag er det klin umulig å få med seg alt, og med forskjellige interessefelt har vi fra NRK fulgt mange forskjellige sesjoner. I denne todelte artikkelserien vil vi trekke frem noen av høydepunktene fra de tre dagene i Oslo Spektrum.

The improv effect

Silje Rosvoll (@siljerosvoll), prosessleder nrk.no

Som prosessleder i teamet som utvikler nrk.no gikk jeg for det meste på sesjoner som dreide seg om smidige team. Favoritten var «Agile Team Interactions Workshop» med Jessie Shternshus (Grunnlegger av The Improv Effect). Hun jobber til daglig med å veilede team i å finne løsninger og forbedre kommunikasjonen, for det meste ved hjelp av lek og praktiske øvelser. I sesjonen gjorde vi fem-seks øvelser, med fokus på hvordan vi kan bli bedre til å lytte, og gjøre hverandre bedre i teamet.

Fra sesjonen vil jeg gjerne anbefale følgende øvelse: Gå sammen to og to, og før en samtale, der den enes setning alltid må starte med samme bokstav som den andres setning slutter med.  Hva var vanskelig? Hvorfor? Gjør det samme igjen, men nå skal man tenke spesielt på å avlutte setningen sin på en bokstav som er lett for den andre å starte sin setning med. Hva gjør dette med samtalen? Hva kan dere lære av dette om hvordan dere snakker og lytter til hverandre til daglig?

Videoen under er en reklamefilm for kurset. Om du får muligheten bør du virkelig dra på dette.

Superdatamaskin i lomma

Bård Rolstad Henriksen, utvikler på yr.no

For oss i NRK som driver med presentasjon av været (Yr) er det en spennende tanke at alle går rundt med en superdatamaskin i lomma. Vi håper å en dag kunne utnytte denne rå maskinkraften til å lage ny kul funksjonalitet. Samtidig har webleserene blitt stadig flinkere til å utnytte maskinvaren. Med CSS3 har vi utviklere fått tilgang til å gjøre 3d-transformasjoner og transisjoner som nettleseren lar grafikkprosessoren  (GPU) ta seg av.

Å utnytte grafikkprosessoren som regnemaskin for å kjøre tunge beregninger har vært gjort før, men kun de nyeste nettleserne har hatt støtte for dette rett ut av boksen. I foredraget «Write massively-parallel GPU code for the browser with WebGL» ved Steven Sanderson (@StevenSanderson) fra Microsoft, fikk vi se hvordan man kan lage shadere og utnytte disse til å gjøre blant annet  fraktaler og bildegjennkjenning i sanntid i nettleseren. Spennende! Se sesjonen på Vimeo. 

I år var NRK også representert som foredragsholder! Hans-Christian Holm har jobbet på Yr-teamet i flere år. I foredraget viser Hans-Christian eksempler på funksjonelle teknikker og prinsipper vi har brukt på Yr. Dette er produksjonskode som har kjørt og kjører på www.yr.no i dag. Se Hans-Christians foredrag.

Hans-Christian Holm legger ut om arkitekturen på yr.no. Foto: Bård Rolstad Henriksen
Hans-Christian Holm legger ut om arkitekturen på yr.no. Foto: Bård Rolstad Henriksen

Funksjonell feilhåndtering

Øyvind Holmstad (@oholmstad), utvikler på tv.nrk.no

Funksjonell programmering har endelig begynt å bevege seg fra å være et moteord alle snakker om til å bli en teknologi vi faktisk tar i bruk. Jeg har selv dyppet tåa i den funksjonelle dammen i løpet av det siste året, men har mye å lære før jeg tør føre det opp som spesialitet på  LinkedIn-profilen min. Derfor prioriterte jeg mange funksjonelle foredrag på årets NDC, og det var blant disse jeg fant mine høydepunkter.

Togskinner som analogi? Hva i all verden er dette for noe?
Togskinner som analogi? Hva i all verden er dette for noe?

Et av disse var et foredrag av Scott Wlaschin, (@ScottWlaschin) en F#-evangelist som står bak en av de bedre introressursene til F# på nett. Evangelist er kanskje et litt for dramatisk ord, for her snakker vi om en gjennomsyret nøktern type som nærmest gjemmer seg bak talerstolen. Men førsteinntrykket som gjorde frempek til et blekt og kjedelig foredrag ble raskt gjort til skamme. Scott er en pedagogisk, konsis og veltalende kar som ikke overlater noe til tilfeldighetene.

Fokus i et av foredragene hans var på feilhåndtering i F#. Hvordan håndterer jeg feil i et språk som ikke kan returnere «nul»” og som fraråder meg fra å kaste exceptions? Scott løser problemet med noe han kaller Railway oriented programming, en måte å designe programmer på som utnytter «discriminated unions» til å skape en enkel flyt gjennom programmet. Jeg vet ikke om jeg noen gang vil benytte meg av paradigmet hans fullt ut, men den pedagogiske tilnærmingen med togskinner i sentrum gav meg stor innsikt i hvordan jeg kan løse lignende problemer jeg selv har støtt på i F#. Se sesjonen her.

Kan man drive med .Net utenfor Visual Studio?

Ståle Strømme (@staale), utvikler på tv.nrk.no

Siden .NET ble utgitt i 2002 har Visual Studio stort sett vært det eneste fornuftige valget for utvikling av applikasjoner. Det finnes flere alternativer der ute som MonoDevelop og SharpDevelop, men disse har bare prøvd å gjøre Visual Studio opplevelsen på tvers av platformer. Svein Arne Ackenhausen snakker i dette foredraget om noe helt annet. Nemlig OpenIDE.

OpenIDE er i et lite konsoll-basert program som hverken bryr seg om plattform eller språk. Det bygger på idéen bak hans andre prosjekter ContinousTests og AutoTest.NET. OpenIDE er helt modulbasert og ut av boksen er det nesten ikke mer enn et skall. Dette betyr at man selv kan velge bl.a. hvilke programmeringsspråk man vil bruke og hvilken tekst-editor man vil bruke. Ackenhausen presenterer i denne talken hvordan man bruker OpenIDE for å sette opp et .NET prosjekt og at det er mulig å ha en behagelig arbeidsflyt utenfor Visual Studio. Han viser også hvordan man lett kan utvide OpenIDE med egne pakker og skript. Se sesjonen her.

Flere høydepunkter i del 2

Ikke alle har fått sagt sitt, så vi kommer tilbake med flere høydare i det beste fra NDC del 2. Så du noe kult på årets NDC? Del gjerne dine høydepunkter i kommentarfeltet.

14 kommentarer

  1. Marianne Tallaksen

    Årets hallelujaforedrag for meg var «Banish your inner critic» av Denise Jacobs. Hvis dere ser meg innta en superhero-pose innimellom, så er det altså hennes verk..

    Svar på denne kommentaren

    • Øyvind Holmstad (NRK) (svar til Ole K)

      Helt enig, Ole K. Selv om innholdet ikke er revolusjonerende, var det kanskje det foredraget som var mest underholdende på hele konferansen. Anbefales.

  2. Kanskje litt i overkant spesifikt for de fleste som leser her, men talkene til Scott Hanselman er alltid bra. En god miks av faglig innhold (på NDC i år mest om next gen ASP.NET) og mye morro og pisspreik. Når jeg tenker på det, så er det kanskje det siste kvarteret *før* han begynner å prate som er det beste…

    Svar på denne kommentaren

    • Øyvind Holmstad (NRK) (svar til Arve Systad)

      Takk for innspill, Arve! Hanselman er jo nesten mer standup enn foredrag, morsom type.

      Det kommer til å bli flere «i overkant spesifikke» bloggposter her fremover. De oppmerksomme har kanskje lagt merke til at denne og andre artikler i dev-kategorien ikke dukker opp på forsiden. Det er fordi det er oss utviklere som får boltre oss fritt. Nå dukker vi fortsatt opp i både RSS- og Twitter-feeden til Beta, som gjør det litt vanskelig å skille dette fra en vanlig Beta-sak. Kanskje vi lager en egen Beta-dev feed og Twitter-konto etterhvert.

      Vi håper på å publisere mange dype, intrikate og kompliserte nerde-artikler fra NRKs indre utviklersirkel. Og så håper vi at dette er noe dere andre utviklere vil sette pris å lese 🙂

  3. Hans-Christian

    Obs. at F#-funksjoner kan returnere både CLR-null og «unit». Har ikke hørt at det er mer fraråda å kaste unntak/exceptions i F# enn i andre språk, men det er sikkert en god tanke. I tillegg til å kunne lage egendefinerte unntak på C#-måten, har F# har en egen F#-spesifikk måte å gjøre det på, så det kan i alle fall ikke sies at språket i seg sjøl er så veldig fiendtlig innstilt til unntak generelt. Mange fraråder å bruke try/catch & co. for programflyt, uavhengig av språk, og det Scott Wlaschin viser, er en reinslig måte å løse programflyten på. Det er snakk om en monade, men ordet er tabu på nettstedet hans (http://fsharpforfunandprofit.com/about/#banned).

    Svar på denne kommentaren

    • Erlend Wiig (NRK) (svar til Hans-Christian)

      Du har gode poenger her, exceptions er absolutt mulig på lik linje med null og andre konsepter vi kjenner fra C#. Mon tro skaperne har designet F# litt mer «diplomatisk» enn de kanskje ville ettersom full interoperabilitet med C# alltid var et av målene.

      I talken var det et premiss at bruk av Exceptions for å håndtere mer eller mindre forventede avvik i ideal programflyten ikke er tilrådelig.

    • Hans-Christian (svar til Erlend Wiig)

      Den F#-spesifikke varianten er en direkte arv fra OCaml:
      http://fsharpforfunandprofit.com/posts/exceptions/
      http://www2.lib.uchicago.edu/keith/ocaml-class/exceptions.html
      Interoperabiliteten er en bonus og en opplagt måte å implementere det på på CLR. http://stackoverflow.com/questions/10964851/clr-vs-ocaml-exception-overhead diskuterer F#- og OCaml-variantene, og interessant nok blir det sagt at unntak gjerne kan brukes til programflyt i OCaml. Ikke av ideologiske grunner, men fordi de er veldig effektive i OCaml.

    • det er forsåvidt en fullstendig avsporing fra «anbefalte» NDC ting, men om du leser over innlegget ditt engang til så ser du hvordan du nevner en haug med mekanismer som delvis er overlappende, men som man alikevel til stor grad må ta hensyn til.

      F# er «functional first», ergo skal man gå «functional first». De muligheter man har i ett funksjonellt språk bør benyttes, og man bør forsøke å unngå å gjøre imperative ting.

      Og om jeg da går i full sirkel og trekker tilbake til NDC igjen så har man jo akkurat ett foredrag om dette:
      http://vimeo.com/97519532

      Og sånn malapropos monader, F# kan benytte dette som funksjonellt språk, men det er computation expression som er svaret her og ikke monader. CE er mer enn monader. Og monader er faens vrangt å forstå. En ting å bruke det, men å faktisk forstå teorien++ er vondt og vrangt, så jeg sier ikke noe på at dette ikke skal nevnes. De fleste steder med F# ressurser forsøker å unngå begrepet monader, og de som gjør det gjør det som oftest Feil (TM).

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *. Les vår personvernserklæring for informasjon om hvilke data vi lagrer om deg som kommenterer.