Christian Johansen

Christian er en engasjert og allsidig programmerer. Gjennom sine kurs og foredrag har han gjort seg kjent som en meningssterk og kvass programmerer som tar design, testing og kvalitet seriøst. Christian har lang erfaring med både frontend og backend såvel som devops-nivå oppsett, provisjonering og drift av applikasjonsservere. Han trives godt både alene og i team, og fungerer både som humørspreder og kritisk røst i samarbeid med andre.

Favoritter for tiden: Datomic, Emacs og ClojureScript
Bruker på jobben: ClojureScript, AWS, Docker og Concourse
Vil lære mer: Haskell, AWS, Elm, Go og OpenID Connect

Christians anbefalinger

How to Use npm as a Build Tool

Grunt, Gulp og andre JavaScript-baserte task runnere skaper flere problemer enn de løser. Denne artikkelen viser på forbilledlig vis hvordan npm i de aller fleste tilfeller er mer enn tilstrekkelig, og tilbyr konkrete alternativer til de mest vanlige bruksområdene for Grunt og dens like. Omfavn en smidigere frontend-stack du også! Les artikkelen

React: Rethinking best-practices

Pete Hunt, en av hodene bak JavaScript UI-rammeverket til Facebook og Instagram, React, forteller om tankene bak. Foredraget fra JSConf.eu 2013 utfordrer en del etablerte sannheter og presenterer en måte å tenke på web-frontend-programmering på som sammenfaller med klassisk UI-programmering og som virkelig fokuserer på separation of concerns. Se foredraget

The Future of JavaScript MVC Frameworks

David Nolen, Clojurescript-superstjerne, forteller om sitt ‘Om’, Clojurescript-API over Facebook’s React. Om går enda noen skritt fra hva React tilbyr ved å servere hele pakka med immutable datastrukturer og et funksjonelt API. Artikkelen viser samtidig hvordan dagens mest populære MVC-rammeverk for JavaScript er langt fra å tilby en tilfredstillende løsning på problemene vi som frontendutviklere møter. Les artikkelen

Snakker gjerne om

Mat, brød og øl

Som programmerer tar jeg stor glede i å skape. Som aspirerende hobbykokk tas denne gleden ut i skaperverk som i tillegg kan nytes med smaksløkene. Jeg tar like stor glede i å bruke en hel lørdag på å lage Lasagne fra bunnen som jeg gjør av en kveld med surdeigsbrødbaking eller ølbrygging. Eller å pleie chiliplantene jeg har rundt i huset på vinteren, og i hagen på sommeren.

Musikk

Jeg har spilt i band siden jeg gikk på ungdomsskolen, og holder fortsatt gitarspillet ved like gjennom bandet Execration, som ble foræret en Spellemann for 2014. Jeg har alltid vært en sucker for aggressiv musikk, fra mine jyplingår som fan av Nirvana og skranglepunk til mine senere år som metal-connoisseur av ypperste rang.

Sideprosjekter

Learning Functional JavaScript

Et grundig videokurs i funksjonell programmering med JavaScript. Laget for Packt forlag i 2015. Sjekk ut kurset

Test-Driven JavaScript Development

Etter noen år med fordypning i og blogging om TDD med JavaScript kom jeg litt tilfeldigvis i kontakt med Addison-Wesley. Resultatet ble en bok som kom ut i 2010. Sjekk ut boka

ZombieCLJ

I denne oppfølgeren til ZombieTDD lager Magnar og jeg spill med Clojure og ClojureScript. Det går i parprogrammering hele veien. Og jaggu skriver vi ikke flere tester først. Skulle tro XP hadde noe for seg. Se videoene

Christians bloggposter

Annotating Datomic transactions

En artikkel om Datomics transaksjoner, og hvordan de kan utvides med app-spesifik informasjon for bedre auditing og mer. Les posten

Querying across Datomic databases

Et konkret eksempel på hvordan du kan gjøre datalog spørringer over flere databaser samtidig med Datomic. Les posten

Immutability in JavaScript

Introduksjon til immutability, og hvordan jobbe med immutable data i JavaScript Les posten

Christians foredrag

Talk: I put 7 years of meal data in Datomic - Here's what I learned

Datomic is an append-only database, designed from the ground up with modern applications and hardware in mind. It never loses data, it has an RDF-like approach to schemas, it's really fast, and it has a powerful query language borrowed from Prolog that expresses queries as data structures. In short: it's pretty awesome. Se video

EcmaScript 2015: The Close Future of JavaScript

