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

Simple Made Easy
Anbefalt av Kristian, Magnar og Christian

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»

The Nature of Lisp
Anbefalt av Magnar

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.

The Joy of Clojure
Anbefalt av Alf Kristian

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.

Clojure Applied
Anbefalt av André

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.

Webutvikling med Clojure
Anbefalt av Stein Tore

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

Våre foredrag

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

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.

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

Christian og Magnar parprogrammerer nettspill med Clojure og ClojureScript på JavaZone. Det blir funksjonell programmering, testdrevet utvikling og to tomsinger fra Østfold.

Datomic

Magnar tok en prat med to karer fra London om Zombier, Emacs og Clojure. Pass opp for det skumle coverbildet, det var Halloween Special.

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.

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

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.

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!

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.

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.

Våre screencasts

Zombie CLJ - Clojure og ClojureScript

I denne oppfølgeren til ZombieTDD lager Magnar og Christian 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.

Parens of the dead

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

Clojure refactoring in Light Table

Screencast som demonstrerer litt av min Light Table refactoring plugin

A pinch of Clojure love to Light Table

Screencast som demonstrerer kule features i min Light Table refactoring plugin

Våre sideprosjekter

mytomatoes

Et lite produktivitetsverktøy Magnar 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 Magnar en Clojure backend som er litt morsommere å vedlikeholde.

Light Table

Etter å ha vært en ivrig bruker av Light Table i 1,5 år, bestemte Magnus 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 !

Cashflow
Av Odin

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

Vår fri programvare

  • Blueprint CSS - Tidlig CSS-rammeverk for enkle grids, balansert typografi, og fornuftige standardinnstillinger.
  • Cashflow - Regnskap for nettbanktransaksjoner
  • Clj-Light-Refactor - Plugin som gir Clojure refactoring support til Light Table
  • Mapdown - Et lettvekts markup format for å lage maps av strenger.
  • Optimus - Et bibliotek for frontendytelse.
  • Prone - Bedre feilmeldinger og debugging for Clojure webapps.
  • Stasis - Et bibliotek for å lage statiske nettsider. Som denne.
  • asciidoclj - Rendre asciidoc i Clojure.
  • clj-refactor - Refaktorerings for Clojure.
  • datoms-differ - Et bibliotek for å finne diff mellom to txs a-la Datomic og DataScript
  • flare - Et verktøy som forbedrer rapportering av feilende tester for Clojure.
  • 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.
  • helpful-loader - Et lite bibliotek for å laste inn filer med gode feilmeldinger.
  • hiccup-find - Test-helpere for hiccup.
  • 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.
  • jiffy - Port av Java Time til Clojurescript
  • optimus-angular - Bedre ytelse for AngularJS-apps.
  • optimus-img-transform - Optimalisering og transformering av bilder til Optimus.
  • optimus-jsx - React JSX-støtte til Optimus.
  • optimus-less - LESS-støtte til Optimus.
  • 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.
  • realize - Et bibliotek for å realisere lazy seqs i Clojure med feilhåndtering
  • rewrite-cljs - ClojureScript port av rewrite-clj. Bibliotek for traversering og omskriving av Clojure/ClojureScript/EDN- kode
  • rubberlike - Et verktøy for å enkelt spinne opp embedded ElasticSearch servere
  • stubadub - Et lite stubbing bibliotek.
  • test-with-files - Enkel måte å skrive tester som bruker filer på disk.
  • Vi har også bidratt til Collage, Quiescent, buddy-auth, cegdown, clj-time, clj-v8, datomic-type-extensions, devcards, kaocha, lambdacd-git, midje, quiescent og ring-server

Våre blogginnlegg

Property-based testing i Clojure

Er du lei av å skrive tester? Hva om jeg fortalte deg at det finnes verktøy som genererer testene for deg? For godt til å være sant?

Noen artige tekniske detaljer fra Kodekamp

Jeg arrangerte Kodekamp i helga, en hjemmesnekret konkurranse i kodeskriving. Det var intenst og gøy. Her er en liten samling fikse finurligheter og lett underholdende anekdoter derfra.

Gjør mindre, få til mer

En liten historie om hvordan en ny feature i et open source-bibliotek ble nedskalert og samtidig mer nyttig.

Spør oss om Clojure

Magnar

Christian

Magnus

Alf Kristian

Anders

Odin

André

Eivind

Kristian

Trygve

Finn

Stein Tore

Alf

Stian

Fredrik

Ronny

Olga

Olav