Christian Johansen
Kodemaker
+47 934 17 480
christian@kodemaker.no
Født
1982
Sivilstatus
Gift, 2 barn
Utdanning
Institutt for informatikk, Universitetet i Oslo
Erfaring
2002
Sammendrag

Christian er en allsidig, engasjert og produktiv programmerer med erfaring og interesse for alt fra infrastruktur og drift, databaser og backends, til frontend webutvikling. Han har lang erfaring med systemer og prosesser for continuous delivery/continuous integration, samt prinsipper for å kjøre applikasjoner i skyen.

Christian elsker å løse problemer, og brenner for å løse dem med så lite programvare som mulig. Han er alltid på utkikk etter å redusere kompleksitet for å sikre lang levetid og reduserte kostnader for drift av programvare.

Gjennom år med kurs og foredrag har Christian tilegnet seg gode evner til å dele av sin kunnskap, noe han aktivt gjør i alle prosjekter. Han skriver godt, og dokumenterer flittig løsningene han leverer fra seg.

Christian var tidlig ute som moderne frontend-utvikler. Han laget CSS for Norges første offentlige nettsted med ren CSS-layout (http://www.apollon.uio.no/) og har vært «frontend-mann» for utallige små og store prosjekter, samt skrevet en bok om test-drevet utvikling med JavaScript.


Teknologi
Programmeringsspråk
Clojure, ClojureScript, JavaScript, Ruby, Node.js, Java, PHP, Bash, Go, Elisp, Lisp
Utviklingsverktøy
Emacs, Terminal, Maven, Eclipse, Figwheel, Leiningen, Ant, Nettleser-devtools
Versjonskontroll
Git, Subversion
Metodikk
Funksjonell programmering, Immutability, Test-drevet utvikling (TDD), Automatisert testing, Micro services, Domain-driven design, Continuous Integration, Continuous Delivery, CQRS, Event sourcing
Operativsystem
OS X, Centos, Alpine, Ubuntu, iOS, Android, Redhat, Windows
Database
Datomic, MySQL, Elasticsearch, DynamoDB, DataScript
Devops
Docker, Nginx, HAProxy, Amazon Web Services (AWS), Capistrano, Datadog, Ansible, Concourse, Puppet, Terraform, Mesos, fluentd, Traefik, TeamCity, HashiCorp Packer, Octopus Deploy
Skytjenester
AWS IAM, AWS Api Gateway, AWS RDS, AWS S3, AWS CloudFormation, AWS Lambda, Kinesis, Cloudfront, Route53, AWS VPC, Cloudwatch, AWS ECS, Docker swarm, Aws ec2
Sikkerhet
Auth0, OpenID Connect, Let's Encrypt, Oauth2
Verktøy
JIRA, Confluence, Yarn, Babel, Asana
Frontend
CSS, React, HTML, Responsive Design, Cordova, D3, AngularJS, Reagent, Less, WebGL, Material UI, Chrome Embedded Framework, Server-sent events
Annet
Design, eZ Publish, ActiveMQ, Buster.JS, Sinon, Optimus, clojure.spec, Jasmine, JUnit, Karma, Stasis, Chai, Mocha, Grunt, core.async, Midje, Compass, Jade, Pygments, Component, Ssh, Quartz, JsTestDriver, Browserify, Rake, Markdown, Rails, Om, Spring MVC, Express.JS

Kvalifikasjoner

Prosjekter, sammendrag
OppdragsgiverPeriodeOppdrag
Hafslund Strøm04.2018 - Videreutvikling av Hafslund Strøms app for iOS og Android
Tine Husdyrfag09.2017 - 03.2018Design av domenemodell, applikasjonsarkitektur og utvikling på AWS
Tine Husdyrfag09.2017 - 03.2018Infrastruktur og CI/CD for utvikling mot AWS
Eventum.no01.2017 - 09.2017eventum.no, eventum.com
NRK Origo - Potion2015-2016Origo/Potion
NRK Radioarkiv2015Radioarkiv
NRK Origo09.2014 - 12.2014Redigeringsstøtte
NRK - Bidrag2014Bidrag
Schibsted Payment ID (SPiD)03.2014 - 09.2014Løsning for API-dokumentasjon
Schibsted Payment ID (SPiD)03.2014 - 09.2014Frontend for ny innlogging
FINN Småjobber09.2012 - 03.2014FINN Småjobber
Gitorious AS2011-2013Gitorious-programvaren
Gitorious AS2011-2013Drift gitorious.org
Programutvikling2011-2015Månedlige kurs i JavaScript og TDD med JavaScript
FINN Oppdrag2011-2012FINN Oppdrag
Nordea2010Nordea Android app
Adecco2010Adecco Android app
Telenor2010-2011Ny frontend for telenor.no
Shortcut2009-2011Diverse interne apper
Apotek 12009konkurranse.apotek1.no
Telenor2009Ny frontend for online.no
IXD2007-2008webdagene.no
Storebrand2007-2008Ny frontend for storebrand.no
IXD2007-2009reiseliv.no
Storebrand2006-2007Storebrand Skadeforsikring
Cosmopolite2006-2013cosmopolite.no
IXD2005-2009Diverse mindre websider basert på eZ Publish
Rarelink2005-rarelink.no
IXD2004-2005flysiden.no
Universitetet i Oslo2002-2003apollon.uio.no

Prosjekter

Arbeidsgiver: Kodemaker Systemutvikling AS

OppdragsgiverPeriodeOppdrag
Hafslund Strøm04.2018 -

Videreutvikling av Hafslund Strøms app for iOS og Android, samt tilstøtende backend-systemer og infrastruktur.

Teknologi: ClojureScript, Cordova, SVG, D3, Terraform, HashiCorp Packer, Amazon Web Services (AWS), Aws ec2, AWS IAM, AWS RDS, Route53, AWS VPC, Docker swarm, Traefik, fluentd, Datadog, Git
Tine Husdyrfag09.2017 - 03.2018

Tine Husdyrfag utvikler tjenester for Tines produsenter. Prosjektet utvikler ny platform basert på Amazon Web Services (AWS) for morgendagens tjenester.

Jobbet med design av deler av det grunnleggende domenet (eiere) for nye tjenester og hvordan dette spiller sammen med autentisering og autorisasjon i platformen som helhet. Jobbet med arkitektur og design av løsninger etter CQRS-prinsippet, samt en pragmatisk tilnærming til event sourcing (blant annet med bruk av Datomic).

Utviklet funksjonalitet med AWS Lambda, Api Gateway, DynamoDB, Kinesis og andre AWS-ressurser. Modellert deler av domenet som en graf, implementert dette med Datomic.

Teknologi: Datomic, Amazon Web Services (AWS), DynamoDB, AWS IAM, AWS Lambda, AWS Api Gateway, OpenID Connect, Material UI, Domain-driven design, Kinesis, Cloudwatch, Cloudfront, AWS RDS, AWS S3, Auth0, JIRA, Confluence, Continuous Delivery, Continuous Integration, Domain-driven design, Alpine, Ubuntu, CQRS, Event sourcing, Micro services, Figwheel
Tine Husdyrfag09.2017 - 03.2018

Tine Husdyrfag utvikler tjenester for Tines produsenter. Prosjektet utvikler ny platform basert på Amazon Web Services (AWS) for morgendagens tjenester.

Design og oppsett av nettverksløsning. Automatisering av oppsett og utforming av applikasjonsplatform med AWS Cloudformation, bash og annet. Oppsett for frontendapplikasjoner med S3/Cloudfront/Route 53. Jobbet med sikkerhetsløsning basert på Oauth 2.0 og OpenId Connect. Utviklet løype for CI/CD basert på Concourse.

Teknologi: Amazon Web Services (AWS), AWS VPC, AWS ECS, Concourse, AWS IAM, Docker, Bash, OpenID Connect, Nginx, Go, DynamoDB, Kinesis, AWS Lambda, AWS Api Gateway, Route53, Cloudwatch, Cloudfront, AWS RDS, AWS S3, Auth0, JIRA, Confluence, Continuous Delivery, Continuous Integration, Alpine, Ubuntu, Micro services, Datadog
Eventum.no01.2017 - 09.2017

Eventum (eventum.no/eventum.com) er «Airbnb for event-lokaler» - møterom, konferanselokaler, restauranter/hoteller/slott til bursdag, bryllup og andre sammenkomster samles på et sted og gjør det lett for arrangører å finne og sammenligne tilbud på lokaler.

Jeg automatiserte oppsett og deployment av løsningen med Ansible, Docker og bash. Jobbet med videreutvikling av eksisterende tjeneste. Designet arkitektur for og utviklet både backend og frontend for ny spesialisert kommunikasjonsløsning for arrangør og utleier. Utviklet ny sikkerhetsløsning basert på OAuth 2.0 og OpenId Connect.

Teknologi: Datomic, Clojure, ClojureScript, Ansible, Docker, JavaScript, Node.js, React, Elasticsearch, Centos, Auth0, OpenID Connect, AWS IAM, AWS S3, Leiningen, Asana, Maven, HAProxy, Nginx, DataScript, Oauth2, Bash, Micro services, core.async, clojure.spec, Component, Server-sent events, Reagent, Figwheel, Quartz, Datadog
NRK Origo - Potion2015-2016

Søk i NRKs enorme mengder videoklipp - både nettklipp, ting som har gått på TV og råstoff. Utviklet en søkekomponent for ‘smart søk’ som gjør utstrakt bruk av autocomplete, forslag til forskjellige filtreringer, og gjør andre grep for å styre brukeren i retning av et detaljert søk. Søket ble implementert i Elasticsearch gjennom en node.js/Express webserver, og med UI skrevet i React. UI-et ble skilt ut som et bibliotek for intern gjenbruk, og er nå i bruk i flere applikasjoner.

Teknologi: JavaScript, Elasticsearch, Node.js, React, Docker, Mesos, Octopus Deploy, TeamCity, JIRA, Micro services, Babel, Yarn
NRK Radioarkiv2015

Implementerte nytt design for NRKs interne Radioarkiv, som brukes internt for research og gjenbruk av arkivmatriale. Designet ble implementert i form av en styleguide som senere ble den sentrale UI-komponenten i paraply-prosjektet Origo, som favner alle NRKs egenproduserte systemer rettet mot interne arbeidsflyter.

Teknologi: JavaScript, CSS, Responsive Design, Less
NRK Origo09.2014 - 12.2014

Laget en lettvekts bilderedigeringskomponent (litt effekter, crop, skalering, panorering) med web-teknologi. Komponenten benyttes som plugin i video-redigeringsverktøyene Adobe Premiere Pro og Quantell.

Teknologi: JavaScript, WebGL, Chrome Embedded Framework, AngularJS, Jasmine, Karma, Node.js
NRK - Bidrag2014

Laget en app som viser en strøm av bidrag som NRKs journalister og andre ansatte sender inn fra ‘felten’. Brukes internt i NRK til å både få oversikt over hva som kommer inn, men også til å se status for viderebehandling av bilder og video i andre systemer (transkoding, arkiv osv).

Teknologi: JavaScript, React, Node.js, Buster.JS, Express.JS, MySQL, Jade, Compass
Schibsted Payment ID (SPiD)03.2014 - 09.2014

Utviklet nytt nettsted for teknisk dokumentasjon. Vi gjør mange grep for å holde dokumentasjonen aktuell og oppdatert. Sidene blir bygget opp basert på informasjon hentet rett fra SPiD sitt REST API. Eksempler i guides hentes fra fungerende eksempler, for å sikre at kodeeksempler ikke er utdatert.

Teknologi: Clojure, Responsive Design, Stasis, Optimus, Midje
Schibsted Payment ID (SPiD)03.2014 - 09.2014

Prototypet ny innlogging, registrering og kjøpsflyt for SPiD, med fokus på brukervennlighet, støtte for mobil, og forenkling av tekniske løsninger.

Teknologi: HTML, CSS, Responsive Design, JavaScript, Grunt, Mocha, Chai
FINN Småjobber09.2012 - 03.2014

Hjalp FINN Småjobber-teamet med lanseringen av løsningen rett før jul 2013. Har jobbet med hele løsningen, men med fokus på frontend. Implementert nytt ajax-søk med React.JS og hjulpet andre på teamet med å styrke sin frontend-kompetanse.

Teknologi: JavaScript, Spring MVC, Karma, Jasmine, Browserify, Sinon, Java, JUnit
FINN Oppdrag2011-2012

Klargjorde et avansert registreringsskjema for utrulling til flere markedsplasser ved å modularisere koden til komponenter som kunne settes sammen til forskjellige skjemaer.

Teknologi: JavaScript, JsTestDriver, Sinon, Spring MVC, Java, JUnit

Foredrag/kurs
NavnStedNår
DatomicForedrag for Fürst Medisinsk Laboratorium ITMai 2018
DatomicForedrag for Hafslund/FortumMai 2018
DatomicForedrag for BringApril 2018
Å Bygge sin egen Infrastruktur på AWSKodemaker fagdagApril 2018
DatomicForedrag for Tine HusdyrfagNovember 2017
I put 7 years of meal data in Datomic - Here's what I learnedJavaZoneSeptember 2017
Talk: I put 7 years of meal data in Datomic - Here's what I learnedNDC OsloJuni 2017
Datamodellering med DatomicInternforedrag i KodemakerJanuar 2017
Test-Driven JavaScriptForedrag hos IterateOktober 2016
Webutvikling med ReactIntern workshop i NRKJuni 2016
JavaScript og React, 2 dagers kursInternt i ConaxApril 2016
The Imminent Future of JavaScriptJavaZone AcademyFebruar 2016
Webutvikling med ReactInternforedrag i WebstepFebruar 2016
The Imminent Future of JavaScriptFramsiaNovember 2015
JavaScript for programmers, 3-dagers kursProgramutviklingNovember 2015
TDD og Arkitektur med JavaScriptIntern workshop i NRKNovember 2015
JavaScript for programmers, 2-dagers kursCiscoNovember 2015
JavaScript DecoupledForedrag hos Capra ConsultingOktober 2015
Test-driven JavaScript Development, 3-dagers kursProgramutviklingSeptember 2015
EcmaScript 2015: The Close Future of JavaScriptJavaZoneSeptember 2015
You can't change this: Immutability in JavaScriptNDCJuni 2015
Immutable JavaScriptWeb RebelsMai 2015
JavaScript for Programmers, 3-dagers kursProgramutviklingFebruar 2015
Thinking Outside the DOMNDC LondonDesember 2014
JavaScript for Programmers, 3-dagers kursProgramutviklingNovember 2014
ZombieCLJ: Live parprogrammeringJavaZoneSeptember 2014
Test-Drevet JavaScript, 1-dags workshopInternt i VismaSeptember 2014
JavaScript for Developers, 3-dagers kursProgramutviklingAugust 2014
Functional UI ProgrammingNDC 2014, foredrag om React.js, ClojureScript og OmJuni 2014
Functional UI ProgrammingflatMap(Oslo)Mai 2014
Functional UI programmingOslo Socially FunctionalApril 2014
JavaScript for programmers, 3-dagers kursProgramutviklingApril 2014
Party in the front, party in the backBooster conf, Bergen - node.js og React.js workshopApril 2014
JavaScript for programmers, 3-dagers kursProgramutviklingFebruar 2014
JavaScript for programmers, 3-dagers kursProgramutviklingDesember 2013
JavaScript for programmers, 3-dagers kursProgramutviklingOktober 2013
Test-driven JavaScript Development, 3-dagers kursProgramutviklingSeptember 2013
JavaScript for programmers, 3-dagers kursProgramutviklingAugust 2013
Test-driven JavaScript Development, 3-dagers internkursStartsiden.noApril 2013
Test-driven JavaScript Development, 3-dagers kursProgramutviklingApril 2013
JavaScript for programmers, 3-dagers internkursStartsiden.noMars 2013
JavaScript for programmers, 3-dagers kursProgramutviklingMars 2013
Unit testing with Buster.JSCapraJanuar 2013
JavaScript for programmers, 3-dagers kursProgramutviklingJanuar 2013
Introduction to Git, 1-dags kursNetsJanuar 2013
Pure, functional JavaScriptFelix Aker BryggeDesember 2012
Automated testing and JavaScriptMesanNovember 2012
Pure, functional JavaScriptØredevNovember 2012
Test-driven JavaScript Development, 3-dagers kursProgramutviklingNovember 2012
JavaScript for programmers, 3-dagers kursProgramutviklingOktober 2012
Zombie TDD: Live parprogrammeringJavaZoneSeptember 2012
Test-driven JavaScript Development, 3-dagers kursProgramutviklingSeptember 2012
Pure, functional JavaScriptJavaZoneSeptember 2012
JavaScript BasicsInMetaSeptember 2012
Automated testing and JavaScriptNIFSLSeptember 2012
Node.JSDataforeningenAugust 2012
JavaScript for programmers, 3-dagers kursProgramutviklingAugust 2012
Working with Buster.JSAugust 2012
Pure JavaScriptNDCJuni 2012
Pure, functional JavaScriptWebRebelsMai 2012
Test-driven JavaScript Development, 3-dagers kursProgramutviklingMai 2012
JavaScript for programmers, 3-dagers kursProgramutviklingApril 2012
Test-Driven JavaScript DevelopmentSDC (Sverige)April 2012
Pure, functional JavaScriptSDC (Sverige)April 2012
Buster.JSBergen NNUHMars 2012
Node.JSBergen NNUGMars 2012
Unit testingJavaScript Days, KølnMars 2012
Sinon.JSJavaScript Days, KølnMars 2012
TDD with JavaScriptJavaScript Days, KølnMars 2012
Buster.JS/TDD workshop (med August Lilleaas)BEKKFebruar 2012
JavaScript: From Zero to Hero in 1.5 daysKonwit, StavangerFebruar 2012
Step away from the for-loop!FramsiaJanuar 2012
Introduction to JavaScriptUnit4Januar 2012
Test-driven JavaScript Development, 3-dagers kursProgramutviklingNovember 2011
Test-driven JavaScript Development, 3-dagers kursQuestbackNovember 2011
Writing a book experience report: Test-Driven JavaScript DevelopmentØredevNovember 2011
Test-Driven JavaScript DevelopmentØredevNovember 2011
Divide and conquer: JavaScript design and architectureBBC, LondonOktober 2011
JavaScript design and architecture, workshopMiles, BergenSeptember 2011
Hands-on Buster.JSFrontendconf, ZurichSeptember 2011
Mythbusters: JavaScript EditionJavaZoneSeptember 2011
JavaScript design and architectureJavaZoneSeptember 2011
Buster.JS LyntaleCiscoSeptember 2011
Test-driven JavaScript Development, 3-dagers kursProgramutviklingJuni 2011
TDDoing it right (TDD/BDD/Testing "shootout")FramsiaJuni 2011
JavaScript design and architectureNDCJuni 2011
Test-driven JavaScript DevelopmentNDCJuni 2011
JavaScript unit testingJavaBin SørlandetJuni 2011
Test-Driven JavaScript DevelopmentAPTMai 2011
Test-Driven JavaScript Development, workshopFalsy Values, WarsawaMai 2011
Test-Driven JavaScript DevelopmentRoots conf, BergenApril 2011
Buster.JSFramsiaApril 2011
Test-driven JavaScript Development, 3-dagers kursProgramutviklingApril 2011
Test-driven JavaScript DevelopmentKomplett.noFebruar 2011
JavaScript-arkitektur for liten og for storFinn.noFebruar 2011
JavaScript: Design og strukturFinn.noFebruar 2011
Sinon.JS - Simplifying JavaScript testingXP Meetup, OsloJanuar 2011
Test-driven JavaScript DevelopmentBEKKJanuar 2011
Unit-testing JavaScriptJavaZoneSeptember 2010
Unit-testing JavaScriptJavaBin/FramsiaSeptember 2010
Test-first JavaScriptFronttrends, WarsawaSeptember 2010
JavaScript testing toolsirb.no, OsloDesember 2009

Bidrag til open source

ClojureScript

JavaScript

Clojure

Ruby


Andre faglige bidrag

Utdanning
SkoleÅrRetning
Institutt for informatikk, UiO2001-2005Systemutvikling og digital signalbehandling

Sertifiseringer/ kurs
KursnavnÅr
Styrekurs for daglig leder og styremedlemmer2018Kursbevis

Språk
SpråkMuntligSkriftlig
NorskMorsmålMorsmål
EngelskMeget godFlytende

Anbefalinger

Geir Børdalen, Prosjektleder, Origo-prosjektet, NRK

Christian har vært en uvurderlig ressurs i Origo-prosjektet i nesten 2 år. Han har jobbet med front-end utviklingen av produktene Potion og Radioarkivet. Dette er produkter som har endret NRK fundamentalt i forhold til tilgang og gjenbruk av arkivmateriale innenfor både radio og TV. Noen av produktene Christian har vært sentral i utviklingen av, har tilført NRK varig verdi for mange år framover. Vi har også verdsatt Christian for hans evner til teamarbeid, evne til innovasjon og alltid positive innstilling.

Stefan Andreas Englien, Teamleder, FINN Småjobber

Christian Johansen har vært innleid som konsulent på utviklingsteamet til FINN Småjobber i tre måneder fra og med november 2013 til februar 2014. Vi behøvde en frontend-guru, og vi valgte Christian basert på FINN Oppdrags gode erfaringer med ham. Min rolle er å lede utviklingsteamet, og jeg har dermed vært hans nærmeste leder i perioden. I tiden hos FINN Småjobber har Christian hjulpet oss med javascript-tester, ytelse, forenkling av rammeverket vårt, og selvfølgelig mye ny frontend-funksjonalitet. Han har også vært til stor hjelp med git-utfordringer, backend-arkitektur og produktutviklingen av FINN Småjobber. Christian er svært omgjengelig og hyggelig, og har vært et positivt tilskudd til teamet. Jeg er svært fornøyd med hans innsats for oss, og anbefaler ham på det sterkeste!

Karl Philip Lund

Christian is most likely the most talented web developer I've ever worked with. He is easy to communicate with, flexible to work with and has the ability to deliver success even when the requirements/instructions are unclear. He will add value to any web project. I give him my highest recommendations.