unrepl

discussing specification of an edn-based repl and its implementations.
pesterhazy 2017-12-14T11:39:29.000041Z

@cgrand actually in Js you can’t block tout court

pesterhazy 2017-12-14T11:40:10.000448Z

Short if while(true){}

cgrand 2017-12-14T11:40:19.000173Z

That’s what I mean: no matter how eval is sync in lumo, it’s gonna leak

pesterhazy 2017-12-14T11:40:41.000208Z

Right

cgrand 2017-12-14T11:40:57.000128Z

I have something related to show

pesterhazy 2017-12-14T11:41:18.000050Z

Got a few questions about that yesterday

pesterhazy 2017-12-14T11:41:47.000435Z

The world is waiting for unrepl.cljs

pesterhazy 2017-12-14T11:42:31.000331Z

Daniels presentation of unrepl.el was very well received yesterday

pesterhazy 2017-12-14T11:43:00.000066Z

Lots of ooohs and aahhs

cgrand 2017-12-14T11:44:09.000112Z

I’d like to hear more about the ooohs and aahhs

cgrand 2017-12-14T11:44:19.000180Z

How did the “one more thing” go?

cgrand 2017-12-14T11:44:37.000390Z

https://github.com/Unrepl/plain-repl

cgrand 2017-12-14T11:45:45.000203Z

https://github.com/Unrepl/plain-repl/blob/master/src/plain_repl/lumo.cljs is a one-file no-deps implementation of an upgradable repl in lumo

pesterhazy 2017-12-14T11:46:46.000315Z

The images were a real crowd pleaser

cgrand 2017-12-14T11:47:42.000203Z

it’s not as full fledged as current lumo implem, but this is showing a way to refactor lumo to make it upgradable

pesterhazy 2017-12-14T11:47:43.000289Z

The elided exception in lazy-seq is also very effective

cgrand 2017-12-14T11:48:10.000231Z

with a :poop: emoji?

pesterhazy 2017-12-14T11:53:16.000433Z

Very cool

pesterhazy 2017-12-14T11:53:40.000466Z

Do I just evaluate that in lumo?

pesterhazy 2017-12-14T11:54:06.000407Z

(Not the emoji, the plain repl)

cgrand 2017-12-14T11:54:42.000004Z

lumo -c src/ -n '{"port": 5557, "accept": "plain-repl.lumo/accept"}'

pesterhazy 2017-12-14T11:55:15.000198Z

Ahh I’ll try that when I’m in the office

volrath 2017-12-14T12:00:46.000302Z

Wow this is great! can't wait to take a look

volrath 2017-12-14T12:01:28.000094Z

Oh and yeah, people did like the images rolling down the repl haha

volrath 2017-12-14T12:01:45.000084Z

I'm going to add a gif for that in the project's README file

cgrand 2017-12-14T12:49:16.000344Z

Mess is fixed and there’s example in README

volrath 2017-12-14T13:19:29.000101Z

amazing.. I just gave it a read. I think i need more time to wrap my head around it completely, but I get the idea.

volrath 2017-12-14T13:19:37.000035Z

so what would be the next steps?

cgrand 2017-12-14T13:20:39.000048Z

as you can see bindings management and session managemnt (which are related) is bit done

cgrand 2017-12-14T13:22:27.000241Z

There are several ways forward but mostly it would be to make plain-repl on par with lumo.repl (or retrofit it into lumo.repl)

cgrand 2017-12-14T13:23:38.000516Z

Long term I’d like async read and async eval (at least as placeholders) to go in cljs proper

volrath 2017-12-14T13:24:36.000215Z

right

cgrand 2017-12-14T13:25:06.000063Z

and *in*

volrath 2017-12-14T13:27:08.000127Z

I'm not sure I follow what does *print-fn* does.. is it a lumo internal thing?

volrath 2017-12-14T13:27:22.000367Z

cljs internal?

cgrand 2017-12-14T13:27:28.000219Z

no it’s *out* in cljs

volrath 2017-12-14T13:27:42.000218Z

ah

volrath 2017-12-14T13:27:45.000386Z

i see

volrath 2017-12-14T13:31:41.000344Z

and with this plain repl implementation, do you think someone could start working on a unrepl cljs for it, while we wait for lumo to integrate it (or something similar to it)?

cgrand 2017-12-14T13:36:06.000542Z

@volrath hard to predict how the proposed apis could evolve but yes

volrath 2017-12-14T13:37:35.000044Z

alright cool

cgrand 2017-12-14T15:07:02.000231Z

@volrath I’m going to extract from accept a template repl similar to clojure.main/repl

volrath 2017-12-14T15:14:22.000564Z

i kinda like the repl -> epl -> pl -> l haha

volrath 2017-12-14T16:23:47.000158Z

https://twitter.com/volrath/status/941342874372894720

