utvikling

Vivaldi-utvikleren Gorm lærte seg koding ved å lage boter til IRC

Så fikk han beskjed om å gjøre noe som var mer nyttig.

Det er ikke alle utviklere som programmerer 24/7. Gorm Haug Eriksen er også glad i å reise. Her fra en tur til Kirgisistan.
Det er ikke alle utviklere som programmerer 24/7. Gorm Haug Eriksen er også glad i å reise. Her fra en tur til Kirgisistan.

Neste mann ut vår serie hvor vi intervjuer utviklere, er Gorm Haug Eriksen (43) som jobber ved utviklingsavdelingen til Vivaldi Technologies i Oslo. Selskapet har også utviklingsavdelinger i Reykjavik og Boston.

Kan du kort beskrive stillingen og oppgavene dine?

Jeg kaller meg en bugfikser på jobb. :)

Mesteparten av tiden går med på å drepe bugs og videreutvikle funksjonalitet i nettleseren. Når jeg kommer på jobb vet jeg sjelden hva jeg skal holde på med, da det kan ha blitt feilmeldt nye bugs i løpet av natta. Prøver å fikse ting raskt slik at bugs ikke blir liggende og at ugjorte oppgaver hoper seg opp. Disse småfeilene tar som regel bare noen kvarter eller noen timer å fikse og er sjelden veldig kompliserte.

Når det ikke er noe som haster og er viktig, så faller jeg gjerne tilbake på litt større oppgaver som har ligget en stund, som ny funksjonalitet og omskrivning av tidligere moro. Dette kan være mer komplisert, spesielt når det er store mengder kode og kan ta dager å finpusse.

Vi bruker React med Flux-arkitektur så applikasjonen og state-endringer er OK strukturert, og det er lett å skrive om deler uten at det har alt for mange konsekvenser for andre deler av koden. Vi har god QA og en mengde automatiserte tester, så vi utviklere får som regel tilbakemelding samme dag når vi gjør en feil, slik at ting kan rettes raskt.

Hvor jobber du mest, på kontoret, på hjemmekontoret eller ute hos kunder?

Jeg jobber kun på Vivaldi-kontoret på Grünerløkka. Syns hjemmekontor fungerer dårlig da jeg ofte ender opp med å ta ut av oppvaskmaskinen eller noe privat på dagen og dermed må jobbe videre utover kvelden. Når jeg går fra kontoret forsøker jeg å koble av fra Vivaldi og fokuserer på sideprosjekter og andre interesser. Dessuten har vi god kaffe og ferskt surdeigsbrød på jobb hver dag.

Kan du fortelle litt om prosjektene du jobber med akkurat nå?

Vi har nettopp gitt ut Vivaldi 1.10, så dette har naturlig tatt mye tid. Den siste uken jeg har jobbet på Reader Mode i Vivaldi for 1.11 og konfigurering av denne. Jeg vedlikeholder også mye annen kode og bytter gjerne mellom forskjellige deler av koden for å fikse mindre bugs. Liker spesielt godt å jobbe med spatial navigation og adressefeltet.

Hvor lenge har du jobbet som utvikler?

Jeg lærte meg å kode ved å skrive boter på IRC

24 år. Jeg startet på informatikk ved UiO i 94 og det var første gang jeg ble eksponert for internett, utviklere og utviklingsfaget. Jeg ble del av IRC-miljøet i Norge og traff mange interessante mennesker som hadde mye kunnskap om utvikling og generelt om informatikk.

Jeg lærte meg å kode ved å skrive boter på IRC, men ble kontaktet av en erfaren utvikler som jobbet som systemadministrator på MatNat, som sa vi måtte bruke tiden vår på nyttige ting i stedet for tull og tøys. Han tipset meg om at web kom til å bli stort og sa at det kanskje kunne vært smart å se på CGI-programmering.

