Simplify Web Application Development with Clojure, ClojureScript and Datomic

Softwareentwicklung mit Open Source

9:10 – 17:00 Uhr
HSLU Campus Rotkreuz
Max. Teilnehmer: 30


Clojure (and thus ClojureScript) is a functional, dynamically-typed dialect of Lisp with strong emphasis on immutability , persistent data structures and concurrency. It’s a hosted language and targets the Java VM, CLR and JavaScript runtimes which makes it symbiotic with established platforms. 

Clojure’s value proposition lies in it’s set of features which are carefully designed with idiomatic simplicity in mind. The combination of an expressive Lisps syntax, functional orientation, immutable data structures, REPL and idiomatic concurrency make it robust, simple and practical to use.

  • Lisp: declarative, lambda calculus yields a very small core, almost no syntax, code = data.
  • Functional: Immutable data and first-class functions. Immutability makes much of the problem go away.
  • Concurrency: immutability makes it possible to share state freely between threads
  • REPL: enables dynamic development 
  • Hosted: symbiosis abstracts away OS and makes use of a huge set of facilities (types systems, GC, Bytecode + JIT compilation..).


The workshop should be arranged in two sessions. The first session will introduce Clojure and its main features. The second session will focus hands-on development of a sample application in Clojure.

Introduction to Clojure/ClojureScript/Datomic  – 40 + 40 minutes

  1. Clojure rationale – why Clojure?
  2. EDN and Homoiconicity – Code is Data
  3. Persistent Data Structures – Its better to have  100 functions on 1 data structure than  10 functions on 10 data structures
  4. Spec – expressing data without types.
  5. The REPL – Interactive Development
  6. Concurrency and Parallelism  – atoms, refs and agents
  7. Datomic  – functional database
  8. ClojureScript – Functional  Web Programming

Web Application Development (Hands on session) – 40 + 30 minutes

  1. Tooling – Interactive Development Workflow
  2. Composition – Libraries not Frameworks
  3. HTTP Abstraction – Ring and Compojure
  4. Database Abstraction – Datomic
  5. Web abstraction – ClojureScript


Main takeaways:

  • Understand what Clojure’s value proposition and how it differs from imperative languages?
  • How  homoiconicity, immutability, functional orientation and REPL/dynamic development make software development simpler and productive.


Software Entwickler im Allgemein. Alle die Interesse haben über den eigenen Tellerrand zu schauen!


Basic familiarity with programming languages:  C/C++, C#, Java, Python, Ruby, JavaScript ….

Understanding of fundamental concepts of programming languages: 

  • Basic data types
  • Means of composing (functions, objects)
  • Means of abstraction: naming, procedural and data abstraction


Anschlussmöglichkeit um eine  Präsentation vom Laptop zu projizieren. Wifi-Verbindung.


Peter Makumbi


Seit Ende des Studiums (2000) in Deutschland in der Softwareentwicklung mit Java/JEE tätig. Bis Juni 2006 als selbständiger in Frankfurt am Main bei der Deutsche Börse, Dresdner Bank und Europäische Zentralbank. In der Schweiz seit Juli 2006 als Software Ingenieur bei Credit Suisse und IBM. Seit 2009 bei Swiss Re, inzwischen als fester Mitarbeiter.