nrk.no

Høydepunkter fra NDC 2014, del 2

Kategori: Dev


I del 1 av vår todelte artikkelserie presenterte vi noen høydepunkter fra årets Norwegian Developers Conference. I dag fortsetter vi med synspunkter fra flere av utviklerne våre.

What the Func?

John Korsnes (@johnkors), utvikler på tv.nrk.no

.NET-utviklere har i de senere år fått erfare Microsofts forsøk på å levere smidig gjennom hyppigere utrulling av .NET-økosystemet. Microsoft ønsker å modularisere .NET i mye større grad enn det er idag, så utviklere ikke trenger vente unødvendig på store releaser. Microsoft har trolig skjønt at utviklere er utålmodige sjeler, og mange av dem begynner å se på mer moderne plattformer utenfor .NET.

Microsofts svar er å løskoble moduler i det store .NET-rammeverket. I presentasjonen OWIN and Katana: What the Func? tar Brock Allen for seg OWIN og Katana. Gjennom OWIN-standarden forsøker Microsoft å få til en hosting modell som minner mye om hvordan man gjør det i Node.js. Med Node og NPM kan utviklere legge til mindre moduler etter behov. Dette står i sterk kontrast til et standard ASP.NET-prosjekt som har mange unødvendige avhengigheter til .NET, og som kjører kode du aldri har behov for. Katana er Microsofts egen implementasjon av OWIN-standarden.

I samme ånd så jeg et foredrag kalt Beyond NuGet: Front End Package Management with Bower. I dag har web-utviklere et mangfold av verktøy for å gjøre bygg- og utrullingsprosesser så smidige som mulig. En del av prosessen er å legge til eksterne avhengigheter på både klient- og serversiden. På serversiden har vi lenge håndtert dette spesifikt for hver platform ved hjelp av verktøy som NuGet (.NET), RubyGems+Bundler (Ruby) og NPM (Node.js).

beyond-nuget

I presentasjonen diskuterer Anthonoy van der Hoorn hvorfor klientsidebibliotek ikke bør hentes fra serverside pakkesystemet NuGet og hvorfor Bower er et bedre alternativ. Et av mange gode poeng er at det ofte er uoffisielle pakker på NuGet.org, og de ikke holdes oppdatert. I motsetning til NuGet/NPM har ikke Bower et eget pakke-repository, men lenker dine avhengigheter direkte til kildekoden som oftest finnes på GitHub. Slik sikrer man seg at man alltid får de nyeste versjonene og at det kommer direkte fra forfatteren av biblioteket. 

Domenemodellering i F#

Erlend Wiig (@ErlendW), utvikler på tv.nrk.no

Jeg var på et par interessante foredrag med Scott Wlaschin. Ikke bare er foredragene hans godt presentert og interessante, men den merkelige, dårlige humoren hans gjør han til en personlig favoritt fra NDC i år. Foredraget jeg var på het «Domain modelling with the F# type system» og handlet om hvordan man ved compile-time kunne designe typer som gir en mer presis definisjon av de konseptene appen din bruker.

Eksempelet han brukte var den gode gamle epost-adressen. Wlaschin argumenterer for at i stedet for å representere epost som en enkel string med påklistret valideringslogikk, er det bedre å lage en epost-type som det er umulig å sette til feil verdi. Hvis man tenker litt lenger på hva konseptene i apper egentlig representerer istedet for å bare bruke en int eller string overalt, vil man få et mer robust system.

func-programming-is-unfamiliar

For å få til dette viste Wlaschin hvor enkelt det er å lage nye typer i F#, det er mer eller mindre 1 linje kode. Dette er imponerende enkelt sammenlignet med staffasjen du trenger for å lage klasser i C#. Metoden for å lage typer gjør det enklere for utviklere å lage kraftige typesystem for sine domener. Foredraget ligger tilgjengelig her.

Advanced TDD: The Transformation Priority Premise

Harald Quist, utvikler på nrk.no/sport

Det er fullt i lokalet når Robert C. Martin, også kjent som Uncle Bob, begynner sin sesjon med en av sine obligatoriske og alltid like interessante vitenskapelige anekdoter. Denne gang om jordens alder og livet på jorden. Når den totalt urelaterte innledningen avsluttes går han videre med å spørre hvor mange i publikum som driver med testdrevet utvikling (TDD). De fleste reiser opp hånden. Uncle Bob smiler lurt, og går videre med å utbrodere den egentlig definisjonen av TDD, der det ikke er lov å skrive en eneste linje produksjonskode uten å først skrive en feilende test. «Hvor mange bedriver TDD» spør han på nytt. Svært få rekker opp hånden.

Faktum er alikevel at TDD er noe de fleste mener de gjør. Jeg er en av disse. Det er fortsatt ting jeg sliter med når det gjelder rød-grønn-refaktoreringssyklusen, og jeg syns fortsatt det er vanskelig å ikke skrive for mye kode innenfor hver syklus. Det er her The Transformation Priority Premise kommer inn i bildet.

Uncle Bob definerer transformasjoner som simple operasjoner som endrer kodens oppførsel. Transformasjoner kan sees på som motparten til refaktoreringer. Refaktoreringer er simple operasjoner som endrer kodens struktur, men ikke oppførsel. En transformasjon kan f.eks. være at gå fra en konstant til en variabel, eller fra en «if» til en «while». Uncle Bob har rangert transformasjonene i en prioritert liste, og mener typen transformasjon kan si noe om hvordan vi skal skrive testene våre. Man skal nå prøve å skrive en test slik at den kan bli grønn gjennom å velge en høyere transformasjon (men fortsatt så lav som mulig). Dersom en implementasjon krever en lavere transformasjon, ta et steg tilbake og se om det finnes en enklere test.

Uncle Bob kommer med mange gode ideer, men om dette skal bli tatt i bruk kreves det nok at The Transformation Priority Premise blir formalisert og ikke bare en artikkel på en blogg. Uansett om dette blir virkelighet så tror jeg at Uncle Bob’s ideer kan være til hjelp når man skriver tester.

Flere godbiter

Som du sikkert har forstått av denne lille artikkelserien ligger det aller meste fra NDC på Vimeo. Her er det timesvis med mer eller mindre bra materiale å boltre seg i.

I kommentarfeltet til del 1 anbefalte «Ole K.» foredraget «How I hacked my way to Norway» av Troy Hunt. En skikkelig karamell det er verdt å sette av en time for å få med seg. Jan Sølve Borlaug trakk fram «Free is a Lie» ved sluggeren Aral Balkan (@aral). En talk som på en voksen måte tar for seg begrepet vi alle har hørt, men fortsetter å ignorere: «If You’re Not Paying For It, You Become The Product».

Har du funnet en personlig favoritt vi ikke har nevnt her? Del det gjerne med oss. Vi snakkes i kommentarfeltet.

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.