unrepl

discussing specification of an edn-based repl and its implementations.
cgrand 2017-11-23T08:37:13.000316Z

@baptiste-from-paris that’s not the words I would use but I guess you get the idea. We have a full duplex communication channel whose protocol is “repl interaction” then after we send the blob on this channel this channel protocol becomes “unrepl”.

cgrand 2017-11-23T08:38:17.000096Z

It’s a bit like getting a HTTP 101

baptiste-from-paris 2017-11-23T08:38:26.000196Z

@cgrand so on connect there is => (.write conn blob)

cgrand 2017-11-23T08:38:39.000222Z

yes

cgrand 2017-11-23T08:39:10.000161Z

then we wait until we get :unrepl/hello

baptiste-from-paris 2017-11-23T08:39:39.000063Z

Ok

baptiste-from-paris 2017-11-23T08:40:14.000292Z

in fact, something like unravel coul be easily plugged in IDE right ?

cgrand 2017-11-23T08:40:38.000048Z

waddyamean?

baptiste-from-paris 2017-11-23T08:40:40.000201Z

“easily”

cgrand 2017-11-23T08:40:56.000404Z

unravel is just one client

baptiste-from-paris 2017-11-23T08:41:07.000134Z

bad wording

cgrand 2017-11-23T08:41:32.000222Z

unrepl (the protocol) is extensible

baptiste-from-paris 2017-11-23T08:41:46.000185Z

I just tried recently tubular for working on lumo projects from cursive

cgrand 2017-11-23T08:41:55.000106Z

the goal is to have IDE have their own blob and set up their unrepl sessions

baptiste-from-paris 2017-11-23T08:42:10.000400Z

ok

cgrand 2017-11-23T08:44:32.000265Z

hmm no, tubular on unravel won’t work because unravel is meant to run in a terminal (well there’s a non term mode but it’s for testing)

baptiste-from-paris 2017-11-23T08:45:01.000093Z

no I know

cgrand 2017-11-23T08:45:05.000209Z

(I mean tubular to connect to unravel)

baptiste-from-paris 2017-11-23T08:45:46.000171Z

My point is, with the multiplication of platform for clj , you have to “learn/use” new tools every time

baptiste-from-paris 2017-11-23T08:45:56.000244Z

and that’s a pain

baptiste-from-paris 2017-11-23T08:46:01.000397Z

at least for me 🙂

cgrand 2017-11-23T08:48:55.000203Z

In the early days of this channel @cfleming chimed in (he’s still on this channel roster); let’s unrepl matures and proves its worth.

baptiste-from-paris 2017-11-23T09:08:57.000056Z

@cgrand I am trying to redo the socket-connector fn (for understanding purpose). Is there a way to check if my repl received the blob on write ?

baptiste-from-paris 2017-11-23T09:09:05.000226Z

like a debug mode or something like that

cgrand 2017-11-23T09:09:39.000393Z

have you tried the netcat way before?

baptiste-from-paris 2017-11-23T09:09:48.000194Z

nope

cgrand 2017-11-23T09:10:28.000127Z

assuming you have a socket repl on 5555: cat blob - | nc localhost 5555

baptiste-from-paris 2017-11-23T09:10:47.000083Z

ok, nice

cgrand 2017-11-23T09:11:10.000205Z

then you can see everything and interact manually

baptiste-from-paris 2017-11-23T09:11:23.000040Z

ok, nice

baptiste-from-paris 2017-11-23T09:11:25.000162Z

thx

cgrand 2017-11-23T10:36:31.000083Z

@volrath kvs:

baptiste-from-paris 2017-11-23T10:48:34.000325Z

so here is the kind of message that client implementer should receive

baptiste-from-paris 2017-11-23T10:48:40.000141Z

