Thanks to visit codestin.com
Credit goes to www.slideshare.net

REPL Driven
Mobile Development
with Clojure(script)
Srihari Sriraman | nilenso
when did you become an expert
in building mobile applications?
last night, ofc
I have leapfrogged
Why I am speaking about this
Using cljsrn, we built the
same app as a native team
faster, and better.
The things I will talk about
Why
REPL Driven Development
CLJSRN
Non tech factors
Parlance
REPL
Https://en.wikipedia.org/wiki/
Read–eval–print_loop
Read, Eval, Print, Loop
“interactive computer programming
environment that takes single expressions,
evaluates them,
and returns the result to the user.
REPL
Https://en.wikipedia.org/wiki/
Read–eval–print_loop
Read, Eval, Print, Loop
Lisp
http://lisp-lang.org/
LISt Processor
Second oldest HLL
Homoiconic
Lisp
http://lisp-lang.org/
LISt Processor
Second oldest HLL
Homoiconic
Clojure
https://clojure.org/
Clojure is a dialect of Lisp
that runs on the JVM
Clojure
https://clojure.org/
Clojure is a dialect of Lisp
Runs on the JVM
Rich Hickey
Clojure(script)
http://clojurescript.org/
ClojureScript is a compiler
for Clojure that targets JavaScript
David Nolen
Clojure(script)
http://clojurescript.org/
ClojureScript is a compiler
for Clojure that targets JavaScript
David Nolen
CLJSRN
http://cljsrn.org
ClojureScript is a compiler
for Clojure that targets JavaScript.
A framework for building native
apps using React
Feedback
Bret Victor - Inventing on Principle
https://vimeo.com/36579366
“Most of my time is spent in code,
working in a text editor blindly, without an
immediate connection to what I'm trying to make."
Bret Victor - Inventing on Principle
https://vimeo.com/36579366
“Creators need an immediate connection
to what they create”
Stephen Wolfram – Inside the Wolfram Language
https://www.youtube.com/watch?v=EjCWdsrVcBM
Ron Garret - Lisping at JPL
http://www.flownet.com/gat/jpl-lisp.html
“Debugging a program running on a $100M piece
of hardware that is 100 million miles away is an
interesting experience. Having a read-eval-print
loop running on the spacecraft proved invaluable
in finding and fixing the problem.”
Sam Aaron –Programming Music with Overtone - Sam Aaron
https://www.youtube.com/watch?v=imoWGsipe4k
Zach Oakes –Making Games at Runtime with Clojure
https://www.youtube.com/watch?v=0GzzFeS5cMc
Me – Making machines that make music
https://www.youtube.com/watch?v=ZvSSeuzN_b4
Clojure land
REPL Driven
Development
Clojurescript
Clojure Compiler Javascript
Google Closure Compiler
Optimized Javascript RN flow
How cljsrn gets to a mobile
Demo
What is a REPL?
More than a Shell
Interact with running program
Define and modify behaviour
Read and write access to program’s state
In the editor
Why use a REPL?
Why Clojure REPL?
Why CLJS?
Why use a REPL?
Feedback
Explore and internalise the problem
Incremental development of the solution
Faster than TDD
Debuggability
Why use a Clojure REPL?
60y of LISP
Functions and Data structures, mostly
Read, Eval, and Print are overridable functions
Access to runtime: Reflections as data
Namespaces, vars
Why clojurescript?
Expressive, Simple
Seamless JS Interop
Immutable data structures by default
Google closure
Expressive, Simple
Javascript
Clojurescript
Why clojurescript?
Expressive, Simple
Seamless JS Interop
Immutable data structures by default
Google closure
Seamless JS interop
Why clojurescript?
Expressive, Simple
Seamless JS Interop
Immutable data structures by default
Google closure
Why clojurescript?
Expressive, Simple
Seamless JS Interop
Immutable data structures by default
Google closure
Tools
figwheel: watchman++
re-frame: SPA framework (predates elm, redux)
core.async: no callback hell!
Reservations
Hiring: Lisps are very different
Learning: Community is small
Non tech factors
Undivided Team
Ability to have a full picture
Quick feedback cycles
Well defined APIs
No Specialists
Unilingual Team
“Use the source”
Share code
Make PRs across FE and BE
Shared tools, and release processes
REPL Driven
Mobile Development
with Clojure(script)
Srihari Sriraman | nilenso

REPL Driven Mobile Development with Clojure(script)