Greetings!

I'm happy to announce today the release of Oz 1.4.0.

https://github.com/metasoarous/oz

If you're on the Slack #datascience channel, you may have already caught 
wind of some earlier versions. But in the interest of introducing it more 
broadly, I'm posting an overview here for those of you who aren't familiar. 
If you *are* familiar, you may still wish to scroll down to the bottom as 
there are some new features available in the latest release.


*Vega & Vega-Lite*

Oz is based on the fantastic Vega & Vega-Lite data visualization JS 
libraries, and so to really understand what Oz has to offer, it's best to 
start here. Vega & Vega-Lite are based on the seminal Grammar of Graphics, 
an approach to data visualization which emphasizes writing declarative 
descriptions of how properties of data should translate to aesthetic 
attributes of a visualization. This approach guided the design of the R's 
popular ggplot2 library, and has since influenced numerous libraries in 
other languages.

Vega & Vega-Lite take this vision further in two important ways:

   1. In Vega & Vega-Lite, data visualizations are described using *pure 
   data*. This makes it more declarative, and confers all the benefits we 
   know and love about data-driven programming in Clojure. For instance, you 
   can send a chunk of Vega or Vega-Lite data over the wire from one program 
   to another effortlessly (as Oz does), and load it up in another process 
   without having to worry about the security concerns of executing someone 
   else's code. The bottom line is that Vega & Vega-Lite are philosophically 
   and technically compatible with "the Clojure way" (IT'S. JUST. DATA.).
   2. Vega & Vega-Lite take the Grammar of Graphics one step further by 
   introducing a Grammar of Interaction. You can declaratively describe the 
   addition of controls (dropdowns, checkboxes, etc) and interactive 
   properties of the visualization itself (click, hover, etc), and use the 
   data from these interactions to inform other parts of a visualization. For 
   example, you might highlight a set of points in one part of a 
   visualization, and display summary statistics about that selection in 
   another. This is facilitated in part by a general purpose dataflow language 
   as part of the greater spec.

Vega itself is highly customizable and flexible, but somewhat verbose and 
not suitable for day to day visualization tasks. Vega-Lite steps in as a 
somewhat higher level and more automated flavor which itself compiles down 
to Vega. I have been using them together for a better part of a year now, 
and can say without reservation that they are amazing. For years I've 
longed for a ggplot2 from Clojure, and at long last I've found something 
that to my surprise has not only matched, but truly surpassed the standard 
bearer. In short, I'm sold.

If you want to get a better sense of Vega, and Vega-Lite in particular, I'd 
recommend this great talk from the creators at the Interactive Data Lab at 
the University of Washington in Seattle: 
https://www.youtube.com/watch?v=9uaHRWj04D4

If you're interested in a (mostly) more philosophical look at Vega & 
Vega-Lite, and their connections to Clojure philosophy, I did a little talk 
at a local Clojure meetup which you may find interesting: 
https://www.youtube.com/watch?v=hXq5Bb40zZY&t=815s


*Oz*

Oz itself is a very small and focused library, as most of the work falls on 
Vega & Vega-Lite. It offers the following features:

   - A REPL API for for pushing vega and vega-lite data to a browser window 
   over websockets, for REPL-based data science workflows
   - Client side vega and vega-lite Reagent components, for more dynamic 
   usage from ClojureScript apps
   - A grammar for composing Vega & Vega-Lite together in the context of 
   html as hiccup, for document and dashboard generation
   - Plot/document publishing/sharing features via GitHub gists, the IDL's 
   live vega editor <http://vega.github.io/editor>, and the new 
   http://ozviz.io

The last two features in particular are where Oz really brings some 
interesting value to the table beyond the role of a minimal wrapper. I have 
found the ability to create and quickly share visualizations and scientific 
documents from the comfort of my favorite text editor and REPL a godsend. 
While the first several years of my programming experience were in notebook 
environments (Mathematica, MATLAB, Sage, etc), I now find the experience of 
writing and executing code from a web application a burden. Part of my goal 
with Oz was to create a viable alternative to this workflow, and so far 
I've been very pleased. The last piece to this now in place (the ability to 
share hiccup+vega documents via http://ozviz.io), I'm excited to put this 
work out more broadly and hear what the community thinks about this 
approach to the creation and sharing of scientific documents.

There are some other updates and improvements which those of you familiar 
with Oz may wish to take a look at in the changelog, included updated Vega* 
libs, and some smoothing out of the API and UI 
(https://github.com/metasoarous/oz/blob/master/CHANGELOG.md). Otherwise, 
please see the project README for up to date information on how to use the 
library: https://github.com/metasoarous/oz.


Thanks for your time!

Chris


-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to