Profilbilde av Nils Larsgård

Nils Larsgård

Programmerer

+47 9053 6771
nils@kodemaker.no

Utvikler med 17 års erfaring

  • Fullstackutvikler med fokus på backend og integrasjon
  • Selvstendig, effektiv og løsningsorientert
  • Hjelper kunder med å finne enkle løsninger på vanskelige problemer
  • Variert erfaring fra mobil, backend og frontend

«Jeg har hatt gleden av å jobbe og bli kjent med Nils det siste året, og forstod raskt at han er en man stole på at gjør jobben sin ordentlig. Han vet hva han snakker om, og deler gjerne av sin egen læring. Nils er glad i komplekse problemstillinger og sier ikke nei takk til en real utfordring. I tillegg er han veldig fleksibel og stiller opp der det trengs, selv om det ikke er innenfor sitt faste domene. Nils kommer godt overens med hele teamet, og snakker godt med designerne våre. Jeg kan varmt anbefale Nils for videre oppdrag! :)»

- Marianne Heier Larsen, Produktsjef, Finn Eiendom

Om Nils

Nils er genuint interessert i teknologi og liker alt som kan programmeres, automatiseres og optimaliseres. Han lærer fort og er opptatt av at programvareutvikling er et håndverk man skal være stolt av. Han er glad i utfordringer og liker å samarbeide for å finne de beste løsningene.

Finn

Utvikling av system for anbefaling av rubrikk-annonser. Java, Kotlin, Kafka og Postgresql.

Thomson Reuters

Utvikling av løsning for distribusjon av tidsseriedata fra ulike markeder ved hjelp av Spark, Kafka, Hadoop og HBase.

Mnemonic

Utvikle mobil applikasjon for sakssystem for Android og iOS med rammeverket flutter.

Teknologi


Programmeringsspråk


Utviklingsverktøy

Maven, Make, Eclipse, Nexus, IntelliJ IDEA, Gradle, Ant, Subversion, Sonar og Git


Devops

Docker, Kubernetes, Bamboo, Apache Spark, Kibana, Hudson, Google Cloud Platform, Crucible, TeamCity, Google cloud run, Mitm, Terraform, Hystrix, Docker compose og Google appengine


Web- og apputvikling

CXF, Spring boot, Spring, Remix, Play, Portlets, Swagger, Geronimo, Websphere, Jsr 168, JSF, Websphere portal, JBoss, Ktor, REST, Struts 2, Jetty og GraphQL


Utvikling

Flutter, JUnit, Vertx, Google guice, Castor xml, gRPC, Tensorflow, Itext, Arrow, Maskinlæring, TestNG, Fitnesse og Mockito


Data

PostgreSQL, Hibernate, Hbase, Zookeeper, SQL, JDBC, Sybase, MS SQL Server, Oracle, Cassandra, SQuirreL SQL og DB2


Webutvikling

CSS, HTML, jQuery, Openlayers, Dojo og React


Metode og tilnærming

Tjeneste-drevet arkitektur (SOA), Webservices, Kontinuerlig integrasjon, TDD, Scrum og Web services


Annet

Kafka, Android, iOS, JIRA, JavaFX, Linux kernel, Meldinger, Spring batch, Prebidjs, Bluetooth, Linux, SSL, Prolink, Protocol buffers, JSON, Oauth, Seapine, BankID, Pki, Quickr og IBM Rational Application Developer


Prosjekter


Arbeidsgiver

Kodemaker Systemutvikling AS


Finn.no og Nordic Marketplaces
2021-2024

Videreutvikle og fornye systemer for å lagre statistikk for annonser på finn.

Utbedre systemer som håndterer innkommende klikk og hendelser for annonser på finn.no. Utbedre ytelse ved å ta i bruk Cassandra som database for annonse-klikk istedenfor elastisearch. Videreutvikle system for distribusjon av finn-annonser på nettsider utenfor finn.no og oppsalgsprodukter for å øke trafikk på finn-annonser. Utvikle frontend for å vise statistikk for eiendomsmarkedet som vises i søkeresultater.

Remix, TypeScript, Kotlin, Kafka, Kubernetes, Cassandra, Docker, PostgreSQL og Spring boot


Jøtul
2022-2023

Utvikling av app for styring av peisovn.

