announcements

Project/library announcements ONLY - use threaded replies for discussions. Do not cross post here from other channels. Consider #events or #news-and-articles for other announcements.
borkdude 2020-09-15T09:32:27.250300Z

Online terminal REPL implemented with xterm.js + the small clojure interpreter: https://babashka.org/xterm-sci/ source: https://github.com/babashka/xterm-sci I'm sure there are a few input/output handling edge cases. Feel free to follow up in #sci. Thanks to @plexus for the idea.

πŸ‘ 16
πŸ‘ 10
9
Eugen 2020-09-17T04:49:48.273300Z

Looks awesome @plexus . Congrats. What was the use case for building it?

borkdude 2020-09-17T06:57:09.274100Z

It can be used to showcase your CLJS libraries in a terminal setting.

Eugen 2020-09-17T07:18:49.274300Z

thanks. From what I read it seems that I could implement a scripting terminal to my clojure / java app and expose the internals (spring beans, etc) ? Use cases would be - level 3 support, changing app behavior at runtime or doing one off scripts that are not yet exposed via api

Eugen 2020-09-17T07:21:37.274500Z

@borkdude: Regarding your use case: can I load clojurescript libraries dinamically in the terminal running in my browser ?

borkdude 2020-09-17T07:24:11.274700Z

@eugen.stan Not like that. Right now you would have to compile your library along and connect it into the sci options: https://github.com/borkdude/sci And then host it somewhere.

borkdude 2020-09-17T07:25:28.275100Z

But sci can be used for the things you mentioned.

borkdude 2020-09-17T07:25:39.275300Z

There is a REPL example in the examples dir of sci

borkdude 2020-09-17T07:26:02.275500Z

But there is also babashka.nrepl which can be used to expose an nREPL server to your sci environment.

Eugen 2020-09-17T07:27:30.275700Z

thanks, I love that about it. I was looking for a language that is safe to embed in an back-end app to expose internal services for maintenance operations not yet implemented in API

borkdude 2020-09-17T07:29:13.275900Z

yes. it's safe in the sense that you control what people can execute

borkdude 2020-09-17T07:30:50.276100Z

we also have some options to restrict infinite seqs

πŸ‘ 1
Eugen 2020-09-17T07:30:57.276300Z

I will check that one up as awell, thanks. I would like to offer my appreciation for your help with clojure and in general. You are awesome and if you ever think I can help, just let me know.

❀️ 1
borkdude 2020-09-17T07:31:18.276600Z

but it's still possible to craft examples that will run for a long time - we haven't quite solved that problem https://github.com/borkdude/sci/issues/348#issuecomment-692985383

πŸ‘ 1
borkdude 2020-09-17T07:32:10.277100Z

a solution would be to run this within a thread and just kill the thread after some timeout

borkdude 2020-09-17T07:32:13.277300Z

on the JVM that is. The same solution is taken by nREPL when you press ctrl-c.

borkdude 2020-09-17T07:33:06.277500Z

in the browser this is more difficult

Eugen 2020-09-17T07:35:54.277900Z

have you looked at web assembly? I don't know if it makes any sense (just started reading about it). https://dzone.com/articles/webassembly-threads-in-firefox WebAssembly works in most modern browsers> Not sure if clojurescript could be made to work with web assembly (don't know about garbacge collection). But if it can, we can have a very powerfull clojre / clojurescript experience .

Eugen 2020-09-17T07:36:08.278200Z

WebAssembly does support threads and can be called from JS.

Eugen 2020-09-17T07:36:59.278400Z

browser support seems good https://caniuse.com/?search=webassembly

borkdude 2020-09-17T07:58:25.278700Z

There's also webworkers, but I don't think they can access the dom

borkdude 2020-09-17T07:58:49.278900Z

The execution length problem is more or less only a problem for scripts you don't control

borkdude 2020-09-17T07:58:59.279100Z

