SlideShare a Scribd company logo
Why clojure(script) matters
Claudiu Apetrei - dev at figshare
My motivation
www.infocaini.ro
Personal project since 2006
Currently:
python, vanilla coffescript, google app engine
Next version:
Clojure (back-end), Clojurescript (front-end), Fulcro
Requirements
- Server side rendering (SEO & user experience)
- Same language on front-end & backend
- Single page app
- Fast development (smarter tooling, ex: google app engine)
- Robust & resilient codebase
- Be productive working 2-3 hours a night
- Understand quickly legacy code after 1-2 months of not working on it
KEEP THINGS AS SIMPLE AS POSSIBLE
Work smarter not harder
Reselect
Previous stack
Javascript is fine as it is :)
Clojurescript
Reason-ml (facebook)
ELM
Purescript
● Functional programming
● Immutable data structures
● Side effects
● Statically typed
Damien Katz - couchdb and me
OOP The promise and the reality
Working with maps, list (data oriented)
let a = {
author: {"name": "claudiu"}
};
fun-a1(a);
fun-a2(a);
fun-a3(a);
console.log(a);
Why clojure(script) matters
Programming languages
C family C, C++, Objective-C, C#, Java, PHP, JavaScript, Go, Perl...
LISP family Common Lisp, Clojure, Scheme, Emacs Lisp
ML family ML, Caml, OCaml, F# (haskell inherits from here too)
1
2
3
Js history
Eich (Brendan Eich) originally joined intending to put Scheme "in the browser",[6]
but his Netscape superiors insisted that the language resemble Java in terms of
its syntax.
One of the best designed languages out there
Clojure is such a well designed language and a pleasure to program in.
Clojure language
Lisp dialect
Dynamically typed
Immutable data structures
Data oriented programming
Stable, light & complete language
Lisp - “code is data and data is code”
Macros = functions that write code, make it possible to move a lot of
“language features” into libraries
Clojure(script) code from 2015 the same in 2017 (^_^)
Macros 1
Macros 2
Clojure
programming language that targets the JVM (2007)
Clojurescript
compiler that targets javascript (2011)
Awesome host platform interop from day 1.
Make use of any existing library
Java or JavaScript (client and nodejs)
Universal(isomorphic)web application
*.clj *.cljs *.cljc
Functional programming
Different experience from javascript
Brian Lonsdorf
Oh Composable World!
Powerful core data types
All core data types are immutable
Maps are the work-horse in most applications (1% code objects)
:keywords = self referencing functions that can have namespace & value.
(def a {:manuscript/title “x”,
:article/title “y”})
Data oriented development
Powerful & well designed data structure
Language core + standard library centered around data manipulation
Comprehensive standard library
9/36 chapters completed
already at 400 pages
*only use about 10 - 30 day to day :)
Tooling & libs
REPL (read, evaluate, print, loop)
Figwheel (hot-reload)
Google closure compiler
Clojure.spec
Transit
Core.async
Core.match
Test.check
Core.logic
contract system
data format and tools for converting
go style channels for async
pattern matching
property based testing - inspired by haskell
prolog like rational programming
Google closure compiler
With clojurescript you get Java GCC + Advanced working out of the box.
Clojure.spec
Automatically check every single function call to make sure the arguments are
correct
- More expressive than type system
- Generative testing
- Generate example data
- Unified approach data validation
Transit not json
Uses json when possible
Can encode over the wire
- Dates
- Sets
- Lists
- UUIDs
- symbols, keywords, characters
- extensible
Clojure ecosystem gems
“Complete story that
removes 60%+ of the
complexity out of my
code.”
Beginner friendly Youtube video series on Fulcro: https://goo.gl/JekurH
Fulcro
Sweet spot between framework and library.
- Reactjs wrapper
- State management flow
- Normalised app state
- Support for optimistic updates
- Networking layer
- Backend story with graphql like capabilities
- Co-located css
- ...
Interesting community
Experienced like wow “crazy good developers”
X was about to give up on programming as irretrievably* complex when he
found Clojure, which renewed his love for code.
* in a way that cannot be retrieved or put right.
Who’s using clojure
Codecamp Iasi 24 March 2018, speaker & masterclass
Tony Kay is a software craftsman with nearly 30 years of
experience.
He has published research on concurrent programming,
spent a number of years teaching software
development, and is passionate about software
craftsmanship.
He has worked professionally in C, C++, Java, Scala, Perl,
Javascript, Objective-C, Clojure, and Clojurescript. He is
the lead architect and developer of the web
development library Fulcro, is a contributor to Om Next.
Clojure Iasi - meetup.com
- Hang out & help each other on SLACK
- Workshops
- Guest speakers (remote skype/slack)
- Build an open source SPA in Fulcro
https://www.meetup.com/iasi-clojure/
Thank you !
Getting started resources
https://www.infoq.com/presentations/Simple-Made-Easy Essence of clojure
https://defn.audio/episodes/2017/11/07/david-nolen.html Clojurescript overview
https://www.packtpub.com/web-development/learning-clojurescript book
https://cursive-ide.com/ editor
https://shaunlebron.github.io/parinfer/ editor plugin for structural editing

