Profilbilde av Eivind B Waaler

Eivind B Waaler

Systemutvikler

+47 982 19 322
eivind@kodemaker.no

Utvikler med 25 års erfaring

  • Solid og erfaren fullstack-utvikler. Trives både i avanserte server-algoritmer og i moderne grensesnitt.
  • Erfaren problemløser - senest innen bildeanalyse og spill!
  • Benytter funksjonell programmering og liker små autonome team.
  • Leter etter enkle løsninger på kompliserte problemer. Gir aldri opp før problemet er løst eller feilen funnet!

«En utvikler er ikke en utvikler. Det er stor forskjell på effektiviteten og evne til å produsere kode med høy kvalitet. Eivind er i den ypperste klasse i forhold til å omgjøre krav til kode med høy teknisk og funksjonell kvalitet.»

- Kjell Sverre Birkeland, Prosjektleder, Skatteetaten

Om Eivind

Eivind har mange års erfaring som utvikler og arkitekt på diverse Java-baserte systemer. Han er pragmatisk og elsker å finne gode løsninger på kompliserte utfordringer. Eivind er flink til å se saker fra flere sider og streber etter å komme opp med enkle og elegante implementasjoner. Han gir seg aldri før feilen er funnet!

Eivind har erfaring med både fag- og personalledelse i tillegg til utvikling. Dette har gitt han mer forståelse for menneskene rundt seg, men også gjort han enda mer sikker på at det er utvikling han vil drive med.

Etter å ha jobbet i ca. 10 år tok Eivind mastergrad ved UiO. Dette bidro til at han fikk øynene opp for alternative JVM-språk og funksjonell programmering. De siste årene har han også jobbet en god del med frontend - og mener selv å vite forskjellen på god og dårlig JavaScript-kode.

Eivind er aktiv i fagmiljøet og har blant annet holdt presentasjon på mer enn 10 forskjellige JavaZone-konferanser.

Oche

Utvikling av nytt spillkonsept. Bildeanalyse, spillutvikling, grensesnitt og drift/monitorering.

FINN.no

Utvikling av nye og eksisterende løsninger for betaling, ordre og produkt.

BN Bolig

Websider og selvbetjening for boligselgere. Grensesnitt og integrasjoner.

Les mer

Teknologi


Programmeringsspråk


Utviklingsverktøy

Maven, CVS, Subversion, Emacs, Git, Webpack og IntelliJ IDEA


Devops

Docker, Prometheus, nginx, Ansible, Zipkin, HAProxy, Grafana, Teradata tcrm, Openshift, Varnish, Hystrix og Kibana


Web- og apputvikling

Spring, Jetty, ATG Dynamo, MS IIS, Dropwizard, Sitemesh, WebWork, Quasar, Glassfish, ASP, Websphere, JSF, Struts, Ring, Express, JBoss, Weblogic portal og IBM Websphere


Utvikling

Akka, OpenCV, Jersey, Google guice, Rxjava, Vertx, Aleph, core.async, C3, Xdoclet og JAXB


Data

Hibernate, Oracle, Middlegen, MS SQL Server, PostgreSQL, H2 database og Sybase


Webutvikling

React, HTML, Material UI, Frontend, jQuery, Twitter Bootstrap, CSS og Redux



Annet

Hazelcast, EJB, WebLogic, Elasticsearch, IBM Datapower, Apache Abdera, Gemfire, Linux, Apache Camel, Lotus notes, JBPM, Enonic CMS, Kafka, macOS, Windows, Lucene og Grinder


Prosjekter


Arbeidsgiver

Kodemaker Systemutvikling AS


Mnemonic
2019

Frontend-programmering

Jobbet som frontend-programmerer på diverse applikasjoner knyttet til Mnemonic sitt Argus system.

JavaScript, TypeScript og React


Animalia
2018-2019

API og klient for klauvskjæring

Laget API for å tilby og motta data fra terminaler som brukes av klauvskjærere i norske fjøs. I all hovedsak snakk om en Clojure webserver som snakker med en database. Utviklet også en web-klient for internt bruk/administrasjon.

Clojure, ClojureScript, Twitter Bootstrap, React, H2 database, Oracle og Openshift


Oche Oslo AS
2017-2018

Social darts - moderne pilspill

