reveal

vlaaad 2021-10-27T13:29:16.007Z

In case you missed it in the #announcements, I just released a new version of Reveal Pro β€” 1.3.265. This release adds SQL DB explorer that allows you to get a good overview of your database schema and seamlessly browse relational data across multiple tables, all while being available in your REPL. See more here: https://vlaaad.github.io/reveal-pro#sql-db-explorer

2021-10-27T13:47:27.007200Z

Lenny Kravitz is metal πŸ€”

πŸ˜„ 1
chromalchemy 2021-10-27T16:08:31.007500Z

Cool. I never learned sql proper, and have been looking towards EAV stores (datomic etc) for the prospect of easy joins, and perhaps more intuitive querying. But this is a nice invitation to try sql out directly.

chromalchemy 2021-10-27T16:24:33.019800Z

In this article, https://blog.wsscode.com/extending-reveal/ @wilkerlucio mentions looking at https://github.com/guusdk/java-cef as a more up-to-date chromium engine to render Reveal views, but decided it looked complex to set up. Has anyone seen or considered https://github.com/phronmophobic/clj-cef (Clojure bindings for the Chromium Embedded Framework)? ps. Is this something like this still necessary for advanced webkit rendering in Reveal?

phronmophobic 2021-10-27T17:58:46.026600Z

As far as I can tell, java CEF doesn't have a good story for integration with javafx (see this https://bitbucket.org/chromiumembedded/java-cef/issues/163/provide-javafx-node-for-jcef), but clj-cef can. I think clj-cef would make a great fit for this sort of thing, but I'm not sure what a good API would look like. CEF offers lots of knobs. If someone had a compelling use case, I'd be happy to work with them to make clj-cef work for them.

vlaaad 2021-10-27T19:06:38.027300Z

My main concern with going browser route is VM boundary β€” I want to access and inspect objects living in JVM, when using browser it's getting harder to do so. Maybe I'm over-worried about it...

phronmophobic 2021-10-27T19:29:32.028600Z

That's the benefit of CEF, it's in-process!

vlaaad 2021-10-27T19:48:07.028800Z

hmm, I should check out clj-cef then...

vlaaad 2021-10-27T19:49:44.029Z

oh right, it doesn't work on Windows, that's what prevented me from checking it out the last time I saw it...

phronmophobic 2021-10-27T19:50:46.029200Z

oh yea, I forgot about that too

phronmophobic 2021-10-27T19:51:17.029400Z

There's no reason why it couldn't work on windows. I just don't know how to setup a windows environment

phronmophobic 2021-10-27T19:52:12.029600Z

That's been on my todo list forever, I should give it a shot

vlaaad 2021-10-27T19:56:14.029900Z

Hmm, I'm still not sure using CEF can be the way forward for Reveal... Switching to CEF probably implies a rewrite, and I'm not sure I have energy to do that

phronmophobic 2021-10-27T19:56:59.030100Z

I was thinking you would just embed CEF as a javafx view inside of what you already have

vlaaad 2021-10-27T19:57:16.030400Z

Ah, that sounds possible

phronmophobic 2021-10-27T19:58:16.030600Z

basically, as a replacement for however you used :fx/type :web-view

vlaaad 2021-10-27T19:58:23.030800Z

yeah..

phronmophobic 2021-10-27T20:01:45.031Z

the cool thing about CEF is that you have all these hooks and knobs. For instance, you can stop processing the browser, you can step the browser's event loop, override request processing, save a screenshot on every repaint, and a bunch of other wacky things.

chromalchemy 2021-10-27T16:37:08.026Z

I'm wondering if it could be advantageous to prototype (web) UI code in Reveal. To take advantage of the ala-carte nature of the REPL, instead of always having to scaffold a whole app. Also to leverage the the interactive meta-UI of Reveal to build ad-hoc design tooling (like a slider that changes font size, that is independent of production code); basically instrument UI components for dev/design mode. And also to show n custom (reactive?) views simultaneously (figwheel style..). Does this make sense? or do other projects, developer modes already handle all this sufficiently? Food for thought: @smith.adriane's Membrane project is trying to address the arbitrary instrumentation of UI components. I wonder how Membrane's principled model of UI complements or contrasts with Reveal's model of in-process REPL UI? https://github.com/phronmophobic/membrane

phronmophobic 2021-10-27T18:09:39.026800Z

I'm a big fan of reveal, I've even written some plugins using membrane for reveal: β€’ https://github.com/phronmophobic/reveal-treemap β€’ https://github.com/phronmophobic/reveal-exception I think there's still lots of cool ideas yet to be explored and reveal's innovations are a great example. Personally, the one big change I would like to see is have all of the various repl UI projects leverage a common format so that the features are decoupled from their environment. There are cool tools being written for calva, cider, portal, reveal, cursive, web (eg. re-frame 10x, pathom viz), etc and they're all coupled to their environments. Since membrane's UIs aren't coupled to any specific environment, they could be run anywhere. It doesn't even have to be membrane, but I'm not aware of other options. If the community was all building tools that could be shared across environments, we would all benefit.

vlaaad 2021-10-27T19:09:35.027500Z

I can't wait for 2040s when the only remaining VM alive is wasm πŸ˜„

vlaaad 2021-10-27T19:13:50.027700Z

@chromalchemy btw Reveal is built to create ad-hoc visual tools, I'd suggest checking out https://github.com/vlaaad/reveal/blob/master/src/vlaaad/reveal/ext.clj for building blocks and some examples here: https://github.com/vlaaad/reveal/tree/master/examples

vlaaad 2021-10-27T19:14:25.028Z

including reactive views that watch refs...

vlaaad 2021-10-27T19:15:57.028200Z

ah I was wrong, its 2035, not 2040

vlaaad 2021-10-27T19:16:09.028400Z

that's a reference to https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript

chromalchemy 2021-10-28T03:44:55.031200Z

Interesting, reminds me of https://blog.stackblitz.com/posts/introducing-webcontainers/

chromalchemy 2021-10-28T04:01:15.031500Z

@vlaaad thanks for the examples. I will try them out. @smith.adriane that’s a great vision, reusable interoperable dev viz components! Thanks for the plugins. The treemaps are neat