Utvikle backend og mobil app for å styre smart peisovn. Appen konfigurerer ovnen ved første gangs oppsett og brukes til å starte opptenning og regulere luftinntaket under fyring. Appen gir også pushvarsler når det er på tide å legge inn ved. Appen ble skrevet i flutter for både iOS og Android. Backend ble skrevet i go og kjører på Google sin Cloud-Run tjeneste med postgresql som database. Prosjektet har blitt tatt som et tilleggsprosjekt til andre prosjekter jeg har hatt.

Google cloud run, Go, Flutter, iOS, Android, Dart og PostgreSQL


Mercell
2021

Utvikling salgsløsning for anbudsportal.

Utvikle salgsløsning for anbudsportal. Mercell er en stor europeisk aktør innen anbudsformidling og har vokst mye gjennom oppkjøp. De lager en felles løsning for hele Mercell og trenger en salgsløsning på nett for å kunne betjene den voksende kundemassen og for å kunne nå ut til flere kunder. Tidligere har salg bare foregått over telefon og man ønsker med den nye løsningen å flytte salget over på nett.

Kotlin, TypeScript, React, Kubernetes, Terraform, PostgreSQL og Arrow


Mnemonic
2020-2021

Utvikling av mobil applikasjon for sakssystem.

Utvikle mobil app for iOS og Android med kryssplatform-rammeverket flutter. Appen bruker biometri for brukerverifisering og verifisering/bruk av kryptografiske nøkler. Den har støtte for push-varsler og enkel redigering av saker.

Dart, Flutter, iOS, Android, GraphQL og REST


Finn
2019-2020

Videreutvikle og fornye system for annonser med effekt-produkter.

Distribusjon av annonser med økt synlighet. Prosessere meldinger for endring på annonser og håndtere livssyklus for effekt-produkter for annonser på finn.no.

Java, Kotlin, Kafka, Kubernetes, Elm, Docker, PostgreSQL og Spring boot


Posten AS
2019

Utvikle backend for tjenesten 'Innenfor' - levering av pakker innenfor døren med digitale låser.

Integrasjon mellom mobile apper, låser og postens systemer for å kunne la sjåførene levere pakker innenfor dør hos kunder. Håndtere signering av koder, private og public keys for engangskoder og sikkerhetsaspekter rundt kryptering, lagring og uthenting av koder. Laget en mock-server i Go for mobil-appene for å kunne teste uten å involvere tunge legacy-systemer.

Kotlin, PostgreSQL, Ktor, Oauth, Go og Swagger


Finn
2018-2019

Videreutvikle og fornye system for anbefalte annonser og oppsalgsprodukter for ekstra effekt.

System for å øke synlighet til utvalgte annonser. Prosessere meldinger for endring på annonser og håndtere aktivering/deaktivering av Blink. Integrere anbefalte annonser på kart.finn.no. Jobbe med tilrettelegging av annonse-bud med prebid.js.

Java, Kotlin, Kafka, Kubernetes, Elm, Docker, PostgreSQL, Spring boot, Node.js, Openlayers og Prebidjs


Tieto
2017-2018

Videreutvikling av system for virtuelle bankkontoer og nyutvikling av applikasjon for automatiske betalinger.

Modernisere utviklingsplatform og heve kodekvalitet. Modernisering av legacy kode. Videreutvikle kjernesystemer for bankvirksomhet.

Java, Docker, Docker compose, Spring, Hibernate, DB2 og Maven


Western Geco
2017

Utviklig av kontrollsystem for innsamling av seismisk data på land.

Utvikling av nytt produkt for landseismikk. Administrere sensorer og data-innhøsting fra sensorer. Scripting av installasjon på redhat.

Java, Bash, gRPC, Protocol buffers, JavaFX og Docker


Thomson Reuters
2016-2017

Utvikling av løsning for intern distribusjon av fremskrevne tidsserier

Utvikling av løsning for intern distribusjon av fremskrevne tidsserier fra forskjellige markeder ved hjelp av bl.a. Spark, Kafka, Hadoop og HBase.

Java, Vertx, Kafka, Apache Spark, Hbase, Zookeeper og Kibana


Arbeidsgiver

Bytecode AS


Thomson Reuters
2016

Utvikling av løsning for intern distribusjon av fremskrevne tidsserier

Utvikling av løsning for intern distribusjon av fremskrevne tidsserier fra forskjellige markeder ved hjelp av bl.a. Spark, Kafka, Hadoop og HBase.