Oche tilbyr et helt nytt spillkonsept basert på dart. Systemet plukker opp hvor pilene står og beregner score for spillerne som visualiseres på en skjerm. Man har også en liten touch-skjerm for å registrere spillere, velge spill og gjøre korreksjoner. Eivind har jobbet med systemet fra konsept til ferdig utgave - med hovedansvar for bildeanalyse. Som eneste utvikler på store deler av prosjektet har han hatt en finger med i de fleste komponentene. Eivind var også ansvarlig for installasjon på fysiske maskiner og oppsett på Oche Bar i Torggata.

Python, OpenCV, Clojure, ClojureScript, Docker, Prometheus og Grafana


BN Bolig
2017

Nettsider og kundeweb

BN Bolig er et eiendomsmegler-foretak eiet av BN Bank og Eiendomsmegler1 Midt-Norge. De ønsker å ligge langt fremme når det gjelder bruk av teknologi. Kodemaker har bistått i å bygge opp nettsider og kundeweb med både backend og frontend. Eivind hadde hovedansvar for frontend delen av prosjektet, men har også jobbet som fullstack-utvikler med oppgaver som spenner over både backend og frontend samt devops.

JavaScript, Clojure, React, Redux, C3, Webpack, Aleph, Ring, core.async, Ansible, nginx, PostgreSQL, Varnish, HAProxy og Docker


FINN.no
2015-2017

Ordre, Produkt og Betaling

Har jobbet med videreutvikling av ordre- og betalingssystemer hos FINN.no. De største oppgavene for meg har vært å utvikle støtte for abonnementsbetaling/månedlige avdrag på kredittkort, samt ytelsesoptimalisering av Hibernate. Hadde også hovedansvaret for å lage en JavaScript-basert overvåkningsapplikasjon basert på node.js, Express og React, hvor data kom fra ulike kilder som Prometheus, Elasticsearch og Kafka.

Java, Groovy, Scala, JavaScript, Hibernate, Spring, Kafka, PostgreSQL, Sybase, Jersey, Node.js, Express, React, Prometheus, Zipkin, Elasticsearch og Kibana


Arbeidsgiver

BEKK Consulting AS


Skatteetaten
2014-2015

Nytt system for skattekort og skatteoppgjør

Jobbet på prosjektet Sofus - som utvikler nytt system for skattekort, skattemanntall og skatteoppgjør. Det nye systemet skal erstatte en rekke gamle systemer basert på IBM stormaskin. Eivind sin rolle i prosjektet var arkitekt og utvikler. Han trakk opp første versjon av alle modulene, med bygg og deploy. Var også med å utvikle et eget rammeverk for å definere fremtidens skatteberegning som en slags DSL.

Java, Akka, Dropwizard, Jetty, Jersey, Oracle, IBM Datapower og JavaScript


Skatteetaten
2013-2014

Edag - Utvikling av a-ordningen

Jobbet på prosjektet Edag - som utviklet a-ordningen i et samarbeid mellom Skatteetaten, NAV og SSB. Prosjektet regnes som svært vellykket og ble levert i henhold til plan og budsjett. Eivind hadde rolle som erfaren utvikler hvor han tok ansvar for å utvikle flere av de sentrale rammeverkene og modulene i prosjektet. Eivind jobbet hovedsaklig med backend, men fikk også gjort en del frontend arbeid ifm. admin- og test-grensesnitt. Hans fremste bidrag i prosjektet var nok å være pragmatisk og målrettet for å få jobben gjort.

Java, Google guice, Jersey, JAXB, Apache Abdera, Jetty, Akka, Apache Camel, Oracle og IBM Datapower


Statens vegvesen
2013

PoC - Innsamling av veidata

PoC - Innsamling av veidata

Java, Elasticsearch, Akka, Dropwizard og JavaScript


Skatteetaten
2012-2013

Mag - Modernisering av grunnlagsdata

Jobbet på prosjektet Mag - som utviklet modernisert mottak av grunnlagsdata. Eivind sin rolle var erfaren utvikler med hovedansvar for en kjernekomponent som mottar og kontrollerer filer. Utviklet både første versjon som var basert på grid og Hazelcast, samt andre versjon som baserte seg på Java tråder og et sentralt dokumentlager. Et spennende prosjekt hvor Eivind ble kjent med mange flinke mennesker og mye spennende teknologi.