Jeg lærte meg webprogrammering og hadde 2-3 måneders erfaring da jeg så en stilling hos Mogul Media som web-programmerer i 95, en stilling som jeg var eneste som søkte på og fikk. På den tiden var det nok kun en håndfull webutviklere i Norge.

Har du jobbet på samme sted hele tiden?

Nei, jeg har byttet omtrent hvert 4-5. år. Var konsulent og holdt på med egne bedrifter fram til cirka 2000, og har deretter jobbet med utvikling av nye produkter basert på web/JavaScript. Før jeg startet i Vivaldi jobbet jeg 4 år i DSS og før det 5 år i Opera.

Hvor gammel var du da du først begynte å lære deg programmering?

Har alltid vært nysgjerrig og forsøkt å finne ut hvordan ting fungerer. Som treåring satte faren min meg bakpå en sykkel og sa at hva jeg enn gjorde, så måtte jeg sitte med benene ut og ikke ta dem sammen. Han sa ikke hvorfor, og jeg har fortsatt vage minner om følelsen av å sitte der og lure på dette, før nysgjerrigheten ble for stor og jeg bare gjorde det. Det endte med mye smerte og stygge brudd.

Det endte med mye smerte og stygge brudd.

Selv før jeg hadde tilgang på datamaskiner, så gikk jeg i bokhandler og leste bøker om hvordan de fungerte. Jeg tok notater og testet det ut når jeg fikk tilgang til en maskin et eller annet sted.

Kunne være 10-11 år når jeg startet å skrive av spill fra blader på maskiner som bare hadde RAM. Kunne starte på fredag og kanskje på søndag kveld hadde jeg en buggy versjon av Snake, som jeg nesten kunne spille på.

Men det var først på UiO/USIT jeg startet å lære faget skikkelig, og jeg har selvfølgelig masse igjen å lære.

Hva slags utdannelse har du?

Som utvikler kreves det at man hele tiden videre-utvikler seg.

Er i hovedsak selvlært, og har kun tatt sporadiske fag innenfor informatikk, digital kommunikasjon, samt litt juss og samfunnsfag.

Klarte aldri å fullføre utdannelsen på UiO, så jeg har noen begrensninger sammenlignet med utviklere som har utdannelse, men det er sjeldent et problem da jeg alltid har kolleger rundt meg som jeg kan samarbeide med, om det trengs.

Som utvikler kreves det at man hele tiden videreutvikler seg. Det er alltid ny kunnskap som må læres, og gammel utdatert kunnskap som må avlæres.

Hvilke plattformer utvikler du vanligvis for?

Nå går det mest på desktop, men har endel erfaring fra utvikling på integrerte plattformer, som TV, mobil og spillkonsoller.

Hvilken pc-plattform/OS foretrekker du selv å bruke? Kan du fortelle litt om hvorfor?

Har vekslet litt mellom GNU Linux og Windows, men de siste årene har jeg kun brukt GNU Linux. Kjører alltid utviklingsmiljøet virtuelt på VirtualBox med Arch Linux på gjesten og Ubuntu LTS på host. Debian på servere. Foretrekker Awesome WM da den er minimalistisk, og du får bort all støy bortsett fra de vinduene du trenger for å jobbe.

Grunnen til at jeg kjører Ubuntu på host, er at den er stabil og at det er sjelden problemer. Grunnen til at jeg bruker Arch på gjest, er at det er minimalistisk og man har lett tilgang til «bleeding edge»-versjoner av programvare. Liker Debian på servere da det er en noe strengere versjon av Ubuntu, og jeg trenger ikke Ubuntus brukervennlighet på servere. Virtualisering gjør det enkelt å teste ut programvare med forskjellige begrensninger, som dårlig CPU og lite minne.

Hvilke programmeringsspråk benytter du?

Virtualisering gjør det enkelt å teste ut programvare med forskjellige begrensninger, som dårlig CPU og lite minne.

