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

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

Parens of the Dead: Live pair programming and zombies

Mer live parprogrammering, Clojure/ClojureScript og vås fra Magnar og meg.

Kosetime: Live parprogrammering og zombier II

Magnar og [Christian](/christian/) parprogrammerer funksjonelt med Clojure og ClojureScript på JavaZone - igjen.

ClojureScript: Fun and productive web development with next level tooling

Christian gir en oversikt over hva ClojureScript har å by på for interaktiv programmering for webben i 2021.

That Tech Show: Magnar Sveen

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 Christian og Magnar 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. Vi tenkte det kunne være moro å lage noe for et større publikum.

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

  • 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.
  • courier - Et høynivå http-bibliotek for Clojure. Lar deg uttrykke avhengigheter mellom requests (“hent tokenet fra cache eller HTTP før du gjør denne requesten”), og gir deg verktøy for retries og caching som kan benytte informasjon utover hva HTTP-protokollen gir.
  • 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
  • m1p - Et datadrevet bibliotek for å jobbe med i18n, theming og andre lignende problemstillinger (der du ønsker å trekke konkret innhold ut av implementasjonen).
  • 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.
  • porfolio - Et verktøy for å jobbe med UI-komponenter. Lar deg vise mange scenarioer for samme komponent i kombinasjon med forskjellige skjermoppløsninger, bakgrunnsfarger, osv. Startet som en Clojure-versjon av Storybook.js, men lever nå sitt eget liv.
  • 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

En Clojure-funksjon til å bli glad av

Det er mye å glede seg over i Clojure: pure functions, immutability, og REPL, for å nevne noen store ting. I dag skal vi heller se på to bittesmå, men svært nyttige funksjoner.

Dumme klienter

Dette ser ut til å ha blitt et kåseri om data og dumme klienter. Ikke dumme oppdragsgivere, altså, men noen veldig dumme web-klienter.

Som påskekvelden på kjerringa

For mange norske datasystemer virker det som helligdager og høytidsdager kommer som en overraskelse. Hvor vanskelig kan det egentlig være å lage et system som ikke setter betalingsfrist på en dag hvor bankene er stengt? Eller venter med å sende purring på tilbakelevering av ting til en dag man faktisk har åpent? Vi dykker ned i matte fra 1800-tallet og lurer på hvorfor dette ikke er implementert i alle norske datasystem…

Spør oss om Clojure

Christian

Magnar

Magnus

Alf Kristian

Anders

Ronny

Odin

André

Eivind

Kristian

Trygve

Finn

Stein Tore

Stian

Fredrik

Olga