0:00:00.320,0:00:05.920
um so hi I'm joe corneli
0:00:03.280,0:00:06.879
uh this is work I did with ray puzio and
0:00:05.920,0:00:10.559
cameron smith
0:00:06.879,0:00:11.599
um and they're the main protagonists in
0:00:10.559,0:00:14.960
this story they
0:00:11.599,0:00:17.840
are uh researchers who've been working
0:00:14.960,0:00:20.160
on theoretical biology um so in a
0:00:17.840,0:00:23.760
typical project they may use manxima
0:00:20.160,0:00:24.800
and julia their work for biology physics
0:00:23.760,0:00:27.199
and computer science
0:00:24.800,0:00:29.439
computer science and the latest work in
0:00:27.199,0:00:30.800
progress is on branching processes for
0:00:29.439,0:00:34.719
cancer modeling so
0:00:30.800,0:00:37.360
how can um Emacs possibly help
0:00:34.719,0:00:38.399
let's let's have a look uh moving code
0:00:37.360,0:00:39.680
and data between these different
0:00:38.399,0:00:42.000
programs by hand is
0:00:39.680,0:00:43.200
annoying on separate workflows for
0:00:42.000,0:00:44.399
writing up notes and preparing
0:00:43.200,0:00:46.000
publications
0:00:44.399,0:00:48.640
is perhaps even more annoying all of
0:00:46.000,0:00:52.000
it's time consuming and error-prone
0:00:48.640,0:00:53.760
um so what about maybe using jupiter
0:00:52.000,0:00:55.199
uh we found something called script of
0:00:53.760,0:00:58.399
scripts and it solves some of those
0:00:55.199,0:01:01.120
problems because you can use
0:00:58.399,0:01:02.640
maximum and julia together but we were
0:01:01.120,0:01:05.199
quite happy to explore emacs based
0:01:02.640,0:01:05.840
solutions being emax enthusiasts and we
0:01:05.199,0:01:07.760
even
0:01:05.840,0:01:09.200
got cameron to be enthusiastic about
0:01:07.760,0:01:11.600
doing emacs so that
0:01:09.200,0:01:12.400
went nice so just here's a little
0:01:11.600,0:01:15.360
feature grid
0:01:12.400,0:01:16.400
of emacs org versus just sort of your
0:01:15.360,0:01:19.040
generic
0:01:16.400,0:01:20.960
um tools that are in a different more
0:01:19.040,0:01:21.520
general ecosystem so as you can see it's
0:01:20.960,0:01:23.360
quite
0:01:21.520,0:01:25.520
feature complete you've got your maximo
0:01:23.360,0:01:27.119
mode julia mode you can use both of them
0:01:25.520,0:01:28.720
inside of org mode
0:01:27.119,0:01:30.240
you can present things with word tree
0:01:28.720,0:01:33.280
slide you can set up a
0:01:30.240,0:01:33.680
wiki inside of orgrome this is one I
0:01:33.280,0:01:35.759
found
0:01:33.680,0:01:37.759
rather recently you can even use
0:01:35.759,0:01:38.799
compatibly with orgrome something called
0:01:37.759,0:01:41.520
log seek
0:01:38.799,0:01:42.159
which is in the browser um so that's
0:01:41.520,0:01:44.320
nice
0:01:42.159,0:01:45.840
um you can do real-time collaborative
0:01:44.320,0:01:47.840
editing um
0:01:45.840,0:01:49.280
either in a kind of pairing style or in
0:01:47.840,0:01:51.520
a more etherpad style
0:01:49.280,0:01:54.159
obviously you can manage your references
0:01:51.520,0:01:55.759
you can typeset whatever you want um you
0:01:54.159,0:01:57.439
can publish work in progress on a blog
0:01:55.759,0:01:58.159
and the fern is another one of these
0:01:57.439,0:02:00.560
external
0:01:58.159,0:02:01.360
org mode tools it's not actually any mac
0:02:00.560,0:02:03.680
but works with
0:02:01.360,0:02:04.399
org mode stuff and you know so we're
0:02:03.680,0:02:06.640
good to go
0:02:04.399,0:02:08.000
uh with all of that so what does that
0:02:06.640,0:02:09.679
look like well here's
0:02:08.000,0:02:11.599
a little example from before they were
0:02:09.679,0:02:12.800
doing um
0:02:11.599,0:02:14.560
before we started really thinking
0:02:12.800,0:02:15.599
seriously about this stuff so this is
0:02:14.560,0:02:17.440
just maxima
0:02:15.599,0:02:19.280
well maximo doesn't have a long running
0:02:17.440,0:02:20.160
process by default if you've ever used
0:02:19.280,0:02:22.480
python
0:02:20.160,0:02:23.920
uh you have something called sessions uh
0:02:22.480,0:02:24.959
they don't have that for maxim at least
0:02:23.920,0:02:27.599
not by default
0:02:24.959,0:02:29.360
um so how what was the workaround
0:02:27.599,0:02:32.480
there's this thing called uh
0:02:29.360,0:02:34.879
solve for you here and um
0:02:32.480,0:02:36.319
that shows up down below again in these
0:02:34.879,0:02:37.360
angle brackets which you've seen maybe
0:02:36.319,0:02:40.480
in someone else's talk
0:02:37.360,0:02:41.920
uh which means go to the previous uh
0:02:40.480,0:02:43.920
thing that was named soul for you
0:02:41.920,0:02:45.280
and do that all over again so they do
0:02:43.920,0:02:47.440
that over again
0:02:45.280,0:02:49.519
and here's the little maxima code for
0:02:47.440,0:02:50.560
defining you saw so you've now defined
0:02:49.519,0:02:51.920
you saw
0:02:50.560,0:02:54.000
and then you can use it in the next
0:02:51.920,0:02:56.560
expression you get out a nice juicy
0:02:54.000,0:02:57.200
zero at the end but it's a little bit a
0:02:56.560,0:02:58.959
little bit
0:02:57.200,0:03:00.640
like cartridge in a pear tree to have to
0:02:58.959,0:03:02.560
redefine everything every time
0:03:00.640,0:03:04.159
so this is clearly at the level of work
0:03:02.560,0:03:06.879
around um maybe just
0:03:04.159,0:03:07.920
one more time going looking through that
0:03:06.879,0:03:11.599
um
0:03:07.920,0:03:13.760
that stuff um
0:03:11.599,0:03:15.280
sorry so uh looking through that stuff
0:03:13.760,0:03:17.200
this is we're going to need something
0:03:15.280,0:03:19.599
like that probably for stitching
0:03:17.200,0:03:20.319
maxima and julie julia together so it's
0:03:19.599,0:03:21.680
good to
0:03:20.319,0:03:23.920
look a little bit about how that might
0:03:21.680,0:03:25.680
work so first of all you can cache
0:03:23.920,0:03:26.480
results so if you wanted to save the
0:03:25.680,0:03:28.480
date
0:03:26.480,0:03:29.920
out of block one at a certain time and
0:03:28.480,0:03:32.239
then use
0:03:29.920,0:03:33.280
use it again later so at the time when I
0:03:32.239,0:03:34.640
ran this code
0:03:33.280,0:03:36.720
you can see I've got two slightly
0:03:34.640,0:03:38.560
different time stamps down below one's
0:03:36.720,0:03:40.319
the cached result and the other was the
0:03:38.560,0:03:42.640
result of reevaluating
0:03:40.319,0:03:43.760
the block so you can move things around
0:03:42.640,0:03:46.000
um and that's
0:03:43.760,0:03:47.280
that's going to be useful but you know
0:03:46.000,0:03:48.080
that's not really the main problem the
0:03:47.280,0:03:50.799
main problem is
0:03:48.080,0:03:51.440
making maxima long running so kind of
0:03:50.799,0:03:53.920
the
0:03:51.440,0:03:56.400
core of this talk is a new observant
0:03:53.920,0:03:59.280
facility which is a general purpose
0:03:56.400,0:04:00.560
way to do that kind of thing which
0:03:59.280,0:04:04.239
involves a very simple
0:04:00.560,0:04:05.360
change to obcor uh so we'll give a quick
0:04:04.239,0:04:08.480
overview of that and show
0:04:05.360,0:04:11.760
an example um so here's the example
0:04:08.480,0:04:13.040
um a very simple sort of silly example
0:04:11.760,0:04:14.640
uh what does it mean to have a long
0:04:13.040,0:04:15.920
running process here I've set this
0:04:14.640,0:04:18.560
display2d
0:04:15.920,0:04:19.440
to be false um which just means that
0:04:18.560,0:04:22.320
things are going to come
0:04:19.440,0:04:23.040
come across in 1d and then I ask it to
0:04:22.320,0:04:25.199
expand
0:04:23.040,0:04:27.280
uh something and I get latex by default
0:04:25.199,0:04:28.639
so so that's what it means is I've sent
0:04:27.280,0:04:30.240
something in and it's going to come
0:04:28.639,0:04:32.080
across in one view which is great
0:04:30.240,0:04:34.560
um maybe you'll also notice that there's
0:04:32.080,0:04:36.720
no semicolon if you're a maxima fan
0:04:34.560,0:04:38.400
um and things are coming across as tech
0:04:36.720,0:04:40.320
so those were some little bonus features
0:04:38.400,0:04:41.040
and I'll show you how that works later
0:04:40.320,0:04:45.440
so
0:04:41.040,0:04:48.880
um the change to obcor is as follows uh
0:04:45.440,0:04:51.520
um we uh actually this should say uh
0:04:48.880,0:04:52.479
instead of stream here it should say um
0:04:51.520,0:04:54.800
servant
0:04:52.479,0:04:56.160
sorry uh we tried an experimental
0:04:54.800,0:04:58.160
version what's called stream so now it's
0:04:56.160,0:05:01.520
called servant but all it does is it
0:04:58.160,0:05:02.639
overrides uh or babel execute laying for
0:05:01.520,0:05:05.919
arbitrary laying
0:05:02.639,0:05:07.840
if you have um a servant
0:05:05.919,0:05:09.759
in your in your params so that's the
0:05:07.840,0:05:11.919
change that hasn't been
0:05:09.759,0:05:13.759
pushed out or sent as a patch to anybody
0:05:11.919,0:05:16.960
but it's a pretty minor change
0:05:13.759,0:05:19.080
um here's an overview without the code
0:05:16.960,0:05:20.720
of just a high level overview of
0:05:19.080,0:05:22.160
observant.el so
0:05:20.720,0:05:24.479
it stores information about these
0:05:22.160,0:05:26.080
processes in a hash table
0:05:24.479,0:05:27.600
it can do pre-processing and
0:05:26.080,0:05:29.759
post-processing
0:05:27.600,0:05:30.720
um it does all these things it stores
0:05:29.759,0:05:32.479
the output
0:05:30.720,0:05:34.080
I mentioned here that in principle we
0:05:32.479,0:05:35.280
could store lots of output and have a
0:05:34.080,0:05:36.560
kind of browsable
0:05:35.280,0:05:38.880
history although we don't do that
0:05:36.560,0:05:40.639
presently um but that's what observant
0:05:38.880,0:05:41.440
does is it does what you might expect
0:05:40.639,0:05:45.440
and here's the
0:05:41.440,0:05:48.160
here's the maxima kind of um
0:05:45.440,0:05:49.600
on-ramp uh to get maxima brought in so
0:05:48.160,0:05:51.360
you have to obviously have a maximum
0:05:49.600,0:05:54.960
process you can call
0:05:51.360,0:05:57.840
um put hash uh this is the preprocessing
0:05:54.960,0:05:58.960
thing I mentioned adding in some tech um
0:05:57.840,0:06:01.520
and adding in
0:05:58.960,0:06:03.120
uh or deleting rather a substring and
0:06:01.520,0:06:03.759
here here is why you delete the
0:06:03.120,0:06:06.960
substring
0:06:03.759,0:06:08.240
is because um maxima thinks it's a good
0:06:06.960,0:06:10.080
idea to tell you false
0:06:08.240,0:06:11.759
once you once you run check on things
0:06:10.080,0:06:13.680
you've got to delete that back out to
0:06:11.759,0:06:16.960
get something kind of coherent out of it
0:06:13.680,0:06:19.280
but so this is how to set up maximal um
0:06:16.960,0:06:20.000
that's enough really of the demo is not
0:06:19.280,0:06:21.919
really a demos for
0:06:20.000,0:06:23.600
show and tell but uh this is an
0:06:21.919,0:06:25.440
experience report I wanted to talk about
0:06:23.600,0:06:28.080
the experience of doing this
0:06:25.440,0:06:30.160
so some some negatives like we tried to
0:06:28.080,0:06:33.199
get emacs jupiter working
0:06:30.160,0:06:36.000
prior to prior to working on the um
0:06:33.199,0:06:37.919
observant and we couldn't get it doing
0:06:36.000,0:06:40.160
everything we wanted despite a bit of
0:06:37.919,0:06:41.840
heavy lifting and debugging and stuff so
0:06:40.160,0:06:42.880
that's not not finished that was a bit
0:06:41.840,0:06:45.360
difficult
0:06:42.880,0:06:47.759
um on the other hand working on
0:06:45.360,0:06:48.479
observing was fun and pretty lightweight
0:06:47.759,0:06:50.400
and easy
0:06:48.479,0:06:52.400
um we got some experience co-editing
0:06:50.400,0:06:54.479
things with these real-time tools
0:06:52.400,0:06:55.919
obviously the stack is somewhat work in
0:06:54.479,0:06:58.000
progress um
0:06:55.919,0:07:00.800
so I just wanted to give a shout out to
0:06:58.000,0:07:03.919
crdt which was really fun
0:07:00.800,0:07:07.039
and champion was making bug fiction
0:07:03.919,0:07:08.960
bug fixes for that as we go similarly
0:07:07.039,0:07:10.160
for fern and log seek the maintainers
0:07:08.960,0:07:12.960
were really responsive
0:07:10.160,0:07:14.560
um and so that was nice we did try to
0:07:12.960,0:07:15.840
get emacs running in the browser
0:07:14.560,0:07:16.880
thinking it would be really nice for
0:07:15.840,0:07:19.520
people who
0:07:16.880,0:07:21.120
um didn't want to install it to get a
0:07:19.520,0:07:23.120
chance to just try it
0:07:21.120,0:07:24.479
uh but actually browsers capture things
0:07:23.120,0:07:27.120
like uh control n
0:07:24.479,0:07:28.479
and so that's that was a bit annoying
0:07:27.120,0:07:29.759
but we did get lots of great feedback
0:07:28.479,0:07:31.599
and interaction with people including
0:07:29.759,0:07:33.759
around this conference so thank you
0:07:31.599,0:07:35.599
to those who we've had discussions with
0:07:33.759,0:07:37.680
um
0:07:35.599,0:07:38.639
so future work okay so maybe you
0:07:37.680,0:07:41.039
remember I didn't
0:07:38.639,0:07:42.400
give a talk a few years back on arcana
0:07:41.039,0:07:44.479
so what what
0:07:42.400,0:07:45.919
might this have to do with org mode and
0:07:44.479,0:07:47.039
that's always the question one asks
0:07:45.919,0:07:48.720
about arcata
0:07:47.039,0:07:50.319
well so arcana one of the things it does
0:07:48.720,0:07:51.680
is transclusions and so that could be
0:07:50.319,0:07:54.000
actually very helpful
0:07:51.680,0:07:55.520
in connection with this combined notes
0:07:54.000,0:07:56.479
and write-up workflow so you might have
0:07:55.520,0:07:58.400
a
0:07:56.479,0:08:00.800
forward mode uh and some of these
0:07:58.400,0:08:03.199
results we got back as raw results
0:08:00.800,0:08:03.919
could go right into your write up in a
0:08:03.199,0:08:07.520
kind of
0:08:03.919,0:08:09.039
convenient way at a level above um
0:08:07.520,0:08:11.280
transparently a level above the notebook
0:08:09.039,0:08:13.440
so you'd have the notebook alongside the
0:08:11.280,0:08:15.599
write-up in that case
0:08:13.440,0:08:16.800
which is a sort of variation on the
0:08:15.599,0:08:19.120
literate programming
0:08:16.800,0:08:20.000
workflow this is speculative who knows
0:08:19.120,0:08:22.080
the other thought is
0:08:20.000,0:08:23.520
it just relates to the idea of network
0:08:22.080,0:08:24.800
programming so we can imagine these
0:08:23.520,0:08:26.639
networks of
0:08:24.800,0:08:28.800
computational nodes maybe sitting inside
0:08:26.639,0:08:31.199
of orgrome calling each other
0:08:28.800,0:08:32.560
um and you would want to maintain some
0:08:31.199,0:08:34.959
kind of model of that
0:08:32.560,0:08:36.640
process and a sort of general question
0:08:34.959,0:08:38.320
is how do we have a remote control for
0:08:36.640,0:08:40.240
long-running processes you could do that
0:08:38.320,0:08:42.479
in lisp or closure but
0:08:40.240,0:08:44.080
maybe we could have something a little
0:08:42.479,0:08:45.839
bit like that here
0:08:44.080,0:08:48.080
um so conclusions what have we actually
0:08:45.839,0:08:50.080
addressed well uh we addressed uh
0:08:48.080,0:08:51.600
accessing any long-running process with
0:08:50.080,0:08:52.959
a simple or mode interface
0:08:51.600,0:08:54.880
obviously we're not the only people to
0:08:52.959,0:08:56.880
think about notebooks but we think that
0:08:54.880,0:08:58.880
emacs has some advantages
0:08:56.880,0:09:01.120
related to reproducible research and
0:08:58.880,0:09:01.680
interdisciplinary collaboration so let's
0:09:01.120,0:09:03.120
just
0:09:01.680,0:09:04.880
say that we think something is
0:09:03.120,0:09:07.200
reproducible if it's actually teachable
0:09:04.880,0:09:09.279
to someone new and they can do it
0:09:07.200,0:09:11.680
org mode seems very useful for that many
0:09:09.279,0:09:14.399
of the other talks have touched on this
0:09:11.680,0:09:16.000
interdisciplinary collaboration is great
0:09:14.399,0:09:17.839
this was an interdisciplinary
0:09:16.000,0:09:19.680
collaboration on some level but
0:09:17.839,0:09:21.600
what about you know future work for
0:09:19.680,0:09:22.320
bringing in scenario planners simulation
0:09:21.600,0:09:24.480
scientists
0:09:22.320,0:09:25.519
and local farmers and building something
0:09:24.480,0:09:27.200
that they can all
0:09:25.519,0:09:29.200
use that's more than the sum of the
0:09:27.200,0:09:30.720
parts so a little
0:09:29.200,0:09:32.160
future work for everybody else here so
0:09:30.720,0:09:33.120
we think science should be widely
0:09:32.160,0:09:34.560
teachable
0:09:33.120,0:09:36.720
shareable semi-automated
0:09:34.560,0:09:40.399
transdisciplinary and real time
0:09:36.720,0:09:43.279
like EmacsConf so you can get in touch
0:09:40.399,0:09:44.560
uh via these methods and the code which
0:09:43.279,0:09:45.200
is very much early stage work in
0:09:44.560,0:09:46.640
progress
0:09:45.200,0:09:48.800
as this was meant to be an experience
0:09:46.640,0:09:49.920
report not a it's all done here it is
0:09:48.800,0:09:51.680
polished report
0:09:49.920,0:09:53.360
um it's also online if you'd like to
0:09:51.680,0:09:54.560
have a look so that's the end of the
0:09:53.360,0:09:55.279
talk and I don't know if there's time
0:09:54.560,0:09:57.440
for questions
0:09:55.279,0:10:00.240
or not but um I'm at your disposal now
0:09:57.440,0:10:04.079
thank you you are now unmuted
0:10:00.240,0:10:07.120
um many thanks for the tough job
0:10:04.079,0:10:08.880
uh let's see we have about I think four
0:10:07.120,0:10:10.880
minutes four questions
0:10:08.880,0:10:12.320
um and we have a couple of questions on
0:10:10.880,0:10:14.240
the pad would you like to read them
0:10:12.320,0:10:16.560
yourself or should I read them to you
0:10:14.240,0:10:18.079
uh just for sake of easy management why
0:10:16.560,0:10:21.279
don't you read them out if that's okay
0:10:18.079,0:10:22.240
yeah sure uh so they ask have you looked
0:10:21.279,0:10:25.440
into trying
0:10:22.240,0:10:33.760
sage math I've long uh long wanted
0:10:25.440,0:10:36.959
nothing org files
0:10:33.760,0:10:39.279
right and I and I wrote the answer that
0:10:36.959,0:10:42.079
we should be possible because one can
0:10:39.279,0:10:42.079
call it from a command
0:10:44.839,0:10:48.640
okay
0:10:46.399,0:10:50.079
and I see there's another sagemath
0:10:48.640,0:10:52.100
question that you seem to have answered
0:10:50.079,0:10:54.880
as well so I guess I won't repeat that
0:10:52.100,0:10:56.959
[Music]
0:10:54.880,0:11:00.640
there's let's not forget about embedded
0:10:56.959,0:11:03.680
calc in emacs
0:11:00.640,0:11:05.040
so so the first demos actually were with
0:11:03.680,0:11:06.640
calc so that's that's
0:11:05.040,0:11:07.839
useful uh although I think it was a
0:11:06.640,0:11:08.240
different kind of a different command
0:11:07.839,0:11:11.839
line
0:11:08.240,0:11:13.839
well that was the next calc yeah
0:11:11.839,0:11:15.680
so sure there is there is calc so that
0:11:13.839,0:11:19.120
would be calculus and
0:11:15.680,0:11:21.839
calc is already in org mode yeah
0:11:19.120,0:11:21.839
yeah yeah
0:11:25.680,0:11:29.839
um still looking for questions
0:11:39.760,0:11:44.320
okay I think that's about it I don't see
0:11:41.760,0:11:47.440
any questions on the ether pad
0:11:44.320,0:11:50.480
and let's see
0:11:47.440,0:11:50.480
anything on irc
0:11:53.040,0:11:56.720
um nothing but phrases and everyone
0:11:55.760,0:11:59.120
thanking you
0:11:56.720,0:12:00.240
thank you all right you're welcome
0:11:59.120,0:12:02.880
thanks a lot uh
0:12:00.240,0:12:06.800
we'll see you guys around then cheers
0:12:02.880,0:12:06.800
and see you around