Java, Hazelcast, Google guice, Jersey, Apache Abdera, Jetty, Glassfish og Oracle


Skatteetaten
2011-2012

PoC - Bruk av grid for skatteberegning

Jobbet på en proof of concept knyttet til bruk av grid-teknologi for skatteberegning. Eivind sin rolle var utvikler med hovedansvar for å knytte komponentene sammen. Han tok også over frontend-delen av prosjektet mot slutten - noe som var veldig lærerikt for en gammel backend-utvikler. Et veldig lærerikt og morsomt prosjekt!

Java, Gemfire, Hazelcast og JavaScript


SpareBank1
2010-2011

Saksbehandling for livsforsikring

Teknisk ansvarlig, arkitekt og utvikler på ASK-prosjektet hos SpareBank 1 - Livselskapet. Utvikling av en prosess/saksflyt applikasjon for kundebehandlere på livsforsikring. I tillegg diverse mindre oppdrag rundt strategi og rådgivning for andre prosjekter/generell arkitektur i SpareBank 1.

Java, WebLogic, Spring, Hibernate, JBPM, jQuery og JSF


Avinor
2008-2009

Intranett/internett - Utviklet webløsninger

Forvaltning av selvbetjenings- og portalløsninger hos Avinor. Dette inkluderer avinor.no med alle lufthavnsider. Rolle som arkitekt, og utvikler. Satt opp kontinuerlig ytelsestesting vha. Grinder og Jenkins.

Java, Weblogic portal, Spring, Oracle, Maven og Grinder


Gjensidige
2005-2008

Diverse prosjekter knyttet til forsikring

Reimplementasjon av gammelt system (KAP). Løsning for å hente og behandle leads til kundebehandlere. Integrert med kundebehandlingssystemet. Eivind ble også benyttet som rådgiver på andre prosjekter hos Gjensidige, for valg av arkitekturer og tekniske løsninger generelt.

Java, WebWork, Spring, IBM Websphere, Teradata tcrm og Enonic CMS


Unipub
2007-2008

Hibernate-bistand

Hibernate-bistand.

Java og Hibernate


DnB
2005-2006

Diverse prosjekt og kurs

Laget og holdt kurs i Spring, Maven og Subversion for firmaets utviklere og teknologiske ledelse.

Java, Spring, ATG Dynamo, Websphere, Maven og Subversion


Forsvaret
2004-2005

Prosjekter basert på Open Source teknologi

Bygge applikasjon for å holde oversikt over lover, regler og bestemmelser i organisasjonen (FOBID). Ren Open Source løsning.

Java, Spring, Hibernate, JBoss, WebWork, Sitemesh og Lucene


Selvaag
2002-2005

Prosjekter knyttet til industrialisert boligbygging

Utvikling av prototyper og tekniske Proof og Consepts på verktøy til bruk i byggebransjen. Har også gjennomført noe QA arbeid på kundens eksisterende arkitektur samt vært ansvarlig for opplæring/mentoring av ansatte.

Java og WebLogic


QFree
2003

Bistand Hibernate

Bistand Hibernate.

Java og Hibernate


DnB
2001-2003

ATG Dynamo-spesialist

Bistått ca. 20 forskjellige prosjekter knyttet til konsernets bankdivisjon med teknisk støtte og bistand på ATG Dynamo relaterte problemer. Vært en teknisk ressurs som alle prosjektene hadde tilgang til.

Java og ATG Dynamo


ABB
2001-2002

Forvaltning intranett

Notes-basert løsning for kunden som forenkler linking til eksterne data fra Lotus Notes dokumenter. Dette skjer ved at den eksterne kilden (Library) eksporterer metadata i form av en XML fil som så blir importert i Integration databasen. Brukeren vil dermed finne igjen den samme datastrukturen her som i den eksterne kilden. Når datastrukturen så er tilgjengelig i Notes, kan brukeren enkelt navigere i denne strukturen og generere linker til de faktiske dataene i Library.

Java og Lotus notes


Formuesforvaltning
2000-2001

Nytt verktøy for økonomiske porteføljer

Oppbygging av større system for personlig økonomisk rådgivning. Salg/kjøp av produkter, samt finansiell plan og porteføljeverktøy. Løsning både for kunder, rådgivere og back-office personell. Integrasjon mot Oslo Børs.

