Visual-tools meeting 13 - monthly - Interactive visualizations: Shiny, Shadow-cljs, Clay

(Please note the date change.) :point_up_2:

The visual tools group will have its 13th meeting on Oct 7th Oct. 14th.

It will be a monthly meeting, focusing this time on different ways (in Clojure and other languages) to create interactive visualizations.

Joining

Please use the Going button at the top of this post to mark your participation.
You can also use the Add to Calendar to add the event to your calendar.

If you wish to present anything in the meeting, suggest ideas, or raise questions, that would be wonderful. It’d be good to know in advance if possible so that we can be clever about our use of time.

Agenda

Length

The official part will be 90 minutes long.
Sometimes some of us like to stay longer and chat.

Platform

  • We will use Zoom for the video call.
  • We will use the #visual-tools Zulip stream for chat (see the meeting 13 topic thread).

Video call

Zoom link: Launch Meeting - Zoom

Recording

Most of the meeting will be recorded and shared publicly.
Some parts will be unrecorded.

2 Likes

@quoll @jamiepratt @adham and anybody,
Note this meeting is postponed in a week, to Oct. 14th.

See you on Friday!

See you in a few hours.

2 Likes

Thanks a lot to @adham and @jamiepratt for presenting!

@adham: here’s the example of atom and add-watch I wrote, but didn’t have time to share:

;; note - others in this room know atoms better than me (especially Adrian).

;; adham asked about reactive values in Clojure.
;;
;; Teodor: atoms have some reactivity built in :)

(defonce box-1 (atom {}))

(add-watch box-1 ::watch (fn [_key _ref _old new]
                                      (prn new)))

;; Now, watch as I put stuff in there

(swap! box-1 assoc :value (rand))

;; I execute that line a few times.
;;
;; In my REPL, I see the following:

{:value 0.10408007288630139}
{:value 0.7752239947316922}
{:value 0.0769480978634669}
{:value 0.8745944816425095}
{:value 0.85078953052102}
{:value 0.13343801414351208}

;; and a reagent.core/atom is just a clojure.core/atom that also tracks
;; dependencies :)
;;
;; so that when you change one reagent atom, dependent reagent atoms also
;; change.
;;
;; without having to fiddle with add-watch --- it's all automatic.

Atoms won’t get you all of shiny. But the built-in atom functionality is definitely worth exploring!

For prototyping in general, I really like playing with simple pieces first — rather than adding lots of dependencies as step 1. I find that helps me keep stuff simple.

3 Likes

Adrian / @ phronmophobic (who was in the meeting, not on Clojureverse I think) makes this really cool thing with lots of reactivity in it: GitHub - phronmophobic/membrane: A Simple UI Library That Runs Anywhere

2 Likes