►
From YouTube: Clojure visual-tools meeting 8: data cookbook, goldly studio, re-frame state management
Description
In this monthly meeting of the Clojure visual-tools group (June 3rd, 2022), we had a few updates about ongoing projects.
Summary: https://clojureverse.org/t/visual-tools-meeting-8-summary-video-data-cookbook-goldly-studio-re-frame-state-management/
Zulip topic thread: https://clojurians.zulipchat.com/#narrow/stream/313390-visual-tools/topic/meeting.208
A
Hello,
this
is
another
meeting,
hello,
hello,
another
thinking
of
the
visual
tools
group
and
today
we
are
kira
and
vincent
and
danielle,
and
maybe
somebody
will
join
us
and
I
think
each
of
us
has
some
updates
to
share
things.
We
are
exploring
and
planning
and
hoping
to
do
so.
Maybe
the
outline
for
today
is
kira
will
tell
about
a
beginning
of
a
project
of
writing
a
closure
data
cookbook,
which
already
has
some
outline
that
looks
promising
and
then
vincent
will
tell
about
explorations
and
reflections
of
state
management
in
the
client
in
reagent
and
refrain
right.
A
And
then
I
danielle
will
tell
a
bit
about
trying
to
learn
the
r
framework
called
html
widgets
and
trying
to
use
it
from
closure
and
learn
from
it.
Yeah
so
coming
back,
floyd
just
joined
us
and
floyan
will
also
share
with
us
some
ideas
and
progress
with
the
goldly
project
and
I
think,
with
the
studio
part
of
the
golde
project,
which
is
very
exciting,
a
new
way
of
creating
notebooks
and
yeah.
So
we
will
begin
with
kira's
presentation.
C
Okay,
yeah
so
hi,
I'm
kira
yeah,
as
daniel
mentioned.
I
am
hoping
to
start
this
project
kind
of
a
collection
of
resources
for
people
trying
to
do
data
science
and
enclosure
so
very
similar
to
things
that
exist
for
other
languages
that
are
more
common
or
typically
like
thought
of
as
data
languages
like
python
and
r.
C
Basically,
the
idea
is
to
just
kind
of
have
a
big
kind
of
list
or
like
an
online
book
kind
of
format,
for
with
code
examples
like
actual
things,
you
could
copy
and
try
doing
common
tasks
in
data
science.
So
there's
a
link
there
in
the
chat
I
mean
I'll
repost
it
I'm
not
sure
if,
when
florian
joined,
if
you
can
see
like
previous
messages
or
not,
I
don't
know
how
that
works
in
zoom,
but
anyway
there's
an
outline
there.
C
This
is
very
like
just
getting
started.
I
don't
have
like
this.
Isn't
my
full-time
thing,
unfortunately,
and
I
don't
know
how
long
it'll
take
to
actually
get
done,
but
this
is
the
dream,
so
the
idea
is
just
for
this
to
be
a
place
where
somebody
can
be
like.
How
do
I
do
this?
How
do
I,
you
know,
read
a
csv
and
rearrange
all
the
things
or
how
do
I
manipulate
the
rows
or
collect
this,
or
how
do
I
make
that
kind
of
chart,
or
this
kind
of
graph
and
yeah?
C
The
format
ideally
will
be
like
I
was
thinking
it
would
be
cool
to
have
those
little
buttons
that
we
can
say
like
try
this,
and
I
don't
know
if
there's
one
for
closure
that
exists,
but
like
sort
of
the
what
you
would
see
in
like
code
pen
for
css
examples
or
like
stack
blitz
for
other
languages,
I
haven't
looked
into
it
too
much,
but
I
was
thinking
that
would
be
kind
of
cool
so
anyway
yeah.
I
guess
this
outline.
This
big
massive
list
of
things
is
kind
of
where
it's
at
right.
C
Now,
there's
a
few
sections
at
the
bottom,
I'm
not
really
sure
where's
the
best
place
to
include
them,
but
basically
yeah,
I'm
just
at
the
point
of
like
building
the
outline
and
flushing
out
the
idea
and
I'm
happy
to
yeah
take
as
much
feedback
from
from
anybody
who
has
any
interest
in
this
as
possible.
So
you
know,
I
know,
there's
I'm
kind
of
on
the
fence
like
there's
a
lot
of
sex,
there's
a
couple
sections
that
could
really
just
be
maybe
separate
like
the
visualization
stuff
or
the
statistics
stuff.
C
I'm
not
sure
how
much
is
useful
or,
like
I
don't
know,
I
don't
want
to
say
like
correct
but
like
correct
to
include
here
or,
if
there's
things
you
think
are
missing.
Like
last
time
I
talked
to
daniel,
he
pointed
out
made
a
really
good
point
about
the
lib
python
work.
That's
been
done
in
closure
to
allow
people
to
use
python
libraries
directly
from
their
closure
code.
C
A
C
Oh
no,
okay,
there
we
go
sorry
yeah,
that's
a
good
idea,
so
here's
the
the
links.
So
this
is
right
now
it's
just
a
repo
in
the
cyclos
organization,
so
it'll
it'll
stay
public
and
yeah.
So
I
guess
you
know
people
can
have
a
look.
Let
me
know,
let
me
know
what
you
think
or
if
you
think,
there's
anything
that's
missing
or
too
much
or
too
little
or
whatever.
Right
now.
I
just
had
a
couple.
C
C
You
know
changing
formats
and
getting
data
into
like
the
shape
that
you
want,
and
then
I
think,
probably
will
include
a
section
of
visualization
like
this
could
be
a
whole
separate
project,
but
I
don't
know
if
there
would
be
any
big
benefit
may
as
well.
Just
like
add
it
to
this
one
whenever
I
get
around
to
it
and
then
some
statistics
stuff,
I'm
not
sure,
excuse
me
again
this.
C
This
could
be
like
an
entire
like
lifetime
of
learning
on
its
own,
but
I
was
thinking
of
just
including
more
like
examples
like
actual
code
examples,
not
so
much
like
teaching.
You
know
the
idea
wouldn't
be
to
write
like
a
statistics
textbook
about
like
how
to
use
these
methods
and
when
you
would
and
whatever
it'd
be
more
for
like
practitioners
who
already
know
what
they
want
to
do,
and
they
just
don't
know
how
to
do
it
in
closure.
C
If
that
makes
sense-
and
then
these
are
some
sections
just
that
I
thought
would
be
important
to
include,
but
I'm
not
quite
sure
where
they
would
fit
yeah-
maybe
just
like
in
their
own
section
or
something
so
anyway-
and
this
is
there's,
there's
a
lot
more
resources,
but
these
are
some
for
now
that
I
didn't
want
to
lose
track
back
of
yeah.
A
Yeah,
thank
you
so
much
and-
and
you
know
I
think
there
is
this-
I
I
believe
this
common
idol
understanding
that
something
like
that
is
something
that
we
need
very
much,
and
maybe
florian
will
comment
in
a
moment
because
I
think
floyan
has
been
thinking
about
it
and
also
thinking
about
the
tooling
side
of
what
would
be
a
good
piece
of
tooling
for
maintaining
something
like
that,
and
maybe
that
is
something
we
could
discuss
right
about.
What
tooling,
what
would
be
the
desired
tooling
to
support
such
kind
of
project
right.
D
I
think
the
part
on
statistics
is
extremely
important,
because
the
only
the
only
collection
currently
where
you
have
statistics
in
closure,
where
you
have
examples
and
then
a
sort
of
organized
set
of
statistics-
is
encounter,
which
I
think
is
today
completely
outdated,
and
there
is
much
more
available
now
via
the
camera
and
fast
math,
but
especially
the
statistics
part.
D
There
is
absolutely
nothing
documented,
so
I
wouldn't
even
know
where
to
look
for
anything.
So
that's
I
think
it's
very
important.
What
I
think
is
the
other
extremely
important
thing.
Whatever
you
have.
D
Of
course,
it
needs
to
have
some
sort
of
nice
organization,
of
whatever
navigation
and
the
table
of
content
and
whatnot,
so
that
somebody
can
just
browse
with,
but
the
part
of
actually
being
able
to
evaluate
whatever
snippet.
You
want
to
evaluate
that.
That
is
really
important
as
well.
D
B
D
D
I
had
this
the
last
time
I
was
this
week
with
the
psychology
ml
notebooks,
where
there
was
some
some
important
functions
that
were
sort
of
unaccessible
and
then
it
that
this
is
where
it
then
takes
a
lot
of
time
till
you
can
use
it.
D
May
I
suggest
something:
could
I
either
instruct
yokira
or
you
danielle,
on
how
this
would
what
I
have
on
the
golden
side
in
this
regard,
what
could
be
useful.
A
D
D
Essentially
it's
a
quicker
syntax
to
run
shadow
cljs,
then
there's
goldli,
which
basically
creates
the
the
sci
interpreter
and
has
an
extension
manager
where
you
can
run
where
it
can.
You
can
automatically
discover
new
modules
and
it
has
the
client
server
interaction,
and
on
top
of
that,
I
made
a
configuration
that
I
call
goldly
docs,
which
is
just
a
default
configuration
of
libraries
that
get
included
to
goldli
docs.
So
all
the
ui
renderers
it
is
in
the
gold
repo
yeah.
D
D
And
then
it'll
go
in
studio.
I
just
did
the
same
approach.
I
just
added
dependencies
to
all
kind
of
closure,
libraries
that
are
relevant
for
data
science
and.
D
D
A
D
D
And
so
yeah
sour
studio.
D
So
let's
say
yeah
ds,
vega,.
A
E
B
D
E
C
C
Be
able
to
take
like
one
of
the
pages
like
if
you
were
looking
at
looking
at
it
as
sort
of
like
a
book.
Almost
you
could
take
one
of
the
pages
and
just
run
that,
like
yeah
machine
or
maybe
even
like
in
in
some
like
cloud
ide
or
something
I
think,
it'd
be
really
cool
to
have
like
a
little
button
where
it
says,
like
you
know,
run
this
in
like
wrapable
it
or
whatever.
You
could
just
click
that,
and
it
would.
E
C
E
C
Yeah,
so
this
is
really
cool.
This
is
really
really
cool
because
yeah,
like
I
think,
basically
what
I
was
picturing.
It
was
like
kind
of
yeah
like
a
set.
A
series
of
notebooks
almost
so
like
the
the
project
would
have
like
a
table
of
contents
on
the
side
or
something
like
that.
But
then
each
page
would
be
a
fully
functioning
notebook
that
you
could
actually
just
copy
and
run
yourself.
E
E
A
D
C
D
So
what
do
we
have
here?
We
have
here
the
red
thing
studio.
That
is
what
I
call
a
notebook
collection.
A
D
A
Yeah,
so
we
are
in
the
context
of
the
studio
called
data
set.
Is
it
correct.
A
D
Yeah
swast
studio,
dataset.
D
C
C
D
This
this
uses
a
library
called
r
eval
that
stands
for
reproducible
eval,
which
is
producing
reproducible,
notebooks
uh-huh.
But
let's,
let's
perhaps
I'll,
give
you
a
walkthrough.
Let's
perhaps
stay
inside
the
studio
for
a
moment,
could
you
open
up
in
emacs?
D
Where
is
it
yeah
go
to
go
on
the
top
more
up?
Please.
D
So,
where
we
are
studio,
yeah
and
then
resources.
D
D
D
So
stop
stop
so
you
see
here
something
that
says:
rr
eval
a
little
bit
more
on
the
top
yeah,
so
that
so
here
I
define
I
say:
okay,
save
my
eval
notebooks
to
the
folder
called
our
document
and
serve
them
via
the
web
server
on
the
on
the
relative
path,
api,
our
document
file,
and
then
I
want
to
have
one
collection
of
notebooks,
which
I
want
to
call
studio.
D
D
D
That
is
so
when
you
eval
the
namespace,
this
namespace
yes
correct
when
this
namespace
gets
evolved.
D
Whenever
you
get
an
eval
output,
this
is
run
via
the
evil
output
to
to
hiccup
renderer,
and
that
output
is
then
saved
into
this
notebook.idle
file.
D
D
And,
and
so
if
you
go,
if
you
go
one
more
one,
second,
let
me
see.
A
That
is
the
collection
of
notebooks.
You
were
talking
about
right,
which
we
saw.
E
D
D
So
what
this
will
do
is
the
configuration
has
defined
the
collection
of
notebooks
and
it
has
defined
the
the
paths
where
notebooks
evolved.
Notebooks
should
be
stored
to
so
it
will
now
pass
into
the
evaluator
for
each
document
and
yeah,
and
then
it
will
will
stop.
D
D
D
E
D
Possibly,
I
think
I
said
well
go
go
to
the
go
to
the
the
command
line
where
you
started.
That.
D
And
let's
go
to
the
main
route.
D
D
Yeah,
so
what
is
the
idea
of
this?
Well,
let's,
let's,
let's
make
a
change,
perhaps
let's
call
it:
let's
change
the
title
from
stock
price,
let's
just
remove
the
the
the
price
of
this.
You
know
in
the
vega
time
series,
let's
just
change
the
title:
a
little
bit.
A
Oh
yeah,
yeah
yeah.
A
B
B
A
Yeah,
so
maybe
floyd.
Maybe
it
is
a
good
time
to
kind
of
converge
and
maybe
conclude
this
part,
and
then
we
can
discuss
later
and
we
want
also
to
discuss
the
cookbook
outline
further.
I
guess
so
is
it?
Is
there
anything
else
you
want
to
say
about
this
now
or
show
anything
else
or
directly
somewhere.
D
So
that's
that's
pretty
much
it
so
for
my
own
work,
what
I
need
all
the
time
is.
D
D
D
D
D
D
To
do
you
could
go
so
that
this
entire
browser?
This
is
like
a
200
line,
sci
closure
script
code
that
you
could
change
and
do
something
entirely
different
to
to
to
do
a
dynamic
table
of
content
or
to
make
only
certain
modules
available
or
whatever
it
doesn't
matter,
because
you
have
the
full
closure
script
that
closure
script
brings,
but
completely
dynamically
interpretable
via
the
sci
interpreter.
A
Yeah
yeah,
really
cool,
and
maybe
since
we
are
already
here
maybe
another
detail
we
could
mention-
is
that
when
you,
when
you
have
something
to
be
visualized
here
in
your
notebook,
you
don't
need
to
say
this
is
vega.
A
Somehow,
here
on
the
user
side
notebook,
it
is
already
known
that
this
function
would
return,
something
which
is
vega,
that's
correct,
correct
and-
and
these
are
the
details
that
you
know
some
of
us
care
about
a
little
bit,
because
we
are
wondering
okay,
what
would
happen
if
a
user
takes
this
and
wishes
to
try
it
in
another
tool?
Would
it
be
cut
cut
and
paste
friendly
as
karsten
calls
it
right,
and
maybe
those
details
are
something
we
are
hoping
to
discuss
more
right.
C
E
A
A
Show
vega
is
just
a
way
to
to
make
sure
you're
using
this
element
on
the
client
side.
This
con
vega
component
on
the
client
side,
yes
yeah,
and
these
are
the
details
that
you
know
we
care
about
a
little
bit
and
we
continue
discussing-
and
you
know,
in
my
opinion,
this
is
maybe
one
of
those
things
that
we
should
figure
out
before.
We
are
hoping
to
to
make
any
cookbook
public
right,
because
that
is
what
would
make
it
cut
and
paste
friendly
or
not
yeah.
D
D
Or
you
do
the
same
on
on
what
is
it
skittle,
for
example,.
D
D
A
D
Oh,
you
need
to
you
need
to
stop
the
other,
the
other
rebel
that
runs
the.
A
D
D
A
A
D
So
I
think
this
this
organization,
how
I
did
it
in
studio,
I
think
that's
the
way
how
kira's
cookbook
should
be
built,
where
perhaps
you
have
multiple
depths
eaten
projects
each
which
their
own
dependencies
and
in
there
the
different
name
spaces.
That
should
be
the
notebooks.
D
D
Whatever
makes
sense,
if
you
want
to
use
it
or
you
could
change
different,
you
could
include
different
sub
projects
on
demand,
which
perhaps
sometimes
you
don't
want
to
include.
D
So
can
you
go
to
the
really
quick
to
the
readme
of
studio.
A
Maybe
later,
I
guess
sure
sure
yeah,
let
us
maybe
maybe
a
zoom
out
for
a
moment
and
it
would
be
great
to
dive
in
later
sometime
remain,
and
thank
you
so
much
for
this.
So
we
are
now
one
hour
in
the
meeting
and
getting
late
on
some
places
and
then
let
us
think
maybe
maybe
what
we
could
do
is
to
zoom
out
back
to
the
cookbook
and
see
if
kira.
A
C
It
good
yeah,
yeah
sure
that
makes
sense,
yeah
so
yeah.
I
guess
there's
really
there's
like
two
parts:
there's
the
actual
content
of
the
sort
of
documents
or
whatever,
and
then
there's
yeah,
like
you,
said
all
this
tooling
and
how
we're
gonna
actually
publish
it
so
to
speak
so
yeah,
I
don't
know,
I
think
I
don't
know
if
I
have
any
new
thoughts
like
really
settled
yet,
but
I
think
this
is
really
cool.
This
is
basically
like
the
goal.
What
I
want
to
do
is
is
yeah
have
some
way.
C
So
if
you
imagine
you're
like
reading
a
page
reading,
one
of
the
notebooks
that
you
could
just
there
would
be
a
little
button
at
the
bottom
that
you
could
click
to
say
like
open
this
up
in
you
know
our
studio
or
whatever,
like
some
hosted
version
of
it,
so
that
you
can
like
try
it
out,
just
as
you
see
it
there
and
then
also.
Ideally,
that
would
help
us
have
like
examples
that
actually
work.
C
That's
something
else
that
I'm
trying
to
figure
out
is
like
how
to
somehow
test
things,
or
I
don't
know
if
there's
sane
ways
to
automate
it
or
what.
But
ideally
this
book
will
be
valid
for
more
than
like
six
months.
You
know
like
as
things
change,
the
goal
is
to
be
able
to
update
things
and
then
have
some.
C
I
don't
know
exactly
what
it
would
look
like,
but
some
sort
of
test
suite
to
check
that
the
examples
are
still
valid
and
still
work,
because
that's
annoying
too
right
when
you
copy
a
project
like
you
said,
and
then
it
doesn't
run
and
there's
something
broken
or
doesn't
work.
So
that's
ambitious,
but
I
don't
know,
that's
that's
what
I'm
thinking
of
right
now
so
yeah.
So
there's
that,
but
then
also
yeah.
I
don't
know
I
haven't.
C
I
don't
know
exactly
what
tool
to
use
yet
for
actually
sort
of
building
the
like
website,
like
the
hd
html
artifact,
including
all
the
chrome,
like
all
the
buttons
to
switch
between
pages
and
the
table
of
contents
and
the
little
place
to
leave
comments
on
github
and
whatever.
So
I
think,
there's
a
lot
of
cool
stuff,
there's
a
lot
of
really
really
cool
tools
available
now
different
notebooks
and
stuff.
C
So
I
have
to
figure
out
what's
the
best
way
to
put
them
all
together
into
like
a
final
kind
of
you
know,
publishable
thing
on
the
internet,
basically
so
but
yeah
so
anyway.
I
guess
all
that
to
say
sorry,
I
have
a
fussy
puppy
in
here.
You
know
if
I'm
certainly
open
to
feedback
on
the
the
contents
of
the
book,
so
the
the
outline
and
the
topics
and
whatever,
but
also
yeah.
C
If
anyone
maybe
in
the
coming
weeks,
I
might
try
to
put
together
some
sort
of
prototype
of
what
I'm
thinking
the
website
might
look
like
or
how
it
might
work.
C
And
then
we
could
see
how
that's
going
to
work,
because
I
think
what
I'm
trying,
what
I'm
picturing
is
like
sort
of
like
a
documentation
website,
but
with
the
like
closure,
notebooks
kind
of
like
embedded
where
the
content
would
go
and
then
that
way
that
that
closure
code,
the
actual
contents
of
the
the
examples
would
be
like
just
a
closure:
namespace,
that's
copyable
and
executable,
like
just
as
is,
but
then
somehow
that
would
be
like
embedded
in
a
page
with
a
bunch
of
other
kind
of
stuff
around
it.
C
So
yeah,
that's
that's
what
I'm
thinking
right
now.
Nothing
actually
exists,
but
maybe
we'll
try
to
start
prototyping
some
stuff
in
the
coming
weeks.
A
B
Yes,
yes,
I'm
going
to
share
my
screen.
Let
me
find
where
it
is.
B
B
So
normally
you
should
be
able
to
see
locksec
in
front
of
you.
Is
this
the
case.
A
B
Yes,
okay,
so
what
happened
is
that
recently?
I
I
was
wondering
about
what
we
could
do
to
reduce
the
need
to
have
for
reframe
users
to
use
a
reagent
atom
in
their
view
and
instead
of
having
the
data
in
the
database
of
the
front-end
database,
and
I
was
wondering
if
a
lot
of
people
were
like
me
and
we're
using
quite
often
some
reagent
atom.
So
I
made
a
pull
on
sorry
oops.
B
I
made
a
small
pool
on
twitter
and
it
turns
out
that
on
that
pool,
if
you
remove
people
who
are
not
reframe
users,
if
you
remove
people
who
did
not
have
the
the
chance
to
use
a
reagent
atom
because
they
didn't
know
what
it
was.
There
is
a
huge
majority
of
of
reframe
users
who
just
use
an
atom,
sometimes
and
the
reason
why
they
do
that.
B
I
try
to
list
to
analyze
the
comments
and
list
a
little
bit
of
reasons.
Sometimes
they
do
that,
because
the
lifetime
of
the
data
they
put
inside
the
the
reagent
at
atom
is
matching
the
lifetime
of
the
component.
So
when
the
component
is
created,
the
state
becomes
needed
and
when
the
component
doesn't
exist,
the
state
is
not
no
longer
needed.
B
Another
reason
is
that
it's
easier
to
duplicate
the
state
when
you
have
multiple
instances
of
the
same
component,
so
it
says
instead
of
having
a
mechanism
to
have
a
kind
of
identifier
for
component,
and
then
you
store
the
associated
data
in
the
update
base
under
a
specific
id.
Then
here
you
just
have
the
the
atom
duplicated
inside
the
component,
so
it's
easier
to
duplicate
like
this.
Another
reason
was
to
handle
the
state
when
easily
when
you
test
things,
but
I
think
there
is,
there
is
a
version
of
free
frame.
B
Where
things
are
you
can
you
can
provide
a
global
database
in
a
functional
way
so
that
it's
not
really
a
global
state
in
your
program?
So
that
reason
to
me
is
not
so
important.
B
Another
reason
is
that
it
encapsulates
mutable
state
inside
your
component,
so
that
from
outside
of
the
component,
you
can
just
forget
about
this
state.
So
it's
kind
of
hidden,
and
so
this
has
to
be.
This
is
related
to
how
the
user
wants
to
describe
their
program
mostly,
and
then
somebody
said
that
it's
simpler
to
write
inside
a
atom,
because
you
don't
have
to
write
a
dispatch
inside
an
on-click
function.
B
You
don't
have
to
write
an
even
handler
that
will
be
triggered
by
the
dispatch
and
you
don't
have
to
write
a
subscription
to
get
the
data
from
from
the
app
db,
so
it
it
makes
it
easier.
But
there
is
an
answer
that
came
back
quite
often
and
an
answer
which
is
interesting
to
me.
It's.
They
say
that
it's
better
for
performances
and
I
was
wondering
okay.
Then
there
must
be
some
cases
where
users
really
use
an
atom
because
of
the
performance,
and
maybe
not
really
about
the
other
reasons.
B
So
they
have
the
same
cost
and
in
fact,
from
the
point
of
view
of
the
component.
What
I
mean
is
is
that
when
you
derive
a
reagent
atom
inside
the
reagent
component,
what
happened
is
that
the
component
is
re-rendered
when
the
atom's
content
is
changing
and
when
you
derive
a
subscription.
E
B
Reagent
component,
the
component
is
also
re-rendered
when
the
subscriptions
content
is
changing,
so
those
are
very
similar
and
we
can
see
that
it's
just
the
same
trigger.
Probably
the
subscriptions
are
implemented
using
a
reagent
atom,
but
I'm
not
100
sure
of
this.
I
will
need
to
double
check
again
because
from
my
memory
I
think
it
is
but
functionally
they
work
the
same
way
so
in
series.
They
should
have
the
same
cost
now.
E
B
Is
still
a
difference
of
cost,
but
it's
not
in
the
way
that
component
is
refreshed,
it's
more
in
the
way
the
content
is
of
the
item
and
the
subscribe
are
updated.
B
B
B
It
means
that
if
you
have
a
large
application,
where
there
is,
let's
imagine
a
thousand
different
subscriptions
which
which
are
mainly
reading
data
from
the
app
db,
when
I
say
reading
data
means
reading
just
a
little
part
of
it.
Imagine
you
have
a
hash
map
with
a
thousand
entries
and
each
subscription
top
level
subscription
is
reading
one
of
those
entries.
Then
it's
a
it's
a
performance
problem,
because
a
thousand
is
quite
a
lot.
It
could
be
even
more
in
some
cases.
B
So
how
do
we
know
when
a
subscription
value
or
the
content
is
changing?
B
It's
we
call
a
function
on
the
appdb
on
the
the
value
of
the
fdp
and
this
function
is
a
subscription
function,
so
we
we
have
to
call
a
thousand
function
and
sometimes
well
no
most
of
the
time
those
functions
are
just
getters,
so
they
just
look
like
this.
There
is
either
a
get
or
gate
in
on
the
appdb
and
it
returns
a
fragment
of
the
ftp.
B
So
this
is
where
the
performance
cost
comes
from.
Now
how
to
improve
that?
I
have
an
id,
oh
yeah.
The
goal
is
to
have
this
process
fast
enough,
so
that
it
is
not
a
problem
for
some
quick
updates
on
the
ui,
where
you
have
a
user.
That,
for
example,
change
a
text
inside
input
field
and
some
users
can
type
very
fast,
and
you
need
probably
something
like
30
at
least
30
updates
per
second
to
to
react
fast
enough
for
the
user
to
have
a
visual
feedback
of
the
changes.
B
B
Yeah,
that's
what
I
say
here
we
we
should
stop
doing
that
and
in
order
to
accelerate
that,
I
propose
a
solution
in
constant
time,
but
it
means
we
have
to
do
some
changes
in
the
way
we
we
do
things
in
reframe.
B
So
what
we
want
is
that,
since,
let's,
let's
assume
that
all
the
top-level
subscriptions
are
purely
getters,
so
it's
either
a
get
or
get
in,
and
in
that
case,
if
we
want
to
avoid
running
all
of
them
at
the
same
time,
we
we
want
those
some
new
kind
of
subscriptions
where
it
declares
in
advance
what
parts
of
the
adb
it
is
going
to
to
get
when
it
is
declared.
Then
we
can
have
a
system
that
gathers
all
the
declarations
of
all
those
top-level
subscriptions
group
them
together
and
do
something
useful
with
it.
B
B
So
that's
a
new
top
level
subscription
and
when
we
have
multiple
of
them
like
this,
let's
imagine
we
have
a
thousand
of
them.
What
we
can
do
is
group
them
inside
a
large
flat
hash
map,
where
every
key
is
what
a
getter
would
take
and
the
value
would
be
a
reagent
atom
and
like
this.
If
we
have
them
all
in
one
place,
when
we
modify
in
this
example,
a
person
we
can
immediately
find-
and
we
know
which
person
id
it
is,
we
can
immediately
find
the
subscription
which
we
want
to
rerun.
B
So
we
we
have
here
a
constant
access
time
to
the
right
subscription
that
should
be
notified
of
something
that
has
changed.
So
that's
for
the
subscription
part,
but
we
still
have
a
problem.
Oh
wait,
wait!
Wait
there.
There
is
another
thing
I
placed
I'm
still
not
sure.
If
a
flat
hash
map
would
be
better,
we
can
also
have
a
tree
shaped
hash
map.
B
So
if
we
want
to
to
know
which
parts
of
of
the
db
has
changed
currently,
what
happened
is
that
we
have
to
do
a
diff
because
in
in
the
event,
handlers
in
reframe.
B
This
is
how
it
works.
Okay,
here
this
is
how
it
works.
You
have
a
handler
said
person
name,
you
sign
an
event
where
there
is
a
person
id
and
the
name,
and
then
this
is
the
body
of
your
event
handler
and
it
returns
just
a
new
value
for
the
world
database
and
what
has
changed
here
or
do
you
know
that
I
just
modified
the
name
of
a
specific
person?
B
Well,
you
don't
directly
know
you
have
to
do
a
kind
of
data
div
to
see
what
has
changed,
and
that
takes
a
lot
of
time
to
to
find
out
so
another
yeah,
because
the
idea
is
to
find
what
has
changed
so
that
you
can
target
in
constant
time
the
right
subscriptions
which
needs
to
be
recalculated.
B
Even
handler,
which
is
giving
more
information
about
what's
what
is
the
intent
of
the
of
the
programmers
who
implement
the
event
handler,
and
I
propose
this
new
format
where
we
don't
return
a
new
value
for
the
database.
But
we
return
a
description
of
what
we
want
to
change
in
the
database.
B
So
that's
a
different
what
to
say
that
one
is
returning
a
map
of
different
effects
and
in
my
version
here
I
describe
the
change
as
an
effect,
so
here
it
should
be
something
that
represents
association
at
that
place
in
the
database.
B
C
C
It
would
already
accomplish
this.
Yes,
like
kind
of
look
up
what
you're
saying:
that's
really
cool,
that's
really
cool.
B
See
is
this
part
of
the
event
handler
can
already
use
what
exists
in
reframe.
This
part
here
will
have
to
be
modified.
I
will
have
to
make
a
very
specific
type
of
subscription
and
as
well,
there
are
some
subscriptions
which
represent
some
computed
data
where
you
combine
multiple
data
and
get
a
new
one
out
of
it
is
more
like
a
derived
value,
and
I
would
need
to
find
a
way
to
make
it
work
with
this
type
of
with
this
new
type
of
top
level
subscription.
B
But
there's
the
idea
is
that,
even
in
a
large
program
with
a
thousand
entries
at
the
top
level
of
the
updated
database,
this
should
allow
something
to
be
very
efficient.
So
I
will
try
to
prototype
it,
make
a
test
and
and
see
if
it
works,
I
will
plug
it
to
input
field
and
type
as
fast
as
as
I
can
and
see
how
fast
refresh
are
coming,
and
there
are
some
other
interesting
effects
of
declaring
the
changes
like
this.
B
It's
that
there
are
other
areas
inside
the
reframe
app
which
are
doing
a
kind
of
diff
in
order
to
display
everything-
and
here
I'm
talking
about
react-
react
is
using
a
diff
on
the.
What
I
say
is
a
virtual,
dom
and
but
because.
B
What
to
say
if
we
can
find
a
direct
way
to
map
the
changes
that
happens
in
the
subscription
to
changes
that
happens
in
the
virtual
dom,
then
we
can
remove
most
of
the
diff
from
the
rendering
equation.
Maybe
we
can
speed
up.
Our
react
is
working
by
saying
here.
Just
replace
this
value
don't
make
any
div.
B
B
He
will
just
create
a
new
person
component
and
insert
it.
So
that's
one
of
the
things
I
would
like
to
do
in
the
future.
It's
a
little
bit
bypassing
of
the
react
algorithm
in
order
to
make
things
go
faster.
B
So
it's
not
totally
new,
but
the
idea
to
use
it
to
have
a
performance
boost,
maybe
is
new
or
not
so
new.
In
fact,
there
is
another
framework
which
exists
which
is
working
similar
to
that
it's
called
hoplon
hoplon
is
using
a
state
management
library
called
javelin,
which
is
working
directly
with
something
called
cells.
B
They
are
the
same
as
a
reagent
atom,
and
what
happened
is
that
in
javelin
inside
your
even
handler,
you
directly
reference
some
atoms
instead
of
referring
them
through
some
kind
of
identifier
here,
which
is
a
pass
so
yeah,
it's
not
totally
new,
but
as
an
improvement
for
reframe.
Maybe
it's
new.
D
D
B
In
this
case,
it's
not
occurring,
but
it
could
be
it's
just
that
we
can
in
in
the
situation
you
describe.
You
build
a
kind
of
hierarchical
structure
in
order
to
divide
and
conquer.
B
But
in
some
cases
you
still
have
too
much
of
them
at
the
top
level,
and
especially
if
you
have
a
lot
of
components
which
normally
use
a
lot
of
reagent
atom
directly
in
the
component.
If
you
want
to
move
them
all
inside
the
database,
they
will
likely
all
be
at
the
top
level.
So
in
that
situation,
maybe
you
will
not
find
a
way
to
group
them
together
to
reduce
the
number
of
top-level
subscriptions,
and
you
will
not
have
a
good
optimization
in
my
approach.
B
It
is
no
longer
a
problem
as
the
size.
The
number
of
top
level
subscriptions
should
not
be
relevant
because
it
it's
going
to
directly
glide
towards
subscription.
That
needs
to
be
updated
so
in
in
that
aspect,
we
can
skip
directly
to
have
one
entry
that
represents
the
full
pass
and
say
puff,
arrive
directly
on
the
rear
atom
and
do
your
div
here
to
say:
if
this
subscription
has
a
new
value
on
it,.
D
Yes,
I
guess,
if
you,
if
you
would
go
the
route
with
this
sort
of
three
base
subscriptions
in
the
case
of
your
personal
personal
id
example,
if
there
would
be
a
change
to
one
person
or
one
person
added,
then
I
guess
in
the
current
reframe,
all
the
subscription
that
are
based
on
person
would
be
re-evaluated.
B
If
you
have
them
all
at
the
top
level,
yes,
if
you
use
a
kind
of
hierarchical
subscription
systems-
and
you
may
have
one
top
level
subscription
that
get
all
the
collection
of
all
the
persons
together
and
then
another
one
below
that
that
will
listen
to
to
each
individual
person.
B
D
B
Yeah
you
will
avoid
having
to
rerun
all
of
them.
You
will
just
rerun
the
one
that
match
what
you
changed
in
my
version,
but
in
your.
D
That's
correct,
yeah,
you
you're
working
on
a
very
important
point.
I
have
noticed
that
too,
that
reframe
has
problems
with
performance.
D
I
I
was
putting
like
hundreds
of
notebooks
into
reframe
and
I
had
to
stop
that
because
it
went
really
slow
at
some
point.
B
But
the
improvement
has
a
cost.
It
means
that
the
the
way
as
a
even
handler
work
should
be
different,
and
people
will
need
to
get
used
to
that
to
write
descriptions
here
instead
of
having
the
very
convenient
asakus
hokkien.
D
Yes,
what
I
found
is
reframe
makes
components
makes
the
app
instable
insofar
as
if
there's
a
single
function
that
has
a
bug
that
basically
deletes
the
entire
appdb.
D
Then
all
the
components
will
just
no
longer
work
at
all.
That
is
something
you
can
fix
by
by
having
whatever
to
check.
Whenever
is
the
mtp
change
is
valid
or
not,
but
you
still,
you
need
to
do
it.
D
So
I
found
that
that
is
a
problem
in
I
had
a
lot
of
times
and
the
other
thing
is:
if
a
component,
for
whatever
reason,
is
updating
the
wrong
path
in
the
up
db,
this
can
create
a
huge
mess
which
is
difficult
to
sort
out,
so
the
all
the
components
that
work
in
the
same
ftp
need
to
be
very
sympathetic
to
each
other.
Otherwise
you
get
stress.
B
Oh
yeah,
I
see
what
you
mean.
There
is
still
a
way
to
to
find
when
things
like
that
happen.
If
you
have
a
kind
of
endo
system
that
let
you
roll
back
a
few
db
values
before
and
and
have
a
list
of
different
events,
you
can
replay
the
events
and
see
exactly
which
event
destroyed
the
value
of
the
world
database.
It
happens
to
me
on
one
of
my
project
and
that's
how
I
fixed
it.
B
D
Yeah,
that's
that's
necessary,
but
I
find
that
quite
this.
This
makes
a
huge
sort
of
sort
of
setup
to
get
a
reframe
system
working.
It's
way
more
complex
than
a
reagent
system.
B
That
depends
the
point
of
view.
B
Okay,
daniel,
do
you
have
any
question
yeah.
A
This
discussion
is
so
useful
for
me
personally,
as
you
know,
kind
of
a
textbook
look
into
how
things
work
and
also
what
practices
are
common
and
so
really
wonderful,
discussion
and-
and
I
think
this
way
of
being
explicit
about
what
depends
on
what
and
also
being
explicit
about
what
is
changing
and
how
it
also
helps
to
think
about
your
system.
Isn't
it
doesn't.
B
B
I
heard
about
it,
I
think
I
think
I
took
a
look
at
it
a
few
years
ago,
but
it
was
not
what
I
needed
to
use.
B
So
at
that
time
I
wrote
another
library-
and
I
forgot-
oh,
it's
called,
I
think
it's
called
diffuse
diffuse
was
used
to
create
a
data
structure
which
represents
a
diff,
so
maybe
I
will,
I
would
use
diffuse
as
a
base
to
remember
exactly
how
I
was
doing
that
a
few
years
ago
in
order
to
make
this
prototype.
B
B
A
Yeah-
and
I
think
one
one
thing
about
this
way
of
describing
the
flow
of
diffs
of
differences-
is
that
it
is
so
flexible
about
how
you
can
respond
to
changes
right.
You
could
decide
that
certain
part
of
your
system
may
update
only
once
a
few
seconds,
and
then
it
can
look
into
the
whole
list
of
history
and
ask
do
I
see
any
changes
of
this
kind
that
I
care
about
and
only
then
right
and
it
is
becoming
so
easy.
This
way
right.
B
Yeah
because
it's
more
declarative,
it
shows
directly
the
intent
instead
of
having
it
buried
inside
the
source
code,
because
the
source
code,
when
there
is
no
constraint,
it
becomes
like
a
black
box
for
the
program
not
for
the
user
with
a
programmer,
but
for
the
program,
because
a
source
code
could
could
take
any
kind
of
function
and
compose
them
together.
B
You
cannot
really
easily
write
a
tool
that
reads
a
program
and
tells
you
what
the
program
is
doing,
but
when
you
describe
it
in
a
constrained
way
like
this
one,
then
you
can
have
a
program
that
say
here.
You
added
some
data
here
you
remove
some
data.
So
what
kind
of
change
are
you
changing?
Are
you
looking
for
something
where
you
add
or
remove,
and
then
you
can
show
different
events
based
on
that,
for
example,
so
it's
more
easy
to
work
with
that.
A
Could
you
could
you
keep
it
for
a
moment
just.
B
D
A
B
B
I
wanted
to
show
the
way
to
use.
It
is
very
simple
today
I
I
took
a
note
oops
here
and
I
created
a
page
just
by
saying
a
bracket
bracket,
name
and
blah
blah
blah,
and
then
I
click
on
it.
And
then
I
arrive
on
an
empty
page
and
then
I
fill
it
up.
B
So
I
wrote
coding
odb
here,
for
another
reason
is
that
I
I
want
that
database
for
the
front
end
to
have
two
different
form.
One
is
a
set
of
atoms
and
one
is
a
just
a
hash
map
that
represents
the
content
of
all
those
atoms
together
and
which
one
it
depends
when
you
want
performances,
it's
going
to
execute
using
reagent
atoms
and
when
you
want
to
debug
it's
going
to
be
just
a
larger
hash
map,
just
the
same
as
what
people
do
in
a
reframe.
B
B
B
I
don't
know
what
is
inside
edn
edn,
edn,
that's
something
very
readable
for
us.
Programmers
journals
is
the
same
as
a
set
of
markdown
pages
draw
because
we
can
hand
draw
on
the
top
of
of
the
page
is
using
another
format
which
I'm
not
familiar
with,
and
assets
is
for
images.
So
here
everything
is
readable
for
us
programmers,
that's
what
I
love
about
logsec.
B
It's
just
a
view
over
open
filed
files.
A
Yeah,
maybe
I
don't
know
either,
could
it
be
a
possible
topic
for
a
study
session
where
we
could
look
and
try
to
build
a
plugin
or
something
like
that
and
see
that
we
can
extend
it.
A
You
were
saying
something
so.
A
Yeah
right,
so
one
possible
hope
could
be
that
it
could
be
a
target
format
for
some
notebook
system,
where
you
know
some
of
us
like
to
write
names
namespaces
as
as
the
thing
we
are
editing,
but
the
target
format
could
be
something
beautiful
as
a
set
of
markdown
files
with
links
between
them
and
images
inside
and
some
plugins
right.
So
that
could
be
one
way
to
try
to
use
it.
B
I
will
get
back
to
yeah.
I
will
make
a
prototype
for
the
performance
aspect,
but
in
the
future
I
will
try
to
see
how
to
address
the
other
issues
with
a
project
of
mine
that
I
call
rack,
but
that's
not
ready
yet.
So
I
will.
I
will
see
you
next
time,
but
the
idea
is
really
to
make
all
those
people
who
clicked
yes
happy
about
some
new
tools.
A
Thank
you
so
much
and
yeah,
so
I
think
we
should
skip
the
part
about
html
widgets,
which
is
maybe
less
pressing
I'll.
A
Just
say
that
I'm
studying
this
library
called
html
widgets
for
creating
static
visualizations,
and
it
looks
promising
as
a
very
thoughtful
framework
to
learn
from,
for
example,
it
has
very
systematic
ideas
about
how
to
define
sizing
policies
or
widgets
and
how
to
do
it
in
a
systematic
way
across
different
kinds
of
components
and
how
to
define
how
we
just
update
with
the
change
of
data
and
how
to
do
that
systematically
and
how
to
define
dependencies
and
how
to
define
links
between
widgets.
A
A
It
is
not
necessarily
about,
even
though
it
was
built
to
be
used
in
so
it
could
have
a
closure
back
end,
and
it
also
could
be
an
inspiration
for
other
closure
closure
strip
libraries.
So
I'm
looking
into
it-
and
I
have
some
working
progress
draft
that
I
could
share
some
other
time
and
if
anybody
is
interested
in
to
even
the
people
re
listening
to
the
recording,
then
I
would
love
to
collaborate
on
it.
A
It
looks
like
the
easy
things
that
can
happen
about
using
this,
this
huge
collection
of
visual
components
in
html
widgets,
and
I
think
we
are
beyond
the
official
time,
but
maybe
if
we
could
stay
just
a
little
bit,
we
could
keep
discussing
our
hopes
about
the
cookbook
and
related
tooling
and
maybe
at
least
raise
some
of
the
questions
like
how
parts
of
the
cookbook
are
linked
and
how
dependencies
are
handled
and
how
it
could
be
made
easy
for
people
to
contribute
what
would
be
the
desired
future
workflow
where
people
could
just
easily
add
a
piece
of
cookbook
right
so
well.
C
Sure
yeah,
I
could
do
a
few
more
minutes.
I
mean
I
guess
I
didn't
have
much
in
mind.
I
was
definitely
just
picturing
using
github
like
the
whole
running
the
whole
project
as
a
an
open
repo
where
yeah,
I'm
not
sure
exactly
what
it
would
look
like,
but
either
issues
or
pull
requests
against
that
public
repo
could
be
like
the
sort
of
just
the
logistics
of
how
people
do
it,
and
I
guess,
in
terms
of
like
coordinating
that
it
might
be
useful
to
yeah.
A
E
C
I
guess
that's
the
thing
it's
going
to
be
tricky
like
I
would
like
to
have
a
repo,
that's
just
a
collection
of
like
plain
closure,
name
spaces
or
maybe
like
I
guess
you
could
have
the
comments
sort
of
like
a
the
clerk
notebook
style
or
whatever,
but
it
would
just
be
like
a
repo
with
the
data,
the
the
code
examples
in
it
and
then
from
there
yeah
someone
could
just
clone
that
and
run
it
locally
and
then
add
whatever
they
want.
Hopefully
like
yeah
and
we'll
document
some
like.
C
Hopefully
it
should
be
obvious
where
to
put
stuff
and
then
ideally,
we
can
have
some
like
automatic
process
to
like
take
that
collection
of
name
spaces
and
then
like
publish
it
as
the
website.
So,
however,
we're
gonna
do
that.
However,
we're
gonna
like
embed
those
notebooks
into
a
web
page
with
all
the
extra
stuff
around
it,
we
can
hopefully
have
some
sort
of
like
I'm.
C
You
know
some
sort
of
like
ci
process
or
something
that
like
takes
those
notebooks
and
then
builds
the
actual
book
to
publish
I'm
not
sure
exactly
yet
yeah.
I
feel
like
that's,
probably
the
next
that
maybe
is
setting
up
like
a
couple
prototypes
to
see
what
we
could
possibly
use
for
that
or
how
that
might
work,
but
yeah.
C
I
definitely
would
like
to
have
the
the
examples
and
the
actual
like
data
in
in
the
repo
it's
kind
of
publicly
available
and
open
for
anyone
who
wants,
to
like
add
a
section
or
update
a
section
or
correct
something
or
whatever.
A
And
then,
possibly
probably,
there
is
a
certain
level
like
a
subset
of
the
cookbook,
where
a
few
of
the
namespaces
have
something
in
common
which
could
be
the
dependencies
and
the
setup
and
all
those
things
that
you
wouldn't
like
to
repeat
each
time
again,
but
need
to
be
different
for
different
parts
of
the
story
right.
So
those
could
be
like
maybe
a
chapter
or
a
section,
or
maybe
maybe
probably
very
related,
those
to
the
studio
idea
right
and
yeah
and
yeah.
C
Yeah,
I
think
it
makes
sense
like
yeah.
I
guess
I
don't
know
exactly
what
that
would
look
like,
but
probably
having
like
a
separate
yeah
like
config
file
or
maybe
kind
of
like
project
within
a
project
for
each
chapter,
maybe
might
make
sense,
because
I
think
that's
where
you
would
have
different
dependencies
probably
would
be
more
like
accumulating
dependencies
as
you
go
through
the
book.
But
that
way,
if
you
wanted
to
clone
yeah,
I
don't
know,
I
guess
you
can.
D
Perhaps
I
want
to
say
something
about
your
html
widget
study
session,
so
I
think
that's
good
you
absolutely
right
because
they
have
they
have
collected
it's
a
very
good
list
of
of
important
visualization
components
that
you
can
find
there.
So
that's
that's
the
good
part.
D
D
So
I
think
when
you
start
today
with
reagent,
you
want
to
stay
on
reagent
wherever
possible,
so
many
of
the
components
that
are
purely
js
components,
I
think.
D
You
would
want
to
have
a
more
up-to-date
reagent
based
version
of
it,
and
the
other
thing
is,
I
think,
that
html
bits
that
has
a
lot
of
problems
to
solve,
simply
from
the
fact
that
they
don't
have
the
reagent
atoms
or
that
they
don't
have
reframe
and
in
enclosure
we
can.
We
can
deal
with
all
these
problems
on
a
level
that
is
that
is
given
to
you
by
the
language.
D
So,
if
I
think
of
what
what
vega
did
with
all
these
event
channels
and
so
on,
or
what
vega
did
with
all
their
filter
pipeline
enclosure,
the
language
allows
you
to
do
that
in
itself.
So
all
this
additional
work
that
this
ui
libraries
do
enclosure
slash
clojure
script.
A
lot
of
that
is
not
really
necessary
and
the
last
thing
about
the
packaging
or
the
dependency
management.
D
I
think
that
that
the
way
that
the
closure
dependency
management
with
the
jars
or
the
depths
edel,
how
that
works
is
amazing
and
it
works
like
virtually
almost
all
the
time
so
versus
when
you
go
to
the
whatever
the
html
which
had
land
and
the
javascript
land.
That
is
where,
where
things
break
a
lot-
and
you
have
so
much
churn
of
all
the
libraries
and
so
on
so
so
I
think
on
the
dependency
management
side,
we
better
stick
to
the
to
the
depths
eagle
jar
approach,
because
that
is
the.
A
You
know,
as
about
the
compromises
that
we
could
possibly
take
right
because
we're
talking
about
something
that
exists
today
and
yes
wasn't
created
by
the
principles
that
we
like
possibly
but
could
just
work
and
could
matter
to
the
date
scientist
that
needs
a
plot
today
and
then
yeah
anyway.
I
think
it
would
be.
D
Danny,
let
me
say
one
thing:
it
is
a
matter
of
one
hour
to
add
an
entire
new
rendering
library
into
closure.
Sgi
closure
script
and
have
it
in
a
nice
way.
That
is,
that
is
basically
not
a
lot
of
time.
You
can
do
this
extremely
fast
and
the
the
the
problems
you
get.
If
you
go
this
html
rigid
way,
is
you
end
up
with
a
hopelessly
outdated
system
that
that
was
very
much
tailored
the
way?
How
r
had
to
do
it
and
it's
based
on
technology?
D
That's
whatever
20
years
old,
so
so
with
shadow
cljs
and
npm
so,
and
closure
and
npm
dependencies.
D
You
can
build
everything
fast
and
you
can
have
deterministic
builds
that
will
work
in
50
years,
still
that
you
can
update
or
where
you
can
manage
the
the
the
process
of
updating
your
old
dependencies
to
new
versions
and
so
on.
So
I
think
from
the
tooling
side
there
closure
has
really-
or
in
this
case
it
is
the
the
the
maven
java
that
that
that
does
the
real
job,
which
is
something
that
was
made
from
the
outset
for
enterprise
software,
where
all
these
things
are
important.
D
So
I
I
mean
I'm
very
I'm
very
happy
to
to
to
do
quick,
hacks
and
and
and
make
compromises
when
I
have
to,
but
in
this
case
I
think
it's
not
necessary
because
it
can
be
done
so
fast
and
the
only
reason
why
why
you
would
even
consider
these
sort
of
hacky
approaches,
because
the
normal
shadow
clgs
build
approach
is
difficult
to
get
started
with
and
yeah.
But
when
you
have
it
running,
it's
it's
it
it's
it's!
It's
amazing.
A
No,
no,
that
that
is
great.
I
hope
you
will
be
this
kind
of.
We
come
up
with
this
sharp
analysis,
but
we
will
come
back
to
it
after
we
actually
say
what
it
is
in
a
future
session,
and
that
is
great.
Thank
you
so
much
everybody.
Maybe
if
anybody
has
a
like
a
last
comment
before
we
say
goodbye
to
the
recording,
it
is
a
good
time,
otherwise
we
can
say
goodbye
to
the
recording
and
and
maybe
chat
for
you
like
a
couple
of
minutes
about
what
is
about
to
come.