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

REPL Driven Mobile Development with Clojure(script)

REPL Driven Mobile Development with Clojure(script)

Talk slides as presented in #FragmentsConf 2017.

Srihari Sriraman

September 13, 2017

More Decks by Srihari Sriraman

Other Decks in Technology


  1. Why I am speaking about this Using cljsrn, we built

    the same app as a native team faster, and better.
  2. 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.
  3. CLJSRN http://cljsrn.org ClojureScript is a compiler for Clojure that targets

    JavaScript. A framework for building native apps using React
  4. 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."
  5. 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.”
  6. 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
  7. 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
  8. Why use a REPL? Feedback Explore and internalise the problem

    Incremental development of the solution Faster than TDD Debuggability
  9. 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
  10. Undivided Team Ability to have a full picture Quick feedback

    cycles Well defined APIs No Specialists
  11. Unilingual Team “Use the source” Share code Make PRs across

    FE and BE Shared tools, and release processes