Clojure

Clojure er en Lisp-dialekt som kjører på JVM-en (i tillegg til CLR-en og JavaScript). Det er et dynamisk og kompilert programmeringsspråk som er designet for å integrere tett med sin host-plattform. Til tross for dette er Clojure primært et funksjonellt programmeringsspråk med persistente datastrukturer og et standard-API som er spesielt god egnet for parallelisering.

Våre anbefalinger

Clojure Applied

Dette er ikke en ‘Lær Clojure’ bok, men gir en hel tips og forslag til hvordan benytte Clojure på en bra og fornuftig måte. Jeg leste denne boken etter mitt første Clojure/ClojureScript prosjekt. Det hadde selvfølgelig vært nyttig å ha lest boken før prosjektet, men jeg er ikke sikker om alt hadde gitt så mye mening som nå etter at jeg har følt noen av problemstillingene på kroppen. Uansett en bok jeg varmt vil anbefale. Info om boken

Clojure from the ground up

En god begynnelse for de som ønsker å komme igang med Clojure. Passer godt til både nye programmerere og de litt mer erfarne Les artikkelen

The Joy of Clojure

Dette er ingen intro bok om Clojure, dette er en bok for de som vil lære litt mer. I tillegg til et dypdykk i språket, lærer man om generell funksjonell programmering. Kan anbefales for alle som føler det er forbi begynnerstadiet i FP, enten det gjelder Clojure eller andre spåk. Offisielle sider

The Nature of Lisp

Eric Raymond sa «Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.» Hva i all verden skal det bety? Denne artikkelen har en bra innfallsvinkel for å forklare nettopp det. Les bloggposten

Webutvikling med Clojure

Et veldig bra foredrag fra JavaZone 2014. Dette fikk meg til å virkelig ønske å lære Clojure. Anbefales! Se video

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

Våre bloggposter

Oh no! Learning Elm has gotten me confused about static vs dynamic typing.

Etter lenge å ha vært overbevist om at dynamisk typing var det eneste saliggjørende reflekterer jeg over min gryende tvil etter å ha brukt en solid dose tid på å sette meg inn i statisk typede funksjonelle språk. Les posten

ClojureScript - Performance tuning rewrite-cljs

Rewrite-cljs er mitt bibliotek for å traversere og omskrive clojure/clojurescript kode. I denne blogposten forteller jeg litt om hvordan jeg tunet ytelsen bl.a ved å komme nærmere jernet (JavaScript) Les posten

Showcasing rewrite-cljs - Parembrace for Light Table

En liten fortelling om stegene jeg gikk igjennom for å lage en skikkelig paredit plugin for Clojure/ClojureScript i Light Table. Et nytt ClojureScript bibliotek ble unnfanget i processen. Les posten

Implementing a Clojure ns-browser in Light Table with React

Buzzword compliant post om hvordan man elegant kan bruke React.JS for implementering av view-logikk i Light Table. Posten går også i dybden på den grunnleggende arkiteturen i Light Table Les posten

Taming those pesky datetimes in a clojure stack

En liten erfaringsrapport med tips og triks for hvordan håndtere datoer i Clojure/ClojureScript i en tjeneste/lagdelt arkitektur Les posten

Securing Clojure Microservices using buddy - Part 4: Secure and liberate a service app

En blogserie hvor jeg ser på autentisering og autorisasjon i en clojure microservices arkitektur med bruk av Buddy. I del 4 ser vi på hvordan vi kan sikre en service app basert som benytter REST-biblioteket Liberator Les posten

Implementing a Clojure threading refactoring in ClojureScript using Light Table

En kort gjennomgang av hvordan man kan implementere en refaktoreringsfunksjon i Light Table vha clojure.zip Les posten

Securing Clojure Microservices using buddy - Part 3: Token revocation

En blogserie hvor jeg ser på autentisering og autorisasjon i en clojure microservices arkitektur med bruk av Buddy. I del 3 ser vi på mulige løsninger for å trekke tilbake tokens vha refresh tokens Les posten

