►
From YouTube: Clojure visual-tools meeting 13 - interactive datavis: Shiny, Clojurescript Bayesian animations
Description
In this Oct 14th, 2022 meeting of the Clojure visual-tools group, we had two presentations about interactive data visualizations:
- Adham Omran gave an overview of the Shiny R package for interactive data visualizations, demonstrated through a geospatial analysis use case.
https://shiny.rstudio.com/
- Jamie Pratt presented the use of Clojurescript for interactive animations of Bayesian inference, a project done in the Jointprob study community.
https://jointprob.github.io/jointprob-shadow-cljs/
Following the presentations, we also had a discussion of the current Clojure data visualization ecosystem
A
Hello,
this
meeting
is
meeting
13
of
the
visual
tools
group,
where
different
closure,
Library
creators
and
Tool
creators
and
users
need
to
discuss
experiences
and
working
prop
progress
projects
and
discuss
collaborations
and
hopes
for
the
future.
Today
we
will
have
two
interesting
talks,
one
by
Adam
about
the
shiny
framework
of
the
r
ecosystem
for
interactive
database
organizations
and
another
one
by
JD
about
creating
interactive
animations
in
closure
script
for
some
Bayesian
inference
and
as
always,
we
will
Begin
by
introducing
ourselves.
A
B
B
B
So
I've
wanted
to
learn
how
to
build
up
my
skills
to
be
able
to
do
visual
representations
of
a
lot
of
the
back
end
systems
and
data
structures
that
I'm
interested
in
working
with,
as
well
as
I've
got
an
interest
in
code
representation
and
beautiful,
in
particular,
beautiful
code,
representation
and
I
have
such
an
incredible
lack
of
skill
in
both
of
these
areas,
so
I'm
at
least
going
to
try
to
have
some
of
the
knowledge
that
all
of
you
have,
hopefully
just
at
least
rub
off
on
me
or
I
can
pretend
that
I'm
doing
something
because
I'm
I'm
watching
all
of
you
do
wonderful
things.
B
Yeah
sure
I
have
a
bit
of
an
unusual
background.
I
used
to
be
a
civil
engineer,
so
I
worked
with
Bridges
and
stuff,
but
I
like
programming,
so
I
became
a
programmer
and
now
I'm
starting
to
get
more
and
more
interested
in
product
work.
B
So
I'm
here,
because
I'm
really
excited
about
the
visual
tools,
initiative
and
I
think
it
has
potential
for
showing
lots
of
great
stuff,
so
I'm
just
happy
for
Daniel
making
all
this
happen
and
I'm
really
excited
for
yeah.
The
speakers
today,
I'm
I,
want
to
see
what's
happening.
A
Yeah,
thank
you
Theodore
and
thank
you
for
your
recent
support
and
you
know
pushing
some
of
the
meetings
behind
the
scenes.
It
is
amazing
to
have
you
in
post
and
yeah,
and
maybe
how
here
I'm
sorry
I,
don't
know
how
to
pronounce
your
name
and
yeah.
C
A
Thank
you
so
much
yeah,
and
maybe
would
you
like
to
tell
me
about
yourself.
C
C
Perfect
perfect
yeah
thanks
Daniel
I'm
happy
to
be
here.
Actually
it's
my
first
time
to
be
here
and
around
the
glory.
Community
I'm
I'm,
mainly
I'm,
currently
like
data
science
and
and
research
associate
currently
based
in
in
Istanbul,
but
I
have
finished
my
master's
degree
in
computer
science
from
Armenia
American
University
of
Armenia
I'm,
mostly
doing
all
the
I'm
on
the
data
analysis,
side.
Obviously,
I
know
this
is
a
small
part
from
of
your
community,
but
I'm.
Mostly
now
doing
my
data
analysis
in
in
R.
C
Previously
I
have
done
the
analysis
and
also
Python
and
and
I,
have
other
exposure
for
different
languages,
but
I'm
happy
here
to
to
hear
from
you
and
learn
and
maybe
explore
new
topics
for
me.
So
nice
meeting
you
all.
A
Thank
you
so
much
so
nice
to
meet
for
the
first
time,
and
you
know
to
you
and
to
anybody
who
is
new
to
closure.
This
community
is
really
looking
to
create
a
good
experience
for
you.
So
if
anything
is
difficult
or
confusing
or
blocking,
then
let
us
talk.
Let
us
chat
afterwards
and
see
how
we
could
make
it
easier
for
you
to
to
be
part
of
this
and
wonderful
to
meet
and
Adrian.
Would
you
like
to
get
something.
C
D
C
Say:
hey
everyone.
My
name
is
Zane
I'm
the
platform
engineering
lead
for
the
prince
qwell
project,
it's
a
query
language
for
the
the
software
system
for
automatically
building
and
burying
probabilistic
models.
This
is
my
first
time
at
this
meeting.
Looking
forward
to
getting
to
know
you
all.
C
Hey
y'all
yeah
I've
been
involved
in
the
visual
tools
World
on
and
off
I've
been
away
for
a
few
months,
but
I
thought
I'd
stop
back
in
and
try
to
get
back
up
to
speed.
E
Yes,
hello,
everyone
I
am
a
data
analyst
with
a
background
in
finance.
I've
worked
with
r
for
the
past
two
to
three
months
and
I've
gotten
into
closure.
In
the
past
couple
of
weeks,
loving
the
ecosystem,
there's
a
lot
of
have
a
lot
of
interesting
visual
tools
and
in
building
what
ways
to
visualize
data
to
get
and
gain
insights
from
the
data
and
I
think
the
way
closure
treats
data
lends
itself
well
to
how
data
is
processed
and
manipulated
and
visualized.
So
it's
interesting
being
in
this
community.
F
Hi
I'm
I've
been
open
source
developer
for
a
number
of
years,
working
on
the
Moodle
learner
management
system,
freelancing
contributing
to
core
and
producing
plugins
that
work
with
Moodle
I've
been
wanting
to
get
into
functional
programming
for
a
while
and
looking
for
ways
to
to
use
functional
programming
in
in
the
real
world
and-
and
it
seems
like
closure-
might
be
a
path
to
do
that.
F
I
might
be
able
to
learn
enough
closure
and
closure
script
to
to
produce
something
of
value
for
people
all
right,
I,
really
like
the
working
with
a
language
that
has
a
a
strong
philosophy
behind
it
and
and
it
it
yeah.
I
I
love
the
the
idea
of
of
separating
out
processing
yeah.
That's
it
Moodle
yeah
processing
processes
and
processing
and
transforming
data
to
app
to
State.
F
F
A
Thank
you
so
much
yeah,
so
I
guess
now
we
will
go
about
the
presentations
by
Adam
and
JV
and
we
have
about
75
minutes
to
the
official
time.
So
we
have
lots
of
time.
So
each
of
you
could
say
talk
and
discuss
your
topic
for
about
half
an
hour,
and
then
we
have
15
more
minutes
to
to
chat
further
and
maybe
then
stay
later
on.
If
anybody
wishes
to
stay
and
but
I'm
just
saying
that
so
that
you
know
we're
flexible
and
we
could
change
the
process
to
see
how
we
go
and
yeah.
C
E
Then
you'll
see
the
big
Beamer
yeah,
yes,
great,
all
right
so
I'll
be
doing
a
Showcase
of
shiny,
which
is
in
our
package.
E
I'll,
be
mainly
talking
about
the
concepts
behind
shiny
and
telling
an
experience
of
using
shiny
and
a
real
world
project,
and
the
many
aspects
that
makes
shiny
interesting
to
work
with
first
of
all,
shiny
Works
in
RR
is
a
language
for
successful
Computing
Graphics.
It's
a
free
and
open
source
language.
It
has
a
lot
of
statistical
functionality
built
into
its
core,
so
it
lends
itself
well
to
use
by
statisticians
and
like
what
I
love
about
R
is
like
there's.
E
You
can
quickly
start
working
with
it
like
you
get
the,
for
example,
data
and
CSV
format.
You
can
quickly
build
plots.
The
language
is
easy
to
read
it's
based
on
S.
It's
inspired
by
scheme
which
I've
like
learned
about.
While
I
was
doing
research.
There
is
some
inspiration
from
best
languages
and
art.
It's
used
for
this
wrangling,
manipulation,
visualization
analysis
and
research
in
many
fields,
Finance
medicine,
and
it's
also
used
for
building
dashboards
cool
things
of
what
are
like.
This
is
what
made
me
stick
to
art
for
a
long
time.
E
Ripple
raffle,
driven
development
similar
to
closure.
You
can
just
work
in
the
rebel
manipulate
your
data
visualize
it
quickly.
It
shortens
the
time
between
thinking
and
getting
things
out
like
this
ability
to
just
immediately
work
with
your
data
makes
it
very
fun
to
work
with
it's
extensible.
You
can
write
packages
for
R
and
the
ecosystem
is
very
large
and
very
active
and
expanding
many
packages,
such
as
the
thigh,
diverse,
shiny
and
Netter
title
versus
a
basically
Universal
packages
for
manipulating
and
visualizing
data.
E
Ggplot2
is
one
of
the
most
famous
visualization
packages
for
our
Chinese
buffet
about
today,
and
Netter
enables
you
to
basically
do
literary
programming
where
you
have
documentation,
have
code
blocks,
knit
them
together,
export
that
to
HTML
PDF
and
show
that
off
very
quickly,
and
my
fate
like
this.
This
is
very
fun,
the
piping
macro,
which
is
basically
for
closure
users.
It's
a
thread
first
macro
where
you
write
an
expression
and
you
pipe.
The
output
of
the
expression
to
the
expression
that
follows
so
filter
to
plot
and
so
on.
E
So
threading
functionality
in
our
shiny
is
an
r
package
built
on
r
that
makes
it
easy
to
build
interactive
web
applications
from
our.
It's
mainly
used
for
quick
prototypes
and
VPS
and
web
applications.
E
Shiny
embodies
the
easiness
in
terms
that,
once
you
know
r
reading
a
bit
about
shiny,
you
can
use
shiny
to
build
a
web
application
with
little
to
no
web
background
and
that's
a
very
powerful
thing.
And
it's
one
of
the
points
that
I'll
discuss
about
in
my
like
ideas
for
like
a
shiny
enclosure.
It
has
reactivity
built
in
so
the
application
reacts
to
the
users,
changes
and
inputs
without
having
to
write
JavaScript
and
like
basically
without
getting
your
hands
dirty
with
JavaScript.
E
You
can
write
R
and
have
that
deal
with
the
interaction
shiny
has
modules
which
enable
you
to
reuse
and
organize
code.
I'll
show
a
demonstration
of
how
useful
modules
can
be
later
on,
but
they
enable
the
user,
the
developer
or
a
team
of
developers
to
work
together
on
a
project
and
have
no
interference
between
them
and
basically
one
person
can
write
module
a
another,
characterized
module,
B
and
another
current
module
C,
and
they
all
develop
together
and
incorporate
the
modules
into
a
single
big
application.
E
I'll
get
a
bit
into
the
application
structure,
so
what
comes
next
makes
sense.
Shiny
can
be
as
simple
as
a
single
file
with
a
UI
function
and
a
server
function.
The
UI
function
describes
how
things
appear
on
the
page,
and
the
server
function
basically
fills
in
that
functionality.
E
Users
tend
to
go
for
Frameworks
such
as
Golem,
which
is
used
to
build
robust
Shrine
applications
and
it
models
the
application,
nlr
package
format
with
an
R
directory,
a
Dev
directory
and
directories
for
our
development
I'm
not
going
to
get
into
the
details
of
those
because
that's
unnecessary
for
like
seeing
the
big
picture
of
shiny.
But
it's
a
Well
organized
system
and
I'll
come
back
to
this
later
on.
E
When
talking
about
like
the
Simplicity
principle
of
closure
and
how
that
can
get
into
the
in
the
way
of
new
developers
such
as
me,
because
I'm
the
disclosure,
the
process
of
building
an
application
with
shiny,
is
very
simple,
you
design
your
UI,
you
build
with
the
modules
and
you
incorporate
everything
together.
It's
straightforward
to
get
started
with
reactivity
and
modules.
E
E
E
This
is
great
because
after
learning
or
you
can
immediately
start
building
applications
that
you
can
show
and
that
you
can
put
on
your
portfolio
or
show
your
experience
with
and,
of
course,
your
ideas
will.
Reactivity
basically
describes
the
simple
yet
very
powerful
mechanism
behind,
for
example,
choosing
a
data
set
and
having
all
the
data
changes
with
the
choice
of
the
user.
E
E
E
E
So
an
input
is
where
something
the
user
can
change
and
an
output
is
something
the
user
can
see
and
they
outputs
can
interact
with
the
inputs
through
your
reactivity
here,
the
server
function
simply
runs
a
reactive
switch
which
updates
on
the
user's
input.
So
it
goes
for
all
data
sets
and
for
another
way,
even
simpler
demo.
E
So
how
does
this
all
happen
in
shiny?
There
are
three
components
to
reactivity:
we
have
reactive
values,
reactive
expressions
and
Observers.
The
reactive
values
are
values
the
user
can
interact
with
and
that
the
user
can
change.
They
are
the
source
of
reactivity
and
they
can
be
linked
to
an
expression
or
an
observer.
E
E
E
A
Yeah,
please
all
these
three.
These
are
server
side,
Notions
right.
They
are
about
the
run
time,
not
about
the
browser
right.
E
Yeah,
like
these
are
processed
all
on
the
server
side,
like
the
expressions
these
all
live,
like
the
the
declaring
of
Expressions
lives
in
the
server
side
of
the
application.
So
when
you
have
a
UI
site
and
a
server
side,
all
this
is
declared
and
happens
in
the
server
side.
So
the
user
does
like
declare
what
gets
updated
reactively
and
they
choose
where
that
output
is
where
it
goes.
So,
for
example,
in
the
demo
I
show
it
goes
into
the
table.
E
F
Thank
you,
I'd,
like
to
ask,
does
shiny,
determine
which
expressions
are
reactive
expressions
or
are
all
of
your
Expressions
reactive
Etc?
No,
no.
Are
there
some.
E
C
E
E
F
E
So
you
like,
the
the
developer,
determines
what
is
reactive
and
what
is
not.
F
Interesting
because
I
was
just
thinking
of
this
compared
to
what
I'm
going
to
present
later,
where
closure
script,
the
closure
script
compiler
itself,
determines
you,
have
your
state
for
the
application
and
the
I
I
create
an
erective,
a
react
application
where
the
compiler
determines
what
needs
to
be
updated.
When
the
Slate
changes
all
of
your
functions,
there's
not
a.
E
That's
interesting
well,
I
saw
the
demo
for
like
it
was
very
reactive-like,
but
I
didn't
get
the
time
to
read
the
code,
so
I'll
be
very
interested
in
seeing
how
you
got
it
to
like
determine
which
is
reactive
and
which
is
not
because
and
how
that
is
like
how
how
that's
processed
enclosure
script
like
I'm,
looking
forward
to
see
how
you
do
that,
because
I
think
both
approaches
have
their
pros
and
cons,
because
in
shiny
when
you
declare
what's
reactive,
you
know
exactly
what
computations
are
going
to
happen
like
what
and
when
it
happens.
E
So
you
know
how
the
resources
are
gonna
work
out
but
like
if
the
compiler
determines
I,
don't
know,
what's
going
to
be
reactive
and
what's
not
going
to
be
reactive.
So
how
will
the
load
the
balance
and
all
that
and
I
have
to
reiterate
I'm
a
beginner
enclosure,
so
state
is
still
just
a
bit
beyond
minus
my
understanding
but
I'm.
Getting
there.
E
E
E
Modules,
I
think,
is
something
closure
already
does
so.
A
module
in
shiny,
basically
couples
the
UI
function
and
the
server
function
in
a
module.r
file,
and
then
these
modules
are
called
an
app
server
and
app
UI.
This
enables
code
organization
and
the
reusability
of
code.
E
E
A
single
closure
file
represents
a
module
with
its
UI
and
server,
and
then
that
gets
called
or
maybe
I,
don't
know
exactly
how
to
I.
Don't
know
how
to
see
modules
enclosure
yet
so
I'll
demonstrate
them.
I'll
show
some
structure
for
them,
and
I
can
hear
from
the
people
with
more
experience
in
closure
how
this
can
be
implemented.
E
Chinese
ecosystem
is
large.
It
has
Golem,
which
is
a
framework
for
building
shiny
applications.
It
has
shiny
dashboard,
which
is
and
yet
another
abstraction
that
helps
with
the
building
dashboards.
So
with
shiny
dashboard
and
bs4
dash,
you
basically
declared
the
layout
and
then
you'll
have
the
entire
application
and
I'll
show
that
and
I've
been
talking
a
lot
about
showcases,
so
I'll
be
showing
a
real
world
new
scenario
of
shiny
Golem
and
dashboarding.
E
E
Does,
it
show
the
application-
yes,
okay,
great,
so
here
we
worked
with
shiny
to
build
a
visual
representation
of
the
Imports
by
the
country
and
by
their
values.
E
Each
of
these,
the
map,
the
circles
and
the
bar
graphs-
are
a
module
so
When
developing.
We
were
three
developers
working
on
the
project
and
the
supervisor
is
real.
Who
is
present
with
us,
and
two
of
us
worked
on
the
back
end.
Basically,
and
the
third
developer
worked
on
the
UI
of
the
entire
application.
So
what
happens
is
the
the
UI
is
written
and
the
back
end
is
plugged
into
the
UI.
So
here,
for
example,
we
have
this
map
module,
which
is
a
leaflet.
E
If
anyone
here
has
worked
with
leaflet,
which
is
a
library
for
showcasing
Maps,
we
have
the
data,
sets
organized
by
import
categories,
and
the
user
can
basically
select
any
category
and
see
the
map
update,
showing
each
country
and
showing
tooltips,
and
all
that
this
data
here,
total
Imports
by
USD
by
IQD
by
kilogram
percent.
E
E
E
The
code
here
interacts
with
a
basically
a
dollar
quality
CSV
file,
because
it's
it's
a
binary
for
R,
which
makes
the
loading
of
the
data
quicker,
but
basically
the
State
updates.
Whenever,
like
the
state
of
the
application
updates,
whenever
a
any
input
is
changed-
and
this
happens
across
the
all
the
modules.
E
E
C
E
The
experience
with
shiny
has
a
lot
of
pros
and
cons.
The
main
Pro
is
that
we
used
what
we
already
know,
which
is
R
to
build
this
application
and
the
cons
are,
we
don't
know
web
development
so
when
we
wanted
to
modify
some
elements
such
as
the
bars
on
the
right
on
the
left,
we
wanted
to
put
them
on
the
top.
We
had
to
get
our
hands
working
with
JavaScript,
and
that
was
too
much
work
to
modify
such
a
simple
element
that
we
just
opted
to
not
deal
with
it.
E
How
would
we
present
shiny
enclosure
because
shiny
abstracts,
a
lot
of
code
which
can
lead
to
issues
when
the
developer
wants
to
change
something
as
simple
as
a
where
an
element
is
I've?
Seen
work
with
the
collages
which
Danielle
I
think
you
worked,
you
worked
on
yeah
it
it's
not.
The
interoper
is
with
are
not
training,
sorry
for
the
grammar
here.
It
basically
leaves
the
r
abstraction
in
r
and
brings
the
interop,
and
you
just
basically
call
the
functions
and
call
to
the
same
structure.
E
I
thought
about
reagents
and
providing
templates
to
use
shiny,
like
capabilities,
or
you
basically
declare
aoi
or
like
in
the
reagent
element.
You
create
the
UI
element
and
then
you
embed
the
insert
the
reactive
functionality
in
that,
but
that
also
needs
more
discussion.
So
and
another
question
came
to
mind,
which
is
from
my
understanding
of
the
closure
ecosystem.
It's
mainly
Library,
based
rather
than
framework
based
when
I
started
working
on
a
project.
E
I
found
myself
searching
for
libraries
rather
than
picking
a
framework
and
working
with
it,
so
with
shiny
enclosure
even
be
plausible,
like
who
would
use
a
complete
framework,
such
as
shiny
enclosure,
I
think.
The
main
use
case
for
this
is
for
people
new
to
closure
who
want
to
get
applications.
Running
quick
like
me,
like
just
maybe
a
number
of
kindly
functions
that
ease
up
the
operation
or
a
framework
in
itself.
So
I
want
to
hear
any
questions
if
there
are
any
and
what
would
an
a
framework
like
shiny,
look
like
enclosure.
A
Thank
you
so
much
yeah.
Thank
you.
You
know
for
bringing
Clarity
to
this
topic,
which
you
know
for
me
has
been
confusing.
Always
and
now
you
draw
the
picture
for
us
about
it
and
also
such
an
inspiring
use
case
to
see
and
and
yeah.
It
would
be
great
to
discuss
these
questions.
Maybe
it
makes
sense
after
Jamie's
presentation,
where
we
see
free
agent,
for
example,
so
we
have
a
little
taste
of
how
it
looks
like
in
Florida
Street.
A
So
we
have
a
little
time
before
we
move
to
Jamie's
presentation.
So
if
at
home
you
wish
to
comment
about
anything
or
if
anybody
has
a
question
or
comment,
it
is
a
good
time.
B
B
You
commented
on
how
to
model
the
reactivity
enclosure,
Adam
and
I
was
wondering
whether
you're
aware
that
atoms
can
be
subscribed
to.
E
On
the
reading
list,
the
okay,
so
for
a
quick
background
and
what
I
already
know
about
closure,
I'm
going
through
the
I
finished,
the
getting
started,
guide
and
I
started
going
through
the
reference.
I
read
the
reader
I
know
about
the
raffle.
How
evaluation
happens
I'm
still
far
from
atoms
agents,
vars
and
references.
So
do
tell
me
how
closure
deals
with
the
this
I'm
happy
to
learn.
So,
okay,.
B
F
I
don't
know,
maybe
maybe
we
could
delay
this
till.
We
were
looking
at
my
app
because
it's
a
it's
a
reagent
app
with
States
maintained
in
atoms
and
we
I
I
might
not
do
Justice
to
explain
it
very
well.
So
maybe
if
anyone
else
wants
to
chime
in
to
to
explain
things
better
than
me,
then
let's
have
a
discussion
about
about
closure
script
and
how
it
works.
Based
on
looking
at
my
app
as
an
example
of
I
that
might
be
better
than
it
might
be
better.
A
C
A
Do
have
a
little
more
time
before
shifting
to
your
topic,
so
I
think
it
is
fine
to
stay
with
that,
a
little
longer
and
so
Theodore.
If
you
think
it
is
something
you
could
demonstrate
briefly,
you
know
the
notion
of
an
atom
I
think
it
would
actually.
B
Be
useful
at
this
point:
okay
I'll
just
see
if
it's,
if
this
works
done,
I
I
agree,
Jimmy
you're
definitely
going
to
touch
on
this.
So
I,
don't
know
whether
I'm
going
to
provide
anything
and
I'm.
Also
seeing
that
my
share
screen
button
from
Zoom
doesn't
do
what
I
expect
so
I,
don't
think
I'm
going
to
be
able
to
share
my
screen
regardless
so
yeah
I
suggest
we
just
keep
going.
E
How
easy
do
we
want
to
make
it
for
closure
users
to
work
because
well
learning?
There
are
many
like
build
systems
like
devstate,
Eden
and
lining
and
I
had
to
learn
about
those
one
going
for
a
database.
I
had
to
learn
about
the
like
three
libraries,
closure.gdbc
and
jdbc
next,
and
that's
a
lot
of
like
learning
to
get
going
with
a
topic
as
simple
as
like
working
with
a
with
some
UI
in
the
web
and
reagent
is
simple,
but
it
still
requires
some
learning.
E
D
I
think
part
of
the
there's
some
there's
typically
some
trade-offs
there,
where,
when
you
simplify
things,
you
often
end
up
with
more
options
which
makes
it
harder
to
learn
and
there's
what
you
try
to
do.
Is
you
try
to
make
simple
things
and
then
you
try
to
find
the
common
use
cases
and
then
have
packages
of
the
simple
things
and
a
lot
of
the
other
ecosystems
have
much
bigger
communities,
and
so
they
can
package
the
different
options,
much
more
rightly
because
they
just
have
more
people
working
on
it.
D
So
they
can
and
then
the
other
issue
is
that
when
you
build
things
more
simply
or
when
you
have
more.
D
I
was
going
somewhere
with
this
all
right,
come
back
to
me.
I
will
finish
that
thought.
D
My
coffee
is
still
kicking
in
one
once
goes.
Maybe
somebody
else
can
give
an
answer.
A
Yeah
it
is
such
a
central
question,
so
everything
we're
doing
and
and
yeah
I
think
the
truth
is
we
don't
have
anything
like
shy.
There
are
a
few
things
which
are
interesting
steps
in
that
direction,
but
something
as
complete
this
kind
of
experience
that
you
demonstrated
well,
one
actually
does
not
need
to
know
anything
about
web
development
that
actually
go
very
far
this
way.
That
is
something
that
we
don't
have
incred
ible
at
the
moment,
and
there
are
a
few
interesting
attempts
like
that
area.
I.
D
D
I
think
closure
does
a
good
job
of
making
it
easy
to
make
simple
things,
whereas
other
ecosystems,
don't
necessarily
do
that.
So
basically
you
get
one
framework
or
two
Frameworks,
because
it's
so
hard
to
do
anything
that
basically
everybody
built
on
top
of
react
or
whatever
the
the
main
thing
is
where's
enclosure,
it's
easier
to
make
simple
things.
D
So
there's
not
necessarily
as
much
coalescing
around
one
particular
option,
because
it's
easy
to
recombine
different
pieces
and
there's
this
kind
of
trade-off
between
the
Simplicity,
where
you
can
kind
of
make
recombine
the
pieces
which
gives
you
a
lot
of
flexibility
and
kind
of
ease
of
use,
which
is
basically
a
package
of
these
different
capabilities
into
one
easy
way
to
do
it.
D
D
Think
a
lot
of
other
ecosystems
basically
just
like
they
have
one
option
and
it
does
the
one
and
everybody
kind
of
works
on
the
one
one
framework
and
it's
tough
for
closure,
because
obviously
you
do
want
you,
you
do
need
new
people
coming
to
closure
and
trying
things
but
kind
of
packaging.
Those
common
use
cases
is
still
a
lot
of
work
because
it
takes
a
lot
of
Polish
and
there's
a
lot
of
like
drudgery.
D
That's
not
really
fun
and
without
a
bigger
with
a
you
know,
with
like
a
million
react
developers,
you
can
kind
of
like
go
for
each
use
case
and
like
package
things
together,
whereas
closure
really
succeeds,
you
can
do
the
simple
pieces
and
then
so,
when
there's
something
you
want
to
build,
you
can
often
do
it
in
closure
because
it's
like,
if
there's
a
there's,
a
closure
Library,
you
can
combine
the
different
pieces
and
you
can
make
it
work
just
the
way
you
want,
because
you
have
all
the
different
options
whereas
like
if
it's
all
gone
together,
it's
like
oh,
it
does
90
of
our
wanting
the
last
10
is
impossible
because
it's
like
it's
all
directly
connected
and
kind
of
talking
about
how
you
were
thinking
about
reactivity.
D
There's
the
what
which
is
like
you
have
all
the
different
steps
and
how
they're
all
their
dependencies
they're.
How
they're
connected
so
a
depends
on
B
depends
on
C,
which
may
depend
on
two
different
steps.
So
you
have
the
what
and
you
really
want
to
enclosure
the
way
is
you
really
wanted
that
separated
from
how
so
there's
multiple
ways
to
implement
that
you
can
use
the
watches
that
teodora
has
mentioning,
but
you
know
there's
also.
D
You
could
have
that
same
representation
of
what
the
steps
are
and
their
dependencies
and
have
multiple
ways
to
run
it.
So
you
could
have
it
so
it
runs
stuff
in
parallel,
so
it
runs
some
stuff
on
the
server
and
some
stuff
in
the
client
where
it
creates
a
different
query.
D
Oh
different
plan
for
executing
it
and
then
there's
different
libraries
that
kind
of
help
you
do
that
and
often
it
comes
down
to
just
building
a
graph
and
there's
a
graph
library
that
just
is
generic
and
using
that
graph,
you
can
spit
out
a
plan
that
you
can
just
execute
so
I,
don't
know,
I
feel
like
I'm,
rambling
now
so.
B
Yeah
I
I
want
to
follow
on
on
what
a
lot
of
people
have
been
saying
here.
I
think
one
of
the
challenges,
because
closure
is
so
flexible
and
we
want
there's
a
lot
of
us
that
value
that
flexibility
and
that
composition
and
there
is
to
choose
to
do
they-
make
the
easy
thing
where
so
many
people
that
have
self-selected
into
closure
are
reluctant
to
cut
off
the
paths
that
are
necessary
to
make
the
easy
thing
like
design
is
choice
right.
B
You
have
to
make
a
choice,
and
a
lot
of
us
are
saying
well
I
want
those
options
available
and
being
able
to
own
that
design,
choice
and
say
look.
This
is
what
I
want
to
accomplish
and
and
not
necessarily
feel
like.
You
need
to
apologize
for
that
you're
not
going
to
be
everything
to
everybody,
that's
what
the
general!
That's!
What
closure
the
language
and
the
ecosystem
is
for
like
saying
you
have
a
shiny
application.
Sorry,
but
now
the
pun
on
shiny
is
making
me
smile.
B
The
the
use
case
for
shiny
is
incredibly
valuable
right.
It's
not
going
to
be
everything
to
everybody
and
to
say
look.
This
is
what
we're
doing
and
for
both
for
people
on
the
outside
saying
I
want
all
of
this
configuration
that
can
be
really
hard
for
a
developer.
To
say:
look,
that's
actually
just
not
what
I'm
trying
to
do
here.
I
recognize
what
you're
trying
to
do.
B
It's
not
actually
part
of
our
project
and
navigating
that
is
difficult,
but
I
think
to
have
a
successful
I
would
actually
call
shiny
more
of
an
application
as
opposed
to
a
framework
or
like
shiny
itself
being
an
application,
because
it's
got
so
many
design
choices
already
made
in
it.
I
think
that's
perfectly
valid
and
just
owning
that
and
saying
hey.
This
is
what
we've
decided
we're
going
to
do.
B
We
recognize
these
other
trade-offs
being
upfront
and
honest
about
them
and
saying
yes,
this
is
what
we're
doing
and
we're
going
to
do
an
excellent
job
at
it.
So
that's
my
my
take
on
the
whole,
we
need
both
and
it's
not
one
or
the
other.
It's
like.
No.
We
got
to
recognize
that
there
are
both
use
cases
I'm,
seeing
the
same
place
in
the
note-taking
community
right
now,
it's
like!
Oh,
we
want
to
do
all
of
these
things.
It's
like
none
of
you
are
good
at
anything
in
particular.
B
A
F
Yeah,
maybe
Theodore's
presentation
on
atoms
will
make
a
bit
more
sense.
Having
seen
a
closure
script
application
and
I
I,
don't
think
I
can
explain
in
detail
the
the
internals
of
how
how
close
your
scripts
handles
tracking
change
of
state,
so
I
I
it'll
be
interesting
to
hear
teodor
go
into
that.
C
F
Yeah
I'm
I'm
a
beginner
with
closure
and
closure
script
wanting
to
learn
about
how
to
how
to
program
with
with
both
I
I
hadn't
previously
had
any
experience
with
closure
script
before
I
started.
Putting
this
this
app
together,
I.
F
Yeah
I
I
thought
this
was
a
good
that
the
motivation
to
create
this
thing
was
to
to
explore
the
ideas
that
I'm
learning
about
in
in
relation
to
Bayesian
statistics,
where
I'm
taking
part
in
a
study
group
with
which
Danielle
set
up
where
we're
going
through
the
wonderful
book.
Statistical
rethinking,
which
presents
Bayesian
approach
to
a
very
practical
Bayesian
approach
to
statistics
and
I
thought:
I'd
kill
two
birds
with
one
stone:
I'd
I'd
use
this
as
a.
F
Use
this
as
a
project
use
I
I
thought
I'd
create
this
application
to
kind
to
visualize
some
of
the
ideas
that
I
was
learning
about
to
as
an
opportunity
to
to
learn
more
about
closure
script
as
well
as
to
kind
of
cement.
What
I
was
learning
from
about
Bayesian
statistics.
F
Walk
you
through
what
I've
done
here
in
this
this
app
I.
This
is
this
is
closure
script
app
using
reagent.
F
F
F
F
I
wanted
to
kind
of
to
to
help
with
my
own
intuition,
of
of
how
of
of
how
the
space
in
inference
works.
That.
F
With
each
with
each
sample,
oh
yeah,
I,
don't
know
how
to
how
far
to
go
into
explaining
base
theorem
I'm,
not
gonna,
add
I,
don't
think
that's
the
place
for
this,
but
yeah
I
I'm,
not
gonna,
try
and
explain
what
you're
it's
too
much
of
what
you're
seeing
here.
I
I.
Don't
think
you
want
an
explanation
of
a
base
yeah,
but
it's
not.
C
C
F
These
are
the
these.
The
this
is
the
evidence
that
the
that
has
gradually
been
introduced,
and
we
see
the
calculations
going
on
in
real
time
and
and
we
we
visualize
with
graphs
our
changing
knowledge
of
the
world.
From
from
these
series
of
samples.
F
I'm
using
math
Jacks
here
and
you
can
see
it's
kind
of
fun
to
to.
F
To
see
the
the
calculations
update
as
we
we
take
one
sample
per
second,
we
can
speed
that
up
just
for
fun.
You
know
to
five
samples
per
second.
F
All
of
the
calculations
there's
no
the
no
service
side
to
this.
This
is
all
all
of
these.
Distributions
are
being
calculated
as
we
watch
in
in
the
browser.
F
As
I've
been
working
through
this
statistical
rethinking
book
I.
F
Upgraded
further
visualizations
of
of
the
calculations
that
we
we've
been
talking
about,
the
sampling
from
the
posterior,
taking
samples
from
our
posterior
to
to.
F
To
to
understand.
F
The
the
model
of
the
world
that
we
we
built
up
from
this
first
calculation,
that
goes,
we
go
on
to
the
to
a
second
calculation,
analyzing
analyzing.
What
we
found.
F
A
more
ambitious
visualization,
showing.
F
Of
two
parameters
at
once
of
of
the
the
mean
and
the
standard
deviation,
the
relative
likelihood
of
the
mean
and
standard
deviation
of
a
set
of
data
based
on
samples.
F
There
are
these
graphs
are
we're
using
Vega
the
Vega
likes
Library,
which
is
I,
think
it
takes
its
inspiration
from
ggplucks
the
the
grammar
of
Graphics
in
in
ggplot,
the
the
Vega
lights.
Here's
a
similar
grammar
Graphics
approach,
but
the
the
graphs
are
described
in
in
Json
in
a
Json
data
structure,.
F
And
that's
developed
by
Washington
State
University.
They.
F
The
they've
they've
developed
this
Library.
F
The
UI
of
this
is
is
prettified
with
by
using
semantic
UI
components
which.
F
Which
give
me
some
nice
CSS
styling
for
from
my
page.
C
C
F
F
So
let
me
show
you
the
codes
that
produces
this,
this
application.
F
Oh,
have
you
any
questions
about
any
questions
so
far.
F
F
And
close,
the
script
allows
us
to
do
because
it's
a
functional
programming
language
as
I
was
saying
earlier.
I
really
like
this
concept
of
separating
out
your
state
and
I.
Think
that
the
the
storage
of
the
the
memory,
I
guess
I
think
of
it,
is
the
memory
component
of
your
application.
The
the
thing,
the
the
parts
of
your
application
that
can
that
store
that
that
that.
F
That
can
change.
We
separate
out
the
the
state
of
the
application
that,
for
this
tab,
that's
all
at
the
top
here.
These
are
the
the
only
parts
of
the
the
only
moving
parts
of
the
application.
F
And
the
HTML,
the
JavaScript
is
all
changes
over
time,
because
the
the.
F
Are
processing
this
this
Changing
State,
so
we
we
have
state
and
then
we
have
the
the
ram
I'm
sure
other
people
could
put
this
better
than
me,
but
we
have
state
and
the
and
the
the
functionality
to
transform
data
separated
into
two
two
areas.
F
But
that
allows
us
to
because
the
state
is
is
kind
of
siled
like
this.
F
And
there's
these
atoms,
as
Theodore
said
we
can,
we
can
track
the
changes
of
these.
These
atoms.
F
We're
able
to
that
not
the
compiler
I
I
misspoke
earlier,
but
the
the
library
is
able
to
to
know
which
are
the
reactive
parts
of
the
which
are
the
parts
of
the
the
page
that
change,
because
they're
they're
taking
these
this
state
as
input.
F
F
Want
to
start
at
the
bottom
here
with
this,
this
page
function
is
the
the.
F
So
reagent
has
this
strange
or
interesting
syntax,
where
you,
your
your
function,
returns
this.
This
is
called
hiccup.
This
array,
nested
array
of
arrays,
that
that
declare
the
the
HTML
of
your
page.
F
F
C
F
This
is
a
a
reagent
cursor
that
that
is
referencing
the
state
that
that
we
declared
at
the
top
of
the
page.
F
On
or
show
a
particular
part
of
the
page.
F
And
the
the
reagent
Library
knows
that
when
this
this
part
of
the
atom
changes
that
this
HTML
part
of
this
HTML
needs
to
be
re-re-rendered,
so
I
think
what
it
does.
Is
it
it
re-renders
the
HTML
and
decides
what
parts
need
if
there's
differences
and
if
the
what
parts
need
changing
I'm,
not
completely
clear.
F
F
And
have
the
HTML
output
dependent
on
the
these
atoms
and
when
you
change
these
atoms,
the
then
the
the
HTML
is
just
automatically
re-rendered
for
you
and
that
that
goes
also
for
these
graphs.
They're.
F
F
Yeah,
you
see
all
over
the
page.
I've
got
references
to
this
this
atom,
so
here,
for
example,
if
we
haven't
had
an
depending
on
how
many
samples
we've
taken
already
I'm
changing
the
which
buttons
are
displayed.
F
F
F
Is
there
anything
you
you
would
like
me
to
to
cover
I've
I,
think
I'm,
pretty
much
done,
I
just
wanted
to
briefly
show
you
show
you
my
code.
A
Yeah
so
I
think
I
think
it's
a
way
to
get
a
little
taste
of
this
project
which
is
going
on,
and
we
will
hear
more
about
it
shortly
because
you
keep
creating
those
animated,
interactive
notebooks
and
maybe
maybe
we
should
mention.
F
That's
I
can
tell
you
where
we
I'm
I,
think
you're
gonna
you,
you
were
going
there
Danielle
that
we're
thinking
about
trying
to
make
a
a
bridge
between
closure
and
and
stand
so
that
we
can
so
that
we
can
do
Monte,
Carlo
Markov
chain
analysis
in
closure,
yeah.
A
And
that
really
belongs
to
another
discussion
and
possibly
another
group,
but
for
now
we
could
just
mentioned
that.
A
Well,
this
is
something
that
JB
Jamie
has
been
creating
in
this
joint
Pro
Community,
which
is
polyglot,
Community,
a
community
of
different
programming
languages,
meeting
together
and
discussing
patient
statistics
and
Jamie
has
been
deriving
forth,
they're,
actually
creating
so
much
content
and
encouraging
everybody
to
to
learn
more
and
imagine
how
things
could
be
visualized
and
understood
in
visual
ways,
and
it
is,
these
plots
are
pretty
inspiring
and
you
know
in
being
able
to
actually
grasped
closure,
script
and
patient
statistic
at
the
same
time
and
actually
drive
this
community
to
imagine
those
those
directions
and
so
Vicky.
A
F
A
B
Yeah,
so
I,
unfortunately
have
to
sign
off.
A
But
some
other
time,
thank
you.
B
Thank
you
so
much
to
Jamie
and
and
Adam.
It
was
really
great
to
see
the
different
approaches
and
the
kind
of
the
easy
approach
to
get
started
with,
and
the
really
flexible
approach
that
Jamie
showed,
where
he
kind
of
can
change
whatever
he
wants.
A
Yeah,
so
so
pretty,
thank
you
so
much
Jamie
we
were
seeing
these
two
ends
as
as
Theodore
mentioned
it,
and
we
will
keep
learning
I
think
about
the
Arctic
system.
There
is
hope
to
have
a
session
about
this
cuarto,
instead
clearance
programming
framework,
which
is
common
in
the
r
ecosystem,
and
maybe
Kira,
would
like
to
comment
about
it
today
or
some
other
time
and
in
general,
we'll
keep
learning
about
other
ecosystems
and
does
anybody
have
any
comments
or
question
about
the
whole
session
if,
before
we
end
the
official
part.
A
E
I'd
like
to
say
thank
you
Danielle
for
the
opportunity
to
speak
today.
It
was
really
great
getting
to
share
my
our
experience
with
the
closure
community
and
seeing
like
the
different
extremes
of
High
customizability
and
the
ease
of
use
afforded
by
R,
and
it's
a
much
larger
ecosystem
and
I.
E
Think
there's
a
lot
to
be
thought
about
in
terms
of
like
maybe
introducing
different
layers
or
levels
of
easiness
to
using
closure
to
create,
maybe
dashboards,
maybe
web
applications
for
visualization
and
then
having
the
ability
to
remove
the
layer
and
expose
the
code
and
have
that
be
customizable.
There
is
a
lot
more
to
be
discussed
and
I
am
enjoying
the
Journey
of
learning
about
closure,
the
ecosystem
and
all
of
this
thank.
F
Yeah
I'd
like
to
thank
Danielle
as
well
for
organizing
all
the
organizing
he
does
all
the
different
groups.
He
he's
involved
in
facilitating
yeah
and
thanks
for
listening
to
my
presentation,
cheers.