Parenteser

Betraktninger fra Mat-teamets grønne enger

Jøss, er du her også?

Trivelig at du stakk innom. Vi er et lite produktteam hos Mattilsynet som jobber med mattrygghet. Her er vår tidvis tekniske blogg hvor vi deler litt av hva vi jobber med, og ting vi lærer på veien.

Så, hvorfor akkurat Parenteser? Vel, vi jobber mye i Clojure, som har rykte på seg å være belemret med unødvendige mengder parenteser. Men nei, ikke bare er de nødvendige, de er aldeles smakfulle - som to fine bananer i headeren. Vi tenker også at disse bloggpostene kommer litt på siden - litt i parentes, om du vil.

Smakebiter av Datomic:
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.

Datamodellering er også UX-design

Det er lett å tenke at brukervennlighet er designerne og frontend-folka sitt ansvar, men mange av valgene vi tar i datamodellen og systemarkitekturen påvirker også hvor hyggelig (eller ikke) det blir å bruke systemene vi lager. La oss se litt nærmere på bruk av unike id-er.

clojure.core:
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.

Nyttig å vite om NATS:
NATS key/value store

At et meldingssystem også skal kunne fungere som en key/value-database ga ikke så mye mening for meg før jeg forstod hvordan det hang sammen. Så la oss plukke NATS sin key/value store fra hverandre.

Nyttig å vite om NATS:
NATS JetStream: Persistente køer og logger

JetStream er en bryter som gir NATS persistens. Det åpner opp for en haug med spennende bruksmønstre, så som distribuert arbeidskø (tenk RabbitMQ med flere) og strømming av persistente logger (tenk Kafka). Vi ser på hvordan det funker.

Nyttig å vite om NATS:
PubSub med NATS

NATS er et meldingssystem med mange bruksmønstre: fra pubsub, arbeidskøer og strømming av persistente logger til key/value og object storage. Alt fra den samme primitiven – emnebasert meldingsutveksling – som vi i dag ser litt nærmere på via PubSub med NATS.

Smakebiter av Datomic:
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.

Smakebiter av Datomic:
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.

Om å bygge sin egen lyssabel

Forleden dag ønsket jeg meg ny funksjonalitet i editoren min. Jeg fikk ikke fullført CSS-klasser så greit som jeg ville – ja, det var nesten på grensa til kronglete. Heldigvis fantes det en løsning.

Virtuell DOM fra bunnen av

React og mange andre frontend-rammeverk er bygget på teknologi kjent som “virtual DOM”. I dette innlegget bygger jeg en virtuell DOM fra bunnen av for å forstå hva det egentlig er for noe.

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?

clojure.core:
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.

Smakebiter av Datomic:
En dekonstruert database

Rich Hickey sa en gang at design fundamentalt handler om ta ting fra hverandre, slik at man kan sette dem sammen igjen. Dette gjelder i høyeste grad for Datomic, databasen som er kløyvet like i to.

En uke med Tailwind CSS

Bedre sent enn aldri sa vi, og tok i bruk Tailwind CSS for første gang. Der fant vi noen gode idéer, noen dårlige idéer, og en overraskelse eller to.

Foredrag:
Datadreven frontend

Helt siden jeg tok i bruk React for over 10 år siden har min tilnærming til frontendutvikling blitt stadig mer datadrevet. På JavaZone viste jeg frem litt hva det har gitt meg, og hvorfor du også bør vurdere en lignende tilnærming.

Smakebiter av Datomic:
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!

Fulltekstsøk fra bunnen av:
Bokstavpønt til bekymring

Unicode er overalt. Men noen steder er det fortsatt tryggest med det gode gamle ascii-tegnsettet, og i dette innlegget skal vi se på Unicode-normalisering som en vei dit.

Knotinuerlig indignert

Står pull requests i kontrast til kontinuerlig integrasjon? Er kontinuerlig integrasjon det samme som CI? Hva med CI/CD? Jeg forsøker å oppklare noen uklarheter fra mitt forrige innlegg om pull requests.

All PR er god PR?

Pull requests har blitt en så vanlig arbeidsform at det for mange er synonymt med å bruke git. Men er det en bra ting? Må alle endringer komme via en pull request? Jeg er ikke så sikker.

Oppskriften på et smakfullt design

Er du nysgjerrig på hva tittelen UX-designer betyr? Lurer du på hvordan en slik designer jobber? I så fall har du kommet til riktig bord. Vel bekomme!

Fulltekstsøk fra bunnen av:
Noen bokstavkjeks er likere enn andre

Sist vi så på hvordan fulltekstsøk fungerer anså vi alle symbolene i indeksen som like viktige. Men sånn er det ikke alltid i praksis – eksempelvis er treff på hele ord bedre enn treff på bruddstykker av ord. Dette kan løses med vekting, som er dagens tema.

Putekrig og responsive bilder

Det er mange ting jeg lurer på med dette bildet. Hvorfor var det en pute på kontoret når vi hadde fagdag? Hvorfor grep jeg tak i den? Er det putekrig jeg oppfordrer til, eller er det mørkere undertoner i dette tilsynelatende lystige bildet? Etter denne bloggposten er det heldigvis én mindre ting jeg lurer på: Hvordan lager man sånne responsive bilder igjen?

Fulltekstsøk fra bunnen av:
Bokstavkjeks – den som leter skal finne!

Tenk, hele Ibsens samlede verker er å finne i en boks med bokstavkjeks. Omtrent den tilnærmingen skal vi nå ta idet vi lager en liten søkemotor i JavaScript for å forstå hvordan fulltekstsøk funker.

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.

Slutt å ødelegge tingene mine

IT-bransjen elsker tilsynelatende å gjøre gamle ting om igjen. I vårt evige jag på det perfekte API-et kaster vi ut ting som fungerer fint bare for å servere nye ting som overflatisk ser annerledes ut, men i bunn og grunn gjør det samme. Det koster mer enn det smaker.

Lange flate filer

Du skal lete lenge etter noe enklere og mer snappy enn å servere statisk HTML og CSS til folk. Hørt om “serverless”? Niks, her er det servernada! Jeg skriver om en grovt undervurdert teknikk for å lage nettsider.