Fra 2000 har jeg stort sett bare brukt JavaScript og WordPress/PHP. Det er ikke de beste verktøyene for alle oppgaver, men jeg håndtere de fleste oppgaver raskt med disse verktøyene og kan dem godt.

Hva er favorittspråket?

Det må være JavaScript. Det er en suboptimal løsning på mange områder, nodejs/npm grenser til galskap, men det er morsomt og effektivt miljø å utvikle på, når man klarer å få oversikt over de forskjellige verktøyene.

Dessuten har det god støtte for både funksjonell og imperativ programmeringsstil, og man har tilgang på ufattelige mengder med MIT-lisensiert kode. Det er det språket jeg har jobbet med som gir meg mest glede i hverdagen, og dette er vel hovedgrunnen til at jeg benytter det.

Hvilke to verktøy greier du deg ikke uten?

Tror ikke det er noe verktøy jeg ikke hadde klart meg uten, men det hadde vært utrolig trist uten en web browser, spesielt nå som Vivaldi har fått docked devtools. :)

Devtools og debug console er jeg glad i. Det har mange muligheter og er du webutvikler så lønner det seg å bruke tid på å lære seg funksjonene godt, slik at du kan debugge alt som skjer i browseren. Anbefaler spesielt https://umaar.com/dev-tips/.

Hva slags oppgaver liker du best å jobbe med?

Liker spesielt godt å jobbe med ting jeg ikke har vært borti før eller ny teknologi. Da er det mulig å lære noe nytt. Jeg kommer nok alltid til å jobbe med R&D eller startups.

Hvordan sørger du for å holde deg faglig oppdatert?

Jeg leser Hacker News, mange epostlister og flere Reddit-grupper daglig, så jeg er oppdatert på det meste nye som skjer innenfor de kategoriene som interesserer meg. Har også endel kontakter som tipser meg, og jeg følger mange meetup-grupper i Oslo.

Har også noen av klassiske bøkene innenfor utvikling som jeg blar litt i fra tid til annen.

I hvilken grad har metoder og teknologier som DevOps, nettsky og konteinere endret måten du jobber på?

I jobben min har det liten betydning, da jeg for det meste jobber «client side», og vi forsøker å drifte det meste selv. Er skeptisk til skytjenester på grunn av personvern, men bruker det allikevel selv, for eksempel til epost.

Konteinere benytter jeg til testing. Har dårlig erfaringer med å bruke det på mindre løsninger. Men på større løsninger og spesielt løsninger som raskt må skaleres opp, eller har avanserte bindinger ved deploy, så er det nyttig.

Ser du noen trender framover som virkelig vil forandre hverdagen til utviklere?

Jeg tror hele OS-et snart vil kjøre på GPU.

Kanskje AI vil gjøre det mulig for dataprogrammer selv å skrive dataprogrammer etterhvert og fikse feil, med litt veiledning om hvordan programmet skal fungere fra et menneske eller et sett av tester som må passeres. Det hadde vært ganske bra, for da kunne vi utviklere brukt tiden på mer spennende utfordringer enn å fikse stavefeil og tidkrevende «UI quirks».

Jeg tror også GPU-er vil bli viktigere. Foreløpig brukes de til ting som spilling, blockchain, AI og dataanalyse, men jeg tror hele OS-et snart vil kjøre på GPU, og at CPU-en blir legacy. Så dette er noe utviklere bør følge med på. Det er spennende i forbindelse med

nettlesere, da man får mer mulighet til å jobbe direkte mot GPU også fra JavaScript.

Hvilke teknologier eller fagområder skulle du gjerne kunnet mer om?

Det er nok AI. Siden det tok altfor lang tid før jeg fikk interesse for matematikk, har jeg mange hull og sliter med å forstå selv det enkleste, og det er ganske frustrerende. Kanskje det er noen her som vil bytte JavaScript-/webveiledning mot AI-veiledning? ;)

Jeg er også fascinert av oppfinnelsen blockchain og forsøker å lese alt jeg kommer over om dette tema.

