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

Partisjonering av data

map, filter og reduce er nyttige verktøy som mange har i verktøykassa si. Oppi der burde også partition være, og jeg skal vise deg hvorfor.

Les artikkel
Kontinuerlig utrulling - også på klienten

Du har en Single Page Application (SPA). Brukerne har typisk appen åpen i nettleseren lenge - mange dager, eller til og med uker. Samtidig sitter du og dytter ut nye versjoner opptil flere ganger om dagen. Hvordan i alle dager skal du sørge for at folk ikke blir sittende på en gammel frontend som kanskje har bugs du allerede har fiksa, eller bruker en utdatert API-klient? Vel, her får du ett forslag.

Les artikkel
Kubernetes deployments uten nedetid
Kubernetes og Kontinuerlig leveranse

Når du deployer appen din til det romskipet av en rigg som er Kubernetes så skjer det uten noen form for nedetid, ikkesant? Dårlige nyheter: med mindre du har gått veldig aktivt inn for det har tjenestene dine svært sannsynlig litt nedetid under deployment. Men hvorfor?

Les artikkel

Foredrag

Screencasts

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

  • 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.
  • pharmacist - Et bibliotek for deklarativ utførelse av en serie operasjoner som kanskje kan feile. Typisk use-case er orkestrering av nettverkskall, men Pharmacist er ikke begrenset til dette.
  • 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

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.

Fortum
Sanity, Clojure, Varnish, Responsiv design og Datadog

Utviklet nytt nettsted for Fortums strømtilbud (strom.fortum.no). Innholdet forvaltes i det hodeløse CMS-et Sanity, mens nettsidene er god gammeldags statisk HTML, levert av en Clojure-applikasjon bak Varnish for maksimal ytelse.

Fortum
ClojureScript, Clojure, PostgreSQL, Responsiv design og Datadog

Utviklet et smart bestillingsskjema for strøm. Løsningen søker opp kunden i flere registre, inkludert Elhub, og klarer i de aller fleste tilfeller å hjelpe folk med å bestille strøm ved å kun oppgi telefonnummer og epost-adresse. Løsningen passerte ekstern sikkerhets- og personvernsgjennomgang med glans.

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