More Related Content

PDF
CV-Kapranov-eng-2015
PDF
HelsinkiJS - Clojurescript for Javascript Developers
PDF
CV Sergiy vakulenko (EN)
ODP
Javascript Update May 2013
PDF
Reume IT
DOC
bakkesh_php_mysql_javascript_jquery_5.5yrs_Exp
PDF
Paris Android User Group - Build 3D web, mobile and desktop applications with...
CV-Kapranov-eng-2015
HelsinkiJS - Clojurescript for Javascript Developers
CV Sergiy vakulenko (EN)
Javascript Update May 2013
Reume IT
bakkesh_php_mysql_javascript_jquery_5.5yrs_Exp
Paris Android User Group - Build 3D web, mobile and desktop applications with...

Similar to Why clojure(script) matters (20)

PDF
Minko - Targeting Flash/Stage3D with C++ and GLSL
PDF
ClojureScript in Magento 2 - MageTitansMCR 2017
PDF
There is something about JavaScript - Choose Forum 2014
PPTX
JavaScript: The Machine Language of the Ambient Computing Era
PDF
Meetup. Technologies Intro for Non-Tech People
PDF
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
PPTX
Advanced JavaScript
DOCX
Resume - Shashesh Silwal
PDF
MLFlow: Platform for Complete Machine Learning Lifecycle
PDF
Build your next single page app in ClojureScript and re-frame
PDF
Apache Flex and the imperfect Web
PDF
Introducing React to GraysOnline
PPTX
IT TRENDS AND PERSPECTIVES 2016
PDF
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
PDF
WebGL games with Minko - Next Game Frontier 2014
PDF
Use React tools for better Angular apps
PDF
Clojure in real life 17.10.2014
PDF
Red Hat Java Update and Quarkus Introduction
PDF
The Java alternative to Javascript
PDF
Wondershare Filmora 14.3.2 Crack + License Key Free Download
Minko - Targeting Flash/Stage3D with C++ and GLSL
ClojureScript in Magento 2 - MageTitansMCR 2017
There is something about JavaScript - Choose Forum 2014
JavaScript: The Machine Language of the Ambient Computing Era
Meetup. Technologies Intro for Non-Tech People
ClojureScript - Making Front-End development Fun again - John Stevenson - Cod...
Advanced JavaScript
Resume - Shashesh Silwal
MLFlow: Platform for Complete Machine Learning Lifecycle
Build your next single page app in ClojureScript and re-frame
Apache Flex and the imperfect Web
Introducing React to GraysOnline
IT TRENDS AND PERSPECTIVES 2016
AstroLabs_Academy_Learning_to_Code-Coding_Bootcamp_Day1.pdf
WebGL games with Minko - Next Game Frontier 2014
Use React tools for better Angular apps
Clojure in real life 17.10.2014
Red Hat Java Update and Quarkus Introduction
The Java alternative to Javascript
Wondershare Filmora 14.3.2 Crack + License Key Free Download
Ad

Recently uploaded (20)

