►
From YouTube: Clojure visual-tools meeting 11: tooling for learning resources, a peek into Data Rabbit
Description
In this Sep 2nd, 2022 meeting of the Clojure visual-tools group, we discussed our plans regarding tooling for learning resources.
The main question asked was how to create notes of the coming courses, workshops, and tutorials, in a way that would be copy-paste friendly for different visual tools.
We also had a little intro to Data Rabbit by Ryan Robitaille -- a promo to the main topic of meeting 12.
https://datarabbit.com/
Summary: https://clojureverse.org/t/clojure-visual-tools-meeting-11-tooling-for-learning-resources-a-peek-into-data-rabbit/
A
We
are
a
few
friends
here
and
we
will
be
discussing
a
little
bit
of
the
state
of
the
tooling
ecosystem,
or
at
least
some
part
of
it,
and
we
will
begin
by
introducing
ourselves
just
telling
a
little
bit
about
who
we
are
and
what
we're
interested
in
and
then
we'll
have
a
short
presentation,
kind
of
trying
to
provoke
a
discussion,
and
then
today,
mostly
mostly
have
a
discussion
of
of
how
we
possibly
create
some
conventions
between
tools,
and
the
topic
we
are
trying
to
address
is
learning
resources.
A
So
you
know
we
will
have
some
notes
of
a
talk
or
a
tutorial
or
something,
and
it
would
hopefully
just
work
in
different
tools
and
it
is
very
relevant
at
the
moment
because
actually
there
are
new
tools
which
are
emerging
these
days
and
maybe
adrian
will
tell
something
about
adrian's
adventures
and
then
maybe
ryan
will
mention
something
about
what
will
be
presented
next
week
and
and
so
on.
So
we
we
are
in
this
exciting
time,
and
this
thing
thinking
is
kind
of
needed
and
hello,
george,
thank
you
for
joining
us.
A
So
maybe
we
should
begin
by
short
intros
just
a
little
bit
about
ourselves.
So
maybe
I'll
begin,
I'm
danielle.
I
am
involved
in
community
building
and
I
do
statistics
mostly
and
these
days
I'm
I'm
kind
of
kind
of
kind
of
bothered
about
these
tooling
questions,
and
so
maybe
I'll
share
later
just
a
bit
of
my
thoughts
and
adam.
Would
you
maybe
tell
about
yourself.
B
All
right,
I'm
adham,
I'm
a
data
analyst
at
the
moment,
I'm
working
with
r
and
chinese
building
web
applications
for
displaying
data
such
as
like
chorup
of
maps
and
I'm
interested
in
closure,
because
I
I'm
falling
more
and
more
in
love
with
functional
languages
and
closure
seems
like
a
really
great
language.
C
So
my
name
is
ryan
robitaille,
a
long
time
career
data
engineer
who
at
some
point
got
more
heavily
into
dataviz
and
dashboarding
and
all
that
spent
been
all
been
used
every
tool
set.
You
know
tableau,
sql,
server,
reporting
services,
you
know
made
stuff
in
python
and
javascript
raw,
but
lately
has
been
you
know
past
few
years,
been
obsessed
with
kind
of
closure
and
bringing
this
kind
of
direct
manipulation.
C
E
Hello,
I'm
george
and
I
work
in
the
financial
industry
and
I'm
a
manager,
and
I
built
rest
apis
for
the
last
decade
and
two
weeks
ago
I
switched
to
data
engineering
so
from
java
spring
to
closure
in
the
past.
Now
it's
scala
and
airflow
and
snowflake,
and
all
these
other
cool
tools
that
I'm
just
learning
now
and
I
did
stuff
for
closure
in
the
past
and
I'm
hoping
to
get
caught
back
up
to
speed
and
use
it
in
this
new
world.
F
Hi,
I'm
adrian,
and
I'm
mostly
interested
in
how
you
can
use
visual
tools
for
just
to
improve
general
purpose
programming.
D
A
A
Oh
no
mike
yeah,
so
anyway,
hello
max
nice
to
meet
you
and
christopher
will
probably
join
us
in
a
moment.
So
maybe
we
will
begin
and
just
chat
a
bit
about
our
situation
and
yeah
I'll
I'll
show
the
screen
and
we
will
kind
of
have
really
really
the
shortest
and
most
boring
presentation
possible
so
that
we
could
mostly
have
a
discussion
and
yeah.
So
so
maybe
yeah
yeah
here
are
some
notes,
so
I
share
the
screen
yeah.
A
A
We
are
talking
about
a
situation
where
many
many
amazing
visual
tools
are
emerging
so
next
week
we'll
have
data
rabbits
and
also
these
days.
There
is
this
excitement
around
calvin
notebooks
and
connecting
that
with
portal
and
other
many
other
tools
which
I
met
emerging
like
clerk,
for
example.
That
probably
many
of
you
know,
and
these
tools
are
not
copy
paste
friendly.
A
What
does
it
mean?
It
means
that,
if
somebody
is
writing
some
notes
like
a
tutorial,
maybe
in
say
clerk,
this
amazing
notebook
tool,
then
they
would
be
creating
a
beautiful
tutorial
and
creating
different
visual
things
like
this.
You
know
like
plots
and
images
and
such
and
then
they
would
like
to
just
use
that
in
another
tool
like
portal
and
then
they
cannot
just
copy
the
code
and
have
it
working,
because
each
tool
has
its
own
way
of
saying
this
should
be
considered
a
plot.
A
That
is
an
image
you
should
show
it
as
an
image.
Each
tool
has
its
own
little
conventions,
which
would
make
it
precise
how
things
should
be
displayed.
So
one
cannot
copy-paste
code
across
visual
tools.
Does
it
make
sense
that
there
is
a
problem
yeah
or
maybe
maybe
any
comments
about
this
statement
of
a
problem
before
we
continue?
Maybe.
A
So
there
is
a
coming
data
science
course,
and
you
know,
participants
in
the
course
will
be
creating
all
kinds
of
little
projects
and
exercises
and
tutorials
and
such-
and
there
is
the
cookbook
project
by
kira
that
maybe
akira
will
mention
later
and
in
general.
People
are
creating
many
tutorials
and
all
these
things
are
happening
today
and
we
should
be
asking:
will
there
be
will?
Will
we
have
any
way
to
create
those
resources
so
that
they
would
be
copy-paste
friendly
with
the
future
tools,
with
the
tools
which
are
emerging
today?
A
And
so
that's
the
problem
and
what
you
know
after
a
few
experiences
in
the
last
few
months
today
we'll
try
to
propose
something
and
discuss
it,
and
the
idea
of
today
would
be
to
suggest
some
way
to
be
precise,
some
conventions
that
would
allow
to
say
what
kind
of
way
a
given
value
should
be
displayed,
and
we
would
like
to
discuss
some
sensible
defaults
and
also
an
ability
to
override
them
by
the
user.
A
So,
for
example,
if
we
have
an
image,
we
would
like
to
consider
that
an
image
by
default
or
if
we
have
a
plot
of
the
vega
specification,
we
should
be
able
to
say
this
is
vega
right
or
that
is
hiccup.
This
is
markdown
all
these
visual
formats,
and
so
we
want
to
suggest
a
certain
way
to
do
that,
and
we
want
to
discuss
this
way
with
tool
makers
and
actually
adapt
it
and
do
what
whatever
changes
needed
to
actually
make
it
make
sense
for
as
many
tools
as
we
could.
A
If
we
could
right-
and
then
you
know,
the
next
short
step
would
be
to
create
a
very
boring
tool,
a
small
tool
that
would
just
allow
to
display
these
things
by
convention,
so
that
we
will
be
able
to
start
teaching
our
data
science
skills
and
other
things
so
that
we
will
be
able
to
begin
create
materials
and
then
later
in
the
longer
term.
We
would
like
to
just
encourage
as
many
tooling
projects
as
we
could
to
use
these
conventions
as
advice.
A
Maybe
we
will
realize
it
is
just
too
complicated,
but
maybe
we
could
have
some
pragmatic
choices
that
would
make
it
doable,
and
what
I
wish
to
present
very
briefly
is
what
that
boring
tool
could
be
for
the
short
term
and
what
those
suggested
conventions
could
be
so
that
we
have
something
concrete
to
discuss
and
then
hopefully,
change
so
that
you
know
you
could
affect
it
by
by
your
your
experience
and
your
opinions
and
then
mostly
discuss
it.
A
So
that's
the
plan
just
have
these
little
demos
and
discuss
them,
but
maybe
maybe
it
is
a
good
time
to
stop
and
think
for
a
moment.
Oh
hello,
christopher
yeah,
so
so
nice,
you
haven't
missed
so
much,
but-
and
I
think
you
know
what
we
are
discussing-
we
this
trouble
of
trying
to
create
resources
which
are
copy-paste
friendly
and
I'll.
A
Just
add
that
in
the
last
few
weeks
I've
been
playing
with
us
as
this
project
by
christopher,
which
is
has
been,
maybe
the
the
for
a
few
years,
the
main
and
notebook-like
tool
a
few
of
us
have
been
using
and-
and
I
just
realized
that
ours
is
more
than
I
could
imagine
so.
That
is
why
I
couldn't
connect
it
as
I
hoped,
but,
but
maybe
that
is
a
very
concrete
hope
for
the
the
near
future
and
yeah.
So
any
comments
so
far
any
thoughts
about
this
situation.
C
So
sorry,
chris
you're
saying
something.
C
Nice,
I
have
a
quick
question,
I'm
new
to
the
group
right
and
I'm
not
familiar
with
some
of
the
other
tools
you're
talking
about.
I
mean
I've
used
some
of
them,
but
it
seems
to
be
for
the
copy
and
paste
problem
that
a
lot
of
these
tools
require,
like
wrapper
code
or
boilerplate,
to
be
able
to
display
certain
things
in
certain
ways
I
mean.
Is
that
pretty
much
the
crux
of
that
problem,
daniel.
A
Yes,
exactly
yes,
some
boilerplate,
some
metadata,
some
way,
some
notation
to
say
this
is
vega.
This
is
hiccup.
This
is
markdown
and
and
maybe
what
we
could
do,
maybe
after
I
present
some
suggestion,
maybe
christopher
will
would
show
a
bit
of
how
oz
does
it
if
you
like,
and
we
could
see
the
variations
of
that
boilerplate
right
and
yeah.
But
anyway,
let
us
see
something
very
simple
and
very
concrete,
and
so
so
first
we
would
like
to
talk
about
a
boring
tool
about
something
we
could
hope
for
in
the
short
term.
A
So
sorry
I'll
just
restart
the
record
and
share
the
screen.
A
Oh
no,
no,
that
is
needed.
That
is
very
much
needed.
We
want
that
yeah,
so
yeah
yeah,
so
so
I'll
show
the
screen
again
and
yeah,
and-
and
so
you
see,
what
we
have
here
is
like
a
little
namespace
and-
and
this
namespace
follows
the
this
tradition-
that
some
of
us
call
namespace
as
a
notebook
where
maybe
oz
is
the
prototype
of
all
solutions.
A
But
there
are
actually
a
few
other
projects
that
do
that,
and
the
idea
is
that
the
regular
closure
namespace
can
serve
as
the
source
for
a
notebook
and-
and
here
you
know
it
is
written
to
work
with
a
project
called
clay
which
is
just
a
little
tool.
We
have
been
playing
with
in
the
last
few
months
and
we
just
experienced
it
for
a
moment
just
to
have
you
know
a
concrete,
concrete
experience
to
discuss
and
I
think.
D
A
Yeah
still
loading
requirements
and
such
and
yeah
so
so
you
see,
we
have
many
values
here
and
we
have
some
browser
view
and-
and
we
actually
want
to
present
different
things
in
the
browser
and
the
way
clay
works
is,
is
that
when
one.
A
Evaluates
something
it
should
be
shown
in
the
browser,
so
now
sorry
for
the
delay,
but
now
we,
for
example,
evaluated
this
plot
of
the
e-charts
library
and
got
the
plot
in
the
browser,
and
we
could
evaluate
something
of
the
this
cytoscape
library
for
networks,
and
you
see
it
is
this
very
boring
experience.
A
There
follows
something
which
is
obvious,
obviously,
in
oz,
also
just
this
ability
to
send
something
to
send
a
visual
value
to
the
browser,
and
you
know
you
see,
we
have
a
certain
way
here
saying
what
kind
of
way
a
thing
should
be
displayed
and
we'll
discuss
that
just
a
little
later,
but
the
need
is
to
just
display
values
visually
in
the
browser
that
is
maybe
the
first
need
just
display
a
value.
The
second
need
is
to
render
a
whole
namespace
as
a
notebook
right,
so
here
I'm
calling
some
function.
A
That
would
render
the
namespace
and
it
is
taking
some
time
to
evaluate,
but
eventually
we
get
this
notebook,
which
is
the
rendering
of
this
namespace,
and
so
what
I
suggest
is
that
for
our
learning
resources,
this
these
are
the
two
basic
needs
and
after
we
come
up
with
some
proposed
convention,
it
should
be
easy
to
satisfy
those
needs
with
the
convert,
the
convention
that
we
hopefully
converge
to
together
right,
and
so
that
is
the
short
term
plan
to
decide
how
to
make
that
boilerplate
acceptable
to
different
tools
and
then
create
a
boring
tool
that
does
it
that
makes
it
work.
A
G
D
A
Yeah
yeah,
I
had
an
editor-specific
key
binding
okay
that
in
this
case
emacs
that
actually
called
the
closure
function
and
it
passed
the
file
name
to
the
function.
So
something
was
happening
and
I
didn't
even
mention
it
was
happening
right.
Thank
you.
Thank
you
for
that
yeah,
and
so
all
these
choices.
A
It
is
a
new
draft
of
the
new
version
and
the
hope
is
to
just
use
it
as
a
way
to
provoke
a
discussion,
and
I
would
love
to
replace
it
with
whatever
we
come
up
with
together.
If
we
could
converge
to
something
that
we
could
accept,
you
know
maybe
at
least
a
few
of
us,
and
so
the
idea
is
that
yeah
we
don't
need
that
anymore.
So
the
idea
is
that.
A
To
decide
how
a
given
thing
should
be
rendered,
we
may
need
to
look
into
the
value
of
that
thing,
but
possibly
also
to
the
code
that
generated
it,
and
that
is
already
maybe
controversial,
because
not
all
tools
are
looking
into
the
actual
code
as
a
way
to
decide
how
to
render
something.
But
you
see
let
us
kind
of
be
concrete,
and
imagine
you
know
that
the
user
is
writing
some
piece
of
code
like
maybe
creating
some
hiccup
form
right
and
then
they
would
like
to
say
this
is
hiccup.
A
So
it
is
not
obvious
that
they
need
to,
for
example,
in
oz.
It
would
be
hiccup
by
default,
and
maybe
we
would
argue
that
it
should
be
like
that
in
all
tools,
or
maybe
at
least
in
our
suggested
convention
right.
But
let
us
say
that
our
tool
doesn't
know
it
is
zika,
so
the
user
needs
to
say
this
is
hika,
so
they
could
say
something
like
that.
Like
call
a
function
over
it
to
say,
I'm
adapting
this
value,
I'm
actually
attaching
some
metadata
to
this
value.
A
A
And
I'm
writing
it
here
as
an
option,
because
when
we
were
trying
different
ways
of
expression,
actually
users
were
asking
for
something
like
that.
They
that
you
know
they
found
convenient,
so
I'm
proposing
at
the
moment
to
say
yes,
the
code,
the
code
that
creates
the
value
is
something
that
could
affect
the
decision
of
the
kind
well,
the
kind
is
the
answer,
the
kind
of
way
we
should
be
displaying
something.
A
So
the
proposal
is
to
yeah,
maybe
just
let
us
make
it
more
interesting
to
kind
of
be
clear.
It
could
be
like
evaluating
something
right,
so
the
proposal
is
to
have
a
function
that
would
get
both
the
code,
which
is
in
this
case.
It
is
this
thing
right
and
the
value
which
is
in
this
case
h13
and
our
function
would
advise
the
tool
how
to
treat
that
that
context
of
code
and
value.
So
in
this
case,
we
could
ask
for
something
like
advice.
A
A
The
whole
data
structure
that
also
specifies
not
only
the
code
and
the
value,
but
also
the
kind
to
be
something
like
kind,
because
right
so
the
device
function,
would
add
the
missing
information
and
say
this
should
be
considered
hiccup
and
so
that's
the
proposal.
The
proposal
is
to
have
some
general
advice
function.
A
That
would
be
an
advice
for
different,
tooling
projects
and
have
it
give
the
answer
and
the
idea
is
to
make
it
configurable
so
that
we
would
be
able
to
come
up
with
certain
default
behavior
for
our
teaching
resources,
but
maybe
another
another
project
would
come
up
with
its
own
defaults
for
its
users
if,
if
it
seems
to
be
needed
right,
but
that's
the
main
entry
point
for
the
api
we
are
suggesting,
so
is
it
making
sense
at
the
moment?
Maybe
it
is
a
bit
abstract.
A
G
One
quick
question:
how
do
you
see
advice
being
or
yeah
advice
being
used?
Is
that
is
that
something
that
that
would
happen
kind
of
behind
the
scenes?
Or
would
this
be
kind
of
a
core
part
of
the
the
usage
pattern.
A
Yeah,
so
the
the
user
would
typically
not
care
about
advice,
but
the
person
in
inventing
a
new
tool,
like
maybe
let
us
mention
portal,
so
the
tool
called
called
portal
would
actually
look
into
the
code
and
value
and
ask
call
this
advice,
function
and
see
oh
there
and
they
would
learn
the
user
wanted
something
to
be
considered
as
hiccup,
and
they
would
maybe
respect
that
and
present
that
value
as
he
can.
A
That
would
rely
on
the
advice
and
what
I'm
hoping
is
that
we
could
make
it
friendly
enough
easy
enough,
so
that
tools
would
be
happy
to
use
that
advice
without
breaking
any
behavior.
If
there
isn't
any
kind
specification
and
and
that's
the
proposal
and
if
you
wish
we
could
dive
into
details
in
a
moment,
but
is
the
proposal
making
sense
so
far.
A
C
No
no
seems
reasonable.
I
just
so
again
new,
you
know,
so
this
may
be
an
ignorant
question,
but
so
something
I
struggled
with
with
rabbit
for
a
long
time
was
this
kind
of
thing
right.
C
I
didn't
want
weird
proprietary,
rappers
and
stuff
because
it
kind
of
takes
away
from
like
the
playground
aspect
to
closure,
so
I
settled
on
basically
evaluating
the
piece
and
looking
at
the
data
type
that
came
out
of
it
and
then
generating
the
renderer
based
on
that
right,
be
it
a
data
structure
or
hiccup
or
vega
javascript,
whatever,
which
I
think
is
the
most
cleanest
way
to
do
it
from
a
user
space
perspective,
but
obviously
there's
complications
there
again.
C
I'm
new
to
this
whole
thing,
so
apologies
that
this
is
like
out
of
left
field.
I
don't
know
I
mean
that's
just
kind
of
where
I
come
from
on
this,
because
I
struggled
with
this
for
a
long
time.
I
didn't
want
to
have
any
like
any
magic
that
was
kind
of
outside
of
the
base
language
right.
I
didn't
want
to
create
like
a
rabbit
dsl
to
draw
stuff.
You
know
I
just
wanted
to
make
the
data
structures
and
the
outputs,
like
you
know,
show
for
themselves.
C
So
that's
kind
of
I
don't
know
in
in
your
api
idea
how
that
would
even
be
implemented.
Obviously,
you'd
have
to
like
cache
the
output
and
look
at
it
and
run
your
run.
Your
advice
in
the
background
right
since
advice
is
nothing
that's
user
space.
There
would
be
something
that
the
system
does
to
generate.
You
know
whatever
the
render
portal
is,
if
that's
what
you're
implying
then
my
bad,
but
just
just
my
two
yeah,
because
I
I
struggled
this
for
a
long
time.
I
had
lots
of
rappers
I
had
hinting.
C
I
had
comment
hinting
I
had
metadata
hinting
and
it
just
all.
At
the
end
of
the
day,
building
stuff
just
felt
really
weird
it
felt
like
I
would
be
forcing
people
to
do
this
like
like
esoteric
thing.
Instead
of
just
hey,
pick
up
any
closure
book
and
write
closure
and
it
should
render
it
should
work
right,
anyways,
that's
just
my
immediate
reaction
from
this
after
staring
at
the
stuff
for
way
too
long.
So.
D
A
C
Yeah
I
mean
hiccup.
Hiccups
are
an
exception
because
hiccups,
you
know,
obviously
a
vector
that
starts
with
a
certain
keyword
right,
that's
pretty
easy
to
pick
up.
Otherwise
it
would
just
render
as
a
vector
the
stuff
that
I
did
was
mostly
rendering
data
types.
But
since
the
visualization
layer
of
rabbit
is
essentially
closure
script,
it's
really
easy
to
say:
hey.
This
is
a
compiled.
Javascript
object
right,
show
it
as
that,
and
anything
else
is
basically
a
data
type.
A
row
set
a
map,
a
vector,
a
string.
C
You
know
what
have
you
so
maybe
I'm
cheating
a
little
bit
in
that
case
right
because
I
take,
I
take
the
repel
values
from
closure,
bring
them
to
closure
script
and
then
visualize
them
in
that
layer.
So
yeah,
so
we've
been
cheating
a
little
bit,
but
I
I
tried
to
stay
away
from
like
hey:
let's
have
a
bunch
of
like
renderer
libraries
right
that
are
very
specific
to
each
thing,
because
I
I
didn't
feel
that
was
extensible
enough.
C
C
It
doesn't
have
to
because
it's
evaluating
the
vegas
specification
inside
oz
inside
a
function
that
gets
bootstrapped,
so
the
output
is
just
the
compiled
javascript
of
the
graph
right,
so
it
doesn't
have
to
introspect
a
code.
It
can
just
see
hey
I'm
going
to
evaluate
this
thing:
here's
my
output
and
then
I
I
look
at
the
output
and
get
the
data
type
right
and
then
send
it
to
a
particular
renderer.
People
can
change
the
renderer
like.
C
If
I,
if
it's
a
map
and
I'm
drawing
a
map,
I
can
change
it
a
text
or
whatever,
but
again
if
this
is
if
this
is
not
not
where
you're
going
with
this
apologies,
but
I
just
thought
that
was
the
cleanest
way
to
do
this
and
I'm
sure
there's
downfalls
there.
C
You
know
there
certainly
is
on
the
closure
side
with
different
readers
and
whatnot,
but
in
terms
of
like
using
cljs
as
my
visualization
layer
like
I
found
it
pretty
nice
like,
I
have
a
visualization
type,
that's
basically
auto,
which
is
like
whatever
this
is
just
show
it
in
the
nicest
way
and
there's
no
rabbit
code.
There's
no
boilerplate!
There's
none
of
that
because
I'm
I'm
looking
at
the
values
right,
not
the
code,
not
the
you
know,
not
the
rapper.
Again,
I
didn't
mean
this
to
be
a
rabbit
like
grandstanding.
G
That's
really
helpful
because
part
of
what
we
want
to
do
here
is
like
we
want
to
daniel's,
taking
up
the
very
unenviable
task
of
like
trying
to
make
sure
that
all
these
different
pieces
of
the
visualization
kind
of
data
science
ecosystem
are
able
to
play
nicely
together,
so
that
so
that
someone
who
starts
out
with
clay
can
either
take
their
work
to
rabbit
or
to
oz
or
the
portal
or
to
whatever
and
and
they're,
not
having
to
think
a
bunch
about.
G
Like
I
mean
your
way,
is
very
much
kind
of
what
you're
saying
which
is
like.
I
don't
want
people
to
have
to
like
learn
this
particular
way
of
doing
things
to
use
my
tool.
I
want
them
to
be
able
to
kind
of
write
closure
and
have
it
do
the
right
thing,
and
I
think
that
is.
I
think
that
is
at
least
to
some
approximation
kind
of
a
a
very
overlapping
goal,
at
least,
which
is
that
right
like
we
want.
G
We
want
a
particular
vocabulary
so
that,
for
all
the
for
all
the
educational
resources
that
are
being
put
together,
we
want
it
to
be
so
that,
like
this
isn't
like
for
this
specific
tool.
This
is
something
that
you
can
port
around
and
use
in
different
tools
and
to
the
extent
that
we
can
do
that,
we're
just
gonna.
G
I
mean
the
the
goal
is
that
that
just
makes
it
that
much
easier
for
everyone
to
like
come
into
the
closure
ecosystem
right.
So
so.
G
Like
I
looked
at
data
rabbit,
it
was
really
cool
by
the
way
but,
like
you
have
to
refresh
my
memory
so
like
what
are
you
starting
with
you're,
starting
with
a
regular
like
clj
file,
or
you
know,
namespace
and
then
it's
sending
stuff
to
to
a
clgs
cljs
world
or
what's
can
you
like
to
describe
a
little
because
I'm
curious
about
like
right,
you're
talking
about
you
just
do
eyes,
and
then
it
just
does
the
oz
thing.
So
is
everything.
C
No,
no
there's
a
there
are
certain
blocks
that
execute
on
just
the
closure:
replicide
right
and
there's
certain
blocks
that
execute
only
on
the
cljs
side,
but
in
re
in
executing
the
closure
version
right.
It
has
to
come
to
cljs
to
render
so
I
can
write
a
function
enclosure
on
the
reply
that
outputs,
a
hiccup
vector
and
it'll
render
as
a
hiccup
vector
on
the
screen,
because
the
the
ui
just
says.
Oh,
this
is
a
hiccup
that
you
know
this.
C
Is
this
hiccup
so,
like
I
said,
I'm
kind
of
cheating
a
little
bit
there,
because
I
use
that
as
the
pipeline,
but
yeah
I
mean
you're
totally
right.
It's
like
I
didn't
want
people
to
learn
like
some
library,
specific
language
to
get
stuff
to
work
and
then
be
like.
Well,
I'm
confused.
C
You
know
what
is
closure
and
what
is
this
library
and
what
is
whatever
right,
like
you
know,
yeah
yeah,
because
then
the
problem
is
you
end
up
building
like
these,
these
esoteric
readers
for
all
these
different
things
that
want
to
treat
the
canvas
a
different
way,
and
it's
like
man.
How
can
we
do
the
most
generic
way
right?
It
was,
it
was
a
real
tough
thing
to
figure
out
and
I
don't
know
if
I
fully
solved
it
but
anyways
yeah,
like
I
said
the
rapid
thing
is
next
week.
C
I
would
love
to
give
like
a
two
minute
example.
What
I
mean,
but
I
don't
I
don't-
want
to
take
away.
Daniel's
yeah.
A
So
so,
actually
we
have
time
we
have
like
50
minutes
to
the
official
time,
and
maybe
what
we
could
do
is
spend
a
few
minutes
on
each
of
the
tools.
A
You
know
there
are
a
few
tool
makers
here,
so
maybe
you
would
like
to
present
a
little
bit
and
just
to
give
a
concrete
idea
and
maybe
before
doing
that,
I'll
I'll
kind
of
provoke
the
discussion
with
a
few
examples
that
would
kind
of
see
the
trouble
and
so
and
then
we
could
maybe
dive
in
into
two
or
three
tools
which
are
relevant
so.
G
If,
if
I
can
ask
how
would
you
maybe
just
as
a
motivating
example,
if
you
do
present
ryan-
or
you
just
tell
us
with
the
oz
case
in
particular,
I
mean
it's
easy
to
think
like.
Okay,
if
I
just
have
some
hiccup
like
it's
easy
to
see
what
happens
there
right
like
it's
getting
sent
and
then,
as
you
said,
you're
doing
some
you're
looking
at
the
shape
of
it?
Does
this
look
like
hiccup
if
it
does
and
your
android
just
hit
up
right?
G
So
if
you
were
doing
an
oz
visualization
like
what
would
you
send,
then
are
you
sending
like
colon
vega?
You
know
keyword,
vega
and
then
kind
of
like
kind
of
like
the
oz
syntax,
or
are
you
so
you're
just
keying
off
of
that
first
keyword,
entry,
or
are
you
like
calling
it
like
you
would
if
you
were
creating
a
a
reagent
component
like
using
the
closure
script
side
of
oz.
C
Yeah,
I'm
currently
using
the
closures
closure
trip
side
of
eyes.
If
I
was
using
the
closure
version
like
I'm,
assuming
you
have
the
option
there
to
like
spit
out
a
png
or
something
right
and
I'd
have
to
build.
I'd
have
to
say,
hey,
like
you
know,
go
show
this.
You
know,
and
this
other
you
know,
image
tag
or
whatever
but
yeah
with
with
eyes.
I'm
using
the
closure
script
version.
C
Would
be
just
vega
light
spec
inside
the
oz
function?
I
can
show
you
in
a
second.
If
we
do
this
yeah
but
yeah
I
mean
it's
just
like
like.
I
wanted
to
be
able
to
go
to
the
github
page,
cut
and
paste
the
tutorial
and
have
it
like
99.9
work,
because
otherwise,
especially
if
you're
learning
something
you're
like
oh
I'm
lost
right.
So
yeah.
A
Yeah,
so
so,
maybe
really
briefly,
let
us
mention
a
few
examples
we
could
care
about,
so
one
is
yeah.
So
sorry,
I
I'm
what
the
use
cases
I'm
talking
about
are
mostly
on
the
closure
backhand
side,
where
somebody
is
working
with
data
and
creating
something
and
willing
to
see
to
visualize.
So
one
thing
could
be
an
image,
so
an
image
could
be
a
java
object
of
the
buffered
image
class
and
they
would
just
want
to
see
that
image.
A
Another
thing
could
be
a
closure
data
structure
like
a
vector
or
a
map
or
something
nested
where
inside
you
may
have
some
values
that
deserve
some
special
view
like
buffered
image
objects,
so
imagine
a
vector
with
a
few
buffer.
Buffered
image
objects.
How
would
that
be
rendered
right?
Another
example
is
a
specification
of
vega
or
or
e-charts,
or
some
some
javascript,
json
friendly
library.
A
Another
example
is
hiccup.
Another
example
is
hiccup
where
inside
the
hiccup,
we
have
values
that
comply
with
another
specification
like
vega.
So
what
happens
if
we
have
vega
inside
the
cup
right
and
another
example-
is
a
specific
library,
for
example,
this
famous
tecamel
dataset
library,
that
has
some
table
like
data
structure
and
we
want
to
see
that
table
and
then
we
could
do
that
different
ways.
One
could
be
to
have
it
printed
and
render
the
printed
data
set
as
markdown.
It
turns
out
that
it
comes
up
beautifully,
so
that
is
one
option
right.
A
So
how
would
we
express
that
here
is
an
additional
library?
It
has
a
certain
type.
We
can
recognize
if
we
depend
on
that
library
and
we
want
that
type
to
be
printed
as
a
string
and
then
considered
as
macd.
So
I'm
just
throwing
up
examples
so
that
we
have
something
cookery
and
then
maybe
maybe
I
should
stop
and
we
could
maybe
have
a
discussion
of
rabbits
and
oz
and
maybe
every
and
one
of
the
things
you're
creating
if
you
wish,
if
you
find
them
relevant.
D
C
C
Okay,
can
you
can
anyone
see
the
the
screen
here?
Yes
yeah,
so
I
have
a
bunch
of
simple
data
types
here
right
so
I
mean
this
is
obviously
a
string.
This
is,
you
know,
row
set
of
vector
maps,
you
see
it's
it's
rendering
and
it's
out
auto
it's
trying
to
think.
Well.
What
is
this
and
how
can
I
render
it,
but
I
could
easily
say
you
know,
show
it
as
text.
Show
it
as
a
nested
map,
but
auto
is
you
know
a
v
table
row
set
right.
C
You
know,
float
integer.
This
is
a
nested
map
right
with
different
keys
and
vectors,
and
I
can
even
do
some
cool
stuff
with
this
be,
like
you
know,
let's
say
I
just
wanted
this.
This
numbers
value-
I
could
literally
just
drag
this
index
out
to
here
and
get
it
get
in
and
get
the
numbers
so
like
we're
digging
in
getting
get-ins
from
maps.
This
is
just
some
hiccup.
You
know
I
just
cut
and
pasted
buffy
the
vampire
pick,
which
could
be
anything.
You
know
it
doesn't
really.
There's
no
tagging,
there's
no
specifications.
C
It's
just.
This
is
hiccup
doing
a
thing
and
the
ui
says
oh
okay.
This
is
this
is
this
is
a
render
object
I'll
render
it?
If
I
want
to
render
this
as
text-
and
you
can
see
it
well,
obviously
it's
just
a
vector,
so
that's
a
crappy
example,
but
so
so
as
far
as
basic.
C
Yeah
see,
I
gotta
remember
that
for
other
demos,
oh
yeah,
so
I
mean
simple
data
types.
You
know
all
all
cool
some
of
the
stuff
that
daniel
mentioned,
so
that
was
all
cljs
right,
so
this
is
actually
a
mixture
right.
This
is
doing
some,
so
I
have
this
other
repel.
G
C
Yeah
I
mean
basically
just
looks
at
like
I
said
it
looks
at
the
output
and
for
I
had
this
like
arbitrary,
like
fake
data
type
called
rosette,
which
is
basically
just
a
vector
of
uniform
maps
right
because
it
gets
used,
it
gets
used
so
much
in
building
database
on
the
javascript
on
the
javascript
side.
You
know,
because
you
really
can't
use
like
a
like
a
record
or
anything.
You
know
it
basically
ends
up
being
this,
which
is
kind
of
wasteful,
but
this
comes
up
so
much.
C
I'm
like
okay,
let's
show
this
as
like
a
data
set
right,
because
I
do
a
lot
of
sql
and
stuff
and,
like
you
know,
I
deal
with
this
a
lot,
so
I
just
made
it
like
this
arbitrary
type
yeah.
It
just
looks
at
the
output
and
says:
hey
what
is
this
and
then
it
assigns
it.
You
know
one
of
these
output
types,
you
know
with
the
auto,
but
you
can
always
just
override
it
say.
C
Well,
you
know,
show
this
as
text
or
show
this
as
map
boxes,
which
is
kind
of
that
like
recursive,
which
is
a
little
confusing,
but
it's
nice,
it's
nice
for,
like
picking
out
you
know,
values
instead
of
having
to
write,
get
ins
all
the
time.
G
Yeah
and
so
just
to
be
really
clear,
though
so,
like
you're
literally
just
scanning
through
the
data
structure
and
what
checking,
if,
like
each
entry,
has
the
same
keys
or
that
the
values
are
and
or
that
the
values
are
flat.
That
they're
not
like
more
nested
structures
or
is
it
something
kind
of
like
that?
Yeah.
C
C
And
yes,
I
tried
to
render
it
and
you
can't
render
it
because
it's
you
know
it's
just
a
map,
so
you
know
that
blows
up:
okay,
yeah,
yeah,
yeah,
so
yeah.
So
what
daniel
was
saying,
so
this
is
another
one.
That's
basically
mixed
right.
So
this
is
a
closure
rebel,
doing
some
silence
stuff,
the
titanic
stuff
off
of
off
of
the
the
github
page
yeah,
it's
kind
of
cramped.
C
I
should
make
this
one
a
little
bigger,
but
basically
it's
it's
rendering
it's
rendering
the
output
of
that
you
know
all
the
training
set
titanic
tests
trained
and
printing
it
just
like
it
would
on
a
reple.
You
know,
printing
out
the
data
sets
just
like
it
would.
You
know
if
you're
typing,
in
a
rebel
which
is
cool,
it's
executing
all
this
in
one
pass,
but
I
can.
I
can
look
at
each
piece
individually.
C
So
so
this
is
the
printed
out
data
set
of
those
training
sets,
but
I
can
also
say,
but
this
is
just
this-
is
the
text
right?
I
could.
This
is
a
repel
output.
I
can
also
say
well.
I
have
a
data
set
here
because
I
used.
Where
is
it,
I
used
map
seek
reader
right
to
show
titanic
test.
Well,
that
seems
to
be
right
here,
and
I
can
say
this
is
the
output.
C
I
want
to
see,
let's,
let's
look
at
this
auto
and
by
sending
this
to
auto,
it
says
oh
well,
this
is
a
uniform
set
of
maps
right,
so
it's
a
row
set,
so
I
can
show
this
as
a
row
set,
even
though
the
repel
you
know,
wouldn't
be
able
to
do
this.
This
is
just
basically
pushing
it
to
cljs
and
rendering
it
in
cljs,
which
is
which
is
kind
of
neat.
Taking
that
one
step
further,
here's
an
encantor,
just
a
simple
encounter
again
the
github
demo
right
renders
a
randomized.
C
You
know
sine
wave
and
bar
chart,
but
here
I'm
taking
values
from
closure
script
and
sending
them
in
to
the
repel
code.
Just
to
you
know,
reevaluate
it,
which
is,
which
is
you
know,
kind
of
neat
kind
of
like
crossing
the
streams
there.
That's
very
cool
yeah,
I
mean
doing
doing
again
very
simple,
there's
nothing
funky
in
here
in
terms
of
rabbit,
with
the
exception
of
like
these,
you
know,
data
set
ml
data
sets.
G
So
my
main
question
here
is
just
like:
how
do
you
are
you
lit?
Is
there
just
a
toggle
or
a
control
that
says
like
this
code?
Is
this
code?
Is
closure
versus
closure
script
like
how
do
you
actually
switch
modes?
There.
C
Yeah,
so
for
where's,
my
thing
here
so
freezing
fox
right.
I
have
like
a
so.
This
is
a
closure
script
block.
C
Right
one
time,
and
then
this
is
a
closure
block
which,
by
default,
uses
the
built-in
uses
the
built-in
rebel
that
rabbit
runs
with
you
know,
it's
running,
you
know,
110.,
what's
cool
about
that,
it's
like
for
this
encantor
rebel,
I'm
actually
using
a
different
repel,
because
you
have
to
use
an
older
version
of
closure.
Apparently.
So
if
I
go
here
and
say,
hey
silver,
so
it
was
110
3
and
if
I
you
know,
go
and
put
this
connect
to
this
custom
rebel
at
42999.
C
C
I
believe
this
is
again
standard
off
the
docks
stock
stuff
for
a
techno
data
set
right.
You
know
it
hits.
It
hits
a
hits.
A
csv
file
gets,
it
gets
the
data
set
prints
it
out.
You
know
I
have
access
to
the
ripple
output,
but
I
also
can
create
again.
Map
seek
reader.
Give
me
the
actual
data
structure,
and
then
I
take
the
data
structure.
C
I
can
render
it
here
and
also
send
it
if
you
see
it
on
the
right
here,
send
it
to
the
right
here
to
another
block
which
now
makes
it
a
closure
script
object,
which
now
means
that
I
can
throw
it
into
whatever
viz
library
and
do
various
things
with
it.
You
know
so
here
I'm
clicking
on
the
bar
and
changing
the
value.
You
know
just
just
the
whole
thing
trying
to
make
the
the
flow
between
the
two
platforms
like
seamless
enough
to
where
I
just
want
to
get
work
done
right.
I
don't.
G
C
G
One
more
question,
though:
how
do
you
so
it's,
let's
see
what
am
I
actually
asking
go
back
to
you
had
the
one
big
chunk
of
code,
I
wasn't
actually
sure
what
it
was
producing,
but
then
you
had
a
few.
It
was
the
closure.
It
was
a
closure
block.
I
guess,
and
then
you
had
a
few
different
output
like
at
the
top.
It
showed
like
output,
one
output,
two
up
at
three
etc.
Are
you
select?
G
Let
me
know
if
you
don't
know
what
I'm
talking
about,
but
are
you
selecting
which
blocks
within
the
which
blocks
within
that
chunk
of
code,
are
actually
getting
turned
into
quote-unquote
outputs
or
is
like
every
block
and
output.
C
Yeah
pretty
much
every
block's
an
output,
but
I
choose
which
ones
propagate
through
the
blocks
right
like
so
for
closure
script
is
kind,
it
runs
kind
of
like
a
do
block
right.
We
do
a
bunch
of
stuff
and
then
the
last
thing
is
kind
of
what
I
evaluate,
because
in
closing
script,
there's
no
point
for
me
having
like
three
or
four
different
outputs
in
one
block.
You
know,
or
at
least
for
my
uses,
so
for
a
repo
block.
C
Let
me
just
do
a
fresh
closure
one
here
and
stop
me
daniel
if
I'm
going
over
so
for
a
repo
block,
so
we
have
a
single
value
right.
It
spits
out.
You
know
what
it
is.
So
if
I
go
here-
and
I
say
all
right
well,
let's
just
do
do
some
math
and
then
I'll
do
you
know,
string
and
then
maybe
just
for
the
hell
of
it.
We'll
do.
C
V2,
whatever
right
so
when
I
run
it
it
by
default
shows
me
the
last
thing
here,
but
if
you
see
up
here,
I
have
access
to
all
those
outputs
right:
okay,
okay,
yeah,
so
so
yeah.
So
if
I
yeah,
if
I
change
this,
I
can
say
all
right.
I
want
to
put
the
code
here.
I
want
to
see
my
12
there
and
I
want
to
see
this
map
there
and
then
let's
say
I
want
to
propagate
this
data
out
and
like
this
is
what
I
really
want
right.
C
So
I'm
going
to
say
this
map
here
I
want
to
take
this
guy
and
send
it
downstream
to
this
block.
So
now,
if
I
take
this
block-
and
I
drag
it
out-
I
should
get
right
that
map
and
then
I
say
from
this
map.
I
just
want
this
key
and-
and
you
you
can,
you
can
see
how
you
know
with
a
language
like
this,
with
something
expressive
as
this
like
how
how
deep
that
kind
of
goes.
You
know,
but
yeah.
C
So
just
kind
of
I
just
thought
it
was
kind
of
relevant
to
the
copy
paste
boilerplate
discussion
because,
like
I
tried
so
hard
to
like
not
not
have
that
so
just
real
quick
before
before
daniel
cuts
me
off.
Let
me
let
me
just
go
to
the
the
vega
example:
I'm
just
kidding
with
a
man.
Let
me
just
go
to
the
vega
example.
This
is
kind
of
slow
cause.
It's
running
in
my
this
is
like
a
dev,
my
reframed
dev
with
10x
and
all
that
stuff
running.
C
It's
a
pretty
complicated
example
that
I'm
making
a
video
on.
So
forgive
me
so
this.
So
these
are
nevo
charts,
but
this
is
a
vega
map
or
oz
map
which
I'm
pretty
excited
about,
because
I
I
just
recently
got
into
the
layers
and
just
to
show
you
what
this
looks
like
here.
Oh,
it's
so
slow
yeah.
So
it's
literally
a
recon
box
wrapped
around
just
oz,
core
vega
light.
No,
no,
no
hinting
nothing
just
regular!
C
I
mean
you
could
cut
and
paste
this
in
a
closure
script,
and
if
you
have
these
libs
like
it
should
just
work,
you
know
I'm
I'm
calling
you're
calling
adams.
You
can
see
here
yeah
all
these.
Some
of
these
lines
are
atoms.
Some
of
these
are
like
actual
explicit
calls
yeah.
Just
I
tried
to
not
have
anything
funky.
G
C
Yeah
well,
this
is
a
closure
script
box,
so
it's
kind
of
different.
So
up
here,
okay,
these
are
actually,
if
you
see
the
highlighting
on
the
left
there.
These
are
actually
the
the
inputs
to
this,
which
which
come
which
come
from
closure,
because
it's
a
sql
query
to
a
click
house
database
right.
So
this
is
like
this
is
the
the
districts
and
this
is,
you
know
the
incident,
the
red
blocks.
This
is
a.
C
This
is
an
atom,
I'm
dereffing
just
there
as
like
context,
and
this
is
the
render
objects,
you
know,
object,
recon
box
box
and
then
yeah
oscor
vega,
like
so.
This
is
the
compiled
object
that
it's
actually
rendering
the
box,
and
then
this
is
just
bangs.
This
is
just
like
I'm,
I'm
you
taking
adam
somewhere,
so
I
just
show
it
up
here,
but
yeah,
nothing,
nothing!
Nothing
hinted
nothing,
just
trying
to
be
as
clean
as
possible,
while
still
keep
this
like
kind
of
canvas
thing
going
so
yeah
cool.
G
C
Two
ways
right,
so
I
can
use
regular,
regular
atoms
right
because,
basically,
if
I'm
running
this-
and
I'm
running
this,
if
I'm
running
this
in
no
namespace-
it's
basically
like
like
cojs.user
whatever
the
default,
one
is
right.
I
can
put
a
namespace
here
and
it'll
work.
You
know
all
these
work
in
the
same
kind
of
bootstrap.
You
know
environment,
so
namespace
would
work,
but
in
order
to
pass
things
from
closure
to
close
your
script,
I
had
to
create
this,
so
I'm
a
big
fan
of
like
flow-based
programming.
C
You
know
so
when
I
take
this
block-
and
I
say
you
know-
drag
this
out
here
by
default-
it
drags
out
itself,
but
it's
not
itself.
It's
basically
just
a
reference
to
that
previous
block,
and
I'm
literally
using
this
like
a
pseudo
pseudo
map
here
to
say:
hey,
you
know,
look
this
up
from
the
incoming
box,
but
when
this
gets
rendered
this
this
turns
into
a
reframe
subscription
in
the
back
end,
so
the
user
doesn't
see
it
as
far
as
the
user
knows.
C
This
is
just
some
arbitrary
thing
being
passed
in
you
know
and
it
could
even
be
like.
Let's
say
I
have
a
like
a
markdown
box
here.
You
know,
and
I
drag
this
in
to
the
markdown
box
and
then
I
just
say
you
know
one
two,
three
param
and
then
it
just
shows
down
here
right.
So
we'll
go
to
like
one
two,
three
right:
it's
just
text
you
know
all
it
cares
about
is
like
I'm
taking
this
thing
in
and
I'm
drawing
it.
G
So
this
is
so.
This
is
right.
My
recollection
of
closure
is
that
there's
no
like
triple
colon.
You
know
sigil.
D
G
C
Because
if
I'm
taking
like
like
the
other
example
where
I'm
spending
those
slider
values
to
like
the
encounter
closure
repel
like
it,
has
no
way
of
knowing
anything
in
that
environment
right,
so
I
basically
have
to
like
inject
that
into
the
code,
but
I
want
to
do
it
in
a
way
where
it's
not
like
completely
like
bizarre
right,
I
mean,
I
think
you
can
teach
people
enough
that,
like
hey
like
so
this
params.n
are
even
better.
C
You
can,
if
there's
even
a
shorter
one
which
is
in,
is
this
incoming
string
from
this
block.
I
want
to
make
each
block
as
atomic
as
possible,
without
losing
kind
of
all
that
that
kind
of
like
flow
deal
and
just
one
last
thing.
I
can
also
say
you
know
this
block.
Let's
say
you
know,
has
three
input
parameters
right
and
then
I
can
do
whatever
I
want.
You
know
with
them.
C
So
if
we
have
over
here
and
then
oh
drag
this
guy
in
number
two-
and
you
know
now-
we
have
actually
back
this
guy
yeah.
So
now
we
have
these
two
input
values.
You
can
just
see
how
you
can
kind
of
chain
stuff
together
and
make
things
work
that
way,
and
it
doesn't
have
to
know
anything
anything
more
than
you
know
I
once
this
gets
rendered,
I'm
replacing
this
with
whatever
the
input
value
is
or
actually
the
whole
thing.
So
this
is
the
income.
This
is
a
map
in
is
the
key
and
paramount.
G
E
G
Or
is
this,
am
I
you
know
displaying
this
as.
G
Cards,
mapbox,
I
think,
is
what
you
called
it.
Does
anyone
have
questions
about
that
and
how
this?
Because
that
seems
like
the
core
of
what
we're
talking
about
right
now,
right.
F
I
mean
one
question
I
had
is
that
it
seems
like
there's
at
least
two
different
use
cases.
There's
one
use
case
where
you're
like
okay,
I've
got
some
data,
show
it
to
me
and
if
it's
a
little
bit,
you
know
if
there's
some
pixels
misplaced.
F
But
when
you
care
about
misplaced
pixels,
it's
I
think
it
could
be
difficult
to
find
common
ground
across
the
different
tools
who
have
you
know
different
paradigms
for
how
to
put
the
different
visualizations
together
like
portal
and
oz
and
data
rabbit.
F
So
I
don't
know
if
the
play
and
tools
are
specifically
just
targeted
at
one
of
those
use
cases
or
if
they're
gonna,
if
they
want
to
handle
both.
I
don't
know.
C
What
people
it's
tough
right,
I
mean
I
so
I
don't
follow
like
like
you
saw,
I
don't
follow
like
a
notebook
type
linear,
you
know
flow
like
I
have
objects
where
they're
basically
other
it's.
Basically,
I
think
I
showed
a
dashboard
there,
real
quick,
where
it's,
basically,
here's
all
my
objects
right
and
then
here's
a
a
composer
view
with
all
those
things
arranged
pixelized
and
formatted
and
put
together.
C
But
it's
not
it's
not
in
the
traditional
notebook
you
know
up
and
down
flow,
so
it
wouldn't
map
to
much
of
anything,
probably
but
but
yeah,
and
that's
the
other
side
of
it
right
like
we're
creating
stuff.
We
want
to
look
at
it.
We
want
it
to
work,
but
we
also
want
it
to
be
nice
right
and
presentable.
G
G
So
so
it
seems
then
like
where
you
may
be
published
with
this
is
like,
like
this
is
kind
of
a
composer
tool,
and
maybe
you
would
publish
like
a
specific
block
that,
like
you
said,
maybe
you'd
have
a
bunch
of
different
blocks
that
are
generating
different
visualizations
or
content
or
whatever
then
you'd
be
sticking
those
into
one
final
block.
That
could
almost
be
like
your
notebook
or
your
your
document,
your
you
know,
whatever
is
that.
E
F
F
I
mean
I
was
considering
this
question
in
the
kind
of
in
the
discussion
that
danielle
started
so
across
tools,
so
I
think
for
any
specific
tool.
Okay,
there's
ways
to
kind
of
like
for
oz.
Like
I
wanted
to
look
good
in
oz,
I
can
do
that.
I
wanted
to
look
at
a
portal.
I
want
to
feel
good
in
data.
F
I
think
that's
very
doable
if
you
wanted
some
common
ground
and
you're
like
I
wanted
to
work
and
look
good
and
all
like
making
it
look
good
in
portal
and
in
oz
seems
I
mean
with
the
tools
available,
seems
very
hard,
but
yeah
I
mean
I
think
you
could
like
data.
Rabbit
looks
great.
F
I
think
if
you
wanted
to
create
a
dashboard
that
looks
great
data
rabbit
and
you
wanted
to
present
that
to
your
co-workers
or
to
an
external
vendor
or
something
you
could
make
that
look
great,
but
also
copy
and
paste
in
that,
and
have
that
also
have
some
of
those
same
things
show
up
and
look
great
and
oz,
I
think,
would
be
like
having
the
common
ground
there.
I
think,
is
very
difficult.
G
Yeah,
I
think
that's
what
you're
saying
right,
because
you're
dealing
with
different
like
default,
stylings
of
whatever
divs
and
whatever
else
right.
So
it's
like
so
my
I'm
interested
in
hearing
daniel's
perspective
on
this
actually
or
anyone's.
I
feel
like
I'm
talking
a
lot,
but
so
please,
you
know
shut
me
up
if
you
need
to,
but
I
it
seems
like
the
level
of
what
we're
talking
about
is
not
necessarily
ever
like.
G
We
want
a
way
for
like
everything,
to
look
good
everywhere,
it's
more
just
that,
like
the
the
the
way
that
we
would
put
things
together
almost
right
and
the
way
that
we
would,
oh
god,
right
like
if,
if
let's
okay,
so
let's
maybe
this
is
a
good
motivating
example.
Let's
say
someone
has
a
library
that
I
don't.
G
Right,
like
maybe
it's
doing,
work
like
nlp
or
something,
and
one
of
the
things
that
it
can
do,
is
spit
out
a
visualization
of
like
some
of
the
topics
that
came
up
as
like
a
word
cloud
or
something
just
you
know
whatever
right,
just
just
motivating
example.
G
So
that's
something
that
you
know
different
tools,
sure
if
you're
going
to
put
it
in
portal
or
if
you're,
going
to
put
it
in
data,
rabbit
or
oz
or
whatever
you
might
want
to
style
differently,
because
you
might
have
a
different
kind
of
document
or
dashboard
or
you're
expecting
different
things.
And
that's
that
seems
to
me
to
be
fine,
but
that
maybe
most
of
where
you'd
well
yeah,
I
mean
it
seems
like
maybe
most
of
where
you
customize,
that
would
be
kind
of
outside
of
the
context
of
like
here's.
G
The
the
vega
thing
that
you're
gonna
be
rendering
right
and
that
really
the
challenge
for
us
is
to
say
like
how
do
we
even
recognize
that
this
is
a
vega
thing?
And
when
you
see
code,
that's
that's
generating
that
vega
thing!
Well,
okay,
so
actually
there's
there's
kind
of
two
components
to
this
right,
because
one
is
that
library,
author
in
theory,
could
again
as
as
as
daniel
was
suggesting
attach
metadata.
G
That
says
this
is
of
kind
vega
or
vega
light
whatever,
and
then
you
know
our
tools
can
pick
up
on
that
and
say:
okay
like
I
know
what
to
do
with
that
now.
G
G
I
mean,
I
think,
that's
the
level
of
what
we're
talking
about
right
and
so
like
how
much
I
mean
it
you're,
right
that
I
think
you
know,
if
you're,
if
you're,
getting
into
fine-tuning
that
vega
visualization
for
one
environment
versus
another,
like
that's
just
where
the
idea
of
having
you
know
that
library,
author
being
able
to
anticipate
all
those
changes
like
that
seems
to
be
the
barrier
right
like
where
you
know
that,
there's
there
that
library
out
there's
not
going
to
go
through
all
the
work
to
like
there's
not
even
going
to
be
a
way,
probably
to
go
through
all
the
work
and
figuring
out
like
which
environment
are
you
on,
or
which
kind
of
I
mean.
G
Maybe
you
could
support
themes
or
something
like
that,
but
like
yeah,
I'm
kind
of
rambling
a
little
bit
here,
but
like
that
that
seemed
to
me.
That
seems
like
a
fine
trade-off.
What
do
others
feel
about
like
that?
As
kind
of
an
example.
F
Yeah,
I
mean,
I
think,
that's
a
good
trade-off,
but
I
do
think
you
can
that
can
inform
what
you're
building
like
if
you
want
to.
If
you
want
to
be,
if
you
want
to
say
okay,
this
is
not
going
to
give
you
pixel,
perfect
things
across
different
things.
You
can
build
a
different
library
than
something
that
where
you
try
to
do
that
so
like,
if
you
wanted
to
make
it
more
pixel,
perfect
you'd
have
to
make
more
standardization
across
all
the
tools.
F
You'd
probably
use
something
more
general
like
okay,
everybody's
gonna,
just
like
put
in
iframes
everywhere,
and
that
would
impose
a
lot
of
structure
on
the
individual
tools.
But
if
you
don't
care
as
much,
you
can
have
all
the
tools
like
okay,
here's,
the
10
things
that
every
every
tool
can't
like
every
tool
can
have
a
visualization
for
text,
tables
vega,
hiccup
and
then,
when
it
you
know,
if
it
gets
inserted,
it
might
kind
of
look
funky
and
have
different.
A
It
looks
like
they're
kind
of
talking
about
more
or
less
the
same
thing
and
that
that
in
itself
is
you
know
some
something
I'm
so
happy
about
and
yeah,
and
I
really
like
this
last
description
of
what
it
is
that
you
said
right
adrien
and
so
maybe
maybe
let
us
imagine
really
a
concrete
path
that
could
possibly
be
easy,
like
an
experiment.
G
Yeah
I
mean
that
that
sounds
great
to
me.
I
think
that
yeah,
I
think
that.
G
I
think
that
one
of
the
main
questions
for
us
right
now
is
to
what
extent
will
because
really
yeah,
so
we're
talking
about
kindly
here,
basically
right
and
and
really
asking
ourselves
the
question
like:
can
we
make
it
do
the
kind
of
inference
or,
or
you
know,
be
the
the
descriptive
layer
for
all
these
different
projects?
G
I
think
that's
a
fair
summary
right.
So,
from
my
perspective,
it
seemed
like
things
seemed
pretty
positive
so
far,
because
you
know
I'm
looking
at
what
you're
presenting
ryan
and
everything's
like
I
mean
it's
the
same
kind
of
in
a
way
like,
I
think,
you're,
maybe
going
into
things
a
little
more
deeply
than
I
have
been,
but
but
that
also
kind
of
covers
territory
that
I
want
to
be
able
to
cover
like
I
would.
I
would
like
for
one
of
the
things
that
has
been
a
little
bit
motivating
talking
with
daniel.
G
One
of
the
things
that
I
would
like
to
do
is
move
away
from
the
current
model
in
oz,
which
is
that
to
display
anything,
you
need
to
use
a
hiccup
form,
and
so
my
my
assumption
has
always
been
well
until
now
that
I'm
kind
of
reevaluating
it
has
always
been
that,
like
you're,
going
to
decide
how
you
want
to
display
things
right,
you
know
if
you
want
to
display
something
as
vega
light
you
say,
vega
light
and
then
plop
the
data
in.
G
If
you
want
to
display
a
div
with
some
content
in
it,
then,
like
you
plop
that
in
right
and
that.
G
And
that,
if
you
just
have
some
chunk
of
code,
this
returning
data,
it's
not
actually
going
to
do
anything
with
that
right,
like
it's
only
going
to
do
stuff,
it's
only
going
to
render
anything
that
looks
like
it's
hiccup.
You
know,
that's
like
a
literal
vector
form
and
you
know
like
either
the
first
thing
is
keyword
or
you
know,
or
function
or
whatever.
G
So
you
know
if
you
want
to
move
to
part
of
what
was-
and
I
gave
daniel
credit
for
that
for
this,
but
I
think
that
also
you
know
one
of
my
reasons
for
going.
This
route
was
because
I
was
thinking
about.
What's
what's
going
to
happen,
if
someone
like
gen,
you
know
calls
map
inc
on
just
range
right,
you're
going
to
get
an
infinite
sequence
of
stuff,
and
it's
going
to
break
your
computer
or
at
least
the
process
right,
and
so
I
saw
that
and
I
was
like
yeah.
G
I
want
people
to
opt
into
displaying
things
I
don't
want.
I
don't
want
people
getting
surprised
by
by
things
breaking
breaking
their
process,
but
clerk
went
and
did
a
really
lovely,
and
I
feel
like
it's
one
of
the
one
of
the
most
one
of
the
most
profound
innovations
of
clerk
was
that
it
really
did
the
work
to
say
like
okay,
if
we
have
something
like
that,
we're
gonna
actually
stream
it
into
the
browser
and
that's
brilliant,
because
now
it
kind
of
solves
that
problem.
G
And
now
you
can
say
like
oh
yeah,
let's
just
let's
just
render
every
value.
That's
great,
I
mean
that's,
that's
really,
nice
from
a
workbook
flow.
There's
we've
had
previous
discussions
here
about
like
what's
ideal
for
like
an
explorative,
workbook
notebook
kind
of
thing
versus
like
something
that
you
actually
want
to
turn
into.
A
document
and
part
of
where
you
know
oz's
philosophy
is
a
little
bit
different.
Is
that
I've
always
been
really
focused
on
like
producing
nice.
G
These
nicest
hopefully
documents
because
that
just
that's
kind
of
one
of
the
things
that
I
do
work-wise
like
I'm,
not
always
making
notebooks
for
other
data
scientists
or
tech
people,
but
often
I'm
making
them
for
people
who
are
non-technical,
and
so
they
don't
they
don't
care
about
the
code.
They
don't
care
about,
seeing
every
value
that
I'm
competing
in
between.
They
just
want
to
see
the
visualizations
and
the
you
know.
Maybe
I'm
spitting
out
some
values
here
and
there
just
to
you
know,
result
of
this
calculation.
G
That
sort
of
thing
so
so
I
mean
that's
kind
of
I
feel
like
useful
background,
but
I
think
that
enough,
it's
an
appealing
enough
mode
and
enough
people,
I
think,
would
want
to
use
like
the
notebook
kind
of
environment
in
that
mode,
because
not
everyone
is
making
those
kind
of
publications
right
and
I'm
not
everyone's
focused
on
that
as
like
the
output,
and
I
want
eyes
to
be
really
flexible,
so
you
can
kind
of
use
it.
G
However,
they
like
and
like
the
as
soon
as
I
saw
clerk,
I
started
realizing
in
my
own
work.
It's
like
oh
yeah.
Every
time
I
want
to
see
something
I
have
to
like
add
another
tag
to
actually
see
it
right,
like
that's,
actually
kind
of
annoying,
so
so
yeah.
I
think
that
a
mode
where
it's
doing
some
kind
of
automatic
inference
where
it's
doing
an
advise,
basically
to
say
like
all
right.
What
kind
of
thing
is
this?
Is
this
a
rosette,
maybe
I'll
render
that
as
a
table?
G
Is
this
a
is
this
some
weird
nested
card
thing?
Maybe
I'll
just
print
it
out
or
maybe
I'll
yeah
do?
Do
your
kind
of
map
box
thing
those
it
seems
to
me
like
and-
and
I
haven't
gotten
deep
into
this
inference
side
of
things
yet
so
like
this
is
this
is
a
good
time
to
be
talking
about
it,
but
it
seems
to
me
like
we're
kind
of
thinking
about
things
from
the
same
angles.
G
Right
like
we've
got,
we've
got
some
different
kinds
of
shape
of
data
coming
in
and
like
it
seems
to
me
like
we're,
not
in
so
such
totally
different
worlds
that
we
wouldn't
be
able
to
settle
on
some
set
of
kinds.
If
you
will
that
that
let
us
kind
of
have
a
shared
vocabulary
for
like
what
it
is,
how
we
want
to
display
something.
G
What
are
sorry
I'm
getting
a
ring?
What
are
your
is
everyone
else
getting
the
same
impression
or
or
do
we
are
we
kind
of
seeing
things
differently.
C
I
think
so
I
mean,
if
you
were,
to
draw
a
venn
diagram
of
all
these
tools
right,
there's.
Definitely
that
middle,
where
they're
all
trying
to
do
the
same
kind
of
thing
yeah,
and
I
think
you
hit
the
nail
on
the
head
in
terms
of
like
presentation
versus
like
I
don't
know
what
you'd
call
like
literate
programming.
You
know
what
I
mean
like
how
things
are
put
together
versus,
like
I
mean
in
my
day
job
I
built
dashboards
right,
so
my
users
don't
give
a
how
it
was
built.
C
They
just
want
to
say
what
is
the
answer
right,
but
you
know
one
of
the
things
that
I
wanted
to
do
was
like
okay.
Well,
I
want
to
understand,
like
the
spaghetti
behind
the
answer
too
right.
How
do
I
balance
those
two
things
and
I
think
notebooks
like
do
a
pretty
decent
job
of
that,
but
but
yeah
to
your
point,
I
think
there's
a
lot
of
commonality
with
all
these
things.
It's
just
everyone
approach
in
a
different.
You
know
from
a
different
angle:
yeah.
G
Yeah
it's
funny
because
we
all
have
like
very
different
tools
as
far
as
like
how
you
use
them
sort
of
right
but,
like
we
all
have
this
very
similar
problem
of
like
what
do
we
do
with
different
shaped
data
yeah.
So
how
about
you
adrian?
What's
your
what's
your
perspective
on
like
if
we
just
kind
of
research
and
forget
about
like
presentation
and
stuff
and
just
restrict
ourselves
like
what
kind
of
thing
in
this
and
how
would
we
like
what
what
pathway
would
we
take
to
render
it?
G
Do
you
feel
like
from
what
you
saw
with
ryan's
work
with
data
rabbit
like
that?
You
know
the
different.
Obviously
I
feel
like
we
all
have
different
names
for
these
kind
of
like
this
kind
of
data,
but
like
rosette,
you
know
nested
maps
I
mean:
do
you
see
like
the
same
kind
of
pattern
there
about,
like
the
sorts
of
things,
you'd
want
to
be
able
to
describe
or
anticipate
any
kind
of
conflict.
F
Yeah
I
mean,
I
think
that
sounds
great.
I
think
yeah
cool
yeah.
I
mean,
I
think,
there's
a
handful
of
things
that
are
already
kind
of
supported
widely
and
if
you
just
kind
of
give
names
to
them,
then
each
tool
can
say
like
okay,
I've
got
a
list
of
I've
got
an
image.
I've
got
some
vega.
I've
got
some
hiccup.
I've
got
a
data.
I've
got
a
string.
F
I
know
how
to
render
all
those,
and
I
can
decide
how
to
do
that,
and
I
like
that,
a
lot
I
mean
I've
been
doing
stuff
on
the
closure
side.
So
I
have
my
own
like
desktop
ui
library
and
a
lot
of
the
tools
and
focus
has
kind
of
focused
on
the
stuff
getting
it
to
show
up
in
the
browser.
But
if
you
know
just
like
markdown,
where
you
have
like,
I
have
a
heading,
I
have
a
paragraph.
I
have
an
image.
I
have
a
link.
F
I
can
display
all
that
without
html.
I
can
just
use
my
own
graphics
library,
so
I'm
very
interested
in
you
know.
If
we
have
this,
you
know
here's
a
big
closure
name
space
and
then
you
use
kindly
to
spit
out
a
list
of
images
text,
paragraphs,
vega,
plots
or
whatever.
F
G
Yeah
cool,
so
if,
if
I
may,
like
some
of
the
things
that
come
to
mind,
is
potential
points
of
conflict,
one
is
like
what
do
you
do
like
if
we're,
if
we're
sniffing
out
a
road
map
looking
thing
or
that
we
think
it
might
be
a
road
map
looking
thing,
but
there's
like
a
lot
of
elements
in
it
like
is
that
is
that
gonna
be
a
problem
just
like
the
kind
of
performance
hit
of
like
having
big
data
structures
that
were
passing
around
and
we're
like
doing
a
bunch
of
work
to
figure
out
like
what
kind
of
thing
is
this
like?
C
Yeah
because
I
mean
I
at
the
end
of
the
day,
I'm
dealing
with
a
browser
right,
which
has
a
very
low
threshold,
yeah
yeah,
yeah,
very
little
threshold
for
that
kind
of
stuff,
so
I'm
almost
jealous
of
adrian
doing
stuff
in
the
desktop
ui,
where
you
can
use
the
horsepower
of
the
computer
right
instead
of
like.
Oh,
please,
google
chrome,
don't
crash
on
me
right
yeah,
it's
tough
right!
I
mean
that's,
that's
one
of
the
big
problems
with
using
clg
as
a
render
layer.
You
know
I
can
like.
C
I
would
love
to
have
a
better
way
to
have
readers
that
can
I
like
your
clerk
example
right
stream
stuff
from
like
ml
data
set
or
something
as
opposed
to
like
yeah.
I
can
send
it
all
to
the
browser
and
then
I
can
have
react
virtualize
it
which
helps,
but
it
still
is
like
nowhere
near
as
good
as
you'd
want
for,
like,
like
my
desktop
sql
tool.
Right
can
can
show
infinitely
more
rows
than
the
browser
can
so
it's
kind
of
like
it's.
C
It's
tough
yeah
in
terms
in
terms
of
like
detecting
the
data
type
like
yeah,
I
just
sample
a
little
bit
and
it
can
be
wrong.
Sometimes
it's
just
you
know,
I'm
just
trying
to
like.
That's
that's,
like
my
version
of
the
advice
function
right
and
like
what
is
this?
Okay
cool
render
it
this
way.
You
know.
G
So
I'll
this
is
maybe
a
little
bit
of
a
side
track.
It's
more
about
implementation
details,
but,
like
I've
done
some
experiments
with
like
either
like
lazy,
rendering
of
table
rows
or
or
what
do
they
call
it?
G
There's,
like
I
don't
know,
there's
some
tricks
you
can
use
where
you're
not
actually
rendering
like
every
row
at
once,
because,
like
that's,
where
you
end
up
getting
into
big
yeah
but
well
at
least
the
worst
performance
problems
with
like
with
js
and
cljs
stuff
is
right,
where
you
just
have
like
way
too
many
components
and
if
you
can
make
it
look
like
you're
scrolling
through
a
block,
but
actually
it's
only
ever
rendering.
You
know
a
handful
of
components
at
once
that
can
that
can
make
a
big
difference.
Yeah
I
mean.
C
C
G
Cool
cool
I
just
wanted
to
make
sure
we
were
on
the
same
page
there
about
what
we
were
talking
about,
but
yeah.
So
so
yeah,
obviously
that's
a
challenge
and
you
know
we
have
to,
but
I
feel
like
if,
if
the
inference
is
happening
mostly
on
the
closure
side,
I
mean
that's
at
least
like
if
we
all
anticipate
that,
at
least
like
that's-
and
I
don't
know-
I
mean-
maybe
that's
not
the
case,
but
it
seems
like
there
at
least
we're.
A
Other
thing-
maybe
maybe
christopher
I'll,
stop
you
for
a
moment.
We
have
seven
minutes
to
the
official
time
and
maybe
a
few
of
us
will
need
to
leave
in
a
few
moments,
and
so
maybe
let
us
try
to
conclude
if
we
could
and
yeah
so
didn't
want
to
stop
you
just
we.
We
might
not
be
able
to
dive
into
everything.
G
Yeah
yeah
totally,
so
I
guess
the
last
thing
then,
for
me
is
just
kind
of
encourage
us
to
think
about
where
there
might
be
sticky
points
and
in
how
we
interpret
things
or
what
we
mean
when
we
say
something.
G
So
in
particular-
and
this
is
just
this
is
in
some
ways-
kind
of
a
toy
example-
you
kind
of
think
about
how
you
might
work
through
it,
but
but
it
you
know,
it
does
raise
questions
like
so
my
in
oz,
if
you're
using
kind
of
in
a
notebook
flow,
then
when
it
sees
any
vector
literal,
it
assumes
it's
hiccup
right.
So
what
that
means
is,
if
you're
trying
to
display
like
a
vector
that
has
some
things
in
it,
like,
I
think
daniel
you
showed.
Maybe
it
was.
G
It
was
a
vector
with
three
visualizations
in
it
and
it
showed
it
as
like.
You
know
each
visualization
in
a
row
or
in
a
column
or
whatever.
So
like
that's
a
really
cool
example,
but
it's
but
it's
one
where
we're
kind
of
interpreting
things
differently,
and
so
I
mean
right
now.
Maybe
oz
would
just
say
like
well,
that's
not
valid
hiccup
anyway.
So
maybe
we
should
just
do
what
you
know
what
ryan's
doing
and
say
like.
G
G
G
A
Yeah,
so
so,
maybe
maybe
a
brief
comment
is
that
at
the
moment,
what
we
are
talking
about
mostly,
is
the
tiny
protocol
we
could
hopefully
agree
about,
and
then
afterwards
we
could
keep
working
on
inference
on
on
the
advice
engine.
Let
us
call
it
and
then
you
could
imagine
having
different
advice
modes,
so
one
of
them
could
be,
could
just
reproduce
the
current
way
all
works
another
one
could
be.
Somebody
saying
I
wish
to
be
safe.
A
A
That
is
the
advice
I
would
give
any
tool
and
then
it
would
be
renderable
in
all.
If
oz
respects
the
advice
right,
so
we
could
imagine
writing
tutorials
with
given
advice,
semantics
and
being
compatible
with
future
adventures
of
better
inference.
Just
because
we
were
concrete
about
our
mode
of
advice.
Does
it
make
sense.
G
Sure
I'm
trying
to
imagine,
though,
like
because
again
our
motivating
example
is
like
we
want
people
to
be
able
to
take
something
from
like
workshop.
That's
done
with
clay
and
reuse
that
code,
so
are
you
suggesting
then.
G
Yeah
I
mean:
do
we
just
hit
up
on
that
that
barrier,
then,
like
oz,
has
kind
of
set
things
up
so
that
the
way
it's
using?
Kindly
like
it's
going
to
do
certain
things.
If
it
does,
that
I
mean
maybe
it's
not
going
to
do
the
same
thing
you
expect
when
you
pull
code
over
from
one.
You
know
code
example
online,
two
to
a
different
environment
right
and-
and
maybe
that's
just
maybe
that's
just
the
price.
We
paid
that
like
that,
that
kind
of
interoperability.
G
Interoperability
is
never
going
to
be
perfect.
To
the
extent
that
you
know
our
ideas
about
things
are
a
little
bit
different
but
yeah,
but
I
guess
that's
kind
of
the
question
right
like
are.
We
gonna
get
close
enough
to
like
a
sweet
spot
where
we
feel,
like
everyone
kind
of
gets
what
they
want,
or
at
least
close
enough.
You
know.
F
Yeah
one
thing
just
that
I'd
like
to
mention
for
the
advice
protocol
or
whatever
it
ends
up
becoming,
is
if
instead
of
saying
give
it
a
value
or
some
code.
This
is
what
I
want
to
visualize,
instead
of
returning
kind
of
an
ordered
list
of
things.
So
it's
like
I
can
get
back
a
list
of
like.
Oh
here's,
a
tree
map.
Okay,
I
don't
know
how
to
do
a
tree
map,
but
I
know
how
to
do
it's
like.
This
could
be
a
tree
map
or
the
next
preference.
F
Is
you
know
a
list
of
maps
or
something,
and
the
next
thing
is
just
text
and
so
at
the
end,
you
can
kind
of
bottom
out
the
text
but
like
as
a
tool
you
can
kind
of.
You
know
you
there's
some
things
that
you
can
implement
and
if
you
don't
have
all
of
them
implemented
and
you
get
back
something
that
you
don't
recognize,
you
can
kind
of
fall
back
and
it
can
kind
of.
F
You
could
have
more
kind
of
like
the
way
they
do
fonts
in
browsers,
and
this
also
provides
a
way
for
tools
to
say.
Like
okay,
I
have
a
namespace
keyword
for
membrane.
That's
a
very
specific.
F
Yeah
and
I'd
also
like
to
advocate
for,
if
not
requiring,
that
the
advice
function
run
in
constant
time
at
least
kind
of
having
some
advice
function
that
you
know
will
run
in
constant
time.
So
it's
like,
if
you
get
a
infinite
lazy
sequence,
there's
at
least
some
version
that
is
not
gonna.
G
Yeah
yeah
yeah.
That
makes
sense
I
mean
so
what
I,
what
I
did
in
semantic
csv,
for
it
had
kind
of
like
an
inference
mode
where
you
could
guess
what
types
of
data
cells
in
a
you
know
in
a
csv
were
and
what
I
did.
There
was
just
to
set
kind
of
like
a
number
of
rows
that
you
sort
of
sniff
through
before
deciding
like.
G
You
know
what
whatever
it
might
be,
but
that
yeah
I
mean
that.
G
C
So
just
a
quick
question
chris,
like
are
we
thinking
about
in
terms
of
like
oz
and
vega?
Are
we
thinking
of
like
treating
those
data
structures
almost
as
their
own
data
type
right
and
issuing
the
idea
of
it's
a
wrapper
under
a
renderer?
It's
like
here's,
my
vega
light
spec
right
and
it
would
be
understood
as
a
vega
light
spec
using
oz
right
and
be
rendered
that
way
like
without
the
machinery.
You
know
what
I
mean
is
that
is
that
kind
of
the
direction
we're
thinking
here
or
is
it
more?
C
I
don't
know
if
I
explain
that
right.
Do
you
know
what
I
mean.
G
I
I
I
think
so
let
me
I'll
try
to
answer
and
you
can
tell
if
I'm
off
base
here,
but
so,
I
think,
part
again.
The
way
I
think
about
this
is
from
the
perspective
of
like
someone
writing
their
nlp
library
and
they
have
a
function
which
returns
some
some
some
vega
light
representing
some
aspect
of
the
analysis
right.
Presumably,
what
that
function
would
actually
return
is
just
literally
like
the
map
that
you
would
stick
into
oz,
dot,
core
slash,
wake
of
light
right
as
a
closure
script
component.
G
Yeah
yeah
right
and
the
problem
there
is
like
it's
going
to
be
really
hard
to
look
at
some
random
map
quote
unquote
and
figure
out.
Like
is
this
a
vegalite
data
structure?
I
mean
probably
the
best
way
to
do
that
would
be.
To
like
I
mean
so.
The
vegalite
and
vega
have
have
a
json
spec,
so
you
could
in
theory,
like
you,
know,
dig
in
pull
out
the
json
spec.
G
I
I
think
that
there
are
closure
or
or
java,
even
as
a
fallback
libraries
for
kind
of
interpreting,
json
specs,
and
then
you
use
that
to
say.
Like
all
right,
does
this
thing
match
the
spec
or
not?
I
don't
know
how
computationally
intensive
that
is,
if
we're
gonna
run
into
kind
of
the
constant
time
issue
problem
there,
but
you
know
so
I
mean.
G
Maybe
we
look
into
that
see
if
it
seems
reasonable
enough
kind
of
performance
and
logistics
wise,
there's
gonna
be
some
challenges
there
with,
like
which
version?
Are
you
looking
at
right?
So
the
specs
can
be
versioned
or
change
over
time,
but
so
that's
a
little
bit
of
a
trick.
So
if
we
put
that
aside
for
a
second
just
say
like
all
right
again,
if
we're
imagining,
if
this
is
a
library
author
and
they
just
have
a
function,
that's
returning
this
map,
the
the
question
is
really
like.
G
Can
you
attach
something
to
that
map
says
metadata?
That
says
like
this
is
vega
light,
so
that
you
don't
even
have
to
think
about
it.
So
now,
oz
or
or
or
data,
rabbit
or
portal
can
just
say
like
oh,
I
know
what
this
thing
is
when
I
call
this
function,
I'm
not
just
going
to
run
through
this
as
like
random
code
or
as
a
map,
I'm
going
to
render
it
as
a
vega
visualization,
because
I
know
that's
what
it
is
because
it
you
know
the
function
that
gave
me
this
data
attached
metadata.
C
Gotcha
yeah,
that
makes
sense.
I
was
thinking
kind
of
like
where
I
have
the
differential,
meaning
a
vector
and
hiccup
right,
it'll
be
like
a
vector,
hiccup
vega,
light
vector
right
and
then
it
gets
rendered.
However,
yeah
cool
just
clarifying
yeah,
I
would
imagine
the
spec
for
vega-
is
massive.
G
G
Someone
someone
actually
built
pac-man
in
vega,
which
is
just
just
bonkers
ridiculous,
but
but
I
mean
it
just
shows
how
sophisticated
it
is
like
the
data
flow
model.
So
yeah
good
luck!
Good
luck!
Expecting
that
I
mean
you
could
do
some
heuristics,
but
you're,
just
not
gonna
catch
everything,
so
yeah.
A
E
So
forgive
my
ignorance,
but
just
as
a
consumer,
I
am
not
a
producer
of
libraries,
but
as
a
consumer
just
so
I
make
sure
I
understand.
The
idea
is
that
for
me
would
be
that
my
co-worker
designed
something
let's
say
using
data
rabbit
and
I'm
assuming
they
save
it,
and
then
I
say
hey
you
know,
but
I'm
an
exclusive
user
of
clerk.
E
So
these
types,
whether
it's
kindly
whatever
somewhere
in
that
it'll,
say
okay
you're
going
to
display
this
in
clerk,
and
this
is
going
to
be
big
of
light,
and
this
there's
be
something
some
library
explicitly
wrapping
whatever
they
wrote.
That
says,
I
guess
he
or
she
is
going
to
write
in
you
know
within
their
code.
Okay.
E
This
is
so
because
I
want
to
make
this
work,
because,
because
I
want
to
make
this
usable
outside
of
just
my
tool,
I'm
going
to
is
the
user
going
to
type
in
all
that
like
if
we
use
kindly
is
the
user
going
to
type
in
these?
Are
the
kinds
or
there's
gonna
be
some
magical
export
function
that
sort
of
wraps
all
that
stuff?
If
that
makes
any
sense
tomorrow,
am
I
making
any
sense
in
my
my
question.
G
So
someone
else
said
sorry.
I
think
I
think
it
depends
a
little
bit
on
context
like
if
you're,
using,
if
you're,
using
like
a
library
function
again
like
I'm
using
this
nlp
library
function.
Example,
if
you're
using
that
library
function
in
theory,
then
yes,
no
matter
which
tool
you
move
it
around
in
it
should
it
should
pick
up
on
that
metadata.
G
That's
been
attached
and
say,
like
okay,
there's
a
figure,
I
don't
know
what
to
do
with
that
as
long
as
the
tool
handles
that,
if,
on
the
other
hand,
your
co-worker
you're
describing
is
building
a
visualization
in
one
of
these
tools
and
then
you're
wanting
to
copy
that
code
and
put
it
in
another
one.
I
think
the
answer
is
also
yes
kind
of
with
some
with
some
caveats
right.
So
like
some
of
our
like,
for
example,
if
you're
writing
something
in
oz,
that's
like
a
vector
form.
G
You
might
you
know
to
do
like
right
now
to
do
a
vega
light
form
in
like
an
oz
notebook.
You
would
do
you
know,
vector
vegalite,
and
then
your
data
spec
right
and
so
it'd
be
kind
of
a
hiccup
looking
for
him.
But
it's
not
like
real
hiccup
right,
because
it's
not
like
vega
lights,
not
an
actual
html
tag.
So
that's
something
that
if
you
copy
that
into
a
different
tool,
it's
probably
not
going
to
do
the
right
things.
That's
like.
G
You
know
that
I
was
going
to
do
things
and
you
can
key
off
and
customize
how
different
tags
are
rendered
and
stuff,
but
in
odds,
but
but
that's
not
necessarily
going
to
be
thing
everywhere
so,
like
I
think
the
answer
is
like
if
everyone
is
kind
of
sticking
to
the
same
yes.
So
if
your
co-worker
is
writing
in
a
particular
style,
then
in
theory
it
would,
it
would
be
interoperable.
C
G
You
know
daniel
gave
this
example
where
he
had
a
he
had
a
map,
that's
a
vega
light
map
and
then
showed
how
either
you
could
wrap
that
in
a
function
that
attaches
some.
You
know
this
is
kind
vega
light
or
you
just
attach
metadata
to
it
directly,
which
actually,
I
kind
of
like,
because
you're
not
having
to
like
indent
the
code
and
like
apply
a
function,
you're
kind
of
just
like
attaching
something.
G
It's
really
nice,
because
you
can
comment
on
or
off
that
that
metadata
annotation
pretty
easily
but
kind
of
regardless
of
those
details.
The
point
then,
is
like
when
we
write
or
when
your
co-worker
writes
in
in
that
kind
of
flavor,
that
mode,
that's
the
piece
that
would
be
interoperable
and
you
could
move
wherever
you
want,
or
at
least
you
know,
that's
the
goal.
E
So
we
would
have
to
agree
ahead
of
time
that
we're
going
to
you
know
we're
going
to
use
kind.
Let's
say
since
we're
talking
about
kind
of
that's
going
to
be
our
our
language
or
our
protocol
of
choice.
We're
gonna
make
sure
we
rewrite
such
that
we
can
interrupt
because
we're
gonna
choose
to
do
this.
Yeah
yeah
yeah.
G
Yeah
yeah
and
I
mean
to
some
extent
right.
This
is
this-
is
kind
of
that's.
Why
there's
a
lot
of
tool
builders
here,
because
we're
having
to
sort
of
sign
on
and
say
like
all
right
is
this
like
is
this?
Is
this
something
we
can
all
kind
of
do
and
live
with?
Because
I
mean
you
know
when
you're
building
a
tool,
if
you
don't
have
to
think
about
anything
else,
like
it's
a
lot
easier
right,
you
can
kind
of
just
architect
everything
to
work.
G
G
Yeah
right
yeah,
no,
that's
that's
true.
I
mean
it's
it's
better
to
have
one
well
thought
out
solution
that
kind
of
works
for
everyone.
Then
then
a
bunch
of
solutions
that
maybe
didn't
think
about
this
edge
case
or
that.
So
I
think
each
of
our
products,
hopefully,
will
be
better
as
a
result,
but
also-
but
you
know
I
really
care
about
the
interoperability-
and
you
know
beginner
friendliness
kind
of
side
of
this,
like.
I
really
think
that
we
stand
a
lot
to
gain.
G
If,
if
it's
I
mean
it's
just
so
cool
that
we
have
so
many
tools
to
be
doing,
visualization
and
and
data
exploration
and
everything,
but
but
yeah
folks
are
having
a
hard
time
navigating
when
they,
when
they
come
into
the
space
as
beginners,
especially
that'll,
be
frustrating,
and
just
and
just
in
general,
you
know.
G
Sometimes
you
want
to
use
one
tool
from
one
thing
and
another
for
some
other
kind
of
something
else
right
so
like
I'm,
I
see
myself,
probably
playing
with
with
data
rabbit
at
some
point
and
it's
like
pretty
cool.
Like
I'm
sure
I
can
get
some
new
closure
converts
that
way.
So
yeah
I
mean
to
the
extent
that
then,
when
I
move
around,
I'm
able
to
use
the
same
kind
of
idioms
and
and
reuse
code
more
easily,
like
that's
that
all
to
me
feels
like
really
positive.
Yeah.
E
C
E
Yeah,
I
was
thinking,
I
guess
my
use
case
was
maybe
similar,
but
just
sort
of
thinking.
Okay,
you
know,
I'm
let's
say
I'm
going
to
teach
something
to
some
kids,
I'm
going
to
I'm
going
to
probably
use
data
rabbit
because
it's
so
cool
and
fun.
But
then
I
thought
like
if
there
was
some
magical
export
button
export
as
kindly.eden
and
then
I
can
import
it
into
some
other
tool
and
it'll
just
figure
stuff
out,
and
then
I
can
just
show
my
co-workers.
That's
that's
how
I
was
thinking.
E
I
wasn't
thinking
I
could
just
take
it,
as
is.
I
was
thinking.
Okay,
there's
gonna,
be
some
magic
plug-in
that
does
exports
it
into
a
kindly
format.
I
don't
know
just
like
so
like
just
like
google
docs
and
excel
like
you're
gonna,
just
export
this
thing
and
then
boom.
It's
gonna.
It's
not
gonna
be
perfect,
but
it's
gonna
work
enough
for
me
to
say:
okay
using
2x.
I
Yeah,
I
figured
I
kind
of
missed
most
of
it,
but
I
do
have
something
I
can
show
y'all,
because
I've
been
playing
around
with
burke,
nudes,
sci
interpreter
and
stuff,
and
then
I
I
caught
on
to
daniel's
clay
and
the
kindly
stuff-
and
I'm
really
excited
about
that.
So
I
threw
some
stuff
together
and
I
can
show
it
to
y'all.
If
you
want
to
see
it
real,
quick.
H
I
gotta
say
yes
to
this:
allow
screen
sharing.
I
Yeah,
this
is
cool
little
thing
and
this
is
just
a
psy
and
I
took
the
monaco
editor
right,
the
it's
what's
built
into
vs
code,
it's
a
web
component,
and
so
that's
it
right
here
and
here's
just
a
folder
structure.
Actually.
G
We
have
a
different
screen:
we've
got
the
we've
got
your
firefox
browser
screen
right
now,.
H
G
I
Yep
and
I
told
just
to
share
the
whole
screen
hold
on-
I'm
gonna
come
back
to
this
from
chrome
instead
of
firefox.
C
A
heads
up
christopher,
I'm
totally
going
to
bother
you
next
week
about
like
on
click
actions
and
signals.
G
Is
it's
it's,
it's
really
nice
to
have
some
motivating,
yeah,
motivating,
use
cases
to
kind
of
think
through.
So
yeah
definitely
definitely
bug
me.
Let
me
know
like
which
of
those
you
think
would
be
most
useful
and
that
we
can
team
up
and
and
work
on
them.
C
Cool
yeah,
I
was
blown
away
with
the
whole
layer
thing
I
was
like
wow.
That's
because
it's
much
lighter
weight
than
me,
re-rendering
a
whole
new
thing
right
and
composing
them
manually.
So
still.
I
Okay
cool,
so
we
reload
this.
So
this
is
this
thing
and
it's
on
the
left
side.
You
have
just
a
directory
structure,
that's
basically
just
source
files
and
a
map.
Then
you
have
this
editor,
which
is
built
with
monaco,
and
it
actually
has
no
there's
a
there's
a
way
to
bring
up
the
palette.
You
know
if
you
could
command
palette,
but
pretty
cool,
but
the
idea
here
this
is
the
editor
view.
But
imagine
this
view
on
the
right.
I
This
is
your
web
page,
and
what
I
want
to
build
with
this
thing
is
a
little
static,
blog
engine
thing
where,
instead
of
where
you
can
build
a
static
website,
an
aesthetic
blog
without
having
to
use
the
cli-
and
you
can
basically
just
like
fork
a
repo
or
maybe
I'm
thinking
about
various
back
ends
for
where
the
data
lives.
But
the
essentially
the
idea
is
you
just
code
it
in
the
browser
you
hit
commit,
and
then
it
saves
your
stuff.
I
And
then
people
can
view
it
like
your
blog,
and
this
is
the
view
on
the
right
of
your
blog
and
if
you
click
and
hold
on
a
given
element,
it
brings
up
the
the
code
for
it
if
you're,
not
in
this
mode,
where
you
see
the
stuff
on
the
left,
so
you
could
just
edit
your
blog
within
your
blog,
just
by
hovering
and
clicking,
if
you're,
in,
if
you're
logged
in
and
in
admin
mode,
you
can
just
click
on
an
element,
and
it
brings
up
the
editor
for
that
component.
I
Code
and
then
some
path
into
what
you,
what
you
want
to
add
cljs.
I
H
I
I
I
I
don't
know
why
it's
not
working
suddenly,
all
of
a
sudden
is
this
crown.
This
is
crown
it's
a
bummer
because,
well
you
maybe
might
work
is
if
I
do
code.
H
Root
to
app
cljs,
which
is
already
kind
of
in
the
source
directory.
Now,
let
me
see
what
let
me.
I
Yeah
well
bottom
line.
The
point
is
man,
it's
because
that's
probably,
I
have
messed
up
the
directory
structure
here
this
this
directory
structure
and
how
it
maps
to
where
files
live
in
the
atom.
But
anyway
the
idea
here
is
code.
You
put
some
stuff
in
here
like
root
to
do
cljs
right,
for
instance,
and
I'm
not
gonna,
evaluate
that,
but
then
over
here
you
could
put
in
div,
hi
and
that'll
show
up
as
a
sub
component
within
the
root,
which
is
right
here,
root
cljs,
so
you
can
compose
in
the
browser.
I
G
So
is
it,
I
have
a
quick
question
is
the
the
way
that
this
is
supposed
to
work?
Is
it
is
it
that
it
just
renders
like
the
last
hiccup
form,
or
do
you
render
each
hiccup
form
kind
of
in
turn,
in
a
big
div.
I
In
form
it's
like
hiccup
inception,
it's
like
it's
like
psy
inception.
All
right
so
like
each
code,
thing
creates
a
new
psi
evaluation,
but
they're
all
sharing
the
same
evaluation
context.
I
G
That,
but
so
as
far
as
like,
what's
gonna,
so
if
you
type
h1,
you
know
hello
and
then
another
tag
below
it.
That's
like
you
know,
p
world
like
this,
you
mean
yeah
right
are
those
both
going
to
render
or
just
the
the
last
one,
the
p.
I
G
Yeah
yeah,
so
this
is
this
is
actually
how
oz
used
to
work
it
used
to
be
that
it
would
only
render
the
last
thing
in
a
code
file
and
so
for
which
yeah
at
the
time
I
thought
was
the
right
thing
to
do,
but
I
realized
that
if
you
want
to
use
it
as
a
notebook,
it's
actually
really
problematic
because
you
don't
want
you
don't
want
to
have
to
re-render
the
whole.
G
G
I
mean
some
of
some
of
that
some
additional
work
figuring
out
the
dependencies
between
things
so,
like
that's,
that's
kind
of
a
whole
separate
thing,
but
even
just
from
the
perspective
of
like
you
know,
just
starting
to
re-render
or
re-evaluate
from
the
first
line
that
changed
was
kind
of
the
initial
thing
that
oz
did,
and
even
just
even
just
at
that
kind
of
stage
being
able
to
break
it
up
into
multiple
tags.
Has
some
advantages.
D
G
Matter
at
all,
though,
because
you're
you're
focused
on
building
static
sites,
you're,
maybe
not
as
interested
in,
like
you
know,
big
data
stuff
where,
like
you,
don't
want
to
have
to
recompute
things,
because
it
might
take
10
minutes
right.
I
For
that
purpose,
what
I
was
thinking
of
doing
was
having
a
you
know
like
a
glorified
markdown
document
version
where,
if
you're,
if
you're
doing
a
markdown
thing
right
and
like
it,
would
be
more
like
that
that
flow,
where
yeah
everything
gets
rendered.
I
C
Yeah
I
like
the
idea
of
calling
other
files
with
just
like
that
code
function,
so
you
can
have
like
one
file.
That's
literally
just
the
div
structure
right
and
all
the
logic
and
stuff
you
run
is
in
all
the
other.
It
just
keeps
it
nice
and
clean
right
with
the
presentation
and
the
competition
and
stuff.
I
really.
D
D
A
That
we
will
have
to
stop
in
about
three
minutes,
because
there
is
another
community
session
and
they
would
need
the
zoom
account.
I
think
so.
Maybe
it
is
time
for
kind
of
last
comments
for
anybody.
If
there
is
any
conclusion
and
john,
maybe
you
would
like
to
present
that
next
week
briefly,
there
is
a
session
dedicated
to
data.