I juni 2015 ble siste versjon av EcmaScript - spec-en til JavaScript - ferdigstilt. EcmaScript 2015 (eller EcmaScript 6 som det en gang het) er tidenes største oppgradering av språket, og i dette foredraget gjennomgås en hel haug med eksempler på nye features og hvordan de kan brukes. Alt kodes live med hjelp av Emacs. Se video

You can't change this: Immutability in JavaScript

Hva er immutability? Hva er hensikten? Kan man benytte seg av det i JavaScript? Hvordan? Hvilke konsekvenser har immutability for UI-programmering? Dette foredraget gir deg svar på disse spørsmålene, med mer til. Se video

ZombieCLJ: Live parprogrammering

Se Christian og Magnar parprogrammere på nettspill med Clojure og ClojureScript. Denne økten er for de som syns det er moro å se folk parprogrammere mens de prater om hva de driver med. Det blir Clojure med hanskene av, så man må tåle å ikke forstå alt. De som er helt nye til funksjonell programmering kan muligens få eksplodert hodet. Definitivt live koding. Se video

Functional UI Programming

En introduksjon til React.js, med sammenligning av populære MC*-rammeverk, samt et eksempel på bruk i form av live-koding av minesveiper med ClojureScript og Om (en React-wrapper). Se video

Zombie TDD: Live parprogrammering

Magnar og jeg setter oss ned med emacsen og parprogrammerer foran publikum. Se hvordan to typer som digger JavaScript angriper problemer og gjør koden testbar. Se video

Pure JavaScript

Kast de objekt-orienterte krykkene og se denne introduksjonen til funksjonell programmering med JavaScript Se video

Test-driven JavaScript Development

En praktisk gjennomgang av TDD i JavaScript. Foredraget er en times live-kode-sesjon der jeg lager et autocomplete/type-ahead søk, test-first. Se video

JavaScript design and architecture

En liten inspirasjonsprat om å finne gode abstraksjoner for frontend-programmering Se video Se slides

Mythbusters: JavaScript Edition

Få programmeringsspråk er omgitt av så mye unøyaktig, irrelevant og direkte feil informasjon og misforstått 'hjelpematriell'. I dette foredraget tar jeg for meg noen av de vanligste misforståelsene, og prøver gjennom eksempler å oppgradere publikums JavaScript-kunnskap. Se video Se slides

Open source

JavaScript

  • Utviklet Sinon.JS. Et spy-/stub- og mocke-bibliotek for JavaScript.
  • Utviklet Buster.JS. Ambisiøst test-toolkit for JavaScript.
  • Utviklet Uinit. Et inisialiserings-system for UI-komponenter.
  • Utviklet Cull.JS. Funksjonell verktøykasse for JavaScript.
  • Utviklet Dome. Funksjonell verktøykasse for DOM-manipulering.
  • Har bidratt til karma-referee og carousel-js.

Clojure

  • Utviklet Prone. Bedre feilmeldinger og debugging for Clojure webapps.
  • Utviklet asciidoclj. Rendre asciidoc i Clojure.
  • Utviklet hiccup-find. Test-helpere for hiccup.
  • Har bidratt til Optimus.

Ruby

  • Utviklet dolt. En git repository-browser for Ruby. Kjernen i fil-browseren til Gitorious.
  • Utviklet Makeup. Et Ruby-bibliotek for å rendre markdown med kodeblokker som syntax highlightes.
  • Utviklet UseCase. Strukturerte abstraksjoner for ikke-triviell programflyt. Biblioteket ble opprinnelig skrevet for å redusere kompleksiett i Ruby on Rails-applikasjoner, men er ikke spesifikt avhengig av Rails. Biblioteket reduserer koblinger mellom modeller og kontrollere, og kan potensielt redusere kompleksiteten i begge betraktelig.
  • Har bidratt til Gitorious.

Prosjekter

Tine Husdyrfag 2017

Etablering av ny skyplatform og utvikling av applikasjoner på denne

Eventum.no 2017

Utvikling av backend og frontend for tjenesten eventum.no. Automatisering av server-oppsett, bygg og deployment.

NRK Origo - Potion 2015-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.

NRK Radioarkiv 2015

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.

NRK Origo 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.

NRK - Bidrag 2014

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).

Schibsted Payment ID (SPiD) 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.

Schibsted Payment ID (SPiD) 2014

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

FINN Oppdrag 2011-2012

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

FINN Småjobber 2013-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.

Se flere prosjekter i Christians CV


Christian Johansen

Kodemaker
+47 934 17 480
christian@kodemaker.no