PPTX
Transform Your Business with a Software ERP System
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Designing Intelligence for the Shop Floor.pdf
PPTX
ai tools demonstartion for schools and inter college
PPTX
history of c programming in notes for students .pptx
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PPTX
CHAPTER 2 - PM Management and IT Context
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
System and Network Administraation Chapter 3
PDF
Softaken Excel to vCard Converter Software.pdf
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PPTX
Computer Software and OS of computer science of grade 11.pptx
PDF
Digital Systems & Binary Numbers (comprehensive )
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Nekopoi APK 2025 free lastest update
Transform Your Business with a Software ERP System
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Designing Intelligence for the Shop Floor.pdf
ai tools demonstartion for schools and inter college
history of c programming in notes for students .pptx
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Which alternative to Crystal Reports is best for small or large businesses.pdf
Wondershare Filmora 15 Crack With Activation Key [2025
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
CHAPTER 2 - PM Management and IT Context
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Navsoft: AI-Powered Business Solutions & Custom Software Development
System and Network Administraation Chapter 3
Softaken Excel to vCard Converter Software.pdf
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
Computer Software and OS of computer science of grade 11.pptx
Digital Systems & Binary Numbers (comprehensive )
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Nekopoi APK 2025 free lastest update
Ad

Why clojure(script) matters

  • 1. Why clojure(script) matters Claudiu Apetrei - dev at figshare
  • 2. My motivation www.infocaini.ro Personal project since 2006 Currently: python, vanilla coffescript, google app engine Next version: Clojure (back-end), Clojurescript (front-end), Fulcro
  • 3. Requirements - Server side rendering (SEO & user experience) - Same language on front-end & backend - Single page app - Fast development (smarter tooling, ex: google app engine) - Robust & resilient codebase - Be productive working 2-3 hours a night - Understand quickly legacy code after 1-2 months of not working on it KEEP THINGS AS SIMPLE AS POSSIBLE
  • 6. Javascript is fine as it is :) Clojurescript Reason-ml (facebook) ELM Purescript ● Functional programming ● Immutable data structures ● Side effects ● Statically typed
  • 7. Damien Katz - couchdb and me
  • 8. OOP The promise and the reality
  • 9. Working with maps, list (data oriented)
  • 10. let a = { author: {"name": "claudiu"} }; fun-a1(a); fun-a2(a); fun-a3(a); console.log(a);
  • 12. Programming languages C family C, C++, Objective-C, C#, Java, PHP, JavaScript, Go, Perl... LISP family Common Lisp, Clojure, Scheme, Emacs Lisp ML family ML, Caml, OCaml, F# (haskell inherits from here too)
  • 13. 1
  • 14. 2
  • 15. 3
  • 16. Js history Eich (Brendan Eich) originally joined intending to put Scheme "in the browser",[6] but his Netscape superiors insisted that the language resemble Java in terms of its syntax.
  • 17. One of the best designed languages out there Clojure is such a well designed language and a pleasure to program in.
  • 18. Clojure language Lisp dialect Dynamically typed Immutable data structures Data oriented programming
  • 19. Stable, light & complete language Lisp - “code is data and data is code” Macros = functions that write code, make it possible to move a lot of “language features” into libraries Clojure(script) code from 2015 the same in 2017 (^_^)
  • 22. Clojure programming language that targets the JVM (2007) Clojurescript compiler that targets javascript (2011) Awesome host platform interop from day 1.
  • 23. Make use of any existing library Java or JavaScript (client and nodejs) Universal(isomorphic)web application *.clj *.cljs *.cljc
  • 24. Functional programming Different experience from javascript Brian Lonsdorf Oh Composable World!
  • 25. Powerful core data types All core data types are immutable Maps are the work-horse in most applications (1% code objects) :keywords = self referencing functions that can have namespace & value. (def a {:manuscript/title “x”, :article/title “y”})
  • 26. Data oriented development Powerful & well designed data structure Language core + standard library centered around data manipulation
  • 27. Comprehensive standard library 9/36 chapters completed already at 400 pages *only use about 10 - 30 day to day :)
  • 28. Tooling & libs REPL (read, evaluate, print, loop) Figwheel (hot-reload) Google closure compiler Clojure.spec Transit Core.async Core.match Test.check Core.logic contract system data format and tools for converting go style channels for async pattern matching property based testing - inspired by haskell prolog like rational programming
  • 29. Google closure compiler With clojurescript you get Java GCC + Advanced working out of the box.
  • 30. Clojure.spec Automatically check every single function call to make sure the arguments are correct - More expressive than type system - Generative testing - Generate example data - Unified approach data validation
  • 31. Transit not json Uses json when possible Can encode over the wire - Dates - Sets - Lists - UUIDs - symbols, keywords, characters - extensible
  • 32. Clojure ecosystem gems “Complete story that removes 60%+ of the complexity out of my code.” Beginner friendly Youtube video series on Fulcro: https://goo.gl/JekurH
  • 33. Fulcro Sweet spot between framework and library. - Reactjs wrapper - State management flow - Normalised app state - Support for optimistic updates - Networking layer - Backend story with graphql like capabilities - Co-located css - ...
  • 34. Interesting community Experienced like wow “crazy good developers” X was about to give up on programming as irretrievably* complex when he found Clojure, which renewed his love for code. * in a way that cannot be retrieved or put right.
  • 36. Codecamp Iasi 24 March 2018, speaker & masterclass Tony Kay is a software craftsman with nearly 30 years of experience. He has published research on concurrent programming, spent a number of years teaching software development, and is passionate about software craftsmanship. He has worked professionally in C, C++, Java, Scala, Perl, Javascript, Objective-C, Clojure, and Clojurescript. He is the lead architect and developer of the web development library Fulcro, is a contributor to Om Next.
  • 37. Clojure Iasi - meetup.com - Hang out & help each other on SLACK - Workshops - Guest speakers (remote skype/slack) - Build an open source SPA in Fulcro https://www.meetup.com/iasi-clojure/ Thank you !
  • 38. Getting started resources https://www.infoq.com/presentations/Simple-Made-Easy Essence of clojure https://defn.audio/episodes/2017/11/07/david-nolen.html Clojurescript overview https://www.packtpub.com/web-development/learning-clojurescript book https://cursive-ide.com/ editor https://shaunlebron.github.io/parinfer/ editor plugin for structural editing