I guess the worst thing that could happen is that your browser freezes

Eugen 2020-09-17T07:59:35.279300Z

πŸ™‚ for running things in browser yes, but for using sci on back-end via xterm.js ...

borkdude 2020-09-17T08:00:03.279500Z

like I said, then you can run things in threads which you can kill on timeout

Eugen 2020-09-17T08:00:12.279700Z

neither web workers nor web assembly can access dom. they need to do that via JS.

Eugen 2020-09-17T08:00:56.279900Z

JS can call functions in WebAssembly and web Assemly can call JS so there is a lot of room for how to do that

borkdude 2020-09-17T08:01:30.280100Z

cool. well, if you want to figure this out, that'd be cool

Eugen 2020-09-17T08:12:25.280400Z

I'll look into it when I have a more concrete use case. Right now I'm just exploring WebAssembly. They do have an open spec for GC https://github.com/WebAssembly/proposals/issues/16 and a v1 implementation https://github.com/WebAssembly/gc . I think it would be worth exploring having a clojure version on web assembly once GC is in place.

borkdude 2020-09-17T08:31:53.280900Z

The concrete use case for this is interpreting scripts from other users in something like https://github.com/athensresearch/athens

borkdude 2020-09-17T08:32:13.281300Z

Maybe @jeroenvandijk can you tell more about it

Eugen 2020-09-17T08:41:38.281500Z

I'm a bit ashamed to admin it's not clear what Athens does. I've looked at the github page and some other docs and as a new commer I have no idea what it does. Does it make beer πŸ˜„?

borkdude 2020-09-17T08:49:47.281700Z

It's something like Roam. I have used neither myself. https://roamresearch.com/

πŸ‘ 1
Eugen 2020-09-17T08:53:01.282Z

I just read the description of Roam and I think I understand what it does. I've been looking for something like this to start a journal πŸ™‚ . I'll check it out

2020-09-17T09:17:26.283Z

@eugen.stan Regarding the (potential) power of Sci, yes Athens or Roam are future potential use cases, allowing for safe third party extensions. Sci/Clojure is a lot easier to contain than Javascript is, and a much better programming model. For current inspiration, I would look at https://observablehq.com/ this only supports javascript, but imagine a Sci variation. I think this is basically what (a part of) Athens could be

❀️ 1
Eugen 2020-09-17T09:19:25.283700Z

thanks, looks very interesting (and nice)

2020-09-17T09:35:45.283900Z

@tangj1122 Might be able to explain Athens or it’s current status a bit better :)

1
Eugen 2020-09-17T09:45:45.284100Z

I'm curios about that. I'm working to grow a clojure company and I'm looking for an intranet tool. Not sure if Athens fits this profile yet.

2020-09-17T10:10:01.284300Z

I think the important things that are still missing are persistence and an authorization layer. So probably not a good fit yet, if that’s not the core of your product at least

plexus 2020-09-17T17:47:35.285600Z

The original use case for this (and one we may still pursue) is to add a drop down repl to lambda island, and to offer various features and customizations over time via the repl

plexus 2020-09-17T17:48:10.285800Z

To answer your question @eugen.stan

borkdude 2020-09-17T17:49:10.286Z

@plexus Made various improvements to the babashka/xterm-sci. Single quotes work. Pasting multiple sexprs. Dealing with incomplete input. Println, prn, pr, etc.

borkdude 2020-09-17T17:50:08.286300Z

It depends on a fork of local-echo: https://github.com/babashka/local-echo

borkdude 2020-09-17T17:50:27.286700Z

Also made a PR to the original one, but they're not fast to respond

jeff tang 2020-09-17T19:27:09.287400Z

Roam allows arbitrary css, js, html, and even some hiccup and datalog. This is fun because it opens up user customization and programmable apps. But it's of course not as secure! This is why JS execution in Roam has this UI https://roamresearch.com/#/app/help/page/3l_9j6aAv

