Kristian Frøhlich

Partner

Kristian er først og fremst en systemutvikler som brenner for å lage gode løsninger til krevende kunder. Drivkraften er teknologiske utfordringer, domenforståelse og samspillet med mennesker som ønsker å levere solide produkter. Hvis Kristian selv får velge teknologi er uten tvil Lisp-dialekten Clojure et naturlig førstevalg. Han brenner sterkt for funksjonell programmering, men har likevel en pragmatisk orientering mot utfordringene som venter og søker alltid etter det beste verktøyet for jobben.

Teknologi

Favoritter for tiden:
Vil lære mer:
Om og Reactive programming

Kristians anbefalinger

Simple Made Easy

Rich Hickey, som har skrevet språket Clojure, forklarer her forskjellen på «Simple» og «Easy». Hovedbudskapet er at mange velger «Easy», men istedet ender opp i en jungel av kompleksitet. Det optimale er da å kombinere «Easy» og «Simple»

Se foredraget
The Functional Database

Dette foredraget av Rich Hickey introduserer og forklarer ideene bak en funksjonell database. Hva om man distanserer seg fra tradisjonelle databaser og sier at data kun kan legges til? Betyr dette at man kan modellere data over tid? Og hva er egentlig fordelen med at data aldri endrer seg? Dette er noen av spørsmålene som blir besvart gjennom en presentasjon som utfordrer etablerte «sannheter».

Se foredraget

Kristian snakker gjerne om

Funksjonell programmering

Det begynnte med Scala og fortsatte med Clojure. Jeg syntes det er utrolig fasinerende å bruke språk og teknologier som er basert på helt andre prinsipper enn det man tradisjonelt kjenner fra den objektorienterte verdenen. Jeg har selv erfart at dette booster produktivitet og i tillegg er gøy når man kommer ut av startgropa.

Styrketrening

Mye av tiden utenfor jobb brukes på et nærliggende treningsstudio. Etter intense dager på jobb er det utrolig deilig å koble helt ut og bare jobbe fysisk. Jeg har erfart at ved å være i god fysisk form orker man også mer når man er tilbake på jobb. Jeg har drevet med flere forskjellige treningsformer opp gjennom årene, men praktiserer nå et klassisk styrketreningsprogram med fokus på de store muskelgruppene.

Bloggposter

Strukturert samtidighet - Veien til et bedre liv

Coroutines i Kotlin er bygd rundt konseptet strukturert samtidighet hvor asynkrone prosesser struktureres i et hieraraki med definerte regler for oppførsel.

Hva om vi løfter denne tanken til et høyere nivå og strukturerer applikasjonene vi bygger på samme måte ? Betyr dette at alle avhengigheter grupperes og inkluderes i en livssyklys som tar høyde for feil-scenarioer ? Og hvordan fungerer dette i en skykontekst hvor vi er innefor rammene av Kubernetes sitt økosystem ?

Les artikkel
Asynkron Dataflyt i Kotlin

Ser du verdien av en asynkron dataflyt og ønsker å implementere dette i Kotlin ? Kanskje har du blitt eksponert for begreper som coroutines, suspend-funksjoner og flows uten at du ble spesielt klokere av den grunn ? Da er denne bloggposten for deg.

Les artikkel
Manipulering av Ikke-Muterbare Datastrukturer i Kotlin

Har du omfavnet funksjonell programmering ? Savner du en effektiv måte å manipulere ikke-muterbare datastrukturer på ? Hva om det faktisk finnes et bibliotek som løser dette på en elegant måte ?

Les artikkel

Prosjekter

FINN
Kotlin, Spring, TypeScript, React og Podium

Som en del av Team Reklameprodukter er en av hovedoppgavene å ferdigstille og produksjonssette NRM - ny reklame master, som blir ansvarlig for lasting av reklame og bannere på tvers av alle vertikaler(bil, reise, torget osv) i FINN-domenet. I hovedsak har det blitt utviklet 3 forskjellige tjenester - 2 backend-tjenester hvor en builder er ansvarlig for innhenting av data, typisk annonser og sammenstilling av disse med tilhørende metadata(hva slags reklame-konfigurasjon er gjeldende) og en provider som server ut dataene på flere forskjellige formater(hovedsaklig JSON) for bruk i klienter. En ferdig utviklet klient, som er tiltenkt brukt av mange vertikaler, er en frontend-applikasjon som server ut alle hestesko-bannerne som finnes over hele FINN-domenet i tillegg kan man be denne om å dekorere f.eks resultatsider slik at man mellom annonser får bannere i henhold til gjeldende konfigurasjon.

