summaryrefslogtreecommitdiffstats
path: root/2020/subtitles
diff options
context:
space:
mode:
authorSacha Chua <sacha@sachachua.com>2020-12-19 01:08:04 -0500
committerSacha Chua <sacha@sachachua.com>2020-12-19 01:08:04 -0500
commita02885944e69a3f714814a2811ec02ffa8a11e74 (patch)
treeb3ba69c647fb4669b2adf40a005870b9b801f955 /2020/subtitles
parentac464124bd39484b040cb3cacb863fe4c90423ab (diff)
downloademacsconf-wiki-a02885944e69a3f714814a2811ec02ffa8a11e74.tar.xz
emacsconf-wiki-a02885944e69a3f714814a2811ec02ffa8a11e74.zip
Add subtitles for 13, 14, 15
Diffstat (limited to '2020/subtitles')
-rw-r--r--2020/subtitles/emacsconf-2020--13-experience-report-steps-to-emacs-hyper-notebooks--joseph-corneli-raymond-puzio-cameron-ray-smith-autogen.vtt1081
-rw-r--r--2020/subtitles/emacsconf-2020--13-experience-report-steps-to-emacs-hyper-notebooks--joseph-corneli-raymond-puzio-cameron-ray-smith.vtt968
-rw-r--r--2020/subtitles/emacsconf-2020--14-readme-driven-design--adam-ard-autogen.vtt1426
-rw-r--r--2020/subtitles/emacsconf-2020--14-readme-driven-design--adam-ard.vtt1297
-rw-r--r--2020/subtitles/emacsconf-2020--15-moving-from-jekyll-to-orgmode-an-experience-report--adolfo-villafiorita-autogen.vtt1183
-rw-r--r--2020/subtitles/emacsconf-2020--15-moving-from-jekyll-to-orgmode-an-experience-report--adolfo-villafiorita.vtt1057
6 files changed, 3322 insertions, 3690 deletions
diff --git a/2020/subtitles/emacsconf-2020--13-experience-report-steps-to-emacs-hyper-notebooks--joseph-corneli-raymond-puzio-cameron-ray-smith-autogen.vtt b/2020/subtitles/emacsconf-2020--13-experience-report-steps-to-emacs-hyper-notebooks--joseph-corneli-raymond-puzio-cameron-ray-smith-autogen.vtt
deleted file mode 100644
index eb176536..00000000
--- a/2020/subtitles/emacsconf-2020--13-experience-report-steps-to-emacs-hyper-notebooks--joseph-corneli-raymond-puzio-cameron-ray-smith-autogen.vtt
+++ /dev/null
@@ -1,1081 +0,0 @@
-WEBVTT
-
-00:00:00.320 --> 00:00:03.280
-um so hi I'm joe corneli
-
-00:00:03.280 --> 00:00:05.920
-uh this is work I did with ray puzio and
-
-00:00:05.920 --> 00:00:06.879
-cameron smith
-
-00:00:06.879 --> 00:00:10.559
-um and they're the main protagonists in
-
-00:00:10.559 --> 00:00:11.599
-this story they
-
-00:00:11.599 --> 00:00:14.960
-are uh researchers who've been working
-
-00:00:14.960 --> 00:00:17.840
-on theoretical biology um so in a
-
-00:00:17.840 --> 00:00:20.160
-typical project they may use manxima
-
-00:00:20.160 --> 00:00:23.760
-and julia their work for biology physics
-
-00:00:23.760 --> 00:00:24.800
-and computer science
-
-00:00:24.800 --> 00:00:27.199
-computer science and the latest work in
-
-00:00:27.199 --> 00:00:29.439
-progress is on branching processes for
-
-00:00:29.439 --> 00:00:30.800
-cancer modeling so
-
-00:00:30.800 --> 00:00:34.719
-how can um Emacs possibly help
-
-00:00:34.719 --> 00:00:37.360
-let's let's have a look uh moving code
-
-00:00:37.360 --> 00:00:38.399
-and data between these different
-
-00:00:38.399 --> 00:00:39.680
-programs by hand is
-
-00:00:39.680 --> 00:00:42.000
-annoying on separate workflows for
-
-00:00:42.000 --> 00:00:43.200
-writing up notes and preparing
-
-00:00:43.200 --> 00:00:44.399
-publications
-
-00:00:44.399 --> 00:00:46.000
-is perhaps even more annoying all of
-
-00:00:46.000 --> 00:00:48.640
-it's time consuming and error-prone
-
-00:00:48.640 --> 00:00:52.000
-um so what about maybe using jupiter
-
-00:00:52.000 --> 00:00:53.760
-uh we found something called script of
-
-00:00:53.760 --> 00:00:55.199
-scripts and it solves some of those
-
-00:00:55.199 --> 00:00:58.399
-problems because you can use
-
-00:00:58.399 --> 00:01:01.120
-maximum and julia together but we were
-
-00:01:01.120 --> 00:01:02.640
-quite happy to explore emacs based
-
-00:01:02.640 --> 00:01:05.199
-solutions being emax enthusiasts and we
-
-00:01:05.199 --> 00:01:05.840
-even
-
-00:01:05.840 --> 00:01:07.760
-got cameron to be enthusiastic about
-
-00:01:07.760 --> 00:01:09.200
-doing emacs so that
-
-00:01:09.200 --> 00:01:11.600
-went nice so just here's a little
-
-00:01:11.600 --> 00:01:12.400
-feature grid
-
-00:01:12.400 --> 00:01:15.360
-of emacs org versus just sort of your
-
-00:01:15.360 --> 00:01:16.400
-generic
-
-00:01:16.400 --> 00:01:19.040
-um tools that are in a different more
-
-00:01:19.040 --> 00:01:20.960
-general ecosystem so as you can see it's
-
-00:01:20.960 --> 00:01:21.520
-quite
-
-00:01:21.520 --> 00:01:23.360
-feature complete you've got your maximo
-
-00:01:23.360 --> 00:01:25.520
-mode julia mode you can use both of them
-
-00:01:25.520 --> 00:01:27.119
-inside of org mode
-
-00:01:27.119 --> 00:01:28.720
-you can present things with word tree
-
-00:01:28.720 --> 00:01:30.240
-slide you can set up a
-
-00:01:30.240 --> 00:01:33.280
-wiki inside of orgrome this is one I
-
-00:01:33.280 --> 00:01:33.680
-found
-
-00:01:33.680 --> 00:01:35.759
-rather recently you can even use
-
-00:01:35.759 --> 00:01:37.759
-compatibly with orgrome something called
-
-00:01:37.759 --> 00:01:38.799
-log seek
-
-00:01:38.799 --> 00:01:41.520
-which is in the browser um so that's
-
-00:01:41.520 --> 00:01:42.159
-nice
-
-00:01:42.159 --> 00:01:44.320
-um you can do real-time collaborative
-
-00:01:44.320 --> 00:01:45.840
-editing um
-
-00:01:45.840 --> 00:01:47.840
-either in a kind of pairing style or in
-
-00:01:47.840 --> 00:01:49.280
-a more etherpad style
-
-00:01:49.280 --> 00:01:51.520
-obviously you can manage your references
-
-00:01:51.520 --> 00:01:54.159
-you can typeset whatever you want um you
-
-00:01:54.159 --> 00:01:55.759
-can publish work in progress on a blog
-
-00:01:55.759 --> 00:01:57.439
-and the fern is another one of these
-
-00:01:57.439 --> 00:01:58.159
-external
-
-00:01:58.159 --> 00:02:00.560
-org mode tools it's not actually any mac
-
-00:02:00.560 --> 00:02:01.360
-but works with
-
-00:02:01.360 --> 00:02:03.680
-org mode stuff and you know so we're
-
-00:02:03.680 --> 00:02:04.399
-good to go
-
-00:02:04.399 --> 00:02:06.640
-uh with all of that so what does that
-
-00:02:06.640 --> 00:02:08.000
-look like well here's
-
-00:02:08.000 --> 00:02:09.679
-a little example from before they were
-
-00:02:09.679 --> 00:02:11.599
-doing um
-
-00:02:11.599 --> 00:02:12.800
-before we started really thinking
-
-00:02:12.800 --> 00:02:14.560
-seriously about this stuff so this is
-
-00:02:14.560 --> 00:02:15.599
-just maxima
-
-00:02:15.599 --> 00:02:17.440
-well maximo doesn't have a long running
-
-00:02:17.440 --> 00:02:19.280
-process by default if you've ever used
-
-00:02:19.280 --> 00:02:20.160
-python
-
-00:02:20.160 --> 00:02:22.480
-uh you have something called sessions uh
-
-00:02:22.480 --> 00:02:23.920
-they don't have that for maxim at least
-
-00:02:23.920 --> 00:02:24.959
-not by default
-
-00:02:24.959 --> 00:02:27.599
-um so how what was the workaround
-
-00:02:27.599 --> 00:02:29.360
-there's this thing called uh
-
-00:02:29.360 --> 00:02:32.480
-solve for you here and um
-
-00:02:32.480 --> 00:02:34.879
-that shows up down below again in these
-
-00:02:34.879 --> 00:02:36.319
-angle brackets which you've seen maybe
-
-00:02:36.319 --> 00:02:37.360
-in someone else's talk
-
-00:02:37.360 --> 00:02:40.480
-uh which means go to the previous uh
-
-00:02:40.480 --> 00:02:41.920
-thing that was named soul for you
-
-00:02:41.920 --> 00:02:43.920
-and do that all over again so they do
-
-00:02:43.920 --> 00:02:45.280
-that over again
-
-00:02:45.280 --> 00:02:47.440
-and here's the little maxima code for
-
-00:02:47.440 --> 00:02:49.519
-defining you saw so you've now defined
-
-00:02:49.519 --> 00:02:50.560
-you saw
-
-00:02:50.560 --> 00:02:51.920
-and then you can use it in the next
-
-00:02:51.920 --> 00:02:54.000
-expression you get out a nice juicy
-
-00:02:54.000 --> 00:02:56.560
-zero at the end but it's a little bit a
-
-00:02:56.560 --> 00:02:57.200
-little bit
-
-00:02:57.200 --> 00:02:58.959
-like cartridge in a pear tree to have to
-
-00:02:58.959 --> 00:03:00.640
-redefine everything every time
-
-00:03:00.640 --> 00:03:02.560
-so this is clearly at the level of work
-
-00:03:02.560 --> 00:03:04.159
-around um maybe just
-
-00:03:04.159 --> 00:03:06.879
-one more time going looking through that
-
-00:03:06.879 --> 00:03:07.920
-um
-
-00:03:07.920 --> 00:03:11.599
-that stuff um
-
-00:03:11.599 --> 00:03:13.760
-sorry so uh looking through that stuff
-
-00:03:13.760 --> 00:03:15.280
-this is we're going to need something
-
-00:03:15.280 --> 00:03:17.200
-like that probably for stitching
-
-00:03:17.200 --> 00:03:19.599
-maxima and julie julia together so it's
-
-00:03:19.599 --> 00:03:20.319
-good to
-
-00:03:20.319 --> 00:03:21.680
-look a little bit about how that might
-
-00:03:21.680 --> 00:03:23.920
-work so first of all you can cache
-
-00:03:23.920 --> 00:03:25.680
-results so if you wanted to save the
-
-00:03:25.680 --> 00:03:26.480
-date
-
-00:03:26.480 --> 00:03:28.480
-out of block one at a certain time and
-
-00:03:28.480 --> 00:03:29.920
-then use
-
-00:03:29.920 --> 00:03:32.239
-use it again later so at the time when I
-
-00:03:32.239 --> 00:03:33.280
-ran this code
-
-00:03:33.280 --> 00:03:34.640
-you can see I've got two slightly
-
-00:03:34.640 --> 00:03:36.720
-different time stamps down below one's
-
-00:03:36.720 --> 00:03:38.560
-the cached result and the other was the
-
-00:03:38.560 --> 00:03:40.319
-result of reevaluating
-
-00:03:40.319 --> 00:03:42.640
-the block so you can move things around
-
-00:03:42.640 --> 00:03:43.760
-um and that's
-
-00:03:43.760 --> 00:03:46.000
-that's going to be useful but you know
-
-00:03:46.000 --> 00:03:47.280
-that's not really the main problem the
-
-00:03:47.280 --> 00:03:48.080
-main problem is
-
-00:03:48.080 --> 00:03:50.799
-making maxima long running so kind of
-
-00:03:50.799 --> 00:03:51.440
-the
-
-00:03:51.440 --> 00:03:53.920
-core of this talk is a new observant
-
-00:03:53.920 --> 00:03:56.400
-facility which is a general purpose
-
-00:03:56.400 --> 00:03:59.280
-way to do that kind of thing which
-
-00:03:59.280 --> 00:04:00.560
-involves a very simple
-
-00:04:00.560 --> 00:04:04.239
-change to obcor uh so we'll give a quick
-
-00:04:04.239 --> 00:04:05.360
-overview of that and show
-
-00:04:05.360 --> 00:04:08.480
-an example um so here's the example
-
-00:04:08.480 --> 00:04:11.760
-um a very simple sort of silly example
-
-00:04:11.760 --> 00:04:13.040
-uh what does it mean to have a long
-
-00:04:13.040 --> 00:04:14.640
-running process here I've set this
-
-00:04:14.640 --> 00:04:15.920
-display2d
-
-00:04:15.920 --> 00:04:18.560
-to be false um which just means that
-
-00:04:18.560 --> 00:04:19.440
-things are going to come
-
-00:04:19.440 --> 00:04:22.320
-come across in 1d and then I ask it to
-
-00:04:22.320 --> 00:04:23.040
-expand
-
-00:04:23.040 --> 00:04:25.199
-uh something and I get latex by default
-
-00:04:25.199 --> 00:04:27.280
-so so that's what it means is I've sent
-
-00:04:27.280 --> 00:04:28.639
-something in and it's going to come
-
-00:04:28.639 --> 00:04:30.240
-across in one view which is great
-
-00:04:30.240 --> 00:04:32.080
-um maybe you'll also notice that there's
-
-00:04:32.080 --> 00:04:34.560
-no semicolon if you're a maxima fan
-
-00:04:34.560 --> 00:04:36.720
-um and things are coming across as tech
-
-00:04:36.720 --> 00:04:38.400
-so those were some little bonus features
-
-00:04:38.400 --> 00:04:40.320
-and I'll show you how that works later
-
-00:04:40.320 --> 00:04:41.040
-so
-
-00:04:41.040 --> 00:04:45.440
-um the change to obcor is as follows uh
-
-00:04:45.440 --> 00:04:48.880
-um we uh actually this should say uh
-
-00:04:48.880 --> 00:04:51.520
-instead of stream here it should say um
-
-00:04:51.520 --> 00:04:52.479
-servant
-
-00:04:52.479 --> 00:04:54.800
-sorry uh we tried an experimental
-
-00:04:54.800 --> 00:04:56.160
-version what's called stream so now it's
-
-00:04:56.160 --> 00:04:58.160
-called servant but all it does is it
-
-00:04:58.160 --> 00:05:01.520
-overrides uh or babel execute laying for
-
-00:05:01.520 --> 00:05:02.639
-arbitrary laying
-
-00:05:02.639 --> 00:05:05.919
-if you have um a servant
-
-00:05:05.919 --> 00:05:07.840
-in your in your params so that's the
-
-00:05:07.840 --> 00:05:09.759
-change that hasn't been
-
-00:05:09.759 --> 00:05:11.919
-pushed out or sent as a patch to anybody
-
-00:05:11.919 --> 00:05:13.759
-but it's a pretty minor change
-
-00:05:13.759 --> 00:05:16.960
-um here's an overview without the code
-
-00:05:16.960 --> 00:05:19.080
-of just a high level overview of
-
-00:05:19.080 --> 00:05:20.720
-observant.el so
-
-00:05:20.720 --> 00:05:22.160
-it stores information about these
-
-00:05:22.160 --> 00:05:24.479
-processes in a hash table
-
-00:05:24.479 --> 00:05:26.080
-it can do pre-processing and
-
-00:05:26.080 --> 00:05:27.600
-post-processing
-
-00:05:27.600 --> 00:05:29.759
-um it does all these things it stores
-
-00:05:29.759 --> 00:05:30.720
-the output
-
-00:05:30.720 --> 00:05:32.479
-I mentioned here that in principle we
-
-00:05:32.479 --> 00:05:34.080
-could store lots of output and have a
-
-00:05:34.080 --> 00:05:35.280
-kind of browsable
-
-00:05:35.280 --> 00:05:36.560
-history although we don't do that
-
-00:05:36.560 --> 00:05:38.880
-presently um but that's what observant
-
-00:05:38.880 --> 00:05:40.639
-does is it does what you might expect
-
-00:05:40.639 --> 00:05:41.440
-and here's the
-
-00:05:41.440 --> 00:05:45.440
-here's the maxima kind of um
-
-00:05:45.440 --> 00:05:48.160
-on-ramp uh to get maxima brought in so
-
-00:05:48.160 --> 00:05:49.600
-you have to obviously have a maximum
-
-00:05:49.600 --> 00:05:51.360
-process you can call
-
-00:05:51.360 --> 00:05:54.960
-um put hash uh this is the preprocessing
-
-00:05:54.960 --> 00:05:57.840
-thing I mentioned adding in some tech um
-
-00:05:57.840 --> 00:05:58.960
-and adding in
-
-00:05:58.960 --> 00:06:01.520
-uh or deleting rather a substring and
-
-00:06:01.520 --> 00:06:03.120
-here here is why you delete the
-
-00:06:03.120 --> 00:06:03.759
-substring
-
-00:06:03.759 --> 00:06:06.960
-is because um maxima thinks it's a good
-
-00:06:06.960 --> 00:06:08.240
-idea to tell you false
-
-00:06:08.240 --> 00:06:10.080
-once you once you run check on things
-
-00:06:10.080 --> 00:06:11.759
-you've got to delete that back out to
-
-00:06:11.759 --> 00:06:13.680
-get something kind of coherent out of it
-
-00:06:13.680 --> 00:06:16.960
-but so this is how to set up maximal um
-
-00:06:16.960 --> 00:06:19.280
-that's enough really of the demo is not
-
-00:06:19.280 --> 00:06:20.000
-really a demos for
-
-00:06:20.000 --> 00:06:21.919
-show and tell but uh this is an
-
-00:06:21.919 --> 00:06:23.600
-experience report I wanted to talk about
-
-00:06:23.600 --> 00:06:25.440
-the experience of doing this
-
-00:06:25.440 --> 00:06:28.080
-so some some negatives like we tried to
-
-00:06:28.080 --> 00:06:30.160
-get emacs jupiter working
-
-00:06:30.160 --> 00:06:33.199
-prior to prior to working on the um
-
-00:06:33.199 --> 00:06:36.000
-observant and we couldn't get it doing
-
-00:06:36.000 --> 00:06:37.919
-everything we wanted despite a bit of
-
-00:06:37.919 --> 00:06:40.160
-heavy lifting and debugging and stuff so
-
-00:06:40.160 --> 00:06:41.840
-that's not not finished that was a bit
-
-00:06:41.840 --> 00:06:42.880
-difficult
-
-00:06:42.880 --> 00:06:45.360
-um on the other hand working on
-
-00:06:45.360 --> 00:06:47.759
-observing was fun and pretty lightweight
-
-00:06:47.759 --> 00:06:48.479
-and easy
-
-00:06:48.479 --> 00:06:50.400
-um we got some experience co-editing
-
-00:06:50.400 --> 00:06:52.400
-things with these real-time tools
-
-00:06:52.400 --> 00:06:54.479
-obviously the stack is somewhat work in
-
-00:06:54.479 --> 00:06:55.919
-progress um
-
-00:06:55.919 --> 00:06:58.000
-so I just wanted to give a shout out to
-
-00:06:58.000 --> 00:07:00.800
-crdt which was really fun
-
-00:07:00.800 --> 00:07:03.919
-and champion was making bug fiction
-
-00:07:03.919 --> 00:07:07.039
-bug fixes for that as we go similarly
-
-00:07:07.039 --> 00:07:08.960
-for fern and log seek the maintainers
-
-00:07:08.960 --> 00:07:10.160
-were really responsive
-
-00:07:10.160 --> 00:07:12.960
-um and so that was nice we did try to
-
-00:07:12.960 --> 00:07:14.560
-get emacs running in the browser
-
-00:07:14.560 --> 00:07:15.840
-thinking it would be really nice for
-
-00:07:15.840 --> 00:07:16.880
-people who
-
-00:07:16.880 --> 00:07:19.520
-um didn't want to install it to get a
-
-00:07:19.520 --> 00:07:21.120
-chance to just try it
-
-00:07:21.120 --> 00:07:23.120
-uh but actually browsers capture things
-
-00:07:23.120 --> 00:07:24.479
-like uh control n
-
-00:07:24.479 --> 00:07:27.120
-and so that's that was a bit annoying
-
-00:07:27.120 --> 00:07:28.479
-but we did get lots of great feedback
-
-00:07:28.479 --> 00:07:29.759
-and interaction with people including
-
-00:07:29.759 --> 00:07:31.599
-around this conference so thank you
-
-00:07:31.599 --> 00:07:33.759
-to those who we've had discussions with
-
-00:07:33.759 --> 00:07:35.599
-um
-
-00:07:35.599 --> 00:07:37.680
-so future work okay so maybe you
-
-00:07:37.680 --> 00:07:38.639
-remember I didn't
-
-00:07:38.639 --> 00:07:41.039
-give a talk a few years back on arcana
-
-00:07:41.039 --> 00:07:42.400
-so what what
-
-00:07:42.400 --> 00:07:44.479
-might this have to do with org mode and
-
-00:07:44.479 --> 00:07:45.919
-that's always the question one asks
-
-00:07:45.919 --> 00:07:47.039
-about arcata
-
-00:07:47.039 --> 00:07:48.720
-well so arcana one of the things it does
-
-00:07:48.720 --> 00:07:50.319
-is transclusions and so that could be
-
-00:07:50.319 --> 00:07:51.680
-actually very helpful
-
-00:07:51.680 --> 00:07:54.000
-in connection with this combined notes
-
-00:07:54.000 --> 00:07:55.520
-and write-up workflow so you might have
-
-00:07:55.520 --> 00:07:56.479
-a
-
-00:07:56.479 --> 00:07:58.400
-forward mode uh and some of these
-
-00:07:58.400 --> 00:08:00.800
-results we got back as raw results
-
-00:08:00.800 --> 00:08:03.199
-could go right into your write up in a
-
-00:08:03.199 --> 00:08:03.919
-kind of
-
-00:08:03.919 --> 00:08:07.520
-convenient way at a level above um
-
-00:08:07.520 --> 00:08:09.039
-transparently a level above the notebook
-
-00:08:09.039 --> 00:08:11.280
-so you'd have the notebook alongside the
-
-00:08:11.280 --> 00:08:13.440
-write-up in that case
-
-00:08:13.440 --> 00:08:15.599
-which is a sort of variation on the
-
-00:08:15.599 --> 00:08:16.800
-literate programming
-
-00:08:16.800 --> 00:08:19.120
-workflow this is speculative who knows
-
-00:08:19.120 --> 00:08:20.000
-the other thought is
-
-00:08:20.000 --> 00:08:22.080
-it just relates to the idea of network
-
-00:08:22.080 --> 00:08:23.520
-programming so we can imagine these
-
-00:08:23.520 --> 00:08:24.800
-networks of
-
-00:08:24.800 --> 00:08:26.639
-computational nodes maybe sitting inside
-
-00:08:26.639 --> 00:08:28.800
-of orgrome calling each other
-
-00:08:28.800 --> 00:08:31.199
-um and you would want to maintain some
-
-00:08:31.199 --> 00:08:32.560
-kind of model of that
-
-00:08:32.560 --> 00:08:34.959
-process and a sort of general question
-
-00:08:34.959 --> 00:08:36.640
-is how do we have a remote control for
-
-00:08:36.640 --> 00:08:38.320
-long-running processes you could do that
-
-00:08:38.320 --> 00:08:40.240
-in lisp or closure but
-
-00:08:40.240 --> 00:08:42.479
-maybe we could have something a little
-
-00:08:42.479 --> 00:08:44.080
-bit like that here
-
-00:08:44.080 --> 00:08:45.839
-um so conclusions what have we actually
-
-00:08:45.839 --> 00:08:48.080
-addressed well uh we addressed uh
-
-00:08:48.080 --> 00:08:50.080
-accessing any long-running process with
-
-00:08:50.080 --> 00:08:51.600
-a simple or mode interface
-
-00:08:51.600 --> 00:08:52.959
-obviously we're not the only people to
-
-00:08:52.959 --> 00:08:54.880
-think about notebooks but we think that
-
-00:08:54.880 --> 00:08:56.880
-emacs has some advantages
-
-00:08:56.880 --> 00:08:58.880
-related to reproducible research and
-
-00:08:58.880 --> 00:09:01.120
-interdisciplinary collaboration so let's
-
-00:09:01.120 --> 00:09:01.680
-just
-
-00:09:01.680 --> 00:09:03.120
-say that we think something is
-
-00:09:03.120 --> 00:09:04.880
-reproducible if it's actually teachable
-
-00:09:04.880 --> 00:09:07.200
-to someone new and they can do it
-
-00:09:07.200 --> 00:09:09.279
-org mode seems very useful for that many
-
-00:09:09.279 --> 00:09:11.680
-of the other talks have touched on this
-
-00:09:11.680 --> 00:09:14.399
-interdisciplinary collaboration is great
-
-00:09:14.399 --> 00:09:16.000
-this was an interdisciplinary
-
-00:09:16.000 --> 00:09:17.839
-collaboration on some level but
-
-00:09:17.839 --> 00:09:19.680
-what about you know future work for
-
-00:09:19.680 --> 00:09:21.600
-bringing in scenario planners simulation
-
-00:09:21.600 --> 00:09:22.320
-scientists
-
-00:09:22.320 --> 00:09:24.480
-and local farmers and building something
-
-00:09:24.480 --> 00:09:25.519
-that they can all
-
-00:09:25.519 --> 00:09:27.200
-use that's more than the sum of the
-
-00:09:27.200 --> 00:09:29.200
-parts so a little
-
-00:09:29.200 --> 00:09:30.720
-future work for everybody else here so
-
-00:09:30.720 --> 00:09:32.160
-we think science should be widely
-
-00:09:32.160 --> 00:09:33.120
-teachable
-
-00:09:33.120 --> 00:09:34.560
-shareable semi-automated
-
-00:09:34.560 --> 00:09:36.720
-transdisciplinary and real time
-
-00:09:36.720 --> 00:09:40.399
-like EmacsConf so you can get in touch
-
-00:09:40.399 --> 00:09:43.279
-uh via these methods and the code which
-
-00:09:43.279 --> 00:09:44.560
-is very much early stage work in
-
-00:09:44.560 --> 00:09:45.200
-progress
-
-00:09:45.200 --> 00:09:46.640
-as this was meant to be an experience
-
-00:09:46.640 --> 00:09:48.800
-report not a it's all done here it is
-
-00:09:48.800 --> 00:09:49.920
-polished report
-
-00:09:49.920 --> 00:09:51.680
-um it's also online if you'd like to
-
-00:09:51.680 --> 00:09:53.360
-have a look so that's the end of the
-
-00:09:53.360 --> 00:09:54.560
-talk and I don't know if there's time
-
-00:09:54.560 --> 00:09:55.279
-for questions
-
-00:09:55.279 --> 00:09:57.440
-or not but um I'm at your disposal now
-
-00:09:57.440 --> 00:10:00.240
-thank you you are now unmuted
-
-00:10:00.240 --> 00:10:04.079
-um many thanks for the tough job
-
-00:10:04.079 --> 00:10:07.120
-uh let's see we have about I think four
-
-00:10:07.120 --> 00:10:08.880
-minutes four questions
-
-00:10:08.880 --> 00:10:10.880
-um and we have a couple of questions on
-
-00:10:10.880 --> 00:10:12.320
-the pad would you like to read them
-
-00:10:12.320 --> 00:10:14.240
-yourself or should I read them to you
-
-00:10:14.240 --> 00:10:16.560
-uh just for sake of easy management why
-
-00:10:16.560 --> 00:10:18.079
-don't you read them out if that's okay
-
-00:10:18.079 --> 00:10:21.279
-yeah sure uh so they ask have you looked
-
-00:10:21.279 --> 00:10:22.240
-into trying
-
-00:10:22.240 --> 00:10:25.440
-sage math I've long uh long wanted
-
-00:10:25.440 --> 00:10:33.760
-nothing org files
-
-00:10:33.760 --> 00:10:36.959
-right and I and I wrote the answer that
-
-00:10:36.959 --> 00:10:39.279
-we should be possible because one can
-
-00:10:39.279 --> 00:10:44.839
-call it from a command
-
-00:10:44.839 --> 00:10:46.399
-okay
-
-00:10:46.399 --> 00:10:48.640
-and I see there's another sagemath
-
-00:10:48.640 --> 00:10:50.079
-question that you seem to have answered
-
-00:10:50.079 --> 00:10:52.100
-as well so I guess I won't repeat that
-
-00:10:52.100 --> 00:10:54.880
-[Music]
-
-00:10:54.880 --> 00:10:56.959
-there's let's not forget about embedded
-
-00:10:56.959 --> 00:11:00.640
-calc in emacs
-
-00:11:00.640 --> 00:11:03.680
-so so the first demos actually were with
-
-00:11:03.680 --> 00:11:05.040
-calc so that's that's
-
-00:11:05.040 --> 00:11:06.640
-useful uh although I think it was a
-
-00:11:06.640 --> 00:11:07.839
-different kind of a different command
-
-00:11:07.839 --> 00:11:08.240
-line
-
-00:11:08.240 --> 00:11:11.839
-well that was the next calc yeah
-
-00:11:11.839 --> 00:11:13.839
-so sure there is there is calc so that
-
-00:11:13.839 --> 00:11:15.680
-would be calculus and
-
-00:11:15.680 --> 00:11:19.120
-calc is already in org mode yeah
-
-00:11:19.120 --> 00:11:25.680
-yeah yeah
-
-00:11:25.680 --> 00:11:39.760
-um still looking for questions
-
-00:11:39.760 --> 00:11:41.760
-okay I think that's about it I don't see
-
-00:11:41.760 --> 00:11:44.320
-any questions on the ether pad
-
-00:11:44.320 --> 00:11:47.440
-and let's see
-
-00:11:47.440 --> 00:11:53.040
-anything on irc
-
-00:11:53.040 --> 00:11:55.760
-um nothing but phrases and everyone
-
-00:11:55.760 --> 00:11:56.720
-thanking you
-
-00:11:56.720 --> 00:11:59.120
-thank you all right you're welcome
-
-00:11:59.120 --> 00:12:00.240
-thanks a lot uh
-
-00:12:00.240 --> 00:12:02.880
-we'll see you guys around then cheers
-
-00:12:02.880 --> 00:12:06.800
-and see you around
diff --git a/2020/subtitles/emacsconf-2020--13-experience-report-steps-to-emacs-hyper-notebooks--joseph-corneli-raymond-puzio-cameron-ray-smith.vtt b/2020/subtitles/emacsconf-2020--13-experience-report-steps-to-emacs-hyper-notebooks--joseph-corneli-raymond-puzio-cameron-ray-smith.vtt
new file mode 100644
index 00000000..15513080
--- /dev/null
+++ b/2020/subtitles/emacsconf-2020--13-experience-report-steps-to-emacs-hyper-notebooks--joseph-corneli-raymond-puzio-cameron-ray-smith.vtt
@@ -0,0 +1,968 @@
+WEBVTT
+
+00:00:00.320 --> 00:00:03.280
+Joe: Hi, I'm Joe Corneli.
+
+00:00:03.280 --> 00:00:06.879
+This is work I did with Ray Puzio and
+Cameron Smith.
+
+00:00:06.879 --> 00:00:11.123
+They're the main protagonists in
+this story.
+
+00:00:11.123 --> 00:00:14.960
+They are researchers who've been working
+
+00:00:14.960 --> 00:00:17.490
+on theoretical biology.
+
+00:00:17.490 --> 00:00:21.357
+In a typical project, they may use
+Maxima and Julia.
+
+00:00:21.357 --> 00:00:24.800
+Their work combines biology, physics and
+computer science.
+
+00:00:24.800 --> 00:00:29.439
+The latest work-in-progress is on
+branching processes for
+
+00:00:29.439 --> 00:00:30.800
+cancer modeling.
+
+00:00:30.800 --> 00:00:34.719
+How can Emacs possibly help?
+
+00:00:34.719 --> 00:00:37.360
+Let's have a look. Moving code
+
+00:00:37.360 --> 00:00:38.399
+and data between these different
+
+00:00:38.399 --> 00:00:39.680
+programs by hand is
+
+00:00:39.680 --> 00:00:42.000
+annoying. Separate workflows for
+
+00:00:42.000 --> 00:00:44.399
+writing up notes and preparing
+publications
+
+00:00:44.399 --> 00:00:46.000
+is perhaps even more annoying. All of
+
+00:00:46.000 --> 00:00:48.640
+it is time consuming and error-prone.
+
+00:00:48.640 --> 00:00:52.000
+So what about maybe using Jupyter?
+
+00:00:52.000 --> 00:00:53.760
+We found something called Script of
+
+00:00:53.760 --> 00:00:55.199
+Scripts. It solves some of those
+
+00:00:55.199 --> 00:00:58.399
+problems because you can use
+
+00:00:58.399 --> 00:01:01.120
+Maxima and Julia together, but we were
+
+00:01:01.120 --> 00:01:02.640
+quite happy to explore Emacs-based
+
+00:01:02.640 --> 00:01:04.890
+solutions, being Emcas enthusiasts
+
+00:01:04.890 --> 00:01:07.760
+We even got Cameron to be
+enthusiastic about
+
+00:01:07.760 --> 00:01:10.057
+doing Emacs, so that went nice.
+
+00:01:10.057 --> 00:01:12.400
+Here's a little feature grid
+
+00:01:12.400 --> 00:01:15.360
+of Emacs + Org versus your
+
+00:01:15.360 --> 00:01:18.390
+generic tools that are in a
+
+00:01:18.390 --> 00:01:20.123
+different, more general ecosystem.
+
+00:01:20.123 --> 00:01:21.520
+As you can see, it's quite
+
+00:01:21.520 --> 00:01:22.957
+feature-complete. You've got your
+
+00:01:22.957 --> 00:01:25.520
+maxima-mode, julia-mode. You can use both of them
+
+00:01:25.520 --> 00:01:27.119
+inside of org-mode.
+
+00:01:27.119 --> 00:01:28.720
+You can present things with org-tree-slide.
+
+00:01:28.720 --> 00:01:31.490
+You can set up a wiki inside of org-roam.
+
+00:01:31.490 --> 00:01:33.680
+This is one I found
+
+00:01:33.680 --> 00:01:35.759
+rather recently. You can even use
+
+00:01:35.759 --> 00:01:37.759
+compatibly with org-roam, something called
+
+00:01:37.759 --> 00:01:42.159
+logseq, which is in the browser, so that's
+nice.
+
+00:01:42.159 --> 00:01:44.957
+You can do real-time collaborative
+editing,
+
+00:01:44.957 --> 00:01:47.657
+either in a kind of pairing style
+
+00:01:47.657 --> 00:01:49.280
+or in a more Etherpad style.
+
+00:01:49.280 --> 00:01:51.520
+Obviously, you can manage your references.
+
+00:01:51.520 --> 00:01:53.457
+You can typeset whatever you want.
+
+00:01:53.457 --> 00:01:55.759
+You can publish work in progress on
+a blog.
+
+00:01:55.759 --> 00:01:57.439
+Firn is another one of these
+
+00:01:57.439 --> 00:01:59.790
+external Org Mode tools.
+
+00:01:59.790 --> 00:02:00.560
+It's not actually in Emacs,
+
+00:02:00.560 --> 00:02:03.557
+but works with Org Mode stuff. And, you know...
+
+00:02:03.557 --> 00:02:05.657
+So we're good to go with all of that.
+
+00:02:05.657 --> 00:02:07.423
+So what does that look like? Well,
+
+00:02:07.423 --> 00:02:09.423
+here's a little example from before
+
+00:02:09.423 --> 00:02:12.800
+they were doing... before we started
+really thinking
+
+00:02:12.800 --> 00:02:13.890
+seriously about this stuff.
+
+00:02:13.890 --> 00:02:15.599
+So this is just Maxima.
+
+00:02:15.599 --> 00:02:17.440
+Well, Maxima doesn't have a long running
+
+00:02:17.440 --> 00:02:19.280
+process by default. If you've ever used
+
+00:02:19.280 --> 00:02:22.480
+Python, you have something called
+sessions.
+
+00:02:22.480 --> 00:02:23.920
+They don't have that for Maxima, at least
+
+00:02:23.920 --> 00:02:24.959
+not by default.
+
+00:02:24.959 --> 00:02:27.599
+So how... What was the workaround?
+
+00:02:27.599 --> 00:02:29.360
+There's this thing called
+
+00:02:29.360 --> 00:02:32.480
+solve-for-u here
+
+00:02:32.480 --> 00:02:34.879
+that shows up down below again in these
+
+00:02:34.879 --> 00:02:36.319
+angle brackets, which you've seen maybe
+
+00:02:36.319 --> 00:02:37.360
+in someone else's talk,
+
+00:02:37.360 --> 00:02:40.480
+which means go to the previous
+
+00:02:40.480 --> 00:02:41.920
+thing that was named solve-for-u
+
+00:02:41.920 --> 00:02:43.920
+and do that all over again, so they do
+
+00:02:43.920 --> 00:02:45.280
+that over again.
+
+00:02:45.280 --> 00:02:47.440
+Here's the little Maxima code for
+
+00:02:47.440 --> 00:02:48.990
+defining usol, so you've now
+
+00:02:48.990 --> 00:02:51.723
+defined usol, and then you can use it
+
+00:02:51.723 --> 00:02:54.000
+in the next expression. You get out a
+nice juicy
+
+00:02:54.000 --> 00:02:56.560
+zero at the end. It's a little bit
+
+00:02:57.200 --> 00:02:58.959
+like a partridge in a pear tree to have to
+
+00:02:58.959 --> 00:03:00.640
+redefine everything every time.
+
+00:03:00.640 --> 00:03:02.490
+So this is clearly at the level of
+
+00:03:02.490 --> 00:03:04.159
+work-around. Maybe just
+
+00:03:04.159 --> 00:03:06.223
+one more time looking through
+
+00:03:06.223 --> 00:03:11.599
+that stuff.
+
+00:03:11.599 --> 00:03:13.760
+Sorry. So, looking through that stuff,
+
+00:03:13.760 --> 00:03:15.280
+this is... We're going to need something
+
+00:03:15.280 --> 00:03:17.200
+like that, probably, for stitching
+
+00:03:17.200 --> 00:03:19.599
+Maxima and Julia together. so it's
+
+00:03:19.599 --> 00:03:20.890
+good to look a little bit
+
+00:03:20.890 --> 00:03:22.590
+about how that might work.
+
+00:03:22.590 --> 00:03:23.920
+First of all, you can cache
+
+00:03:23.920 --> 00:03:25.680
+results, so if you wanted to save the
+
+00:03:25.680 --> 00:03:28.480
+date out of block one at a certain
+time and
+
+00:03:28.480 --> 00:03:30.990
+then use it again later...
+
+00:03:30.990 --> 00:03:33.280
+At the time when I ran this code,
+
+00:03:33.280 --> 00:03:34.640
+you can see I've got two slightly
+
+00:03:34.640 --> 00:03:36.623
+different time stamps down below.
+
+00:03:36.623 --> 00:03:38.323
+One's the cached result, and the other
+
+00:03:38.323 --> 00:03:40.319
+was the result of reevaluating
+
+00:03:40.319 --> 00:03:42.640
+the block. So you can move things around.
+
+00:03:43.760 --> 00:03:46.000
+That's going to be useful. But you know,
+
+00:03:46.000 --> 00:03:46.923
+that's not really the main problem.
+
+00:03:46.923 --> 00:03:48.080
+The main problem is
+
+00:03:48.080 --> 00:03:50.799
+making Maxima long-running.
+
+00:03:50.799 --> 00:03:53.920
+The core of this talk is a new observant
+
+00:03:53.920 --> 00:03:56.400
+facility, which is a general purpose
+
+00:03:56.400 --> 00:03:59.280
+way to do that kind of thing, which
+
+00:03:59.280 --> 00:04:01.823
+involves a very simple change to ob-core.
+
+00:04:01.823 --> 00:04:04.239
+We'll give a quick
+
+00:04:04.239 --> 00:04:05.360
+overview of that and show
+
+00:04:05.360 --> 00:04:08.480
+an example. So here's the example,
+
+00:04:08.480 --> 00:04:11.760
+a very simple sort of silly example.
+
+00:04:11.760 --> 00:04:12.957
+What does it mean to have
+
+00:04:12.957 --> 00:04:13.990
+a long-running process?
+
+00:04:13.990 --> 00:04:14.640
+Here, I've set this
+
+00:04:14.640 --> 00:04:18.560
+display2d to be false, which just
+means that
+
+00:04:18.560 --> 00:04:19.440
+things are going to come
+
+00:04:19.440 --> 00:04:22.320
+come across in 1d. Then I ask it to
+
+00:04:22.320 --> 00:04:25.199
+expand something. I get LaTeX
+by default.
+
+00:04:25.199 --> 00:04:27.280
+So that's what it means. It's that I've sent
+
+00:04:27.280 --> 00:04:28.639
+something in and it's going to come
+
+00:04:28.639 --> 00:04:30.240
+across in one view, which is great.
+
+00:04:30.240 --> 00:04:32.080
+Maybe you'll also notice that there's
+
+00:04:32.080 --> 00:04:34.560
+no semicolon, if you're a Maxima fan,
+
+00:04:34.560 --> 00:04:36.720
+and things are coming across as TeX.
+
+00:04:36.720 --> 00:04:38.400
+So those were some little bonus features.
+
+00:04:38.400 --> 00:04:40.320
+I'll show you how that works later.
+
+00:04:41.040 --> 00:04:45.440
+The change to ob-core is as follows.
+
+00:04:45.440 --> 00:04:48.880
+Actually, this should say...
+
+00:04:48.880 --> 00:04:51.520
+Instead of stream here, it should say
+
+00:04:51.520 --> 00:04:54.800
+servant. Sorry. We tried an experimental
+
+00:04:54.800 --> 00:04:56.160
+version which was called stream, so now it's
+
+00:04:56.160 --> 00:04:58.160
+called servant. But all it does is it
+
+00:04:58.160 --> 00:05:01.520
+overrides org-babel-execute lang for
+
+00:05:01.520 --> 00:05:02.639
+arbitrary lang
+
+00:05:02.639 --> 00:05:05.919
+if you have a servant
+
+00:05:05.919 --> 00:05:07.840
+in your params. So that's the
+
+00:05:07.840 --> 00:05:09.759
+change that hasn't been
+
+00:05:09.759 --> 00:05:11.919
+pushed out or sent as a patch to anybody,
+
+00:05:11.919 --> 00:05:13.759
+but it's a pretty minor change.
+
+00:05:13.759 --> 00:05:16.960
+Here's an overview without the code.
+
+00:05:16.960 --> 00:05:19.080
+Just a high level overview of
+
+00:05:19.080 --> 00:05:20.720
+observant.el.
+
+00:05:20.720 --> 00:05:22.160
+It stores information about these
+
+00:05:22.160 --> 00:05:24.479
+processes in a hash table.
+
+00:05:24.479 --> 00:05:26.080
+It can do pre-processing and
+
+00:05:26.080 --> 00:05:27.600
+post-processing.
+
+00:05:27.600 --> 00:05:29.759
+It does all these things. It stores
+
+00:05:29.759 --> 00:05:30.720
+the output.
+
+00:05:30.720 --> 00:05:32.479
+I mentioned here that, in principle, we
+
+00:05:32.479 --> 00:05:34.080
+could store lots of output and have a
+
+00:05:34.080 --> 00:05:35.657
+kind of browsable history,
+
+00:05:35.657 --> 00:05:37.790
+although we don't do that
+presently.
+
+00:05:37.790 --> 00:05:38.790
+But that's what observant does.
+
+00:05:38.790 --> 00:05:40.639
+It does what you might expect.
+
+00:05:41.440 --> 00:05:46.190
+Here's the Maxima on-ramp
+
+00:05:46.190 --> 00:05:48.160
+to get Maxima brought in.
+
+00:05:48.160 --> 00:05:49.257
+You have to obviously have
+
+00:05:49.257 --> 00:05:51.360
+a Maxima process you can call.
+
+00:05:51.360 --> 00:05:54.960
+puthash... this is the preprocessing
+
+00:05:54.960 --> 00:05:57.840
+thing I mentioned, adding in some Tex
+
+00:05:57.840 --> 00:05:58.960
+and adding in--
+
+00:05:58.960 --> 00:06:01.520
+or deleting, rather--a substring.
+
+00:06:01.520 --> 00:06:03.759
+Here is why you delete the
+substring.
+
+00:06:03.759 --> 00:06:06.960
+It's because Maxima thinks it's a good
+
+00:06:06.960 --> 00:06:08.240
+idea to tell you false
+
+00:06:08.240 --> 00:06:10.080
+once you run check on things.
+
+00:06:10.080 --> 00:06:11.759
+You've got to delete that back out to
+
+00:06:11.759 --> 00:06:13.680
+get something coherent out of it.
+
+00:06:13.680 --> 00:06:16.960
+So this is how to set up Maxima.
+
+00:06:16.960 --> 00:06:19.157
+That's enough, really, of the demo.
+
+00:06:19.157 --> 00:06:20.000
+It's not really a demo for
+
+00:06:20.000 --> 00:06:21.919
+show and tell, but as this is an
+
+00:06:21.919 --> 00:06:23.600
+experience report, I wanted to talk about
+
+00:06:23.600 --> 00:06:25.440
+the experience of doing this.
+
+00:06:25.440 --> 00:06:28.080
+Some negatives, like we tried to
+
+00:06:28.080 --> 00:06:30.160
+get Emacs Jupyter working
+
+00:06:30.160 --> 00:06:34.190
+prior to working on observant.
+
+00:06:34.190 --> 00:06:36.000
+We couldn't get it doing
+
+00:06:36.000 --> 00:06:37.919
+everything we wanted, despite a bit of
+
+00:06:37.919 --> 00:06:40.160
+heavy lifting and debugging and stuff.
+
+00:06:40.160 --> 00:06:42.880
+So that's not finished. That was a bit
+difficult.
+
+00:06:42.880 --> 00:06:45.360
+On the other hand, working on
+
+00:06:45.360 --> 00:06:47.759
+observant was fun, pretty lightweight,
+
+00:06:47.759 --> 00:06:48.479
+and easy.
+
+00:06:48.479 --> 00:06:50.400
+We got some experience co-editing
+
+00:06:50.400 --> 00:06:52.400
+things with these real-time tools.
+
+00:06:52.400 --> 00:06:55.919
+Obviously, the stack is somewhat work in
+progress.
+
+00:06:55.919 --> 00:06:58.000
+I just wanted to give a shout out to
+
+00:06:58.000 --> 00:07:00.800
+crdt which was really fun,
+
+00:07:00.800 --> 00:07:03.919
+and Qiantan was making
+
+00:07:03.919 --> 00:07:06.057
+bug fixes for that as we go.
+
+00:07:06.057 --> 00:07:08.960
+Similarly, for firn and logseq,
+the maintainers
+
+00:07:08.960 --> 00:07:10.160
+were really responsive,
+
+00:07:10.160 --> 00:07:12.960
+so that was nice. We did try to
+
+00:07:12.960 --> 00:07:14.560
+get Emacs running in the browser,
+
+00:07:14.560 --> 00:07:15.840
+thinking it would be really nice for
+
+00:07:15.840 --> 00:07:19.290
+people who didn't want to install it
+
+00:07:19.290 --> 00:07:21.120
+to get a chance to just try it,
+
+00:07:21.120 --> 00:07:23.120
+but actually, browsers capture things
+
+00:07:23.120 --> 00:07:27.120
+like C-n, so that was a bit annoying.
+
+00:07:27.120 --> 00:07:28.479
+But we did get lots of great feedback
+
+00:07:28.479 --> 00:07:29.759
+and interaction with people, including
+
+00:07:29.759 --> 00:07:31.599
+around this conference. Thank you
+
+00:07:31.599 --> 00:07:33.759
+to those who we've had discussions with.
+
+00:07:35.599 --> 00:07:37.680
+So, future work. Okay, so... Maybe you
+
+00:07:37.680 --> 00:07:41.039
+remember, I gave a talk a few years back
+on Arxana.
+
+00:07:41.039 --> 00:07:44.479
+What might this have to do with Org
+Mode?
+
+00:07:44.479 --> 00:07:45.919
+That's always the question one asks
+
+00:07:45.919 --> 00:07:47.039
+about Arxana.
+
+00:07:47.039 --> 00:07:48.720
+Arxana... One of the things it does
+
+00:07:48.720 --> 00:07:50.319
+is transclusions, and so that could be
+
+00:07:50.319 --> 00:07:51.680
+actually very helpful
+
+00:07:51.680 --> 00:07:54.000
+in connection with this "combined notes
+
+00:07:54.000 --> 00:07:55.520
+and write-up" workflow. So you might have
+
+00:07:55.520 --> 00:07:58.400
+an Org Mode. Some of these
+
+00:07:58.400 --> 00:08:00.800
+results we got back as raw results
+
+00:08:00.800 --> 00:08:03.199
+could go right into your write-up in a
+
+00:08:03.919 --> 00:08:07.520
+convenient way, at a level above--
+
+00:08:07.520 --> 00:08:09.039
+transparently, a level above the notebook.
+
+00:08:09.039 --> 00:08:11.280
+So you'd have the notebook alongside the
+
+00:08:11.280 --> 00:08:13.440
+write-up in that case,
+
+00:08:13.440 --> 00:08:15.599
+which is a variation on the
+
+00:08:15.599 --> 00:08:17.423
+literate programming workflow.
+
+00:08:17.423 --> 00:08:19.120
+This is speculative. Who knows?
+
+00:08:19.120 --> 00:08:20.000
+The other thought is,
+
+00:08:20.000 --> 00:08:22.080
+it just relates to the idea of network
+
+00:08:22.080 --> 00:08:23.520
+programming. So we can imagine these
+
+00:08:23.520 --> 00:08:25.990
+networks of computational nodes
+
+00:08:25.990 --> 00:08:27.623
+sitting inside of org-roam,
+
+00:08:27.623 --> 00:08:28.800
+calling each other.
+
+00:08:28.800 --> 00:08:31.199
+You would want to maintain some
+
+00:08:31.199 --> 00:08:33.357
+kind of model of that process.
+
+00:08:33.357 --> 00:08:36.640
+A general question is: how do we have a
+remote control for
+
+00:08:36.640 --> 00:08:37.957
+long-running processes?
+
+00:08:37.957 --> 00:08:38.320
+You could do that
+
+00:08:38.320 --> 00:08:39.857
+in Lisp or Clojure,
+
+00:08:39.857 --> 00:08:41.657
+but maybe we could have something
+
+00:08:41.657 --> 00:08:44.080
+a little bit like that here.
+
+00:08:44.080 --> 00:08:45.839
+Conclusions: what have we actually
+
+00:08:45.839 --> 00:08:48.080
+addressed? Well, we addressed
+
+00:08:48.080 --> 00:08:50.080
+accessing any long-running process with
+
+00:08:50.080 --> 00:08:51.600
+a simple Org Mode interface.
+
+00:08:51.600 --> 00:08:52.959
+Obviously, we're not the only people to
+
+00:08:52.959 --> 00:08:54.880
+think about notebooks, but we think that
+
+00:08:54.880 --> 00:08:56.880
+Emacs has some advantages
+
+00:08:56.880 --> 00:08:58.880
+related to reproducible research and
+
+00:08:58.880 --> 00:09:00.757
+interdisciplinary collaboration.
+
+00:09:00.757 --> 00:09:02.590
+Let's just say that we think
+
+00:09:02.590 --> 00:09:04.880
+something is reproducible if it's
+actually teachable
+
+00:09:04.880 --> 00:09:07.200
+to someone new and they can do it.
+
+00:09:07.200 --> 00:09:09.190
+Org Mode seems very useful for that.
+
+00:09:09.190 --> 00:09:11.680
+Many of the other talks have touched
+on this.
+
+00:09:11.680 --> 00:09:14.399
+Interdisciplinary collaboration is great.
+
+00:09:14.399 --> 00:09:16.000
+This was an interdisciplinary
+
+00:09:16.000 --> 00:09:17.839
+collaboration on some level, but
+
+00:09:17.839 --> 00:09:19.680
+what about future work for
+
+00:09:19.680 --> 00:09:21.190
+bringing in scenario planners,
+
+00:09:21.190 --> 00:09:22.320
+simulation scientists,
+
+00:09:22.320 --> 00:09:24.480
+and local farmers, and building something
+
+00:09:24.480 --> 00:09:26.023
+that they can all use
+
+00:09:26.023 --> 00:09:27.857
+that's more than the sum of the
+parts?
+
+00:09:27.857 --> 00:09:30.720
+So a little future work for everybody
+else here.
+
+00:09:30.720 --> 00:09:32.160
+We think science should be widely
+
+00:09:32.160 --> 00:09:34.560
+teachable, shareable, semi-automated,
+
+00:09:34.560 --> 00:09:36.720
+transdisciplinary, and real-time
+
+00:09:36.720 --> 00:09:40.399
+like EmacsConf. So you can get in touch
+
+00:09:40.399 --> 00:09:43.279
+via these methods. The code--which
+
+00:09:43.279 --> 00:09:45.200
+is very much early stage work in
+progress,
+
+00:09:45.200 --> 00:09:46.640
+as this was meant to be an experience
+
+00:09:46.640 --> 00:09:48.800
+report, not a "it's all done, here, it is
+
+00:09:48.800 --> 00:09:49.920
+polished" report--
+
+00:09:49.920 --> 00:09:51.680
+it's also online if you'd like to
+
+00:09:51.680 --> 00:09:53.360
+have a look. That's the end of the
+
+00:09:53.360 --> 00:09:54.560
+talk. I don't know if there's time
+
+00:09:54.560 --> 00:09:57.440
+for questions or not, but um I'm at your
+disposal now.
+
+00:09:57.440 --> 00:10:00.240
+Thank you.
+
+00:10:00.240 --> 00:10:04.079
+(Amin: Many thanks for the tough job.
+
+00:10:04.079 --> 00:10:07.120
+Let's see. We have about I think four
+
+00:10:07.120 --> 00:10:08.880
+minutes for questions,
+
+00:10:08.880 --> 00:10:10.880
+and we have a couple of questions on
+
+00:10:10.880 --> 00:10:12.320
+the pad. Would you like to read them
+
+00:10:12.320 --> 00:10:14.240
+yourself or should I read them to you?)
+
+00:10:14.240 --> 00:10:16.423
+Just for the sake of easy management
+
+00:10:16.423 --> 00:10:18.079
+why don't you read them out, if
+that's okay?
+
+00:10:18.079 --> 00:10:21.279
+(Amin: yeah, sure. They ask, "Have you looked
+
+00:10:21.279 --> 00:10:25.440
+into trying Sage Math? I've long wanted
+
+00:10:25.440 --> 00:10:33.760
+to use Sage Math in Org files.")
+
+00:10:33.760 --> 00:10:36.959
+Ray: Right. I wrote the answer that
+
+00:10:36.959 --> 00:10:39.279
+it should be possible because one can
+
+00:10:39.279 --> 00:10:44.839
+call it from a command.
+
+00:10:44.839 --> 00:10:48.190
+(Amin: okay, and I see there's
+
+00:10:48.190 --> 00:10:50.079
+another Sage Math question that you seem
+to have answered
+
+00:10:50.079 --> 00:10:52.100
+as well, so I guess I won't repeat that.
+
+00:10:54.880 --> 00:10:56.959
+There's... "Let's not forget about embedded
+
+00:10:56.959 --> 00:11:00.640
+Calc in Emacs.")
+
+00:11:00.640 --> 00:11:05.040
+Joe: So the first demos actually were with
+Calc.
+
+00:11:05.040 --> 00:11:06.640
+That's useful. Although I think it was a
+
+00:11:06.640 --> 00:11:08.240
+different--kind of a different command
+line.
+
+00:11:08.240 --> 00:11:11.839
+Ray: Well, that was UNIX Calc.
+
+00:11:11.839 --> 00:11:13.839
+Joe: So, sure, there is calc, so that...
+
+00:11:15.680 --> 00:11:19.120
+Ray: Calc is already in Org Mode.
+
+00:11:25.680 --> 00:11:39.760
+(Amin: Still looking for questions.
+
+00:11:39.760 --> 00:11:41.760
+Okay, I think that's about it. I don't see
+
+00:11:41.760 --> 00:11:44.320
+any questions on the Etherpad.
+
+00:11:44.320 --> 00:11:47.440
+And let's see...
+
+00:11:47.440 --> 00:11:53.040
+Anything on irc?
+
+00:11:53.040 --> 00:11:55.760
+Nothing but praises and everyone
+
+00:11:55.760 --> 00:11:57.290
+thanking you. Thank you.)
+
+00:11:57.290 --> 00:11:59.120
+Ray: all right, you're welcome.
+
+00:11:59.120 --> 00:12:00.240
+Joe: Thanks a lot!
+
+00:12:00.240 --> 00:12:01.923
+We'll see you guys around then.
+
+00:12:01.923 --> 00:12:06.800
+Amin: Cheers, and see you around!
diff --git a/2020/subtitles/emacsconf-2020--14-readme-driven-design--adam-ard-autogen.vtt b/2020/subtitles/emacsconf-2020--14-readme-driven-design--adam-ard-autogen.vtt
deleted file mode 100644
index 3179635f..00000000
--- a/2020/subtitles/emacsconf-2020--14-readme-driven-design--adam-ard-autogen.vtt
+++ /dev/null
@@ -1,1426 +0,0 @@
-WEBVTT
-
-00:00:03.600 --> 00:00:04.400
-hello
-
-00:00:04.400 --> 00:00:06.560
-welcome to readme driven design in Emacs
-
-00:00:06.560 --> 00:00:08.400
-by adam aard
-
-00:00:08.400 --> 00:00:10.800
-if you're a programmer you're accustomed
-
-00:00:10.800 --> 00:00:12.559
-to putting a readme file at the root of
-
-00:00:12.559 --> 00:00:13.759
-your project
-
-00:00:13.759 --> 00:00:16.400
-and it's usually a markdown file but if
-
-00:00:16.400 --> 00:00:17.600
-you use an org
-
-00:00:17.600 --> 00:00:20.720
-more an org mode file instead you can
-
-00:00:20.720 --> 00:00:22.560
-take advantage of the great features
-
-00:00:22.560 --> 00:00:24.400
-that org mode provides including
-
-00:00:24.400 --> 00:00:25.920
-literate programming
-
-00:00:25.920 --> 00:00:28.000
-which lets you generate your source code
-
-00:00:28.000 --> 00:00:31.840
-and markdown documentation dynamically
-
-00:00:31.840 --> 00:00:34.719
-I want to walk you through a little bit
-
-00:00:34.719 --> 00:00:37.120
-of what this looks like
-
-00:00:37.120 --> 00:00:39.440
-when you start a project especially if
-
-00:00:39.440 --> 00:00:41.280
-if you use something like github you
-
-00:00:41.280 --> 00:00:43.320
-begin with an automatically generated
-
-00:00:43.320 --> 00:00:47.039
-readme.md file so just delete that
-
-00:00:47.039 --> 00:00:50.239
-and instead create a readme.org file
-
-00:00:50.239 --> 00:00:51.920
-starting with an empty org file like you
-
-00:00:51.920 --> 00:00:54.800
-see here you can begin
-
-00:00:54.800 --> 00:00:56.559
-by recording important information about
-
-00:00:56.559 --> 00:00:59.440
-your project goals you can add diagrams
-
-00:00:59.440 --> 00:01:01.920
-code snippets to-do lists time tracking
-
-00:01:01.920 --> 00:01:03.520
-and much more
-
-00:01:03.520 --> 00:01:05.360
-I'm going to drop in some documentation
-
-00:01:05.360 --> 00:01:07.760
-that I r that I've written about
-
-00:01:07.760 --> 00:01:10.840
-about my project here so you can kind of
-
-00:01:10.840 --> 00:01:12.240
-see
-
-00:01:12.240 --> 00:01:15.280
-what this would look like
-
-00:01:15.280 --> 00:01:17.119
-so as you can see I have a title and a
-
-00:01:17.119 --> 00:01:20.320
-description and then a sub section
-
-00:01:20.320 --> 00:01:23.840
-as well as some code snippets
-
-00:01:23.840 --> 00:01:25.520
-and you can see that orgmo does a great
-
-00:01:25.520 --> 00:01:28.240
-job of formatting lists and
-
-00:01:28.240 --> 00:01:31.280
-code sections diagrams and so forth
-
-00:01:31.280 --> 00:01:33.920
-it's good or it's as good or better than
-
-00:01:33.920 --> 00:01:35.040
-markdown
-
-00:01:35.040 --> 00:01:37.520
-but when you use it in the Emacs you can
-
-00:01:37.520 --> 00:01:38.880
-do a lot more
-
-00:01:38.880 --> 00:01:40.479
-for example you can dynamically create
-
-00:01:40.479 --> 00:01:43.360
-diagrams using graphviz
-
-00:01:43.360 --> 00:01:45.200
-from a text description so if you go to
-
-00:01:45.200 --> 00:01:46.560
-this source block here
-
-00:01:46.560 --> 00:01:49.439
-and hit control c control c you'll see
-
-00:01:49.439 --> 00:01:51.439
-that we generate a
-
-00:01:51.439 --> 00:01:55.439
-diagram dynamically you can run
-
-00:01:55.439 --> 00:01:59.200
-so you can run these code snippets in
-
-00:01:59.200 --> 00:02:00.799
-place and get the results
-
-00:02:00.799 --> 00:02:03.040
-to show up inside of your your file
-
-00:02:03.040 --> 00:02:08.000
-which is a really powerful paradigm
-
-00:02:08.000 --> 00:02:10.640
-but most important most importantly for
-
-00:02:10.640 --> 00:02:11.520
-the
-
-00:02:11.520 --> 00:02:14.800
-purposes my purpose is here
-
-00:02:14.800 --> 00:02:17.200
-orgmo provides you the ability to do
-
-00:02:17.200 --> 00:02:19.520
-literate programming
-
-00:02:19.520 --> 00:02:21.440
-so take a quick look at this diagram
-
-00:02:21.440 --> 00:02:23.200
-that I generated here
-
-00:02:23.200 --> 00:02:25.360
-and gives you a quick overview of what I
-
-00:02:25.360 --> 00:02:27.520
-mean by literate programming
-
-00:02:27.520 --> 00:02:31.200
-and how I'm using it you can see
-
-00:02:31.200 --> 00:02:33.920
-that we start with a readme.org file on
-
-00:02:33.920 --> 00:02:34.720
-top
-
-00:02:34.720 --> 00:02:36.879
-at this point we can do one of two
-
-00:02:36.879 --> 00:02:37.920
-things
-
-00:02:37.920 --> 00:02:41.280
-tangle or weave tangle is used to
-
-00:02:41.280 --> 00:02:42.720
-describe the process of
-
-00:02:42.720 --> 00:02:46.319
-generating source code while weave
-
-00:02:46.319 --> 00:02:47.599
-is the process of generating
-
-00:02:47.599 --> 00:02:49.840
-documentation these are terms that
-
-00:02:49.840 --> 00:02:51.920
-donald knuth used
-
-00:02:51.920 --> 00:02:53.840
-and he's the one that came up with the
-
-00:02:53.840 --> 00:02:55.519
-idea of literate programming
-
-00:02:55.519 --> 00:02:59.920
-in the early 1980s
-
-00:02:59.920 --> 00:03:01.519
-but this is really all that there is to
-
-00:03:01.519 --> 00:03:04.480
-it you just
-
-00:03:04.480 --> 00:03:06.400
-who are simply using literate illiterate
-
-00:03:06.400 --> 00:03:07.840
-source file
-
-00:03:07.840 --> 00:03:10.319
-in this case the readme.org to generate
-
-00:03:10.319 --> 00:03:11.680
-the rest of the project
-
-00:03:11.680 --> 00:03:17.120
-the rest of the project files basically
-
-00:03:17.120 --> 00:03:20.959
-so let's dig in to the details of how
-
-00:03:20.959 --> 00:03:22.640
-this works
-
-00:03:22.640 --> 00:03:24.560
-and I hope you hopefully you'll see how
-
-00:03:24.560 --> 00:03:26.159
-cool this is
-
-00:03:26.159 --> 00:03:28.959
-so returning to the file here let's
-
-00:03:28.959 --> 00:03:31.120
-assume we have enough documentation now
-
-00:03:31.120 --> 00:03:32.080
-that we want to get started
-
-00:03:32.080 --> 00:03:34.159
-coding so maybe we'll just start with
-
-00:03:34.159 --> 00:03:35.519
-like a hello world
-
-00:03:35.519 --> 00:03:38.159
-app just so we can make sure that our
-
-00:03:38.159 --> 00:03:41.519
-environment is set up correctly
-
-00:03:41.519 --> 00:03:47.120
-so let's get started with a code block
-
-00:03:47.120 --> 00:03:49.519
-so I created a little snippet to help me
-
-00:03:49.519 --> 00:03:50.319
-add
-
-00:03:50.319 --> 00:03:52.239
-a source block for literate programming
-
-00:03:52.239 --> 00:03:53.599
-quickly
-
-00:03:53.599 --> 00:03:56.959
-and there's not much to it
-
-00:03:56.959 --> 00:03:58.799
-but there is some important annotations
-
-00:03:58.799 --> 00:04:01.599
-here so there's
-
-00:04:01.599 --> 00:04:04.080
-excuse me there's a there's a property
-
-00:04:04.080 --> 00:04:05.200
-called tangle
-
-00:04:05.200 --> 00:04:09.360
-and that takes a value of a file name
-
-00:04:09.360 --> 00:04:13.280
-and then there's also a no web property
-
-00:04:13.280 --> 00:04:18.880
-called no export
-
-00:04:18.880 --> 00:04:23.759
-and basically
-
-00:04:23.759 --> 00:04:26.800
-basically the no export will explain
-
-00:04:26.800 --> 00:04:28.639
-that a little bit
-
-00:04:28.639 --> 00:04:32.080
-more later um it has has to do with how
-
-00:04:32.080 --> 00:04:33.919
-the tangling
-
-00:04:33.919 --> 00:04:37.600
-is uh done in the tangle step versus the
-
-00:04:37.600 --> 00:04:39.280
-weave step and I'll explain that a
-
-00:04:39.280 --> 00:04:41.199
-little bit more but the tangle
-
-00:04:41.199 --> 00:04:45.199
-field just simply tells tells uh
-
-00:04:45.199 --> 00:04:48.320
-Emacs where it needs to generate the
-
-00:04:48.320 --> 00:04:50.320
-main.go file and where it needs to put
-
-00:04:50.320 --> 00:04:55.360
-it on the file system
-
-00:04:55.360 --> 00:04:57.680
-uh you'll you'll notice that we we're
-
-00:04:57.680 --> 00:04:59.040
-going to use go
-
-00:04:59.040 --> 00:05:01.440
-that's just the language that I've been
-
-00:05:01.440 --> 00:05:02.160
-using
-
-00:05:02.160 --> 00:05:05.360
-the most lately uh but
-
-00:05:05.360 --> 00:05:07.360
-this programming strategy is language
-
-00:05:07.360 --> 00:05:08.400
-agnostic
-
-00:05:08.400 --> 00:05:12.080
-you could use any language or any mix
-
-00:05:12.080 --> 00:05:14.720
-of languages you could create some files
-
-00:05:14.720 --> 00:05:16.560
-in python some files and go
-
-00:05:16.560 --> 00:05:19.520
-some files in in lisp or whatever you
-
-00:05:19.520 --> 00:05:21.520
-want
-
-00:05:21.520 --> 00:05:24.720
-and so but let's
-
-00:05:24.720 --> 00:05:28.000
-uh let's create just a little hello
-
-00:05:28.000 --> 00:05:29.440
-world
-
-00:05:29.440 --> 00:05:32.320
-let's use another snippet here to
-
-00:05:32.320 --> 00:05:33.520
-generate
-
-00:05:33.520 --> 00:05:36.560
-the basics of a go program
-
-00:05:36.560 --> 00:05:40.240
-so I'm just going to print
-
-00:05:40.240 --> 00:05:44.960
-hello world
-
-00:05:44.960 --> 00:05:48.560
-so that's and then
-
-00:05:48.560 --> 00:05:52.320
-let's make it a section in our
-
-00:05:52.320 --> 00:05:55.280
-file so now you can see we've got this
-
-00:05:55.280 --> 00:05:56.400
-snippet
-
-00:05:56.400 --> 00:05:59.600
-um when you have a source block in
-
-00:05:59.600 --> 00:06:01.600
-inside of org mode you can easily pop
-
-00:06:01.600 --> 00:06:02.880
-into a
-
-00:06:02.880 --> 00:06:04.960
-language specific buffer by typing
-
-00:06:04.960 --> 00:06:07.680
-control c single quote
-
-00:06:07.680 --> 00:06:10.240
-so you can see now I have a a go a
-
-00:06:10.240 --> 00:06:12.160
-buffer that's in go mode
-
-00:06:12.160 --> 00:06:14.240
-and gives you all the ability to edit
-
-00:06:14.240 --> 00:06:15.520
-like you would
-
-00:06:15.520 --> 00:06:18.800
-normally if you hit ctrl c
-
-00:06:18.800 --> 00:06:20.800
-single quote again then it goes back and
-
-00:06:20.800 --> 00:06:22.639
-any changes you
-
-00:06:22.639 --> 00:06:25.280
-make would will be updated there but you
-
-00:06:25.280 --> 00:06:26.160
-can do quite a bit
-
-00:06:26.160 --> 00:06:28.000
-just inside of here too there's quite a
-
-00:06:28.000 --> 00:06:29.199
-bit of
-
-00:06:29.199 --> 00:06:33.360
-language specific
-
-00:06:33.360 --> 00:06:35.440
-functionality just in place and so you
-
-00:06:35.440 --> 00:06:36.880
-don't always have to go over to a
-
-00:06:36.880 --> 00:06:38.080
-separate buffer
-
-00:06:38.080 --> 00:06:42.319
-but it's a it's a nice option sometimes
-
-00:06:42.319 --> 00:06:44.319
-but now that you have the code in here
-
-00:06:44.319 --> 00:06:46.720
-you're going to want to run it
-
-00:06:46.720 --> 00:06:48.560
-but right now it just lives here in this
-
-00:06:48.560 --> 00:06:50.240
-documentation
-
-00:06:50.240 --> 00:06:52.160
-so you need to get a copy of it into a
-
-00:06:52.160 --> 00:06:53.840
-separate file
-
-00:06:53.840 --> 00:06:57.440
-and that's the tangle process that you
-
-00:06:57.440 --> 00:07:01.360
-you need to follow there so I'm gonna
-
-00:07:01.360 --> 00:07:03.360
-drop in a little bit more doc a little
-
-00:07:03.360 --> 00:07:05.280
-bit more
-
-00:07:05.280 --> 00:07:12.240
-documentation really quick here
-
-00:07:12.240 --> 00:07:17.360
-okay all right so just kind of as a
-
-00:07:17.360 --> 00:07:21.520
-kind of as a side note I like to follow
-
-00:07:21.520 --> 00:07:24.800
-this process uh whenever having whenever
-
-00:07:24.800 --> 00:07:26.639
-I have an operation to perform I
-
-00:07:26.639 --> 00:07:28.880
-I'd like to document it here with a
-
-00:07:28.880 --> 00:07:31.680
-snippet that can be executed in line
-
-00:07:31.680 --> 00:07:33.280
-then I don't have to leave org mode and
-
-00:07:33.280 --> 00:07:34.639
-I don't have to try to remember what I
-
-00:07:34.639 --> 00:07:36.800
-did later so instead of just
-
-00:07:36.800 --> 00:07:38.960
-trying to do an operation the first time
-
-00:07:38.960 --> 00:07:40.319
-I do something I take the
-
-00:07:40.319 --> 00:07:41.680
-take the time to figure out what it is
-
-00:07:41.680 --> 00:07:43.440
-and document it and so then it's
-
-00:07:43.440 --> 00:07:44.879
-recorded
-
-00:07:44.879 --> 00:07:48.400
-and so here we find that to do a tangle
-
-00:07:48.400 --> 00:07:49.120
-operation
-
-00:07:49.120 --> 00:07:51.680
-you run the command or babel tangled
-
-00:07:51.680 --> 00:07:52.560
-which is a
-
-00:07:52.560 --> 00:07:55.840
-e-list command so if you hit ctrl c
-
-00:07:55.840 --> 00:07:59.199
-ctrl c to run it in place you get the
-
-00:07:59.199 --> 00:08:00.080
-result
-
-00:08:00.080 --> 00:08:02.720
-of main dot go which basically is
-
-00:08:02.720 --> 00:08:03.759
-telling us that
-
-00:08:03.759 --> 00:08:07.680
-we've tangled one file called main.go
-
-00:08:07.680 --> 00:08:11.039
-and you can see that that's true
-
-00:08:11.039 --> 00:08:14.000
-if you go to the file system and you
-
-00:08:14.000 --> 00:08:14.400
-look
-
-00:08:14.400 --> 00:08:17.840
-so now in uh in our demo directory
-
-00:08:17.840 --> 00:08:20.960
-we have a readme.org we have that png
-
-00:08:20.960 --> 00:08:22.479
-that we generated but we also have a
-
-00:08:22.479 --> 00:08:23.440
-main.go
-
-00:08:23.440 --> 00:08:26.080
-and if you if you visit that file you'll
-
-00:08:26.080 --> 00:08:27.759
-see that it's just the source code that
-
-00:08:27.759 --> 00:08:29.280
-was in our documentation which is
-
-00:08:29.280 --> 00:08:31.039
-exactly what we expected and what we
-
-00:08:31.039 --> 00:08:32.880
-wanted so that's good
-
-00:08:32.880 --> 00:08:36.560
-so if we return to
-
-00:08:36.560 --> 00:08:41.120
-to where we are at
-
-00:08:41.120 --> 00:08:42.959
-now we're we're at the point where we
-
-00:08:42.959 --> 00:08:44.640
-have a file on the file system so now we
-
-00:08:44.640 --> 00:08:45.760
-need
-
-00:08:45.760 --> 00:08:48.959
-um now we need to build it and to
-
-00:08:48.959 --> 00:08:53.600
-run it so let's follow the same
-
-00:08:53.600 --> 00:08:57.040
-philosophy where let's document
-
-00:08:57.040 --> 00:08:58.720
-these operations that we're going to
-
-00:08:58.720 --> 00:09:00.160
-perform
-
-00:09:00.160 --> 00:09:04.560
-so I'm dropping in a
-
-00:09:04.560 --> 00:09:07.839
-a build instruction section and a run
-
-00:09:07.839 --> 00:09:13.360
-instruction section
-
-00:09:13.360 --> 00:09:15.279
-so as you can see here we have a little
-
-00:09:15.279 --> 00:09:17.839
-a bash source block
-
-00:09:17.839 --> 00:09:20.000
-and another batch source block this one
-
-00:09:20.000 --> 00:09:22.000
-compiles the go build command is what
-
-00:09:22.000 --> 00:09:25.440
-compiles a file and then
-
-00:09:25.440 --> 00:09:26.880
-the file that gets generated should be
-
-00:09:26.880 --> 00:09:30.080
-called demo
-
-00:09:30.080 --> 00:09:32.959
-and uh so we just run it here so if if I
-
-00:09:32.959 --> 00:09:34.000
-type control c
-
-00:09:34.000 --> 00:09:37.839
-control c we get an empty results block
-
-00:09:37.839 --> 00:09:40.640
-when you compile things no news is good
-
-00:09:40.640 --> 00:09:41.360
-news
-
-00:09:41.360 --> 00:09:44.399
-so it means there's no errors so
-
-00:09:44.399 --> 00:09:46.560
-presumably we've created an executable
-
-00:09:46.560 --> 00:09:48.000
-that's called demo
-
-00:09:48.000 --> 00:09:51.440
-so let's uh
-
-00:09:51.440 --> 00:09:54.560
-let's look again at the file system and
-
-00:09:54.560 --> 00:10:02.480
-regenerate
-
-00:10:02.480 --> 00:10:05.760
-yep and what we have here is a demo
-
-00:10:05.760 --> 00:10:07.200
-executable which is exactly what we
-
-00:10:07.200 --> 00:10:07.760
-wanted
-
-00:10:07.760 --> 00:10:12.079
-so let's go back
-
-00:10:12.079 --> 00:10:14.160
-so now we should be able to run it so
-
-00:10:14.160 --> 00:10:16.079
-ctrl c ctrl c
-
-00:10:16.079 --> 00:10:20.399
-and we get hello world as a result
-
-00:10:20.399 --> 00:10:23.440
-which was exactly what we were expecting
-
-00:10:23.440 --> 00:10:26.560
-so that's already pretty cool
-
-00:10:26.560 --> 00:10:30.839
-you can you can do that much
-
-00:10:30.839 --> 00:10:33.040
-um but
-
-00:10:33.040 --> 00:10:34.560
-that's really just kind of the tip of
-
-00:10:34.560 --> 00:10:37.839
-the iceberg to uh to really
-
-00:10:37.839 --> 00:10:41.040
-kind of um
-
-00:10:41.040 --> 00:10:43.440
-use the more impressive features of
-
-00:10:43.440 --> 00:10:46.160
-literate programming we need to uh
-
-00:10:46.160 --> 00:10:49.920
-we need to do a little bit more
-
-00:10:49.920 --> 00:10:53.200
-so or at least
-
-00:10:53.200 --> 00:10:55.519
-at least really to get the full benefit
-
-00:10:55.519 --> 00:10:56.480
-of it then
-
-00:10:56.480 --> 00:10:59.600
-we need to do
-
-00:10:59.600 --> 00:11:02.959
-add some sections that will cause uh
-
-00:11:02.959 --> 00:11:06.320
-Emacs to have to to tangle or assemble
-
-00:11:06.320 --> 00:11:06.720
-this
-
-00:11:06.720 --> 00:11:09.760
-this file from different pieces so
-
-00:11:09.760 --> 00:11:13.120
-imagine that we wanted to take this file
-
-00:11:13.120 --> 00:11:16.720
-and maybe kind of templatize it
-
-00:11:16.720 --> 00:11:19.120
-so using literature programming syntax
-
-00:11:19.120 --> 00:11:21.279
-this angle bracket syntax
-
-00:11:21.279 --> 00:11:24.399
-let's say that we want to create an in
-
-00:11:24.399 --> 00:11:29.360
-imports section
-
-00:11:29.360 --> 00:11:32.399
-in a functions section
-
-00:11:32.399 --> 00:11:35.040
-and then maybe just a main section and
-
-00:11:35.040 --> 00:11:36.240
-we'll get rid of this
-
-00:11:36.240 --> 00:11:37.920
-so now you see we've created something
-
-00:11:37.920 --> 00:11:39.760
-that looks a little bit like a
-
-00:11:39.760 --> 00:11:42.000
-like a template or a scaffolding or
-
-00:11:42.000 --> 00:11:42.880
-outline
-
-00:11:42.880 --> 00:11:46.000
-for what what our file is going to be it
-
-00:11:46.000 --> 00:11:48.399
-looks a little bit like pseudocode
-
-00:11:48.399 --> 00:11:50.800
-and what we're going to have literate
-
-00:11:50.800 --> 00:11:52.399
-programming do
-
-00:11:52.399 --> 00:11:54.800
-is dynamically insert those things into
-
-00:11:54.800 --> 00:11:56.639
-those slots
-
-00:11:56.639 --> 00:12:00.079
-so the first thing we need to do
-
-00:12:00.079 --> 00:12:03.200
-is so let's create a section
-
-00:12:03.200 --> 00:12:08.079
-maybe called say hello so we want
-
-00:12:08.079 --> 00:12:09.519
-we want to add some functionality that
-
-00:12:09.519 --> 00:12:12.720
-makes our program say hello
-
-00:12:12.720 --> 00:12:15.680
-so using a different snippet that I have
-
-00:12:15.680 --> 00:12:17.600
-for creating something
-
-00:12:17.600 --> 00:12:20.800
-that I call like a literate section
-
-00:12:20.800 --> 00:12:24.079
-um basically we create a
-
-00:12:24.079 --> 00:12:26.000
-another source block that's almost the
-
-00:12:26.000 --> 00:12:27.839
-same as the one for the file but it's
-
-00:12:27.839 --> 00:12:31.040
-it just has a few differences so say we
-
-00:12:31.040 --> 00:12:31.680
-want to
-
-00:12:31.680 --> 00:12:34.160
-drop code into the import section and we
-
-00:12:34.160 --> 00:12:36.639
-want it to be in go
-
-00:12:36.639 --> 00:12:39.120
-here we use the same noed no web no
-
-00:12:39.120 --> 00:12:40.720
-export syntax
-
-00:12:40.720 --> 00:12:43.200
-but then we've added this no web refs
-
-00:12:43.200 --> 00:12:44.560
-imports
-
-00:12:44.560 --> 00:12:48.240
-and this ties that slot
-
-00:12:48.240 --> 00:12:51.120
-basically to this reference it tells
-
-00:12:51.120 --> 00:12:53.760
-Emacs that when you tangle
-
-00:12:53.760 --> 00:12:56.880
-we want to stick whatever's in here in
-
-00:12:56.880 --> 00:12:58.240
-that spot
-
-00:12:58.240 --> 00:13:02.079
-so you skip the tangle file name section
-
-00:13:02.079 --> 00:13:03.279
-because you're not actually creating a
-
-00:13:03.279 --> 00:13:04.240
-file name you're
-
-00:13:04.240 --> 00:13:06.160
-you're putting information into an
-
-00:13:06.160 --> 00:13:07.680
-existing file
-
-00:13:07.680 --> 00:13:10.720
-so here we would just add the fmt
-
-00:13:10.720 --> 00:13:14.399
-for the imports
-
-00:13:14.399 --> 00:13:18.839
-so let's add another section for uh
-
-00:13:18.839 --> 00:13:22.240
-functions and let's create a
-
-00:13:22.240 --> 00:13:25.519
-let's just create a function called
-
-00:13:25.519 --> 00:13:30.240
-say hello that
-
-00:13:30.240 --> 00:13:32.839
-doesn't have any arguments no return
-
-00:13:32.839 --> 00:13:34.000
-types
-
-00:13:34.000 --> 00:13:35.760
-all it does is kind of pretty much the
-
-00:13:35.760 --> 00:13:37.440
-same thing as we did before
-
-00:13:37.440 --> 00:13:39.199
-just print something but let's just say
-
-00:13:39.199 --> 00:13:41.360
-hello
-
-00:13:41.360 --> 00:13:45.760
-Emacs comp this time
-
-00:13:45.760 --> 00:13:49.519
-okay so now we have a function and now
-
-00:13:49.519 --> 00:13:51.040
-the function won't do anything unless we
-
-00:13:51.040 --> 00:13:52.720
-invoke it so let's do
-
-00:13:52.720 --> 00:13:56.000
-one last literate section
-
-00:13:56.000 --> 00:13:59.920
-called main make that go
-
-00:13:59.920 --> 00:14:03.519
-source block and then let's
-
-00:14:03.519 --> 00:14:06.560
-just invoke
-
-00:14:06.560 --> 00:14:10.320
-that that function
-
-00:14:10.320 --> 00:14:13.360
-so now you can see that we've got
-
-00:14:13.360 --> 00:14:15.600
-our scaffolding scaffolding kind of
-
-00:14:15.600 --> 00:14:17.199
-outline and then we have
-
-00:14:17.199 --> 00:14:20.079
-the sections that we want to get tangled
-
-00:14:20.079 --> 00:14:21.360
-or inserted
-
-00:14:21.360 --> 00:14:25.440
-so I I've kind of used this syntax
-
-00:14:25.440 --> 00:14:27.199
-it's it's kind of borrowed from
-
-00:14:27.199 --> 00:14:28.560
-literature programming a little bit with
-
-00:14:28.560 --> 00:14:30.320
-a plus equals so really it's just saying
-
-00:14:30.320 --> 00:14:32.480
-that I want to append
-
-00:14:32.480 --> 00:14:35.760
-this item into the import section so
-
-00:14:35.760 --> 00:14:37.600
-it's really just to make a little bit
-
-00:14:37.600 --> 00:14:39.839
-more clear what's going on
-
-00:14:39.839 --> 00:14:41.519
-when you generate documentation you
-
-00:14:41.519 --> 00:14:43.519
-won't see these
-
-00:14:43.519 --> 00:14:46.160
-these these particular property
-
-00:14:46.160 --> 00:14:49.360
-annotations and so you won't know
-
-00:14:49.360 --> 00:14:51.440
-immediately that this section goes in
-
-00:14:51.440 --> 00:14:53.839
-the imports area and so I usually put
-
-00:14:53.839 --> 00:14:55.440
-a little bit of documentation on top
-
-00:14:55.440 --> 00:14:57.760
-there so that it's easy to see
-
-00:14:57.760 --> 00:15:01.120
-and you would probably if this was very
-
-00:15:01.120 --> 00:15:03.040
-complicated you'd put some
-
-00:15:03.040 --> 00:15:06.399
-documentation above to explain what you
-
-00:15:06.399 --> 00:15:07.360
-were doing
-
-00:15:07.360 --> 00:15:11.519
-maybe right here
-
-00:15:11.519 --> 00:15:13.279
-you could you could picture yourself
-
-00:15:13.279 --> 00:15:15.040
-maybe explaining
-
-00:15:15.040 --> 00:15:17.440
-a complicated algorithm or something up
-
-00:15:17.440 --> 00:15:18.079
-here
-
-00:15:18.079 --> 00:15:21.120
-and having a nice way to document it
-
-00:15:21.120 --> 00:15:22.959
-so now that we've got that here in the
-
-00:15:22.959 --> 00:15:25.600
-documentation we need to figure out
-
-00:15:25.600 --> 00:15:27.040
-we need to make sure that it's going to
-
-00:15:27.040 --> 00:15:29.920
-tangle properly so your best friend
-
-00:15:29.920 --> 00:15:33.519
-at this point is is uh
-
-00:15:33.519 --> 00:15:35.680
-is a keyboard shortcut that lets you
-
-00:15:35.680 --> 00:15:38.240
-preview the tangled operation so if you
-
-00:15:38.240 --> 00:15:38.959
-say control
-
-00:15:38.959 --> 00:15:42.560
-c control v control v
-
-00:15:42.560 --> 00:15:45.120
-it will create a new buffer with the
-
-00:15:45.120 --> 00:15:46.480
-tangled
-
-00:15:46.480 --> 00:15:49.360
-contents and so you can see here that
-
-00:15:49.360 --> 00:15:50.639
-the fmt
-
-00:15:50.639 --> 00:15:53.199
-import went to the right place that
-
-00:15:53.199 --> 00:15:54.720
-function went to the right place the
-
-00:15:54.720 --> 00:15:56.160
-function invocation went to the right
-
-00:15:56.160 --> 00:15:58.480
-place and so we're feeling good
-
-00:15:58.480 --> 00:16:01.279
-you can nest these things many layers
-
-00:16:01.279 --> 00:16:02.800
-deep
-
-00:16:02.800 --> 00:16:04.800
-actually so like if you came into the
-
-00:16:04.800 --> 00:16:07.199
-say hello function you could add
-
-00:16:07.199 --> 00:16:10.560
-more sections
-
-00:16:10.560 --> 00:16:12.160
-you know and it gets and it'll go
-
-00:16:12.160 --> 00:16:13.759
-through and it'll
-
-00:16:13.759 --> 00:16:15.680
-keep track of all that and tangle it for
-
-00:16:15.680 --> 00:16:16.959
-you so you really get a lot of freedom
-
-00:16:16.959 --> 00:16:18.320
-and flexibility for how you want to
-
-00:16:18.320 --> 00:16:19.600
-document things
-
-00:16:19.600 --> 00:16:22.320
-by doing this so now that we've
-
-00:16:22.320 --> 00:16:25.839
-previewed it and we feel good about it
-
-00:16:25.839 --> 00:16:28.639
-we need to uh we need to tangle so we
-
-00:16:28.639 --> 00:16:31.440
-get the file on the file system
-
-00:16:31.440 --> 00:16:34.480
-so ctrl c ctrl c and
-
-00:16:34.480 --> 00:16:37.199
-get just main.go comes back again
-
-00:16:37.199 --> 00:16:37.920
-control c
-
-00:16:37.920 --> 00:16:40.959
-control c and no errors come back
-
-00:16:40.959 --> 00:16:43.839
-and then if we did this right when we
-
-00:16:43.839 --> 00:16:45.600
-when we run this we should get hello
-
-00:16:45.600 --> 00:16:47.199
-Emacs comp so ctrl c
-
-00:16:47.199 --> 00:16:51.199
-ctrl c hello Emacs comp
-
-00:16:51.199 --> 00:16:54.800
-so I uh
-
-00:16:54.800 --> 00:16:57.120
-I think that's pretty pretty cool
-
-00:16:57.120 --> 00:16:58.240
-actually so we've got
-
-00:16:58.240 --> 00:17:00.160
-kind of the breadcrumbs of the process
-
-00:17:00.160 --> 00:17:02.399
-we've gone through to get to this point
-
-00:17:02.399 --> 00:17:05.520
-this initial this initial
-
-00:17:05.520 --> 00:17:08.000
-document that has some tangling in it we
-
-00:17:08.000 --> 00:17:09.919
-have documentation for how to tangle
-
-00:17:09.919 --> 00:17:12.799
-how to build how to run it's we've
-
-00:17:12.799 --> 00:17:14.079
-really built a nice
-
-00:17:14.079 --> 00:17:17.760
-foundation for
-
-00:17:17.760 --> 00:17:20.160
-moving forward on our project and a nice
-
-00:17:20.160 --> 00:17:21.439
-way of breaking things out and
-
-00:17:21.439 --> 00:17:23.280
-documenting further
-
-00:17:23.280 --> 00:17:27.120
-the last piece that we need to
-
-00:17:27.120 --> 00:17:30.559
-take care of is the weave that I
-
-00:17:30.559 --> 00:17:34.799
-that's I showed you in the diagram above
-
-00:17:34.799 --> 00:17:38.640
-so one more time we'll drop in
-
-00:17:38.640 --> 00:17:41.760
-some documentation so this time on how
-
-00:17:41.760 --> 00:17:42.400
-to weave
-
-00:17:42.400 --> 00:17:44.400
-so it's really just an export function
-
-00:17:44.400 --> 00:17:47.520
-it's not there's not a separate weave
-
-00:17:47.520 --> 00:17:49.280
-command going on here we're just going
-
-00:17:49.280 --> 00:17:50.640
-to export
-
-00:17:50.640 --> 00:17:52.799
-what we've got here into a markdown
-
-00:17:52.799 --> 00:17:55.200
-format so we're using org
-
-00:17:55.200 --> 00:17:57.440
-gfm export to markdown which is the
-
-00:17:57.440 --> 00:17:58.880
-github style
-
-00:17:58.880 --> 00:18:02.160
-markdown you can use the other just
-
-00:18:02.160 --> 00:18:05.440
-more standard type as well so hit ctrl c
-
-00:18:05.440 --> 00:18:10.320
-ctrl c now you see we've got a readme
-
-00:18:10.320 --> 00:18:15.280
-file and if you look
-
-00:18:15.280 --> 00:18:17.440
-in the file system we've got that right
-
-00:18:17.440 --> 00:18:19.120
-there and so
-
-00:18:19.120 --> 00:18:23.120
-if you go to something like ghostwriter
-
-00:18:23.120 --> 00:18:31.679
-and open that file
-
-00:18:31.679 --> 00:18:34.559
-now you can see that it's generated some
-
-00:18:34.559 --> 00:18:35.520
-documentation
-
-00:18:35.520 --> 00:18:38.320
-it puts a index at top at the top I
-
-00:18:38.320 --> 00:18:39.679
-usually just
-
-00:18:39.679 --> 00:18:42.000
-I usually turn that off it's easy to do
-
-00:18:42.000 --> 00:18:43.679
-that by putting a property at the top of
-
-00:18:43.679 --> 00:18:44.559
-your
-
-00:18:44.559 --> 00:18:46.880
-your org file but some people like to
-
-00:18:46.880 --> 00:18:48.559
-have an index
-
-00:18:48.559 --> 00:18:50.799
-but here you can see that it's generated
-
-00:18:50.799 --> 00:18:52.160
-pretty nicely and
-
-00:18:52.160 --> 00:18:55.200
-formatted snippets well
-
-00:18:55.200 --> 00:18:56.880
-put the diagram in there and then it's
-
-00:18:56.880 --> 00:18:58.240
-preserved
-
-00:18:58.240 --> 00:19:01.039
-it's preserved this literate programming
-
-00:19:01.039 --> 00:19:02.799
-syntax
-
-00:19:02.799 --> 00:19:04.960
-which is important because that's how we
-
-00:19:04.960 --> 00:19:06.480
-want to view the documentation that's
-
-00:19:06.480 --> 00:19:07.200
-what the no
-
-00:19:07.200 --> 00:19:10.559
-exports um
-
-00:19:10.559 --> 00:19:13.360
-property was was trying to maintain so
-
-00:19:13.360 --> 00:19:14.000
-that
-
-00:19:14.000 --> 00:19:16.080
-no exports means when you export do not
-
-00:19:16.080 --> 00:19:18.400
-try to tangle so that's
-
-00:19:18.400 --> 00:19:20.559
-hopefully that makes more sense now but
-
-00:19:20.559 --> 00:19:22.240
-now you can see all the documentation
-
-00:19:22.240 --> 00:19:26.080
-and I think it demonstrates a
-
-00:19:26.080 --> 00:19:29.919
-pretty useful feature that's inside of
-
-00:19:29.919 --> 00:19:33.520
-Emacs and and hopefully
-
-00:19:33.520 --> 00:19:35.039
-hopefully you'll have as much fun using
-
-00:19:35.039 --> 00:19:39.919
-that as I have
-
-00:19:39.919 --> 00:19:43.600
-so thanks
diff --git a/2020/subtitles/emacsconf-2020--14-readme-driven-design--adam-ard.vtt b/2020/subtitles/emacsconf-2020--14-readme-driven-design--adam-ard.vtt
new file mode 100644
index 00000000..608729bd
--- /dev/null
+++ b/2020/subtitles/emacsconf-2020--14-readme-driven-design--adam-ard.vtt
@@ -0,0 +1,1297 @@
+WEBVTT
+
+00:00:03.600 --> 00:00:04.400
+Adam: Hello!
+
+00:00:04.400 --> 00:00:06.560
+Welcome to Readme Driven Design in Emacs
+
+00:00:06.560 --> 00:00:08.400
+by Adam Aard.
+
+00:00:08.400 --> 00:00:10.800
+If you're a programmer, you're accustomed
+
+00:00:10.800 --> 00:00:12.559
+to putting a README file at the root of
+
+00:00:12.559 --> 00:00:13.759
+your project.
+
+00:00:13.759 --> 00:00:15.845
+It's usually a Markdown file
+
+00:00:15.845 --> 00:00:20.579
+But if you use an Org Mode file instead,
+
+00:00:20.579 --> 00:00:22.560
+you can take advantage of the
+great features
+
+00:00:22.560 --> 00:00:24.400
+that Org Mode provides, including
+
+00:00:24.400 --> 00:00:25.920
+literate programming,
+
+00:00:25.920 --> 00:00:28.000
+which lets you generate your source code
+
+00:00:28.000 --> 00:00:31.840
+and Markdown documentation dynamically.
+
+00:00:31.840 --> 00:00:34.719
+I want to walk you through a little bit
+
+00:00:34.719 --> 00:00:37.120
+of what this looks like.
+
+00:00:37.120 --> 00:00:39.440
+When you start a project, especially if
+
+00:00:39.440 --> 00:00:41.280
+if you use something like Github you
+
+00:00:41.280 --> 00:00:43.320
+begin with an automatically generated
+
+00:00:43.320 --> 00:00:47.039
+README.md file. So just delete that
+
+00:00:47.039 --> 00:00:50.239
+and instead create a README.org file.
+
+00:00:50.239 --> 00:00:51.712
+Starting with an empty Org file,
+
+00:00:51.712 --> 00:00:54.800
+like you see here, you can begin
+
+00:00:54.800 --> 00:00:56.559
+by recording important information about
+
+00:00:56.559 --> 00:00:59.440
+your project goals. You can add diagrams,
+
+00:00:59.440 --> 00:01:01.920
+code snippets, to-do lists, time tracking
+
+00:01:01.920 --> 00:01:03.520
+and much more.
+
+00:01:03.520 --> 00:01:05.360
+I'm going to drop in some documentation
+
+00:01:05.360 --> 00:01:07.760
+that that I've written about
+
+00:01:07.760 --> 00:01:12.240
+about my project here, so you can see
+
+00:01:12.240 --> 00:01:15.280
+what this would look like.
+
+00:01:15.280 --> 00:01:17.119
+As you can see, I have a title, and a
+
+00:01:17.119 --> 00:01:20.320
+description, and then a subsection
+
+00:01:20.320 --> 00:01:23.840
+as well as some code snippets.
+
+00:01:23.840 --> 00:01:25.520
+You can see that Org Mode does a great
+
+00:01:25.520 --> 00:01:28.240
+job of formatting lists,
+
+00:01:28.240 --> 00:01:31.280
+code sections, diagrams, and so forth.
+
+00:01:31.280 --> 00:01:35.040
+It's as good or better than Markdown,
+
+00:01:35.040 --> 00:01:37.179
+but when you use it in Emacs
+
+00:01:37.179 --> 00:01:38.880
+you can do a lot more.
+
+00:01:38.880 --> 00:01:40.479
+For example, you can dynamically create
+
+00:01:40.479 --> 00:01:43.360
+diagrams using Graphviz
+
+00:01:43.360 --> 00:01:45.200
+from a text description. If you go to
+
+00:01:45.200 --> 00:01:46.560
+this source block here
+
+00:01:46.560 --> 00:01:49.439
+and hit C-c C-c, you'll see
+
+00:01:49.439 --> 00:01:52.979
+that we generate a diagram dynamically
+
+00:01:55.439 --> 00:01:59.200
+You can run these code snippets in
+
+00:01:59.200 --> 00:02:00.799
+place and get the results
+
+00:02:00.799 --> 00:02:03.040
+to show up inside of your file,
+
+00:02:03.040 --> 00:02:08.000
+which is a really powerful paradigm.
+
+00:02:08.000 --> 00:02:10.640
+But most importantly, for
+
+00:02:10.640 --> 00:02:14.800
+my purposes here,
+
+00:02:14.800 --> 00:02:17.200
+Org Mode provides you the ability to do
+
+00:02:17.200 --> 00:02:19.520
+literate programming.
+
+00:02:19.520 --> 00:02:21.440
+So take a quick look at this diagram
+
+00:02:21.440 --> 00:02:23.200
+that I generated here.
+
+00:02:23.200 --> 00:02:25.312
+It gives you a quick overview of what
+
+00:02:25.312 --> 00:02:27.520
+I mean by literate programming
+
+00:02:27.520 --> 00:02:31.200
+and how I'm using it. You can see
+
+00:02:31.200 --> 00:02:34.720
+that we start with a README.org file
+on top.
+
+00:02:34.720 --> 00:02:37.920
+At this point, we can do one of two
+things:
+
+00:02:37.920 --> 00:02:41.280
+tangle or weave. Tangle is used to
+
+00:02:41.280 --> 00:02:42.720
+describe the process of
+
+00:02:42.720 --> 00:02:46.319
+generating source code, while weave
+
+00:02:46.319 --> 00:02:47.599
+is the process of generating
+
+00:02:47.599 --> 00:02:49.840
+documentation. These are terms that
+
+00:02:49.840 --> 00:02:51.920
+Donald Knuth used.
+
+00:02:51.920 --> 00:02:53.840
+He's the one that came up with the
+
+00:02:53.840 --> 00:02:55.519
+idea of literate programming
+
+00:02:55.519 --> 00:02:59.920
+in the early 1980s.
+
+00:02:59.920 --> 00:03:01.945
+But this is really all that there is to
+it.
+
+00:03:01.945 --> 00:03:05.412
+You just... You are simply
+
+00:03:05.412 --> 00:03:07.840
+using a literate source file,
+
+00:03:07.840 --> 00:03:10.319
+in this case the README.org, to generate
+
+00:03:11.680 --> 00:03:17.120
+the rest of the project files, basically.
+
+00:03:17.120 --> 00:03:22.640
+So let's dig in to the details of how
+this works.
+
+00:03:22.640 --> 00:03:24.560
+I hope you... Hopefully you'll see how
+
+00:03:24.560 --> 00:03:26.159
+cool this is.
+
+00:03:26.159 --> 00:03:27.545
+So returning to the file here.
+
+00:03:27.545 --> 00:03:31.120
+Let's assume we have enough
+documentation now,
+
+00:03:31.120 --> 00:03:32.679
+that we want to get started
+coding.
+
+00:03:32.679 --> 00:03:34.159
+So maybe we'll just start with
+
+00:03:34.159 --> 00:03:35.845
+like a Hello World app,
+
+00:03:35.845 --> 00:03:38.159
+just so we can make sure that our
+
+00:03:38.159 --> 00:03:41.519
+environment is set up correctly.
+
+00:03:41.519 --> 00:03:47.120
+Let's get started with a code block.
+
+00:03:47.120 --> 00:03:49.519
+So I created a little snippet to help me
+
+00:03:49.519 --> 00:03:51.612
+add a source block for
+
+00:03:51.612 --> 00:03:53.599
+literate programming quickly.
+
+00:03:53.599 --> 00:03:56.959
+There's not much to it,
+
+00:03:56.959 --> 00:03:59.479
+but there are some important annotations
+here.
+
+00:04:01.599 --> 00:04:04.080
+Excuse me. There's a property
+
+00:04:04.080 --> 00:04:05.200
+called :tangle
+
+00:04:05.200 --> 00:04:09.360
+and that takes a value of a file name.
+
+00:04:09.360 --> 00:04:13.280
+Then there's also a :noweb property
+
+00:04:13.280 --> 00:04:18.880
+called no-export.
+
+00:04:23.759 --> 00:04:26.800
+Basically, the noexport--we'll explain
+
+00:04:26.800 --> 00:04:29.645
+that a little bit more later
+
+00:04:29.645 --> 00:04:32.080
+It has has to do with how
+
+00:04:32.080 --> 00:04:36.845
+the tangling is done in the tangle
+step
+
+00:04:36.845 --> 00:04:38.479
+versus the weave step.
+
+00:04:38.479 --> 00:04:40.212
+I'll explain that a little bit more.
+
+00:04:40.212 --> 00:04:45.199
+But the tangle field just simply tells
+
+00:04:45.199 --> 00:04:48.320
+Emacs where it needs to generate the
+
+00:04:48.320 --> 00:04:50.320
+main.go file and where it needs to put
+
+00:04:50.320 --> 00:04:55.360
+it on the file system.
+
+00:04:55.360 --> 00:04:57.680
+You'll notice that we we're
+
+00:04:57.680 --> 00:04:59.040
+going to use Go.
+
+00:04:59.040 --> 00:05:01.440
+That's just the language that I've been
+
+00:05:01.440 --> 00:05:03.379
+using the most lately,
+
+00:05:03.379 --> 00:05:06.845
+but this programming strategy
+
+00:05:06.845 --> 00:05:08.400
+is language-agnostic.
+
+00:05:08.400 --> 00:05:11.279
+You could use any language
+
+00:05:11.279 --> 00:05:13.145
+or any mix of languages.
+
+00:05:13.145 --> 00:05:14.720
+You could create some files
+
+00:05:14.720 --> 00:05:16.560
+in Python, some files in Go,
+
+00:05:16.560 --> 00:05:19.179
+some files in Lisp,
+
+00:05:19.179 --> 00:05:21.520
+or whatever you want.
+
+00:05:24.720 --> 00:05:29.440
+Let's create just a little
+Hello World.
+
+00:05:29.440 --> 00:05:31.379
+Let's use another snippet here
+
+00:05:31.379 --> 00:05:36.560
+to generate the basics of a Go program.
+
+00:05:36.560 --> 00:05:40.240
+I'm just going to print
+
+00:05:40.240 --> 00:05:44.960
+Hello World.
+
+00:05:44.960 --> 00:05:48.560
+So that's... And then
+
+00:05:48.560 --> 00:05:52.779
+let's make it a section in our file.
+
+00:05:52.779 --> 00:05:55.045
+So now you can see, we've got
+
+00:05:55.045 --> 00:05:56.400
+this snippet.
+
+00:05:56.400 --> 00:05:59.600
+When you have a source block in
+
+00:05:59.600 --> 00:06:01.600
+inside of Org Mode, you can easily pop
+
+00:06:01.600 --> 00:06:04.960
+into a language-specific buffer
+by typing
+
+00:06:04.960 --> 00:06:07.680
+C-c ' (single quote).
+
+00:06:07.680 --> 00:06:10.240
+So you can see, now I have a
+
+00:06:10.240 --> 00:06:12.160
+buffer that's in go-mode
+
+00:06:12.160 --> 00:06:14.240
+and gives you all the ability to edit
+
+00:06:14.240 --> 00:06:15.520
+like you would
+
+00:06:15.520 --> 00:06:19.945
+normally. If you hit C-c '
+(single quote)
+
+00:06:19.945 --> 00:06:20.800
+again, it goes back and
+
+00:06:20.800 --> 00:06:25.045
+any changes you make will be
+updated there.
+
+00:06:25.045 --> 00:06:26.160
+But you can do quite a bit
+
+00:06:26.160 --> 00:06:27.879
+just inside of here too.
+
+00:06:27.879 --> 00:06:29.199
+There's quite a bit of
+
+00:06:29.199 --> 00:06:34.479
+language-specific functionality
+
+00:06:34.479 --> 00:06:35.312
+just in place,
+
+00:06:35.312 --> 00:06:36.880
+so you don't always have to go over to a
+
+00:06:36.880 --> 00:06:38.080
+separate buffer.
+
+00:06:38.080 --> 00:06:42.319
+It's a nice option sometimes.
+
+00:06:42.319 --> 00:06:44.319
+Now that you have the code in here,
+
+00:06:44.319 --> 00:06:46.720
+you're going to want to run it.
+
+00:06:46.720 --> 00:06:48.179
+Right now, it just lives here
+
+00:06:48.179 --> 00:06:50.240
+in this documentation.
+
+00:06:50.240 --> 00:06:52.160
+You need to get a copy of it into a
+
+00:06:52.160 --> 00:06:53.840
+separate file,
+
+00:06:53.840 --> 00:06:57.440
+and that's the tangle process that you
+
+00:06:57.440 --> 00:07:01.360
+you need to follow there. So I'm gonna
+
+00:07:01.360 --> 00:07:03.360
+drop in a little bit more doc, a little
+
+00:07:03.360 --> 00:07:12.240
+bit more documentation really quick here.
+
+00:07:12.240 --> 00:07:19.112
+Okay, all right. So just as a side note,
+
+00:07:19.112 --> 00:07:22.845
+I like to follow this process.
+
+00:07:22.845 --> 00:07:26.639
+Whenever I have an operation to perform,
+
+00:07:26.639 --> 00:07:28.880
+I'd like to document it here with a
+
+00:07:28.880 --> 00:07:31.680
+snippet that can be executed inline.
+
+00:07:31.680 --> 00:07:33.280
+Then I don't have to leave Org Mode, and
+
+00:07:33.280 --> 00:07:34.639
+I don't have to try to remember what I
+
+00:07:34.639 --> 00:07:36.800
+did later. So instead of just
+
+00:07:36.800 --> 00:07:38.960
+trying to do an operation, the first time
+
+00:07:38.960 --> 00:07:40.319
+I do something,
+
+00:07:40.319 --> 00:07:41.680
+I take the time to figure out what it is
+
+00:07:41.680 --> 00:07:44.879
+and document it, so then it's
+recorded.
+
+00:07:44.879 --> 00:07:49.120
+So here we find that to do a tangle
+operation,
+
+00:07:49.120 --> 00:07:51.680
+you run the command org-babel-tangle,
+
+00:07:51.680 --> 00:07:53.779
+which is an Elisp command.
+
+00:07:53.779 --> 00:07:58.712
+If you hit C-c C-c to run it in place,
+
+00:07:58.712 --> 00:08:00.080
+you get the result
+
+00:08:00.080 --> 00:08:02.720
+of main.go, which basically is
+
+00:08:02.720 --> 00:08:03.759
+telling us that
+
+00:08:03.759 --> 00:08:07.680
+we've tangled one file called main.go.
+
+00:08:07.680 --> 00:08:11.039
+You can see that that's true
+
+00:08:11.039 --> 00:08:12.879
+if you go to the file system
+
+00:08:12.879 --> 00:08:14.400
+and you look.
+
+00:08:14.400 --> 00:08:17.840
+Now in our demo directory,
+
+00:08:17.840 --> 00:08:19.712
+we have a README.org,
+
+00:08:19.712 --> 00:08:22.045
+we have that PNG that we generated,
+
+00:08:22.045 --> 00:08:23.440
+but we also have a main.go.
+
+00:08:23.440 --> 00:08:25.945
+If you visit that file,
+
+00:08:25.945 --> 00:08:27.045
+you'll see that it's just
+
+00:08:27.045 --> 00:08:28.212
+the source code that was
+
+00:08:28.212 --> 00:08:29.280
+in our documentation, which is
+
+00:08:29.280 --> 00:08:30.679
+exactly what we expected
+
+00:08:30.679 --> 00:08:32.880
+and what we wanted. So that's good.
+
+00:08:32.880 --> 00:08:41.120
+So if we return to where we were at...
+
+00:08:41.120 --> 00:08:42.959
+Now we're at the point where we
+
+00:08:42.959 --> 00:08:44.479
+have a file on the file system.
+
+00:08:45.760 --> 00:08:48.379
+Now we need to build it
+
+00:08:48.379 --> 00:08:49.612
+and to run it.
+
+00:08:49.612 --> 00:08:57.040
+So let's follow the same philosophy,
+where let's document
+
+00:08:57.040 --> 00:09:00.160
+these operations that we're going to
+perform.
+
+00:09:00.160 --> 00:09:04.560
+I'm dropping in a
+
+00:09:04.560 --> 00:09:07.112
+a build instruction section
+
+00:09:07.112 --> 00:09:13.360
+and a run instruction section.
+
+00:09:13.360 --> 00:09:15.279
+As you can see here, we have a little
+
+00:09:15.279 --> 00:09:17.839
+a bash source block,
+
+00:09:17.839 --> 00:09:19.245
+and another bash source block.
+
+00:09:19.245 --> 00:09:21.812
+This one compiles. The go build command
+
+00:09:21.812 --> 00:09:25.440
+is what compiles a file. Then
+
+00:09:25.440 --> 00:09:26.579
+the file that gets generated
+
+00:09:26.579 --> 00:09:30.080
+should be called demo.
+
+00:09:30.080 --> 00:09:32.412
+So we just run it here.
+
+00:09:32.412 --> 00:09:37.839
+If I type C-c C-c, we get an
+empty results block.
+
+00:09:37.839 --> 00:09:38.979
+When you compile things,
+
+00:09:38.979 --> 00:09:41.360
+no news is good news.
+
+00:09:41.360 --> 00:09:43.012
+It means there's no errors
+
+00:09:43.012 --> 00:09:45.912
+So presumably, we've created
+
+00:09:45.912 --> 00:09:48.000
+an executable that's called demo.
+
+00:09:51.440 --> 00:09:53.312
+Let's look again at the file system
+
+00:09:53.312 --> 00:10:02.480
+and regenerate...
+
+00:10:02.480 --> 00:10:06.479
+Yep. What we have here is a demo
+executable,
+
+00:10:06.479 --> 00:10:07.760
+which is exactly what we
+wanted.
+
+00:10:07.760 --> 00:10:12.079
+Let's go back.
+
+00:10:12.079 --> 00:10:14.160
+Now we should be able to run it.
+
+00:10:14.160 --> 00:10:16.079
+C-c C-c,
+
+00:10:16.079 --> 00:10:20.399
+and we get Hello World as a result,
+
+00:10:20.399 --> 00:10:23.440
+which was exactly what we were expecting.
+
+00:10:23.440 --> 00:10:26.560
+So that's already pretty cool.
+
+00:10:26.560 --> 00:10:30.839
+You can do that much.
+
+00:10:33.040 --> 00:10:34.560
+That's really just the tip of
+
+00:10:34.560 --> 00:10:37.839
+the iceberg. To really
+
+00:10:41.040 --> 00:10:43.440
+use the more impressive features of
+
+00:10:43.440 --> 00:10:46.160
+literate programming,
+
+00:10:46.160 --> 00:10:49.920
+we need to do a little bit more
+
+00:10:53.200 --> 00:10:54.512
+at least. Really,
+
+00:10:54.512 --> 00:10:56.480
+to get the full benefit of it,
+
+00:10:56.480 --> 00:11:01.079
+we need to add some sections
+
+00:11:01.079 --> 00:11:04.412
+that will cause Emacs to have to
+
+00:11:04.412 --> 00:11:06.720
+tangle or assemble
+
+00:11:06.720 --> 00:11:09.760
+this file from different pieces.
+
+00:11:09.760 --> 00:11:13.120
+Imagine that we wanted to take this file
+
+00:11:13.120 --> 00:11:16.720
+and maybe kind of templatize it.
+
+00:11:16.720 --> 00:11:19.120
+So, using literature programming syntax,
+
+00:11:19.120 --> 00:11:21.279
+this angle bracket syntax,
+
+00:11:21.279 --> 00:11:24.399
+let's say that we want to create an
+
+00:11:24.399 --> 00:11:29.360
+imports section,
+
+00:11:29.360 --> 00:11:32.399
+a functions section,
+
+00:11:32.399 --> 00:11:35.040
+and then maybe just a main section.
+
+00:11:35.040 --> 00:11:36.240
+We'll get rid of this.
+
+00:11:36.240 --> 00:11:37.920
+So now you see, we've created something
+
+00:11:37.920 --> 00:11:39.760
+that looks a little bit like a
+
+00:11:39.760 --> 00:11:42.880
+template or a scaffolding or outline
+
+00:11:42.880 --> 00:11:45.812
+for what our file is going to be.
+
+00:11:45.812 --> 00:11:48.399
+It looks a little bit like pseudocode.
+
+00:11:48.399 --> 00:11:50.612
+What we're going to have
+
+00:11:50.612 --> 00:11:52.399
+literate programming do
+
+00:11:52.399 --> 00:11:54.800
+is dynamically insert those things into
+
+00:11:54.800 --> 00:11:56.639
+those slots.
+
+00:11:56.639 --> 00:12:00.079
+So the first thing we need to do
+
+00:12:00.079 --> 00:12:03.200
+is... So let's create a section
+
+00:12:03.200 --> 00:12:08.079
+called "Say Hello."
+
+00:12:08.079 --> 00:12:09.519
+We want to add some functionality that
+
+00:12:09.519 --> 00:12:12.720
+makes our program say hello.
+
+00:12:12.720 --> 00:12:15.680
+So using a different snippet that I have
+
+00:12:15.680 --> 00:12:17.600
+for creating something
+
+00:12:17.600 --> 00:12:20.800
+that I call like a literate section,
+
+00:12:20.800 --> 00:12:24.079
+basically, we create a
+
+00:12:24.079 --> 00:12:26.000
+another source block that's almost the
+
+00:12:26.000 --> 00:12:27.839
+same as the one for the file.
+
+00:12:27.839 --> 00:12:29.412
+It just has a few differences
+
+00:12:29.412 --> 00:12:34.079
+Say we want to drop code into the import
+section
+
+00:12:34.079 --> 00:12:36.639
+and we want it to be in Go.
+
+00:12:36.639 --> 00:12:40.720
+Here we use the same :noweb no-export syntax,
+
+00:12:40.720 --> 00:12:44.560
+but then we've added this :noweb-ref imports,
+
+00:12:44.560 --> 00:12:48.240
+and this ties that slot
+
+00:12:48.240 --> 00:12:51.120
+to this reference. It tells
+
+00:12:51.120 --> 00:12:53.760
+Emacs that when you tangle,
+
+00:12:53.760 --> 00:12:55.479
+we want to stick whatever's in here
+
+00:12:55.479 --> 00:12:58.240
+in that spot.
+
+00:12:58.240 --> 00:13:02.079
+You skip the tangle file name section
+
+00:13:02.079 --> 00:13:03.279
+because you're not actually creating a
+
+00:13:03.279 --> 00:13:04.240
+file name.
+
+00:13:04.240 --> 00:13:06.160
+You're putting information into an
+
+00:13:06.160 --> 00:13:07.680
+existing file.
+
+00:13:07.680 --> 00:13:10.720
+So here, we would just add the "fmt"
+
+00:13:10.720 --> 00:13:14.399
+for the imports.
+
+00:13:14.399 --> 00:13:16.145
+Let's add another section
+
+00:13:16.145 --> 00:13:22.240
+for functions.
+
+00:13:22.240 --> 00:13:23.812
+Let's just create a function
+
+00:13:23.812 --> 00:13:28.079
+called sayHello
+
+00:13:28.079 --> 00:13:31.745
+that doesn't have any arguments.
+
+00:13:31.745 --> 00:13:34.000
+No return types.
+
+00:13:34.000 --> 00:13:35.760
+All it does is pretty much the
+
+00:13:35.760 --> 00:13:37.440
+same thing as we did before:
+
+00:13:37.440 --> 00:13:38.479
+just print something.
+
+00:13:38.479 --> 00:13:45.760
+Let's just say "Hello EmacsConf"
+this time.
+
+00:13:45.760 --> 00:13:47.279
+Now we have a function,
+
+00:13:47.279 --> 00:13:50.779
+and now the function won't do anything
+
+00:13:50.779 --> 00:13:52.720
+unless we invoke it. Let's do
+
+00:13:52.720 --> 00:13:56.000
+one last literate section
+
+00:13:56.000 --> 00:13:59.920
+called main. Make that Go
+
+00:13:59.920 --> 00:14:03.519
+source block. Then let's
+
+00:14:03.519 --> 00:14:10.320
+invoke that function.
+
+00:14:10.320 --> 00:14:13.360
+Now you can see that we've got
+
+00:14:13.360 --> 00:14:15.600
+our scaffolding
+
+00:14:15.600 --> 00:14:17.199
+outline, and then we have
+
+00:14:17.199 --> 00:14:20.079
+the sections that we want to get tangled
+
+00:14:20.079 --> 00:14:21.360
+or inserted.
+
+00:14:21.360 --> 00:14:25.440
+I've used this syntax.
+
+00:14:25.440 --> 00:14:27.199
+It's kinda borrowed from
+
+00:14:27.199 --> 00:14:28.479
+literate programming a little bit
+
+00:14:28.479 --> 00:14:30.320
+with a +=, so really it's just saying
+
+00:14:30.320 --> 00:14:32.480
+that I want to append
+
+00:14:32.480 --> 00:14:35.760
+this item into the import section
+
+00:14:35.760 --> 00:14:37.600
+It's really just to make a little bit
+
+00:14:37.600 --> 00:14:39.839
+more clear what's going on.
+
+00:14:39.839 --> 00:14:41.445
+When you generate documentation,
+
+00:14:41.445 --> 00:14:43.519
+you won't see these
+
+00:14:43.519 --> 00:14:46.979
+particular property annotations,
+
+00:14:46.979 --> 00:14:50.145
+and so you won't know immediately
+
+00:14:50.145 --> 00:14:51.779
+that this section goes in the
+
+00:14:51.779 --> 00:14:53.839
+imports area. So I usually put
+
+00:14:53.839 --> 00:14:55.440
+a little bit of documentation on top
+
+00:14:55.440 --> 00:14:57.760
+there, so that it's easy to see.
+
+00:14:57.760 --> 00:15:01.120
+You would, probably, if this was very
+
+00:15:01.120 --> 00:15:03.040
+complicated, you'd put some
+
+00:15:03.040 --> 00:15:06.245
+documentation above to explain
+
+00:15:06.245 --> 00:15:07.360
+what you were doing,
+
+00:15:07.360 --> 00:15:11.519
+maybe right here.
+
+00:15:11.519 --> 00:15:13.279
+You could picture yourself
+
+00:15:13.279 --> 00:15:15.040
+maybe explaining
+
+00:15:15.040 --> 00:15:16.745
+a complicated algorithm
+
+00:15:16.745 --> 00:15:18.079
+or something up here
+
+00:15:18.079 --> 00:15:21.120
+and having a nice way to document it.
+
+00:15:21.120 --> 00:15:22.959
+So now that we've got that here in the
+
+00:15:22.959 --> 00:15:25.600
+documentation, we need to figure out...
+
+00:15:25.600 --> 00:15:27.040
+We need to make sure that it's going to
+
+00:15:27.040 --> 00:15:28.045
+tangle properly.
+
+00:15:28.045 --> 00:15:33.519
+Your best friend at this point
+
+00:15:33.519 --> 00:15:35.680
+is a keyboard shortcut that lets you
+
+00:15:35.680 --> 00:15:37.945
+preview the tangled operation.
+
+00:15:37.945 --> 00:15:42.560
+If you say C-c C-v C-v,
+
+00:15:42.560 --> 00:15:44.079
+it will create a new buffer
+
+00:15:44.079 --> 00:15:47.212
+with the tangled contents
+
+00:15:47.212 --> 00:15:49.179
+and so you can see here
+
+00:15:49.179 --> 00:15:52.345
+that the fmt import went to the right
+place,
+
+00:15:52.345 --> 00:15:54.679
+that function went to the right place,
+
+00:15:54.679 --> 00:15:56.079
+the function invocation went to
+
+00:15:56.079 --> 00:15:58.480
+the right place. We're feeling good.
+
+00:15:58.480 --> 00:16:00.912
+You can nest these things
+
+00:16:00.912 --> 00:16:02.800
+many layers deep.
+
+00:16:02.800 --> 00:16:06.045
+If you came into the sayHello function,
+
+00:16:06.045 --> 00:16:10.560
+you could add more sections.
+
+00:16:10.560 --> 00:16:13.759
+It'll go through and it'll
+
+00:16:13.759 --> 00:16:15.345
+keep track of all that
+
+00:16:15.345 --> 00:16:16.212
+and tangle it for you
+
+00:16:16.212 --> 00:16:16.959
+so you really get a lot of freedom
+
+00:16:16.959 --> 00:16:18.320
+and flexibility for how you want to
+
+00:16:18.320 --> 00:16:20.479
+document things by doing this.
+
+00:16:20.479 --> 00:16:23.079
+So now that we've previewed it
+
+00:16:23.079 --> 00:16:25.839
+and we feel good about it,
+
+00:16:25.839 --> 00:16:28.639
+we need to tangle so
+
+00:16:28.639 --> 00:16:31.440
+we get the file on the file system.
+
+00:16:31.440 --> 00:16:34.979
+so C-c C-c and get...
+
+00:16:34.979 --> 00:16:37.199
+just main.go comes back again.
+
+00:16:37.199 --> 00:16:40.959
+C-c C-cc and no errors come back.
+
+00:16:40.959 --> 00:16:43.279
+Then if we did this right,
+
+00:16:43.279 --> 00:16:45.079
+when we run this, we should get
+
+00:16:45.079 --> 00:16:45.600
+"Hello, EmacsConf."
+
+00:16:45.600 --> 00:16:51.199
+So C-c C-c, Hello EmacsConf.
+
+00:16:54.800 --> 00:16:57.645
+I think that's pretty, pretty cool,
+actually.
+
+00:16:57.645 --> 00:16:59.579
+So we've got the breadcrumbs
+
+00:16:59.579 --> 00:17:01.212
+of the process we've gone through
+
+00:17:01.212 --> 00:17:02.399
+to get to this point,
+
+00:17:02.399 --> 00:17:07.545
+this initial document that has some
+tangling in it.
+
+00:17:07.545 --> 00:17:09.919
+We have documentation for how to tangle,
+
+00:17:09.919 --> 00:17:11.345
+how to build, how to run.
+
+00:17:11.345 --> 00:17:15.045
+We've really built a nice foundation
+
+00:17:15.045 --> 00:17:19.379
+for moving forward on our project
+
+00:17:19.379 --> 00:17:21.439
+and a nice way of breaking things
+out
+
+00:17:21.439 --> 00:17:23.280
+and documenting further.
+
+00:17:23.280 --> 00:17:27.120
+The last piece that we need to
+
+00:17:27.120 --> 00:17:30.559
+take care of is the weave that
+
+00:17:30.559 --> 00:17:34.799
+I showed you in the diagram above.
+
+00:17:34.799 --> 00:17:38.640
+So one more time, we'll drop in
+
+00:17:38.640 --> 00:17:41.760
+some documentatio, this time on how
+
+00:17:41.760 --> 00:17:42.400
+to weave.
+
+00:17:42.400 --> 00:17:44.400
+It's really just an export function.
+
+00:17:44.400 --> 00:17:46.245
+it's not... There's not a separate
+
+00:17:46.245 --> 00:17:49.012
+weave command going on here.
+
+00:17:49.012 --> 00:17:50.640
+we're just going to export
+
+00:17:50.640 --> 00:17:53.512
+what we've got here into a Markdown
+format.
+
+00:17:53.512 --> 00:17:57.045
+We're using org-gfm-export-to-markdown,
+
+00:17:57.045 --> 00:17:59.745
+which is the Github style markdown.
+
+00:17:59.745 --> 00:18:02.160
+You can use the other,
+
+00:18:02.160 --> 00:18:03.812
+more standard type as well.
+
+00:18:03.812 --> 00:18:08.479
+Hit C-c C-c. Now you see
+
+00:18:08.479 --> 00:18:11.312
+we've got a README file,
+
+00:18:11.312 --> 00:18:16.512
+and if you look in the file system,
+
+00:18:16.512 --> 00:18:19.120
+we've got that right there.
+
+00:18:19.120 --> 00:18:23.120
+If you go to something like ghostwriter
+
+00:18:23.120 --> 00:18:31.679
+and open that file,
+
+00:18:31.679 --> 00:18:32.879
+now you can see that
+
+00:18:32.879 --> 00:18:35.520
+it's generated some documentation.
+
+00:18:35.520 --> 00:18:37.645
+It puts a index at top at the top.
+
+00:18:39.679 --> 00:18:41.145
+I usually turn that off.
+
+00:18:41.145 --> 00:18:42.379
+It's easy to do that by
+
+00:18:42.379 --> 00:18:43.179
+putting a property at the
+
+00:18:43.179 --> 00:18:46.145
+top of your Org file,
+
+00:18:46.145 --> 00:18:46.880
+but some people like to
+
+00:18:46.880 --> 00:18:48.559
+have an index.
+
+00:18:48.559 --> 00:18:50.799
+Here you can see that it has generated
+
+00:18:50.799 --> 00:18:55.200
+pretty nicely and formatted
+snippets well,
+
+00:18:55.200 --> 00:18:56.880
+put the diagram in there, and then
+
+00:18:58.240 --> 00:19:02.799
+it's preserved this
+literate programming syntax,
+
+00:19:02.799 --> 00:19:04.960
+which is important because that's how we
+
+00:19:04.960 --> 00:19:06.112
+want to view the documentation.
+
+00:19:06.112 --> 00:19:11.312
+That's what the no-exports property
+
+00:19:11.312 --> 00:19:13.360
+was trying to maintain.
+
+00:19:13.360 --> 00:19:15.979
+no-exports means when you export,
+
+00:19:15.979 --> 00:19:18.400
+do not try to tangle.
+
+00:19:18.400 --> 00:19:20.559
+Hopefully that makes more sense now.
+
+00:19:20.559 --> 00:19:22.240
+Now you can see all the documentation.
+
+00:19:22.240 --> 00:19:26.080
+I think it demonstrates a
+
+00:19:26.080 --> 00:19:33.520
+pretty useful feature that's inside of
+Emacs.
+
+00:19:33.520 --> 00:19:34.979
+Hopefully you'll have as much fun
+
+00:19:34.979 --> 00:19:39.919
+using that as I have.
+
+00:19:39.919 --> 00:19:43.600
+So thanks!
diff --git a/2020/subtitles/emacsconf-2020--15-moving-from-jekyll-to-orgmode-an-experience-report--adolfo-villafiorita-autogen.vtt b/2020/subtitles/emacsconf-2020--15-moving-from-jekyll-to-orgmode-an-experience-report--adolfo-villafiorita-autogen.vtt
deleted file mode 100644
index 21202a4a..00000000
--- a/2020/subtitles/emacsconf-2020--15-moving-from-jekyll-to-orgmode-an-experience-report--adolfo-villafiorita-autogen.vtt
+++ /dev/null
@@ -1,1183 +0,0 @@
-WEBVTT
-
-00:00:00.080 --> 00:00:03.120
-okay okay excellent sorry okay so
-
-00:00:03.120 --> 00:00:06.960
-uh hello everyone um and um
-
-00:00:06.960 --> 00:00:10.080
-uh nice meeting you and let me
-
-00:00:10.080 --> 00:00:12.400
-thank the the organizer for all the
-
-00:00:12.400 --> 00:00:13.920
-organization and all the work they are
-
-00:00:13.920 --> 00:00:15.200
-doing to support us
-
-00:00:15.200 --> 00:00:18.400
-my name is adolfo villaferita
-
-00:00:18.400 --> 00:00:19.920
-I'm teaching at the university of
-
-00:00:19.920 --> 00:00:21.920
-trenton I'm also
-
-00:00:21.920 --> 00:00:24.480
-work will shortly be working at
-
-00:00:24.480 --> 00:00:26.240
-shared.tech which is a comp
-
-00:00:26.240 --> 00:00:29.359
-a non-profit organization developing an
-
-00:00:29.359 --> 00:00:30.530
-applications to
-
-00:00:30.530 --> 00:00:32.399
-[Music]
-
-00:00:32.399 --> 00:00:35.680
-recover surplus food but the the
-
-00:00:35.680 --> 00:00:38.960
-reason of the talk today and the reason
-
-00:00:38.960 --> 00:00:40.079
-I'm here today
-
-00:00:40.079 --> 00:00:42.719
-is to talk about my experience in moving
-
-00:00:42.719 --> 00:00:44.000
-from jekyll uh
-
-00:00:44.000 --> 00:00:47.200
-static website generator to org mode and
-
-00:00:47.200 --> 00:00:49.200
-the reason
-
-00:00:49.200 --> 00:00:52.079
-I move to work mode is to have better
-
-00:00:52.079 --> 00:00:53.039
-support for
-
-00:00:53.039 --> 00:00:56.800
-literary programming on the websites
-
-00:00:56.800 --> 00:00:58.399
-at the university of trento where we
-
-00:00:58.399 --> 00:01:00.480
-make available the content for the
-
-00:01:00.480 --> 00:01:04.720
-the students okay so
-
-00:01:04.720 --> 00:01:08.000
-first of all what is a static website
-
-00:01:08.000 --> 00:01:10.080
-generator it is basically a tool which
-
-00:01:10.080 --> 00:01:11.360
-allows you to
-
-00:01:11.360 --> 00:01:15.360
-generate html files out of text files
-
-00:01:15.360 --> 00:01:17.439
-containing basically two types of
-
-00:01:17.439 --> 00:01:19.280
-information metadata
-
-00:01:19.280 --> 00:01:23.119
-and content metadata is let's say a
-
-00:01:23.119 --> 00:01:26.159
-set of key pairs describing the the
-
-00:01:26.159 --> 00:01:28.560
-content of the file such as the title
-
-00:01:28.560 --> 00:01:30.000
-author
-
-00:01:30.000 --> 00:01:31.759
-tags and so on and so forth and the
-
-00:01:31.759 --> 00:01:34.560
-content is what you actually want to to
-
-00:01:34.560 --> 00:01:37.040
-get published on the on the internet in
-
-00:01:37.040 --> 00:01:38.880
-the html file
-
-00:01:38.880 --> 00:01:41.439
-and usually the content is written in
-
-00:01:41.439 --> 00:01:44.560
-some kind of
-
-00:01:44.560 --> 00:01:47.520
-markup language such as markdown or
-
-00:01:47.520 --> 00:01:49.759
-possibly
-
-00:01:49.759 --> 00:01:53.200
-org mode and well jackie is a very
-
-00:01:53.200 --> 00:01:55.759
-popular website uh
-
-00:01:55.759 --> 00:01:58.719
-a static website generator it is written
-
-00:01:58.719 --> 00:01:59.840
-in a ruby
-
-00:01:59.840 --> 00:02:03.280
-and what it does it it it systematically
-
-00:02:03.280 --> 00:02:06.840
-let's say transforms all the input files
-
-00:02:06.840 --> 00:02:09.440
-by making the content into
-
-00:02:09.440 --> 00:02:11.599
-html and systematically applying a
-
-00:02:11.599 --> 00:02:14.000
-template in order to generate the
-
-00:02:14.000 --> 00:02:17.120
-html files which you can then deploy
-
-00:02:17.120 --> 00:02:19.840
-on your server of choice to make them
-
-00:02:19.840 --> 00:02:22.160
-available on the on the internet
-
-00:02:22.160 --> 00:02:26.160
-and one of the features uh most
-
-00:02:26.160 --> 00:02:28.480
-well I would say all static website
-
-00:02:28.480 --> 00:02:30.239
-generators have
-
-00:02:30.239 --> 00:02:32.560
-is a debt of being able to let's say
-
-00:02:32.560 --> 00:02:34.879
-collect the metadata information
-
-00:02:34.879 --> 00:02:38.400
-uh of the files being part of your of
-
-00:02:38.400 --> 00:02:39.440
-your project
-
-00:02:39.440 --> 00:02:45.280
-and the reason they do that is because
-
-00:02:45.280 --> 00:02:47.840
-you sometimes want to generate pages
-
-00:02:47.840 --> 00:02:49.280
-based on the content
-
-00:02:49.280 --> 00:02:53.200
-of your um of your projects
-
-00:02:53.200 --> 00:02:56.239
-such as for instance the the list of
-
-00:02:56.239 --> 00:02:59.040
-posts you have recently published or
-
-00:02:59.040 --> 00:03:00.400
-maybe the list of tags
-
-00:03:00.400 --> 00:03:03.840
-uh you uh have defined for your post and
-
-00:03:03.840 --> 00:03:07.280
-so on and so forth so so
-
-00:03:07.280 --> 00:03:09.760
-dracula gives the possibility of
-
-00:03:09.760 --> 00:03:12.400
-generating this kind of dynamic
-
-00:03:12.400 --> 00:03:15.760
-content by using liquid which is a
-
-00:03:15.760 --> 00:03:18.800
-templating language which
-
-00:03:18.800 --> 00:03:21.840
-looks like these
-
-00:03:21.840 --> 00:03:24.879
-so basically you you have all the
-
-00:03:24.879 --> 00:03:26.879
-constructs you can
-
-00:03:26.879 --> 00:03:29.120
-expect in a programming language this
-
-00:03:29.120 --> 00:03:29.920
-for instance
-
-00:03:29.920 --> 00:03:33.360
-is a fourth cycle which
-
-00:03:33.360 --> 00:03:37.440
-iterates over all the post or the
-
-00:03:37.440 --> 00:03:39.599
-files in a specific directory of the
-
-00:03:39.599 --> 00:03:41.040
-jacket project
-
-00:03:41.040 --> 00:03:45.040
-and for each post it takes the the title
-
-00:03:45.040 --> 00:03:48.400
-and the url and generates a link
-
-00:03:48.400 --> 00:03:51.840
-okay so dracule is
-
-00:03:51.840 --> 00:03:55.200
-nice and sweet but over the years
-
-00:03:55.200 --> 00:03:57.760
-I started using more and more
-
-00:03:57.760 --> 00:03:59.519
-systematically
-
-00:03:59.519 --> 00:04:02.959
-or mode to write all my files and I
-
-00:04:02.959 --> 00:04:05.439
-moved from markdown to word mode I am a
-
-00:04:05.439 --> 00:04:07.439
-long time Emacs user so I've been using
-
-00:04:07.439 --> 00:04:09.680
-imax for 30 years now so
-
-00:04:09.680 --> 00:04:12.799
-or mode is a more recent discovery
-
-00:04:12.799 --> 00:04:15.280
-but it is a very nice uh let's say
-
-00:04:15.280 --> 00:04:16.239
-discovery I
-
-00:04:16.239 --> 00:04:19.680
-I made and the reason I like org mode
-
-00:04:19.680 --> 00:04:22.320
-is because for instance you can write
-
-00:04:22.320 --> 00:04:23.600
-formulas using
-
-00:04:23.600 --> 00:04:26.639
-mac jacks and you can generate diagrams
-
-00:04:26.639 --> 00:04:30.320
-or plots with new plots and
-
-00:04:30.320 --> 00:04:32.240
-also important is the fact that you have
-
-00:04:32.240 --> 00:04:34.080
-the possibility of let's say publishing
-
-00:04:34.080 --> 00:04:35.919
-your documents
-
-00:04:35.919 --> 00:04:39.520
-to multiple ends backhands such as pdf
-
-00:04:39.520 --> 00:04:40.400
-or
-
-00:04:40.400 --> 00:04:43.600
-maybe a review presentations or
-
-00:04:43.600 --> 00:04:47.199
-or html and this is all made possible
-
-00:04:47.199 --> 00:04:50.479
-by bubble which is
-
-00:04:50.479 --> 00:04:52.560
-exactly what we just saw in the the
-
-00:04:52.560 --> 00:04:54.639
-previous talk
-
-00:04:54.639 --> 00:04:57.440
-namely the possibility of executing a
-
-00:04:57.440 --> 00:04:59.520
-snippet of code
-
-00:04:59.520 --> 00:05:02.560
-embedded in in your pages
-
-00:05:02.560 --> 00:05:06.400
-um and our model can also be used
-
-00:05:06.400 --> 00:05:09.600
-within let's say jackie and in fact
-
-00:05:09.600 --> 00:05:10.720
-there is a
-
-00:05:10.720 --> 00:05:15.199
-a nice gem a nice library called jackie
-
-00:05:15.199 --> 00:05:18.880
-org which allows you to use org modifies
-
-00:05:18.880 --> 00:05:19.680
-directly
-
-00:05:19.680 --> 00:05:22.880
-into jekyll but when you start using
-
-00:05:22.880 --> 00:05:26.560
-org mode when I started using
-
-00:05:26.560 --> 00:05:30.560
-mode I realized I could move
-
-00:05:30.560 --> 00:05:34.240
-all my workflow to or my publishing
-
-00:05:34.240 --> 00:05:36.840
-workflow to image
-
-00:05:36.840 --> 00:05:39.520
-and and and in fact
-
-00:05:39.520 --> 00:05:41.600
-org mode is also static website
-
-00:05:41.600 --> 00:05:42.880
-generator because
-
-00:05:42.880 --> 00:05:46.240
-it has got the possibility of publishing
-
-00:05:46.240 --> 00:05:50.880
-um projects made of org mode files
-
-00:05:50.880 --> 00:05:53.840
-and one of the nice things about let's
-
-00:05:53.840 --> 00:05:55.759
-say that the publishing features of work
-
-00:05:55.759 --> 00:05:56.479
-mode
-
-00:05:56.479 --> 00:05:58.880
-is that it allows you to define in the
-
-00:05:58.880 --> 00:05:59.840
-org publish
-
-00:05:59.840 --> 00:06:03.199
-project a list of the components
-
-00:06:03.199 --> 00:06:06.479
-which are part of your project and in a
-
-00:06:06.479 --> 00:06:07.520
-sense it is
-
-00:06:07.520 --> 00:06:10.479
-also more flexible than jackie lee's
-
-00:06:10.479 --> 00:06:12.400
-because it also allows you for instance
-
-00:06:12.400 --> 00:06:12.880
-to
-
-00:06:12.880 --> 00:06:15.120
-let's say publish a single file rather
-
-00:06:15.120 --> 00:06:17.440
-than having to recompile everything
-
-00:06:17.440 --> 00:06:20.080
-every time you want to publish your
-
-00:06:20.080 --> 00:06:23.919
-your project to your website however
-
-00:06:23.919 --> 00:06:25.840
-there are some short comments I would
-
-00:06:25.840 --> 00:06:27.120
-say or some some
-
-00:06:27.120 --> 00:06:29.520
-areas of improvement improvement let me
-
-00:06:29.520 --> 00:06:30.400
-say
-
-00:06:30.400 --> 00:06:32.720
-the first is that let's say support for
-
-00:06:32.720 --> 00:06:33.600
-templating
-
-00:06:33.600 --> 00:06:36.639
-is not so obvious as it is let's say
-
-00:06:36.639 --> 00:06:39.280
-in jackie or even though there are some
-
-00:06:39.280 --> 00:06:40.560
-let's say
-
-00:06:40.560 --> 00:06:44.560
-nice extensions such as argo t html
-
-00:06:44.560 --> 00:06:46.160
-for instance which allows you to use
-
-00:06:46.160 --> 00:06:48.400
-templates and
-
-00:06:48.400 --> 00:06:51.840
-more important to me was the fact that
-
-00:06:51.840 --> 00:06:54.080
-apparently there is little support for
-
-00:06:54.080 --> 00:06:55.520
-the creation of dynamic
-
-00:06:55.520 --> 00:06:58.240
-content so I was very curious and very
-
-00:06:58.240 --> 00:06:59.360
-keen to use
-
-00:06:59.360 --> 00:07:02.800
-or mode for let's say publishing my blog
-
-00:07:02.800 --> 00:07:05.440
-and my the the courses at the university
-
-00:07:05.440 --> 00:07:08.720
-but then uh I had to find a way
-
-00:07:08.720 --> 00:07:11.440
-to let's say being able to publish these
-
-00:07:11.440 --> 00:07:13.599
-dynamic pages finding some kind of
-
-00:07:13.599 --> 00:07:16.000
-replacement so to speak for uh the
-
-00:07:16.000 --> 00:07:16.720
-liquid
-
-00:07:16.720 --> 00:07:19.759
-the liquid engine and and the solution
-
-00:07:19.759 --> 00:07:20.160
-was
-
-00:07:20.160 --> 00:07:24.160
-that at hand actually because
-
-00:07:24.160 --> 00:07:27.280
-basically I realized I could use bubble
-
-00:07:27.280 --> 00:07:30.800
-for exactly this purpose so rather than
-
-00:07:30.800 --> 00:07:32.720
-using bubble for generating
-
-00:07:32.720 --> 00:07:35.759
-plots or let's say my other computation
-
-00:07:35.759 --> 00:07:37.919
-or whatever I was using them for
-
-00:07:37.919 --> 00:07:41.039
-I realized they could use bubble to
-
-00:07:41.039 --> 00:07:42.080
-generate
-
-00:07:42.080 --> 00:07:45.120
-html which could be let's say
-
-00:07:45.120 --> 00:07:48.960
-uh then published uh uh
-
-00:07:48.960 --> 00:07:52.720
-in the project so uh so all I needed to
-
-00:07:52.720 --> 00:07:53.680
-do then
-
-00:07:53.680 --> 00:07:56.240
-was defining some kind of functions some
-
-00:07:56.240 --> 00:07:58.319
-kind of code in order to read
-
-00:07:58.319 --> 00:08:01.840
-all the org mode uh the metadata of all
-
-00:08:01.840 --> 00:08:02.400
-the
-
-00:08:02.400 --> 00:08:05.759
-opmod files of my web project so that
-
-00:08:05.759 --> 00:08:09.680
-I could let's say then publish uh
-
-00:08:09.680 --> 00:08:13.280
-generate the dynamic content and
-
-00:08:13.280 --> 00:08:18.080
-this is a snippet taken from
-
-00:08:18.080 --> 00:08:21.759
-one of my html projects
-
-00:08:21.759 --> 00:08:24.800
-which basically shows the way in which
-
-00:08:24.800 --> 00:08:27.599
-I generate the um the list of posts on
-
-00:08:27.599 --> 00:08:29.360
-my on my page it is uh
-
-00:08:29.360 --> 00:08:32.560
-exactly how the the liquid that we saw
-
-00:08:32.560 --> 00:08:34.320
-in a couple of a couple of slides
-
-00:08:34.320 --> 00:08:35.680
-earlier that looks like
-
-00:08:35.680 --> 00:08:39.200
-uh in inner mode
-
-00:08:39.200 --> 00:08:42.320
-and basically what I'm doing I'm using I
-
-00:08:42.320 --> 00:08:46.720
-wrote a ruby script which
-
-00:08:46.720 --> 00:08:49.680
-reads all the metadata so this uh
-
-00:08:49.680 --> 00:08:51.040
-highlighted code
-
-00:08:51.040 --> 00:08:53.440
-basically loads the script which is
-
-00:08:53.440 --> 00:08:54.240
-stored
-
-00:08:54.240 --> 00:08:56.800
-externally and then it collects all the
-
-00:08:56.800 --> 00:08:58.320
-metadata from the
-
-00:08:58.320 --> 00:09:00.880
-org mode files in the current uh in the
-
-00:09:00.880 --> 00:09:02.240
-current directory
-
-00:09:02.240 --> 00:09:04.800
-and then the the following the the code
-
-00:09:04.800 --> 00:09:06.480
-you can see here
-
-00:09:06.480 --> 00:09:09.839
-basically iterate over all the
-
-00:09:09.839 --> 00:09:12.959
-past red the at the previous step
-
-00:09:12.959 --> 00:09:16.399
-and it generates um
-
-00:09:16.399 --> 00:09:19.519
-a list with the title and uh
-
-00:09:19.519 --> 00:09:22.959
-and the urls and so basically
-
-00:09:22.959 --> 00:09:27.440
-replicating what jackie does so
-
-00:09:27.440 --> 00:09:30.240
-okay so there are some some other things
-
-00:09:30.240 --> 00:09:32.399
-I have to to deal with in order to let's
-
-00:09:32.399 --> 00:09:33.200
-say
-
-00:09:33.200 --> 00:09:36.480
-accommodate my workflow and but that was
-
-00:09:36.480 --> 00:09:39.200
-relatively easy in the sense that one of
-
-00:09:39.200 --> 00:09:40.240
-the
-
-00:09:40.240 --> 00:09:43.279
-uh problem one of the issue I had to
-
-00:09:43.279 --> 00:09:45.360
-solve was that of let's say having
-
-00:09:45.360 --> 00:09:48.480
-a common navigation on all my
-
-00:09:48.480 --> 00:09:51.040
-pages uh but that was easily solved
-
-00:09:51.040 --> 00:09:51.920
-using
-
-00:09:51.920 --> 00:09:54.959
-uh the include feature so I basically
-
-00:09:54.959 --> 00:09:56.000
-made available
-
-00:09:56.000 --> 00:09:57.839
-and include with all the navigation
-
-00:09:57.839 --> 00:10:00.560
-which is uh embedded in all the pages of
-
-00:10:00.560 --> 00:10:01.839
-my websites
-
-00:10:01.839 --> 00:10:04.959
-uh through the could include and another
-
-00:10:04.959 --> 00:10:06.160
-nice feature which
-
-00:10:06.160 --> 00:10:08.560
-jackie las is the possibility of
-
-00:10:08.560 --> 00:10:09.760
-previewing
-
-00:10:09.760 --> 00:10:12.800
-a website before deploying it and but
-
-00:10:12.800 --> 00:10:13.200
-then
-
-00:10:13.200 --> 00:10:16.079
-Emacs also has got a node which allows
-
-00:10:16.079 --> 00:10:17.839
-you to
-
-00:10:17.839 --> 00:10:21.200
-launch a web server and in fact
-
-00:10:21.200 --> 00:10:24.320
-I wrote a quick ack
-
-00:10:24.320 --> 00:10:26.959
-which allows you to which allows to
-
-00:10:26.959 --> 00:10:28.000
-basically
-
-00:10:28.000 --> 00:10:31.519
-invoke a node on a on our
-
-00:10:31.519 --> 00:10:34.720
-mode project and start a local preview
-
-00:10:34.720 --> 00:10:37.920
-and then use rsync
-
-00:10:37.920 --> 00:10:44.839
-in order to deploy the the website
-
-00:10:44.839 --> 00:10:46.240
-um
-
-00:10:46.240 --> 00:10:48.720
-five minutes left okay okay more than
-
-00:10:48.720 --> 00:10:51.200
-enough okay
-
-00:10:51.200 --> 00:10:53.200
-thanks thank you thank you very much I'm
-
-00:10:53.200 --> 00:10:55.440
-nearly done so then I can take some some
-
-00:10:55.440 --> 00:10:56.480
-questions
-
-00:10:56.480 --> 00:11:00.560
-so okay just to give you maybe
-
-00:11:00.560 --> 00:11:03.680
-a slightly more in-depth uh
-
-00:11:03.680 --> 00:11:06.480
-view of what the pages look like so
-
-00:11:06.480 --> 00:11:07.200
-these are
-
-00:11:07.200 --> 00:11:11.120
-one of the pages or the source files
-
-00:11:11.120 --> 00:11:14.720
-of one of the websites it is
-
-00:11:14.720 --> 00:11:18.480
-in literate programming so basically uh
-
-00:11:18.480 --> 00:11:20.399
-you see there is some metadata here I
-
-00:11:20.399 --> 00:11:22.640
-mean this is a regular old mod file
-
-00:11:22.640 --> 00:11:26.640
-and this part here
-
-00:11:26.640 --> 00:11:29.920
-basically defines some common options
-
-00:11:29.920 --> 00:11:31.519
-for publication
-
-00:11:31.519 --> 00:11:35.920
-and these two includes here
-
-00:11:35.920 --> 00:11:41.120
-put some extra html in the head part and
-
-00:11:41.120 --> 00:11:44.480
-the navigation and here as you can see
-
-00:11:44.480 --> 00:11:48.079
-is the code generating the
-
-00:11:48.079 --> 00:11:50.160
-the list in chronological order it is
-
-00:11:50.160 --> 00:11:52.240
-slightly more complex than the example I
-
-00:11:52.240 --> 00:11:53.839
-made in the slide
-
-00:11:53.839 --> 00:11:56.240
-because uh there is some more
-
-00:11:56.240 --> 00:11:57.839
-elaboration to
-
-00:11:57.839 --> 00:11:59.760
-uh to do including putting some
-
-00:11:59.760 --> 00:12:01.839
-javascript to identify
-
-00:12:01.839 --> 00:12:05.120
-according to let's say the the tags
-
-00:12:05.120 --> 00:12:08.160
-so to go back to the to the presentation
-
-00:12:08.160 --> 00:12:11.200
-um so the okay so
-
-00:12:11.200 --> 00:12:13.600
-I I managed this migration uh a few
-
-00:12:13.600 --> 00:12:14.560
-months ago
-
-00:12:14.560 --> 00:12:17.680
-and then uh all my workflow is within
-
-00:12:17.680 --> 00:12:20.399
-with old mode and within imax and um
-
-00:12:20.399 --> 00:12:23.079
-I'm very happy with it because it's
-
-00:12:23.079 --> 00:12:24.240
-simplified
-
-00:12:24.240 --> 00:12:26.800
-uh quite a bit let's say my public
-
-00:12:26.800 --> 00:12:28.480
-publication process
-
-00:12:28.480 --> 00:12:31.839
-and uh one of the advantages so another
-
-00:12:31.839 --> 00:12:34.240
-advantage so the first advantage is that
-
-00:12:34.240 --> 00:12:36.959
-everything is in ork mode and dmax
-
-00:12:36.959 --> 00:12:38.160
-second advantage
-
-00:12:38.160 --> 00:12:41.680
-is that everything is based on the
-
-00:12:41.680 --> 00:12:44.880
-standard machinery provided by orb mode
-
-00:12:44.880 --> 00:12:47.760
-so in a sense it is kind of let's say
-
-00:12:47.760 --> 00:12:50.079
-more robust with respect to
-
-00:12:50.079 --> 00:12:53.040
-dependencies and possible errors and so
-
-00:12:53.040 --> 00:12:54.320
-on and so forth
-
-00:12:54.320 --> 00:12:56.639
-and um and the fact that the old mode
-
-00:12:56.639 --> 00:12:58.240
-allows you to publish
-
-00:12:58.240 --> 00:13:00.880
-a single file in a project is is also
-
-00:13:00.880 --> 00:13:03.839
-very interesting because
-
-00:13:03.839 --> 00:13:07.839
-it allows to let's say be more robust to
-
-00:13:07.839 --> 00:13:11.040
-problems you might introduce when
-
-00:13:11.040 --> 00:13:14.079
-you're changing when I'm changing the
-
-00:13:14.079 --> 00:13:14.959
-setup
-
-00:13:14.959 --> 00:13:16.880
-and another interesting thing which I
-
-00:13:16.880 --> 00:13:18.320
-realized that I
-
-00:13:18.320 --> 00:13:21.519
-uh I could have is that
-
-00:13:21.519 --> 00:13:23.600
-in a sense the specification of the
-
-00:13:23.600 --> 00:13:24.880
-website
-
-00:13:24.880 --> 00:13:27.360
-is uh can be embedded in the website
-
-00:13:27.360 --> 00:13:28.480
-itself
-
-00:13:28.480 --> 00:13:30.800
-so in a sense this is some kind of let's
-
-00:13:30.800 --> 00:13:31.839
-say self
-
-00:13:31.839 --> 00:13:35.120
-the command it's a real set documenting
-
-00:13:35.120 --> 00:13:37.200
-uh what I'm actually doing so for
-
-00:13:37.200 --> 00:13:38.560
-instance
-
-00:13:38.560 --> 00:13:43.199
-uh here on my
-
-00:13:43.199 --> 00:13:46.399
-website you can see let's say the
-
-00:13:46.399 --> 00:13:48.240
-specification of the
-
-00:13:48.240 --> 00:13:51.519
-of the of the project which is uh loaded
-
-00:13:51.519 --> 00:13:52.320
-from my
-
-00:13:52.320 --> 00:13:55.519
-initialization file but then it is also
-
-00:13:55.519 --> 00:13:56.320
-published
-
-00:13:56.320 --> 00:13:59.440
-together with my home page and it leaves
-
-00:13:59.440 --> 00:14:01.360
-with the repository where
-
-00:14:01.360 --> 00:14:05.360
-I keep all the sources of my website
-
-00:14:05.360 --> 00:14:08.079
-which is kind of nice because it
-
-00:14:08.079 --> 00:14:09.839
-basically isolates
-
-00:14:09.839 --> 00:14:14.079
-everything in a single in a single place
-
-00:14:14.079 --> 00:14:16.880
-okay so there are some examples I'm
-
-00:14:16.880 --> 00:14:18.000
-showing them
-
-00:14:18.000 --> 00:14:20.320
-more because of the let's say source
-
-00:14:20.320 --> 00:14:21.760
-code which
-
-00:14:21.760 --> 00:14:25.519
-you can grab from the git repositories
-
-00:14:25.519 --> 00:14:26.160
-if you are
-
-00:14:26.160 --> 00:14:28.399
-interested of course I'm also available
-
-00:14:28.399 --> 00:14:30.079
-to provide some
-
-00:14:30.079 --> 00:14:32.959
-support and help if you are interested
-
-00:14:32.959 --> 00:14:34.480
-in this kind of stuff
-
-00:14:34.480 --> 00:14:37.760
-the the next step for me will be that of
-
-00:14:37.760 --> 00:14:38.560
-let's say trying
-
-00:14:38.560 --> 00:14:41.600
-making this kind of machinery available
-
-00:14:41.600 --> 00:14:45.199
-for more general use at the moment
-
-00:14:45.199 --> 00:14:47.120
-if you are interested in trying out my
-
-00:14:47.120 --> 00:14:48.800
-suggestion is let's say grabbing the
-
-00:14:48.800 --> 00:14:49.839
-sources
-
-00:14:49.839 --> 00:14:52.959
-or one of the let's say websites to see
-
-00:14:52.959 --> 00:14:56.000
-what how they look like and maybe try
-
-00:14:56.000 --> 00:14:56.720
-and
-
-00:14:56.720 --> 00:15:00.160
-customize it for your purposes
-
-00:15:00.160 --> 00:15:02.720
-and this is basically the content of my
-
-00:15:02.720 --> 00:15:03.839
-talk so
-
-00:15:03.839 --> 00:15:06.959
-I'm open to two questions and thank you
-
-00:15:06.959 --> 00:15:07.279
-for
-
-00:15:07.279 --> 00:15:10.880
-your attention you are now unmuted uh
-
-00:15:10.880 --> 00:15:12.880
-thank you very much adolfo for your
-
-00:15:12.880 --> 00:15:14.480
-awesome presentation
-
-00:15:14.480 --> 00:15:17.360
-um I think we have time for maybe like
-
-00:15:17.360 --> 00:15:19.360
-one or two questions
-
-00:15:19.360 --> 00:15:21.279
-um and then the rest maybe you could
-
-00:15:21.279 --> 00:15:22.880
-take up um
-
-00:15:22.880 --> 00:15:26.639
-after the stream after sure
-
-00:15:26.639 --> 00:15:30.000
-uh I we should do um would you like me
-
-00:15:30.000 --> 00:15:31.839
-to read you the questions
-
-00:15:31.839 --> 00:15:35.199
-uh yeah probably better because
-
-00:15:35.199 --> 00:15:40.399
-I kind of lost there okay no problem um
-
-00:15:40.399 --> 00:15:42.480
-okay so someone asks do you have any
-
-00:15:42.480 --> 00:15:45.440
-opinion on fern
-
-00:15:45.440 --> 00:15:48.639
-fan I I don't know fans
-
-00:15:48.639 --> 00:15:51.839
-so I'll give it a try and uh and uh
-
-00:15:51.839 --> 00:15:55.040
-and check it out okay
-
-00:15:55.040 --> 00:15:57.839
-thanks and um people are also asking do
-
-00:15:57.839 --> 00:15:59.680
-you discuss this for example in a blog
-
-00:15:59.680 --> 00:16:01.279
-or anywhere else they could find more
-
-00:16:01.279 --> 00:16:02.800
-about it
-
-00:16:02.800 --> 00:16:05.600
-oh yes I'm going to publish the let's
-
-00:16:05.600 --> 00:16:08.560
-say the talk and the content on the
-
-00:16:08.560 --> 00:16:11.120
-on my website and then I'll link it from
-
-00:16:11.120 --> 00:16:12.320
-the max conf
-
-00:16:12.320 --> 00:16:14.720
-conference so that it will be easier for
-
-00:16:14.720 --> 00:16:15.680
-people to
-
-00:16:15.680 --> 00:16:19.040
-to reach it so I will shortly make it
-
-00:16:19.040 --> 00:16:22.880
-available right after the conference
-
-00:16:22.880 --> 00:16:25.440
-wonderful and I think that's all for the
-
-00:16:25.440 --> 00:16:26.160
-questions
-
-00:16:26.160 --> 00:16:28.560
-thank you very much okay thank you very
-
-00:16:28.560 --> 00:16:29.600
-much thank you
-
-00:16:29.600 --> 00:16:34.800
-and cheers bye cheers bye
diff --git a/2020/subtitles/emacsconf-2020--15-moving-from-jekyll-to-orgmode-an-experience-report--adolfo-villafiorita.vtt b/2020/subtitles/emacsconf-2020--15-moving-from-jekyll-to-orgmode-an-experience-report--adolfo-villafiorita.vtt
new file mode 100644
index 00000000..5d0b0b57
--- /dev/null
+++ b/2020/subtitles/emacsconf-2020--15-moving-from-jekyll-to-orgmode-an-experience-report--adolfo-villafiorita.vtt
@@ -0,0 +1,1057 @@
+WEBVTT
+
+00:00:00.080 --> 00:00:03.120
+Adolfo: Okay, excellent.
+
+00:00:03.120 --> 00:00:06.960
+Hello, everyone and
+
+00:00:06.960 --> 00:00:10.080
+nice meeting you. Let me
+
+00:00:10.080 --> 00:00:12.400
+thank the the organizer for all the
+
+00:00:12.400 --> 00:00:13.920
+organization and all the work they are
+
+00:00:13.920 --> 00:00:15.200
+doing to support us.
+
+00:00:15.200 --> 00:00:18.400
+My name is Adolfo Villafiorita.
+
+00:00:18.400 --> 00:00:20.733
+I'm teaching at the University of
+Trento.
+
+00:00:20.733 --> 00:00:24.480
+I will shortly be working at
+
+00:00:24.480 --> 00:00:26.240
+shared.tech, which is
+
+00:00:26.240 --> 00:00:29.359
+a non-profit organization developing
+
+00:00:29.359 --> 00:00:30.530
+applications to
+
+00:00:32.399 --> 00:00:35.680
+recover surplus food.
+
+00:00:35.680 --> 00:00:38.600
+The reason of the talk today
+
+00:00:38.600 --> 00:00:40.079
+and the reason I'm here today
+
+00:00:40.079 --> 00:00:42.719
+is to talk about my experience in moving
+
+00:00:42.719 --> 00:00:47.200
+from Jekyll static website generator to
+Org Mode.
+
+00:00:47.200 --> 00:00:50.700
+The reason I moved to Org Mode
+
+00:00:50.700 --> 00:00:53.100
+is to have better support for
+
+00:00:53.100 --> 00:00:56.800
+literate programming on the websites
+
+00:00:56.800 --> 00:00:58.399
+at the University of Trento, where we
+
+00:00:58.399 --> 00:01:00.480
+make available the content for the
+
+00:01:00.480 --> 00:01:04.720
+the students.
+
+00:01:04.720 --> 00:01:08.900
+First of all, what is a static
+website generator?
+
+00:01:08.900 --> 00:01:10.080
+It is basically a tool which
+
+00:01:10.080 --> 00:01:11.360
+allows you to
+
+00:01:11.360 --> 00:01:15.360
+generate HTML files out of text files
+
+00:01:15.360 --> 00:01:17.439
+containing basically two types of
+
+00:01:17.439 --> 00:01:20.700
+information: metadata and content.
+
+00:01:20.700 --> 00:01:23.119
+Metadata is a
+
+00:01:23.119 --> 00:01:26.159
+set of key pairs describing the
+
+00:01:26.159 --> 00:01:28.560
+content of the file, such as the title,
+
+00:01:28.560 --> 00:01:31.733
+author, tags, and so on and so forth.
+
+00:01:31.733 --> 00:01:34.560
+The content is what you actually
+want to
+
+00:01:34.560 --> 00:01:37.040
+get published on the Internet in
+
+00:01:37.040 --> 00:01:38.880
+the HTML file.
+
+00:01:38.880 --> 00:01:41.439
+Usually the content is written in
+
+00:01:41.439 --> 00:01:45.800
+some kind of markup language,
+
+00:01:45.800 --> 00:01:49.759
+such as Markdown or possibly
+
+00:01:49.759 --> 00:01:53.200
+Org Mode. Jekyll is a very
+
+00:01:53.200 --> 00:01:57.900
+popular static website generator.
+
+00:01:57.900 --> 00:01:59.840
+It is written in Ruby.
+
+00:01:59.840 --> 00:02:03.280
+What it does: it systematically
+
+00:02:03.280 --> 00:02:06.840
+transforms all the input files
+
+00:02:06.840 --> 00:02:09.440
+by making the content into
+
+00:02:09.440 --> 00:02:11.599
+HTML and systematically applying a
+
+00:02:11.599 --> 00:02:14.000
+template in order to generate the
+
+00:02:14.000 --> 00:02:17.120
+HTML files, which you can then deploy
+
+00:02:17.120 --> 00:02:19.840
+on your server of choice to make them
+
+00:02:19.840 --> 00:02:22.160
+available on the Internet.
+
+00:02:22.160 --> 00:02:26.160
+One of the features most--
+
+00:02:26.160 --> 00:02:27.500
+well, I would say all
+
+00:02:27.500 --> 00:02:30.239
+static website generators have
+
+00:02:30.239 --> 00:02:32.560
+is that of being able to
+
+00:02:32.560 --> 00:02:34.879
+collect the metadata information
+
+00:02:34.879 --> 00:02:38.400
+of the files being part of
+
+00:02:38.400 --> 00:02:39.440
+your project.
+
+00:02:39.440 --> 00:02:45.280
+The reason they do that is because
+
+00:02:45.280 --> 00:02:47.840
+you sometimes want to generate pages
+
+00:02:47.840 --> 00:02:49.280
+based on the content
+
+00:02:49.280 --> 00:02:53.200
+of your projects,
+
+00:02:53.200 --> 00:02:56.239
+such as, for instance, the list of
+
+00:02:56.239 --> 00:02:59.040
+posts you have recently published, or
+
+00:02:59.040 --> 00:03:00.400
+maybe the list of tags
+
+00:03:00.400 --> 00:03:03.840
+you have defined for your post,
+
+00:03:03.840 --> 00:03:07.280
+and so on and so forth.
+
+00:03:07.280 --> 00:03:09.760
+Jekyll gives the possibility of
+
+00:03:09.760 --> 00:03:12.400
+generating this kind of dynamic
+
+00:03:12.400 --> 00:03:14.400
+content by using Liquid,
+
+00:03:14.400 --> 00:03:18.800
+which is a templating language which
+
+00:03:18.800 --> 00:03:21.840
+looks like this.
+
+00:03:21.840 --> 00:03:24.879
+So basically, you have all the
+
+00:03:24.879 --> 00:03:26.879
+constructs you can
+
+00:03:26.879 --> 00:03:28.800
+expect in a programming language.
+
+00:03:28.800 --> 00:03:29.920
+This, for instance,
+
+00:03:29.920 --> 00:03:33.360
+is a for cycle which
+
+00:03:33.360 --> 00:03:37.440
+iterates over all the posts or the
+
+00:03:37.440 --> 00:03:39.599
+files in a specific directory of the
+
+00:03:39.599 --> 00:03:41.040
+Jekyll project.
+
+00:03:41.040 --> 00:03:45.040
+For each post, it takes the title
+
+00:03:45.040 --> 00:03:48.400
+and the URL and generates a link.
+
+00:03:48.400 --> 00:03:52.867
+So Jekyll is nice and sweet,
+
+00:03:52.867 --> 00:03:55.200
+but over the years
+
+00:03:55.200 --> 00:03:57.760
+I started using more and more
+
+00:03:57.760 --> 00:03:59.519
+systematically
+
+00:03:59.519 --> 00:04:02.000
+Org Mode to write all my files.
+
+00:04:02.000 --> 00:04:04.833
+I moved from Markdown to Org Mode
+
+00:04:04.833 --> 00:04:07.200
+I am a long time Emacs user.
+
+00:04:07.200 --> 00:04:09.167
+I've been using Emacs for 30 years now,
+
+00:04:09.167 --> 00:04:12.799
+so Org Mode is a more recent discovery,
+
+00:04:12.799 --> 00:04:17.033
+but it is a very nice discovery I made.
+
+00:04:17.033 --> 00:04:19.680
+The reason I like Org Mode
+
+00:04:19.680 --> 00:04:22.320
+is because, for instance, you can write
+
+00:04:22.320 --> 00:04:24.933
+formulas using MathJax
+
+00:04:24.933 --> 00:04:26.639
+and you can generate diagrams
+
+00:04:26.639 --> 00:04:30.320
+or plots with Gnuplot.
+
+00:04:30.320 --> 00:04:32.240
+Also important is the fact that you have
+
+00:04:32.240 --> 00:04:34.080
+the possibility of publishing
+
+00:04:34.080 --> 00:04:39.520
+your documents to multiple backends
+such as PDF,
+
+00:04:39.520 --> 00:04:43.600
+or maybe a Reveal presentation,
+
+00:04:43.600 --> 00:04:47.199
+or HTML. This is all made possible
+
+00:04:47.199 --> 00:04:50.479
+by Babel, which is
+
+00:04:50.479 --> 00:04:52.560
+exactly what we just saw in the
+
+00:04:52.560 --> 00:04:54.639
+previous talk:
+
+00:04:54.639 --> 00:04:57.440
+Namely, the possibility of executing a
+
+00:04:57.440 --> 00:04:59.520
+snippet of code
+
+00:04:59.520 --> 00:05:02.560
+embedded in in your pages.
+
+00:05:02.560 --> 00:05:06.400
+Our model can also be used
+
+00:05:06.400 --> 00:05:09.600
+within Jekyll. In fact,
+
+00:05:09.600 --> 00:05:13.667
+there is a a nice gem, a nice library,
+
+00:05:13.667 --> 00:05:17.233
+called jekyll-org which allows you
+
+00:05:17.233 --> 00:05:19.680
+to use Org Mode files directly
+
+00:05:19.680 --> 00:05:22.880
+into jekyll. But when you start using
+
+00:05:22.880 --> 00:05:26.560
+Org Mode... When I started using
+
+00:05:26.560 --> 00:05:30.560
+Org Mode, I realized I could move
+
+00:05:30.560 --> 00:05:34.240
+all my workflow, all my publishing
+
+00:05:34.240 --> 00:05:36.840
+workflow to Emacs.
+
+00:05:36.840 --> 00:05:41.100
+In fact, Org Mode is also a
+
+00:05:41.100 --> 00:05:42.880
+static website generator because
+
+00:05:42.880 --> 00:05:46.240
+it has got the possibility of publishing
+
+00:05:46.240 --> 00:05:50.880
+projects made of Org Mode files.
+
+00:05:50.880 --> 00:05:53.840
+One of the nice things about
+
+00:05:53.840 --> 00:05:56.479
+the publishing features of Org Mode
+
+00:05:56.479 --> 00:05:58.880
+is that it allows you to define in the
+
+00:05:58.880 --> 00:06:01.300
+org-publish-project-alist,
+
+00:06:01.300 --> 00:06:03.199
+all the the components
+
+00:06:03.199 --> 00:06:05.367
+which are part of your project.
+
+00:06:05.367 --> 00:06:07.520
+In a sense, it is
+
+00:06:07.520 --> 00:06:10.479
+also more flexible than Jekyll,
+
+00:06:10.479 --> 00:06:12.880
+because it also allows you, for instance,
+
+00:06:12.880 --> 00:06:15.120
+to publish a single file rather
+
+00:06:15.120 --> 00:06:17.440
+than having to recompile everything
+
+00:06:17.440 --> 00:06:20.080
+every time you want to publish your
+
+00:06:20.080 --> 00:06:22.333
+your project to your website.
+
+00:06:22.333 --> 00:06:25.333
+However, there are some short comments
+
+00:06:25.333 --> 00:06:29.520
+I would say, or some areas
+of improvement.
+
+00:06:30.400 --> 00:06:33.600
+The first is that support for
+templating
+
+00:06:33.600 --> 00:06:36.639
+is not so obvious as it is
+
+00:06:36.639 --> 00:06:39.280
+in Jekyll, even though there are some
+
+00:06:40.560 --> 00:06:44.560
+nice extensions such as org-thtml,
+
+00:06:44.560 --> 00:06:48.400
+for instance, which allows you to use
+templates.
+
+00:06:48.400 --> 00:06:51.840
+More important to me was the fact that
+
+00:06:51.840 --> 00:06:54.080
+apparently, there is little support for
+
+00:06:54.080 --> 00:06:56.133
+the creation of dynamic content
+
+00:06:56.133 --> 00:06:57.900
+So I was very curious
+
+00:06:57.900 --> 00:06:59.360
+and very keen to use
+
+00:06:59.360 --> 00:07:02.800
+Org Mode for publishing my blog
+
+00:07:02.800 --> 00:07:05.440
+and the courses at the university,
+
+00:07:05.440 --> 00:07:08.720
+but then I had to find a way
+
+00:07:08.720 --> 00:07:11.440
+to being able to publish these
+
+00:07:11.440 --> 00:07:13.599
+dynamic pages, finding some kind of
+
+00:07:13.599 --> 00:07:16.000
+replacement, so to speak,
+
+00:07:16.720 --> 00:07:17.900
+for the liquid engine.
+
+00:07:17.900 --> 00:07:24.160
+The solution was there at hand,
+actually, because
+
+00:07:24.160 --> 00:07:27.280
+basically, I realized I could use Babel
+
+00:07:27.280 --> 00:07:30.800
+for exactly this purpose. Rather than
+
+00:07:30.800 --> 00:07:32.720
+using Babel for generating
+
+00:07:32.720 --> 00:07:35.759
+plots or my other computations
+
+00:07:35.759 --> 00:07:37.919
+or whatever I was using them for,
+
+00:07:37.919 --> 00:07:41.039
+I realized I could use Babel to
+
+00:07:41.039 --> 00:07:45.120
+generate HTML which could be
+
+00:07:45.120 --> 00:07:49.967
+then published in the project
+
+00:07:49.967 --> 00:07:53.680
+All I needed to do then
+
+00:07:53.680 --> 00:07:56.100
+was defining some kind of functions,
+
+00:07:56.100 --> 00:07:58.319
+some kind of code in order to read
+
+00:07:58.319 --> 00:08:01.840
+the metadata of all
+
+00:08:01.840 --> 00:08:04.767
+the Org Mode files of my web project,
+
+00:08:04.767 --> 00:08:09.680
+so that I could then publish--
+
+00:08:09.680 --> 00:08:13.280
+generate the dynamic content.
+
+00:08:13.280 --> 00:08:18.080
+This is a snippet taken from
+
+00:08:18.080 --> 00:08:21.759
+one of my HTML projects,
+
+00:08:21.759 --> 00:08:24.800
+which basically shows the way in which
+
+00:08:24.800 --> 00:08:27.599
+I generate the list of posts on
+
+00:08:27.599 --> 00:08:32.560
+my page. It is exactly how the
+Liquid that we saw
+
+00:08:32.560 --> 00:08:35.680
+a couple of slides earlier that
+looks like
+
+00:08:35.680 --> 00:08:39.200
+in Org Mode.
+
+00:08:39.200 --> 00:08:42.320
+Basically, what I'm doing...
+I'm using...
+
+00:08:42.320 --> 00:08:46.720
+I wrote a Ruby script which
+
+00:08:46.720 --> 00:08:49.680
+reads all the metadata. So this
+
+00:08:49.680 --> 00:08:51.040
+highlighted code
+
+00:08:51.040 --> 00:08:53.100
+basically loads the script
+
+00:08:53.100 --> 00:08:55.300
+which is stored externally.
+
+00:08:55.300 --> 00:08:56.800
+Then it collects all the
+
+00:08:56.800 --> 00:08:58.320
+metadata from the
+
+00:08:58.320 --> 00:09:00.880
+Org Mode files in the
+
+00:09:00.880 --> 00:09:02.240
+current directory.
+
+00:09:02.240 --> 00:09:04.800
+And then the following... The code
+
+00:09:04.800 --> 00:09:06.480
+you can see here
+
+00:09:06.480 --> 00:09:09.839
+basically iterates over all the
+
+00:09:09.839 --> 00:09:12.959
+posts read at the previous step.
+
+00:09:12.959 --> 00:09:16.399
+It generates
+
+00:09:16.399 --> 00:09:19.519
+a list with the title
+
+00:09:19.519 --> 00:09:22.959
+and the URLS, basically
+
+00:09:22.959 --> 00:09:27.440
+replicating what Jekyll does.
+
+00:09:27.440 --> 00:09:30.240
+There are some other things
+
+00:09:30.240 --> 00:09:32.399
+I have to deal with in order to
+
+00:09:33.200 --> 00:09:36.480
+accommodate my workflow. But that was
+
+00:09:36.480 --> 00:09:39.200
+relatively easy in the sense that one of
+
+00:09:39.200 --> 00:09:43.279
+the problems, one of the issues I had to
+
+00:09:43.279 --> 00:09:45.360
+solve was that of having
+
+00:09:45.360 --> 00:09:48.480
+a common navigation on all my
+
+00:09:48.480 --> 00:09:51.040
+pages. That was easily solved
+
+00:09:51.040 --> 00:09:53.867
+using the #+INCLUDE feature.
+
+00:09:53.867 --> 00:09:54.959
+So I basically
+
+00:09:54.959 --> 00:09:56.000
+made available
+
+00:09:56.000 --> 00:09:57.839
+an #+INCLUDE with all the navigation
+
+00:09:57.839 --> 00:10:00.560
+which is embedded in all the pages of
+
+00:10:00.560 --> 00:10:01.839
+my websites
+
+00:10:01.839 --> 00:10:03.733
+through the #+INCLUDE.
+
+00:10:03.733 --> 00:10:06.160
+Another nice feature which
+
+00:10:06.160 --> 00:10:08.560
+Jekyll has is the possibility of
+
+00:10:08.560 --> 00:10:12.800
+previewing a website before deploying it.
+
+00:10:13.200 --> 00:10:16.079
+Emacs also has got a node which allows
+
+00:10:16.079 --> 00:10:21.200
+you to launch a web server. In fact,
+
+00:10:21.200 --> 00:10:24.320
+I wrote a quick hack
+
+00:10:24.320 --> 00:10:26.959
+which allows you to
+
+00:10:26.959 --> 00:10:31.519
+invoke a node on an Org Mode
+
+00:10:31.519 --> 00:10:34.720
+project, start a local preview,
+
+00:10:34.720 --> 00:10:37.920
+and then use rsync
+
+00:10:37.920 --> 00:10:44.839
+in order to deploy the the website.
+
+00:10:46.240 --> 00:10:48.720
+Five minutes left. More than
+
+00:10:48.720 --> 00:10:51.200
+enough. Okay.
+
+00:10:51.200 --> 00:10:52.967
+Thanks. Thank you, thank you very much.
+
+00:10:52.967 --> 00:10:56.480
+I'm nearly done. So then I can take
+some questions.
+
+00:10:56.480 --> 00:11:00.560
+Just to give you maybe
+
+00:11:00.560 --> 00:11:03.680
+a slightly more in-depth
+
+00:11:03.680 --> 00:11:06.480
+view of what the pages look like,
+
+00:11:06.480 --> 00:11:07.200
+so these are
+
+00:11:07.200 --> 00:11:11.120
+one of the pages, or the source files
+
+00:11:11.120 --> 00:11:14.720
+of one of the websites. It is
+
+00:11:14.720 --> 00:11:18.480
+in literate programming. Basically,
+
+00:11:18.480 --> 00:11:20.399
+you see there is some metadata here.
+
+00:11:20.399 --> 00:11:22.640
+I mean this is a regular Org Mode file.
+
+00:11:22.640 --> 00:11:26.640
+This part here
+
+00:11:26.640 --> 00:11:29.920
+basically defines some common options
+
+00:11:29.920 --> 00:11:31.519
+for publication.
+
+00:11:31.519 --> 00:11:35.920
+These two includes here
+
+00:11:35.920 --> 00:11:41.120
+put some extra HTML in the head part and
+
+00:11:41.120 --> 00:11:44.480
+the navigation. Here, as you can see,
+
+00:11:44.480 --> 00:11:48.079
+is the code generating the
+
+00:11:48.079 --> 00:11:50.160
+the list in chronological order. It is
+
+00:11:50.160 --> 00:11:52.240
+slightly more complex than the example I
+
+00:11:52.240 --> 00:11:53.839
+made in the slide
+
+00:11:53.839 --> 00:11:56.240
+because there is some more
+
+00:11:56.240 --> 00:11:59.760
+elaboration to do, including
+putting some
+
+00:11:59.760 --> 00:12:01.839
+Javascript to identify
+
+00:12:01.839 --> 00:12:05.120
+according to the tags.
+
+00:12:05.120 --> 00:12:08.160
+To go back to the presentation...
+
+00:12:11.200 --> 00:12:13.067
+I managed this migration
+
+00:12:13.067 --> 00:12:14.560
+a few months ago,
+
+00:12:14.560 --> 00:12:17.680
+and then all my workflow is within
+
+00:12:17.680 --> 00:12:20.399
+Org Mode and within Emacs.
+
+00:12:20.399 --> 00:12:23.079
+I'm very happy with it because it's
+
+00:12:23.079 --> 00:12:26.800
+simplified quite a bit
+
+00:12:26.800 --> 00:12:28.480
+my publication process.
+
+00:12:28.480 --> 00:12:31.839
+One of the advantages... Another
+
+00:12:31.839 --> 00:12:34.240
+advantage... So the first advantage is that
+
+00:12:34.240 --> 00:12:36.959
+everything is in Org Mode and Emacs.
+
+00:12:36.959 --> 00:12:38.160
+Second advantage
+
+00:12:38.160 --> 00:12:41.680
+is that everything is based on the
+
+00:12:41.680 --> 00:12:44.880
+standard machinery provided by Org Mode.
+
+00:12:44.880 --> 00:12:47.760
+So in a sense, it is
+
+00:12:47.760 --> 00:12:50.079
+more robust with respect to
+
+00:12:50.079 --> 00:12:53.040
+dependencies, possible errors, and so
+
+00:12:53.040 --> 00:12:54.320
+on and so forth.
+
+00:12:54.320 --> 00:12:56.639
+The fact that Org Mode
+
+00:12:56.639 --> 00:12:58.240
+allows you to publish
+
+00:12:58.240 --> 00:13:00.880
+a single file in a project is also
+
+00:13:00.880 --> 00:13:03.839
+very interesting because
+
+00:13:03.839 --> 00:13:07.839
+it allows to be more robust to
+
+00:13:07.839 --> 00:13:11.040
+problems you might introduce when
+
+00:13:11.040 --> 00:13:14.959
+you're changing--when I'm changing the
+setup.
+
+00:13:14.959 --> 00:13:16.880
+Another interesting thing which I
+
+00:13:16.880 --> 00:13:21.519
+realized that I could have is that
+
+00:13:21.519 --> 00:13:23.600
+in a sense, the specification of the
+
+00:13:23.600 --> 00:13:28.480
+website can be embedded in the website
+itself.
+
+00:13:28.480 --> 00:13:30.800
+In a sense this is some kind of
+
+00:13:30.800 --> 00:13:31.839
+self-documenting...
+
+00:13:31.839 --> 00:13:35.120
+It's a way of self-documenting
+
+00:13:35.120 --> 00:13:36.600
+what I'm actually doing.
+
+00:13:36.600 --> 00:13:44.133
+For instance, here on my website,
+
+00:13:44.133 --> 00:13:46.399
+you can see the
+
+00:13:46.399 --> 00:13:48.240
+specification of the
+
+00:13:48.240 --> 00:13:51.519
+project which is loaded
+
+00:13:51.519 --> 00:13:53.933
+from my initialization file,
+
+00:13:53.933 --> 00:13:56.320
+but then it is also published
+
+00:13:56.320 --> 00:13:59.440
+together with my home page. It lives
+
+00:13:59.440 --> 00:14:01.360
+with the repository where
+
+00:14:01.360 --> 00:14:05.360
+I keep all the sources of my website,
+
+00:14:05.360 --> 00:14:08.079
+which is kind of nice because it
+
+00:14:08.079 --> 00:14:09.839
+basically isolates
+
+00:14:09.839 --> 00:14:14.079
+everything in a single place.
+
+00:14:14.079 --> 00:14:16.880
+So there are some examples. I'm
+
+00:14:16.880 --> 00:14:19.433
+showing them more because of the
+
+00:14:19.433 --> 00:14:21.760
+source code which
+
+00:14:21.760 --> 00:14:25.519
+you can grab from the git repositories
+
+00:14:25.519 --> 00:14:26.933
+if you are interested.
+
+00:14:26.933 --> 00:14:28.399
+Of course I'm also available
+
+00:14:28.399 --> 00:14:31.600
+to provide some support and help
+
+00:14:31.600 --> 00:14:32.959
+if you are interested
+
+00:14:32.959 --> 00:14:34.480
+in this kind of stuff.
+
+00:14:34.480 --> 00:14:37.760
+The the next step for me will be that of
+
+00:14:37.760 --> 00:14:41.600
+trying, making this kind of
+machinery available
+
+00:14:41.600 --> 00:14:45.199
+for more general use at the moment.
+
+00:14:45.199 --> 00:14:47.120
+If you are interested in trying out my
+
+00:14:47.120 --> 00:14:48.800
+suggestion, grabbing the
+
+00:14:48.800 --> 00:14:51.933
+sources for one of the websites
+
+00:14:51.933 --> 00:14:54.700
+to seehow they look like,
+
+00:14:54.700 --> 00:14:56.720
+and maybe try and
+
+00:14:56.720 --> 00:15:00.160
+customize it for your purposes...
+
+00:15:00.160 --> 00:15:03.839
+This is basically the content of my talk.
+
+00:15:03.839 --> 00:15:06.959
+I'm open to questions and thank you
+
+00:15:06.959 --> 00:15:10.880
+for your attention.
+
+00:15:10.880 --> 00:15:12.880
+(Amin: Thank you very much, Adolfo, for your
+
+00:15:12.880 --> 00:15:14.480
+awesome presentation.
+
+00:15:14.480 --> 00:15:17.360
+I think we have time for maybe like
+
+00:15:17.360 --> 00:15:19.360
+one or two questions,
+
+00:15:19.360 --> 00:15:21.279
+and then the rest maybe you could
+
+00:15:21.279 --> 00:15:26.639
+take up after the stream.)
+
+00:15:26.639 --> 00:15:28.033
+Adolfo: What should we do?
+
+00:15:28.033 --> 00:15:30.000
+(Amin: Would you like me
+
+00:15:30.000 --> 00:15:31.839
+to read you the questions?)
+
+00:15:31.839 --> 00:15:35.199
+Adolfo: Yeah, probably better because
+
+00:15:35.199 --> 00:15:36.700
+I'm kind of lost there.
+
+00:15:36.700 --> 00:15:40.399
+(Amin: Okay, no problem.
+
+00:15:40.399 --> 00:15:42.480
+So someone asks, "Do you have any
+
+00:15:42.480 --> 00:15:45.440
+opinion on Firn?")
+
+00:15:45.440 --> 00:15:48.639
+Adolfo: Firn. I don't know Firn,
+
+00:15:48.639 --> 00:15:51.839
+so I'll give it a try
+
+00:15:51.839 --> 00:15:55.040
+and check it out.
+
+00:15:55.040 --> 00:15:57.839
+(Amin: Thanks. People are also asking,
+
+00:15:57.839 --> 00:15:59.680
+do you discuss this, for example, in a blog
+
+00:15:59.680 --> 00:16:01.279
+or anywhere else they could find more
+
+00:16:01.279 --> 00:16:02.800
+about it?)
+
+00:16:02.800 --> 00:16:05.600
+Adolfo: Oh yes. I'm going to publish the
+
+00:16:05.600 --> 00:16:08.560
+the talk and the content
+
+00:16:08.560 --> 00:16:11.120
+on my website, and then I'll link it from
+
+00:16:11.120 --> 00:16:13.067
+the EmacsConf conference
+
+00:16:13.067 --> 00:16:14.720
+so that it will be easier for
+
+00:16:14.720 --> 00:16:16.533
+people to to reach it
+
+00:16:16.533 --> 00:16:19.040
+I will shortly make it
+
+00:16:19.040 --> 00:16:22.880
+available right after the conference.
+
+00:16:22.880 --> 00:16:26.160
+(Amin: Wonderful. I think that's all
+for the questions.
+
+00:16:26.160 --> 00:16:27.667
+Thank you very much.)
+
+00:16:27.667 --> 00:16:29.600
+Adolfo: Thank you very much. Thank you.
+
+00:16:29.600 --> 00:16:34.800
+(Amin: Cheers.) Adolfo: Bye, cheers. (Amin: Bye.)