Profilbilde av Jean Niklas L'orange

Jean Niklas L'orange

Programmerer

+47 995 53 596
jean.niklas@kodemaker.no

Utvikler med 10 års erfaring

  • Selvdrevet, samarbeidsvillig og løsningsorientert
  • Finner glede i å gjøre team mer produktive
  • Fullstackutvikler med mye erfaring på backend og devops
  • Foretrekker små, autonome team

Om Jean Niklas

Jean Niklas har lang erfaring som tech lead og utvikler, og setter seg fort inn i nye domener og problemstillinger. Etter mye tid i oppstartsbedrifter er han god på å raskt sette seg inn i kundens behov, for deretter finne løsninger av høy kvalitet til lav kost.

Han trives med å fjerne friksjon for medarbeidere, enten via automatisering, systemforenkling, eller ved prosessforbedring. I tillegg brenner han for algoritmer og datastrukturer, og liker å jobbe med det når det skaper verdi for kunden.

Jean Niklas har en blogg på engelsk, der han skriver om programmering. Han skriver også regelmessig på Kodemakers egne blogg.

Vipps AS

Drift og utvikling av direktebetalinger i Vipps

Maritime Optima AS

Arkitektur, infrastruktur og implementasjon av ruteoptimalisering for skip

Rendra AS

Arkitektur, infrastruktur og implementasjon av SaaS-programvare

Teknologi


Programmeringsspråk


Utviklingsverktøy

Leiningen, Make og Git



Devops

Kubernetes, Docker, OKD, nginx, Terraform og Argo CD


Logging og monitorering

Logstash og Kibana


Database

PostgreSQL, LevelDB, SQLite, Oracle, SQL, Cosmos DB, MS SQL Server og Redis


Webutvikling

re-frame, Reagent, React og GraphQL



Annet

Elasticsearch, gRPC, Azure event hubs og Linux


Prosjekter


Arbeidsgiver

Kodemaker Systemutvikling AS


Animalia
04.2024 -

Ny- og videreutvikling av fagsystemer og løsninger for landbruket, slakterier og veterinærer

Fullstack på Animalia sine egenutviklede produkter mot landbruket og dyrehold. Hovedsaklig Storfekjøttkontrollen, et verktøy for bønder med storfe.

Groovy, Clojure, React, Oracle, ClojureScript, OKD, Reagent, re-frame, Docker og Kubernetes


Arbeidsgiver

Maritime Optima AS


Maritime Optima AS
08.2020 - 03.2024

Systemutvikling av produktene ShipIntel og ShipAtlas

Maritime Optima utvikler programvare for logistikkoptimalisering i shippingbransjen, med hovedfokus på dataanalyse og kalkyleverktøy for befraktere og skipsmeglere.

Jean Niklas er hovedsaklig ansvarlig for design, implementasjon og drift av rutemotoren til Maritime Optima, og jobber backend med å integrere den inn i forskjellige deler av programvaren. Han er også ansvarlig for betalingsintegrasjonen med Stripe for både kort og faktura, og har implementert overvåking/diagnostisering av Go-programmer med Azure Application Insights. Det er et relativt lite team, så alle bidrar der det trengs.

Go, PostgreSQL, LevelDB, GraphQL, gRPC, Elasticsearch, Azure event hubs, Event sourcing, Microsoft Azure, Micro services, Kubernetes, Docker, SQLite, Make, Terraform og Argo CD


Arbeidsgiver

Vipps MobilePay


Vipps AS
06.2019 - 08.2020

Drift og utvikling av direktebetalinger

Jean Niklas var del av teamet “core payments” som var hovedsansvarlig for direktebetalinger. Han jobbet primært med videreutvikling, drift og hendelseshåndtering.

Go, MS SQL Server, Cosmos DB, Micro services, Kubernetes og Docker


Arbeidsgiver

Rendra AS


Rendra AS
06.2014 - 06.2019

Utvikling av programvaren StreamBIM

Rendra AS utvikler verktøyet StreamBIM, som strømmer 3D-modeller av bygg til mobiltelefonene til de som jobber ute på byggeplassen. Det er et samhandlingssystem med 3D-modellen i senter, med støtte for dokumenthåndtering, sjekklister og issue tracking.

Med lang fartstid i bedriften har Jean Niklas jobbet der det trengs, blant annet:

  • Utviklet et program for å lese filformatet til 3D-modellene og trekke ut data om objekter
  • Designet, driftet og utviklet en konverterings-pipeline som slår sammen flere 3D-modeller, optimalisert for å redusere ventetid og serverkost
  • Generell systemutvikling, blant annet tilgangskontroll, utvikling av ny funksjonalitet, og tredjepartsintegrasjon med annen programvare brukt i byggebransjen
  • Infrastrukturarbeid, monitorering og diverse systemadministrasjon