Mercell
Kotlin, Arrow, Javalin, Amazon Web Services (AWS) og AWS S3

Mercell har i løpet av kort tid etablert seg som en av de aller største aktørene innenfor offentlig anbud. Ved fortløpende å kjøpe opp konkurenter i både Norge, Skandinavia og Europa har selskapet vokst i et forrykende tempo. Antallet ansatte og tekniske løsninger som oppkjøpene medfører innebærer en stor utfordring å vedlikeholde over tid. Ved å utvikle helt nye og gjenbrukbare tjenester på AWS i skyen er tanken at alle nye og eksisterende selskaper som er en del av Mercell skal samle seg rundt et sett av felleskomponenter. Det er alikevel lagt opp til høy grad av autonomitet i de forskjellige teamene og all form for kommunikasjon mellom disse gjøres helt datadrevet med meldingsutveksling over Kafka(Aiven). Oppgavene har i stor grad vært domenespesifikke innen distribusjon og presentasjon. Med distribusjon menes her alle typer kommunikasjonskanaler som mail, sms, Slack osv. Det har i hovedsak blitt utviklet egne tjenester som er selve fundamentet for distribusjonen. En egen pipeline som tar i mot mail formatert som egne meldinger på Kafka blir plukket opp, validert og sendt ut via AWS sin Simple Email Service. Alt av tilbakemeldinger som mottas av AWS blir parset og oversatt til interne dataformater som kan abonneres på av andre team og konsumenter. Presentasjonsdelen er relevant i forhold til hvordan andre team og tjenester ønsker dataene formatert. Dette gjøres via ferdig templates som lett kan modifiseres og tilpasses.

Kolonial(.no)
Google Cloud Platform, Docker, Kubernetes, Terraform og Kustomize

Grunnet eksplosiv vekst og ambisjoner om å gå ut i verden har Kolonial sett behovet for å flytte on premise baserte løsninger over på en arkitektur som er skreddersydd for å skalere. Kolonial sin Nube-plattform bygges rundt Kubernetes på GCP og helautomatiseres ved å kombinere Github sitt eget verktøy for kontinuerlig integrasjon(Github Actions) med ArgoCD for kontinuerlig deployment. Terraform benyttes for å automatisere arkitekturen. Kubernetes manifester bygges helt uten bruk av templates, men med små gjenbrukbare byggeklosser i form av kustomize konfigurasjoner. Det er også lagt opp til høy grad av selvbetjening og utviklet en egen kommandolinje-klient i Go(prototyping i Python) for å hente ut data og status om kjørende applikasjoner. Dette underbygger tanken om autonome team som ikke er avhengig av dyp infrastruktur kompetanse for å håndtere egne applikasjoner på plattformen.

Se flere prosjekter

Referanser

Morten Hanshaugen
Director of Infrastructure and Operations, Finn.no

«Kristian har jobbet godt og selvstendig med flere av utviklerteamene i FINN i 2018/2019. Han har implementert enkle containere, Kubernetes, Java og Redis abstraksjoner slik at kompliserte sesjonsavhengige kildekoder nå kjører godt på FINNs moderne stateless Kubernetes-infrastruktur. Kristian anser alltid kunnskapsoverføring som en del av løsningen og er flink til å gi tilbakemeldinger. Han har vært en god lagspiller som teamene har satt pris på å få hjelp av. Vi anbefaler Kristian på det varmeste.»

Stine Marconini Bjerke
Technical Domain Architect, Tomra

«From June 2016 through March 2018, Kristian Frøhlich was part of our core development team, as a Backend/SysOps developer. He had a key role in establishing the next generation of TOMRA Digitals IoT platform, built on Amazon Web Services. Main deliveries included design and implementation of platform services, processors and api’s for operational tools to remotely monitor machines, processing and report generation for clearing and financial data, setup and automation of infrastructure components.»

Kristin Bergsager
Prosjektleder NRK

«Kristian er en meget faglig sterk person og vi fikk god nytte av det inn i prosjektet. Han er kunnskapsrik og grundig og kommer med tilbakemeldinger som var med å bringe prosjektet frem på en svært god måte. I tillegg er han sosialt kompetent og bidro positivt inn i prosjektet til både utviklere og resten av prosjektgruppen. Jeg kan anbefale Kristian på det varmeste til andre tilsvarende prosjekt. Han er en verdifull medspiller i slike prosjekt.»

Se flere referanser