DSC_6584
>

2018: En Spektrumodyssé

Bjørn Herve Moslet 
1. aug. 2018

På en konferanse som NDC prøver jeg å få med meg en blanding av ting som er nytt, nyttig, viktig, noe jeg må bli bedre på, noe jeg ønsker å jobbe med og selvfølgelig noe som er kult. I denne artikkelen oppsummerer jeg mine inntrykk og noen av foredragene jeg likte best.

NDC Oslo 2018

Norwegian Developers Conference Oslo ble avholdt for ellevte år på rad og Oslo Spektrum var nok en gang arena. Konferansen varte i fem dager, fra 11. til 15. juni. De to første dagene var reservert workshops, mens de tre siste hadde presentasjoner fordelt på ni rom og en mengde forskjellige tema og spor. Opptak av de fleste presentasjonene pleier å bli gjort tilgjengelig på NDC Conferences’ kanaler på YouTube og Vimeo en måneds tid etter konferansen.

Dagene går i ett fra morgen til kveld, bare avbrutt av en times lunsj midtveis. Matserveringen er dessuten åpen hele dagen slik at man aldri går sulten og kan planlegge sesjoner og pauser slik man selv vil. Onsdagskvelden var det tradisjonsrike rekecruiset på Oslofjorden og torsdagen ble avsluttet med fest. Da var det musikk, Pubconf, som er stand-up-komikk med noen av konferansetalerne, og masse tid til mingling.

NDC har forøvrig blitt et globalt fenomen, med konferanser i London, Sydney, Minnesota, København og Kongsberg.

Trendminator

Årets heteste trend var utvilsomt kunstig intelligens og det er også årsaken til at jeg har krydret teksten med sitater og dårlige ordspill fra filmer som omhandler AI. Fjorårets trend, serverless, var langt mindre representert i år.

Etter noen år på konferanser har jeg merket at nye teknologier ofte introduseres over en treårsperiode:

  1. Alt nytt og spennende, men ingen har særlig erfaring med emnet. De fleste presentasjonene er derfor på "hello world"-nivå.
  2. Året etter er det ganske stille og en kan lure på om det hele bare sa "Hasta la vista, baby". Det skjer noen ganger, som med Silverlight, men kan like gjerne være at man jobber med det og ikke har noe konkret å vise til ennå.
  3. I’ll be back. Nå er det igjen et oppsving i antall presentasjoner om temaet og denne gangen har man reelle erfaringer å vise til.

Om kunstig intelligens eller serverless følger denne syklusen gjenstår å se, men det er liten grunn til å mistenke at noen av disse teknologiene vil forsvinne med det første.

Under er en ordsky jeg har laget ut fra temaene på konferansen:

Ordsky NDC Oslo 2018

Som vi ser var Microsoft .NET største enkelttema også i år. Web og JavaScript, gjerne i forbindelse med nettskyen, er hva det meste dreier seg om nå. Mobil har havnet litt i bakleksa. DevOps har tatt over for smidig utvikling. Sikkerhet er et stort tema, og det er bra, men det er kanskje litt mer bekymringsfullt at etikk er nesten usynlig?

I'm completely operational, and all my circuits are functioning perfectly

Som nevnt var kunstig intelligens godt representert. Alt fra kognitive tjenester, som tale- og bildegjenkjenning gjennom ferdige APIer klare til konsum, digitale hjelpere som Google Assistant og Alexa, til maskinlæring som nevrale nettverk, genetiske algoritmer, data science osv. Jeg talte i farta 18 presentasjoner og workshoper om disse temaene og her var det noe for både nybegynnere og de mer erfarne.

AI var ikke hovedfokus for meg, men jeg prøvde likevel å få med meg litt om temaet. To presentasjoner jeg vil trekke frem er "A developers guide to Machine Learning" av Tess Ferrandez-Norlander og "Neural Networks: Where do I start?!?" Av Chase Aucoin. Begge ga en god innføring for de som er ukjent med temaet fra før. De hadde litt forskjellig vinkling, så det føltes ikke som overlapp, og begge hadde eksempler som var enkle å forstå (med henholdsvis det svenske boligmarkedet og kyr).

Programmeringsspråk