❤️ 1
cgrand 2017-12-14T16:36:22.000016Z

https://twitter.com/bronsa_/status/941345728630284288

❤️ 2
cgrand 2017-12-14T16:41:18.000761Z

@volrath do you talk at clojureD?

volrath 2017-12-14T16:41:40.000384Z

I wish I had submitted a talk, but I didn't

cgrand 2017-12-14T16:41:52.000359Z

do a lightning talk!

volrath 2017-12-14T16:42:14.000134Z

that's a good idea, I will 🙂

cgrand 2017-12-14T16:44:37.000436Z

Do we need some :unicorn_face: repl swag for the conf? 😉

volrath 2017-12-14T16:45:50.000216Z

imagine coming with cljs support... I think that'd be difficult to top!

cgrand 2017-12-14T16:47:26.000255Z

I had something else on my mind but cljs.js support may come first

volrath 2017-12-14T16:47:40.000465Z

what is it? 😄

cgrand 2017-12-14T16:47:59.000219Z

unrepl in breakpoints

volrath 2017-12-14T16:48:30.000323Z

ohh.. that could be cool!

volrath 2017-12-14T16:48:36.000391Z

what do you have in mind?

cgrand 2017-12-14T16:48:49.000431Z

yeah but all the cool kids do cljs 🙂

volrath 2017-12-14T16:49:00.000362Z

yeah

volrath 2017-12-14T16:49:10.000548Z

javascript reaches..

cgrand 2017-12-14T16:49:13.000789Z

breakpoints was what I had in mind

volrath 2017-12-14T16:49:21.000446Z

yeah but what exactly

volrath 2017-12-14T16:49:47.000673Z

like, what type of behavior do you see

cgrand 2017-12-14T16:50:54.000224Z

on a breakpoint (either user set or exception being thrown), the user may enter an unrepl session in the context of the breakpoint (looking at and modifying fields and locals, running code etc.)

volrath 2017-12-14T16:52:15.000930Z

sounds really good

volrath 2017-12-14T16:53:05.000030Z

we definitely should think on a big feature for clojured, and who knows, maybe we can do both

cgrand 2017-12-14T16:53:59.000248Z

I’m more confident in cljs.js it’s doable if we use plain-repl as a shim

volrath 2017-12-14T16:54:32.000762Z

agree

cgrand 2017-12-14T16:55:11.000265Z

and then you’ll do the same demo but with a canvas object 😉

volrath 2017-12-14T16:55:24.000398Z

*exactly*

volrath 2017-12-14T16:55:31.000017Z

🙂

volrath 2017-12-14T16:55:52.000202Z

in reality I'm not sure I can haha

cgrand 2017-12-14T16:55:59.000002Z

why?

volrath 2017-12-14T16:56:02.000245Z

but maybe something close

volrath 2017-12-14T16:56:31.000026Z

image is well supported across all emacs installations these days, but browser views are not

volrath 2017-12-14T16:56:46.000740Z

I barely started reading about that a week ago

volrath 2017-12-14T16:59:45.000301Z

it's possible though: http://i.imgur.com/T5efpL0.gifv

volrath 2017-12-14T17:00:25.000523Z

but you require to compile emacs with webkit support, which is not default

cgrand 2017-12-14T17:00:52.000786Z

that’s not what I meant

cgrand 2017-12-14T17:01:10.000749Z

canvas as the server-side object

cgrand 2017-12-14T17:01:31.000076Z

communication would still be base64 png or whatever

cgrand 2017-12-14T17:02:49.000442Z

it should work with no client change

cgrand 2017-12-14T17:02:59.000575Z

only blob

volrath 2017-12-14T17:03:17.000328Z

but afaik, canvas are not server side

volrath 2017-12-14T17:03:24.000546Z

I think there are node implementations

cgrand 2017-12-14T17:03:33.000330Z

yes

volrath 2017-12-14T17:03:34.000840Z

https://github.com/Automattic/node-canvas

volrath 2017-12-14T17:03:37.000427Z

like this one

volrath 2017-12-14T17:03:54.000480Z

hmm yeah that could work!

cgrand 2017-12-14T17:03:56.000475Z

that’s what I had in mind

volrath 2017-12-14T17:04:04.000714Z

sounds really cool

cgrand 2017-12-14T17:04:37.000106Z

but you know what cljs-js support means too? using unravel to develop unravel

volrath 2017-12-14T17:04:53.000200Z

hahaha yeah

volrath 2017-12-14T17:05:13.000420Z

so far, I'm using unrepl.el to develop unrepl.el tools

cgrand 2017-12-14T17:05:33.000104Z

cool

cgrand 2017-12-14T17:05:57.000019Z

let’s get serious and implement an unrepl blob for EL

volrath 2017-12-14T17:06:21.000344Z

ehmm.. let's stick with cljs first haha