Hbase, Apache Spark, Kafka, Java, Zookeeper, Vertx, Kibana og Java


Arbeidsgiver

Webstep


Norwegian Air Shuttle
2012-2016

Utvikling og vedlikehold av backend for booking-systemet

Utvikling og vedlikehold av backend for booking-systemet. Videreutvikling av reiseassistent for Android.

Java, CXF, Google guice, Android, JBoss, JUnit, Maven, Oracle, Java, JBoss, Hibernate, Bash, Groovy, Play, jQuery, IntelliJ IDEA, JUnit, TestNG, Git og Hystrix


Storebrand Aktuarsystemer
2011-2012

Kundeportal og integrasjon av fagsystem.

Ny kundeportal for pensjonskassene som forvaltes av Storebrand Pensjonstjenester.

Java, HTML, CSS, JavaScript, jQuery, MS SQL Server, Struts 2, CXF, IntelliJ IDEA, Gradle, Maven, Nexus, TeamCity, Seapine, Bamboo, JUnit, Itext, Subversion og JDBC


Arbeidsgiver

Accenture ANS


Statens Pensjonskasse, PERFORM
2009

PERFORM, Uvikling av kjernefunksjonalitet for pensjonsreformen.

Oppgaver: Utvikling av kjernesystemet i pensjonsbehandlings-systemet etter nye regler om pensjonsreformen.

Spring batch, Spring, Java, Eclipse, JSF, JUnit, Fitnesse, JIRA, Crucible, Hibernate, Java, Maven, Hudson, Scrum, Spring, Sybase, SQuirreL SQL, Jetty, Mockito, Sonar, TDD, Kontinuerlig integrasjon, Web services og CXF


Storebrand Livsforsikring
2008

Ytelsesvurdering av kjernesystem, fondskjøp med BankID

Oppgaver: Første integrasjon med BankID for Storebrand for kjøp av fond på nett. Lage sparekalkulator med anbefaling av fondsvalg. Evaluering av fagsystem for kjøp og salg av fond. Ytelsesvurdering og vurdering av integrasjonsmetoden mot fagsystemet.

BankID, Java, Bamboo, Nexus, Tjeneste-drevet arkitektur (SOA), Maven, Ant, Eclipse, JIRA, Castor xml, Prolink, CSS og JavaScript


Arbeidsgiver

IBM


Karolinska Institutet, Genbanken
2008

Portal for gen-banken.

Oppgaver: Lage en sikker portal for genbanken slik at store datasett av genomer skal kunne deles mellom forskere.

Portlets, Websphere portal, Websphere, Geronimo, Pki, SSL, Java, JUnit og Jsr 168


Norsk Boligbyggerlag, NBBL
2007

Utvikling av web-portal med timeregistrering og billagsføring.

Oppgaver: I samarbeid med BOB (Bergen og Omegn Boligbyggerlag) lage en portal for å samle all nett-aktiviteten til NBBL. Lage web-applikasjoner for timeregistrering og bilagsregistrering.

Quickr, Java, JUnit, Eclipse, IBM Rational Application Developer, Dojo, JavaScript, CSS, HTML og Webservices


Arbeidsgiver

Atmel Microcontrollers


Atmel Corporation
2006

Porte UI biblioteker til ny prosessortype.

Atmel designer og produserer micro-controllere. Porte GUI biblioteker for linux til ny 32-bits microcontroller(AVR32). Siden AVR32 bruker big-endian var det nødvendig med en del tilpasninger i biblioteker for å kunne brukes. Det var også en del utfordringer til at ny compiler oppførte seg annerledes enn gcc på en del corner-cases som f.eks var-args .

C, Bash, Linux kernel og Linux


Arbeidsgiver

Deltidsarbeid under studier


NTNU
2002-2007

Studentassistent i IT-intro. Undervisningsassistent i Menneske-Maskin-Interaksjon(MMI) og Mikrokontrollere

Java, Fortran, SQL, HTML, CSS og C


Anbefalinger


Marianne Heier Larsen

Produktsjef, Finn Eiendom