Java, WebLogic, MS IIS og MS SQL Server


Sportagon
2000

.com-eventyr

Stor sportsportal for avansert analyse av sportsresultater i tillegg til svært detaljrikt innhold. Første versjon hovedsakelig fokusert på fotball.

Java


Arbeidsgiver

Andersen Consulting


Gotogate
1999-2000

Gotogate.no - reisebyrå på internett

Var med på utviklingen av første utgave av Gotogate.no, et internett-basert reisebyrå.

Java, ATG Dynamo og Oracle


Andersen Consulting
1999

Utviklet internt samhandlingssystem

Utviklet internt samhandlingssystem.

VBScript, ASP, MS IIS og MS SQL Server


Anbefalinger


Sissel Irene Monsø Sveum

Områdeleder, FINN.no

«Eivind er en veldig god utvikler med glimt i øyet. Han tar alle oppgaver på strak arm uansett om det er nye tjenester, vedlikehold eller en feil.

Han har løftet vår betalingsløsning og gitt teamet økt kunnskap rundt Hibernate og Kafka. Han har hatt et stort bidrag inn i leveranser som eksempel abonnementsløsning for kredittkort og migrering av payment over på ny løsning hos Schibsted.

Eivind jobber godt i team og har delt sin kunnskap både ved kodegjennomganger og presentasjoner på FINNs ukentlige fagdag.»


Kjell Sverre Birkeland

Prosjektleder, Skatteetaten

«Eivind har den sjeldne egenskapen, at han forstår komplekse faglige problemstillinger og gjør det om til Java-kode. Ikke bare gjør han det om til kode, men koden er lettlest, forståelig og god å forvalte videre. Han skaper rett og slett vakker kode.

En utvikler er ikke en utvikler. Det er stor forskjell på effektiviteten og evne til å produsere kode med høy kvalitet. Eivind er i den ypperste klasse i forhold til å omgjøre krav til kode med høy teknisk og funksjonell kvalitet. Han er sterk på feilsøking, bl.a. i forbindelse med tunge prosessmotorer og håndterer både frontend og backend godt.

Han er en team spiller og deler med stor glede av sin kompetanse, både i forbindelse med parprogrammering og gjennomganger for større eller mindre grupper.»


Sertifiseringer og kurs


2004

  • Sun Certified Java Developer (SCJD)
  • Sun Certified Business Component Developer (SCBCD)
  • Sun Certified Enterprise Architect (SCEA)

2002

  • Certified ATG Dynamo Developer
  • Sun Certified Web Component Developer (SCWCD)

2001

  • Sun Certified Java Programmer (SCJP)

Utdanning


2008-2010

UiO

Master Informatikk


1995-1998

HiST

Høgskoleingeniør Systemutvikling


Presentasjoner




2014


2013

  • Nyheter i Java 8 (javaBin julemøte Oslo)
  • Akka i praksis! (javaBin julemøte Trondheim)
  • Fra Grid til Akka! (JavaZone)
  • Fra Grid til Akka! (flatMap(Oslo))

2012


2011

  • Scala - Object-oriented and functional programming combined (Gjesteforelesning INF3110 - UiO)
  • Scala som alternativ (SpareBank 1)

2010

  • Funksjonell Programmering på JVM (JavaZone)
  • Scala - Object-oriented and functional programming combined (Gjesteforelesning INF3110 - UiO)
  • Clojure (Communities in Action)

2009

  • Continuous Performance Testing (CommunityOne)
  • Continuous Performance Testing in the Cloud (JavaZone)
  • Introduksjon til Scala (OMS - UiO)
  • Lyntale - Image Processing in Scala (scalaBin)
  • Scala - Object-oriented and functional programming combined (Gjesteforelesning INF3110 - UiO)
  • Open Source i privat sektor (Gjesteforelesning INF5750 - UiO)

2007

  • Struts2 - Et testbart alternativ! (JavaZone)

2006

  • EJB 3 (javaBin)
  • Testing & TDD (JavaZone)
  • EJB 3 i praksis (Gjesteforelesning INF5040 - UiO)

2005

  • SiteMesh (javaBin)
  • What's the ideal weight of your container? (Spring vs EJB3) (JavaZone)
  • Hibernate & Middlegen (ifi-pop - UiO)
  • Hvordan tjene penger på Open Source? (Gjesteforelesning INF5750 - UiO)

