Title
#share-your-work
Ryan Robitaille

Ryan Robitaille

08/14/2022, 1:48 AM

https://www.youtube.com/watch?v=24GRiOCa1Vo

Hey all! I want to present the first Alpha release of a project of mine that I've been working on for quite some time - Data Rabbit. It is a flow-based Clojure(script) live-coding eval/REPL canvas for "composable" visual exploration, experimentation, and data observability (yeah, that's a mouthful). Conceptually, it's a a remix of a number of different ideas. Think: Notebook + Whiteboard + Lighttable (with some Smalltalk, Hypercard, Bret Victor & 70s Flow-based Programming influences thrown in). 😉 Basically, think of it like this... it allows the chaining (the "flow") of arbitrary ClojureScript eval & Clojure nREPL "blocks" that can also compose together into single (and recursive) views - with a heavy focus on visualizing the "data context" of the block's edges. Combine that with some handy "scrubbing" and editor eval features, and basic code generation helpers for common tasks - and I think it's pretty interesting (but hey, I'm biased). It's meant to run on your local machine and saves all flows as flat EDN files. However, the website (https://datarabbit.com) is running a special public version that ONLY has CLJS blocks & some fun small examples - but allows loading and saving flow files to/from your browser. So you can play around w/o downloading or running anything (no signing up or logging in - just start hacking). You won't have any of the cool CLJ nREPL block features, but you'll be able to get the general idea hopefully. The interface is fairly involved at first glance so please do watch the video before you dive in. I made one video explaining the website hosted version (this one here) where I run though the basic features & controls. There is a second video going up later this week where I go through every part of the self-hosted server version in detail, with a full slide deck, including some neat examples (dashboarding, CLJ nREPs, tech.ml.dataset, incanter, canvas drawing, etc). As I said - it's literally "Alpha 1 / Public Release 1" so there are bound to be many bugs, UI polish issues, and general wonkiness (although I'm fixing them as I encounter them). Thanks so much. Hope everyone is having a great weekend.
i

Ivan Reese

08/14/2022, 2:45 AM
This is incredible work, and an excellent video introduction.
Jimmy Miller

Jimmy Miller

08/14/2022, 3:46 AM
This is fantastic! As someone who has done a ton clojure data work and built tons of internal devtools/visualizations, I would use this in a heartbeat. The idea of mixing cljs and clj blocks in one canvas is really interesting. Definitely let me know if you are looking for contributors.
Ryan Robitaille

Ryan Robitaille

08/14/2022, 4:52 AM
Thanks so much. I was worried about the video - I just wanted to get it out tonight and after the nth take I was like, ok, this works. Haha. As someone whos workflow generally consists of data pulls small and large, random bits of SQL, exploration viz, various counts, small dashboards, etc. I always wanted a tool where I could arrange that as a "map" of my travels, lay it out and look at how it reacts to filters/changes - and if I could then arrange those bits into the final result (you know, as I gain an understanding of what it is I am trying to communicate) - even better. It's funny, I set out long ago - to make a Clojure-friendly Superset / Data viz type tool - but in order to get the flexibility and freedom I wanted... it ended up kind of like a REPL IDE? Plus my love for ETL / DAG tools brought in the Flow-Based stuff... and here we are. Haha.
Tom Larkworthy

Tom Larkworthy

08/14/2022, 10:53 AM
wow that really amazing, Great art style. I love how you can pull data apart by drag slicing. I use Observable a lot which is kinda conceptually similar but this has better graphics and better output treatment. What made me super sticky with Observable is the fact notebooks were ES6 modules and that you could import other notebooks/canvases so you could build up larger abstractions, I hope you will go in that direction too. BTW, firebase works well for providing state, and also I managed to wire up Redis even from the web. I am curious how easy it is to pull in JS ES6 modules from clojurescript? The tool would very compelling for me personally if I had access to the JS ecosystem.
Ryan Robitaille

Ryan Robitaille

08/15/2022, 3:11 AM
Better video that might resonate w more people less interested in CLJS and more with CLJ work.

https://www.youtube.com/watch?v=PwzucD5qoD4

Duncan Cragg

Duncan Cragg

08/19/2022, 10:20 PM
Looks great. Inspiring for my own stuff. Like a spreadsheet but with nodes and wires. Similar to what I'm doing - data dependencies. I've not started with my similar UX yet, but this is going in my "inspirations" bookmarks right away. Thanks!
s

Scott Antipa

08/20/2022, 10:37 PM
Very cool. I took me a minute to grok that the landing page was the fully functioning app. I think there's a bug where if you hold space while trying to drag (or shift possibly) it got caught in some kind of infinite feedback loop where the zoom/pan dialog was flashing in and out. I'm on a MacBook Air m2. I really like the design by the way!