unrepl 2017-11-23

@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”.

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)

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 ?

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

“easily”

unravel is just one client

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

bad wording

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

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

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

(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 🙂

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

have you tried the netcat way before?

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

nope

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

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}]

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

Ah you are brave!

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

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-23T09:10:47.000083Z

ok, nice

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

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

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

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

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

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

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

ah ok

hacky hacky hacky

@volrath it should fix your issues

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

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

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

The idea would have to be revisited