En utviklerkonferanse vil i stor grad handle om programmeringsspråk. Når tema er .NET så blir det naturlig nok mye C#. Microsoft har startet med punktutgivelser av C# (dvs. 7.0, 7.1, 7.2 osv.) for å kunne utvikle språket hurtigere enn tidligere. Siden de fleste brukergrensesnitt nå utvikles med webteknologi kommer man ikke utenom JavaScript som også var et stort tema. Det var også plass til C++, Python, F# og andre spennende språk på konferansen.

Fra objekt.Orientert

Keynoten "A Penny for Every Object" var ved dansken Mads Torgersen. Han er program manager for C# hos Microsoft. Mads tok for seg historien til objektorienterte programmeringsspråk fra 60-tallets Simula, via BETA, Smalltalk, Eiffel og til dagens C++, Java og C#. Simula var det første objektorienterte programmeringsspråket og ble utviklet ved Norsk Regnesentral av Kristen Nygaard og Ole-Johan Dahl.

En presentasjon jeg likte var "Kotlin for the curious" av Matt Ellis fra JetBrains. De er kjent for utviklerverktøy som Resharper, IntelliJ IDEA, TeamCity og Rider, men har også laget programmeringsspråket Kotlin. Det ble opprinnelig laget for å kjøre på JVM, men kan også kompilere til JavaScript og native kode. Plattformer for native er Windows, Linux, MacOS, iOS, Android og WebAssembly. For Android er Kotlin nå ett av tre offisielt støttede språk, sammen med Java og C++. Matt Ellis gikk gjennom så mange features som mulig på en time og det så ut til å være et stort løft for Java-utviklere. Kotlin har også forbedringer i forhold til C#. Det naturlige spørsmålet var dermed om Kotlin vil komme til .NET. Dessverre har ikke JetBrains noen planer om det.

=> funksjonelt

Funksjonell programmering hadde et eget spor med presentasjoner. En kan trygt si at konseptet er godt etablert. Naturlig nok så fikk Microsofts F# mest oppmerksomhet, inkludert en presentasjon fra skaperen av språket, Don Syme. Andre funksjonelle språk på konferansen var Fable (F# som transpileres til JavaScript), ClojureScript, Erlang og Elm.

Jeg vil trekke frem Venkat Subramaniam og hans presentasjon "Refactoring to Functional Style". Her demonstrerte han hvordan imperativ kode kan skrives om til funksjonell med relativt enkle grep. Eksemplene var i Java ved bruk av lambda-uttrykk, noe som ble introdusert i versjon 8. Sesjonen var ikke helt det jeg hadde håpet på; eksemplene var på algoritmenivå og ikke applikasjonsnivå. Sånn sett var nok presentasjonen nyttigere for Java-utviklere siden funksjonell programmering er ganske ferskt i det språket. C# har hatt LINQ og lambda-uttrykk i ti år allerede og jeg har inntrykk av at dette stort sett er kjent der.

Det var likevel en god presentasjon og Venkat har en unik stil. Alt skjer i et forrykende tempo, uten at man faller av lasset så lenge man følger med. Det er kun live koding og "slidene" er laget i editoren. Han sper også på med en passe dose humor som gjør ham veldig underholdende.

Noen timer senere holdt han presentasjonen "JavaScript the Cute Parts". JavaScript har blant mange et dårlig rykte, men de senere versjonene har fått mange nye muligheter som har gitt språket et løft. Noen eksempler han trakk frem var å bruke let og const i stedet for var, destrukturering av objekter og hvorfor bruke rest i stedet for arguments.

Hey, I don't believe that any system is totally secure

Sitatet over er fra filmen Wargames og er minst like sant i dag som i 1983. Det er derfor alltid verdt å få med seg noen sesjoner om sikkerhet på en konferanse. Selv om OWASP Top 10 ikke har forandret særlig på mange år (injections ligger fortsatt på topp) og det kan føles som om det er lite nytt å lære, så er det greit med en påminnelse og litt oppfriskning.

Når det er sagt så kom det tre nye innslag på topp 10 i 2017:

4. XML External Entities (XXE) - Sårbarheten kan utnyttes hvis en feilkonfigurert XML-tolker mottar spesielt utformet XML som kan avsløre konfidensielle data, forårsake tjenestenekt osv. Alle som mottar XML fra eksterne kilder bør se nærmere på dette punktet.
8. Insecure Deserialization - Serialisering av objekter kan være alt fra HTTP cookies og HTML forms til objekter sendt over RPC. Sårbarheten kan være litt vanskelig å utnytte, men fordi det kan lede til kodeeksekvering så er det desto mer alvorlig.
10. Insufficient Logging & Monitoring - Dette punktet er vel selvforklarende og det er grunn til å tro at dette ikke er noe som egentlig er nytt.

Selv om sikkerhetsutfordringene ikke endrer seg så mye, så er det viktig å ikke glemme sikkerheten når man tar i bruk mer eller mindre nye teknologier som .NET Core, mobilapper, skytjenester, serverless, mikrotjenester, IoT osv.

De to presentasjonene mange hadde som sine favoritter var "Hacking the Dark Web" av Einar Otto Stangvik om hvordan VG avslørte at verdens største overgrepsforum ble drevet av det australske politiet og "Everything is Cyber-broken" av Scott Helme og Troy Hunt. Fordi presentasjonene var såpass sensitive ble de ikke filmet og vil ikke bli tilgjengelig i ettertid.

I'm sorry, Dave. I'm afraid I can't do that

DevOps er et tema som har fått mye oppmerksomhet i flere år. Kort fortalt er dette en sammensmelting av systemutvikling (dev) og daglig IT-drift (ops) der formålet er å redusere tiden det tar fra funksjonalitet er utviklet til den er tilgjengelig for sluttbrukerne. Over årene har en del patterns, og dessverre også anti-patterns, begynt å utpeke seg. Særlig kan det være utfordrende i større organisasjoner med mange involverte systemer, mennesker og prosesser.

Det er dette Roy Osherove tok for seg i "The Enterprise DevOps Challenge". Han påpekte en del utfordringer og mulige måter å håndtere dem på, men hadde dessverre ingen enkle løsninger, noe han også advarte om på forhånd. For de som lurer på om han tok med gitaren i år, så gjorde han ikke det.

What do you call a cow with no legs?

Oppi alt det nye og kule er det fort gjort å ta den trauste IDEen for gitt, selv om det er her vi utviklere bruker det meste av arbeidstiden vår. Visual Studio har blitt utvidet med mye funksjonalitet de siste årene, og nye punktoppgraderinger kommer hyppig, men mange gjør seg ikke kjent med de nye mulighetene.

Kasey Uhlenhuth er program manager for Visual Studio hos Microsoft og holdt presentasjonen "The power of Roslyn" der hun viste hvor lett det er å bruke APIene i Roslyn til å skrive utvidelser til Visual Studio. Hun skrev en analyzer som markerer problemer i koden med en krøllete understrek og en code fix som automatisk retter opp feilen. Kasey demonstrerte dette ved å starte Visual Studio, fra Visual Studio, i debug-modus. Selv om mye er gjort for å gjøre oppstart og lasting av solutions raskere så tar det likevel noen sekunder. For å korte ned ventetida dro hun noen kuvitser av typen i overskrifta. Svaret er forøvrig "Ground Beef".

I've seen things you people wouldn't believe. Speakers on fire on stage in Oslo Spektrum. I watched C# glitter in the dark near the Bouvet booth. All those moments will be lost in time... like references to null...

Årets NDC Oslo var nok et vellykket arrangement, med mange inntrykk i løpet av noen hektiske dager. Det mest åpenbare inntrykket er at vi nå er midt oppe i det endelige gjennombruddet for maskinlæring. Utviklingen her blir spennende å følge med på fremover, eller enda bedre: delta på. Ellers kan vi vel anta at Internett er kommet for å bli… Det meste av utviklingen foregår nå på webteknologi og slik har det vært en stund. Mobilapps er en selvfølge i dag, men er ikke omgitt av den samme hypen som for noen år siden. Lite er nytt i sikkerhetsverden der injections fortsatt troner på toppen av sårbarheter, men regn med at utfordringene bare blir større nå som alle slags dingser er på nett. Og midt oppi alt det nye så er det litt betryggende å se at .NET fortsatt er så utbredt.