2004

  • Oppsummering JavaONE 2004 (javaBin)
  • Hibernate-utvikling i praksis (JavaZone)

2003

  • XDoclet & Middlegen (javaBin)
  • Middlegen - Open Source kodegenereringsverktøy (JavaZone)

Andre faglige bidrag


Artikkel: Tilstand i URL

En ting vi liker å diskutere på frontend-utvikling er hvordan tilstand (state) skal behandles. Skal man ha all tilstand lagret globalt på et slags toppnivå? Skal man transformere noe før det sendes til UI-komponentene? Når er det greit med lokal tilstand i en komponent? I denne posten forklares et slags mønster som jeg synes fungerer veldig bra for søkesider.

Artikkel: Som påskekvelden på kjerringa

For mange norske datasystemer virker det som helligdager og høytidsdager kommer som en overraskelse. Hvor vanskelig kan det egentlig være å lage et system som ikke setter betalingsfrist på en dag hvor bankene er stengt? Eller venter med å sende purring på tilbakelevering av ting til en dag man faktisk har åpent? Vi dykker ned i matte fra 1800-tallet og lurer på hvorfor dette ikke er implementert i alle norske datasystem…

Artikkel: Håndtering av spaces i HTML

Mesteparten av whitespace i HTML er irrelevant og fjernes av browseren. Så lenge vi lager HTML-koden selv fungerer dette flott. Men hva skjer om man for eksempel lager en editor som skal støtte HTML både inn og ut - og noen limer inn HTML-kode med forskjellig typer spaces?

Artikkel: Hvor legger vi CSS?

Når man lager frontend applikasjoner er det fint om man unngår duplisering av sentrale elementer i designet. Her går vi gjennom noen forskjellige alternativer man kan bruke for å organisere CSS og komponenter.

Artikkel: Python og ytelse

De siste årene har jeg brukt Python sammen med OpenCV til å implementere en del bildeanalyse. Prosessering av bilder kan fort bli litt krevende for datamaskinen - og når man vil behandle mange bilder på kort tid er det viktig å skrive effektiv kode. Her beskriver jeg en teknikk jeg har brukt for å se på Python-kode og effektivitet.

Artikkel: Bildeanalyse #3: Objekter

Her kommer del 3 i bloggserien min om bildeanalyse. Denne gangen er det deteksjon av objekter i et bilde som er temaet. Først bruker vi noen geometri-triks for å finne rett utsnitt av bildet - så plukker vi ut objektene, og finner egenskaper ved disse som lar oss si noe om hva det er vi ser på.

Artikkel: Bildeanalyse #2: Linjer

Dette er del 2 i min lille bloggserie om bildeanalyse. Her ser vi videre på en vanlig utfordring - hvordan man finner linjer i et bilde. Dette er nyttig på en rekke områder. Vi går gjennom grunnprinsippene for å finne linjer, og så viser jeg frem en del små triks jeg har funnet ut at kan være fine når man driver med OpenCV og linjer i bilder.

Artikkel: Introduksjon til bildeanalyse

Bildeanalyse, kunsten å lese informasjon fra bilder, er en artig og utfordrende del av IT-faget. Man kan gjøre tekstgjenkjenning, bygge automatiserte industriprosesser, lage nymotens dartspill og en hel del andre greier. Her beskriver vi en måte man kan komme i gang på og forklarer noen av de enkleste prinsippene som kan være kjekke å kunne.

Artikkel: Comparing GC Collectors

Innlegg som viser litt av forskjellen mellom de alternative GC collectorene som er tilgjengelige i standard Java HotSpot VM. Tanken var å vise en enkel sammenligning slik at det skal være enklere å gjøre noe ligende for din egen applikasjon.

Artikkel: null som ukjent

Post som snakker om fordelen med Scala sin Option-type kontra bruken av null for å angi en ukjent verdi. Skrevet før vi fikk Option i Java..

Artikkel: Embedding Efficient DSLs on the JVM : A review of alternative languages

Masteroppgaven Eivind skrev på UiO i 2010. Viser en sammenligning av forskjellige JVM-baserte språk forhold til bruk i domene-spesifikke språk. Ser på aspekter som syntaks-muligheter og ytelse - og prøver å gi en anbefaling på hvilke språk som egner seg best til ulike scenarier.