~/talk

Unravel your REPL

Talkat EuroClojure 2017 · 2017-07-20..07-21· [clojure, developer-experience]
links:none on file
slides:none on file

Unravel implements an unrepl protocol that exchanges stream of EDN values instead of characters, letting tools separate prompts results printed output and exceptions; the client uses the Clojure socket server (Clojure 1.8) and can boot a tiny ~100-line server blob sent on connect so setup requires no extra server deps. Features: sub-second startup via LUMO, truncated lazy-sequence printing with explicit continuation, and transclusion markers that let the client request more elements on demand.

AI-written summary · about

  1. 0:00Intro
  2. 0:38Phenomenology of Clojure Programming Some languages like Java encourage a top-down approach • Changes to the source require recompiling and restarting Decisions driven by static analysis tools provided by IDE Clojure's approach to problem solving break tasks into parts test each function with sample input data
  3. 2:50Phenomenology The point is not that any approach is superior Clojure programming feels different . more incremental - more exploratory
  4. 3:16Clojure's approach to problem solving • Not the only way of programming Clojure, but it's a good recipe Recipe: We build up state, run our code and re-run until we get it right
  5. 8:43Connecting to a Socket Server Set Java system property clojure.server.myrepl...
  6. 10:22Basic editing features readline-like line editing (cursor movements and history) • tab completion
  7. 13:27Unravel (2): showing incomplete forms checks if the current line is readable user- - [1 2 3] (map inc )
  8. 20:51Communication mechanism Terminal connected to the process: read from stdin, write to stdout
  9. 28:09Machine-readable output Writes to out and eval output can be intermingled Prompts like 'users' are convenient for human beings but difficult to parse • A stream of edn values • Eval output, print output and tooling messages neatly separated ed: convenient for machines, still friendly for tooling authors
  10. 30:44Pristine input stream - Design choice not to meddle with the input stream Prescribing an input format is an anti-goal • Regular evaluations and toping commands are sent alonside each other as regular Cloure forms
  11. 31:43Rich capabilities, frugal dependencies A flower blossoming in the desert Socket Server feature introduced in Clojure 1.8 No further dependencies are required - No additional set up other than starting a socket server
  12. 34:10Server responses include Clojure forms for additional requests Inspired by Hypermedia protocols like REST Inclusiong of Hypermedia references in server responses
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.