«Jeg har hatt gleden av å jobbe og bli kjent med Nils det siste året, og forstod raskt at han er en man stole på at gjør jobben sin ordentlig. Han vet hva han snakker om, og deler gjerne av sin egen læring. Nils er glad i komplekse problemstillinger og sier ikke nei takk til en real utfordring. I tillegg er han veldig fleksibel og stiller opp der det trengs, selv om det ikke er innenfor sitt faste domene. Nils kommer godt overens med hele teamet, og snakker godt med designerne våre. Jeg kan varmt anbefale Nils for videre oppdrag! :)»


Joakim von Brandis

Head of Development, mnemonic as

«Vi var heldige å få Nils inn på et kritisk tidspunkt i prosjektet med utvikling av ny mobilapp. Nils tar utfordringer på strak arm, og setter seg raskt inn i nye problemstillinger og løsninger. Han er en hyggelig og omgjengelig utvikler å ha i teamet, og er samvittighetsfull og løsningsorientert.

Jeg kan trygt anbefale Nils som et solid tilskudd til fremtidige prosjekter.»


Thor Marius Henrichsen

Tech Lead, Finn.no

«Nils er en fantastisk utvikler å ha i ethvert utviklingteam. Han har dyp teknisk forståelse i en mengde språk, og han behersker mange tilhørende rammeverk. Han er enormt effektiv, og løser komplekse oppgaver på løpende bånd. Er det noe han ikke kan, bruker han dessuten svært kort tid å å lære seg nye ting.

For vårt team i FINN.no har Nils' Kafka ekspertise vært spesielt verdifull. Han har også vært en viktig ressurs i forbindelse med Kotlin og Elm adopsjon i teamet.

Nils er alltid blid og imøtekommende, og har en lun personlighet som smitter over på omgivelsene. Jeg kan trygt anbefale Nils videre til alle som trenger en super utvikler.»


Sigve Litsheim

Lead Architect, Thomson Reuters

«Nils er en svært allsidig og dyktig utvikler. Han setter seg raskt inn i nye teknologier og er flink til å dele kunnskap og få med seg de andre på teamet. I Thomson Reuters jobbet han med utvikling av nytt system for å distribuere tidsserier og prognosedata i sanntid. Han videreutviklet og forbedret distribuerte beregninger med Spark/Hadoop og streaming av store datamengder med bruk av Kafka og HBase. Jeg kan varmt anbefale Nils og er sikker på at han vil være et solid tilskudd til de prosjektene han deltar på i fremtiden.»


Øystein Slørdahl Hjertvik

Head, Solution and Architecture at Payment & Cash Management, Tieto

«Jeg hadde gleden av få Nils inn hos oss for å jobbe med den teknologiske plattformen hos oss. Nils viste meget høy teknisk og faglig kompetanse, og var med på å gi programvaren vår et signifikant løft. Nils evnet å sette seg inn i en stor og kompleks kodebase, og raskt finne ut hvor og hvordan de tekniske og funksjonelle kravene skulle løses. Nils er konstruktiv og løsningsorientert, og jobbet meget godt sammen med de andre i teamet rund seg. Han er omgjengelig hyggelig som person, og en person jeg gjerne anbefaler til andre.»


Sertifiseringer og kurs


2020

  • Cryptography I, Coursera/Stanford

2018

  • Certified Scrum Master

2017


2014

  • Programming Mobile Applications for Android Handheld Systems by University of Maryland, College Park - Course certificate
  • TOGAF 9 Part 1 and 2

2013


2010

  • Spring Core

2008

  • Sun Certified Java Web Component Developer

2007

  • Sun Java Certified Programmer

Utdanning


2001-2007

NTNU

Sivilingeniør/Master Datateknikk


2004-2005

NTNU/USP

Utvekslingsår ved Universidade de São Paulo(USP), Brasil


Presentasjoner


2023





Bidrag til fri programvare


  • grib - Et bibliotek for å parse værdata-filer i det binære formatet ‘grib’. Biblioteket er skrevet i Go og er en videreutvikling av et forlatt bibliotek. Utviklet funksjoner som gjør det mulig å streame grib-filer samtidig som man filtrerer på innholdet.
  • Silhouette Words - En webapp laget for lærere som driver med alfabetisering.
  • wsdl2java - Et plugin for gradle for å generere java-kode fra webservice-kontrakter.
  • Har bidratt til Retriable Kafka Consumer, Ktor-Swagger, Go, Unleash-go-client og Influx/Telegraf

Andre faglige bidrag


vintilbud.no

