Parenteser

Betraktninger fra Mat-teamets grønne enger

Clojure

Clojure er et data-drevet funksjonelt programmeringsspråk. En Lisp, atpåtil. Clojure er laget for å kjøre på en vertsplattform, typisk JVM-en på backend og JavaScript/nettlesere på frontend. Vi i Team Mat bygger det aller meste i Clojure og skriver titt og ofte om å jobbe i dette dynamiske og interaktive språket vi er så glad i.

Flaskehalsen peker på

Kode skal først og fremst leses av mennesker, men når importen tar 50 minutter(!) er det kanskje på tide å gjøre litt ytelsesforbedringer. Vi trodde vi visste hva som var treigt, det stemte ikke.

Lange flate trær

Hjembyen min Fredrikstad er også kjent som Plankebyen, så du kan si at jeg har alle forutsetninger for å forstå tree-seq – funksjonen som lager lange lister av trær.

Når eksempler ikke er nok

Automatiserte tester er som regel eksempelbaserte. Men hvordan tester vi kode der en håndfull eksempler ikke er i nærheten av å være dekkende?

Kode som skriver kode

I verktøykassa til Clojure finner vi blant annet makroer – kode som skriver kode. Ikke det første man bør ty til, men de kan by på elegante løsninger. Som de gjorde for oss denne uka.

Hvilke data kommer her?

Det hender at jeg ser på en ukjent funksjon og lurer på “Hva slags data blir sendt inn her?” I et språk som Clojure uten statiske typer, hvordan håndterer jeg den situasjonen?

Når meldingene presser på

Å ta i bruk ny teknologi er en reise. Fra at alt er nytt og desorienterende via en slags oversikt, til noen realitetsorienterende feilsituasjoner som minner deg på at det er stadig mer å lære. La meg fortelle deg om et konfigflagg i NATS som nylig ga oss en sånn påminner.

Tre løse tanker om «first»

Det slo meg her om dagen at funksjonen first er litt for lett å gripe etter. Den er åpenbart nyttig, men think you a little about! Den blir fort mer trøblete enn man skulle tro ved første øyekast.

Køer i praksis: Flytting av data

Jeg har skrevet mye om hva NATS er og hvordan det funker. Det er på høy tid å si noe om det viktigste: hva skal vi egentlig bruke det til?

En liten titt på Datalog

Datalog er et logisk spørrespråk som ligger et sted mellom Prolog og SQL, noe som unektelig høres ganske esoterisk ut, men som viser seg å være ganske greit når man har tatt en liten titt på det.

Sidestilling med juxt

Kjernebiblioteket i Clojure har rikelig med småfunksjoner man ikke ser hver dag. I dag skal vi se på en hendig liten funksjon med et rart navn. Det er tid for juxt.

Skriv kode istedenfor SQL

Datomic flytter oppslag og spørringer til klienten. Det betyr at du ikke trenger sende avgårde en tekststreng til en annen server, men kan grave i dataene der du er. La oss se på et praktisk eksempel.

Hva om databasen ikke mistet data?

Kildekoden vår bor i git. Det lar oss svare på når enhver linje ble innført i kodebasen, hvem som sist endret den, og hvorfor. Hadde det ikke vært fint om vi hadde like god kontroll på dataene i produksjonssystemene våre? Med Datomic har vi det.

Flate, møre data

Å banke en kyllingfilet flat med en kjøttbanker er nøkkelen til en saftig og smakfull suksess på kjøkkenet. Sånn er det med data også: Flate data er bedre enn nøsta data – men hvorfor?

Data i passe porsjoner

Noen datamengder kan ikke spises i én jafs, men må heller porsjoneres ut i passende mengder. Heldigvis er det lekende lett i Clojure.

Om nøkler og deres bruk

I Clojure kan du sette navnerom på nøkler – en tilsynelatende triviell detalj med store implikasjoner. La oss se litt på hvordan det hjelper oss med datamodellering.

En eksplosjon av data

Datomic er en aldeles nydelig database å jobbe med. Vi starter året med en ny serie med smakebiter av denne funksjonelle, funksjonelle databasen. Først ut er datamodellen som ligger i bunn – og eksplosjoner!

Småkaker og slabberas på podcast

Christian og jeg hadde en hyggelig samtale med Vijay og Ray i episode 92 av (defn podcast). Det ble mye prat om Clojure og Emacs, og litt om livet som vaskeekte statsansatte i Mattilsynet.