Securing Clojure Microservices using buddy - Part 2: WebApp authentication and authorization

En blogserie hvor jeg ser på autentisering og autorisasjon i en clojure microservices arkitektur med bruk av Buddy. Del 2 handler om å bruk av tokens og cookies for autentisering og autorisasjon i en clojure web applikasjon. Les posten

Securing Clojure Microservices using buddy - Part 1: Creating Auth Tokens

En blogserie hvor jeg ser på autentisering og autorisasjon i en clojure microservices arkitektur med bruk av Buddy. Del 1 handler om å lage en service som generer signerte tokens for bruk i autentisering og autorisasjon. Les posten

Bootifying my ring app

Boot.clj er et spennende alternative til Leiningen for bygging av clojure applikasjoner. Jeg deler noen erfaringer med bruk av Boot.clj i et clojure ring prosjekt Les posten

Getting my feet wet with Clojure using Light Table

En liten erfaringsrapport fra mine første steg med å skrive produksjonskode i Clojure ved bruk av Light Table IDE. Les posten

Annotating Datomic transactions

En artikkel om Datomics transaksjoner, og hvordan de kan utvides med app-spesifik informasjon for bedre auditing og mer. Les posten

Querying across Datomic databases

Et konkret eksempel på hvordan du kan gjøre datalog spørringer over flere databaser samtidig med Datomic. Les posten

Building Static Sites in Clojure With Stasis

En lang tutorial-style bloggpost om å lage statiske websider i Clojure med blant annet biblioteket Stasis. Artikkelen gir et innblikk i bruk av mange populære web-biblioteker for Clojure. Les posten

Clojure to die for

En liten feiring av helt hverdagslige idiomer of småtriks som gjør det å jobbe med Clojure til en fantastisk god opplevelse Les posten

Podcaster for programmerere

Podcaster er en fin måte å utnytte tiden til noe fornuftig når man gjør kjedelige ting som å pusse opp eller å sitte på toget. Her er en oversikt over de podcastene jeg helst hører på om dagen. Les posten

Embedding Efficient DSLs on the JVM : A review of alternative languages

Masteroppgaven Eivind skrev på UiO i 2010. Viser en sammenligning av forskjellige JVM-baserte språk forhold til bruk i domene-spesifikke språk. Ser på aspekter som syntaks-muligheter og ytelse - og prøver å gi en anbefaling på hvilke språk som egner seg best til ulike scenarier. Les posten

ZeroMQ instead of HTTP, for internal services

Det er vanlig å bruke HTTP når man trenger RPC, altså at du har en eller annen klient som trenger å snakke med en server. I denne bloggposten forklarer jeg hvorfor og hvordan du kan og bør bruke ZeroMQ i stedet for, eller i tillegg til, HTTP. Det er svært mange fordeler med ZeroMQ som er fundamentalt umulig å løse med HTTP. Les posten

Våre presentasjoner

Webutvikling med Clojure

Det finnes et utall plattformer for å lage webapplikasjoner; så hvorfor skal du vurdere Clojure? Fordi det gir deg enklere løsninger, raskere utvikling og færre feil. Ta sjansen til å bli kjent med et språk som vil forandre måten du tenker på. Se video

Funksjonell Programmering på JVM

Presentasjon fra JavaZone 2010. Hovedsaklig en presentasjon av arbeidet Eivind gjorde med master-oppgaven. Snakker om forskjellige aspekter ved funksjonell programmering og hvordan man oppnår dette med forskjellige språk på JVM. Se video Se slides

Erfaringer med Clojure og Scala (og Java 8)

På Javazone 2015, snakket Alf Kristian erfaringer med de funksjonelle språkene på JVM'en. I tillegg sammenlignet han dem med "FP" i Java 8. Se video

WTF is Datomic?

Introduksjon til hvordan i alle dager en immutable database kan funke, og hvorfor det er bra greier. Se video

