Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Clojure, Web and Luminus

Clojure, Web and Luminus

Keynote about Web development in Clojure: existing libraries, frameworks and Luminus (http://www.luminusweb.net/). The keynote was presented on Prague Lambda Meetup (http://www.meetup.com/Lambda-Meetup-Group/events/111638882/) on April 17 2013.

Edward Tsech

April 29, 2013
Tweet

More Decks by Edward Tsech

Other Decks in Programming

Transcript

  1. • :name “Edward Tsech” • :nick “edtsech” • :langs [:clojure

    :haskell :shen] • :interests [:fp :frp :data] About Monday, April 29, 13
  2. Agenda • Why Clojure? • Clojure + Web • Clojure

    Toolbox • Libraries vs Frameworks • Existing frameworks • Luminus’ approach Monday, April 29, 13
  3. Clojure as Ecosystem • Mature ecosystem of JVM • Interactive

    development (REPL) • ClojureScript • Leiningen • Emacs/Vim/SublimeText?? • Datomic Monday, April 29, 13
  4. Clojure as Language • Rapid development • Concurrency • FP

    • Metaprogramming • DSL • Data centric Monday, April 29, 13
  5. Clojure + Web • Ring - HTTP abstraction (WCGI, Rack,

    Hack) • Compojure - routing DSL (Sinatra, Scotty, Scalatra) Monday, April 29, 13
  6. Clojure Web Toolbox • Auth - Friend • JSON -

    data.json, cheshire • Validation - lib-noir, Validateur • Testing - Kerodon, Peridot • Logging - tools.logging • XML - data.xml, data.zip • SQL - Korma, clojure.java.jdbc • Deploy - Leiningen • HTML - ... • CRUD - ? • Performance - Grinder Monday, April 29, 13
  7. Libraries • Easy to compose • You have to know

    ecosystem • You are not limited what you can build and how to build it • You have to create your own architecture Monday, April 29, 13
  8. Frameworks • Take care of users (security, ...) • Basic

    architecture • Defaults (Libraries) • Docs, tutorials, guides, ecosystem • Habits • Limitations (what..., how...) Monday, April 29, 13
  9. Origins • Noir • Noir + lib-noir • lib-noir •

    lib-luminus + Luminus • lib-noir + Luminus Monday, April 29, 13
  10. Luminus • Freedom (up to you what and how) •

    Utilize existing Clojure ecosystem • Libraries composability • Flexible templates • Basic architecture • Defaults • Documentation • Take care of newcomers Monday, April 29, 13
  11. Improvements • Improve profiles system • Improve architecture • Add

    profiles* • Write guides, tutorials, docs Monday, April 29, 13
  12. Links 1 • Luminus - http://www.luminusweb.net/ • luminus-template - https://github.com/

    yogthos/luminus-template • luminus - https://github.com/yogthos/ luminus • lib-noir - https://github.com/noir-clojure/lib- noir Monday, April 29, 13
  13. Links 2 • A brief overview of the Clojure web

    stack - http://brehaut.net/blog/2011/ ring_introduction • Project Templates - http://brehaut.net/blog/ 2013/project_templates • Functional Web Architecture - https://speakerdeck.com/weavejester/functional- web-architecture Monday, April 29, 13