Deltar du jevnlig på konferanser?

Går en gang i blant på NUUG-møter og Meetup.com-eventer i Oslo.

Hvilket forhold har du til innebygd personvern?

Er stor fan av dette konseptet og Datatilsynets arbeid generelt, og jeg håper de blir aggressive med de nye reglene.

Jeg opplever at få utviklere har peiling på personvern og at de har liten forståelse av juss. Selv har jeg satt meg litt inn i hva loven krever. Alle utviklere bør lære seg jussen og selve arbeidsmetoden, for å sikre god kontroll over det man holder på med. Det er da relativt lett å argumentere for hvordan ting skal være, når noen beordrer deg til å bryte loven.

Innebygd personvern er smart fordi det gjør ting så mye enklere.

Det viktigste du kan gjøre som utvikler er å påse at man behandler personopplysninger (dette er alt som kan knyttes til en person, inkludert IP-adresse) i så kort periode som overhode mulig, og at man ikke lagrer mer enn absolutt nødvendig.

Man må veie lagringen opp mot behovet, og det må være en forholdsmessighet. Har man for eksempel kun behov for aggregerte data, så har man ikke behov for personopplysninger, og da er det en plikt å slette disse opplysningene.

Så innebygd personvern er smart fordi det gjør ting så mye enklere, og man fjerner risiko ved å ikke lagre mye data i utgangspunktet.

Det er betenkelig at en informatikk-master kan gå ut i jobb uten å ha kunnskap/opplæring i personvern (og sikkerhet), mens dette for eksempel er en del av utdannelsen til en saksbehandler i det offentlige og helsepersonell.

Hvor mye programmerer du på fritiden?

Det er en del i perioder, og det er dessverre ikke uvanlig at jeg sitter store deler av dagen foran skjermen. Sideprosjekter fungerer som en avkobling, og det er ting man kan legge vekk og ta opp igjen senere, så jeg har endel på gang. Tror ikke det er sunt å kun jobbe på ett prosjekt og kun med ett teknisk miljø. Man bør eksperimentere litt og teste ut andre verktøy med et «åpent sinn».

Bidrar du, enten i jobben eller på fritiden, til noe åpen kildekode-prosjekt?

Vivaldi har ikke publisert den koden jeg jobber på. Men vi har en bundle.js fil som kan js-beautify'es, og artig nok har vi fått noen patcher inn denne veien. Vi er heldig som har et nettsamfunn av Vivaldi-brukere, og jeg får ofte tips og råd rundt hvordan nettleseren skal fungere, og ofte lar vi brukere selv bestemme hvordan det skal fungere.

Etter å ha studert juss og jobbet i det offentlige, fikk jeg interesse for Offentlighetsloven og har i samarbeid med andre i NUUG fått opp tjenesten Mimes brønn, som er basert på programvare fra MySociety (Alaveteli).

Hva gleder du deg mest over ved å jobbe som utvikler?

Det må være når vi gir ut nye versjoner av Vivaldi. Det er aldri kjedelig, og det dukker ofte opp utfordringer som må fikses raskt helt på slutten.

Opplever du at jobben som utvikler har noen negative sider?

Det er mye stillesitting, så jeg hadde foretrukket en litt mer aktiv jobb, men forsøker å kompensere ved å gå turer så ofte som mulig. Synes også selve faget trenger en revolusjon. Måten programmer skrives på i dag virker ikke riktig, og det kan være svært tidkrevende å fikse selv små detaljer. Det må kunnes gjøres bedre.

Føler at du får den lønnen du fortjener?

Det er ikke en selvfølge å jobbe med nettlesere i Oslo. Så jeg er fornøyd og Jon von Tetzchner, gründer av Vivaldi og Opera, skal ha stor takk for at han holder liv i nettlesermiljøet i Oslo.

Få med deg første del i serien:

Powered by Labrador CMS