πŸ‘ 1
jeff tang 2020-09-17T19:29:15.287900Z

My hope is that Athens will have a plugin system that is both powerful (arbitrary code), but also safe, so something like sci would be great. But it's not a priority atm. hope that helps @eugen.stan

borkdude 2020-09-17T19:37:37.288100Z

@tangj1122 I think the warning is great. Even with sci we cannot guarantee the length of execution time currently, but maybe allowing users to flag scripts as malicious or something would help in that regard.

πŸ‘ 2
plexus 2020-09-15T16:20:31.254100Z

JDK 15 general availability https://mail.openjdk.java.net/pipermail/announce/2020-September/000291.html

Eugen 2020-09-17T04:45:54.273Z

Loom aims to bring tail call elimination. Looking forward to seeing that.

emccue 2020-09-25T04:15:20.004700Z

The devs have been pretty vocal about "LTS" not meaning anything to them

emccue 2020-09-25T04:15:58.004900Z

So the latest version is the best supported version - LTS is arbitrary based on whatever companies want to do with regards to paid support

orestis 2020-09-25T06:07:37.006900Z

Yes and no - eg. on AWS it’s nice to know that Amazon will apply security fixes to Coretto for a long time.

dominicm 2020-09-25T08:05:26.007100Z

The clojure devs feel differently :)

dominicm 2020-09-25T08:05:45.007300Z

Clojure only officially supports lts the

seancorfield 2020-09-25T16:31:14.013400Z

Well, "officially support" is open to interpretation. Clojure itself is tested against 8, 9, 10, 11 right now (Oracle and OpenJDK versions) per https://build.clojure.org/job/clojure-test-matrix/

dominicm 2020-09-25T17:46:08.014800Z

I'm surprised by 9/10.

dominicm 2020-09-15T16:40:35.254200Z

Anything exciting in JDK15 anyone knows of? I've not followed along really.

orestis 2020-09-15T16:42:15.254700Z

Nashorn is truly removed

orestis 2020-09-15T16:42:22.254900Z

Z1 is stable

seancorfield 2020-09-15T16:49:08.255100Z

Multi-line strings with """

seancorfield 2020-09-15T16:49:25.255300Z

(that's Java language, not JVM, so not useful to us)

seancorfield 2020-09-15T16:49:40.255500Z

And we should probably follow-up in #java

dominicm 2020-09-15T16:51:41.255700Z

https://www.techgeeknext.com/java/java15-features I'll probably look at 12/13/14 too as I didn't follow those either as I only am interested in lts versions. Not sure if they are rolled up or not.

dominicm 2020-09-15T16:57:16.256Z

I know we won't see clojure using this for a long time, but anonymous classes seem like they might be really handy https://openjdk.java.net/jeps/371

dominicm 2020-09-15T17:03:37.256200Z

Looks like this isn't the LTS release. That'll be 1 year from now.

seancorfield 2020-09-15T17:06:29.256400Z

I thought 17 is the next LTS?

dharrigan 2020-09-15T17:10:35.256600Z

6 month release cycle, so 16 is next, then 17 in 1 year which is LTS.

tony.kay 2020-09-15T20:49:51.260800Z

I’m pleased to announce Fulcro 3.3.0. This release has a few new tools that make hot code reload even better. In prior versions a change to a query when using dynamic queries would not be properly seen if nested. This new version provides a function you can call as part of your hot reload refresh that will scan for changes like that and fix them. https://github.com/fulcrologic/fulcro http://book.fulcrologic.com/#_hot_code_reload_and_dynamic_queries

πŸ‘ 9
6
🀘 5
cjmurphy 2020-09-15T22:48:41.261600Z

Fulcro RAD now has another possibility for storage: Key Value stores (in general). The repository is setup as another RAD Demo, just to demonstrate it all working. Please take a look:Β https://github.com/fulcrologic/fulcro-rad-kvstore

🀘 5