Talk: I put 7 years of meal data in Datomic - Here's what I learned

Datomic is an append-only database, designed from the ground up with modern applications and hardware in mind. It never loses data, it has an RDF-like approach to schemas, it's really fast, and it has a powerful query language borrowed from Prolog that expresses queries as data structures. In short: it's pretty awesome. Se koden

ZombieCLJ: Live parprogrammering

Se Christian og Magnar parprogrammere på nettspill med Clojure og ClojureScript. Denne økten er for de som syns det er moro å se folk parprogrammere mens de prater om hva de driver med. Det blir Clojure med hanskene av, så man må tåle å ikke forstå alt. De som er helt nye til funksjonell programmering kan muligens få eksplodert hodet. Definitivt live koding. Se video

A pinch of Clojure love to Light Table

Screencast som demonstrerer kule features i min Light Table refactoring plugin Se video Se koden

Programmeringsspråket betyr alt!

Hovedverktøyet til programmerere er programmeringsspråket. Likevel velge vi sjeldent det beste riktige verktøyet for å løse oppgavene. Denne presentasjonen fokuserer på hvor viktig det er å velge riktig programmeringsspråk. Se video

Lisp er vakkert!

Mange misliker Lisp på grunn av annerledes syntaks. Men når man forstår hvorfor syntaksen er som den er, så blir språket vakkert! Se video

16 minutter om Pure Functions

Jeg snakker hva, hvorfor og hvordan om Pure Functions, i et utbrudd av entusiasme etter å ha jobbet med en kodebase basert på disse prinsippene et par år. Se video

Really understanding Clojure, getting into macros

På Javazone 2014, snakket Alf Kristian om Clojure sine makroer. Det ble et dypdykk inn i en av Clojure sine kraftigste features Se video

The imminent revolution of functional append-only databases

I de fleste domener har gammel data høy verdi. Det bør ikke være ditt ansvar å løse dette manuelt med tradisjonelle muterbare databaser. Få en introduksjon til ny grensesprengende database-teknologi som løser dette problemet for deg. Se video

Clojure - JVM språket som er "multi-core ready"

En introduksjonspresentasjon om Clojure, som går igjennom språkets oppbygning og filosofi. Forklarer også hvorfor Clojure er et bedre rustet språk for fremtiden enn andre. Se video

Clojure refactoring in Light Table

Screencast som demonstrerer litt av min Light Table refactoring plugin Se video Se koden

Sideprosjekter

Parens of the Dead

Mer zombier og Clojure, denne gangen på engelsk. Jeg tenkte det kunne være moro å lage noe for et større publikum. Litt mer finpussa og litt mindre jovialt enn originalen. Se videoene

Light Table

Etter å ha vært en ivrig bruker av Light Table i 1,5 år, bestemte jeg meg sommeren 2015 til å ta steget opp å joine opensource teamet til Light Table for å forsøke å gjenopplive prosjektet. Det er nok å ta tak i for å si det sånn ! Light Table på Github

mytomatoes

Et lite produktivitetsverktøy jeg smalt sammen på en uke, som nå har flere tusen besøkende daglig - med 3,5 millioner 25 minutters arbeidsøkter registrert. Den første versjonen var kodet med PHP, men nylig lagde jeg en Clojure backend som er litt morsommere å vedlikeholde. Prøv app'en

ZombieCLJ

I denne oppfølgeren til ZombieTDD lager Magnar og jeg spill med Clojure og ClojureScript. Det går i parprogrammering hele veien. Og jaggu skriver vi ikke flere tester først. Skulle tro XP hadde noe for seg. Se videoene

Cashflow

Nettbanken min har ingen regnskapsfunksjon. Så det lager jeg på egen hånd, i Clojure. Les kildekoden

Open source

Ønsker du rådgivning om Clojure?

Vi har mange dyktige konsulenter som brenner for Clojure. Vi hjelper deg å ta de riktige valgene. Ta kontakt!