Jean Niklas hadde mange roller i bedriften: Han jobbet som scrum master, systemutvikler og drifter.

Go, PostgreSQL, LevelDB, JavaScript, Haskell, Clojure, Amazon Web Services (AWS), Kubernetes, Logstash, Micro services, Redis, SQLite, Make og Kibana


Utdanning


2009-2014

NTNU

Siv.ing i Datateknikk, spesialisering innen algoritmer og datastrukturer


Presentasjoner


2019

  • Error Wrapping in Go 1.13 (Oslo Gophers Meetup)

Bidrag til fri programvare



Andre faglige bidrag


IDI Open

IDI Open er en årlig teambasert programmeringskonkurranse (competitive programming) beregnet på universitetsstudenter. Etter å ha selv deltatt årlig med et lag under studietiden, ble jeg med i 2016 for å lage oppgaver til konkurransen. Fra 2019 har jeg vært hoveddommer og hatt ansvaret for at oppgavesettet har noe for alle, uansett ferdighetsnivå.

Leiningen

Leiningen er et veldig populært byggeverktøy for prosjekter skrevet i Clojure og ClojureScript. Jeg har bidratt til prosjektet siden 2012 og var hovedansvarlig fra 2015 til 2017. I disse dager er prosjektet mer eller mindre “fullført”, og det er kun bugfikser og mindre kodeendringer på agendaen.

Improving RRB-Tree Performance through Transience (Masteroppgave)

RRB-treet er en immutabel liste med veldig rask oppslagstid og effektiv konkatenering. Da jeg skulle bestemme meg for masteroppgave i 2013 var den relativt ny og uoptimalisert. Masteroppgaven tar optimaliseringer fra andre datastrukturer og gjør RRB-treet rask nok til å kunne brukes i praksis.

Artikkel: UX-inspirasjon fra din egen verktøykasse

Vi utviklere lager våre egne verktøy, og har funnet noen veldig gode metoder for å gjøre oss selv produktive. Men implementerer vi dette i produktene vi lager? La oss se på konsepter vi allerede deler med brukerne våre, og idéer jeg syns vi bør dele mer av.

Artikkel: Verdien av å lære seg små programmeringsspråk

Man blir ofte fortalt at det er smart å lære seg flere programmeringsspråk. Alle er enige i det, men få snakker om størrelsen på språket du skal lære. Jeg mener små språk har stor verdi, til tross for at du kanskje aldri vil bruke det i jobbsammenheng. Men hvorfor? Det skjønner du etter å ha lest denne bloggposten.

Artikkel: I PostgreSQL er et år 360 dager (og annen moro)

Tid i PostgreSQL har noen fallgruver her og der. La oss se på de vanligste tingene man gjør feil, hvordan man unngår dem, og hvorfor i alle dager året er så kort i denne databasen.

Artikkel: Hvorfor ikke fikse feilen der den oppstår?

Så og si alle språk implementerer feilhåndtering på en av to måter: Enten kaster man unntak oppover, eller returnerer feil som verdier. Men visste du at det finnes en tredje feilhåndteringsmåte som håndterer feilen der den oppstår?

Artikkel: Kronjobber og den forsvunne timen

Når vi først skal stille klokka en time fremover, er nok B-mennesker glade at det skjer natt til søndag. Det gir dem mulighet å redusere hodepinen som dukker opp på første arbeidsdag med sommertid. Men hodepine på grunn av sommertid kan også A-mennesker få, spesielt om de er utviklere og er ansvarlige for programmer som skal kjøre på spesifikke tidspunkt. La oss se litt på hva som skjer (eller ikke skjer) når maskinen stiller klokka fram en time.

Artikkel: Kjøretid med cacheproblemer

Selv om kjøretidsanalyser av algoritmer er estimater, har estimatene blitt dårligere og dårligere opp gjennom åra. Nå kan O(n log n) være raskere enn O(n), uansett hvor stort datasettet ditt er.

I denne bloggposten ser vi på hvorfor det har blitt sånn, hvordan man prøver å fikse opp i dette, og hva du som utvikler bør gjøre for å finne ut av hvilken algoritme som er raskest for ditt formål.

Artikkel: Go-stly Access Rights

Da generics kom til Go åpnet det opp muligheten til å bruke fantomtyper. Her forklarer jeg hvordan du kan bruke det til å implementere typesikker tilgangskontroll for databaseoperasjoner.

Artikkel: The Simplest Collection

Hvilken datastruktur er den enkleste? Og har den noen verdi, gitt at den sjeldent er støttet i dataformater og programmeringsspråk?

Artikkel: Understanding Clojure's Persistent Vectors (pt. 1)

Hvordan fungerer Clojure sin vektorimplementasjon under panseret? Her går vi inn og ser på hvordan den er så rask som den er, til tross for at den er immutabel.