Vintilbud er en app som overvåker alle varene på vinmonopolet og finner varer som blir satt ned i pris. Tilbudene blir presentert i en moil-app og en web-side der man kan filtrere på type og sortere på ulike parametere. Backend er skrevet i go, appen er skrevet i flutter og publisert på Apple App Store og Google Play.

Plain Quotes

Etter å bare ha funnet apper som enten ikke viser det jeg vil om aksjer eller som sender masse data om meg til andre så laget jeg min egen aksje-app. Appen er skrevet i flutter og er tilgjengelig på Google Play og Apple App Store. Designet for mobil og nettbrett med adaptivt design.

Artikkel: Lagre JSON-objekter i postgresql!?

De aller fleste av oss som bruker postgres bruker det som en vanlig relasjonell database med skjemaer for det vi vil lagre. Men visste du at du kan slippe unna de strenge skjemaene ved å bruke den innebygde støtten for JSON i postgres? Og det er ikke så dumt som det kanskje høres ut heller!

Artikkel: Fra bits og bytes til datastrukturer

Hobbyprosjektene mine har en tendens til å være tett koblet med binære dataformater. Bli med å se hva som skjer under panseret når bytearrays leses til meningsfulle datastrukturer.

Artikkel: Go på kommandolinjen

Go har blitt brukt til å lage mange av de verktøyene vi bruker i dag. Kubernetes, docker, prometheus og mye mer. Men hvordan passer det for å lage programmer til kommandolinjen? Og er det like bra som Rust som Odin beskriver i sin bloggpost?

Artikkel: GDPR gjelder apper også

Personvernforordningen (GDPR) begynner å få noen rettskraftige dommer. Jeg snuser i trafikken fra noen vanlige apper på telefonen min for å se om jeg finner noen potensielle syndere og kommer med tips for å unngå fallgruver.

Artikkel: Kafka som cache

Kafka er et mangehodet beist med mange konfigurasjoner å skru på for å få det slik som vi vil.

Jeg bruker kafka som cache-lager for å raskt kunne varme opp cachen. I et sånt scenario må tjenestene selv sende oppdaterte data til kafka og la andre konsumenter bruke disse dataene asynkront. På den måten unngår jeg også å overbelaste tjenester ved start av applikasjonen min når jeg trenger en full cache.

Her er hvordan jeg bruker Kafka for å vedlikeholde cacher.

Artikkel: Analyser nettverks-trafikken fra appen din

Lurer du på hva appen din egentlig gjør av nettverkstrafikk? Mitm-proxy gir deg det eksakte svaret.

Artikkel: Respect my https_proxy!

Hva gjør du når du sitter bak en proxy og verktøyet ditt ikke spiller på lag med proxyer?

Artikkel: Konfig for Flutter-apper

Som utvikler med mye erfaring fra backend så vet jeg akkurat hvordan jeg liker å konfigurere applikasjonene mine. Men hva er alternativene for mobile apper som er skrevet med flutter?

Artikkel: Hack slack sin URL-redirect

Har du også irritert deg over Slack sin trege redirect-funksjon? Her her en oppskrift for å redusere irritasjonen med din egen URL-redirecter.

Artikkel: Profilering av kode i Go

Noen ganger er ytelse kritisk for at ting skal fungere ordentlig. Et bibliotek for parsing av binære værdata er en av de gangene. Med Go har vi mulighet til å kunne si akkurat hvilken kodelinje som tar tid eller som allokerer minne.

Artikkel: Kontinuerlig bygging med make

Kontinuerlig integrasjon, javel. Hva med kontinuerlig bygging når du allerede bruker make(fordi du leste min forrige bloggpost)?

Artikkel: Hva i $@ $< * er en Makefile

Etter å ha slåss mot og med maven, gradle, grunt og diverse moderne byggeverktøy så er det deilig å se at den gamle traveren make ofte er et bedre og enklere alternativ.

Artikkel: La applikasjonen din overleve et Kafka-krasj

Du kan sikre deg mot å miste kritiske meldinger når kafka er nede ved å bruke “store-and-forward” i de applikasjonene dine som produserer meldinger til kafka.

Artikkel: Using your tensorflow model with go

En forklaring på hva som skal til for å bruke en ferdig-trent tensorflow-model fra go med kode for å trene en enkel modell i python og kode for å bruke modellen fra go.