[:unrepl/hello {:session :session1656, :actions {:exit (unrepl.replG__1250/exit! :session1656), :start-aux (unrepl.replG__1250/start-aux :session1656), :log-eval (clojure.core/some-> :session1656 unrepl.replG__1250/session :log-eval), :log-all (clojure.core/some-> :session1656 unrepl.replG__1250/session :log-all), :print-limits (clojure.core/let [bak__1599__auto__ {:unrepl.print/nesting-depth clojure.core/*print-level*, :unrepl.print/coll-length clojure.core/*print-length*, :unrepl.print/string-length unrepl.printG__1250/*string-length*}] (clojure.core/some->> #unrepl/param :unrepl.print/string-length (set! unrepl.printG__1250/*string-length*)) (clojure.core/some->> #unrepl/param :unrepl.print/coll-length (set! clojure.core/*print-length*)) (clojure.core/some->> #unrepl/param :unrepl.print/nesting-depth (set! clojure.core/*print-level*)) bak__1599__auto__), :set-source (unrepl/do (unrepl.replG__1250/set-file-line-col :session1656 #unrepl/param :unrepl/sourcename #unrepl/param :unrepl/line #unrepl/param :unrepl/column)), :unrepl.jvm/start-side-loader (unrepl.replG__1250/attach-sideloader! :session1656)}}]
  [:prompt {:file "unrepl-session", :line 1, :column 1, :offset 0, clojure.core/*ns* #unrepl/ns unrepl.replG__1250, clojure.core/*warn-on-reflection* false}]

cgrand 2017-11-23T10:49:01.000221Z

yep

cgrand 2017-11-23T10:49:17.000127Z

hello and prompt

baptiste-from-paris 2017-11-23T10:50:46.000075Z

do you have examples in mind for this => https://github.com/Unrepl/unrepl#mime-attachments

cgrand 2017-11-23T10:52:18.000289Z

Ah you are brave!

cgrand 2017-11-23T10:52:35.000043Z

So no client has it yet

baptiste-from-paris 2017-11-23T10:52:46.000471Z

I am just lost, trying to get stuff ^^

baptiste-from-paris 2017-11-23T10:52:53.000085Z

*understand

cgrand 2017-11-23T10:53:14.000281Z

the blob does emit atatchement for java.io.File and java.awt.Image instances

baptiste-from-paris 2017-11-23T10:53:30.000411Z

ok

baptiste-from-paris 2017-11-23T10:58:30.000015Z

I might be completly wrong but I thought Volatile in cljs were just here to be conform with clj no performance improvment compared to atom

baptiste-from-paris 2017-11-23T10:59:45.000374Z

@cgrand just in case, we are doing a meetup in paris the 6th

cgrand 2017-11-23T11:00:56.000298Z

@baptiste-from-paris on the 6th I’m at https://www.lambdup.io

baptiste-from-paris 2017-11-23T11:01:16.000057Z

ah ok

volrath 2017-11-23T12:13:58.000246Z

I went through the doc quickly and it seems really cool. I had some questions though, but I need to give it a second pass when i'm on my laptop.. Today is the day i'm moving to the other side of berlin haha so I'll be on the phone most of the time

cgrand 2017-11-23T15:53:18.000081Z

hacky hacky hacky

cgrand 2017-11-23T15:54:20.000426Z

@volrath it should fix your issues

cgrand 2017-11-23T15:55:32.000263Z

You are right but out of habit I use volatile! to convey the meaning that’s is very private state

volrath 2017-11-23T16:13:54.000269Z

Great, i was close to implementing something very similar. Thanks! Next stop: implementing unravel's auto-doc string with a custom session action

cgrand 2017-11-23T16:21:46.000003Z

@volrath @pesterhazy ^^

cgrand 2017-11-23T18:36:54.000016Z

@volrath https://github.com/cgrand/packed-printer

baptiste-from-paris 2017-11-23T18:50:53.000084Z

if you have so time @cgrand, I am struggling to understand this project https://github.com/cgrand/sjacket

cgrand 2017-11-23T18:53:43.000138Z

It’s a dead end.

baptiste-from-paris 2017-11-23T18:53:53.000161Z

😂

baptiste-from-paris 2017-11-23T18:53:56.000201Z

ok lol

volrath 2017-11-23T19:26:18.000017Z

great!

cgrand 2017-11-23T19:38:15.000098Z

The idea would have to be revisited