Christian Johansen

Systemutvikler

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 kontinuerlig integrasjon og leveranse (CI/CD), samt prinsipper for å kjøre applikasjoner i skyen.

Gjennom sine kurs og foredrag har han gjort seg kjent som en meningssterk og kvass programmerer som tar design, testing og kvalitet seriøst. Han trives godt både alene og i team, og fungerer både som humørspreder og kritisk røst i samarbeid med andre.

Teknologi

Favoritter for tiden:
Vil lære mer:

Christians anbefalinger

Konsulenteriet må DØ!
Konsulenteri

Erik Assum gir en tordnende god lyntale om hva man egentlig burde bruke konsulenter til, og hvordan en konsulent er, eller ihvertfall burde være, noe annet enn en vikar.

Se lyn/torden-talen
Simple Made Easy

Det er ikke lett å lage noe enkelt. Rich Hickey snakker om forskjellen på nærliggende (subjektivt lett) og ukomplisert (objektivt enkelt). Og implikasjonene for hvordan du bør tenke rundt software.

Se foredraget
How to Use npm as a Build Tool
JavaScript, Node.js, npm, Grunt og Gulp

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

Christian snakker gjerne om

Mat, brød og øl

Jeg har alltid vært interessert i mat, og over tid har interessen bredt om seg: Interessen for meksikansk mat har gjort chilibonde av meg, med 60 planter på det meste. Interessen for fermenterte produkter har ført til en mengde glass med fermenterte grønnsaker, saurkraut, øl, og ikke minst brød - bakt med og uten surdeig tilnærmet daglig.

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. Mine musikalske røtter finner du innen rock og metal, men som jeg eldes får jeg stadig bredere musikksmak, og de senere årene har det gått mye i 70-talls progrock.

Bloggposter

En Clojure-funksjon til å bli glad av

Det er mye å glede seg over i Clojure: pure functions, immutability, og REPL, for å nevne noen store ting. I dag skal vi heller se på to bittesmå, men svært nyttige funksjoner.

Les artikkel
Hva er frontendens domene?

En forutsetning for å treffe med softwaredesign er at vi har god kontroll på domenet vi opererer i. Men hva er egentlig domenet til frontendkoden din?

Les artikkel
Hva er egentlig et REPL?

Et godt REPL blåser liv i programmet ditt og lar deg utvikle det fra innsiden av den kjørende prosessen. Bli med, så skal jeg forsøke å forklare akkurat hvorfor et REPL er det essensielle verktøyet du kanskje ikke visste at du mangler i (arbeids)livet ditt.

Les artikkel

Foredrag

Screencasts

Parens of the dead

En screencast i samme ånd som Zombie CLJ, denne gangen på engelsk.

Zombie CLJ - Clojure og ClojureScript

I denne oppfølgeren til Zombie TDD lager Magnar og Christian nettspill fra scratch med Clojure og ClojureScript.

Sideprosjekter

TempCalc

Temperatur er viktig i gjærbakst. Ideellt sett angir en oppskrift hvilken temperatur deigen skal ha etter endt elting. Denne kalkulatoren hjelper deg med å finne riktig temperatur på vannet for å nå en gitt deigtemperatur. Og andre temperatur-kombinasjonsproblemer.

Shufflify
Go, AWS Lambda, Serverless og AWS Api Gateway

Til bilturene med familien er det behov for en shuffle-funksjon som tar hensyn til at “alle skal få sitt”. Jeg lager en tjeneste i Go som løser dette svært essensielle problemet.

Learning Functional JavaScript

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

Bidrag til fri programvare

  • porfolio - Et verktøy for å jobbe med UI-komponenter. Lar deg vise mange scenarioer for samme komponent i kombinasjon med forskjellige skjermoppløsninger, bakgrunnsfarger, osv. Startet som en Clojure-versjon av Storybook.js, men lever nå sitt eget liv.
  • m1p - Et datadrevet bibliotek for å jobbe med i18n, theming og andre lignende problemstillinger (der du ønsker å trekke konkret innhold ut av implementasjonen).
  • courier - Et høynivå http-bibliotek for Clojure. Lar deg uttrykke avhengigheter mellom requests (“hent tokenet fra cache eller HTTP før du gjør denne requesten”), og gir deg verktøy for retries og caching som kan benytte informasjon utover hva HTTP-protokollen gir.
  • imagine - Et verktøy for å skalere, croppe, og gjøre andre transformasjoner på bilder før de serves på internett. Kan brukes som en Ring-middleware, eller til å generere transformerte/optimaliserte bilder til disk.
  • dumdom - Et lettvektsalternativ til React for ClojureScript: Komponenter for snabbdom som er API-kompatible med Quiescent.
  • gadget-inspector - Utviklingsverktøy for ClojureScript og Clojure - visualiserer data i en Chrome-extension slik at man har full innsikt i kjøretids-tilstanden til applikasjonene under utvikling.
  • Sinon.JS - Et spy-/stub- og mocke-bibliotek for JavaScript.
  • Buster.JS - Ambisiøst test-toolkit for JavaScript.
  • Prone - Bedre feilmeldinger og debugging for Clojure webapps.
  • asciidoclj - Rendre asciidoc i Clojure.
  • hiccup-find - Test-helpere for hiccup.
  • Uinit - Et inisialiserings-system for UI-komponenter.
  • dolt - En git repository-browser for Ruby. Kjernen i fil-browseren til Gitorious.
  • Makeup - Et Ruby-bibliotek for å rendre markdown med kodeblokker som syntax highlightes.
  • 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.
  • Cull.JS - Funksjonell verktøykasse for JavaScript.
  • Dome - Funksjonell verktøykasse for DOM-manipulering.
  • Har bidratt til Quiescent, Gitorious, Optimus, Stasis, Collage, karma-referee og carousel-js

Prosjekter

Fortum
Clojure, Datomic og Capacitor

Utviklet et produkt for smart varmestyring for Fortums kunder. Løsningen integrerer med varmeovner og varmepumper og styrer temperaturen opp og ned for kunden basert på deres preferanser og vaner. Løsningen styrer også etter spotpris på strøm, slik at kunden kan spare penger på bekostning av noe komfort når prisen er høy. Løsningen leveres både via Fortum Norges app og Min side, og som frittstående iOS- og Android-app i Sverige og Finland.

Fortum
Clojure og Datomic

Designet og utviklet ny logintjeneste for Fortums apper, Min side og andre systemer. Tjenesten integrerer med flere interne kundesystemer, tilbyr passordløs innlogging via epost og/eller telefon, samt login med BankID via Signicat. Løsningen tilbyr også kontodeling for kunder, og kjører mot flere forskjellige kundesystemer i forskjellige markeder. Jeg hadde rollen som løsningsarkitekt og utvikler i dette prosjektet, som ble løst av et lite team.

Kodemaker
Clojure, Responsiv design, Datomic, Amazon Web Services (AWS) og Puppeteer

Utviklet skinnende ny kodemaker.no. Data leses fra flate filer inn i Datomic, noe som gir en superb programmeringsmodell for å generere de statiske filene som utgjør nettstedet - proppfulle av lenker på kryss og tvers i det etterhvert så omfangsrike faglige innholdet vårt. Designet er levert av Sebastian i Eggs, Magnar og jeg sto for implementasjonen over tre uker. Koden finner du på Github.

Se flere prosjekter

Referanser

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