From b98df6fbe2a5c48013cfca81a95a5af41e202d07 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sun, 13 Dec 2020 00:06:32 -0500 Subject: Actually post subtitles, I think --- .../emacsconf-2020--00-opening-remarks-autogen.vtt | 604 +++ ...from-user-to-package-maintainer--leo-vivier.vtt | 2 +- ...aradigm--questions--sid-kasivajhula-autogen.vtt | 361 ++ ...alable-ui-paradigm--sid-kasivajhula-autogen.vtt | 1336 ++++++ ...r-life-in-plain-text--rainer-koenig-autogen.vtt | 454 ++ ...s-about-getting-things-done--aldric-autogen.vtt | 1195 +++++ ...y-the-end-of-the-debate--leo-vivier-autogen.vtt | 1447 ++++++ ...eli-raymond-puzio-cameron-ray-smith-autogen.vtt | 1081 +++++ ...--14-readme-driven-design--adam-ard-autogen.vtt | 1426 ++++++ ...erience-report--adolfo-villafiorita-autogen.vtt | 1183 +++++ ...nd-whats-on-the-horizon--leo-vivier-autogen.vtt | 1801 +++++++ ...ars-and-researchers--noorah-alhasan-autogen.vtt | 1795 +++++++ ...-technical-presentation--leo-vivier-autogen.vtt | 1804 +++++++ ...-more-with-org-webring--brett-gilio-autogen.vtt | 709 +++ ...f-2020--20-omg-macros--corwin-brust-autogen.vtt | 1606 +++++++ ...k-like-5-minute-hacks--eduardo-ochs-autogen.vtt | 3301 +++++++++++++ ...ng-up-special-blocks--musa-al-hassy-autogen.vtt | 2386 ++++++++++ ...-sitter--questions--tuan-anh-nguyen-autogen.vtt | 1087 +++++ ...-emacs-tree-sitter--tuan-anh-nguyen-autogen.vtt | 1522 ++++++ ...-counsel-jq--zen-monk-alain-m-lafon-autogen.vtt | 757 +++ ...how-it-changed-my-life--pierce-wang-autogen.vtt | 769 +++ ...ged-my-life--questions--pierce-wang-autogen.vtt | 769 +++ ...ip8--vasilij-wasamasa-schneidermann-autogen.vtt | 913 ++++ ...ngeon--erik-elmshauser-corwin-brust-autogen.vtt | 4993 ++++++++++++++++++++ ...of-vterm--gabriele-bozzola-sbozzolo-autogen.vtt | 634 +++ ...uestions--gabriele-bozzola-sbozzolo-autogen.vtt | 385 ++ ...anguage-and-emacs--grant-shangreaux-autogen.vtt | 859 ++++ ...-emacs--questions--grant-shangreaux-autogen.vtt | 412 ++ ...he-gnus-newsreader--eric-abrahamsen-autogen.vtt | 2215 +++++++++ ...-a-computer-algebra-system-in-emacs--fermin.vtt | 1708 +++++++ ...applications-with-eaf--matthew-zeng-autogen.vtt | 1714 +++++++ ...c-zmusic--questions--zachary-kanfer-autogen.vtt | 508 ++ ...cs-development-update--john-wiegley-autogen.vtt | 460 ++ ...u-elpa--questions--richard-stallman-autogen.vtt | 2833 +++++++++++ ...onf-2020--40-closing-remarks-part-1-autogen.vtt | 205 + ...onf-2020--40-closing-remarks-part-2-autogen.vtt | 1000 ++++ .../emacsconf-2020--41-opening-remarks-autogen.vtt | 1036 ++++ .../emacsconf-2020--42-closing-remarks-autogen.vtt | 2905 ++++++++++++ 38 files changed, 50174 insertions(+), 1 deletion(-) create mode 100644 2020/subtitles/emacsconf-2020--00-opening-remarks-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--09-orgmode-your-life-in-plain-text--rainer-koenig-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--11-the-org-gtd-package-opinions-about-getting-things-done--aldric-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--12-one-big-ass-org-file-or-multiple-tiny-ones-finally-the-end-of-the-debate--leo-vivier-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--13-experience-report-steps-to-emacs-hyper-notebooks--joseph-corneli-raymond-puzio-cameron-ray-smith-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--14-readme-driven-design--adam-ard-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--15-moving-from-jekyll-to-orgmode-an-experience-report--adolfo-villafiorita-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--16-org-roam-presentation-demonstration-and-whats-on-the-horizon--leo-vivier-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--17-org-mode-and-org-roam-for-scholars-and-researchers--noorah-alhasan-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--18-org-roam-technical-presentation--leo-vivier-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--19-sharing-blogs-and-more-with-org-webring--brett-gilio-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--questions--tuan-anh-nguyen-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--tuan-anh-nguyen-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--25-traverse-complex-json-structures-with-live-feedback-counsel-jq--zen-monk-alain-m-lafon-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--26-emacs-as-a-highschooler-how-it-changed-my-life--pierce-wang-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--26-emacs-as-a-highschooler-how-it-changed-my-life--questions--pierce-wang-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--28-welcome-to-the-dungeon--erik-elmshauser-corwin-brust-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--questions--gabriele-bozzola-sbozzolo-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--31-lakota-language-and-emacs--grant-shangreaux-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--31-lakota-language-and-emacs--questions--grant-shangreaux-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--32-object-oriented-code-in-the-gnus-newsreader--eric-abrahamsen-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--33-maxima-a-computer-algebra-system-in-emacs--fermin.vtt create mode 100644 2020/subtitles/emacsconf-2020--34-extend-emacs-to-modern-gui-applications-with-eaf--matthew-zeng-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--questions--zachary-kanfer-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--38-emacs-development-update--john-wiegley-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--39-nongnu-elpa--questions--richard-stallman-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--40-closing-remarks-part-1-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--40-closing-remarks-part-2-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--41-opening-remarks-autogen.vtt create mode 100644 2020/subtitles/emacsconf-2020--42-closing-remarks-autogen.vtt (limited to '2020/subtitles') diff --git a/2020/subtitles/emacsconf-2020--00-opening-remarks-autogen.vtt b/2020/subtitles/emacsconf-2020--00-opening-remarks-autogen.vtt new file mode 100644 index 00000000..3dfb9f5b --- /dev/null +++ b/2020/subtitles/emacsconf-2020--00-opening-remarks-autogen.vtt @@ -0,0 +1,604 @@ +WEBVTT + +00:00:03.919 --> 00:00:05.279 +all right + +00:00:05.279 --> 00:00:08.400 +hello and uh welcome to EmacsConf + +00:00:08.400 --> 00:00:11.920 +2020. um I'm Amin Bandali + +00:00:11.920 --> 00:00:14.920 +and I have with me my fellow + +00:00:14.920 --> 00:00:16.560 +co-organizers uh + +00:00:16.560 --> 00:00:20.720 +Leo Vivier and Sacha Chua + +00:00:20.720 --> 00:00:24.160 +and we're very excited to be doing this + +00:00:24.160 --> 00:00:25.439 +conference again this year + +00:00:25.439 --> 00:00:28.240 +it's already been a year since the last + +00:00:28.240 --> 00:00:28.560 +one + +00:00:28.560 --> 00:00:32.079 +gosh the time flies by but + +00:00:32.079 --> 00:00:35.680 +um yeah so I guess + +00:00:35.680 --> 00:00:38.960 +without further ado let's get into + +00:00:38.960 --> 00:00:41.520 +the conference so hello again and + +00:00:41.520 --> 00:00:43.520 +welcome to EmacsConf 2020. + +00:00:43.520 --> 00:00:47.039 +we're very happy to have you here um + +00:00:47.039 --> 00:00:49.360 +so we're gonna start right off the bat + +00:00:49.360 --> 00:00:50.239 +with + +00:00:50.239 --> 00:00:53.600 +um a huge series of thank yous to um + +00:00:53.600 --> 00:00:56.000 +free software foundation especially the + +00:00:56.000 --> 00:00:57.120 +tech team + +00:00:57.120 --> 00:00:59.760 +for um you know their continued support + +00:00:59.760 --> 00:01:01.600 +and for letting us use + +00:01:01.600 --> 00:01:04.559 +um their big blue button instance uh for + +00:01:04.559 --> 00:01:05.360 +this very + +00:01:05.360 --> 00:01:07.840 +um presentation that you're watching um + +00:01:07.840 --> 00:01:09.680 +to for us to be able to deliver it using + +00:01:09.680 --> 00:01:10.720 +only free software + +00:01:10.720 --> 00:01:14.640 +um that's very generous of them + +00:01:14.640 --> 00:01:18.240 +thank you so much next up I want to + +00:01:18.240 --> 00:01:19.920 +thank all my co-organizers and + +00:01:19.920 --> 00:01:21.600 +volunteers um + +00:01:21.600 --> 00:01:24.640 +so this list is in alphabetical or order + +00:01:24.640 --> 00:01:26.880 +but um yeah so there's myself there's + +00:01:26.880 --> 00:01:28.479 +bobbin 192. + +00:01:28.479 --> 00:01:31.360 +there's david bremner um david o'toole + +00:01:31.360 --> 00:01:32.159 +um + +00:01:32.159 --> 00:01:35.360 +mpls corbin or corbin bruce public + +00:01:35.360 --> 00:01:38.560 +voigt which is carl boyd um + +00:01:38.560 --> 00:01:41.759 +sasha chu of course and zeph which is + +00:01:41.759 --> 00:01:44.799 +uh who is leo vva um thank you all so + +00:01:44.799 --> 00:01:45.520 +much + +00:01:45.520 --> 00:01:48.399 +so now I'll pass it on to sasha chua for + +00:01:48.399 --> 00:01:48.880 +a + +00:01:48.880 --> 00:01:52.000 +quick um overview of the schedule + +00:01:52.000 --> 00:01:54.640 +we have a lot of fun fun talks scheduled + +00:01:54.640 --> 00:01:56.640 +for today and tomorrow + +00:01:56.640 --> 00:01:59.280 +you can find it at the Emacs con + +00:01:59.280 --> 00:02:01.520 +schedule which I will open up in the tab + +00:02:01.520 --> 00:02:03.600 +and here we go so I'll give you a quick + +00:02:03.600 --> 00:02:04.880 +overview of the schedule + +00:02:04.880 --> 00:02:06.960 +you can drop in of course all the times + +00:02:06.960 --> 00:02:09.039 +are approximate despite the misleading + +00:02:09.039 --> 00:02:11.280 +these specific time stamps so please + +00:02:11.280 --> 00:02:13.760 +check back in on the Emacs comp channel + +00:02:13.760 --> 00:02:14.800 +or + +00:02:14.800 --> 00:02:16.160 +or keep checking the schedule throughout + +00:02:16.160 --> 00:02:18.400 +the day as things things get updated + +00:02:18.400 --> 00:02:20.400 +we'll start off with some user stories + +00:02:20.400 --> 00:02:22.000 +and uh and then we'll dive + +00:02:22.000 --> 00:02:24.400 +right into how Emacs can be used for + +00:02:24.400 --> 00:02:26.080 +lots of different things + +00:02:26.080 --> 00:02:28.000 +uh emax configuration of course is a + +00:02:28.000 --> 00:02:29.840 +huge part of using Emacs like a tinker + +00:02:29.840 --> 00:02:31.120 +with it and so we've got a couple of + +00:02:31.120 --> 00:02:31.760 +talks + +00:02:31.760 --> 00:02:35.040 +about that in the afternoon it's a lot + +00:02:35.040 --> 00:02:36.160 +of org talks + +00:02:36.160 --> 00:02:39.280 +so if if you're into org + +00:02:39.280 --> 00:02:40.879 +the whole afternoon you've got these + +00:02:40.879 --> 00:02:43.040 +things to play with next day + +00:02:43.040 --> 00:02:44.800 +so sunday we have a lot of development + +00:02:44.800 --> 00:02:46.239 +oriented talks we have + +00:02:46.239 --> 00:02:48.400 +a development update from john weekly + +00:02:48.400 --> 00:02:50.480 +and a number of talks about Emacs list + +00:02:50.480 --> 00:02:52.640 +or packages that that help you with + +00:02:52.640 --> 00:02:54.160 +working with code + +00:02:54.160 --> 00:02:56.239 +you also have some talks that need to be + +00:02:56.239 --> 00:02:57.920 +moved to the second day for + +00:02:57.920 --> 00:03:00.000 +uh for scheduling reasons but overall + +00:03:00.000 --> 00:03:01.680 +the second day is mostly about + +00:03:01.680 --> 00:03:03.040 +development + +00:03:03.040 --> 00:03:05.599 +no matter what uh what uh you're + +00:03:05.599 --> 00:03:06.879 +interested in I hope you'll find + +00:03:06.879 --> 00:03:07.360 +something + +00:03:07.360 --> 00:03:11.760 +in the schedule for you + +00:03:11.760 --> 00:03:13.760 +and then how do you actually participate + +00:03:13.760 --> 00:03:15.200 +how do you actually watch and + +00:03:15.200 --> 00:03:16.720 +ask questions and all of that let's turn + +00:03:16.720 --> 00:03:18.319 +it over to leo + +00:03:18.319 --> 00:03:19.920 +sure so hi there everyone it's a + +00:03:19.920 --> 00:03:21.280 +pleasure to meet you all I'm really + +00:03:21.280 --> 00:03:23.040 +happy to be part of the team this year + +00:03:23.040 --> 00:03:25.280 +so uh this year we've decided to change + +00:03:25.280 --> 00:03:26.159 +things a little + +00:03:26.159 --> 00:03:28.799 +uh compared to what we did last year so + +00:03:28.799 --> 00:03:29.440 +um + +00:03:29.440 --> 00:03:31.519 +everything is on the link that will + +00:03:31.519 --> 00:03:32.480 +pre-paste + +00:03:32.480 --> 00:03:34.400 +in the chat right now but to participate + +00:03:34.400 --> 00:03:36.560 +I suppose if you're hearing us right now + +00:03:36.560 --> 00:03:38.480 +you found the link to follow us which is + +00:03:38.480 --> 00:03:43.120 +very good so it's live.emacsconf.org + +00:03:43.120 --> 00:03:46.080 +for the questions uh we use a pad where + +00:03:46.080 --> 00:03:47.200 +you can both + +00:03:47.200 --> 00:03:48.959 +add your questions and if you feel like + +00:03:48.959 --> 00:03:50.480 +adding notes as well you know you are + +00:03:50.480 --> 00:03:51.920 +completely free to do so + +00:03:51.920 --> 00:03:54.480 +I believe you already have 42 people + +00:03:54.480 --> 00:03:56.319 +which are on there so + +00:03:56.319 --> 00:03:58.239 +if someone one of the other organizers + +00:03:58.239 --> 00:03:59.680 +could paste the link there that would be + +00:03:59.680 --> 00:04:00.799 +splendid + +00:04:00.799 --> 00:04:02.959 +uh for chatting with us or with the + +00:04:02.959 --> 00:04:04.640 +other people attending the conference + +00:04:04.640 --> 00:04:07.920 +we are using isc and there are three + +00:04:07.920 --> 00:04:09.599 +channels that you need to pay attention + +00:04:09.599 --> 00:04:10.959 +to the first one + +00:04:10.959 --> 00:04:13.120 +is #emacsconf where the general + +00:04:13.120 --> 00:04:14.239 +discussion will be + +00:04:14.239 --> 00:04:16.560 +happening so if you have any reactions + +00:04:16.560 --> 00:04:18.000 +to what you're hearing if you are + +00:04:18.000 --> 00:04:19.199 +excited about + +00:04:19.199 --> 00:04:20.400 +the new things you've discovered you + +00:04:20.400 --> 00:04:22.400 +know that's the channel to be using + +00:04:22.400 --> 00:04:25.440 +we also have #emacsconf-accessible + +00:04:25.440 --> 00:04:27.520 +which is community-run and it's for + +00:04:27.520 --> 00:04:28.960 +people who + +00:04:28.960 --> 00:04:30.320 +you know if you want to volunteer and + +00:04:30.320 --> 00:04:32.400 +describe to uh + +00:04:32.400 --> 00:04:33.680 +people what is going on during the + +00:04:33.680 --> 00:04:34.960 +conference either because they can't + +00:04:34.960 --> 00:04:36.479 +hear because they can't see you know + +00:04:36.479 --> 00:04:38.240 +feel free to do so that would be a nice + +00:04:38.240 --> 00:04:40.720 +help to us and for the speakers more + +00:04:40.720 --> 00:04:42.960 +specifically if you have + +00:04:42.960 --> 00:04:44.800 +any problem whatsoever or if you need to + +00:04:44.800 --> 00:04:46.320 +check something with us + +00:04:46.320 --> 00:04:49.680 +we will be in iEmacsConff.org and + +00:04:49.680 --> 00:04:51.759 +feel free to message us there and we'll + +00:04:51.759 --> 00:04:54.000 +try to take care of your problem as soon + +00:04:54.000 --> 00:04:55.360 +as possible + +00:04:55.360 --> 00:04:58.160 +we also have another thing this year so + +00:04:58.160 --> 00:04:59.120 +as we will be + +00:04:59.120 --> 00:05:02.160 +having talks one after the other if you + +00:05:02.160 --> 00:05:03.520 +happen to be + +00:05:03.520 --> 00:05:05.120 +if you want to continue the discussion + +00:05:05.120 --> 00:05:07.840 +basically we invite you to use + +00:05:07.840 --> 00:05:09.360 +jitsi to be able to continue the + +00:05:09.360 --> 00:05:11.280 +discussion either with the speaker if + +00:05:11.280 --> 00:05:12.720 +the speaker is willing to do so + +00:05:12.720 --> 00:05:14.400 +or just with the community of users and + +00:05:14.400 --> 00:05:15.759 +for that will leave you + +00:05:15.759 --> 00:05:18.880 +organize yourself on isc okay I believe + +00:05:18.880 --> 00:05:19.520 +that's me + +00:05:19.520 --> 00:05:23.360 +uh should I hand you back the + +00:05:23.360 --> 00:05:25.759 +uh speech I can't find a way to say this + +00:05:25.759 --> 00:05:26.960 +in english so + +00:05:26.960 --> 00:05:30.000 +just say yeah I mean go go take it away + +00:05:30.000 --> 00:05:33.120 +sure thank you okay sure + +00:05:33.120 --> 00:05:36.240 +thank you um so first off let me address + +00:05:36.240 --> 00:05:37.039 +this um + +00:05:37.039 --> 00:05:39.600 +the webcam placement on this laptop is + +00:05:39.600 --> 00:05:40.400 +very weird + +00:05:40.400 --> 00:05:43.039 +it's right at the bottom and if you see + +00:05:43.039 --> 00:05:44.800 +me looking up like this I'm actually + +00:05:44.800 --> 00:05:45.600 +looking at the + +00:05:45.600 --> 00:05:47.759 +um my second monitor which has the + +00:05:47.759 --> 00:05:48.720 +stream + +00:05:48.720 --> 00:05:52.800 +um so yeah sorry about that um + +00:05:52.800 --> 00:05:55.600 +but yeah so we have a mailing list um + +00:05:55.600 --> 00:05:56.720 +which of course + +00:05:56.720 --> 00:05:58.400 +isn't going to be super active at this + +00:05:58.400 --> 00:06:00.639 +very moment because everyone's watching + +00:06:00.639 --> 00:06:03.280 +but before and after the conference um + +00:06:03.280 --> 00:06:03.680 +you know + +00:06:03.680 --> 00:06:05.600 +please feel free to subscribe to uh + +00:06:05.600 --> 00:06:07.520 +emacsconf-discuss + +00:06:07.520 --> 00:06:10.240 +um for various updates and posts about + +00:06:10.240 --> 00:06:11.199 +the conference + +00:06:11.199 --> 00:06:14.240 +um follow-ups um like announcements for + +00:06:14.240 --> 00:06:15.280 +example when we + +00:06:15.280 --> 00:06:16.800 +put out the videos after the conference + +00:06:16.800 --> 00:06:18.160 +we will make an announcement on that + +00:06:18.160 --> 00:06:20.240 +list + +00:06:20.240 --> 00:06:24.560 +and next up we have conduct guidelines + +00:06:24.560 --> 00:06:28.240 +which are a series of + +00:06:28.240 --> 00:06:30.240 +basically guidelines that we would very + +00:06:30.240 --> 00:06:32.479 +much appreciate everyone + +00:06:32.479 --> 00:06:34.720 +participating in the conference abide by + +00:06:34.720 --> 00:06:36.240 +and um + +00:06:36.240 --> 00:06:38.240 +to to help make you know the event a + +00:06:38.240 --> 00:06:40.000 +great experience for everyone + +00:06:40.000 --> 00:06:43.120 +um yeah I think that's about it + +00:06:43.120 --> 00:06:48.000 +do you guys have anything else to add + +00:06:48.000 --> 00:06:51.440 +gonna get so good alrighty um + +00:06:51.440 --> 00:06:54.479 +so if you're just joining us once again + +00:06:54.479 --> 00:06:57.840 +hello and welcome to EmacsConf 2020. + +00:06:57.840 --> 00:07:00.960 +um I guess we'll go ahead and uh start + +00:07:00.960 --> 00:07:01.599 +with + +00:07:01.599 --> 00:07:05.840 +queueing up the talks diff --git a/2020/subtitles/emacsconf-2020--02-an-emacs-developer-story-from-user-to-package-maintainer--leo-vivier.vtt b/2020/subtitles/emacsconf-2020--02-an-emacs-developer-story-from-user-to-package-maintainer--leo-vivier.vtt index a591af7d..2f1b1ad1 100644 --- a/2020/subtitles/emacsconf-2020--02-an-emacs-developer-story-from-user-to-package-maintainer--leo-vivier.vtt +++ b/2020/subtitles/emacsconf-2020--02-an-emacs-developer-story-from-user-to-package-maintainer--leo-vivier.vtt @@ -4,7 +4,7 @@ WEBVTT (Amin: Alrighty, Leo Vivier, take it away.) 00:00:03.760 --> 00:00:05.839 -Okay, well, thank you, Amin. So you've +Okay, well, thank you. I'm in. So you've 00:00:05.839 --> 00:00:06.879 just had a diff --git a/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.vtt b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.vtt new file mode 100644 index 00000000..9cbec458 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.vtt @@ -0,0 +1,361 @@ +WEBVTT + +00:00:00.080 --> 00:00:01.680 +for the list of questions in whatever + +00:00:01.680 --> 00:00:03.520 +order you like + +00:00:03.520 --> 00:00:06.160 +okay so I see what package is used um + +00:00:06.160 --> 00:00:08.000 +probably cemex mode + +00:00:08.000 --> 00:00:10.400 +um right so the main package that was + +00:00:10.400 --> 00:00:11.360 +being demoed + +00:00:11.360 --> 00:00:14.480 +um that is not yet on melpa in fact I + +00:00:14.480 --> 00:00:16.720 +haven't even decided on a name for it + +00:00:16.720 --> 00:00:19.359 +um I've alternately alternately called + +00:00:19.359 --> 00:00:22.080 +it epistemic mode I've called it + +00:00:22.080 --> 00:00:26.000 +um england I called it uh + +00:00:26.000 --> 00:00:28.560 +all kinds of things but at the moment + +00:00:28.560 --> 00:00:30.240 +you can find it on my github there's a + +00:00:30.240 --> 00:00:31.439 +link + +00:00:31.439 --> 00:00:32.960 +in the presentation itself if you go to + +00:00:32.960 --> 00:00:35.600 +github slash account about + +00:00:35.600 --> 00:00:38.879 +um the package there it's currently + +00:00:38.879 --> 00:00:39.840 +named indra + +00:00:39.840 --> 00:00:42.879 +I'm not sure um + +00:00:42.879 --> 00:00:46.800 +packages actually yes the second one is + +00:00:46.800 --> 00:00:49.920 +red that was the name that I selected um + +00:00:49.920 --> 00:00:53.280 +last night um and that's because it + +00:00:53.280 --> 00:00:53.920 +might that + +00:00:53.920 --> 00:00:55.760 +there's a concept in tibetan buddhism + +00:00:55.760 --> 00:00:57.520 +that seems like it might have something + +00:00:57.520 --> 00:00:58.480 +to do with + +00:00:58.480 --> 00:00:59.840 +the kinds of concepts we're talking + +00:00:59.840 --> 00:01:01.600 +about with this package so I just + +00:01:01.600 --> 00:01:04.000 +thought it would be a good name for it + +00:01:04.000 --> 00:01:05.760 +so you can look up that concept + +00:01:05.760 --> 00:01:09.920 +and get a sense of it on wikipedia + +00:01:09.920 --> 00:01:13.119 +next question is how to deal with dwarak + +00:01:13.119 --> 00:01:15.759 +dwarjak or however that's pronounced + +00:01:15.759 --> 00:01:16.960 +this is always bug me + +00:01:16.960 --> 00:01:20.400 +is there an x-mod map mode so the thing + +00:01:20.400 --> 00:01:22.400 +with this is it's kind of surprising but + +00:01:22.400 --> 00:01:23.360 +although vim + +00:01:23.360 --> 00:01:26.000 +was originally developed um you know + +00:01:26.000 --> 00:01:27.200 +with the idea of + +00:01:27.200 --> 00:01:29.520 +the key bindings being on the home rule + +00:01:29.520 --> 00:01:32.000 +it turns out that that is actually not a + +00:01:32.000 --> 00:01:33.119 +major aspect + +00:01:33.119 --> 00:01:36.400 +of the vim editing experience so + +00:01:36.400 --> 00:01:38.560 +people who use the dvorak layout + +00:01:38.560 --> 00:01:40.720 +actually end up using the same keys as + +00:01:40.720 --> 00:01:42.640 +they do on the normal qwerty layout so + +00:01:42.640 --> 00:01:44.720 +they don't remap anything + +00:01:44.720 --> 00:01:48.159 +because the uh the the sort of + +00:01:48.159 --> 00:01:51.040 +the power that vim or the the + +00:01:51.040 --> 00:01:52.240 +flexibility the + +00:01:52.240 --> 00:01:55.600 +spiral that bim enables on qwerty layout + +00:01:55.600 --> 00:01:56.880 +keyboards is exactly + +00:01:56.880 --> 00:01:58.719 +preserved even on a door jack keyboard + +00:01:58.719 --> 00:01:59.920 +even though you your + +00:01:59.920 --> 00:02:01.920 +fingers are not in the same positions + +00:02:01.920 --> 00:02:04.399 +it's not a big deal actually + +00:02:04.399 --> 00:02:09.119 +um and then I mostly use default model + +00:02:09.119 --> 00:02:10.879 +provided by vanilla Emacs and work and + +00:02:10.879 --> 00:02:12.319 +org mode for text editing can you give + +00:02:12.319 --> 00:02:13.840 +me some examples + +00:02:13.840 --> 00:02:15.920 +of how the user can use the concept of + +00:02:15.920 --> 00:02:17.280 +mode mode + +00:02:17.280 --> 00:02:20.840 +to do some interesting + +00:02:20.840 --> 00:02:24.640 +um so probably the main thing would be + +00:02:24.640 --> 00:02:25.120 +the + +00:02:25.120 --> 00:02:27.920 +the keystrokes would be less uh + +00:02:27.920 --> 00:02:28.959 +contrived + +00:02:28.959 --> 00:02:32.080 +so they the the fewer modes you have + +00:02:32.080 --> 00:02:36.560 +the more modifiers you need + +00:02:36.560 --> 00:02:39.840 +in order to um do whatever it is that + +00:02:39.840 --> 00:02:41.280 +you're trying to do because you've got + +00:02:41.280 --> 00:02:44.800 +essentially with a max model you've got + +00:02:44.800 --> 00:02:48.080 +a completely flat + +00:02:48.080 --> 00:02:50.959 +keyboard structure and so all of the + +00:02:50.959 --> 00:02:52.160 +different things that you might + +00:02:52.160 --> 00:02:55.680 +want to express are all mapped to a flat + +00:02:55.680 --> 00:02:58.720 +keyboard uh set of keys + +00:02:58.720 --> 00:03:02.840 +so with um with this kind of + +00:03:02.840 --> 00:03:06.400 +modal structure the more modes you have + +00:03:06.400 --> 00:03:09.200 +the more the individual keystrokes + +00:03:09.200 --> 00:03:10.400 +become + +00:03:10.400 --> 00:03:13.200 +shorter and shorter so that could be one + +00:03:13.200 --> 00:03:14.959 +benefit that would be provided + +00:03:14.959 --> 00:03:17.519 +with many modes your keystrokes would + +00:03:17.519 --> 00:03:18.000 +generally + +00:03:18.000 --> 00:03:20.080 +be a single keystroke long for even + +00:03:20.080 --> 00:03:22.080 +relatively complex tasks + +00:03:22.080 --> 00:03:24.159 +because you're setting the context + +00:03:24.159 --> 00:03:25.440 +beforehand + +00:03:25.440 --> 00:03:27.200 +so you already say oh I'm going to be + +00:03:27.200 --> 00:03:30.840 +talking about this org buffer + +00:03:30.840 --> 00:03:33.440 +agenda and then + +00:03:33.440 --> 00:03:36.319 +um the all the keystrokes that you do at + +00:03:36.319 --> 00:03:39.599 +that point would be in relation to that + +00:03:39.599 --> 00:03:42.159 +um okay I think we have time for like + +00:03:42.159 --> 00:03:44.080 +one more short question + +00:03:44.080 --> 00:03:46.879 +one more short question okay let's see + +00:03:46.879 --> 00:03:48.879 +how do new modes come into existence you + +00:03:48.879 --> 00:03:50.400 +can make them yourself + +00:03:50.400 --> 00:03:53.040 +um and you can specify them in Emacs + +00:03:53.040 --> 00:03:53.760 +lisp + +00:03:53.760 --> 00:03:56.159 +if you like but there's also simple you + +00:03:56.159 --> 00:03:59.040 +can also do it visually as we did + +00:03:59.040 --> 00:04:02.720 +um but the yeah defining them + +00:04:02.720 --> 00:04:04.799 +is essentially built on top of hydra but + +00:04:04.799 --> 00:04:07.519 +it could also be built on top of evil or + +00:04:07.519 --> 00:04:09.120 +any other modal interface provider + +00:04:09.120 --> 00:04:12.840 +there's an abstraction layer + +00:04:12.840 --> 00:04:15.920 +okay thank you so much for your talk and + +00:04:15.920 --> 00:04:17.919 +for the live q a + +00:04:17.919 --> 00:04:21.440 +sure thank you yes feel free to um take + +00:04:21.440 --> 00:04:22.880 +up the rest of the questions either via + +00:04:22.880 --> 00:04:23.759 +irc or + +00:04:23.759 --> 00:04:25.680 +on the pad on on your own time off the + +00:04:25.680 --> 00:04:26.960 +stream + +00:04:26.960 --> 00:04:28.639 +perfect yeah I'll go ahead and put in + +00:04:28.639 --> 00:04:30.000 +some answers there + +00:04:30.000 --> 00:04:32.240 +awesome thank you all right thank you + +00:04:32.240 --> 00:04:33.120 +have a good one + +00:04:33.120 --> 00:04:36.880 +thanks you too diff --git a/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.vtt b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.vtt new file mode 100644 index 00000000..e4508034 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.vtt @@ -0,0 +1,1336 @@ +WEBVTT + +00:00:02.960 --> 00:00:04.960 +far away in the heavenly abode of the + +00:00:04.960 --> 00:00:06.560 +great god indra + +00:00:06.560 --> 00:00:08.320 +there is a wonderful net which has been + +00:00:08.320 --> 00:00:10.160 +hung by some cunning artificer + +00:00:10.160 --> 00:00:12.080 +in such a manner that it stretches out + +00:00:12.080 --> 00:00:14.320 +infinitely in all directions + +00:00:14.320 --> 00:00:15.920 +in accordance with the extravagant + +00:00:15.920 --> 00:00:18.240 +tastes of deities the artificer has hung + +00:00:18.240 --> 00:00:20.960 +a single glittering jewel in each eye of + +00:00:20.960 --> 00:00:22.080 +the net + +00:00:22.080 --> 00:00:24.000 +and since the net itself is infinite the + +00:00:24.000 --> 00:00:26.480 +jewels are infinite in number + +00:00:26.480 --> 00:00:28.400 +there hang the jewels glittering like + +00:00:28.400 --> 00:00:30.480 +stars in the first magnitude + +00:00:30.480 --> 00:00:33.440 +a wonderful sight to behold were we to + +00:00:33.440 --> 00:00:34.800 +select one of these jewels for + +00:00:34.800 --> 00:00:35.680 +inspection + +00:00:35.680 --> 00:00:37.760 +we would discover that in its polished + +00:00:37.760 --> 00:00:39.520 +surface there are reflected + +00:00:39.520 --> 00:00:41.920 +all the other jewels in the net infinite + +00:00:41.920 --> 00:00:43.360 +in number + +00:00:43.360 --> 00:00:45.600 +if we look still more closely we would + +00:00:45.600 --> 00:00:47.840 +see that each of the jewels reflected in + +00:00:47.840 --> 00:00:48.960 +this one jewel + +00:00:48.960 --> 00:00:52.239 +reflects all the others this is the + +00:00:52.239 --> 00:00:54.000 +metaphor of indra's net + +00:00:54.000 --> 00:00:56.840 +which is told in some schools of + +00:00:56.840 --> 00:00:59.359 +philosophy let's keep this metaphor in + +00:00:59.359 --> 00:01:00.160 +mind + +00:01:00.160 --> 00:01:01.920 +because it'll help us understand the + +00:01:01.920 --> 00:01:03.760 +Emacs extension that we're about to + +00:01:03.760 --> 00:01:06.960 +discuss + +00:01:06.960 --> 00:01:10.080 +so in editing text there's two + +00:01:10.080 --> 00:01:13.200 +main paradigms one + +00:01:13.200 --> 00:01:16.880 +is um editing at the ground level + +00:01:16.880 --> 00:01:19.439 +where the characters that we type + +00:01:19.439 --> 00:01:22.159 +actually appear on the screen + +00:01:22.159 --> 00:01:25.960 +the changes we make actually occur + +00:01:25.960 --> 00:01:28.479 +[Music] + +00:01:28.479 --> 00:01:30.720 +the other editing paradigm is where we + +00:01:30.720 --> 00:01:33.439 +escape to a higher level + +00:01:33.439 --> 00:01:36.000 +and now the characters that we type are + +00:01:36.000 --> 00:01:36.479 +not + +00:01:36.479 --> 00:01:39.040 +they don't actually appear on the screen + +00:01:39.040 --> 00:01:41.600 +because we're not at the ground level + +00:01:41.600 --> 00:01:44.799 +with the text we are at a higher level + +00:01:44.799 --> 00:01:48.479 +looking down at the text + +00:01:48.479 --> 00:01:51.920 +and regarding the text referring to + +00:01:51.920 --> 00:01:54.640 +this world of text in terms of a + +00:01:54.640 --> 00:01:56.159 +language + +00:01:56.159 --> 00:01:57.920 +for instance we could describe this + +00:01:57.920 --> 00:02:00.640 +world as having words and paragraphs and + +00:02:00.640 --> 00:02:02.079 +sentences and + +00:02:02.079 --> 00:02:04.640 +lines and so on and we could reason + +00:02:04.640 --> 00:02:05.360 +about this + +00:02:05.360 --> 00:02:08.800 +text in terms of these + +00:02:08.800 --> 00:02:11.440 +textual entities and this textual + +00:02:11.440 --> 00:02:13.120 +language + +00:02:13.120 --> 00:02:15.920 +this is the second paradigm of text + +00:02:15.920 --> 00:02:18.640 +editing + +00:02:18.640 --> 00:02:22.800 +and when we're in the second paradigm + +00:02:22.800 --> 00:02:24.800 +there is a way to go down to ground + +00:02:24.800 --> 00:02:26.480 +level you hit enter + +00:02:26.480 --> 00:02:28.160 +now or we'll hit enter to go down to the + +00:02:28.160 --> 00:02:30.480 +ground level and you can hit escape + +00:02:30.480 --> 00:02:33.200 +to go back out to the referential level + +00:02:33.200 --> 00:02:35.200 +enter to go down to ground level + +00:02:35.200 --> 00:02:37.280 +and escape to go up to the referential + +00:02:37.280 --> 00:02:40.160 +level + +00:02:40.160 --> 00:02:44.879 +now in vim the nouns + +00:02:44.879 --> 00:02:48.239 +in this world of text all + +00:02:48.239 --> 00:02:50.959 +share the same referential plane which + +00:02:50.959 --> 00:02:51.519 +we call + +00:02:51.519 --> 00:02:54.319 +normal mode so in normal mode all of the + +00:02:54.319 --> 00:02:54.959 +nouns + +00:02:54.959 --> 00:02:57.360 +of the world of text are available + +00:02:57.360 --> 00:02:58.959 +whether it's words or sentences or + +00:02:58.959 --> 00:03:00.959 +paragraphs + +00:03:00.959 --> 00:03:04.400 +and they all share this same + +00:03:04.400 --> 00:03:08.319 +referential plane and there's uh + +00:03:08.319 --> 00:03:11.120 +they sort of compete for space on the + +00:03:11.120 --> 00:03:12.720 +keyboard + +00:03:12.720 --> 00:03:15.760 +um so an alternative uh + +00:03:15.760 --> 00:03:17.680 +way to structure these modes is instead + +00:03:17.680 --> 00:03:19.280 +of having a single mode where all the + +00:03:19.280 --> 00:03:21.840 +nouns coexist + +00:03:21.840 --> 00:03:24.959 +peacefully or otherwise you instead + +00:03:24.959 --> 00:03:30.400 +have a dedicated mode for every noun + +00:03:30.400 --> 00:03:33.040 +so in that case what happens is because + +00:03:33.040 --> 00:03:35.440 +your modal spaces are now much smaller + +00:03:35.440 --> 00:03:37.280 +you're just talking about words or + +00:03:37.280 --> 00:03:38.720 +paragraphs or + +00:03:38.720 --> 00:03:42.560 +lines or something the keys that you use + +00:03:42.560 --> 00:03:45.760 +can be much more targeted + +00:03:45.760 --> 00:03:48.560 +and you can use the same keystrokes in + +00:03:48.560 --> 00:03:50.400 +in all of your modes and they would have + +00:03:50.400 --> 00:03:52.000 +the same ideas behind them but + +00:03:52.000 --> 00:03:53.280 +they would have different effects + +00:03:53.280 --> 00:03:55.519 +depending on which context you're using + +00:03:55.519 --> 00:03:57.519 +so it's the same keystrokes different + +00:03:57.519 --> 00:03:59.120 +contexts + +00:03:59.120 --> 00:04:01.360 +and the advantage of that is it's often + +00:04:01.360 --> 00:04:02.480 +easier + +00:04:02.480 --> 00:04:05.519 +to change context than it is to + +00:04:05.519 --> 00:04:09.040 +learn new key bindings so let's see + +00:04:09.040 --> 00:04:12.080 +an example of how that works we go into + +00:04:12.080 --> 00:04:13.680 +character mode and if you look at the + +00:04:13.680 --> 00:04:14.000 +mode + +00:04:14.000 --> 00:04:15.439 +line at the bottom of the screen there + +00:04:15.439 --> 00:04:18.720 +you'll see that we're in character mode + +00:04:18.720 --> 00:04:21.519 +and now when we move up down left and + +00:04:21.519 --> 00:04:23.919 +right we're moving by character + +00:04:23.919 --> 00:04:28.479 +we can also transform the text and + +00:04:28.479 --> 00:04:30.240 +the transformations occur in terms of + +00:04:30.240 --> 00:04:32.400 +character + +00:04:32.400 --> 00:04:34.320 +you can also go into word mode and in + +00:04:34.320 --> 00:04:35.520 +word mode + +00:04:35.520 --> 00:04:38.560 +the transformations that you do are on + +00:04:38.560 --> 00:04:40.000 +words + +00:04:40.000 --> 00:04:42.320 +and you try you your movement is also in + +00:04:42.320 --> 00:04:43.440 +terms of words + +00:04:43.440 --> 00:04:45.600 +so that's the level of granularity that + +00:04:45.600 --> 00:04:46.560 +you have + +00:04:46.560 --> 00:04:49.520 +you could also go to line mode and when + +00:04:49.520 --> 00:04:50.720 +you're in line mode + +00:04:50.720 --> 00:04:53.759 +you go up and down by line and you can + +00:04:53.759 --> 00:04:54.240 +move + +00:04:54.240 --> 00:04:57.520 +lines up and down left and right and so + +00:04:57.520 --> 00:04:59.120 +on + +00:04:59.120 --> 00:05:00.880 +and the transformations you do are in + +00:05:00.880 --> 00:05:02.800 +terms of lines + +00:05:02.800 --> 00:05:08.400 +you could also go to window mode where + +00:05:08.400 --> 00:05:10.639 +now the objects that you're referring to + +00:05:10.639 --> 00:05:12.400 +are windows and you can + +00:05:12.400 --> 00:05:15.759 +move spatially amongst the windows or + +00:05:15.759 --> 00:05:17.520 +make do transformations on the windows + +00:05:17.520 --> 00:05:20.850 +using the same keystrokes + +00:05:20.850 --> 00:05:22.840 +[Music] + +00:05:22.840 --> 00:05:25.360 +um + +00:05:25.360 --> 00:05:28.720 +so let's go to + +00:05:28.720 --> 00:05:32.800 +um right and so um the one of the things + +00:05:32.800 --> 00:05:35.280 +the the principles that play here is + +00:05:35.280 --> 00:05:36.880 +something called the rumpelstiltskin + +00:05:36.880 --> 00:05:38.000 +principle which is something + +00:05:38.000 --> 00:05:40.720 +that's known in computer science which + +00:05:40.720 --> 00:05:42.320 +is that if you can name something then + +00:05:42.320 --> 00:05:43.759 +you have that you have power + +00:05:43.759 --> 00:05:46.720 +then you have power over it so this is + +00:05:46.720 --> 00:05:48.560 +kind of an adaptation of that principle + +00:05:48.560 --> 00:05:50.479 +which says that if you can + +00:05:50.479 --> 00:05:52.320 +name something and if you can talk about + +00:05:52.320 --> 00:05:54.000 +it then it's a noun + +00:05:54.000 --> 00:05:55.360 +[Music] + +00:05:55.360 --> 00:05:56.960 +in your editing language and if it's a + +00:05:56.960 --> 00:05:58.960 +noun then it has + +00:05:58.960 --> 00:06:01.520 +it's a mode so if we can talk about it + +00:06:01.520 --> 00:06:02.319 +it's a noun + +00:06:02.319 --> 00:06:05.039 +if it's a noun then it's a mode and one + +00:06:05.039 --> 00:06:06.479 +of the things we've been talking a lot + +00:06:06.479 --> 00:06:07.039 +about + +00:06:07.039 --> 00:06:10.800 +is modes so in fact + +00:06:10.800 --> 00:06:14.240 +uh by this principle modes also + +00:06:14.240 --> 00:06:17.280 +should be a mode + +00:06:17.280 --> 00:06:19.039 +you should have a mode that can reason + +00:06:19.039 --> 00:06:21.120 +in terms of modes as objects just like + +00:06:21.120 --> 00:06:22.080 +you have + +00:06:22.080 --> 00:06:23.759 +modes where you can reason in terms of + +00:06:23.759 --> 00:06:26.560 +words or lines as objects + +00:06:26.560 --> 00:06:28.800 +and so let's do that let's go to mode + +00:06:28.800 --> 00:06:30.479 +mode + +00:06:30.479 --> 00:06:34.000 +when you go to mode mode you see that uh + +00:06:34.000 --> 00:06:36.080 +the objects that are depicted here are + +00:06:36.080 --> 00:06:37.919 +the modes that are + +00:06:37.919 --> 00:06:40.960 +that are present in the buffer + +00:06:40.960 --> 00:06:44.880 +which we knew about um because the + +00:06:44.880 --> 00:06:46.400 +style of editing that we had in this + +00:06:46.400 --> 00:06:48.720 +buffer was the vim style of editing + +00:06:48.720 --> 00:06:50.479 +where there's an insert mode at the + +00:06:50.479 --> 00:06:52.400 +ground level and a normal mode that you + +00:06:52.400 --> 00:06:53.039 +can escape + +00:06:53.039 --> 00:06:57.280 +to you insert enter the ground level + +00:06:57.280 --> 00:07:00.479 +enter to the insert mode and escape to + +00:07:00.479 --> 00:07:02.880 +normal mode and when you look at the + +00:07:02.880 --> 00:07:03.680 +mode mode + +00:07:03.680 --> 00:07:06.160 +representation you see that in fact that + +00:07:06.160 --> 00:07:10.479 +is the structure that's depicted + +00:07:10.479 --> 00:07:12.720 +but in different situations you might + +00:07:12.720 --> 00:07:14.080 +find + +00:07:14.080 --> 00:07:16.080 +that you that these modes are not the + +00:07:16.080 --> 00:07:17.680 +ones that you want you want something + +00:07:17.680 --> 00:07:19.360 +more tailored for the specific + +00:07:19.360 --> 00:07:20.880 +application + +00:07:20.880 --> 00:07:23.050 +for instance if you're editing + +00:07:23.050 --> 00:07:24.240 +[Music] + +00:07:24.240 --> 00:07:27.360 +lisp code uh or or code in general but + +00:07:27.360 --> 00:07:30.880 +list code is a particular example + +00:07:30.880 --> 00:07:32.960 +you might want to take advantage of the + +00:07:32.960 --> 00:07:34.000 +structure of + +00:07:34.000 --> 00:07:37.599 +the code and for lisp code in particular + +00:07:37.599 --> 00:07:40.960 +we have a mode called symax mode + +00:07:40.960 --> 00:07:44.240 +which is able to reason + +00:07:44.240 --> 00:07:46.720 +about your code in terms of its tree + +00:07:46.720 --> 00:07:47.919 +structure + +00:07:47.919 --> 00:07:50.560 +so you can use the same keystrokes hkl + +00:07:50.560 --> 00:07:51.120 +goes + +00:07:51.120 --> 00:07:53.440 +left right up and down but you also have + +00:07:53.440 --> 00:07:54.960 +other keystrokes that are more + +00:07:54.960 --> 00:07:58.080 +specialized to the application + +00:07:58.080 --> 00:08:01.520 +and you can run the code and + +00:08:01.520 --> 00:08:06.960 +we'll see that happen here in a minute + +00:08:06.960 --> 00:08:10.080 +and you can make changes to it really + +00:08:10.080 --> 00:08:12.240 +quickly + +00:08:12.240 --> 00:08:18.000 +and see the effects of those changes + +00:08:18.000 --> 00:08:19.440 +and you're doing this all in a mode + +00:08:19.440 --> 00:08:21.360 +that's convenient for + +00:08:21.360 --> 00:08:23.199 +this particular application which is + +00:08:23.199 --> 00:08:25.039 +editing lisp code + +00:08:25.039 --> 00:08:28.960 +and that is in this case symmex mode + +00:08:28.960 --> 00:08:31.039 +so typically when you're editing code + +00:08:31.039 --> 00:08:32.640 +like this you'd want to be + +00:08:32.640 --> 00:08:34.800 +in insert mode actually typing out the + +00:08:34.800 --> 00:08:36.640 +code + +00:08:36.640 --> 00:08:38.320 +and then you'd want to escape to simex + +00:08:38.320 --> 00:08:40.959 +mode rather than normal mode + +00:08:40.959 --> 00:08:42.159 +and then you could escape again and + +00:08:42.159 --> 00:08:44.080 +you'd end up in normal mode + +00:08:44.080 --> 00:08:46.720 +so this if we go to mode mode we see is + +00:08:46.720 --> 00:08:48.000 +depicted + +00:08:48.000 --> 00:08:51.040 +as this tower where insert is at the + +00:08:51.040 --> 00:08:52.800 +bottom and normal is at the top but + +00:08:52.800 --> 00:08:54.800 +symmex mode is in between + +00:08:54.800 --> 00:08:57.200 +the two you could also change that if + +00:08:57.200 --> 00:08:58.800 +you like if you don't want cmx mode to + +00:08:58.800 --> 00:09:00.640 +be there you could just + +00:09:00.640 --> 00:09:03.760 +move it to the top and now you find some + +00:09:03.760 --> 00:09:05.600 +mixes at the top and you enter down to + +00:09:05.600 --> 00:09:06.160 +normal + +00:09:06.160 --> 00:09:07.600 +you can see it on the status bar at the + +00:09:07.600 --> 00:09:10.480 +bottom there enter to insert + +00:09:10.480 --> 00:09:13.839 +escape to normal escape to symmex and + +00:09:13.839 --> 00:09:16.480 +in fact you can even add more modes if + +00:09:16.480 --> 00:09:19.380 +you don't like the existing ones + +00:09:19.380 --> 00:09:21.519 +[Music] + +00:09:21.519 --> 00:09:23.839 +and now we have an additional mode here + +00:09:23.839 --> 00:09:25.440 +we have window mode it goes down to + +00:09:25.440 --> 00:09:27.519 +symmex goes down to normal + +00:09:27.519 --> 00:09:30.320 +enter the insert escape to normal escape + +00:09:30.320 --> 00:09:33.600 +to smx escape the window + +00:09:33.600 --> 00:09:37.600 +um so we've talked okay so another thing + +00:09:37.600 --> 00:09:41.760 +actually to note here is that in editing + +00:09:41.760 --> 00:09:45.360 +modes um + +00:09:45.360 --> 00:09:46.720 +if you look at the mode line at the + +00:09:46.720 --> 00:09:48.399 +bottom of the screen + +00:09:48.399 --> 00:09:50.640 +you'll see that we are currently in this + +00:09:50.640 --> 00:09:51.519 +buffer + +00:09:51.519 --> 00:09:54.560 +we are currently in line mode + +00:09:54.560 --> 00:09:57.600 +and I'm going to hit enter now and + +00:09:57.600 --> 00:09:58.720 +you'll see that when I hit + +00:09:58.720 --> 00:10:01.519 +enter nothing is happening it's still in + +00:10:01.519 --> 00:10:02.160 +line mode + +00:10:02.160 --> 00:10:05.120 +if you'd escape it's still in line mode + +00:10:05.120 --> 00:10:07.200 +and you can find out the reason for that + +00:10:07.200 --> 00:10:10.640 +by taking another meta jump out of this + +00:10:10.640 --> 00:10:12.800 +and you'll see that in fact the reason + +00:10:12.800 --> 00:10:15.279 +is that we're currently in line mode + +00:10:15.279 --> 00:10:17.360 +and line mode is the only one available + +00:10:17.360 --> 00:10:19.519 +in this tower + +00:10:19.519 --> 00:10:21.760 +for editing the modes that are in + +00:10:21.760 --> 00:10:24.880 +operation in your ground level + +00:10:24.880 --> 00:10:26.560 +and in fact line mode is all you need + +00:10:26.560 --> 00:10:28.320 +here because this is just + +00:10:28.320 --> 00:10:30.320 +uh the nature of how these modes are + +00:10:30.320 --> 00:10:32.079 +laid out is + +00:10:32.079 --> 00:10:35.040 +in in rows and so line mode is the most + +00:10:35.040 --> 00:10:36.399 +appropriate thing here + +00:10:36.399 --> 00:10:37.680 +but you could change it to something + +00:10:37.680 --> 00:10:39.740 +else if you like + +00:10:39.740 --> 00:10:40.959 +[Music] + +00:10:40.959 --> 00:10:44.160 +and then now we've seen two towers we've + +00:10:44.160 --> 00:10:44.560 +seen + +00:10:44.560 --> 00:10:48.079 +the vim tower and we've seen + +00:10:48.079 --> 00:10:53.680 +also the symex tower the the lisp tower + +00:10:53.680 --> 00:10:56.959 +and it turns out that because we've been + +00:10:56.959 --> 00:10:58.880 +talking about towers now + +00:10:58.880 --> 00:11:01.519 +by the rumpelstiltskin principle towers + +00:11:01.519 --> 00:11:02.800 +also + +00:11:02.800 --> 00:11:06.399 +um can be talked about + +00:11:06.399 --> 00:11:09.279 +and therefore they also are a mode so + +00:11:09.279 --> 00:11:11.200 +how do we go to tower mode + +00:11:11.200 --> 00:11:14.640 +and the way we go tower mode is we do + +00:11:14.640 --> 00:11:19.200 +we go in a slightly different direction + +00:11:19.200 --> 00:11:20.800 +and we find that we are now in tower + +00:11:20.800 --> 00:11:23.360 +mode + +00:11:23.360 --> 00:11:27.440 +and we see that there are many towers + +00:11:27.440 --> 00:11:29.279 +available so we're now + +00:11:29.279 --> 00:11:32.640 +we're we're seeing several possible + +00:11:32.640 --> 00:11:36.240 +towers that we have written + +00:11:36.240 --> 00:11:39.120 +um to be available and for use in + +00:11:39.120 --> 00:11:41.440 +different buffers and you can edit them + +00:11:41.440 --> 00:11:44.000 +on the fly for instance let's enter this + +00:11:44.000 --> 00:11:46.630 +tower + +00:11:46.630 --> 00:11:48.000 +[Music] + +00:11:48.000 --> 00:11:49.920 +and now you see that in the bottom of + +00:11:49.920 --> 00:11:51.519 +the in the mode line you see that we're + +00:11:51.519 --> 00:11:52.480 +going + +00:11:52.480 --> 00:11:54.240 +across all of these different modes that + +00:11:54.240 --> 00:11:56.480 +were in the tower + +00:11:56.480 --> 00:11:58.800 +and you could escape and you could even + +00:11:58.800 --> 00:12:00.399 +move things around you could put window + +00:12:00.399 --> 00:12:00.880 +mode + +00:12:00.880 --> 00:12:02.399 +all the way at the bottom right above + +00:12:02.399 --> 00:12:04.079 +insert mode + +00:12:04.079 --> 00:12:06.880 +let's see that happen there it is window + +00:12:06.880 --> 00:12:09.839 +is right above insert + +00:12:09.839 --> 00:12:13.040 +so on and the tower always reflects your + +00:12:13.040 --> 00:12:14.240 +current position + +00:12:14.240 --> 00:12:15.760 +so if you're in buffer mode here and you + +00:12:15.760 --> 00:12:17.600 +go down to line mode + +00:12:17.600 --> 00:12:19.120 +when you go back to mode mode you see + +00:12:19.120 --> 00:12:22.480 +that we are in line mode + +00:12:22.480 --> 00:12:24.000 +but in practice you wouldn't have a + +00:12:24.000 --> 00:12:26.160 +tower this elaborate because + +00:12:26.160 --> 00:12:28.959 +you'd rather have several smaller towers + +00:12:28.959 --> 00:12:29.440 +you + +00:12:29.440 --> 00:12:33.360 +enter that you alternate between + +00:12:33.360 --> 00:12:36.639 +um okay so one + +00:12:36.639 --> 00:12:39.839 +other thing of interest here is that + +00:12:39.839 --> 00:12:42.240 +when you're in tower mode + +00:12:42.240 --> 00:12:43.839 +if you look at the status line at the + +00:12:43.839 --> 00:12:45.920 +bottom there we are currently + +00:12:45.920 --> 00:12:49.200 +in buffer mode while we are in tower + +00:12:49.200 --> 00:12:49.839 +mode + +00:12:49.839 --> 00:12:51.600 +and tower mode actually isn't a mode + +00:12:51.600 --> 00:12:53.519 +really neither is mode mode they're + +00:12:53.519 --> 00:12:53.920 +really + +00:12:53.920 --> 00:12:58.000 +referential planes or meta planes + +00:12:58.000 --> 00:13:00.959 +um in any case you can see that we're in + +00:13:00.959 --> 00:13:03.120 +buffer mode and we can take a meta jump + +00:13:03.120 --> 00:13:04.560 +out of this to confirm + +00:13:04.560 --> 00:13:07.120 +that buffer mode is the only mode + +00:13:07.120 --> 00:13:08.000 +available + +00:13:08.000 --> 00:13:10.560 +when we're editing towers because that's + +00:13:10.560 --> 00:13:11.200 +the one + +00:13:11.200 --> 00:13:14.240 +we need given that our towers are + +00:13:14.240 --> 00:13:15.200 +represented + +00:13:15.200 --> 00:13:23.200 +in individual buffers + +00:13:23.200 --> 00:13:26.000 +right so let's uh let's see where we're + +00:13:26.000 --> 00:13:26.320 +at + +00:13:26.320 --> 00:13:28.240 +trump's still skin principle we talked + +00:13:28.240 --> 00:13:30.160 +about mode mode + +00:13:30.160 --> 00:13:32.240 +um we talked about the strange loop + +00:13:32.240 --> 00:13:33.920 +application of + +00:13:33.920 --> 00:13:37.820 +ground level modes in meta levels + +00:13:37.820 --> 00:13:39.600 +[Music] + +00:13:39.600 --> 00:13:42.240 +and yeah we saw the different towers and + +00:13:42.240 --> 00:13:43.199 +in fact + +00:13:43.199 --> 00:13:46.639 +you can we're currently in + +00:13:46.639 --> 00:13:50.720 +vim tower + +00:13:50.720 --> 00:13:53.120 +where you can go to Emacs tower and now + +00:13:53.120 --> 00:13:54.720 +with a single keystroke you can + +00:13:54.720 --> 00:13:55.760 +alternate + +00:13:55.760 --> 00:13:59.040 +between e-max + +00:13:59.040 --> 00:14:02.399 +and vim which are represented which are + +00:14:02.399 --> 00:14:05.519 +modeled as towers + +00:14:05.519 --> 00:14:09.279 +um + +00:14:09.279 --> 00:14:13.360 +okay so + +00:14:13.360 --> 00:14:15.360 +so there's uh the one thing that we've + +00:14:15.360 --> 00:14:17.040 +sort of alluded to is that there are two + +00:14:17.040 --> 00:14:18.160 +directions + +00:14:18.160 --> 00:14:20.480 +that you can travel in when you're going + +00:14:20.480 --> 00:14:22.399 +through this framework + +00:14:22.399 --> 00:14:25.120 +one lev one direction is uh and we'll + +00:14:25.120 --> 00:14:33.760 +visualize it with uh like so + +00:14:33.760 --> 00:14:35.120 +there's two directions you can travel + +00:14:35.120 --> 00:14:37.040 +and you can either go sideways or you + +00:14:37.040 --> 00:14:38.399 +can go up and down + +00:14:38.399 --> 00:14:40.399 +if you go sideways you're changing your + +00:14:40.399 --> 00:14:41.680 +perspective + +00:14:41.680 --> 00:14:45.440 +so normal mode word mode line mode + +00:14:45.440 --> 00:14:47.360 +window mode and so on are all different + +00:14:47.360 --> 00:14:49.120 +perspectives on your under on your + +00:14:49.120 --> 00:14:51.680 +ground editing experience + +00:14:51.680 --> 00:14:53.040 +and the other direction you can travel + +00:14:53.040 --> 00:14:55.519 +in is up or down which takes you + +00:14:55.519 --> 00:14:57.920 +through meta levels so you go from the + +00:14:57.920 --> 00:14:59.600 +ground level editing experience + +00:14:59.600 --> 00:15:01.920 +up to mode mode and then up to the tower + +00:15:01.920 --> 00:15:03.440 +plane and so on + +00:15:03.440 --> 00:15:07.040 +or uh yeah and so on + +00:15:07.040 --> 00:15:10.800 +um yeah so this all sounds + +00:15:10.800 --> 00:15:14.880 +very complex but the truth is + +00:15:14.880 --> 00:15:18.160 +it's not really that complicated + +00:15:18.160 --> 00:15:21.519 +even though it feels that way the reason + +00:15:21.519 --> 00:15:22.959 +it isn't that complicated + +00:15:22.959 --> 00:15:26.480 +is because no matter how many levels + +00:15:26.480 --> 00:15:28.800 +up or down you go and no matter where + +00:15:28.800 --> 00:15:30.160 +you are + +00:15:30.160 --> 00:15:32.399 +whether you're in at the ground level + +00:15:32.399 --> 00:15:34.079 +editing the actual text + +00:15:34.079 --> 00:15:36.000 +or whether you're at a meta level some + +00:15:36.000 --> 00:15:37.600 +unknown meta level and you don't know + +00:15:37.600 --> 00:15:39.279 +where you are + +00:15:39.279 --> 00:15:42.320 +no matter where you are the way in which + +00:15:42.320 --> 00:15:44.399 +you interact with it + +00:15:44.399 --> 00:15:47.519 +is the same at every level + +00:15:47.519 --> 00:15:52.000 +and that is the great power of um + +00:15:52.000 --> 00:15:55.440 +this approach is that + +00:15:55.440 --> 00:15:58.720 +all of the different levels um are the + +00:15:58.720 --> 00:16:00.880 +same + +00:16:00.880 --> 00:16:03.839 +and in fact the complexity of the whole + +00:16:03.839 --> 00:16:05.759 +is exactly identical to the + +00:16:05.759 --> 00:16:08.720 +complexity of each part so if you know + +00:16:08.720 --> 00:16:10.000 +how to edit words + +00:16:10.000 --> 00:16:12.959 +in the ground level buffer and you know + +00:16:12.959 --> 00:16:13.440 +how to move + +00:16:13.440 --> 00:16:15.839 +lines around using line mode then you + +00:16:15.839 --> 00:16:16.720 +know how to edit + +00:16:16.720 --> 00:16:19.519 +any aspect of your editing experience at + +00:16:19.519 --> 00:16:22.800 +any level + +00:16:22.800 --> 00:16:23.310 +so + +00:16:23.310 --> 00:16:26.240 +[Music] + +00:16:26.240 --> 00:16:30.079 +um + +00:16:30.079 --> 00:16:32.000 +so this is a pre-release demo this + +00:16:32.000 --> 00:16:33.839 +doesn't exist on melpa + +00:16:33.839 --> 00:16:36.880 +yet but you can follow updates um + +00:16:36.880 --> 00:16:40.079 +at this repo on github + +00:16:40.079 --> 00:16:44.079 +and if you can also be a beta tester or + +00:16:44.079 --> 00:16:45.199 +something like that if you like that + +00:16:45.199 --> 00:16:46.000 +would be very + +00:16:46.000 --> 00:16:49.199 +uh helpful and you can learn more about + +00:16:49.199 --> 00:16:50.560 +this at + +00:16:50.560 --> 00:16:53.920 +dream.org which is where I house + +00:16:53.920 --> 00:16:55.920 +the research that I work on and in + +00:16:55.920 --> 00:16:57.279 +particular + +00:16:57.279 --> 00:17:00.800 +the research on epistemic levels is what + +00:17:00.800 --> 00:17:03.600 +inspired this particular Emacs extension + +00:17:03.600 --> 00:17:06.480 +you can also learn about dialectical + +00:17:06.480 --> 00:17:08.480 +inheritance attribution which is the + +00:17:08.480 --> 00:17:10.880 +basis of + +00:17:10.880 --> 00:17:14.559 +a new economic system that could be fair + +00:17:14.559 --> 00:17:16.959 +and could lead to a prosperous and happy + +00:17:16.959 --> 00:17:19.439 +world + +00:17:19.439 --> 00:17:22.799 +and um yeah you can follow me on + +00:17:22.799 --> 00:17:26.319 +twitter at countwajoula and + +00:17:26.319 --> 00:17:31.919 +that's it thank you diff --git a/2020/subtitles/emacsconf-2020--09-orgmode-your-life-in-plain-text--rainer-koenig-autogen.vtt b/2020/subtitles/emacsconf-2020--09-orgmode-your-life-in-plain-text--rainer-koenig-autogen.vtt new file mode 100644 index 00000000..35ef9d1f --- /dev/null +++ b/2020/subtitles/emacsconf-2020--09-orgmode-your-life-in-plain-text--rainer-koenig-autogen.vtt @@ -0,0 +1,454 @@ +WEBVTT + +00:00:02.480 --> 00:00:03.199 +so + +00:00:03.199 --> 00:00:06.240 +hi there this is reiner I have a 10 + +00:00:06.240 --> 00:00:08.559 +minute time slot at the imax conf + +00:00:08.559 --> 00:00:11.759 +and I will show you a quick uh walk + +00:00:11.759 --> 00:00:13.519 +through my gtd + +00:00:13.519 --> 00:00:17.039 +system in order mode so + +00:00:17.039 --> 00:00:19.520 +let's start with capturing we want to + +00:00:19.520 --> 00:00:20.640 +capture + +00:00:20.640 --> 00:00:24.080 +what we do here so the idea + +00:00:24.080 --> 00:00:27.279 +is I press f6 and I say I want to make a + +00:00:27.279 --> 00:00:29.599 +small project because this video + +00:00:29.599 --> 00:00:33.120 +will be a small project so the thing is + +00:00:33.120 --> 00:00:35.120 +record a video + +00:00:35.120 --> 00:00:38.239 +for imax imx + +00:00:38.239 --> 00:00:42.000 +conf 2020 + +00:00:42.000 --> 00:00:45.920 +video is recorded edited + +00:00:45.920 --> 00:00:49.360 +and uploaded and we can also + +00:00:49.360 --> 00:00:52.160 +set the timeline because we want to + +00:00:52.160 --> 00:00:53.680 +upload it and the time + +00:00:53.680 --> 00:00:56.640 +the deadline for uploads is we know it + +00:00:56.640 --> 00:00:59.440 +already the 14th of november + +00:00:59.440 --> 00:01:02.719 +so let me put this in here see this is + +00:01:02.719 --> 00:01:03.600 +done + +00:01:03.600 --> 00:01:05.760 +and now because it's a project I mean I + +00:01:05.760 --> 00:01:07.600 +could say just one task to record a + +00:01:07.600 --> 00:01:09.280 +video but it's + +00:01:09.280 --> 00:01:12.159 +too much so let's split it down in a few + +00:01:12.159 --> 00:01:40.400 +small tasks so the next one + +00:01:40.400 --> 00:01:43.439 +so you see I've just typed a few + +00:01:43.439 --> 00:01:46.159 +quick tasks we can see them if we look + +00:01:46.159 --> 00:01:46.640 +in the + +00:01:46.640 --> 00:01:50.240 +capture file + +00:01:50.240 --> 00:01:52.399 +so you see there's my project entry and + +00:01:52.399 --> 00:01:54.479 +there are all my tasks and since it's a + +00:01:54.479 --> 00:01:56.799 +project I can now + +00:01:56.799 --> 00:02:00.240 +make it easy I just indent every task by + +00:02:00.240 --> 00:02:05.360 +one + +00:02:05.360 --> 00:02:14.480 +and then + +00:02:14.480 --> 00:02:18.560 +so + +00:02:18.560 --> 00:02:23.120 +okay so you see we have one + +00:02:23.120 --> 00:02:27.360 +project here and this one we refile now + +00:02:27.360 --> 00:02:34.840 +to our + +00:02:34.840 --> 00:02:36.160 +backlog + +00:02:36.160 --> 00:02:42.000 +so if we look in our backlog + +00:02:42.000 --> 00:02:45.599 +you see my project with all the tasks + +00:02:45.599 --> 00:02:52.480 +so now next one + +00:02:52.480 --> 00:02:55.040 +and I pretend now I'm doing a weekly + +00:02:55.040 --> 00:02:56.720 +review + +00:02:56.720 --> 00:03:01.040 +see makes me + +00:03:01.040 --> 00:03:04.080 +and I already did some things and now + +00:03:04.080 --> 00:03:07.120 +the point where I am + +00:03:07.120 --> 00:03:10.319 +is schedule tasks with no date + +00:03:10.319 --> 00:03:15.200 +those are all those tasks so I have a + +00:03:15.200 --> 00:03:17.519 +weekly review help but that says okay + +00:03:17.519 --> 00:03:19.040 +show me everything + +00:03:19.040 --> 00:03:22.080 +that I need to schedule plan + +00:03:22.080 --> 00:03:25.280 +so schedule this class we do + +00:03:25.280 --> 00:03:30.879 +everything + +00:03:30.879 --> 00:03:35.040 +so everything is scheduled now + +00:03:35.040 --> 00:03:38.239 +and we can check off that and so on + +00:03:38.239 --> 00:03:42.000 +we can I have a plan + +00:03:42.000 --> 00:03:44.959 +for every day that's my free plan I + +00:03:44.959 --> 00:03:46.879 +press f6 + +00:03:46.879 --> 00:03:50.239 +and I say pp plan + +00:03:50.239 --> 00:03:53.439 +private things you see there is the + +00:03:53.439 --> 00:03:57.360 +first day 12th of november german + +00:03:57.360 --> 00:04:01.120 +and now I can + +00:04:01.120 --> 00:04:03.200 +look at what I have to do today you see + +00:04:03.200 --> 00:04:04.239 +my my uh + +00:04:04.239 --> 00:04:07.040 +agenda view is very long and I just want + +00:04:07.040 --> 00:04:09.360 +to focus on a few tasks so + +00:04:09.360 --> 00:04:14.000 +I copied them to my + +00:04:14.000 --> 00:04:22.639 +daily plan + +00:04:22.639 --> 00:04:25.680 +I just want to show you so I have a + +00:04:25.680 --> 00:04:29.919 +daily plan for every day and that means + +00:04:29.919 --> 00:04:33.919 +this one is what I see + +00:04:33.919 --> 00:04:37.680 +and this one is gone + +00:04:37.680 --> 00:04:41.360 +so now let's pretend we are working on + +00:04:41.360 --> 00:04:43.600 +the first refine the requirements for + +00:04:43.600 --> 00:04:44.960 +the video + +00:04:44.960 --> 00:04:48.320 +and we had a look and uh okay + +00:04:48.320 --> 00:04:51.520 +I can mark this task as done here + +00:04:51.520 --> 00:04:53.520 +because I knew the requirements the main + +00:04:53.520 --> 00:04:54.840 +ct + +00:04:54.840 --> 00:04:57.759 +done format + +00:04:57.759 --> 00:05:01.199 +is 720p + +00:05:01.199 --> 00:05:05.199 +webm codec + +00:05:05.199 --> 00:05:09.440 +so this one is done and I can mark it + +00:05:09.440 --> 00:05:10.960 +off here + +00:05:10.960 --> 00:05:14.560 +as well so now I have marked it off + +00:05:14.560 --> 00:05:17.600 +everywhere and the good thing of my + +00:05:17.600 --> 00:05:19.600 +daily plan is that I can't + +00:05:19.600 --> 00:05:21.600 +really see it all the day and I stick to + +00:05:21.600 --> 00:05:23.520 +this what I decided in the morning what + +00:05:23.520 --> 00:05:24.639 +I want to do + +00:05:24.639 --> 00:05:27.120 +so let's go to the next one make a quick + +00:05:27.120 --> 00:05:28.080 +test + +00:05:28.080 --> 00:05:38.000 +yeah I did the test already + +00:05:38.000 --> 00:05:40.720 +uh I will do a small trick I say okay I + +00:05:40.720 --> 00:05:42.639 +record the video here + +00:05:42.639 --> 00:05:46.960 +video recorded and then let me do + +00:05:46.960 --> 00:05:55.120 +what to show + +00:05:55.120 --> 00:05:58.319 +now I'm recording the video so + +00:05:58.319 --> 00:06:01.280 +let's see what we do we had capture we + +00:06:01.280 --> 00:06:02.240 +had + +00:06:02.240 --> 00:06:05.440 +weekly review we had daily planning + +00:06:05.440 --> 00:06:09.919 +and how are we processing this very nice + +00:06:09.919 --> 00:06:12.319 +so let's pretend the video is recorded + +00:06:12.319 --> 00:06:17.520 +ct done + +00:06:17.520 --> 00:06:20.479 +let me put this to next again start + +00:06:20.479 --> 00:06:21.120 +cardi + +00:06:21.120 --> 00:06:27.280 +and live to time lapse + +00:06:27.280 --> 00:06:30.319 +and after recording it + +00:06:30.319 --> 00:06:33.759 +I pre pretend this is done now + +00:06:33.759 --> 00:06:39.039 +ct done + +00:06:39.039 --> 00:06:42.400 +and then I have a video ready and then + +00:06:42.400 --> 00:06:44.639 +let's pretend I did the upload + +00:06:44.639 --> 00:06:50.639 +as well done radio uploaded + +00:06:50.639 --> 00:06:55.280 +cc so I can say everything now is done + +00:06:55.280 --> 00:06:58.319 +save it so tomorrow I see what I did + +00:06:58.319 --> 00:06:59.199 +yesterday + +00:06:59.199 --> 00:07:02.560 +and here I'm completely + +00:07:02.560 --> 00:07:06.000 +done we have the weekly review + +00:07:06.000 --> 00:07:09.680 +and we put another + +00:07:09.680 --> 00:07:12.639 +buffer here because I want to show you + +00:07:12.639 --> 00:07:15.199 +the the final step of my weekly review + +00:07:15.199 --> 00:07:16.960 +if you see the + +00:07:16.960 --> 00:07:19.199 +if you see there's a final step that + +00:07:19.199 --> 00:07:21.599 +says select finish tasks and make a bulk + +00:07:21.599 --> 00:07:24.160 +archive action so if you look at my + +00:07:24.160 --> 00:07:26.560 +uh imax coin thing okay the project is + +00:07:26.560 --> 00:07:27.440 +done as well + +00:07:27.440 --> 00:07:31.360 +project ct done + +00:07:31.360 --> 00:07:34.880 +and then what I can do is now see + +00:07:34.880 --> 00:07:38.160 +a weekly review helper + +00:07:38.160 --> 00:07:41.680 +finish tasks and I could + +00:07:41.680 --> 00:07:44.720 +make a bike + +00:07:44.720 --> 00:07:48.639 +operation that says archive everything + +00:07:48.639 --> 00:07:50.639 +but at the moment I don't need to do + +00:07:50.639 --> 00:07:52.720 +that because we have + +00:07:52.720 --> 00:07:56.720 +a tree structure so it's cxa I have this + +00:07:56.720 --> 00:08:00.080 +task away and the task is done so that's + +00:08:00.080 --> 00:08:02.800 +it that's my system you see from + +00:08:02.800 --> 00:08:06.080 +capturing tasks to scheduling tasks to + +00:08:06.080 --> 00:08:08.000 +putting it on the daily plan + +00:08:08.000 --> 00:08:09.759 +performing it and at the end when + +00:08:09.759 --> 00:08:11.120 +everything is done + +00:08:11.120 --> 00:08:13.199 +and the next weekly review they will go + +00:08:13.199 --> 00:08:14.879 +to the ici file + +00:08:14.879 --> 00:08:17.199 +because it's finished thank you for + +00:08:17.199 --> 00:08:21.759 +watching that's it diff --git a/2020/subtitles/emacsconf-2020--11-the-org-gtd-package-opinions-about-getting-things-done--aldric-autogen.vtt b/2020/subtitles/emacsconf-2020--11-the-org-gtd-package-opinions-about-getting-things-done--aldric-autogen.vtt new file mode 100644 index 00000000..2942e07d --- /dev/null +++ b/2020/subtitles/emacsconf-2020--11-the-org-gtd-package-opinions-about-getting-things-done--aldric-autogen.vtt @@ -0,0 +1,1195 @@ +WEBVTT + +00:00:01.680 --> 00:00:03.439 +Hello, and welcome + +00:00:03.439 --> 00:00:07.200 +to my Org GTD talk. + +00:00:07.200 --> 00:00:10.400 +I wrote this package because myself + +00:00:10.400 --> 00:00:12.719 +overwhelmed with all the stuff I had to + +00:00:12.719 --> 00:00:14.320 +manage at working at home + +00:00:14.320 --> 00:00:17.359 +and I'd heard about gtd saw someone + +00:00:17.359 --> 00:00:18.720 +using it with + +00:00:18.720 --> 00:00:22.320 +just a small notebook + +00:00:22.320 --> 00:00:24.720 +and I wanted to do it in Emacs because + +00:00:24.720 --> 00:00:25.920 +well + +00:00:25.920 --> 00:00:29.199 +max can do everything right so + +00:00:29.199 --> 00:00:31.359 +I'm going to jump in quickly so just so + +00:00:31.359 --> 00:00:34.559 +you know here's kind of a list of the + +00:00:34.559 --> 00:00:36.960 +resources obviously org gtd which you + +00:00:36.960 --> 00:00:38.719 +can find there you can open an issue ask + +00:00:38.719 --> 00:00:41.120 +me questions there about it + +00:00:41.120 --> 00:00:43.280 +I use org edna a package for state + +00:00:43.280 --> 00:00:45.360 +triggers I'm going to show this briefly + +00:00:45.360 --> 00:00:46.160 +when I + +00:00:46.160 --> 00:00:49.840 +finish item in a project + +00:00:49.840 --> 00:00:52.000 +org agenda property you will see in the + +00:00:52.000 --> 00:00:53.440 +agenda it's going to show + +00:00:53.440 --> 00:00:57.360 +to whom an action has been delegated to + +00:00:57.360 --> 00:01:00.960 +and you will see orgrome briefly as a + +00:01:00.960 --> 00:01:02.559 +reference because that is what I have + +00:01:02.559 --> 00:01:04.080 +chosen for + +00:01:04.080 --> 00:01:06.960 +my knowledge archival tool you can + +00:01:06.960 --> 00:01:07.360 +choose + +00:01:07.360 --> 00:01:12.640 +whatever you prefer + +00:01:12.640 --> 00:01:15.520 +um this is a quick quick reminder on + +00:01:15.520 --> 00:01:15.840 +what + +00:01:15.840 --> 00:01:18.479 +gtd is and how it works uh this is not a + +00:01:18.479 --> 00:01:19.680 +lesson on + +00:01:19.680 --> 00:01:22.640 +presentation on gtd because that would + +00:01:22.640 --> 00:01:23.360 +be + +00:01:23.360 --> 00:01:25.680 +well other people have done it better + +00:01:25.680 --> 00:01:27.920 +than me + +00:01:27.920 --> 00:01:30.320 +so in short um everything goes into the + +00:01:30.320 --> 00:01:31.280 +inbox + +00:01:31.280 --> 00:01:34.320 +and then you process the inbox and you + +00:01:34.320 --> 00:01:35.600 +decide what to do if + +00:01:35.600 --> 00:01:37.200 +it could be actionable or not if it's + +00:01:37.200 --> 00:01:39.119 +actionable it could be a project + +00:01:39.119 --> 00:01:40.799 +or it could be a single action which you + +00:01:40.799 --> 00:01:42.159 +could delegate + +00:01:42.159 --> 00:01:45.759 +or soon or schedule or just do + +00:01:45.759 --> 00:01:48.079 +do it if it's not actionable you could + +00:01:48.079 --> 00:01:49.680 +just throw it away + +00:01:49.680 --> 00:01:51.759 +incubate it for later or move it into + +00:01:51.759 --> 00:01:53.600 +your files + +00:01:53.600 --> 00:01:57.520 +reference + +00:01:57.520 --> 00:02:01.920 +over here + +00:02:01.920 --> 00:02:05.119 +you can see the global bindings + +00:02:05.119 --> 00:02:08.959 +or or gtd those are the the actions that + +00:02:08.959 --> 00:02:11.599 +the functions I have made available this + +00:02:11.599 --> 00:02:12.319 +is + +00:02:12.319 --> 00:02:14.000 +in progress there's more to come some + +00:02:14.000 --> 00:02:15.760 +stuff is probably missing but + +00:02:15.760 --> 00:02:17.360 +it's grown mostly from my own personal + +00:02:17.360 --> 00:02:22.400 +use so far so it doesn't have things + +00:02:22.400 --> 00:02:25.520 +and the bottom right you can see the + +00:02:25.520 --> 00:02:27.200 +agenda + +00:02:27.200 --> 00:02:28.560 +one thing I wanted to do with this + +00:02:28.560 --> 00:02:31.599 +package was leverage org mode as much as + +00:02:31.599 --> 00:02:32.959 +possible + +00:02:32.959 --> 00:02:36.319 +so I tried to not reinvent + +00:02:36.319 --> 00:02:40.160 +the wheel as much as I could that meant + +00:02:40.160 --> 00:02:43.599 +reusing the agenda you can see here + +00:02:43.599 --> 00:02:45.599 +a couple of the things that are made + +00:02:45.599 --> 00:02:47.920 +available or kind of + +00:02:47.920 --> 00:02:49.760 +custom customized or configure it for + +00:02:49.760 --> 00:02:54.319 +you some of the opinions that or gtd has + +00:02:54.319 --> 00:02:56.400 +up here for instance you can see a + +00:02:56.400 --> 00:02:57.840 +delegated action + +00:02:57.840 --> 00:03:01.040 +so a delegated action is + +00:03:01.040 --> 00:03:03.200 +as someone to whom it's delegated it's + +00:03:03.200 --> 00:03:04.720 +my parents in this case + +00:03:04.720 --> 00:03:06.080 +it has the name of the action ask + +00:03:06.080 --> 00:03:08.239 +parents what gift they want + +00:03:08.239 --> 00:03:11.599 +it's marked as the tag as the state + +00:03:11.599 --> 00:03:14.800 +of wait because I'm waiting + +00:03:14.800 --> 00:03:17.280 +and it is scheduled because you should + +00:03:17.280 --> 00:03:18.080 +ping people + +00:03:18.080 --> 00:03:20.239 +or check on the status status of a task + +00:03:20.239 --> 00:03:21.840 +when you're waiting for it so you don't + +00:03:21.840 --> 00:03:25.680 +forget about it or it gets lost forever + +00:03:25.680 --> 00:03:27.599 +I have a scheduled action to give a talk + +00:03:27.599 --> 00:03:30.560 +that's what I'm doing right now + +00:03:30.560 --> 00:03:33.440 +and I have an incubated action which is + +00:03:33.440 --> 00:03:35.599 +also scheduled to make money through the + +00:03:35.599 --> 00:03:36.640 +lottery this is a + +00:03:36.640 --> 00:03:38.640 +thing to take a look at for you know + +00:03:38.640 --> 00:03:41.120 +later decide later what I want to do + +00:03:41.120 --> 00:03:42.560 +it might be actionable it might not be I + +00:03:42.560 --> 00:03:44.560 +just I don't know right now or I didn't + +00:03:44.560 --> 00:03:46.239 +know when I + +00:03:46.239 --> 00:03:49.280 +processed it so I incubated it + +00:03:49.280 --> 00:03:52.319 +underneath we have all the things that + +00:03:52.319 --> 00:03:53.200 +are + +00:03:53.200 --> 00:03:59.360 +direct actions for me to take + +00:03:59.360 --> 00:04:01.439 +all right you see a little bit of the + +00:04:01.439 --> 00:04:03.200 +preparation seeps through the actual + +00:04:03.200 --> 00:04:04.080 +talk + +00:04:04.080 --> 00:04:05.519 +so I have here two I have a single + +00:04:05.519 --> 00:04:07.920 +action of a steal the android uh andreas + +00:04:07.920 --> 00:04:09.840 +gtd configuration + +00:04:09.840 --> 00:04:12.879 +and an action to read the gtd book it's + +00:04:12.879 --> 00:04:16.320 +part of a project + +00:04:16.320 --> 00:04:21.680 +so most of the day-to-day operation with + +00:04:21.680 --> 00:04:23.840 +with this package should come through + +00:04:23.840 --> 00:04:26.000 +just having the agenda open + +00:04:26.000 --> 00:04:29.600 +and having having it be your your source + +00:04:29.600 --> 00:04:31.199 +for the information you need to know so + +00:04:31.199 --> 00:04:31.919 +that you can + +00:04:31.919 --> 00:04:34.960 +do the right thing so let's take a look + +00:04:34.960 --> 00:04:35.440 +at + +00:04:35.440 --> 00:04:37.440 +what's underneath all of this really + +00:04:37.440 --> 00:04:39.600 +quickly + +00:04:39.600 --> 00:04:42.320 +we have there's three primary files um + +00:04:42.320 --> 00:04:43.360 +we have the inbox + +00:04:43.360 --> 00:04:45.759 +I'm gonna process it in a second because + +00:04:45.759 --> 00:04:46.400 +there's + +00:04:46.400 --> 00:04:48.880 +two things here one thing to cancel like + +00:04:48.880 --> 00:04:50.000 +an action to + +00:04:50.000 --> 00:04:51.919 +not take it's nothing and then something + +00:04:51.919 --> 00:04:53.919 +I will just put into org roam just so + +00:04:53.919 --> 00:04:54.479 +you can + +00:04:54.479 --> 00:04:58.960 +see that there is the incubate file + +00:04:58.960 --> 00:05:00.240 +you can see here make money through the + +00:05:00.240 --> 00:05:02.000 +lottery + +00:05:02.000 --> 00:05:04.800 +captured refiled here and scheduled to + +00:05:04.800 --> 00:05:06.560 +so it would show up in the agenda + +00:05:06.560 --> 00:05:10.000 +right at a given time and on the right + +00:05:10.000 --> 00:05:13.039 +you have the actionable file and this is + +00:05:13.039 --> 00:05:14.560 +the one that has the most information + +00:05:14.560 --> 00:05:15.919 +because + +00:05:15.919 --> 00:05:18.960 +where most things should go so + +00:05:18.960 --> 00:05:20.560 +I have the single actions they all go + +00:05:20.560 --> 00:05:22.720 +underneath here and so + +00:05:22.720 --> 00:05:24.479 +this is marked as next because it's an + +00:05:24.479 --> 00:05:26.240 +action for me to take + +00:05:26.240 --> 00:05:28.240 +uh delegated is marked as weight it is + +00:05:28.240 --> 00:05:29.600 +not an action for me to take it's an + +00:05:29.600 --> 00:05:31.199 +action for somebody else to take but it + +00:05:31.199 --> 00:05:32.400 +is scheduled because + +00:05:32.400 --> 00:05:37.919 +I may wanna I can check in at some point + +00:05:37.919 --> 00:05:38.400 +uh + +00:05:38.400 --> 00:05:39.759 +things that are scheduled like give a + +00:05:39.759 --> 00:05:43.120 +talk do not have a to-do or next or wait + +00:05:43.120 --> 00:05:44.960 +state because they are not bound that + +00:05:44.960 --> 00:05:46.400 +way they are time-bound + +00:05:46.400 --> 00:05:48.080 +so they will show up in the agenda when + +00:05:48.080 --> 00:05:50.320 +the time comes I shouldn't act on them + +00:05:50.320 --> 00:05:53.840 +or I can't act on them beforehand + +00:05:53.840 --> 00:05:55.280 +you can see here I have two projects a + +00:05:55.280 --> 00:05:56.880 +test project and I will + +00:05:56.880 --> 00:05:58.880 +do something with this in a second and + +00:05:58.880 --> 00:06:00.080 +then there's this + +00:06:00.080 --> 00:06:01.919 +package make a gte package there's a + +00:06:01.919 --> 00:06:04.000 +project here for me to create this back + +00:06:04.000 --> 00:06:07.520 +it's made a bunch of actions and + +00:06:07.520 --> 00:06:09.759 +I'm going to show you two things here + +00:06:09.759 --> 00:06:11.440 +one is + +00:06:11.440 --> 00:06:14.639 +since I was trying to leverage org mode + +00:06:14.639 --> 00:06:16.400 +as much as possible + +00:06:16.400 --> 00:06:20.479 +I didn't try to create very clever + +00:06:20.479 --> 00:06:24.080 +operations because org mode has a lot of + +00:06:24.080 --> 00:06:27.199 +very powerful tools already + +00:06:27.199 --> 00:06:29.600 +so there's automations I could I can add + +00:06:29.600 --> 00:06:31.039 +but I thought it might be + +00:06:31.039 --> 00:06:34.240 +better to leave more things into the + +00:06:34.240 --> 00:06:35.680 +hands of the user + +00:06:35.680 --> 00:06:38.000 +so here in this case this test project + +00:06:38.000 --> 00:06:39.199 +we can just archive + +00:06:39.199 --> 00:06:42.479 +right that's just + +00:06:42.479 --> 00:06:45.680 +control c control x control a is the org + +00:06:45.680 --> 00:06:46.840 +archive + +00:06:46.840 --> 00:06:52.000 +action save this + +00:06:52.000 --> 00:06:54.479 +so now if I if we go to the you know + +00:06:54.479 --> 00:06:56.160 +this will create an archive file + +00:06:56.160 --> 00:06:59.440 +which will have this this information + +00:06:59.440 --> 00:07:00.560 +for later perusal + +00:07:00.560 --> 00:07:03.840 +brutal if you're interested that's + +00:07:03.840 --> 00:07:05.360 +that's one thing if we go back to the + +00:07:05.360 --> 00:07:07.199 +agenda for a second + +00:07:07.199 --> 00:07:10.479 +um you can see + +00:07:10.479 --> 00:07:14.080 +these things here uh org so by the way + +00:07:14.080 --> 00:07:16.479 +uh this this parents here with the org + +00:07:16.479 --> 00:07:19.120 +agenda property this is what shows here + +00:07:19.120 --> 00:07:22.319 +right and here if I finish read the gtd + +00:07:22.319 --> 00:07:23.680 +book + +00:07:23.680 --> 00:07:27.680 +I mark it as done now refresh + +00:07:27.680 --> 00:07:31.919 +you'll see that another item shows up + +00:07:31.919 --> 00:07:34.720 +and that is where org edna comes in when + +00:07:34.720 --> 00:07:37.280 +an action is marked as done in a project + +00:07:37.280 --> 00:07:39.759 +the net the next to do action is + +00:07:39.759 --> 00:07:41.360 +automatically marked as next so your + +00:07:41.360 --> 00:07:43.759 +agenda is automatically updated + +00:07:43.759 --> 00:07:46.400 +this was one of the nice things for me + +00:07:46.400 --> 00:07:48.400 +because I didn't want to have to + +00:07:48.400 --> 00:07:50.400 +open my file go find the action mark it + +00:07:50.400 --> 00:07:51.919 +as done find the next one mark it as + +00:07:51.919 --> 00:07:53.440 +next and so forth + +00:07:53.440 --> 00:07:57.280 +so I didn't want to bother with it + +00:07:57.280 --> 00:07:58.960 +um oh actually you know what let me show + +00:07:58.960 --> 00:08:00.960 +you something else + +00:08:00.960 --> 00:08:04.080 +this uh simple + +00:08:04.080 --> 00:08:07.120 +project I don't need this timestamp to + +00:08:07.120 --> 00:08:07.840 +be here but + +00:08:07.840 --> 00:08:09.680 +I like having a capture timestamp here + +00:08:09.680 --> 00:08:13.039 +so I'm gonna make one up + +00:08:13.039 --> 00:08:15.919 +so this is the most convenient thing + +00:08:15.919 --> 00:08:16.879 +that I think + +00:08:16.879 --> 00:08:17.919 +this is one of the most convenient + +00:08:17.919 --> 00:08:20.720 +things that I get out of is binding + +00:08:20.720 --> 00:08:22.960 +the next really convenient thing is the + +00:08:22.960 --> 00:08:24.400 +way this gets processed + +00:08:24.400 --> 00:08:27.440 +let me show you this um + +00:08:27.440 --> 00:08:30.080 +when you process the the entire inbox + +00:08:30.080 --> 00:08:31.440 +what you see is + +00:08:31.440 --> 00:08:33.440 +the items one at a time so you can work + +00:08:33.440 --> 00:08:34.560 +with them + +00:08:34.560 --> 00:08:36.320 +you can see at the bottom where you can + +00:08:36.320 --> 00:08:38.320 +work with them without being distracted + +00:08:38.320 --> 00:08:40.320 +you can see at the bottom the the list + +00:08:40.320 --> 00:08:42.399 +of things you can do which are all the + +00:08:42.399 --> 00:08:45.120 +decisions you can take from gtd right in + +00:08:45.120 --> 00:08:45.760 +this case + +00:08:45.760 --> 00:08:48.959 +this is one to throw out so press t you + +00:08:48.959 --> 00:08:50.959 +have the option to make modifications to + +00:08:50.959 --> 00:08:52.320 +this if you want to + +00:08:52.320 --> 00:08:55.200 +if you have any reason to store it then + +00:08:55.200 --> 00:08:56.240 +you finish editing + +00:08:56.240 --> 00:08:58.160 +you can add a tag if you want to because + +00:08:58.160 --> 00:09:00.080 +this might still be interesting + +00:09:00.080 --> 00:09:02.720 +and then enter and it's done so + +00:09:02.720 --> 00:09:03.920 +important knowledge + +00:09:03.920 --> 00:09:06.959 +I'm going to hit a for archive it + +00:09:06.959 --> 00:09:10.880 +and then um I'm gonna start looking at + +00:09:10.880 --> 00:09:12.160 +orgrom + +00:09:12.160 --> 00:09:20.800 +so this is uh important knowledge + +00:09:20.800 --> 00:09:23.519 +I have to get to this that's it I've + +00:09:23.519 --> 00:09:24.640 +captured it + +00:09:24.640 --> 00:09:27.920 +uh it is done I uh + +00:09:27.920 --> 00:09:30.959 +go back to buffer + +00:09:30.959 --> 00:09:34.080 +and I can market control c then + +00:09:34.080 --> 00:09:35.360 +there's no archiving because this is + +00:09:35.360 --> 00:09:37.279 +just knowledge there's no + +00:09:37.279 --> 00:09:38.800 +tagging it's just knowledge but then the + +00:09:38.800 --> 00:09:40.320 +simple project I want to show you this + +00:09:40.320 --> 00:09:41.040 +because + +00:09:41.040 --> 00:09:42.800 +there's some automation that's pretty + +00:09:42.800 --> 00:09:44.640 +helpful so + +00:09:44.640 --> 00:09:48.839 +in the simple project I have my first + +00:09:48.839 --> 00:09:50.000 +action + +00:09:50.000 --> 00:09:53.920 +second action third action + +00:09:53.920 --> 00:09:55.360 +and you see this is all I'm writing I'm + +00:09:55.360 --> 00:09:56.720 +not adding any of the states any of the + +00:09:56.720 --> 00:10:00.399 +tags they're going to be added by + +00:10:00.399 --> 00:10:04.320 +so um here I can add a + +00:10:04.320 --> 00:10:05.839 +I can add a tag if I want to this + +00:10:05.839 --> 00:10:07.360 +project I don't care + +00:10:07.360 --> 00:10:09.920 +right now but you know I leave the tags + +00:10:09.920 --> 00:10:11.279 +to the user so they're not super + +00:10:11.279 --> 00:10:11.920 +relevant + +00:10:11.920 --> 00:10:15.440 +to me as a package + +00:10:15.440 --> 00:10:19.279 +provider and this is where we are this + +00:10:19.279 --> 00:10:19.600 +is + +00:10:19.600 --> 00:10:21.200 +the whole thing so now if we go back to + +00:10:21.200 --> 00:10:23.519 +the agenda + +00:10:23.519 --> 00:10:27.600 +I have a first action right and + +00:10:27.600 --> 00:10:30.720 +if I go to the actionable file and now + +00:10:30.720 --> 00:10:32.959 +see I have a simple project that has my + +00:10:32.959 --> 00:10:34.079 +first action as next + +00:10:34.079 --> 00:10:36.880 +second option to do third action as to + +00:10:36.880 --> 00:10:38.079 +do + +00:10:38.079 --> 00:10:41.360 +uh so what I've you know + +00:10:41.360 --> 00:10:42.880 +as you can see I hope what I've tried to + +00:10:42.880 --> 00:10:47.200 +do is take all of the kind of + +00:10:47.200 --> 00:10:50.880 +all the tedium out of working with + +00:10:50.880 --> 00:10:52.560 +with emacs and org mode when working + +00:10:52.560 --> 00:10:54.880 +with your actions so you could focus on + +00:10:54.880 --> 00:10:57.200 +what you want to do what you need to do + +00:10:57.200 --> 00:10:58.640 +what you care about and the package + +00:10:58.640 --> 00:10:59.279 +would + +00:10:59.279 --> 00:11:04.880 +take care of the rest so + +00:11:04.880 --> 00:11:06.240 +the last thing I wanted to take a quick + +00:11:06.240 --> 00:11:08.000 +look at was some of the the tests + +00:11:08.000 --> 00:11:08.640 +there's + +00:11:08.640 --> 00:11:11.120 +the code is available here but you can + +00:11:11.120 --> 00:11:13.440 +see the code + +00:11:13.440 --> 00:11:14.800 +you on see the code on github if you + +00:11:14.800 --> 00:11:16.880 +want um + +00:11:16.880 --> 00:11:18.720 +I've had some trouble writing good tests + +00:11:18.720 --> 00:11:20.320 +for this because org mode was written at + +00:11:20.320 --> 00:11:22.000 +a time before + +00:11:22.000 --> 00:11:26.000 +testing was quite as important + +00:11:26.000 --> 00:11:29.200 +I think or valued quite the same way + +00:11:29.200 --> 00:11:31.440 +let's put it this way + +00:11:31.440 --> 00:11:34.320 +and as a result a number of things + +00:11:34.320 --> 00:11:34.959 +actually + +00:11:34.959 --> 00:11:37.200 +it might also be a feature of emacs at + +00:11:37.200 --> 00:11:38.240 +the time I don't know + +00:11:38.240 --> 00:11:40.560 +but a lot of things in order mode aren't + +00:11:40.560 --> 00:11:42.480 +very testable and so + +00:11:42.480 --> 00:11:45.519 +what I ended up doing was just having an + +00:11:45.519 --> 00:11:49.440 +actual directory in which I + +00:11:49.440 --> 00:11:53.360 +actually um with files + +00:11:53.360 --> 00:11:55.279 +right so like I don't have much mocking + +00:11:55.279 --> 00:11:57.120 +I can do I can't just do a bunch of fake + +00:11:57.120 --> 00:11:58.639 +files fake directories + +00:11:58.639 --> 00:12:01.200 +so I actually go through the process + +00:12:01.200 --> 00:12:03.360 +actually create files and then actually + +00:12:03.360 --> 00:12:05.040 +have emacs pointing at this + +00:12:05.040 --> 00:12:08.839 +directory to process and get the + +00:12:08.839 --> 00:12:10.240 +information + +00:12:10.240 --> 00:12:12.240 +so I have to define the key to test that + +00:12:12.240 --> 00:12:13.920 +gets bounded properly + +00:12:13.920 --> 00:12:18.160 +I have to set the capture templates um + +00:12:18.160 --> 00:12:19.839 +other capture templates are how you know + +00:12:19.839 --> 00:12:21.839 +things get added I have a wrapper + +00:12:21.839 --> 00:12:25.600 +control uh or gtd capture essentially is + +00:12:25.600 --> 00:12:27.279 +a wrapper around the capture that + +00:12:27.279 --> 00:12:29.920 +makes sure the inbox is there and then + +00:12:29.920 --> 00:12:32.000 +captures to the inbox + +00:12:32.000 --> 00:12:36.240 +right and + +00:12:36.240 --> 00:12:39.360 +making sure the items show in the agenda + +00:12:39.360 --> 00:12:41.519 +when I'm done with the with processing + +00:12:41.519 --> 00:12:42.639 +was a little bit + +00:12:42.639 --> 00:12:45.519 +tricky I had a bug and I had to to fix + +00:12:45.519 --> 00:12:46.800 +it so I just wrote this + +00:12:46.800 --> 00:12:49.600 +this test but it's uh it's pretty + +00:12:49.600 --> 00:12:50.480 +convenient + +00:12:50.480 --> 00:12:51.839 +now to have that because it gives me a + +00:12:51.839 --> 00:12:54.000 +bunch of sanity so again I have a + +00:12:54.000 --> 00:12:55.040 +capture and this is + +00:12:55.040 --> 00:12:56.000 +I wanted to be able to do this + +00:12:56.000 --> 00:12:58.480 +automatically but ojtd but or capture + +00:12:58.480 --> 00:12:59.680 +itself + +00:12:59.680 --> 00:13:02.079 +is not super testable right now so the + +00:13:02.079 --> 00:13:03.200 +way it's + +00:13:03.200 --> 00:13:04.480 +the way you test it is just by + +00:13:04.480 --> 00:13:07.519 +programmatically calling it which + +00:13:07.519 --> 00:13:09.279 +is not exactly what I wanted because I + +00:13:09.279 --> 00:13:10.639 +wanted something more like + +00:13:10.639 --> 00:13:13.200 +the user action but I'll you know what I + +00:13:13.200 --> 00:13:15.519 +can get + +00:13:15.519 --> 00:13:17.040 +and then I can I'll just insert these + +00:13:17.040 --> 00:13:19.360 +words into the buffer and then + +00:13:19.360 --> 00:13:21.760 +I'll finalize the capture then I have + +00:13:21.760 --> 00:13:23.519 +another I have a test package here + +00:13:23.519 --> 00:13:26.160 +called with simulated input which + +00:13:26.160 --> 00:13:29.920 +um basically calls this and then enters + +00:13:29.920 --> 00:13:33.040 +these uh these user actions right so + +00:13:33.040 --> 00:13:34.800 +like the letter s + +00:13:34.800 --> 00:13:39.040 +control c c and then return and that is + +00:13:39.040 --> 00:13:41.360 +uh you know choosing a single action + +00:13:41.360 --> 00:13:42.480 +then finishing the edit + +00:13:42.480 --> 00:13:45.360 +and then adding zero and not adding tags + +00:13:45.360 --> 00:13:46.480 +you + +00:13:46.480 --> 00:13:48.639 +as you can tell there's a strong layer + +00:13:48.639 --> 00:13:50.320 +of disconnect between the tests + +00:13:50.320 --> 00:13:53.760 +and what they represent that's a work in + +00:13:53.760 --> 00:13:56.560 +progress + +00:13:56.560 --> 00:13:59.680 +um so I have like four tests + +00:13:59.680 --> 00:14:02.320 +it's not a lot but I want to I intend to + +00:14:02.320 --> 00:14:03.680 +add more as I keep on adding more + +00:14:03.680 --> 00:14:05.040 +behavior + +00:14:05.040 --> 00:14:09.519 +and I would like this to be eventually + +00:14:09.519 --> 00:14:14.320 +a sane starting point for gt + +00:14:14.320 --> 00:14:16.079 +there's there's a lot of people like + +00:14:16.079 --> 00:14:18.720 +like andre I like reiner like + +00:14:18.720 --> 00:14:20.959 +I mean if you search for org mode and + +00:14:20.959 --> 00:14:22.160 +gtd you'll find + +00:14:22.160 --> 00:14:25.279 +a lot of blog entries a lot of + +00:14:25.279 --> 00:14:27.600 +entries a lot of articles that explain + +00:14:27.600 --> 00:14:29.360 +how to connect it together how to think + +00:14:29.360 --> 00:14:31.199 +that way how to use all the tools that + +00:14:31.199 --> 00:14:34.880 +orgmod makes available + +00:14:34.880 --> 00:14:38.399 +and hopefully this package is a way to + +00:14:38.399 --> 00:14:40.320 +get started without having to write too + +00:14:40.320 --> 00:14:41.040 +much + +00:14:41.040 --> 00:14:45.920 +of your own code um + +00:14:45.920 --> 00:14:47.279 +then eventually you can move away from + +00:14:47.279 --> 00:14:48.720 +the package if you want if you realize + +00:14:48.720 --> 00:14:50.000 +that you are developing different + +00:14:50.000 --> 00:14:52.000 +opinions and you don't want to + +00:14:52.000 --> 00:14:54.160 +if gtd doesn't work this way for you if + +00:14:54.160 --> 00:14:55.519 +you have a different way + +00:14:55.519 --> 00:14:57.839 +it is a better fit for the way you want + +00:14:57.839 --> 00:14:59.279 +to organize your life + +00:14:59.279 --> 00:15:02.720 +then you know move away from the package + +00:15:02.720 --> 00:15:05.920 +in the meanwhile I welcome all thoughts + +00:15:05.920 --> 00:15:07.839 +I welcome contributions I welcome + +00:15:07.839 --> 00:15:10.079 +questions bug reports everything + +00:15:10.079 --> 00:15:13.920 +so you know come say hi try the package + +00:15:13.920 --> 00:15:17.040 +and uh yeah see you + +00:15:17.040 --> 00:15:20.560 +I'll see you online diff --git a/2020/subtitles/emacsconf-2020--12-one-big-ass-org-file-or-multiple-tiny-ones-finally-the-end-of-the-debate--leo-vivier-autogen.vtt b/2020/subtitles/emacsconf-2020--12-one-big-ass-org-file-or-multiple-tiny-ones-finally-the-end-of-the-debate--leo-vivier-autogen.vtt new file mode 100644 index 00000000..dbced2db --- /dev/null +++ b/2020/subtitles/emacsconf-2020--12-one-big-ass-org-file-or-multiple-tiny-ones-finally-the-end-of-the-debate--leo-vivier-autogen.vtt @@ -0,0 +1,1447 @@ +WEBVTT + +00:00:00.240 --> 00:00:01.520 +I mean we are ahead of the schedule a + +00:00:01.520 --> 00:00:03.679 +little bit but I mean we also was a + +00:00:03.679 --> 00:00:05.680 +little bit earlier in the day + +00:00:05.680 --> 00:00:09.040 +so yeah yeah I'd say that's fine go for + +00:00:09.040 --> 00:00:10.800 +it take it away + +00:00:10.800 --> 00:00:14.240 +sure thank you so am I live already + +00:00:14.240 --> 00:00:16.640 +you are now unmuted um yep your life + +00:00:16.640 --> 00:00:17.359 +hello + +00:00:17.359 --> 00:00:18.880 +spell it so I'll just start the timer to + +00:00:18.880 --> 00:00:20.720 +make sure that I don't go overboard + +00:00:20.720 --> 00:00:22.720 +all right so you are now muted okay good + +00:00:22.720 --> 00:00:24.160 +to go now so + +00:00:24.160 --> 00:00:26.960 +hello again everyone so I hope you had + +00:00:26.960 --> 00:00:28.240 +well quite a lot of talks + +00:00:28.240 --> 00:00:30.880 +ever since the last one I did and all + +00:00:30.880 --> 00:00:32.000 +more interesting + +00:00:32.000 --> 00:00:35.040 +uh one after the other so um + +00:00:35.040 --> 00:00:36.559 +you know I'm a bit in a bit of a weird + +00:00:36.559 --> 00:00:38.239 +spot right now because I'm supposed to + +00:00:38.239 --> 00:00:39.760 +be presenting to you as you can see on + +00:00:39.760 --> 00:00:40.239 +my screen + +00:00:40.239 --> 00:00:42.879 +one big-ass awk file multiple tiny ones + +00:00:42.879 --> 00:00:44.960 +finally the end of the debate + +00:00:44.960 --> 00:00:48.160 +and it sounds about as clickbaity + +00:00:48.160 --> 00:00:49.760 +as you can possibly get with those + +00:00:49.760 --> 00:00:51.280 +topics and by the way + +00:00:51.280 --> 00:00:54.000 +uh credit where credit is due the title + +00:00:54.000 --> 00:00:55.760 +is not mine it's actually from bastian + +00:00:55.760 --> 00:00:57.039 +gary the current old + +00:00:57.039 --> 00:01:00.719 +maintainer and yeah I wanted to + +00:01:00.719 --> 00:01:03.199 +talk to you a little bit today about + +00:01:03.199 --> 00:01:04.879 +this question because + +00:01:04.879 --> 00:01:07.600 +if you are used to going on our slash + +00:01:07.600 --> 00:01:09.040 +emacs you know the subreddit that we + +00:01:09.040 --> 00:01:09.600 +have + +00:01:09.600 --> 00:01:11.840 +if you go on I can use often you know + +00:01:11.840 --> 00:01:13.200 +it's a question that + +00:01:13.200 --> 00:01:16.000 +you see pop-up every once in a while + +00:01:16.000 --> 00:01:17.520 +should I be using + +00:01:17.520 --> 00:01:20.640 +one big file or should I be using + +00:01:20.640 --> 00:01:24.159 +a lot of tiny files and I believe you + +00:01:24.159 --> 00:01:24.799 +know + +00:01:24.799 --> 00:01:27.600 +we've got defenders on both sides if I + +00:01:27.600 --> 00:01:29.520 +just show you one examples + +00:01:29.520 --> 00:01:32.479 +so we have carl voigt okay so he's one + +00:01:32.479 --> 00:01:35.280 +of the organizers for the conference + +00:01:35.280 --> 00:01:37.920 +he hears the guy who probably has the + +00:01:37.920 --> 00:01:40.000 +biggest augment files + +00:01:40.000 --> 00:01:42.000 +right now in all the people I know and + +00:01:42.000 --> 00:01:43.759 +god knows I know plenty of people use + +00:01:43.759 --> 00:01:44.479 +old mode + +00:01:44.479 --> 00:01:46.880 +but if you just look at this line I hope + +00:01:46.880 --> 00:01:48.320 +it's not too small you just + +00:01:48.320 --> 00:01:51.360 +make it a little larger but + +00:01:51.360 --> 00:01:56.719 +carl basically has a file with 126 + +00:01:56.719 --> 00:02:01.759 +000 lines and I'm just going to pause + +00:02:01.759 --> 00:02:04.560 +and try to have you imagine how large a + +00:02:04.560 --> 00:02:06.399 +file it actually is + +00:02:06.399 --> 00:02:08.399 +just think about all of these lines + +00:02:08.399 --> 00:02:10.000 +being tasked in your days + +00:02:10.000 --> 00:02:12.080 +think about all those lines being about + +00:02:12.080 --> 00:02:13.200 +little thoughts + +00:02:13.200 --> 00:02:14.400 +you know that you've had throughout the + +00:02:14.400 --> 00:02:17.200 +day or project that you were working on + +00:02:17.200 --> 00:02:19.680 +and it's massive and you know one of the + +00:02:19.680 --> 00:02:20.720 +problem that + +00:02:20.720 --> 00:02:23.920 +uh calvoit actually approaches on + +00:02:23.920 --> 00:02:27.680 +this topic is that it takes him roughly + +00:02:27.680 --> 00:02:30.160 +20 seconds to get his old agenda going + +00:02:30.160 --> 00:02:32.400 +which is a massive amount of time + +00:02:32.400 --> 00:02:35.680 +I mean we have very fast computers now + +00:02:35.680 --> 00:02:37.720 +you know ever since e-max was created in + +00:02:37.720 --> 00:02:39.200 +1976 + +00:02:39.200 --> 00:02:42.319 +computers I have no idea how much faster + +00:02:42.319 --> 00:02:43.440 +they've gotten + +00:02:43.440 --> 00:02:47.760 +and yet you know for earth 1000 lines + +00:02:47.760 --> 00:02:49.599 +emac seems to be choking and it's + +00:02:49.599 --> 00:02:51.120 +certainly not reasonable in a way to + +00:02:51.120 --> 00:02:52.720 +have to wait 20 seconds + +00:02:52.720 --> 00:02:55.360 +just for your entire file to be passed + +00:02:55.360 --> 00:02:57.040 +so basically what I want to do + +00:02:57.040 --> 00:02:58.480 +and by the way I forgot to do the + +00:02:58.480 --> 00:03:00.879 +presentation but I'm leova I did this + +00:03:00.879 --> 00:03:02.879 +before for those who were around + +00:03:02.879 --> 00:03:05.519 +and I um help maintain a software which + +00:03:05.519 --> 00:03:06.640 +is called orgrom + +00:03:06.640 --> 00:03:08.560 +and that's the expertise that I have on + +00:03:08.560 --> 00:03:09.840 +the topic + +00:03:09.840 --> 00:03:11.760 +actually if you go online I do have a + +00:03:11.760 --> 00:03:13.599 +github page I will make sure that you + +00:03:13.599 --> 00:03:15.440 +have all the links available afterwards + +00:03:15.440 --> 00:03:18.640 +but I do publish my init files + +00:03:18.640 --> 00:03:20.720 +and you can see if you scroll at the + +00:03:20.720 --> 00:03:22.319 +bottom I have a little demonstration + +00:03:22.319 --> 00:03:23.200 +which shows you + +00:03:23.200 --> 00:03:25.519 +the fancy things that I can do with my + +00:03:25.519 --> 00:03:27.440 +old mood setup and that might be even + +00:03:27.440 --> 00:03:28.159 +interesting + +00:03:28.159 --> 00:03:30.720 +in lights of the talk you've just had + +00:03:30.720 --> 00:03:32.319 +about gtd stuff because + +00:03:32.319 --> 00:03:34.080 +the first one is about how I end all my + +00:03:34.080 --> 00:03:36.159 +projects the second one is about + +00:03:36.159 --> 00:03:39.680 +the flow from a task uh as I work on it + +00:03:39.680 --> 00:03:40.000 +so + +00:03:40.000 --> 00:03:41.519 +I won't spend too much time on this but + +00:03:41.519 --> 00:03:43.120 +basically that's my expertise + +00:03:43.120 --> 00:03:45.440 +I have spent eight years working with + +00:03:45.440 --> 00:03:46.959 +working with org mode + +00:03:46.959 --> 00:03:48.959 +three of them actually thinking about + +00:03:48.959 --> 00:03:50.720 +writing packages + +00:03:50.720 --> 00:03:54.080 +and the thing is if I go into a little + +00:03:54.080 --> 00:03:55.680 +bit of details and obviously it's only a + +00:03:55.680 --> 00:03:57.760 +lighting talk so I won't have time to + +00:03:57.760 --> 00:04:00.720 +actually go really in depth about it but + +00:04:00.720 --> 00:04:01.840 +there is something + +00:04:01.840 --> 00:04:03.599 +in the ultimate libraries which is + +00:04:03.599 --> 00:04:05.200 +called org elements + +00:04:05.200 --> 00:04:07.000 +and you have the name right there org + +00:04:07.000 --> 00:04:08.319 +element.el + +00:04:08.319 --> 00:04:11.439 +dot el being for e-lisp file and as you + +00:04:11.439 --> 00:04:12.319 +can see + +00:04:12.319 --> 00:04:14.799 +the page it's on the work wiki so it's + +00:04:14.799 --> 00:04:16.239 +accessible by everyone + +00:04:16.239 --> 00:04:19.280 +but it's basically the api that + +00:04:19.280 --> 00:04:23.759 +org mode uses to pass all mode files + +00:04:23.759 --> 00:04:26.400 +so for those who don't know passing + +00:04:26.400 --> 00:04:27.199 +means basically + +00:04:27.199 --> 00:04:29.360 +checking a file checking all the content + +00:04:29.360 --> 00:04:30.880 +of the file and extracting all the + +00:04:30.880 --> 00:04:32.880 +information that we need from that file + +00:04:32.880 --> 00:04:34.960 +and as you can imagine you all have + +00:04:34.960 --> 00:04:36.560 +augmented files in your mind + +00:04:36.560 --> 00:04:38.240 +well you know they can be fairly complex + +00:04:38.240 --> 00:04:39.840 +you know you can have properties + +00:04:39.840 --> 00:04:41.759 +you can have contextual information like + +00:04:41.759 --> 00:04:43.040 +if you write a line + +00:04:43.040 --> 00:04:45.199 +which starts at column zero which means + +00:04:45.199 --> 00:04:46.560 +at the left + +00:04:46.560 --> 00:04:48.000 +you know it doesn't have the same + +00:04:48.000 --> 00:04:49.680 +meaning whether or not it is + +00:04:49.680 --> 00:04:52.639 +before the beginning of a headline or if + +00:04:52.639 --> 00:04:54.160 +it is after the beginning of a red line + +00:04:54.160 --> 00:04:55.199 +you know it's going to be + +00:04:55.199 --> 00:04:57.759 +relatively different hierarchically + +00:04:57.759 --> 00:04:58.960 +speaking + +00:04:58.960 --> 00:05:01.759 +and so the problem when it comes to the + +00:05:01.759 --> 00:05:02.639 +question of + +00:05:02.639 --> 00:05:05.759 +many files versus one big file or + +00:05:05.759 --> 00:05:08.560 +few big files is that we always have to + +00:05:08.560 --> 00:05:09.600 +keep in mind + +00:05:09.600 --> 00:05:12.880 +what org elements want you to do + +00:05:12.880 --> 00:05:15.680 +and the thing is there are plenty of + +00:05:15.680 --> 00:05:17.440 +problems when it comes to passing file + +00:05:17.440 --> 00:05:18.400 +the first one + +00:05:18.400 --> 00:05:21.360 +being obviously that emacs is a single + +00:05:21.360 --> 00:05:22.160 +thread + +00:05:22.160 --> 00:05:24.880 +process or has some threading + +00:05:24.880 --> 00:05:26.400 +capabilities we're not going to go into + +00:05:26.400 --> 00:05:28.639 +the details right now that's not my goal + +00:05:28.639 --> 00:05:32.400 +but it makes it incredibly hard to + +00:05:32.400 --> 00:05:35.919 +parallelize uh passing processes as + +00:05:35.919 --> 00:05:39.280 +we currently with the current technology + +00:05:39.280 --> 00:05:42.320 +and so you'd have to imagine that if you + +00:05:42.320 --> 00:05:44.080 +have a very large files if you go back + +00:05:44.080 --> 00:05:46.479 +to the example of carl voice from before + +00:05:46.479 --> 00:05:49.199 +100 000 lines that means that you have + +00:05:49.199 --> 00:05:50.000 +to scan + +00:05:50.000 --> 00:05:52.320 +through every single line basically + +00:05:52.320 --> 00:05:53.759 +because sometimes let's just say that + +00:05:53.759 --> 00:05:56.080 +you have a property drawer for instance + +00:05:56.080 --> 00:05:59.440 +which tells you oh okay uh this tree + +00:05:59.440 --> 00:06:03.520 +has the tag foo so the problem is there + +00:06:03.520 --> 00:06:05.120 +are multiple ways for you + +00:06:05.120 --> 00:06:08.720 +to define a tag okay so you can use the + +00:06:08.720 --> 00:06:11.840 +usual way which is about wrapping in + +00:06:11.840 --> 00:06:14.000 +columns the tag at the end of a heading + +00:06:14.000 --> 00:06:16.160 +so for instance if I I'm not going to + +00:06:16.160 --> 00:06:17.360 +switch to emac that's going to waste too + +00:06:17.360 --> 00:06:18.240 +much time + +00:06:18.240 --> 00:06:21.039 +but that's one way to say your time but + +00:06:21.039 --> 00:06:21.520 +say + +00:06:21.520 --> 00:06:23.520 +you have tag inheritance which means + +00:06:23.520 --> 00:06:25.360 +that when you have a parent with a tag + +00:06:25.360 --> 00:06:28.160 +you also want the child to inherit the + +00:06:28.160 --> 00:06:29.520 +tag so if you have + +00:06:29.520 --> 00:06:32.400 +first heading with the typhoo you have + +00:06:32.400 --> 00:06:33.680 +the first subheading + +00:06:33.680 --> 00:06:37.520 +and the tag foo is implied now imagine + +00:06:37.520 --> 00:06:39.680 +having to do that with a file that is + +00:06:39.680 --> 00:06:41.039 +completely nested + +00:06:41.039 --> 00:06:44.160 +a file that has maybe 9 10 + +00:06:44.160 --> 00:06:47.280 +11 levels of depth to it + +00:06:47.280 --> 00:06:49.039 +it's mind-bogglingly complicated for the + +00:06:49.039 --> 00:06:51.039 +software to do that knowing that I've + +00:06:51.039 --> 00:06:52.639 +told you about tags + +00:06:52.639 --> 00:06:55.919 +but any property can be inheritable + +00:06:55.919 --> 00:06:58.639 +anything like priorities even though why + +00:06:58.639 --> 00:07:00.240 +would you do this + +00:07:00.240 --> 00:07:03.759 +you can have groups you can all this and + +00:07:03.759 --> 00:07:05.599 +as someone who went through the trouble + +00:07:05.599 --> 00:07:07.199 +of optimizing his old agenda so + +00:07:07.199 --> 00:07:08.560 +basically if we go back to the + +00:07:08.560 --> 00:07:11.280 +gifts gifs oh god we've already had this + +00:07:11.280 --> 00:07:12.160 +discussion + +00:07:12.160 --> 00:07:14.479 +between the git and magit and now I've + +00:07:14.479 --> 00:07:16.400 +started jeff and gif and I only have one + +00:07:16.400 --> 00:07:18.080 +more minute left to do so so let's just + +00:07:18.080 --> 00:07:19.599 +say I'm going to say gif + +00:07:19.599 --> 00:07:23.599 +just to spice people so if you go on + +00:07:23.599 --> 00:07:26.880 +the way I organize my agenda what I did + +00:07:26.880 --> 00:07:29.120 +in order to keep my agenda build time + +00:07:29.120 --> 00:07:30.960 +under two seconds + +00:07:30.960 --> 00:07:33.440 +is that I've rewritten a whole lot of + +00:07:33.440 --> 00:07:35.520 +codes to be able to pass my organ gender + +00:07:35.520 --> 00:07:36.560 +files + +00:07:36.560 --> 00:07:40.080 +so the thing is I'm going to be talking + +00:07:40.080 --> 00:07:41.360 +more about this later + +00:07:41.360 --> 00:07:43.440 +I only have let's say one minutes to + +00:07:43.440 --> 00:07:44.479 +conclude + +00:07:44.479 --> 00:07:47.440 +so as you've gathered I'm not going to + +00:07:47.440 --> 00:07:48.479 +be giving you the answer + +00:07:48.479 --> 00:07:51.039 +right now I'm going to be talking about + +00:07:51.039 --> 00:07:53.440 +orgrum a little later which is about + +00:07:53.440 --> 00:07:55.680 +following the principle of having many + +00:07:55.680 --> 00:07:57.759 +small files + +00:07:57.759 --> 00:08:01.120 +but as someone who has been using + +00:08:01.120 --> 00:08:02.960 +one large file to manage my life you + +00:08:02.960 --> 00:08:04.879 +know I'm sitting on the fence + +00:08:04.879 --> 00:08:08.319 +I do not know which one is the best + +00:08:08.319 --> 00:08:10.560 +but I hope that my presentation has + +00:08:10.560 --> 00:08:12.240 +given you a little id + +00:08:12.240 --> 00:08:15.199 +of what goes on behind the principles + +00:08:15.199 --> 00:08:15.520 +and + +00:08:15.520 --> 00:08:16.560 +you also need to think about the + +00:08:16.560 --> 00:08:18.560 +philosophy behind the organization of + +00:08:18.560 --> 00:08:19.120 +your notes + +00:08:19.120 --> 00:08:21.039 +but I hope to be approaching this topic + +00:08:21.039 --> 00:08:23.280 +with you in about + +00:08:23.280 --> 00:08:25.360 +two hours or so maybe one hour actually + +00:08:25.360 --> 00:08:27.520 +so I'm actually finished I've decided to + +00:08:27.520 --> 00:08:28.960 +leave you two minutes of questions + +00:08:28.960 --> 00:08:31.520 +so uh if someone could feed me the + +00:08:31.520 --> 00:08:32.880 +question that might be best + +00:08:32.880 --> 00:08:34.399 +because I don't want oh actually I can + +00:08:34.399 --> 00:08:36.240 +just open the year + +00:08:36.240 --> 00:08:39.919 +I can just open it give me a second okay + +00:08:39.919 --> 00:08:40.800 +ah + +00:08:40.800 --> 00:08:43.039 +just loading up huh I might stop showing + +00:08:43.039 --> 00:08:43.839 +my screen + +00:08:43.839 --> 00:08:46.959 +that might make it easier so I mean if + +00:08:46.959 --> 00:08:47.519 +you can make + +00:08:47.519 --> 00:08:49.360 +myself big now on the screen that would + +00:08:49.360 --> 00:08:52.000 +be splendid yeah sure + +00:08:52.000 --> 00:08:55.839 +thank you so uh where are we + +00:08:55.839 --> 00:08:58.720 +question 12. okay so what's better one + +00:08:58.720 --> 00:09:00.160 +big file + +00:09:00.160 --> 00:09:02.160 +I did is it did a job to tell me that I + +00:09:02.160 --> 00:09:03.120 +haven't answered the question because + +00:09:03.120 --> 00:09:04.240 +someone just + +00:09:04.240 --> 00:09:06.320 +asked me the question well personally if + +00:09:06.320 --> 00:09:08.080 +I were to give you a quick answer in + +00:09:08.080 --> 00:09:08.560 +like + +00:09:08.560 --> 00:09:11.600 +20 seconds personally I think it's a + +00:09:11.600 --> 00:09:13.920 +question that is contextually based + +00:09:13.920 --> 00:09:15.680 +do you want something that is efficient + +00:09:15.680 --> 00:09:17.839 +as far as optimization is concerned + +00:09:17.839 --> 00:09:21.200 +then you need to think about + +00:09:21.200 --> 00:09:23.440 +this and personally for all the + +00:09:23.440 --> 00:09:24.640 +organization that I do + +00:09:24.640 --> 00:09:26.640 +all this stuff all the to-do's that I + +00:09:26.640 --> 00:09:27.760 +handle + +00:09:27.760 --> 00:09:30.080 +I like to do this in one simple big file + +00:09:30.080 --> 00:09:31.519 +because you benefit from all the + +00:09:31.519 --> 00:09:33.760 +refiling capabilities of log mode + +00:09:33.760 --> 00:09:36.320 +so I would do that but for knowledge + +00:09:36.320 --> 00:09:37.200 +management + +00:09:37.200 --> 00:09:40.080 +for note-taking and all this well I'd + +00:09:40.080 --> 00:09:41.279 +much rather follow the + +00:09:41.279 --> 00:09:42.959 +orgrom way of doing things which is + +00:09:42.959 --> 00:09:44.480 +about having many + +00:09:44.480 --> 00:09:48.240 +small files okay I'm not getting any + +00:09:48.240 --> 00:09:50.000 +more questions I'm not sure if there is + +00:09:50.000 --> 00:09:52.080 +one on ise that could be fed to me + +00:09:52.080 --> 00:09:53.040 +otherwise I'm + +00:09:53.040 --> 00:09:56.399 +happy to to uh pass over to the next uh + +00:09:56.399 --> 00:09:57.040 +speaker + +00:09:57.040 --> 00:09:59.360 +and by the way just before I finish your + +00:09:59.360 --> 00:10:01.360 +world is a lie it's not a three-piece + +00:10:01.360 --> 00:10:04.399 +suit I'm wearing jeans below so I hope + +00:10:04.399 --> 00:10:06.520 +that satisfies your curiosity + +00:10:06.520 --> 00:10:10.640 +[Music] + +00:10:10.640 --> 00:10:12.640 +okay there's one more question appearing + +00:10:12.640 --> 00:10:15.040 +but otherwise one big file to have + +00:10:15.040 --> 00:10:17.680 +everything so I'm putting you on the + +00:10:17.680 --> 00:10:19.760 +spot I believe it was such a short talk + +00:10:19.760 --> 00:10:21.040 +you know the problem is + +00:10:21.040 --> 00:10:23.600 +I just wanted to give you a little + +00:10:23.600 --> 00:10:24.720 +answer + +00:10:24.720 --> 00:10:26.959 +a little you know path of thinking on + +00:10:26.959 --> 00:10:27.920 +this topic + +00:10:27.920 --> 00:10:29.839 +but obviously it's a topic I could be + +00:10:29.839 --> 00:10:31.600 +spending 40 minutes on but + +00:10:31.600 --> 00:10:33.200 +I'm going to be drained you're going to + +00:10:33.200 --> 00:10:35.120 +be drained nobody's going to be happy if + +00:10:35.120 --> 00:10:35.680 +I do this + +00:10:35.680 --> 00:10:39.440 +so + +00:10:39.440 --> 00:10:41.200 +and someone asked me if I switch between + +00:10:41.200 --> 00:10:42.880 +british and french accents + +00:10:42.880 --> 00:10:46.560 +so a little a little secret for you um + +00:10:46.560 --> 00:10:48.480 +when I'm stressed I tend to relate to a + +00:10:48.480 --> 00:10:49.760 +french accent + +00:10:49.760 --> 00:10:53.760 +so you can measure the amount of stress + +00:10:53.760 --> 00:10:56.160 +that I'm feeling during this talk + +00:10:56.160 --> 00:10:58.880 +with the amount of h's that I drop and + +00:10:58.880 --> 00:11:00.560 +the amount of uh + +00:11:00.560 --> 00:11:02.720 +sheer fright that you can see sometimes + +00:11:02.720 --> 00:11:04.399 +in my eyes when I'm thinking about what + +00:11:04.399 --> 00:11:08.240 +to say next + +00:11:08.240 --> 00:11:10.880 +all right sir so I mean do you believe + +00:11:10.880 --> 00:11:11.360 +we can + +00:11:11.360 --> 00:11:14.240 +leave it at that and uh I'll be you + +00:11:14.240 --> 00:11:15.519 +people will see plenty more with me + +00:11:15.519 --> 00:11:17.040 +later on anyway + +00:11:17.040 --> 00:11:20.000 +right um so looking at the schedule I + +00:11:20.000 --> 00:11:20.640 +think + +00:11:20.640 --> 00:11:23.920 +your talk has until like 202 meaning + +00:11:23.920 --> 00:11:27.120 +like five or six minutes from now oh + +00:11:27.120 --> 00:11:28.000 +right + +00:11:28.000 --> 00:11:30.000 +yeah so if you do like to take like one + +00:11:30.000 --> 00:11:31.680 +or two questions to add two more + +00:11:31.680 --> 00:11:33.920 +questions by all means + +00:11:33.920 --> 00:11:37.040 +okay so uh someone has asked me what is + +00:11:37.040 --> 00:11:38.320 +the emacs icon + +00:11:38.320 --> 00:11:40.640 +icon sorry see another french accent + +00:11:40.640 --> 00:11:42.880 +here uh in my status bar + +00:11:42.880 --> 00:11:44.880 +uh oh sorry I'm not sharing anymore uh I + +00:11:44.880 --> 00:11:46.640 +might just share again just so that + +00:11:46.640 --> 00:11:49.200 +everyone can catch a glimpse of that + +00:11:49.200 --> 00:11:53.120 +uh there we go allow + +00:11:53.120 --> 00:11:54.880 +so it should be so if you could make me + +00:11:54.880 --> 00:11:56.240 +small again I'm in I'm not sure if it's + +00:11:56.240 --> 00:11:56.959 +going to do it + +00:11:56.959 --> 00:12:00.480 +by itself but I do have a little icon + +00:12:00.480 --> 00:12:01.839 +here in my status bar + +00:12:01.839 --> 00:12:04.480 +which is basically a way to interact + +00:12:04.480 --> 00:12:05.760 +with all protocol + +00:12:05.760 --> 00:12:07.279 +uh I'm not going to look for it right + +00:12:07.279 --> 00:12:09.120 +now but it's uh + +00:12:09.120 --> 00:12:10.800 +it's a browser extension that is + +00:12:10.800 --> 00:12:12.399 +developed by one of my friends + +00:12:12.399 --> 00:12:15.680 +over at ranger whose name is v phone and + +00:12:15.680 --> 00:12:16.160 +uh + +00:12:16.160 --> 00:12:18.240 +it's very useful I'm someone who uses a + +00:12:18.240 --> 00:12:19.680 +lot of uh + +00:12:19.680 --> 00:12:22.320 +of uh all protocols and by the way I + +00:12:22.320 --> 00:12:23.040 +used to teach + +00:12:23.040 --> 00:12:25.279 +english okay to high schoolers and they + +00:12:25.279 --> 00:12:27.279 +were supremely worried + +00:12:27.279 --> 00:12:29.600 +when I show them my status line and they + +00:12:29.600 --> 00:12:30.800 +so kill + +00:12:30.800 --> 00:12:34.000 +and explore in my status line so as + +00:12:34.000 --> 00:12:36.560 +fellow emacs users you know that + +00:12:36.560 --> 00:12:37.839 +obviously kill + +00:12:37.839 --> 00:12:40.880 +means to kill a selection of text and + +00:12:40.880 --> 00:12:44.320 +keep it inside your clipboard + +00:12:44.320 --> 00:12:47.279 +but for my students who you know they + +00:12:47.279 --> 00:12:48.320 +were very worried + +00:12:48.320 --> 00:12:51.600 +about what their professor was up to + +00:12:51.600 --> 00:12:53.600 +doing his nights + +00:12:53.600 --> 00:12:55.120 +so let's see if we've got more questions + +00:12:55.120 --> 00:12:56.560 +so I'm showing you the questions on the + +00:12:56.560 --> 00:12:57.920 +rainbow so let's see if + +00:12:57.920 --> 00:13:00.560 +we've got more so people are posting a + +00:13:00.560 --> 00:13:01.920 +lot of questions now + +00:13:01.920 --> 00:13:03.920 +so how do you feel about archiving files + +00:13:03.920 --> 00:13:06.399 +in old mode and how can that work in + +00:13:06.399 --> 00:13:09.360 +so one of the thing when we think about + +00:13:09.360 --> 00:13:10.240 +optimization + +00:13:10.240 --> 00:13:13.920 +is yes archiving done trees + +00:13:13.920 --> 00:13:16.240 +is a good idea because it means that if + +00:13:16.240 --> 00:13:17.920 +we go back to the org element the way it + +00:13:17.920 --> 00:13:18.720 +works + +00:13:18.720 --> 00:13:20.399 +and we'll get into technical details + +00:13:20.399 --> 00:13:22.079 +afterwards I'm giving a presentation + +00:13:22.079 --> 00:13:24.079 +about all grown technical suspect + +00:13:24.079 --> 00:13:26.880 +aspects sorry so I'll have a chance to + +00:13:26.880 --> 00:13:28.399 +expand a little more on this + +00:13:28.399 --> 00:13:31.360 +but basically all elements need to uh + +00:13:31.360 --> 00:13:32.160 +every time + +00:13:32.160 --> 00:13:35.279 +it sees a to do it has to consider it + +00:13:35.279 --> 00:13:38.320 +even though it is a done to do why + +00:13:38.320 --> 00:13:40.000 +because let's say for instance that in + +00:13:40.000 --> 00:13:41.839 +your agenda you want to activate + +00:13:41.839 --> 00:13:45.519 +log mode which is going to show the + +00:13:45.519 --> 00:13:48.959 +tasks which are done now you could be + +00:13:48.959 --> 00:13:49.519 +clever + +00:13:49.519 --> 00:13:51.440 +and say oh okay the old agenda does not + +00:13:51.440 --> 00:13:53.360 +need to show don items so it's not going + +00:13:53.360 --> 00:13:54.880 +to look for them + +00:13:54.880 --> 00:13:56.959 +but the problem is that all elements is + +00:13:56.959 --> 00:13:58.720 +always called it always needs to pass + +00:13:58.720 --> 00:13:59.519 +the buffer + +00:13:59.519 --> 00:14:01.839 +you know uh nicodego as you who is the + +00:14:01.839 --> 00:14:03.519 +french developer who's worked a whole + +00:14:03.519 --> 00:14:05.040 +lot on all elements + +00:14:05.040 --> 00:14:07.440 +has gone through a lot of trouble to + +00:14:07.440 --> 00:14:08.399 +optimize all + +00:14:08.399 --> 00:14:11.600 +elements but the problem is + +00:14:11.600 --> 00:14:13.279 +there's just so much that we can do with + +00:14:13.279 --> 00:14:14.720 +a concurrent process + +00:14:14.720 --> 00:14:18.560 +and right now it leaves somewhat + +00:14:18.560 --> 00:14:21.120 +uh you know things to be desired but + +00:14:21.120 --> 00:14:22.079 +we're working on it + +00:14:22.079 --> 00:14:24.800 +and one more time I feel like I spent + +00:14:24.800 --> 00:14:25.839 +half of this talk + +00:14:25.839 --> 00:14:28.000 +teasing my next talks but I'll be + +00:14:28.000 --> 00:14:29.360 +talking more about this + +00:14:29.360 --> 00:14:31.279 +in my future talks in about one to two + +00:14:31.279 --> 00:14:32.639 +hours + +00:14:32.639 --> 00:14:34.959 +so continuing with questions how big are + +00:14:34.959 --> 00:14:36.079 +my org files + +00:14:36.079 --> 00:14:37.760 +so in the background I'm just going to + +00:14:37.760 --> 00:14:39.839 +check how many lines I have in my main + +00:14:39.839 --> 00:14:40.720 +file + +00:14:40.720 --> 00:14:42.959 +so in my own file so the one I told you + +00:14:42.959 --> 00:14:44.079 +about where I keep all + +00:14:44.079 --> 00:14:47.279 +my to do gtd stuff I have + +00:14:47.279 --> 00:14:50.720 +38 000 lines which is + +00:14:50.720 --> 00:14:54.000 +you know it's sizable definitely + +00:14:54.000 --> 00:14:57.040 +but I do archive a lot of stuff + +00:14:57.040 --> 00:14:58.480 +so that might be a slight difference + +00:14:58.480 --> 00:15:00.880 +between uh my myself and carl voight + +00:15:00.880 --> 00:15:02.079 +even though I don't remember if they + +00:15:02.079 --> 00:15:04.880 +actually archive stuff + +00:15:04.880 --> 00:15:06.639 +so does it not consume more resources + +00:15:06.639 --> 00:15:08.480 +and time to load multiple files + +00:15:08.480 --> 00:15:10.839 +files than a large file or the same + +00:15:10.839 --> 00:15:12.560 +content now + +00:15:12.560 --> 00:15:15.839 +theoretically yes having many files + +00:15:15.839 --> 00:15:19.279 +open concurrently is slightly slower + +00:15:19.279 --> 00:15:22.240 +than having one main file opened + +00:15:22.240 --> 00:15:24.160 +now the problem is for those of you who + +00:15:24.160 --> 00:15:25.279 +have large files + +00:15:25.279 --> 00:15:27.199 +you may have noticed that when you are + +00:15:27.199 --> 00:15:29.360 +scrolling in a very large file + +00:15:29.360 --> 00:15:32.560 +it starts taking quite a bit of time why + +00:15:32.560 --> 00:15:34.480 +it's because you know in old mode you + +00:15:34.480 --> 00:15:35.920 +have a lot of content + +00:15:35.920 --> 00:15:38.959 +that is hidden so when you have + +00:15:38.959 --> 00:15:40.959 +the view mode which hides as much stuff + +00:15:40.959 --> 00:15:43.040 +as possible means meaning that you only + +00:15:43.040 --> 00:15:43.600 +see + +00:15:43.600 --> 00:15:45.360 +the top heading and I'm checking the + +00:15:45.360 --> 00:15:46.880 +time I mean don't worry I'm I'm finished + +00:15:46.880 --> 00:15:50.240 +on this one + +00:15:50.240 --> 00:15:52.160 +when you're hiding a whole lot of stuff + +00:15:52.160 --> 00:15:53.360 +you know orgmo + +00:15:53.360 --> 00:15:54.720 +needs to keep track or I should say + +00:15:54.720 --> 00:15:56.959 +emacs needs to keep track of which areas + +00:15:56.959 --> 00:15:58.160 +of text to show + +00:15:58.160 --> 00:16:00.560 +and which areas of text to hide and the + +00:16:00.560 --> 00:16:02.320 +problem is that when you're hiding stuff + +00:16:02.320 --> 00:16:04.480 +let's say you're moving from line the + +00:16:04.480 --> 00:16:06.320 +first heading to the second heading + +00:16:06.320 --> 00:16:08.639 +but you've got like 10 000 lines between + +00:16:08.639 --> 00:16:09.839 +those two headings + +00:16:09.839 --> 00:16:11.519 +well he max needs to compute the + +00:16:11.519 --> 00:16:13.680 +difference between the two passages + +00:16:13.680 --> 00:16:15.680 +and that takes quite a lot of time and + +00:16:15.680 --> 00:16:17.040 +in that that's my + +00:16:17.040 --> 00:16:18.560 +why you might realize that it's a little + +00:16:18.560 --> 00:16:20.560 +choppy when you start scrolling in large + +00:16:20.560 --> 00:16:21.199 +files + +00:16:21.199 --> 00:16:22.560 +anyway I could be answering questions + +00:16:22.560 --> 00:16:24.480 +about org mode for literally two hours + +00:16:24.480 --> 00:16:25.120 +straight + +00:16:25.120 --> 00:16:26.720 +so I'm gonna end it over to the next + +00:16:26.720 --> 00:16:28.639 +speakers and I'll be seeing + +00:16:28.639 --> 00:16:31.759 +seeing you guys a little later thank you + +00:16:31.759 --> 00:16:33.440 +very much leo + +00:16:33.440 --> 00:16:36.959 +oh thank you yes bye + +00:16:36.959 --> 00:16:39.839 +bye 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 new file mode 100644 index 00000000..eb176536 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--13-experience-report-steps-to-emacs-hyper-notebooks--joseph-corneli-raymond-puzio-cameron-ray-smith-autogen.vtt @@ -0,0 +1,1081 @@ +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--14-readme-driven-design--adam-ard-autogen.vtt b/2020/subtitles/emacsconf-2020--14-readme-driven-design--adam-ard-autogen.vtt new file mode 100644 index 00000000..3179635f --- /dev/null +++ b/2020/subtitles/emacsconf-2020--14-readme-driven-design--adam-ard-autogen.vtt @@ -0,0 +1,1426 @@ +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--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 new file mode 100644 index 00000000..21202a4a --- /dev/null +++ b/2020/subtitles/emacsconf-2020--15-moving-from-jekyll-to-orgmode-an-experience-report--adolfo-villafiorita-autogen.vtt @@ -0,0 +1,1183 @@ +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--16-org-roam-presentation-demonstration-and-whats-on-the-horizon--leo-vivier-autogen.vtt b/2020/subtitles/emacsconf-2020--16-org-roam-presentation-demonstration-and-whats-on-the-horizon--leo-vivier-autogen.vtt new file mode 100644 index 00000000..3aec7a89 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--16-org-roam-presentation-demonstration-and-whats-on-the-horizon--leo-vivier-autogen.vtt @@ -0,0 +1,1801 @@ +WEBVTT + +00:00:00.000 --> 00:00:02.480 +I'm hoping to keep this talk in the 15 + +00:00:02.480 --> 00:00:03.919 +minutes and I'll take five minutes of + +00:00:03.919 --> 00:00:05.279 +question at the end + +00:00:05.279 --> 00:00:07.520 +so hello again I suppose you're starting + +00:00:07.520 --> 00:00:09.200 +to get pretty familiar with me and my + +00:00:09.200 --> 00:00:10.719 +start right now so + +00:00:10.719 --> 00:00:12.480 +right now we're getting into the nitty + +00:00:12.480 --> 00:00:14.719 +gritty we started today + +00:00:14.719 --> 00:00:17.039 +I told you about how I'd ventured from + +00:00:17.039 --> 00:00:18.480 +being a user + +00:00:18.480 --> 00:00:20.800 +to being a maintainer and right now I'm + +00:00:20.800 --> 00:00:22.080 +going to get the chance to + +00:00:22.080 --> 00:00:24.240 +actually tell you more about the project + +00:00:24.240 --> 00:00:25.279 +that I'm maintaining + +00:00:25.279 --> 00:00:28.480 +which is called org rome + +00:00:28.480 --> 00:00:30.560 +so even if I it would have had a better + +00:00:30.560 --> 00:00:32.320 +impact if I'd + +00:00:32.320 --> 00:00:33.840 +didn't scroll the page but you know + +00:00:33.840 --> 00:00:35.520 +sadly I'm out of tea + +00:00:35.520 --> 00:00:37.120 +it's getting late in europe and I'm + +00:00:37.120 --> 00:00:39.600 +starting to get tired + +00:00:39.600 --> 00:00:43.360 +so what I'm gonna do during this talk + +00:00:43.360 --> 00:00:46.160 +is just to do real survey for people who + +00:00:46.160 --> 00:00:48.079 +do not know what orgrom is about + +00:00:48.079 --> 00:00:50.480 +some of you might might have you know + +00:00:50.480 --> 00:00:52.320 +whilst browsing reddit + +00:00:52.320 --> 00:00:54.879 +found a topic about orgrom and thought + +00:00:54.879 --> 00:00:56.480 +to yourself oh that looks interesting + +00:00:56.480 --> 00:00:57.199 +but + +00:00:57.199 --> 00:00:59.680 +you know I have my own workflow and I + +00:00:59.680 --> 00:01:01.039 +get it don't need to change anything + +00:01:01.039 --> 00:01:03.199 +about it you know I'm completely fine + +00:01:03.199 --> 00:01:05.680 +using my very very large file or I'm + +00:01:05.680 --> 00:01:07.520 +completely fine having my + +00:01:07.520 --> 00:01:10.960 +database of notes which is I've been + +00:01:10.960 --> 00:01:14.560 +accruing for like 10 20 30 years or so + +00:01:14.560 --> 00:01:17.759 +so what I want to do during this talk + +00:01:17.759 --> 00:01:20.080 +is both to present to you what orgrom is + +00:01:20.080 --> 00:01:20.960 +about + +00:01:20.960 --> 00:01:23.439 +if you are in this group of people who + +00:01:23.439 --> 00:01:24.000 +do not + +00:01:24.000 --> 00:01:25.600 +know what algorithm is about but would + +00:01:25.600 --> 00:01:27.520 +like to know more but + +00:01:27.520 --> 00:01:30.560 +also for people who have close to no + +00:01:30.560 --> 00:01:33.360 +experience with Emacs and org mode and + +00:01:33.360 --> 00:01:35.040 +was just found their way you know they + +00:01:35.040 --> 00:01:36.880 +wanted to find the system to + +00:01:36.880 --> 00:01:39.840 +write their notes basically and you know + +00:01:39.840 --> 00:01:41.439 +they discovered this little tool which + +00:01:41.439 --> 00:01:42.960 +is called orgrome + +00:01:42.960 --> 00:01:44.479 +and they'd like to know more about this + +00:01:44.479 --> 00:01:46.240 +so I've got 13 + +00:01:46.240 --> 00:01:49.360 +minutes to convince you to use hologram + +00:01:49.360 --> 00:01:53.360 +so if we go in a very broad strokes + +00:01:53.360 --> 00:01:56.799 +what is orgram orgrom + +00:01:56.799 --> 00:01:59.759 +is a way for you to manage backlinks + +00:01:59.759 --> 00:02:00.320 +inside + +00:02:00.320 --> 00:02:03.439 +old mode and the keyword + +00:02:03.439 --> 00:02:07.040 +in what I've just said is links now + +00:02:07.040 --> 00:02:10.080 +there is a principle behind orgrom + +00:02:10.080 --> 00:02:12.879 +which is called the zettelgasten method + +00:02:12.879 --> 00:02:14.239 +which you can see written right there + +00:02:14.239 --> 00:02:15.440 +it's a german word + +00:02:15.440 --> 00:02:18.000 +which means a slit box if you remember + +00:02:18.000 --> 00:02:19.280 +in old libraries + +00:02:19.280 --> 00:02:22.080 +you had actually I believe if I scroll I + +00:02:22.080 --> 00:02:23.440 +should have an example of this + +00:02:23.440 --> 00:02:26.640 +yes so this is a slip box basically in + +00:02:26.640 --> 00:02:28.879 +all libraries you used to have all the + +00:02:28.879 --> 00:02:30.560 +references to the books that the library + +00:02:30.560 --> 00:02:31.599 +used to have + +00:02:31.599 --> 00:02:34.720 +inside those boxes and they're called + +00:02:34.720 --> 00:02:36.080 +slim boxes because you can + +00:02:36.080 --> 00:02:38.480 +insert stuff into the boxes and you can + +00:02:38.480 --> 00:02:41.200 +remove stuff out of the boxes + +00:02:41.200 --> 00:02:44.720 +now basically if I try + +00:02:44.720 --> 00:02:48.000 +to summarize as simply as I may what the + +00:02:48.000 --> 00:02:49.360 +zettel cast method + +00:02:49.360 --> 00:02:52.800 +is about it's about having a way + +00:02:52.800 --> 00:02:56.560 +to work with your notes which considers + +00:02:56.560 --> 00:02:59.920 +elements of knowledge as atoms + +00:02:59.920 --> 00:03:02.000 +so as something that is individual like + +00:03:02.000 --> 00:03:04.159 +a single file + +00:03:04.159 --> 00:03:06.640 +and you consider that in order to build + +00:03:06.640 --> 00:03:07.440 +knowledge + +00:03:07.440 --> 00:03:10.560 +you have to combine atoms together so + +00:03:10.560 --> 00:03:11.120 +that + +00:03:11.120 --> 00:03:14.720 +when you have one atom another atom + +00:03:14.720 --> 00:03:17.519 +if you link them together you have a + +00:03:17.519 --> 00:03:18.879 +complex + +00:03:18.879 --> 00:03:22.000 +thought or a complex molecule + +00:03:22.000 --> 00:03:24.000 +okay don't quote me on the chemistry by + +00:03:24.000 --> 00:03:25.360 +the way I shall remind you I'm an + +00:03:25.360 --> 00:03:26.879 +english major I have no idea what I'm + +00:03:26.879 --> 00:03:28.239 +talking about + +00:03:28.239 --> 00:03:31.360 +so how does it work as far as a + +00:03:31.360 --> 00:03:32.000 +note-taking + +00:03:32.000 --> 00:03:35.280 +system is concerned and to do so + +00:03:35.280 --> 00:03:37.599 +I'm just going to switch really quickly + +00:03:37.599 --> 00:03:39.760 +to my Emacs if I + +00:03:39.760 --> 00:03:43.040 +may so I'm just going to screenshot + +00:03:43.040 --> 00:03:44.959 +onto my mac just give me a second to get + +00:03:44.959 --> 00:03:47.840 +the windows all right + +00:03:47.840 --> 00:03:52.080 +okay it's loading up oh no + +00:03:52.080 --> 00:03:54.720 +I think firefox has crashed again okay + +00:03:54.720 --> 00:03:56.000 +so you're gonna have to give me a second + +00:03:56.000 --> 00:03:58.840 +I need to figure this out + +00:03:58.840 --> 00:04:01.680 +okay so everything is frozen right now + +00:04:01.680 --> 00:04:03.120 +just to tell you so you're gonna have to + +00:04:03.120 --> 00:04:04.720 +deal with my lovely voice + +00:04:04.720 --> 00:04:06.159 +uh I mean can you confirm that if I + +00:04:06.159 --> 00:04:07.920 +switch to a new ttr you can still hear + +00:04:07.920 --> 00:04:09.840 +me + +00:04:09.840 --> 00:04:12.959 +so can you still hear me now + +00:04:12.959 --> 00:04:14.879 +okay so I'm gonna have probably to kill + +00:04:14.879 --> 00:04:16.479 +firefox and log in again + +00:04:16.479 --> 00:04:18.000 +so I'm sorry it's gonna cost us two + +00:04:18.000 --> 00:04:19.600 +minutes but I'm gonna try to be as fast + +00:04:19.600 --> 00:04:20.560 +as I can okay + +00:04:20.560 --> 00:04:28.560 +okay no problem thanks + +00:04:28.560 --> 00:04:35.199 +all right + +00:04:35.199 --> 00:04:37.520 +I guess no event is a good one without + +00:04:37.520 --> 00:04:39.280 +one or two technical difficulties + +00:04:39.280 --> 00:04:42.800 +so I guess this is our share of + +00:04:42.800 --> 00:04:45.360 +technical difficulties this year + +00:04:45.360 --> 00:05:04.800 +no problem + +00:05:04.800 --> 00:05:06.320 +all right guess who's back it's not + +00:05:06.320 --> 00:05:08.160 +britney it's just me sadly so you're + +00:05:08.160 --> 00:05:10.800 +gonna have to make do with me + +00:05:10.800 --> 00:05:12.880 +welcome back well thank you I'm just + +00:05:12.880 --> 00:05:15.520 +gonna turn back on the camera if I may + +00:05:15.520 --> 00:05:19.919 +all righty + +00:05:19.919 --> 00:05:22.400 +and I'm going to make myself a presenter + +00:05:22.400 --> 00:05:23.520 +and I'm going to + +00:05:23.520 --> 00:05:26.160 +share my screen with you sleep box + +00:05:26.160 --> 00:05:26.880 +testing + +00:05:26.880 --> 00:05:29.919 +hello + +00:05:29.919 --> 00:05:32.720 +so if my calculations are correct you + +00:05:32.720 --> 00:05:34.160 +should be able to see my monitor right + +00:05:34.160 --> 00:05:34.800 +now + +00:05:34.800 --> 00:05:38.160 +um yep but not your webcam feed + +00:05:38.160 --> 00:05:39.919 +not my webcam feed okay so I'm going to + +00:05:39.919 --> 00:05:42.800 +stop it + +00:05:42.800 --> 00:05:44.720 +sorry for the little delay folks you + +00:05:44.720 --> 00:05:46.000 +know it's uh + +00:05:46.000 --> 00:05:49.039 +the show must go on can you see it now + +00:05:49.039 --> 00:05:52.320 +um not yet still not + +00:05:52.320 --> 00:06:00.080 +damn it can I stop it okay so I'm gonna + +00:06:00.080 --> 00:06:04.840 +yeah maybe try like sharing a webcam + +00:06:04.840 --> 00:06:32.960 +first + +00:06:32.960 --> 00:06:36.319 +all right I'm back now so I'm going to + +00:06:36.319 --> 00:06:37.759 +share my webcam first + +00:06:37.759 --> 00:06:39.550 +okay + +00:06:39.550 --> 00:06:43.440 +[Music] + +00:06:43.440 --> 00:06:46.560 +all righty so can you confirm whenever + +00:06:46.560 --> 00:06:49.360 +you've got my webcam working + +00:06:49.360 --> 00:06:52.880 +let's see I don't see it yet + +00:06:52.880 --> 00:06:55.919 +unfortunately oh it's loading up yeah + +00:06:55.919 --> 00:06:57.120 +it's coming up + +00:06:57.120 --> 00:06:59.680 +yep I can see it awesome all right okay + +00:06:59.680 --> 00:07:01.199 +we're back on track I've got still eight + +00:07:01.199 --> 00:07:02.880 +minutes left to do so I might have to + +00:07:02.880 --> 00:07:04.160 +have a couple of minutes to my talk if + +00:07:04.160 --> 00:07:06.000 +you don't mind and shave off some + +00:07:06.000 --> 00:07:07.599 +questions + +00:07:07.599 --> 00:07:10.800 +okay do you want to share okay yeah + +00:07:10.800 --> 00:07:13.759 +I'm on my way too all right all right so + +00:07:13.759 --> 00:07:14.639 +please forget + +00:07:14.639 --> 00:07:16.240 +whatever whichever technical + +00:07:16.240 --> 00:07:18.000 +difficulties we might have have had for + +00:07:18.000 --> 00:07:18.479 +the last + +00:07:18.479 --> 00:07:20.240 +three four minutes but we're back on + +00:07:20.240 --> 00:07:22.080 +track now so + +00:07:22.080 --> 00:07:24.960 +uh orgrom what is it and how does it + +00:07:24.960 --> 00:07:26.639 +work so I was telling you all about + +00:07:26.639 --> 00:07:28.720 +atoms and I was telling you about links + +00:07:28.720 --> 00:07:30.720 +but how does it work concretely + +00:07:30.720 --> 00:07:32.800 +so right now what you're seeing on your + +00:07:32.800 --> 00:07:33.840 +screens + +00:07:33.840 --> 00:07:37.199 +is a slip box which is what we the fancy + +00:07:37.199 --> 00:07:38.800 +word that we use to designate your + +00:07:38.800 --> 00:07:39.520 +folder + +00:07:39.520 --> 00:07:41.039 +where all your notes are going to be + +00:07:41.039 --> 00:07:43.280 +living so you have here and I hope you + +00:07:43.280 --> 00:07:44.000 +can see my + +00:07:44.000 --> 00:07:47.039 +uh cursor yes you can so we have a file + +00:07:47.039 --> 00:07:48.199 +which is called + +00:07:48.199 --> 00:07:51.120 +index.org and the good thing is + +00:07:51.120 --> 00:07:52.960 +as you might have garnered by the fact + +00:07:52.960 --> 00:07:54.240 +that it finishes by + +00:07:54.240 --> 00:07:57.039 +that org is that it is just an old mod + +00:07:57.039 --> 00:07:57.599 +file + +00:07:57.599 --> 00:08:00.800 +so I can create a heading + +00:08:00.800 --> 00:08:03.520 +I can create another heading and + +00:08:03.520 --> 00:08:05.280 +everything works as you would expect it + +00:08:05.280 --> 00:08:05.599 +to + +00:08:05.599 --> 00:08:08.879 +it is completely it's just an awkward + +00:08:08.879 --> 00:08:10.400 +file at the end of the day + +00:08:10.400 --> 00:08:13.759 +so now what can we do with this + +00:08:13.759 --> 00:08:15.840 +now I've told you about links and you do + +00:08:15.840 --> 00:08:16.800 +know that + +00:08:16.800 --> 00:08:19.520 +org mode has links so what we're going + +00:08:19.520 --> 00:08:20.080 +to do + +00:08:20.080 --> 00:08:22.479 +is that we're going to create a new file + +00:08:22.479 --> 00:08:23.440 +so we're going to go back + +00:08:23.440 --> 00:08:26.240 +to our directory and what I'm going to + +00:08:26.240 --> 00:08:28.000 +do is that we have a special commands + +00:08:28.000 --> 00:08:28.879 +actually let me just + +00:08:28.879 --> 00:08:31.199 +show you my command I might help you a + +00:08:31.199 --> 00:08:32.240 +little bit + +00:08:32.240 --> 00:08:35.360 +see what I'm doing uh wait which is the + +00:08:35.360 --> 00:08:36.479 +buffer + +00:08:36.479 --> 00:08:39.680 +uh log mode yes exlog so now on the + +00:08:39.680 --> 00:08:41.039 +right side of the monitor you'll be able + +00:08:41.039 --> 00:08:43.120 +to see the command that I'm using + +00:08:43.120 --> 00:08:45.040 +if you don't mind in order to have as + +00:08:45.040 --> 00:08:46.640 +much realistic as possible I'm going to + +00:08:46.640 --> 00:08:48.480 +make it a little bit shorter + +00:08:48.480 --> 00:08:50.720 +smaller I should say is it not too small + +00:08:50.720 --> 00:08:52.320 +yeah I believe it's good + +00:08:52.320 --> 00:08:54.720 +so what I'm going to do is I'm going to + +00:08:54.720 --> 00:08:55.760 +run a command + +00:08:55.760 --> 00:08:57.920 +in orgrome which allows me to create a + +00:08:57.920 --> 00:08:59.200 +new note + +00:08:59.200 --> 00:09:02.320 +so I'm going to use my keybinding which + +00:09:02.320 --> 00:09:04.720 +is not this one definitely + +00:09:04.720 --> 00:09:06.800 +and I'm going to create a new file which + +00:09:06.800 --> 00:09:08.000 +is in a + +00:09:08.000 --> 00:09:09.839 +great tradition of examples in + +00:09:09.839 --> 00:09:11.680 +programming I'm going to call + +00:09:11.680 --> 00:09:15.519 +foo right so at the bottom + +00:09:15.519 --> 00:09:17.600 +in the bottom buffer I should say you + +00:09:17.600 --> 00:09:18.720 +are seeing the file + +00:09:18.720 --> 00:09:21.760 +foo which is as you can see here a + +00:09:21.760 --> 00:09:22.720 +capture buffer + +00:09:22.720 --> 00:09:24.640 +just like you would have in blog mode + +00:09:24.640 --> 00:09:25.839 +now what I'm going to do + +00:09:25.839 --> 00:09:28.560 +is that I'm going to validate this file + +00:09:28.560 --> 00:09:29.200 +and now + +00:09:29.200 --> 00:09:32.560 +you see that we are in the file foo + +00:09:32.560 --> 00:09:36.240 +and the good thing is that I can start + +00:09:36.240 --> 00:09:39.440 +writing without having to worry + +00:09:39.440 --> 00:09:42.160 +about anything else and I was thinking I + +00:09:42.160 --> 00:09:43.760 +was going to say to say that I'm + +00:09:43.760 --> 00:09:46.160 +showing off about my typing skills but I + +00:09:46.160 --> 00:09:47.680 +did make mistakes so + +00:09:47.680 --> 00:09:50.959 +well nobody's perfect right so now we do + +00:09:50.959 --> 00:09:53.760 +have this view file and we're going to + +00:09:53.760 --> 00:09:55.519 +go back to the index so let's go back to + +00:09:55.519 --> 00:09:56.800 +the directory + +00:09:56.800 --> 00:09:58.560 +we're going to refresh the file as you + +00:09:58.560 --> 00:10:00.000 +can see we have a file which is called + +00:10:00.000 --> 00:10:00.560 +foo + +00:10:00.560 --> 00:10:03.360 +and we have the index so now what I'm + +00:10:03.360 --> 00:10:04.399 +going to do + +00:10:04.399 --> 00:10:06.480 +is that I'm going to insert a link to + +00:10:06.480 --> 00:10:07.760 +this file + +00:10:07.760 --> 00:10:09.920 +so we're going to run another orgrim + +00:10:09.920 --> 00:10:11.360 +command which you can see here + +00:10:11.360 --> 00:10:14.160 +orgrim inset and I'm going to insert a + +00:10:14.160 --> 00:10:15.279 +link to the file + +00:10:15.279 --> 00:10:17.279 +foo and as you can see it has now + +00:10:17.279 --> 00:10:18.959 +appeared now what I'm going to do + +00:10:18.959 --> 00:10:21.920 +I'm going to save the file and now I'm + +00:10:21.920 --> 00:10:23.040 +going to show you + +00:10:23.040 --> 00:10:24.480 +the little thing I told you about + +00:10:24.480 --> 00:10:26.720 +backlinks before so I'm afraid I'm going + +00:10:26.720 --> 00:10:27.680 +to have to hide + +00:10:27.680 --> 00:10:29.680 +the commands for now but don't worry + +00:10:29.680 --> 00:10:30.880 +I'll be back + +00:10:30.880 --> 00:10:33.760 +and I'm going to show you the side + +00:10:33.760 --> 00:10:34.320 +buffer + +00:10:34.320 --> 00:10:35.839 +so it is the buffer that you see on the + +00:10:35.839 --> 00:10:38.079 +right side of your screen + +00:10:38.079 --> 00:10:40.000 +and right now it's telling you that + +00:10:40.000 --> 00:10:42.560 +index does not have any backlink + +00:10:42.560 --> 00:10:45.440 +which is normal but if we follow the + +00:10:45.440 --> 00:10:46.320 +link + +00:10:46.320 --> 00:10:49.200 +fu now you see something different on + +00:10:49.200 --> 00:10:50.560 +the right side so as you can see on the + +00:10:50.560 --> 00:10:52.160 +left side we're back insta inside the + +00:10:52.160 --> 00:10:53.360 +file foo + +00:10:53.360 --> 00:10:55.600 +but on the right side we have something + +00:10:55.600 --> 00:10:56.560 +showing up + +00:10:56.560 --> 00:11:00.160 +one backlink in the file index + +00:11:00.160 --> 00:11:03.519 +in under the heading heading you have + +00:11:03.519 --> 00:11:04.399 +the file + +00:11:04.399 --> 00:11:07.680 +sorry the link foo and you can just open + +00:11:07.680 --> 00:11:08.720 +the link + +00:11:08.720 --> 00:11:10.720 +and you will be brought exactly where it + +00:11:10.720 --> 00:11:12.640 +is so + +00:11:12.640 --> 00:11:16.240 +okay so that was one thing now just + +00:11:16.240 --> 00:11:17.600 +to make sure that you've understood + +00:11:17.600 --> 00:11:19.360 +properly I'm going to go back to the + +00:11:19.360 --> 00:11:20.320 +index + +00:11:20.320 --> 00:11:23.920 +I'm going to create a second file + +00:11:23.920 --> 00:11:25.440 +so now I'm going to use a command that + +00:11:25.440 --> 00:11:27.680 +is slightly different so let me just uh + +00:11:27.680 --> 00:11:30.800 +show you the commands on the right + +00:11:30.800 --> 00:11:32.480 +I'm going to run the command orgrim + +00:11:32.480 --> 00:11:33.839 +insert and I'm going to + +00:11:33.839 --> 00:11:37.519 +end to enter a file which is called bar + +00:11:37.519 --> 00:11:39.600 +so again at the bottom you can see that + +00:11:39.600 --> 00:11:41.440 +I have a new file bar + +00:11:41.440 --> 00:11:45.920 +I'm going to validate this file + +00:11:45.920 --> 00:11:49.760 +okay I'm going to save index.org + +00:11:49.760 --> 00:11:52.959 +and now if we go in bar and if I show + +00:11:52.959 --> 00:11:54.320 +you + +00:11:54.320 --> 00:11:55.920 +the links on the side you can see that + +00:11:55.920 --> 00:11:58.240 +exactly the same we have a link + +00:11:58.240 --> 00:12:00.480 +now just to make the pictures complete + +00:12:00.480 --> 00:12:02.639 +inside the file bar I'm going to insert + +00:12:02.639 --> 00:12:05.200 +a link to foo I'm going to save I'm + +00:12:05.200 --> 00:12:06.959 +going to go to the file foo and now on + +00:12:06.959 --> 00:12:07.920 +the right side + +00:12:07.920 --> 00:12:11.120 +you can see that we have two backlinks + +00:12:11.120 --> 00:12:13.839 +now you're gonna tell me yeah thank you + +00:12:13.839 --> 00:12:14.720 +leo but + +00:12:14.720 --> 00:12:17.760 +what's the point well the thing is + +00:12:17.760 --> 00:12:20.320 +it might sound it might seem very simple + +00:12:20.320 --> 00:12:22.160 +but I've just shown you + +00:12:22.160 --> 00:12:24.160 +but programmatically it's a little hard + +00:12:24.160 --> 00:12:26.160 +to do like we have to + +00:12:26.160 --> 00:12:28.000 +look into your files to make sure that + +00:12:28.000 --> 00:12:30.079 +every time you link your file + +00:12:30.079 --> 00:12:32.240 +somewhere else we need to track + +00:12:32.240 --> 00:12:34.079 +everything down + +00:12:34.079 --> 00:12:37.920 +and now as simple as orgrum might be + +00:12:37.920 --> 00:12:39.519 +looking to you + +00:12:39.519 --> 00:12:42.240 +the thing is what we try to do with + +00:12:42.240 --> 00:12:43.279 +orgrum + +00:12:43.279 --> 00:12:45.920 +is to make sure that your collection of + +00:12:45.920 --> 00:12:46.399 +notes + +00:12:46.399 --> 00:12:50.320 +remains consistent whatever we do + +00:12:50.320 --> 00:12:54.079 +an example for instance like right now + +00:12:54.079 --> 00:12:56.880 +I've told you about a file named foo and + +00:12:56.880 --> 00:12:58.000 +the file name + +00:12:58.000 --> 00:13:01.120 +bar let's say that for whatever reason + +00:13:01.120 --> 00:13:03.920 +you decide to rename your file foo to + +00:13:03.920 --> 00:13:04.720 +something + +00:13:04.720 --> 00:13:08.079 +very original let's just say bar + +00:13:08.079 --> 00:13:11.040 +so we actually have a way in Emacs in + +00:13:11.040 --> 00:13:12.320 +orgrim I should say + +00:13:12.320 --> 00:13:14.560 +when you modify the title at the top of + +00:13:14.560 --> 00:13:15.680 +the file + +00:13:15.680 --> 00:13:18.880 +so we get foo I've modified it with baz + +00:13:18.880 --> 00:13:20.320 +you can see at the bottom that right now + +00:13:20.320 --> 00:13:22.000 +we haven't saved and we are still in the + +00:13:22.000 --> 00:13:22.519 +file + +00:13:22.519 --> 00:13:26.079 +fu.org I'm going to save + +00:13:26.079 --> 00:13:29.360 +and now what you see is + +00:13:29.360 --> 00:13:32.560 +a new name for the file but you may ask + +00:13:32.560 --> 00:13:35.360 +wait a second in the other file we had a + +00:13:35.360 --> 00:13:36.880 +link to this file + +00:13:36.880 --> 00:13:38.880 +does it mean that it's broken does it + +00:13:38.880 --> 00:13:40.560 +means does it mean sorry + +00:13:40.560 --> 00:13:43.440 +that we cannot access the file anymore + +00:13:43.440 --> 00:13:43.920 +but + +00:13:43.920 --> 00:13:46.959 +when we go there beginning to go in the + +00:13:46.959 --> 00:13:48.000 +index + +00:13:48.000 --> 00:13:50.399 +so obviously the actual description of + +00:13:50.399 --> 00:13:52.079 +the link hasn't been updated + +00:13:52.079 --> 00:13:54.320 +but if I show you what goes on under the + +00:13:54.320 --> 00:13:55.680 +hood by showing you + +00:13:55.680 --> 00:13:57.440 +what is fontify what is behind the + +00:13:57.440 --> 00:14:00.000 +content of the link + +00:14:00.000 --> 00:14:02.320 +actually it didn't work and that's why + +00:14:02.320 --> 00:14:04.079 +you never present live folks because + +00:14:04.079 --> 00:14:04.639 +otherwise you're + +00:14:04.639 --> 00:14:05.920 +just going to show problems with the + +00:14:05.920 --> 00:14:08.880 +software and that's not good + +00:14:08.880 --> 00:14:12.079 +so something must have gone on obviously + +00:14:12.079 --> 00:14:15.120 +but generally speaking the file should + +00:14:15.120 --> 00:14:17.120 +have been updated + +00:14:17.120 --> 00:14:18.959 +damn I'm showing you bugging my software + +00:14:18.959 --> 00:14:21.279 +that's not very professional now is it + +00:14:21.279 --> 00:14:25.040 +basically to come back to the main id + +00:14:25.040 --> 00:14:28.079 +what we try to do with orgrom is to make + +00:14:28.079 --> 00:14:28.880 +sure that + +00:14:28.880 --> 00:14:32.639 +everything remains consistent we + +00:14:32.639 --> 00:14:35.279 +really much love the system of + +00:14:35.279 --> 00:14:37.360 +organization that is behind this little + +00:14:37.360 --> 00:14:38.720 +castle method + +00:14:38.720 --> 00:14:40.240 +now I was going at this point of the + +00:14:40.240 --> 00:14:41.600 +presentation basically I wanted to go + +00:14:41.600 --> 00:14:42.639 +back to firefox + +00:14:42.639 --> 00:14:45.199 +and show you more stuff but it's likely + +00:14:45.199 --> 00:14:46.880 +that it's going to crash again + +00:14:46.880 --> 00:14:48.959 +so I'm not going to tempt the devil and + +00:14:48.959 --> 00:14:50.240 +I'm just going to continue talking to + +00:14:50.240 --> 00:14:51.680 +you like that + +00:14:51.680 --> 00:14:54.800 +so the zettelkasten method + +00:14:54.800 --> 00:14:58.160 +is a very organic way + +00:14:58.160 --> 00:15:01.839 +to write notes and if you think + +00:15:01.839 --> 00:15:04.959 +I I believe as all mode users + +00:15:04.959 --> 00:15:06.639 +we share quite a lot of features and I'm + +00:15:06.639 --> 00:15:08.000 +out of time I'm just going to take one + +00:15:08.000 --> 00:15:09.600 +more minute to answer this question + +00:15:09.600 --> 00:15:12.320 +that I'm asking myself anyway but if + +00:15:12.320 --> 00:15:14.560 +you're anything like me + +00:15:14.560 --> 00:15:16.079 +you've you've been through many + +00:15:16.079 --> 00:15:18.240 +iterations of your workflow inside of + +00:15:18.240 --> 00:15:18.959 +mode + +00:15:18.959 --> 00:15:20.959 +do I keep all my professional stuff + +00:15:20.959 --> 00:15:22.959 +under one heading or do I create a + +00:15:22.959 --> 00:15:24.399 +separate file for this + +00:15:24.399 --> 00:15:25.920 +you know those types of questions on + +00:15:25.920 --> 00:15:28.000 +which you could ponder for + +00:15:28.000 --> 00:15:30.639 +many many hours at night generally when + +00:15:30.639 --> 00:15:31.360 +you have a + +00:15:31.360 --> 00:15:34.560 +tight deadline to be following but + +00:15:34.560 --> 00:15:36.959 +what I've discovered by using orgrim for + +00:15:36.959 --> 00:15:38.240 +taking notes about + +00:15:38.240 --> 00:15:40.720 +my academic projects or by taking notes + +00:15:40.720 --> 00:15:41.360 +on + +00:15:41.360 --> 00:15:44.880 +you know anything worth writing about + +00:15:44.880 --> 00:15:47.440 +is that not having to worry about the + +00:15:47.440 --> 00:15:49.199 +structure if you files + +00:15:49.199 --> 00:15:52.399 +just having to worry about atoms + +00:15:52.399 --> 00:15:56.079 +and links it does wonder + +00:15:56.079 --> 00:15:58.480 +for the way you think about problems it + +00:15:58.480 --> 00:16:00.639 +does wonder about your creativity + +00:16:00.639 --> 00:16:04.800 +and it does wonder about your ability to + +00:16:04.800 --> 00:16:07.519 +take your thoughts put them on a paper + +00:16:07.519 --> 00:16:08.800 +and generally you know during this + +00:16:08.800 --> 00:16:10.399 +process you realize oh maybe I do not + +00:16:10.399 --> 00:16:13.120 +know this concept as well as I should + +00:16:13.120 --> 00:16:16.079 +but I've never had a system which + +00:16:16.079 --> 00:16:16.800 +brought me + +00:16:16.800 --> 00:16:19.839 +as much serendipity as this system + +00:16:19.839 --> 00:16:21.440 +and for those who don't know serendipity + +00:16:21.440 --> 00:16:24.880 +the ability to come up with novel ideas + +00:16:24.880 --> 00:16:28.800 +on the spot contextually so + +00:16:28.800 --> 00:16:32.240 +this was just a little primer on what + +00:16:32.240 --> 00:16:34.959 +orgrom and the zettelkasten is about in + +00:16:34.959 --> 00:16:36.000 +about + +00:16:36.000 --> 00:16:38.000 +20 minutes I'll be giving you a talk + +00:16:38.000 --> 00:16:39.680 +about the technical aspects of orgrim + +00:16:39.680 --> 00:16:40.800 +which I'm certain + +00:16:40.800 --> 00:16:43.040 +some of you will be very interested in + +00:16:43.040 --> 00:16:44.160 +and + +00:16:44.160 --> 00:16:46.160 +otherwise I do have a youtube channel + +00:16:46.160 --> 00:16:48.560 +where I try to + +00:16:48.560 --> 00:16:50.720 +record videos where I explain to you + +00:16:50.720 --> 00:16:52.079 +what the org + +00:16:52.079 --> 00:16:53.839 +what organ is about what the method is + +00:16:53.839 --> 00:16:55.600 +about and + +00:16:55.600 --> 00:16:57.040 +and I'll just finish on this I'm two + +00:16:57.040 --> 00:16:58.720 +minutes extra time sorry + +00:16:58.720 --> 00:17:02.399 +but um we do know that a lot of people + +00:17:02.399 --> 00:17:04.079 +are interested into orgrim I mentioned + +00:17:04.079 --> 00:17:04.959 +at the very beginning of the + +00:17:04.959 --> 00:17:06.160 +presentation + +00:17:06.160 --> 00:17:09.360 +that a lot of people discovered Emacs + +00:17:09.360 --> 00:17:10.640 +and orgrom + +00:17:10.640 --> 00:17:14.640 +and old mode even through orgrom + +00:17:14.640 --> 00:17:18.400 +and we feel that we have a duty to + +00:17:18.400 --> 00:17:20.959 +introduce those people this new pool of + +00:17:20.959 --> 00:17:22.720 +people most of whom are + +00:17:22.720 --> 00:17:25.439 +academics into the world of Emacs and + +00:17:25.439 --> 00:17:27.600 +into the water free software + +00:17:27.600 --> 00:17:30.240 +and right now the thing is we're not + +00:17:30.240 --> 00:17:32.240 +doing a particularly good job at writing + +00:17:32.240 --> 00:17:34.080 +manuals I'm just going to try + +00:17:34.080 --> 00:17:36.160 +to stop sharing my screen because I'm + +00:17:36.160 --> 00:17:37.360 +nearly to the end + +00:17:37.360 --> 00:17:40.240 +and just try sharing my firefox windows + +00:17:40.240 --> 00:17:41.919 +if it allows me no it doesn't allow me + +00:17:41.919 --> 00:17:43.120 +which is very good that's why I won't + +00:17:43.120 --> 00:17:44.160 +have to + +00:17:44.160 --> 00:17:47.200 +to screw things up but + +00:17:47.200 --> 00:17:50.080 +uh we know that our manual is not fully + +00:17:50.080 --> 00:17:50.880 +up to date + +00:17:50.880 --> 00:17:53.760 +but believe me one of the key focus + +00:17:53.760 --> 00:17:54.480 +right now + +00:17:54.480 --> 00:17:56.960 +is making sure that within two to three + +00:17:56.960 --> 00:17:57.840 +months + +00:17:57.840 --> 00:17:59.679 +we have a good tutorial for people to + +00:17:59.679 --> 00:18:02.559 +join and we have good videos for people + +00:18:02.559 --> 00:18:03.840 +to get introduced to the topics we're + +00:18:03.840 --> 00:18:04.640 +covering + +00:18:04.640 --> 00:18:06.320 +and that's me done so thank you so much + +00:18:06.320 --> 00:18:07.679 +for listening and now I'll be taking + +00:18:07.679 --> 00:18:09.840 +some questions + +00:18:09.840 --> 00:18:12.880 +thank you very much leo oh thank you + +00:18:12.880 --> 00:18:17.679 +cheers we have I think about two minutes + +00:18:17.679 --> 00:18:19.440 +four questions and I see a lot of them + +00:18:19.440 --> 00:18:20.880 +on the pad + +00:18:20.880 --> 00:18:23.120 +would you take them sure so yep I'm + +00:18:23.120 --> 00:18:24.320 +scrolling I'm scrolling + +00:18:24.320 --> 00:18:27.600 +uh getting things done that's aldrich uh + +00:18:27.600 --> 00:18:30.000 +still scrolling okay olgram oh wow okay + +00:18:30.000 --> 00:18:31.679 +so we do have quite a lot of questions + +00:18:31.679 --> 00:18:33.600 +so please excuse me if I'm answering + +00:18:33.600 --> 00:18:34.799 +your questions really fast but I just + +00:18:34.799 --> 00:18:35.760 +want to make sure that I cover + +00:18:35.760 --> 00:18:38.080 +as much ground as possible so what is + +00:18:38.080 --> 00:18:40.240 +the functionality of all chrome unlinked + +00:18:40.240 --> 00:18:41.039 +references + +00:18:41.039 --> 00:18:43.200 +so basically when you have a file that + +00:18:43.200 --> 00:18:45.200 +is not linked anywhere + +00:18:45.200 --> 00:18:48.000 +this function allows you to see uh let's + +00:18:48.000 --> 00:18:49.520 +say we have a file Emacs + +00:18:49.520 --> 00:18:51.200 +and we've talked about Emacs in another + +00:18:51.200 --> 00:18:53.200 +note but we haven't created a link + +00:18:53.200 --> 00:18:57.440 +what this command do is that it + +00:18:57.440 --> 00:18:59.520 +looks into your folder for every mention + +00:18:59.520 --> 00:19:00.720 +of Emacs that is not + +00:19:00.720 --> 00:19:03.840 +linked to the note Emacs and it prints + +00:19:03.840 --> 00:19:05.039 +all the results in the buffer so that + +00:19:05.039 --> 00:19:06.480 +you know okay I've talked about Emacs + +00:19:06.480 --> 00:19:07.840 +here but I didn't create a link + +00:19:07.840 --> 00:19:10.480 +do I want to create a link that's it so + +00:19:10.480 --> 00:19:11.840 +is it possible to use the backlinks + +00:19:11.840 --> 00:19:12.480 +features + +00:19:12.480 --> 00:19:15.039 +in regular old buffers right now no it + +00:19:15.039 --> 00:19:16.400 +is not possible we are + +00:19:16.400 --> 00:19:18.080 +having a very controlled environment + +00:19:18.080 --> 00:19:20.240 +which is I told you about this clipbox + +00:19:20.240 --> 00:19:21.280 +folder before + +00:19:21.280 --> 00:19:22.799 +this is where we keep all the nodes and + +00:19:22.799 --> 00:19:24.400 +the reason why we do this will be more + +00:19:24.400 --> 00:19:26.080 +evident when I go through the technical + +00:19:26.080 --> 00:19:27.360 +presentation + +00:19:27.360 --> 00:19:30.720 +but uh it's because of optimization + +00:19:30.720 --> 00:19:32.080 +so I'll get back to you on that + +00:19:32.080 --> 00:19:33.760 +afterwards um + +00:19:33.760 --> 00:19:35.440 +do you make all group database + +00:19:35.440 --> 00:19:37.039 +accessible across computers + +00:19:37.039 --> 00:19:39.760 +uh no I do not because I'm only using my + +00:19:39.760 --> 00:19:41.760 +laptop but plenty of people have had + +00:19:41.760 --> 00:19:44.559 +a lot of success doing so either by + +00:19:44.559 --> 00:19:47.039 +sharing the files via a sync thing or by + +00:19:47.039 --> 00:19:47.679 +any other + +00:19:47.679 --> 00:19:49.760 +method we have a section in a manual + +00:19:49.760 --> 00:19:52.400 +specifying how to do this uh how do you + +00:19:52.400 --> 00:19:53.760 +discover the tags links to add to your + +00:19:53.760 --> 00:19:54.880 +new algorithm note + +00:19:54.880 --> 00:19:56.160 +there is something that I didn't tell + +00:19:56.160 --> 00:19:57.679 +you about which is called orgrim server + +00:19:57.679 --> 00:19:58.240 +which is a + +00:19:58.240 --> 00:20:01.679 +magnificent way to uh access + +00:20:01.679 --> 00:20:04.320 +visually the nodes that you have in your + +00:20:04.320 --> 00:20:05.360 +in your system + +00:20:05.360 --> 00:20:07.840 +you'll have to go to the orgrom.com + +00:20:07.840 --> 00:20:08.799 +website + +00:20:08.799 --> 00:20:10.640 +and please go on our github page and we + +00:20:10.640 --> 00:20:12.080 +show everything and + +00:20:12.080 --> 00:20:14.640 +um I hope what I've told you has excited + +00:20:14.640 --> 00:20:16.000 +you so please go + +00:20:16.000 --> 00:20:18.000 +uh maybe one more question two more + +00:20:18.000 --> 00:20:20.080 +questions just to make sure uh is it + +00:20:20.080 --> 00:20:21.679 +possible to seamlessly link to other + +00:20:21.679 --> 00:20:23.039 +notes with syntax instead of a + +00:20:23.039 --> 00:20:23.919 +keybinding + +00:20:23.919 --> 00:20:25.840 +yes we are working on this this is a + +00:20:25.840 --> 00:20:27.120 +huge project that we're doing with + +00:20:27.120 --> 00:20:28.880 +orgrim which is called uh + +00:20:28.880 --> 00:20:30.960 +link ux and we're trying to do something + +00:20:30.960 --> 00:20:32.880 +which is very close to rome research + +00:20:32.880 --> 00:20:34.559 +which is the software we're using for + +00:20:34.559 --> 00:20:36.880 +inspiration for orgrom + +00:20:36.880 --> 00:20:39.200 +and uh yes there's there are going to be + +00:20:39.200 --> 00:20:41.280 +ways to do this in the future I'm going + +00:20:41.280 --> 00:20:42.640 +to give you a window of + +00:20:42.640 --> 00:20:45.280 +maybe three to four months and one last + +00:20:45.280 --> 00:20:46.320 +question + +00:20:46.320 --> 00:20:48.480 +uh good on you thank you well thank you + +00:20:48.480 --> 00:20:49.440 +for for this + +00:20:49.440 --> 00:20:51.039 +is there an easy way to export several + +00:20:51.039 --> 00:20:53.200 +selected nodes to say a lattice file + +00:20:53.200 --> 00:20:56.960 +latex yes uh I mean it's old mode + +00:20:56.960 --> 00:20:59.840 +at the very core it is org mode so you + +00:20:59.840 --> 00:21:00.480 +know you don't + +00:21:00.480 --> 00:21:02.559 +if you want to export to latex file you + +00:21:02.559 --> 00:21:04.000 +can you just use the + +00:21:04.000 --> 00:21:06.320 +aux latex library which you can access + +00:21:06.320 --> 00:21:08.320 +by pressing ctrl c ctrl + +00:21:08.320 --> 00:21:11.760 +e for export all right is it uh I + +00:21:11.760 --> 00:21:12.480 +believe I'm + +00:21:12.480 --> 00:21:13.919 +it's all the time I had I mean can you + +00:21:13.919 --> 00:21:16.880 +confirm this + +00:21:16.880 --> 00:21:19.039 +okay so if you have more questions don't + +00:21:19.039 --> 00:21:20.240 +worry I'll be in chat + +00:21:20.240 --> 00:21:23.679 +I'll be answering them uh I'm also on on + +00:21:23.679 --> 00:21:26.799 +all the platforms we advertise on on + +00:21:26.799 --> 00:21:28.159 +orgram if you want to reach me I'm + +00:21:28.159 --> 00:21:29.280 +really easy to reach + +00:21:29.280 --> 00:21:31.919 +our gita page is always open so thank + +00:21:31.919 --> 00:21:32.559 +you all for + +00:21:32.559 --> 00:21:35.520 +all your questions and all your energy + +00:21:35.520 --> 00:21:37.440 +about orgrim it is very exciting for me + +00:21:37.440 --> 00:21:38.640 +to to see all this + +00:21:38.640 --> 00:21:42.000 +but right now I'll be ending off the + +00:21:42.000 --> 00:21:44.080 +microphone I should say to nura who is + +00:21:44.080 --> 00:21:45.840 +going to talk to you about the + +00:21:45.840 --> 00:21:48.480 +academic way to use orgrom and I'll be + +00:21:48.480 --> 00:21:50.080 +back afterwards with the technical talk + +00:21:50.080 --> 00:21:53.760 +okay thank you thank you very much leo + +00:21:53.760 --> 00:21:57.760 +see you later guys diff --git a/2020/subtitles/emacsconf-2020--17-org-mode-and-org-roam-for-scholars-and-researchers--noorah-alhasan-autogen.vtt b/2020/subtitles/emacsconf-2020--17-org-mode-and-org-roam-for-scholars-and-researchers--noorah-alhasan-autogen.vtt new file mode 100644 index 00000000..f7610b1f --- /dev/null +++ b/2020/subtitles/emacsconf-2020--17-org-mode-and-org-roam-for-scholars-and-researchers--noorah-alhasan-autogen.vtt @@ -0,0 +1,1795 @@ +WEBVTT + +00:00:00.320 --> 00:00:02.639 +good afternoon or good evening everyone + +00:00:02.639 --> 00:00:03.040 +uh + +00:00:03.040 --> 00:00:05.440 +today my talk is going to be on org mode + +00:00:05.440 --> 00:00:07.759 +and or group for skulls and researchers + +00:00:07.759 --> 00:00:10.559 +leo has talked about like the overall + +00:00:10.559 --> 00:00:12.639 +picture of orgrim and or + +00:00:12.639 --> 00:00:15.120 +uh bibtex or groundbreak tech I will be + +00:00:15.120 --> 00:00:16.240 +talking more about + +00:00:16.240 --> 00:00:19.199 +the research process itself using these + +00:00:19.199 --> 00:00:20.320 +tools + +00:00:20.320 --> 00:00:22.400 +all right so just to introduce that the + +00:00:22.400 --> 00:00:25.039 +research process is really messy + +00:00:25.039 --> 00:00:28.080 +um you're always working in like + +00:00:28.080 --> 00:00:31.039 +piecemeal tasks and things move around + +00:00:31.039 --> 00:00:32.960 +all the time and so + +00:00:32.960 --> 00:00:35.280 +there needs to be a system where you can + +00:00:35.280 --> 00:00:36.880 +organize all these tasks + +00:00:36.880 --> 00:00:39.360 +all these ideas in a way that is + +00:00:39.360 --> 00:00:41.760 +flexible and effective + +00:00:41.760 --> 00:00:44.239 +so my motivation is that research is + +00:00:44.239 --> 00:00:44.960 +hard and + +00:00:44.960 --> 00:00:47.120 +writing about it is even more difficult + +00:00:47.120 --> 00:00:49.600 +and my goal is to add some structure to + +00:00:49.600 --> 00:00:51.120 +this whole madness + +00:00:51.120 --> 00:00:52.800 +so here's a list of some of the stuff + +00:00:52.800 --> 00:00:54.480 +that I've been using since I first + +00:00:54.480 --> 00:00:57.199 +learned about Emacs in 2019 + +00:00:57.199 --> 00:01:00.160 +and what I've what I've found useful um + +00:01:00.160 --> 00:01:02.000 +during my res uh like um + +00:01:02.000 --> 00:01:05.199 +within my research process all right so + +00:01:05.199 --> 00:01:07.920 +I've organized org mode for researchers + +00:01:07.920 --> 00:01:10.400 +and scholars within the writing process + +00:01:10.400 --> 00:01:12.400 +into three modules first there's like + +00:01:12.400 --> 00:01:14.320 +the planning aspect of it + +00:01:14.320 --> 00:01:15.759 +then you've got the writing and the + +00:01:15.759 --> 00:01:17.680 +reference management which I will join + +00:01:17.680 --> 00:01:18.320 +together + +00:01:18.320 --> 00:01:20.560 +by looking at the example of doing your + +00:01:20.560 --> 00:01:21.920 +literature review + +00:01:21.920 --> 00:01:24.720 +all right so when we're talking about + +00:01:24.720 --> 00:01:26.479 +planning we're talking about either task + +00:01:26.479 --> 00:01:27.360 +management or + +00:01:27.360 --> 00:01:30.880 +time management with task management + +00:01:30.880 --> 00:01:31.600 +you've got + +00:01:31.600 --> 00:01:33.840 +org modes to do's and tags and + +00:01:33.840 --> 00:01:36.159 +categories these are really powerful + +00:01:36.159 --> 00:01:38.479 +tools that you could use + +00:01:38.479 --> 00:01:41.600 +um in your org files to just um + +00:01:41.600 --> 00:01:44.799 +uh like organize your tasks and + +00:01:44.799 --> 00:01:47.040 +your appointments so there are different + +00:01:47.040 --> 00:01:49.040 +types of to-do's that you can either set + +00:01:49.040 --> 00:01:50.960 +globally in your init file or they can + +00:01:50.960 --> 00:01:52.799 +be file buffer specific + +00:01:52.799 --> 00:01:55.200 +so that means based on context based on + +00:01:55.200 --> 00:01:56.079 +the type of + +00:01:56.079 --> 00:01:57.759 +manuscript you're working on whether + +00:01:57.759 --> 00:01:59.280 +it's like a literate programming + +00:01:59.280 --> 00:02:02.240 +report or your actual thesis slash + +00:02:02.240 --> 00:02:03.759 +dissertation + +00:02:03.759 --> 00:02:05.840 +um also these to-do's are either created + +00:02:05.840 --> 00:02:07.759 +as a set tree like think of them as + +00:02:07.759 --> 00:02:11.440 +headings and sections if you use latex + +00:02:11.440 --> 00:02:14.800 +or inline text which are like org inline + +00:02:14.800 --> 00:02:15.360 +tasks I + +00:02:15.360 --> 00:02:17.760 +like organ line tasks because like I can + +00:02:17.760 --> 00:02:19.120 +add + +00:02:19.120 --> 00:02:21.520 +to do's between two paragraphs and that + +00:02:21.520 --> 00:02:22.879 +way it doesn't show up + +00:02:22.879 --> 00:02:25.360 +in the table of contents when I export + +00:02:25.360 --> 00:02:27.280 +into pdf or html or + +00:02:27.280 --> 00:02:30.879 +anything else all right so this is an + +00:02:30.879 --> 00:02:34.319 +example of buffer specific to do's + +00:02:34.319 --> 00:02:37.360 +and and this is example of like a little + +00:02:37.360 --> 00:02:39.120 +programming report that I was working on + +00:02:39.120 --> 00:02:40.800 +where I was like dealing with + +00:02:40.800 --> 00:02:43.200 +data and like analysis and all of that + +00:02:43.200 --> 00:02:44.080 +stuff and so + +00:02:44.080 --> 00:02:47.519 +I needed um context specific to do's to + +00:02:47.519 --> 00:02:49.440 +use them within this buffer + +00:02:49.440 --> 00:02:52.080 +um and that's how I would organize it + +00:02:52.080 --> 00:02:54.319 +and there's also also another example + +00:02:54.319 --> 00:02:57.200 +of an org inline task where you could + +00:02:57.200 --> 00:02:57.920 +see it + +00:02:57.920 --> 00:03:01.360 +in the middle between the two headings + +00:03:01.360 --> 00:03:03.040 +that way it wouldn't show up in the + +00:03:03.040 --> 00:03:04.959 +table of contents and it would look like + +00:03:04.959 --> 00:03:06.480 +nature within the + +00:03:06.480 --> 00:03:09.519 +text when you export it + +00:03:09.519 --> 00:03:11.920 +oh but I also added a tag of no export + +00:03:11.920 --> 00:03:13.280 +so it won't show up at all + +00:03:13.280 --> 00:03:16.400 +when I export it into like either pdf + +00:03:16.400 --> 00:03:19.360 +which I use all the time all right so + +00:03:19.360 --> 00:03:21.599 +another useful tool + +00:03:21.599 --> 00:03:24.159 +um for the research and just like + +00:03:24.159 --> 00:03:25.200 +general planning + +00:03:25.200 --> 00:03:27.920 +is the org capture um when I first + +00:03:27.920 --> 00:03:29.120 +started with Emacs + +00:03:29.120 --> 00:03:32.080 +actually it was for org agenda and I + +00:03:32.080 --> 00:03:34.239 +went crazy with my capture template I + +00:03:34.239 --> 00:03:35.360 +created a template for + +00:03:35.360 --> 00:03:37.599 +everything um because I was just so + +00:03:37.599 --> 00:03:38.640 +excited + +00:03:38.640 --> 00:03:40.720 +but with time I was using less and less + +00:03:40.720 --> 00:03:42.400 +of them so I kept taking them out + +00:03:42.400 --> 00:03:46.319 +and now this is my simplified um + +00:03:46.319 --> 00:03:48.239 +capture templates that I use either for + +00:03:48.239 --> 00:03:49.599 +a general to do + +00:03:49.599 --> 00:03:52.159 +um for a regular appointment a fleeting + +00:03:52.159 --> 00:03:54.159 +note research tasks because like those + +00:03:54.159 --> 00:03:55.200 +are what I focus on + +00:03:55.200 --> 00:03:56.959 +like my bread and butter and then + +00:03:56.959 --> 00:03:58.720 +finally with meetings which I find + +00:03:58.720 --> 00:04:00.879 +sometimes I don't use it as much because + +00:04:00.879 --> 00:04:01.680 +I would just like + +00:04:01.680 --> 00:04:03.519 +have the org file ready instead of + +00:04:03.519 --> 00:04:04.879 +needing to capture + +00:04:04.879 --> 00:04:07.920 +you know open a capture template + +00:04:07.920 --> 00:04:11.439 +right or agenda um that's how I got into + +00:04:11.439 --> 00:04:12.400 +Emacs + +00:04:12.400 --> 00:04:15.439 +I needed to um organize my life and I + +00:04:15.439 --> 00:04:16.799 +found Emacs and + +00:04:16.799 --> 00:04:19.199 +it's been great ever since um it + +00:04:19.199 --> 00:04:20.479 +populates all your to-do's and + +00:04:20.479 --> 00:04:22.720 +appointments into a singular view so the + +00:04:22.720 --> 00:04:25.280 +default view I think it's a weak view + +00:04:25.280 --> 00:04:29.120 +however I use org super agenda love this + +00:04:29.120 --> 00:04:31.919 +um package and I set up my agenda as a + +00:04:31.919 --> 00:04:34.160 +daily view with just appointments + +00:04:34.160 --> 00:04:37.360 +deadlines and a habit tracker um and + +00:04:37.360 --> 00:04:38.720 +a side note you guys I'm still + +00:04:38.720 --> 00:04:40.639 +struggling with organizing the perfect + +00:04:40.639 --> 00:04:42.320 +agenda so it's a process + +00:04:42.320 --> 00:04:45.360 +and take it easy all right + +00:04:45.360 --> 00:04:47.919 +so this is just an overview of my daily + +00:04:47.919 --> 00:04:50.320 +agenda as you can see they're just like + +00:04:50.320 --> 00:04:52.800 +appointments that I import from gmail + +00:04:52.800 --> 00:04:55.520 +using org gcal + +00:04:55.520 --> 00:04:57.919 +a simple habit tracker of like daily + +00:04:57.919 --> 00:04:58.880 +free writing + +00:04:58.880 --> 00:05:00.960 +as you can see there are a lot of times + +00:05:00.960 --> 00:05:02.800 +where I'm skipping and the asterisk is + +00:05:02.800 --> 00:05:05.199 +the one where I've completed that day + +00:05:05.199 --> 00:05:08.479 +so you know it's a process and then just + +00:05:08.479 --> 00:05:10.080 +like regular deadlines + +00:05:10.080 --> 00:05:12.639 +so what happens is that I have other + +00:05:12.639 --> 00:05:14.000 +to-do's that I have + +00:05:14.000 --> 00:05:17.120 +not scheduled or not added a deadline + +00:05:17.120 --> 00:05:17.919 +but they're just + +00:05:17.919 --> 00:05:20.560 +tasks that keep piling up when I first + +00:05:20.560 --> 00:05:22.320 +started with Emacs and org agenda + +00:05:22.320 --> 00:05:24.880 +I had everything in there and it got + +00:05:24.880 --> 00:05:26.880 +overwhelming and then I decided no + +00:05:26.880 --> 00:05:29.680 +I'm not gonna even let them show up so + +00:05:29.680 --> 00:05:30.800 +what I would do + +00:05:30.800 --> 00:05:33.120 +at the beginning of each week or the + +00:05:33.120 --> 00:05:34.479 +night before + +00:05:34.479 --> 00:05:36.800 +um I would sit down look at all my to + +00:05:36.800 --> 00:05:38.000 +to-do's that I have + +00:05:38.000 --> 00:05:40.720 +not assigned yet to a deadline or a + +00:05:40.720 --> 00:05:42.639 +schedule or just a simple + +00:05:42.639 --> 00:05:45.360 +timestamp um and I would organize them + +00:05:45.360 --> 00:05:46.320 +throughout the week + +00:05:46.320 --> 00:05:49.520 +so here's an example of what I did + +00:05:49.520 --> 00:05:51.680 +so on that wednesday from my gmail I had + +00:05:51.680 --> 00:05:53.039 +all these appointments but + +00:05:53.039 --> 00:05:55.600 +one of them is I have a writing group + +00:05:55.600 --> 00:05:56.560 +session + +00:05:56.560 --> 00:05:58.400 +and so I looked at my tasks and I + +00:05:58.400 --> 00:05:59.759 +thought okay then I will just + +00:05:59.759 --> 00:06:02.639 +assign um like for example my emac + +00:06:02.639 --> 00:06:03.520 +slides + +00:06:03.520 --> 00:06:06.319 +or the framework diagram into that + +00:06:06.319 --> 00:06:07.280 +writing session + +00:06:07.280 --> 00:06:09.600 +and all I did was just add an active + +00:06:09.600 --> 00:06:10.800 +timestamp + +00:06:10.800 --> 00:06:12.960 +that is all I needed to do and it went + +00:06:12.960 --> 00:06:14.000 +straight into my + +00:06:14.000 --> 00:06:17.120 +appointment now if I miss that + +00:06:17.120 --> 00:06:20.080 +it won't show up on the next day so if + +00:06:20.080 --> 00:06:21.520 +you put in a deadline + +00:06:21.520 --> 00:06:24.639 +it will show up as an overdue but if you + +00:06:24.639 --> 00:06:26.560 +have no deadline or schedule it will not + +00:06:26.560 --> 00:06:29.280 +show up in your daily org agenda + +00:06:29.280 --> 00:06:32.960 +so just a star + +00:06:32.960 --> 00:06:35.680 +all right another way of accessing your + +00:06:35.680 --> 00:06:37.520 +to do's is that if it's + +00:06:37.520 --> 00:06:40.880 +um file specific org file specific + +00:06:40.880 --> 00:06:42.160 +buffer specific + +00:06:42.160 --> 00:06:44.160 +and so like when we talked about like + +00:06:44.160 --> 00:06:46.400 +whether to have a big ass org file or + +00:06:46.400 --> 00:06:47.680 +like tiny files + +00:06:47.680 --> 00:06:50.720 +it all depends and this isn't the the + +00:06:50.720 --> 00:06:54.560 +um you know the way this depends + +00:06:54.560 --> 00:06:55.759 +because if you're working on like a + +00:06:55.759 --> 00:06:58.400 +dissertation um it's a huge manuscript + +00:06:58.400 --> 00:06:59.680 +you need to like work + +00:06:59.680 --> 00:07:02.880 +on that org file all the time um + +00:07:02.880 --> 00:07:05.759 +then yes it might do should be in that + +00:07:05.759 --> 00:07:07.680 +file specifically because every time if + +00:07:07.680 --> 00:07:08.000 +I'm + +00:07:08.000 --> 00:07:09.680 +if I'm visiting this org file all the + +00:07:09.680 --> 00:07:12.479 +time I should be able to just look at my + +00:07:12.479 --> 00:07:15.520 +tasks from uh within that buffer + +00:07:15.520 --> 00:07:18.639 +and so I use org sidebar to + +00:07:18.639 --> 00:07:21.599 +keep all these specific uh to do's + +00:07:21.599 --> 00:07:22.960 +within that org file + +00:07:22.960 --> 00:07:26.560 +I find it helpful okay + +00:07:26.560 --> 00:07:28.400 +now that we're going into the writing + +00:07:28.400 --> 00:07:29.759 +and reference management + +00:07:29.759 --> 00:07:33.039 +we'll call it a literature review um + +00:07:33.039 --> 00:07:35.840 +and this is something I've built as a + +00:07:35.840 --> 00:07:36.639 +schema + +00:07:36.639 --> 00:07:40.240 +I think that it works for now + +00:07:40.240 --> 00:07:43.759 +um and it requires one outside pack + +00:07:43.759 --> 00:07:45.919 +of outside software which is zotero what + +00:07:45.919 --> 00:07:47.680 +I use it's an open source reference + +00:07:47.680 --> 00:07:48.720 +management + +00:07:48.720 --> 00:07:51.759 +software um it's great + +00:07:51.759 --> 00:07:53.599 +but the things to keep in mind is that I + +00:07:53.599 --> 00:07:55.120 +use two um + +00:07:55.120 --> 00:07:58.319 +plugins that is really needed for when + +00:07:58.319 --> 00:08:01.039 +we work with orgrim bibtex and orgrim + +00:08:01.039 --> 00:08:03.840 +and org mode um and the zap file so + +00:08:03.840 --> 00:08:06.160 +better bibtex organizes your reference + +00:08:06.160 --> 00:08:07.039 +keys + +00:08:07.039 --> 00:08:10.560 +um in um in a way like in a fashion that + +00:08:10.560 --> 00:08:13.360 +works for you so for me all my reference + +00:08:13.360 --> 00:08:14.240 +keys are like + +00:08:14.240 --> 00:08:17.280 +last author and gear um and with zap + +00:08:17.280 --> 00:08:21.120 +file I um I let it like rename all the + +00:08:21.120 --> 00:08:22.319 +pdf files + +00:08:22.319 --> 00:08:24.400 +the same way that I have for my bit of + +00:08:24.400 --> 00:08:26.000 +my bib keys which is like + +00:08:26.000 --> 00:08:29.360 +last name of author and year all right + +00:08:29.360 --> 00:08:33.440 +once you export your entire + +00:08:33.440 --> 00:08:37.120 +library as a bib file then you can work + +00:08:37.120 --> 00:08:39.440 +on it within org mode and Emacs + +00:08:39.440 --> 00:08:42.880 +using um the following packages + +00:08:42.880 --> 00:08:45.040 +all right so with orgrim bibtex it + +00:08:45.040 --> 00:08:47.839 +creates an org file for each bib entry + +00:08:47.839 --> 00:08:49.519 +and you have the option of like + +00:08:49.519 --> 00:08:52.240 +templating and doing other stuff with it + +00:08:52.240 --> 00:08:54.880 +and then finally there's like this orb + +00:08:54.880 --> 00:08:56.240 +pdf scraper + +00:08:56.240 --> 00:08:58.800 +I've used it briefly but I think the + +00:08:58.800 --> 00:09:00.240 +potential + +00:09:00.240 --> 00:09:02.880 +with or pdf scraper is if you're gonna + +00:09:02.880 --> 00:09:05.920 +do a bibliometric study or like a + +00:09:05.920 --> 00:09:08.320 +systematic literature view there's + +00:09:08.320 --> 00:09:10.000 +something there but I have to look + +00:09:10.000 --> 00:09:10.959 +through it + +00:09:10.959 --> 00:09:14.399 +anyway so once you create your you know + +00:09:14.399 --> 00:09:16.880 +your reference file of reference x and + +00:09:16.880 --> 00:09:18.160 +you're writing your notes + +00:09:18.160 --> 00:09:20.240 +you can either go like with going + +00:09:20.240 --> 00:09:22.399 +through org mode you're writing + +00:09:22.399 --> 00:09:24.080 +your ideas you're writing your notes + +00:09:24.080 --> 00:09:26.080 +you're assigning tasks + +00:09:26.080 --> 00:09:27.839 +and then there's org transclusion which + +00:09:27.839 --> 00:09:30.480 +I will mention briefly at the end + +00:09:30.480 --> 00:09:32.240 +and ways to extract if you're going to + +00:09:32.240 --> 00:09:35.360 +go through the orgrom + +00:09:35.360 --> 00:09:36.640 +things that you're going to use within + +00:09:36.640 --> 00:09:38.720 +orgrom it's a great way to build your + +00:09:38.720 --> 00:09:40.000 +database you start making the + +00:09:40.000 --> 00:09:42.880 +connections and you can visualize your + +00:09:42.880 --> 00:09:44.959 +notes and like how these references are + +00:09:44.959 --> 00:09:46.240 +linked to each other + +00:09:46.240 --> 00:09:48.839 +through the organ server or or ground + +00:09:48.839 --> 00:09:50.240 +graph + +00:09:50.240 --> 00:09:53.120 +all right this is just notes for later + +00:09:53.120 --> 00:09:53.680 +okay + +00:09:53.680 --> 00:09:56.240 +so this is an example of like an orgram + +00:09:56.240 --> 00:09:57.360 +file that I have + +00:09:57.360 --> 00:09:59.279 +for example if I'm working on adaptation + +00:09:59.279 --> 00:10:01.760 +policy I have these hyperlinks that are + +00:10:01.760 --> 00:10:02.560 +linked to other + +00:10:02.560 --> 00:10:04.959 +concepts and ideas such as either + +00:10:04.959 --> 00:10:06.640 +climate security + +00:10:06.640 --> 00:10:08.720 +um changing global environment so on and + +00:10:08.720 --> 00:10:10.560 +so forth and the backlinks + +00:10:10.560 --> 00:10:13.920 +are other references that talk about + +00:10:13.920 --> 00:10:15.839 +this specific concept + +00:10:15.839 --> 00:10:17.680 +so this is really helpful and then when + +00:10:17.680 --> 00:10:19.920 +you visualize it the picture on the left + +00:10:19.920 --> 00:10:22.160 +which I'm sure looks really small + +00:10:22.160 --> 00:10:24.160 +um you can see the connections that it's + +00:10:24.160 --> 00:10:25.680 +making with other + +00:10:25.680 --> 00:10:28.160 +references so of course this is just + +00:10:28.160 --> 00:10:29.760 +like a buffer + +00:10:29.760 --> 00:10:32.720 +network when you look at the entire + +00:10:32.720 --> 00:10:34.560 +database network it's it's + +00:10:34.560 --> 00:10:38.000 +it's growing okay + +00:10:38.000 --> 00:10:41.680 +so going into organ bidtech + +00:10:41.680 --> 00:10:44.079 +so it utilizes a combination of the or + +00:10:44.079 --> 00:10:46.000 +graph package helmbik tech candidate + +00:10:46.000 --> 00:10:46.880 +completion + +00:10:46.880 --> 00:10:50.079 +and it works with orgrom functionalities + +00:10:50.079 --> 00:10:51.440 +and + +00:10:51.440 --> 00:10:54.880 +other good stuff this is an example + +00:10:54.880 --> 00:10:57.440 +of my orgrim bibtex file all right so + +00:10:57.440 --> 00:10:58.720 +I've created + +00:10:58.720 --> 00:11:01.200 +um the template which I pretty much use + +00:11:01.200 --> 00:11:02.320 +what leo + +00:11:02.320 --> 00:11:05.920 +has uh produced like in his um + +00:11:05.920 --> 00:11:08.640 +tutorial so I think it's it's great it + +00:11:08.640 --> 00:11:10.160 +works well for me + +00:11:10.160 --> 00:11:12.880 +um and what it does is that it works + +00:11:12.880 --> 00:11:14.480 +with your bib file + +00:11:14.480 --> 00:11:17.519 +so if you're in your bib file you have a + +00:11:17.519 --> 00:11:19.519 +sub entry that's called keywords and + +00:11:19.519 --> 00:11:21.040 +usually that's within + +00:11:21.040 --> 00:11:23.120 +a journal article the author would + +00:11:23.120 --> 00:11:24.560 +specify these + +00:11:24.560 --> 00:11:27.519 +keywords um when it gets imported into + +00:11:27.519 --> 00:11:28.160 +zotero + +00:11:28.160 --> 00:11:30.399 +it extracts those keywords and then it + +00:11:30.399 --> 00:11:32.399 +gets populated as an org file + +00:11:32.399 --> 00:11:34.959 +with orgrim bibtex so I always start + +00:11:34.959 --> 00:11:36.959 +with the meta information first and then + +00:11:36.959 --> 00:11:38.560 +I would write my notes + +00:11:38.560 --> 00:11:42.480 +after that this is an example though + +00:11:42.480 --> 00:11:45.760 +for reference of a physical book so + +00:11:45.760 --> 00:11:49.120 +I don't have a pdf file for it um + +00:11:49.120 --> 00:11:51.519 +so what I've figured out like a new idea + +00:11:51.519 --> 00:11:53.920 +for it so if I'm writing notes on it + +00:11:53.920 --> 00:11:55.760 +I would create a property that says + +00:11:55.760 --> 00:11:57.279 +pages um + +00:11:57.279 --> 00:11:58.959 +that way it's easier for you when you go + +00:11:58.959 --> 00:12:00.639 +back to citing + +00:12:00.639 --> 00:12:02.720 +um certain ideas or something that you + +00:12:02.720 --> 00:12:04.720 +have the pages prepared there + +00:12:04.720 --> 00:12:07.839 +it's easier that way okay + +00:12:07.839 --> 00:12:11.279 +org noter which is something I + +00:12:11.279 --> 00:12:13.040 +use a lot especially with journal + +00:12:13.040 --> 00:12:14.880 +articles that have pdfs and stuff like + +00:12:14.880 --> 00:12:15.600 +that + +00:12:15.600 --> 00:12:19.120 +they're really helpful if you are gonna + +00:12:19.120 --> 00:12:22.720 +if you've just started using um Emacs + +00:12:22.720 --> 00:12:23.760 +and orgrim + +00:12:23.760 --> 00:12:26.959 +and you have all these pdfs that have + +00:12:26.959 --> 00:12:29.519 +all the annotations and highlighting and + +00:12:29.519 --> 00:12:30.079 +the + +00:12:30.079 --> 00:12:32.639 +all that stuff with org noter you can + +00:12:32.639 --> 00:12:33.200 +just + +00:12:33.200 --> 00:12:36.720 +use the org note or create skeleton + +00:12:36.720 --> 00:12:39.519 +uh command and it will populate all your + +00:12:39.519 --> 00:12:41.200 +notes that have already been + +00:12:41.200 --> 00:12:43.760 +um entered within the pdf file if you're + +00:12:43.760 --> 00:12:44.800 +using an outside + +00:12:44.800 --> 00:12:48.160 +software and creates them like as a neat + +00:12:48.160 --> 00:12:52.560 +org file I I highly recommend + +00:12:52.560 --> 00:12:55.920 +finally org transclusion um + +00:12:55.920 --> 00:12:57.920 +I think this is still in its beta phase + +00:12:57.920 --> 00:13:01.040 +but I've been enjoying it so far + +00:13:01.040 --> 00:13:02.720 +um I'm guessing people know what + +00:13:02.720 --> 00:13:04.800 +translation mean which is sort of like + +00:13:04.800 --> 00:13:06.480 +copy pasting text from + +00:13:06.480 --> 00:13:09.600 +one org file to another this is helpful + +00:13:09.600 --> 00:13:11.839 +I I think I I peeked at a question that + +00:13:11.839 --> 00:13:12.959 +was talking about like + +00:13:12.959 --> 00:13:16.320 +you know linking um to other org files + +00:13:16.320 --> 00:13:18.320 +I think org transclusion could really + +00:13:18.320 --> 00:13:20.320 +work okay it's + +00:13:20.320 --> 00:13:24.399 +equivalent to the include + +00:13:24.399 --> 00:13:27.760 +function within org mode um but I think + +00:13:27.760 --> 00:13:29.519 +so like if you have other files + +00:13:29.519 --> 00:13:32.560 +that you know which region that you + +00:13:32.560 --> 00:13:34.800 +need in another file you could use the + +00:13:34.800 --> 00:13:36.079 +include but with + +00:13:36.079 --> 00:13:38.160 +org transclusion it's great I mean you + +00:13:38.160 --> 00:13:39.440 +just have + +00:13:39.440 --> 00:13:42.720 +um you're just linking one part to the + +00:13:42.720 --> 00:13:43.360 +other + +00:13:43.360 --> 00:13:45.760 +sort of like not refiling but you know + +00:13:45.760 --> 00:13:47.760 +hyperlinking + +00:13:47.760 --> 00:13:49.680 +so this is an example of what org + +00:13:49.680 --> 00:13:51.120 +transclusion looks like + +00:13:51.120 --> 00:13:53.680 +um so the highlighted problem statement + +00:13:53.680 --> 00:13:54.720 +is from another + +00:13:54.720 --> 00:13:57.760 +org file and then what I would do is + +00:13:57.760 --> 00:13:58.240 +just like + +00:13:58.240 --> 00:13:59.760 +link it to there and there was like a + +00:13:59.760 --> 00:14:01.440 +transclusion command + +00:14:01.440 --> 00:14:05.440 +I wish I made another screenshot of it + +00:14:05.440 --> 00:14:08.399 +and so when you invoke org transclusion + +00:14:08.399 --> 00:14:09.120 +mode + +00:14:09.120 --> 00:14:12.079 +it turns um it prints it out like that + +00:14:12.079 --> 00:14:12.480 +so + +00:14:12.480 --> 00:14:15.120 +it's in view mode and then when you want + +00:14:15.120 --> 00:14:16.560 +to edit it will take you back to that + +00:14:16.560 --> 00:14:18.480 +buffer and you can edit the text + +00:14:18.480 --> 00:14:21.839 +however you want all right so thank you + +00:14:21.839 --> 00:14:22.720 +so much + +00:14:22.720 --> 00:14:26.000 +um I wanted to leave room for questions + +00:14:26.000 --> 00:14:29.120 +but special thanks to all the folks that + +00:14:29.120 --> 00:14:32.560 +work on orgrom or ground bibtex orgrim + +00:14:32.560 --> 00:14:33.440 +server or + +00:14:33.440 --> 00:14:36.320 +transclusion and of course alpha papo on + +00:14:36.320 --> 00:14:38.240 +or super agenda and org sidebar + +00:14:38.240 --> 00:14:43.440 +that's how I got into Emacs thank you + +00:14:43.440 --> 00:14:45.600 +all right and uh well thank you so yeah + +00:14:45.600 --> 00:14:47.120 +this time I'll be the one asking the + +00:14:47.120 --> 00:14:49.120 +question and not I'm in so + +00:14:49.120 --> 00:14:51.360 +I'm feeling filling big shoes right now + +00:14:51.360 --> 00:14:53.120 +so you'll have to bear with me folks + +00:14:53.120 --> 00:14:54.880 +so thank you so much noora for your + +00:14:54.880 --> 00:14:56.240 +presentation that is incredibly + +00:14:56.240 --> 00:14:57.279 +interesting + +00:14:57.279 --> 00:14:58.959 +so would you mind if I fed you questions + +00:14:58.959 --> 00:15:00.800 +from the charts yeah + +00:15:00.800 --> 00:15:04.000 +go ahead okay so the first one I I've + +00:15:04.000 --> 00:15:06.160 +picked on my end was did you try using + +00:15:06.160 --> 00:15:07.920 +ebib instead of zotero + +00:15:07.920 --> 00:15:10.560 +and if so is it better than zotero in + +00:15:10.560 --> 00:15:12.079 +some ways + +00:15:12.079 --> 00:15:14.880 +I no I have not used eb I've only used + +00:15:14.880 --> 00:15:15.680 +mendeley + +00:15:15.680 --> 00:15:18.560 +and then they got bought by el savior + +00:15:18.560 --> 00:15:20.320 +and so like I was like okay I'm done + +00:15:20.320 --> 00:15:23.040 +I'm going to zotero um there are a lot + +00:15:23.040 --> 00:15:25.120 +of plugins with zotero that you can play + +00:15:25.120 --> 00:15:26.240 +around with + +00:15:26.240 --> 00:15:28.320 +so I can't speak for ebit but definitely + +00:15:28.320 --> 00:15:30.480 +zotero it's been a good experience so + +00:15:30.480 --> 00:15:32.079 +far + +00:15:32.079 --> 00:15:34.880 +yes same I also I also do research on + +00:15:34.880 --> 00:15:35.360 +the site + +00:15:35.360 --> 00:15:38.079 +as I told you english major and yeah I + +00:15:38.079 --> 00:15:39.360 +also do zotero + +00:15:39.360 --> 00:15:41.839 +some people have been using uh a + +00:15:41.839 --> 00:15:43.759 +connector between zotero and Emacs which + +00:15:43.759 --> 00:15:44.160 +has + +00:15:44.160 --> 00:15:46.000 +they've had great success with them but + +00:15:46.000 --> 00:15:47.360 +personally I haven't touched + +00:15:47.360 --> 00:15:50.480 +touched it already so yeah + +00:15:50.480 --> 00:15:52.240 +oh go ahead sorry all right so far I + +00:15:52.240 --> 00:15:53.920 +don't have any problems with zotero but + +00:15:53.920 --> 00:15:54.880 +maybe if I + +00:15:54.880 --> 00:15:56.320 +run into something I might check out + +00:15:56.320 --> 00:15:58.320 +ebay in the future + +00:15:58.320 --> 00:16:00.240 +yeah definitely I think zotero is a very + +00:16:00.240 --> 00:16:01.680 +solid project and you know the fact that + +00:16:01.680 --> 00:16:02.560 +it's being used + +00:16:02.560 --> 00:16:04.959 +by people outside of Emacs also ensures + +00:16:04.959 --> 00:16:06.560 +that there's quite a lot of packing + +00:16:06.560 --> 00:16:07.680 +behind the software + +00:16:07.680 --> 00:16:09.759 +which is reassuring when your livelihood + +00:16:09.759 --> 00:16:11.759 +depends on your research + +00:16:11.759 --> 00:16:13.519 +right and then I think one more thing + +00:16:13.519 --> 00:16:15.600 +with zotero is that you can create + +00:16:15.600 --> 00:16:17.519 +groups so if you're in a collaborative + +00:16:17.519 --> 00:16:18.079 +project + +00:16:18.079 --> 00:16:20.160 +you can create a reference you know a + +00:16:20.160 --> 00:16:22.320 +library just for your group and I think + +00:16:22.320 --> 00:16:23.759 +that could help because like I + +00:16:23.759 --> 00:16:25.279 +I'm going to be in a project next + +00:16:25.279 --> 00:16:27.600 +semester that requires that + +00:16:27.600 --> 00:16:29.839 +yeah definitely I believe the ability to + +00:16:29.839 --> 00:16:31.600 +have folders inside zotero + +00:16:31.600 --> 00:16:33.839 +makes it incredibly useful to manage + +00:16:33.839 --> 00:16:35.360 +your different projects concurrent + +00:16:35.360 --> 00:16:37.440 +projects + +00:16:37.440 --> 00:16:39.279 +so moving on to the questions do you + +00:16:39.279 --> 00:16:41.279 +have any suggestion on what subjects or + +00:16:41.279 --> 00:16:43.440 +things should be tags or separate organ + +00:16:43.440 --> 00:16:46.560 +files for cross-linking + +00:16:46.560 --> 00:16:50.320 +right um so so far now like I'm having + +00:16:50.320 --> 00:16:52.720 +trouble with like should I be combining + +00:16:52.720 --> 00:16:55.360 +certain concepts together as one like + +00:16:55.360 --> 00:16:55.839 +this is + +00:16:55.839 --> 00:16:59.360 +where the the thought process you know + +00:16:59.360 --> 00:17:00.959 +starts coming to fruit is that when you + +00:17:00.959 --> 00:17:02.959 +start you know combining + +00:17:02.959 --> 00:17:04.880 +ideas together so you won't need a + +00:17:04.880 --> 00:17:06.480 +specific tag + +00:17:06.480 --> 00:17:09.199 +and another one that are like similar in + +00:17:09.199 --> 00:17:11.280 +ideas + +00:17:11.280 --> 00:17:12.720 +I'm not sure if that answers the + +00:17:12.720 --> 00:17:14.799 +question but like so far I've been using + +00:17:14.799 --> 00:17:15.919 +the orgrum + +00:17:15.919 --> 00:17:17.919 +you know the default way which is like + +00:17:17.919 --> 00:17:19.039 +many small + +00:17:19.039 --> 00:17:22.160 +um files and then just + +00:17:22.160 --> 00:17:24.400 +linking them to my like either if I have + +00:17:24.400 --> 00:17:26.319 +a report to write or if I have a like + +00:17:26.319 --> 00:17:26.959 +you know + +00:17:26.959 --> 00:17:32.240 +essay to write + +00:17:32.240 --> 00:17:35.360 +I think you're muted + +00:17:35.360 --> 00:17:37.760 +q and I just I did two stupid things the + +00:17:37.760 --> 00:17:38.400 +first one + +00:17:38.400 --> 00:17:40.640 +was filling up my water the second one + +00:17:40.640 --> 00:17:42.320 +was peeking without actually turning on + +00:17:42.320 --> 00:17:43.760 +my microphone + +00:17:43.760 --> 00:17:45.760 +so let's just hope that nothing is going + +00:17:45.760 --> 00:17:47.760 +to fry in the near vicinity of me right + +00:17:47.760 --> 00:17:48.320 +now + +00:17:48.320 --> 00:17:49.840 +but uh yeah I believe you've answered + +00:17:49.840 --> 00:17:51.440 +the question so don't worry about it I'm + +00:17:51.440 --> 00:17:53.200 +slightly wet right now which is not a + +00:17:53.200 --> 00:17:55.280 +very agreeable feeling but we'll have to + +00:17:55.280 --> 00:17:57.280 +carry on I suppose + +00:17:57.280 --> 00:17:59.360 +another question is there a place where + +00:17:59.360 --> 00:18:01.600 +people are collaborating on research + +00:18:01.600 --> 00:18:04.320 +about Emacs so do you want to try to + +00:18:04.320 --> 00:18:06.160 +take this one + +00:18:06.160 --> 00:18:08.559 +um I don't know but I'm definitely + +00:18:08.559 --> 00:18:10.559 +interested in the user experience of + +00:18:10.559 --> 00:18:12.480 +Emacs so + +00:18:12.480 --> 00:18:14.720 +if anyone wants to work on that I'm + +00:18:14.720 --> 00:18:16.400 +happy + +00:18:16.400 --> 00:18:18.320 +well you do have a a pretty good + +00:18:18.320 --> 00:18:19.760 +candidate in front of you if I + +00:18:19.760 --> 00:18:22.080 +should say so myself I'm incredibly + +00:18:22.080 --> 00:18:22.960 +interested about + +00:18:22.960 --> 00:18:25.039 +um the ability to do research in Emacs + +00:18:25.039 --> 00:18:26.960 +and about the ability to + +00:18:26.960 --> 00:18:30.480 +um preach the floss way + +00:18:30.480 --> 00:18:32.480 +to academia and to the academe + +00:18:32.480 --> 00:18:34.080 +especially because I believe there's + +00:18:34.080 --> 00:18:35.280 +really something + +00:18:35.280 --> 00:18:38.240 +great to be done sorry I'm just looking + +00:18:38.240 --> 00:18:39.919 +at the puddle of water on the side which + +00:18:39.919 --> 00:18:41.840 +is slightly oozing my way + +00:18:41.840 --> 00:18:45.039 +which is not a very good feeling really + +00:18:45.039 --> 00:18:46.880 +but yeah I believe I believe some work + +00:18:46.880 --> 00:18:48.320 +could be done and if people are + +00:18:48.320 --> 00:18:50.000 +interested in the chat right now + +00:18:50.000 --> 00:18:52.320 +I mean do get in touch with us both + +00:18:52.320 --> 00:18:53.440 +neuron and I + +00:18:53.440 --> 00:18:56.480 +are on our slack channel yes I know + +00:18:56.480 --> 00:18:57.280 +slack + +00:18:57.280 --> 00:19:00.080 +the corporate hive mind that it's like + +00:19:00.080 --> 00:19:01.919 +but we've decided with orgrim to use + +00:19:01.919 --> 00:19:02.720 +slack + +00:19:02.720 --> 00:19:05.520 +but you can find us very easily and uh + +00:19:05.520 --> 00:19:06.880 +if you want to talk about these topics + +00:19:06.880 --> 00:19:07.360 +yes + +00:19:07.360 --> 00:19:08.720 +by all means do and we'll be very + +00:19:08.720 --> 00:19:10.720 +interested to answer your questions + +00:19:10.720 --> 00:19:12.640 +so I have a question here says like how + +00:19:12.640 --> 00:19:15.520 +does the view for time blocking works + +00:19:15.520 --> 00:19:18.640 +um I use org super agenda so + +00:19:18.640 --> 00:19:22.000 +um what happens is that my active + +00:19:22.000 --> 00:19:23.200 +timestamps are + +00:19:23.200 --> 00:19:26.960 +only in my gmail or file + +00:19:26.960 --> 00:19:29.200 +so if you use org gcal you have to + +00:19:29.200 --> 00:19:30.080 +specify + +00:19:30.080 --> 00:19:32.559 +a certain org file and when it you know + +00:19:32.559 --> 00:19:34.320 +imports them it imports them as like + +00:19:34.320 --> 00:19:35.679 +active + +00:19:35.679 --> 00:19:38.400 +timestamps and I make sure whenever I + +00:19:38.400 --> 00:19:40.480 +create a to-do or even a research task + +00:19:40.480 --> 00:19:42.480 +that it doesn't have a time stamp on it + +00:19:42.480 --> 00:19:45.039 +because what I want to do is go back + +00:19:45.039 --> 00:19:48.480 +and then move around um these tags + +00:19:48.480 --> 00:19:50.160 +according to my you know either weekly + +00:19:50.160 --> 00:19:51.919 +schedule or monthly or however long you + +00:19:51.919 --> 00:19:52.960 +want to do it + +00:19:52.960 --> 00:19:56.480 +um so yeah only active timestamps or + +00:19:56.480 --> 00:19:59.679 +deadlines um appear in your time grid + +00:19:59.679 --> 00:20:03.280 +so that could work um that's very good + +00:20:03.280 --> 00:20:05.440 +just just to uh interject for a second + +00:20:05.440 --> 00:20:06.320 +about this + +00:20:06.320 --> 00:20:07.840 +you know with orgrim right now we're + +00:20:07.840 --> 00:20:10.720 +mostly uh focused on optimization + +00:20:10.720 --> 00:20:13.039 +but we're hoping to move on to ux very + +00:20:13.039 --> 00:20:14.720 +soon so all those matters about + +00:20:14.720 --> 00:20:16.720 +you know having to do's in your files it + +00:20:16.720 --> 00:20:18.159 +is something that we've been thinking + +00:20:18.159 --> 00:20:20.000 +about with jethro kwan who is my main + +00:20:20.000 --> 00:20:20.880 +commentator + +00:20:20.880 --> 00:20:23.280 +or grow and we'll be working on this in + +00:20:23.280 --> 00:20:24.480 +the coming months so don't worry too + +00:20:24.480 --> 00:20:26.080 +much about it and stay tuned + +00:20:26.080 --> 00:20:29.760 +yeah um so I've got the ebib + +00:20:29.760 --> 00:20:33.200 +and what else um what subjects I think + +00:20:33.200 --> 00:20:34.080 +okay + +00:20:34.080 --> 00:20:35.919 +what is this question have you seen the + +00:20:35.919 --> 00:20:37.120 +project papi's + +00:20:37.120 --> 00:20:40.400 +I'm not sure what oh it's a zotero + +00:20:40.400 --> 00:20:41.280 +alternative okay + +00:20:41.280 --> 00:20:43.840 +I'll look into it thank you I don't know + +00:20:43.840 --> 00:20:45.919 +I don't know about it either so + +00:20:45.919 --> 00:20:49.600 +please look into it and let me know yeah + +00:20:49.600 --> 00:20:53.200 +um have we covered all the questions + +00:20:53.200 --> 00:20:55.679 +I believe we have and we have about + +00:20:55.679 --> 00:20:56.880 +two-minute leeway + +00:20:56.880 --> 00:20:58.880 +for me to move into the next talk so + +00:20:58.880 --> 00:21:00.240 +we're right on time + +00:21:00.240 --> 00:21:01.760 +all right thank you so much really + +00:21:01.760 --> 00:21:04.159 +appreciate it and good luck everyone + +00:21:04.159 --> 00:21:05.440 +well thank you and thank you so much for + +00:21:05.440 --> 00:21:07.600 +coming and uh doing allowing me not to + +00:21:07.600 --> 00:21:08.400 +be the only one + +00:21:08.400 --> 00:21:11.440 +talking about all room today sounds good + +00:21:11.440 --> 00:21:14.559 +all right thank you both very much + +00:21:14.559 --> 00:21:16.799 +yes diff --git a/2020/subtitles/emacsconf-2020--18-org-roam-technical-presentation--leo-vivier-autogen.vtt b/2020/subtitles/emacsconf-2020--18-org-roam-technical-presentation--leo-vivier-autogen.vtt new file mode 100644 index 00000000..847dfac4 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--18-org-roam-technical-presentation--leo-vivier-autogen.vtt @@ -0,0 +1,1804 @@ +WEBVTT + +00:00:00.000 --> 00:00:02.399 +at the end we are right on time so I'm + +00:00:02.399 --> 00:00:03.760 +sorry if you have a lot of questions + +00:00:03.760 --> 00:00:04.319 +before + +00:00:04.319 --> 00:00:06.960 +you had some so many questions and I + +00:00:06.960 --> 00:00:08.559 +couldn't answer all of them and I'm + +00:00:08.559 --> 00:00:10.080 +really happy about it but I'm also + +00:00:10.080 --> 00:00:11.599 +really sad that I don't have enough time + +00:00:11.599 --> 00:00:12.719 +to do so + +00:00:12.719 --> 00:00:15.040 +so I'm gonna try to do a better job this + +00:00:15.040 --> 00:00:17.119 +time of leaving you a little more time + +00:00:17.119 --> 00:00:20.240 +for the questions so just before + +00:00:20.240 --> 00:00:22.960 +a little addendum because I did screw up + +00:00:22.960 --> 00:00:24.400 +in the previous presentation + +00:00:24.400 --> 00:00:27.439 +you remember I tried to rename the file + +00:00:27.439 --> 00:00:28.800 +and it didn't work + +00:00:28.800 --> 00:00:31.599 +well it turns out uh I had two file name + +00:00:31.599 --> 00:00:32.559 +baz so + +00:00:32.559 --> 00:00:34.480 +my software works great thank you very + +00:00:34.480 --> 00:00:36.000 +much uh + +00:00:36.000 --> 00:00:38.800 +all right so now what I'm gonna do + +00:00:38.800 --> 00:00:40.239 +during this presentation + +00:00:40.239 --> 00:00:43.040 +is that I'm going to oops I didn't stop + +00:00:43.040 --> 00:00:44.399 +my timer just give me + +00:00:44.399 --> 00:00:47.520 +a little second and let's subtract + +00:00:47.520 --> 00:00:50.719 +one minute okay good so + +00:00:50.719 --> 00:00:52.239 +what I'm going to do right now it's a + +00:00:52.239 --> 00:00:54.079 +little different from the previous + +00:00:54.079 --> 00:00:56.879 +talk I've gave you and different even + +00:00:56.879 --> 00:00:58.239 +from what nura gave you + +00:00:58.239 --> 00:01:00.480 +there's like uh scaling the mountain as + +00:01:00.480 --> 00:01:02.399 +far as difficulty is concerned and on + +00:01:02.399 --> 00:01:03.359 +this one + +00:01:03.359 --> 00:01:04.879 +I will be telling you about the + +00:01:04.879 --> 00:01:06.799 +technical aspects of orgrim + +00:01:06.799 --> 00:01:09.360 +because you know I've been telling you + +00:01:09.360 --> 00:01:11.119 +about the general philosophy + +00:01:11.119 --> 00:01:13.119 +of the notes and the general philosophy + +00:01:13.119 --> 00:01:14.560 +of organization + +00:01:14.560 --> 00:01:16.159 +but right now I really want to get into + +00:01:16.159 --> 00:01:18.479 +the nitty gritty about or grow + +00:01:18.479 --> 00:01:22.640 +so if we go in the git repository + +00:01:22.640 --> 00:01:25.759 +this at the very core is all grown and + +00:01:25.759 --> 00:01:27.920 +for some of you who have no experience + +00:01:27.920 --> 00:01:28.960 +whatsoever + +00:01:28.960 --> 00:01:31.280 +uh developing stuff or programming or + +00:01:31.280 --> 00:01:32.880 +anything along those lines + +00:01:32.880 --> 00:01:36.000 +this is how all the development around + +00:01:36.000 --> 00:01:36.720 +the world + +00:01:36.720 --> 00:01:40.000 +is working you have a repository a + +00:01:40.000 --> 00:01:42.159 +git repository where you have all the + +00:01:42.159 --> 00:01:44.399 +files all the libraries you're using + +00:01:44.399 --> 00:01:46.399 +all the programs all the commands + +00:01:46.399 --> 00:01:48.720 +everything is inside your files + +00:01:48.720 --> 00:01:52.240 +and in a way this is the organ project + +00:01:52.240 --> 00:01:53.759 +you can see that we have many files we + +00:01:53.759 --> 00:01:55.600 +have organ buffer capture compat + +00:01:55.600 --> 00:01:57.040 +completion dailies + +00:01:57.040 --> 00:02:00.399 +etc etc so + +00:02:00.399 --> 00:02:02.000 +before we dive a little deeper I just + +00:02:02.000 --> 00:02:04.079 +want to give you a lay of the land so to + +00:02:04.079 --> 00:02:04.640 +speak to + +00:02:04.640 --> 00:02:08.160 +to know where we're heading so + +00:02:08.160 --> 00:02:11.680 +orgro is built on top of old mode + +00:02:11.680 --> 00:02:15.599 +and org mode gives us plenty of tools + +00:02:15.599 --> 00:02:17.760 +to play around with the files I'm moving + +00:02:17.760 --> 00:02:18.800 +the glass I'm + +00:02:18.800 --> 00:02:20.080 +I'm starting to move my hands a little + +00:02:20.080 --> 00:02:21.360 +bit you know when I get excited about + +00:02:21.360 --> 00:02:22.959 +something I move my hand + +00:02:22.959 --> 00:02:26.640 +and then that stuff happens so + +00:02:26.640 --> 00:02:29.360 +in all chrome we have org mode and + +00:02:29.360 --> 00:02:31.360 +augment gives us plenty of tools which + +00:02:31.360 --> 00:02:33.360 +are incredibly useful + +00:02:33.360 --> 00:02:36.560 +for writing stuff so you know we already + +00:02:36.560 --> 00:02:37.440 +have the links + +00:02:37.440 --> 00:02:39.440 +we already have the hierarchy which is + +00:02:39.440 --> 00:02:40.560 +given by having + +00:02:40.560 --> 00:02:43.360 +trees within trees within trees we have + +00:02:43.360 --> 00:02:43.760 +uh + +00:02:43.760 --> 00:02:45.760 +quote blocks we have babel blocks we + +00:02:45.760 --> 00:02:48.000 +have so much stuff we have an arsenal of + +00:02:48.000 --> 00:02:49.680 +tools that have been developed + +00:02:49.680 --> 00:02:53.519 +for the last 15 years and + +00:02:53.519 --> 00:02:56.640 +when you think about it all chrome just + +00:02:56.640 --> 00:02:59.760 +wants to create backlinks but it sounds + +00:02:59.760 --> 00:03:01.360 +something very simple but the problem is + +00:03:01.360 --> 00:03:02.239 +that we need + +00:03:02.239 --> 00:03:05.519 +to play nicely with all of those + +00:03:05.519 --> 00:03:06.400 +intricate + +00:03:06.400 --> 00:03:09.360 +pieces and the fact is it takes quite a + +00:03:09.360 --> 00:03:10.879 +lot of expertise to be able to do so + +00:03:10.879 --> 00:03:11.440 +because + +00:03:11.440 --> 00:03:14.400 +if right now we are in the brain of all + +00:03:14.400 --> 00:03:15.200 +grow + +00:03:15.200 --> 00:03:18.959 +but if I show you the brain of org mode + +00:03:18.959 --> 00:03:21.599 +so this is the brain of org mode and it + +00:03:21.599 --> 00:03:23.280 +looks very simple like this because I + +00:03:23.280 --> 00:03:25.519 +haven't entered the less folder + +00:03:25.519 --> 00:03:28.000 +but I'm just going to enter it I'm going + +00:03:28.000 --> 00:03:29.120 +to + +00:03:29.120 --> 00:03:32.000 +zoom out a little bit don't worry if you + +00:03:32.000 --> 00:03:32.959 +don't see everything + +00:03:32.959 --> 00:03:35.519 +but I just want you to get a fear the + +00:03:35.519 --> 00:03:37.519 +sheer feel of magnitude + +00:03:37.519 --> 00:03:41.280 +that is um org mode so right now we are + +00:03:41.280 --> 00:03:42.640 +in a very small size what I'm gonna do + +00:03:42.640 --> 00:03:43.760 +I'm going to skip + +00:03:43.760 --> 00:03:47.519 +one page okay one two + +00:03:47.519 --> 00:03:51.040 +three we have let's just check how many + +00:03:51.040 --> 00:03:52.319 +lines we have + +00:03:52.319 --> 00:03:54.640 +okay let me just revert to a fairly + +00:03:54.640 --> 00:03:56.480 +readable side + +00:03:56.480 --> 00:03:58.560 +at the bottom you can see that we have + +00:03:58.560 --> 00:03:59.599 +oh it's not showing because it's a + +00:03:59.599 --> 00:04:00.959 +little small okay I'm just going to + +00:04:00.959 --> 00:04:03.840 +resize the window a little bit + +00:04:03.840 --> 00:04:06.959 +it's not showing up give me a second I + +00:04:06.959 --> 00:04:08.720 +can't see how many lines I have okay so + +00:04:08.720 --> 00:04:10.159 +let's do it to get away + +00:04:10.159 --> 00:04:11.840 +I'm going to go back at the beginning of + +00:04:11.840 --> 00:04:14.000 +the buffer and we're going to count + +00:04:14.000 --> 00:04:16.160 +how many lines we have so the bottom in + +00:04:16.160 --> 00:04:17.840 +a midi buffer and the mini buffer is + +00:04:17.840 --> 00:04:18.880 +this area + +00:04:18.880 --> 00:04:22.320 +we have 377 lines + +00:04:22.320 --> 00:04:25.919 +which means 377 + +00:04:25.919 --> 00:04:29.759 +libraries within org mode and mind you + +00:04:29.759 --> 00:04:31.520 +that's not counting all the modules that + +00:04:31.520 --> 00:04:32.960 +we have on the side which + +00:04:32.960 --> 00:04:36.240 +come on top of volt mode now when you + +00:04:36.240 --> 00:04:37.360 +try to think + +00:04:37.360 --> 00:04:40.639 +about something so elemental + +00:04:40.639 --> 00:04:44.400 +as links you have to think about how to + +00:04:44.400 --> 00:04:45.520 +play well + +00:04:45.520 --> 00:04:48.560 +with every single one of these modules + +00:04:48.560 --> 00:04:50.000 +now obviously not + +00:04:50.000 --> 00:04:53.759 +the 370 370. sometimes you know + +00:04:53.759 --> 00:04:56.080 +one module it's not going to do anything + +00:04:56.080 --> 00:04:57.680 +like I'm not sure op car could be doing + +00:04:57.680 --> 00:04:58.639 +anything with it + +00:04:58.639 --> 00:05:00.080 +but it's something that we have to keep + +00:05:00.080 --> 00:05:03.039 +in mind and so + +00:05:03.039 --> 00:05:04.720 +really early on when we started + +00:05:04.720 --> 00:05:07.520 +developing all grown with jethro kwan my + +00:05:07.520 --> 00:05:10.080 +co-maintainer you know we had this idea + +00:05:10.080 --> 00:05:10.639 +that + +00:05:10.639 --> 00:05:13.520 +we wanted to develop something that was + +00:05:13.520 --> 00:05:14.639 +optimized + +00:05:14.639 --> 00:05:18.240 +something that would you know scale very + +00:05:18.240 --> 00:05:20.160 +nicely whether or not you had + +00:05:20.160 --> 00:05:21.600 +you know something that would work as + +00:05:21.600 --> 00:05:24.560 +fast if you had 10 files + +00:05:24.560 --> 00:05:27.680 +or if you had 100 files or if you had + +00:05:27.680 --> 00:05:30.880 +10 000 files and maybe more so the + +00:05:30.880 --> 00:05:32.080 +problem when you do this + +00:05:32.080 --> 00:05:34.400 +and I'm doing some callbacks to the talk + +00:05:34.400 --> 00:05:36.320 +I gave you earlier today about + +00:05:36.320 --> 00:05:41.280 +few small few big files this is many + +00:05:41.280 --> 00:05:44.800 +I got confused few big files versus many + +00:05:44.800 --> 00:05:45.919 +small files + +00:05:45.919 --> 00:05:49.280 +the problem with this is that we need to + +00:05:49.280 --> 00:05:51.600 +think about optimization from the get go + +00:05:51.600 --> 00:05:53.680 +and so one of the decision we took when + +00:05:53.680 --> 00:05:54.800 +we got started + +00:05:54.800 --> 00:05:59.199 +with orgrum is that if I go in my + +00:05:59.199 --> 00:06:02.479 +test repository so that's the one in + +00:06:02.479 --> 00:06:04.240 +which we were right before + +00:06:04.240 --> 00:06:08.000 +we have a file which is called orgrumdb + +00:06:08.000 --> 00:06:11.600 +now if I open it it's not it's a + +00:06:11.600 --> 00:06:14.160 +little garbage because uh it's a binary + +00:06:14.160 --> 00:06:15.120 +but what we have + +00:06:15.120 --> 00:06:18.560 +is a database with which we communicate + +00:06:18.560 --> 00:06:21.919 +via sorry it's an sql database + +00:06:21.919 --> 00:06:25.120 +and what this allows us to do + +00:06:25.120 --> 00:06:28.479 +is we store all the information we need + +00:06:28.479 --> 00:06:31.919 +inside this sql database which allows us + +00:06:31.919 --> 00:06:34.720 +to speed up a lot of the operations that + +00:06:34.720 --> 00:06:35.360 +are + +00:06:35.360 --> 00:06:37.840 +necessary for the functioning of our + +00:06:37.840 --> 00:06:38.479 +ground + +00:06:38.479 --> 00:06:40.240 +so for instance if I go back to the + +00:06:40.240 --> 00:06:41.759 +index file that I had before + +00:06:41.759 --> 00:06:43.440 +let's just go back to who actually this + +00:06:43.440 --> 00:06:45.680 +way you'll see a little more on the side + +00:06:45.680 --> 00:06:47.919 +so you see that on the side we have + +00:06:47.919 --> 00:06:48.720 +whoops + +00:06:48.720 --> 00:06:50.319 +two links I'm not going to click on them + +00:06:50.319 --> 00:06:51.759 +otherwise I'm going to open them but we + +00:06:51.759 --> 00:06:53.199 +have two links + +00:06:53.199 --> 00:06:56.319 +now there are many implementations of + +00:06:56.319 --> 00:06:58.240 +the zettol casten method inside + +00:06:58.240 --> 00:07:00.800 +Emacs and inside and with old mode but + +00:07:00.800 --> 00:07:02.400 +what we've decided to do + +00:07:02.400 --> 00:07:04.639 +is that every time you have a link so if + +00:07:04.639 --> 00:07:05.520 +we go to + +00:07:05.520 --> 00:07:08.479 +the index again here at point we have + +00:07:08.479 --> 00:07:09.120 +the link + +00:07:09.120 --> 00:07:12.400 +foo every time we create a link we + +00:07:12.400 --> 00:07:14.160 +update our database + +00:07:14.160 --> 00:07:16.800 +to say okay so we have a link in the + +00:07:16.800 --> 00:07:17.919 +file + +00:07:17.919 --> 00:07:21.080 +index which is leading to the file + +00:07:21.080 --> 00:07:24.319 +fu.org and it is situated + +00:07:24.319 --> 00:07:27.840 +under the heading a heading and + +00:07:27.840 --> 00:07:29.840 +if you check the site buffer you see + +00:07:29.840 --> 00:07:31.440 +that all this all these information + +00:07:31.440 --> 00:07:33.120 +which I just highlighted to you + +00:07:33.120 --> 00:07:42.639 +are present right here + +00:07:42.639 --> 00:07:45.599 +oh well sorry I forgot this thank you + +00:07:45.599 --> 00:07:46.400 +okay + +00:07:46.400 --> 00:07:50.879 +so let's see log okay I'm going to split + +00:07:50.879 --> 00:07:53.039 +actually I'm going to split like this + +00:07:53.039 --> 00:07:54.960 +I'm going to go back there + +00:07:54.960 --> 00:07:56.960 +the problem is that I can't show my + +00:07:56.960 --> 00:07:58.720 +keystrokes at the same time as a machine + +00:07:58.720 --> 00:08:02.080 +I'm showing the site buffer so I'll + +00:08:02.080 --> 00:08:03.599 +keep it right now for your own + +00:08:03.599 --> 00:08:05.199 +discretion anyway getting back to the + +00:08:05.199 --> 00:08:07.039 +talk + +00:08:07.039 --> 00:08:10.160 +so the thing is we have this + +00:08:10.160 --> 00:08:12.720 +sql database and the goal is to keep it + +00:08:12.720 --> 00:08:13.520 +optimized + +00:08:13.520 --> 00:08:16.400 +now why is it better optimized than just + +00:08:16.400 --> 00:08:17.039 +using + +00:08:17.039 --> 00:08:20.960 +orgrom sorry just using default org mode + +00:08:20.960 --> 00:08:23.520 +so in my talk about many big files + +00:08:23.520 --> 00:08:24.080 +versus + +00:08:24.080 --> 00:08:26.879 +a few I keep getting you know you got + +00:08:26.879 --> 00:08:28.080 +what I was saying I'm not going to + +00:08:28.080 --> 00:08:29.120 +repeat it + +00:08:29.120 --> 00:08:32.240 +by the way it is uh 10 to 10. + +00:08:32.240 --> 00:08:35.200 +I'm starting really to be tired now so + +00:08:35.200 --> 00:08:36.399 +uh moving on to + +00:08:36.399 --> 00:08:39.279 +um what did I want to show you so it was + +00:08:39.279 --> 00:08:40.800 +almost yes all the elements + +00:08:40.800 --> 00:08:44.959 +so what I'm going to do I'm going to + +00:08:44.959 --> 00:08:47.200 +see I believe it's org element pass + +00:08:47.200 --> 00:08:48.399 +buffer + +00:08:48.399 --> 00:08:51.040 +so I was telling you about all elements + +00:08:51.040 --> 00:08:51.920 +before + +00:08:51.920 --> 00:08:53.600 +and the main command sorry the main + +00:08:53.600 --> 00:08:55.760 +function that is used by org element + +00:08:55.760 --> 00:08:58.560 +is pass buffer what it does and you can + +00:08:58.560 --> 00:08:59.760 +see the dock string is that it + +00:08:59.760 --> 00:09:01.040 +recursively passed + +00:09:01.040 --> 00:09:03.279 +the buffer and return structure + +00:09:03.279 --> 00:09:04.959 +structure being all the information that + +00:09:04.959 --> 00:09:06.320 +we have in this buffer + +00:09:06.320 --> 00:09:07.680 +so just to show you a little more we're + +00:09:07.680 --> 00:09:09.600 +going to move into a scratch buffer + +00:09:09.600 --> 00:09:10.880 +and what we're going to do is that we're + +00:09:10.880 --> 00:09:12.800 +going to write this command + +00:09:12.800 --> 00:09:16.320 +pass buffer and we're going to check the + +00:09:16.320 --> 00:09:17.760 +output of this command + +00:09:17.760 --> 00:09:19.600 +oh sorry not this one we're going to go + +00:09:19.600 --> 00:09:22.000 +in the index so the index file you have + +00:09:22.000 --> 00:09:23.680 +a title you have a heading you have a + +00:09:23.680 --> 00:09:25.120 +link etc etc + +00:09:25.120 --> 00:09:26.880 +so what I'm going to do I'm going to + +00:09:26.880 --> 00:09:28.560 +evaluate this text + +00:09:28.560 --> 00:09:30.800 +and now at the bottom in the midi buffer + +00:09:30.800 --> 00:09:32.560 +in the mini buffer sorry + +00:09:32.560 --> 00:09:36.160 +you see an ast an abstract + +00:09:36.160 --> 00:09:37.600 +obviously don't remember what the s + +00:09:37.600 --> 00:09:39.839 +stands for semantic + +00:09:39.839 --> 00:09:42.720 +huh interesting anyway a representation + +00:09:42.720 --> 00:09:43.519 +of the data + +00:09:43.519 --> 00:09:45.279 +in a way that is exploitable by a + +00:09:45.279 --> 00:09:47.600 +machine now what I'm going to do + +00:09:47.600 --> 00:09:49.839 +syntax thank you so what I'm going to do + +00:09:49.839 --> 00:09:52.000 +I'm going to paste it inside the buffer + +00:09:52.000 --> 00:09:54.480 +in a way that is humanly readable and + +00:09:54.480 --> 00:09:56.399 +you can see that we have plenty of + +00:09:56.399 --> 00:09:58.800 +information we have a section which + +00:09:58.800 --> 00:10:00.560 +starts at the char + +00:10:00.560 --> 00:10:05.040 +1 which ends at the character 45 + +00:10:05.040 --> 00:10:07.040 +we have the content so he makes scratch + +00:10:07.040 --> 00:10:08.240 +oh actually no + +00:10:08.240 --> 00:10:10.240 +never mind I did something wrong I run + +00:10:10.240 --> 00:10:11.279 +it in the wrong buffer + +00:10:11.279 --> 00:10:13.040 +so actually what I'm going to do we're + +00:10:13.040 --> 00:10:14.399 +going to run this command + +00:10:14.399 --> 00:10:17.519 +with the selected window next + +00:10:17.519 --> 00:10:21.120 +window okay that's a bit of live + +00:10:21.120 --> 00:10:23.760 +elise writing for you right now okay so + +00:10:23.760 --> 00:10:24.640 +now if I + +00:10:24.640 --> 00:10:26.240 +evaluate this and paste the content of + +00:10:26.240 --> 00:10:28.480 +the buffer + +00:10:28.480 --> 00:10:31.600 +it is doing its bidding so now what we + +00:10:31.600 --> 00:10:32.399 +have + +00:10:32.399 --> 00:10:34.959 +we have a section we have the keyword + +00:10:34.959 --> 00:10:36.720 +title which you see right here you have + +00:10:36.720 --> 00:10:38.160 +the value + +00:10:38.160 --> 00:10:39.920 +if we scroll down a little bit we have a + +00:10:39.920 --> 00:10:41.360 +heading which is right here we have the + +00:10:41.360 --> 00:10:42.480 +contents + +00:10:42.480 --> 00:10:44.800 +which should be yes the content is not + +00:10:44.800 --> 00:10:46.320 +listed exactly here but you have a + +00:10:46.320 --> 00:10:48.079 +paragraph which is this + +00:10:48.079 --> 00:10:50.640 +and then you have a link etc etc it is + +00:10:50.640 --> 00:10:51.200 +all + +00:10:51.200 --> 00:10:53.839 +uh parenthesis if you're not used to + +00:10:53.839 --> 00:10:54.640 +e-list + +00:10:54.640 --> 00:10:56.320 +like right now I've selected only the + +00:10:56.320 --> 00:10:58.640 +content of the parenthesis link + +00:10:58.640 --> 00:11:00.399 +I can move like this etcetera etcetera + +00:11:00.399 --> 00:11:01.680 +I'm not it's not a needle + +00:11:01.680 --> 00:11:03.760 +lessons that I'm doing right now but + +00:11:03.760 --> 00:11:05.279 +basically + +00:11:05.279 --> 00:11:08.399 +if we were to use the default tooling of + +00:11:08.399 --> 00:11:09.120 +orgrom + +00:11:09.120 --> 00:11:10.880 +org mode sorry I keep getting too + +00:11:10.880 --> 00:11:12.480 +confused sorry for that + +00:11:12.480 --> 00:11:14.240 +uh it would be extremely slow to do what + +00:11:14.240 --> 00:11:16.399 +we're doing some people + +00:11:16.399 --> 00:11:19.760 +are doing so some implementations of the + +00:11:19.760 --> 00:11:22.240 +zettelkassen method inside Emacs have + +00:11:22.240 --> 00:11:23.040 +opted + +00:11:23.040 --> 00:11:26.480 +for this method but the problem is that + +00:11:26.480 --> 00:11:27.360 +we think + +00:11:27.360 --> 00:11:30.160 +that it scales poorly now some other + +00:11:30.160 --> 00:11:30.560 +people + +00:11:30.560 --> 00:11:33.920 +have decided to not do with a database + +00:11:33.920 --> 00:11:35.600 +and what they do is that they use a tool + +00:11:35.600 --> 00:11:37.200 +which is called rip grep + +00:11:37.200 --> 00:11:38.800 +you might know grep which is a tool that + +00:11:38.800 --> 00:11:41.279 +allows you to search + +00:11:41.279 --> 00:11:43.440 +a file the content of a file for a line + +00:11:43.440 --> 00:11:46.560 +so for instance if we open v term here + +00:11:46.560 --> 00:11:49.680 +uh let's see so I've opened the term I + +00:11:49.680 --> 00:11:51.839 +am in this repository what I'm going to + +00:11:51.839 --> 00:11:54.399 +do is that I'm going to + +00:11:54.399 --> 00:11:58.000 +load the content of the file uh + +00:11:58.000 --> 00:12:00.480 +how am I going to do this oh um I need + +00:12:00.480 --> 00:12:02.480 +to move to bash + +00:12:02.480 --> 00:12:06.160 +let's do crap + +00:12:06.160 --> 00:12:08.000 +for the line which links do we did we + +00:12:08.000 --> 00:12:09.519 +have grep foo + +00:12:09.519 --> 00:12:11.600 +inside the file is it three I can + +00:12:11.600 --> 00:12:13.760 +remember okay let's do this + +00:12:13.760 --> 00:12:18.079 +am I working no + +00:12:18.079 --> 00:12:21.279 +let's go for four why is it eight + +00:12:21.279 --> 00:12:22.800 +ah damn it oh you know what I'm just + +00:12:22.800 --> 00:12:24.320 +going to copy the name + +00:12:24.320 --> 00:12:28.240 +up there we go no + +00:12:28.240 --> 00:12:33.680 +ah problem with live presentation always + +00:12:33.680 --> 00:12:34.800 +you know what I'm struggling so I'm + +00:12:34.800 --> 00:12:36.720 +going to drop this point anyway + +00:12:36.720 --> 00:12:38.560 +so grep is a simple tool that allows you + +00:12:38.560 --> 00:12:40.000 +to search the content of a file but + +00:12:40.000 --> 00:12:42.480 +rig grep is a solution that is written + +00:12:42.480 --> 00:12:44.160 +in rust and which is supposed to be + +00:12:44.160 --> 00:12:45.920 +well not supposed which is far more + +00:12:45.920 --> 00:12:48.880 +capable now + +00:12:48.880 --> 00:12:50.639 +I'd like to talk to you about the future + +00:12:50.639 --> 00:12:52.320 +of orgrim right now I've told you about + +00:12:52.320 --> 00:12:54.720 +the general concept which is about using + +00:12:54.720 --> 00:12:58.399 +uh this sql database and about + +00:12:58.399 --> 00:13:01.519 +playing nicely with old mode but + +00:13:01.519 --> 00:13:03.279 +we think that there's something great + +00:13:03.279 --> 00:13:05.200 +that we can do about orgrim + +00:13:05.200 --> 00:13:08.320 +now I've been talking with the a lot of + +00:13:08.320 --> 00:13:10.320 +people who are behind org mode and you + +00:13:10.320 --> 00:13:10.880 +know + +00:13:10.880 --> 00:13:14.000 +they've told us do you think that + +00:13:14.000 --> 00:13:16.880 +orgrom could have something to bring to + +00:13:16.880 --> 00:13:18.320 +old mode let's say + +00:13:18.320 --> 00:13:20.160 +backlinks is there something that we + +00:13:20.160 --> 00:13:21.600 +could be doing to + +00:13:21.600 --> 00:13:25.600 +import backlinks into old mode and + +00:13:25.600 --> 00:13:27.200 +we thought about it with jethro and the + +00:13:27.200 --> 00:13:29.200 +problem is uh + +00:13:29.200 --> 00:13:30.800 +we've always tried to have an + +00:13:30.800 --> 00:13:32.720 +experimental ground a very + +00:13:32.720 --> 00:13:35.360 +uh can a very isolated portion of your + +00:13:35.360 --> 00:13:36.320 +system + +00:13:36.320 --> 00:13:37.920 +where we could track backlinks and + +00:13:37.920 --> 00:13:40.320 +that's why we use um + +00:13:40.320 --> 00:13:42.320 +a slipbox directory so that we only + +00:13:42.320 --> 00:13:44.880 +track backlinks in one specific place + +00:13:44.880 --> 00:13:47.040 +but now because there seems to be so + +00:13:47.040 --> 00:13:48.639 +much interest about the method and we + +00:13:48.639 --> 00:13:50.079 +have so much backing + +00:13:50.079 --> 00:13:52.480 +on uh you know on github we have like + +00:13:52.480 --> 00:13:53.120 +200 + +00:13:53.120 --> 00:13:56.399 +2 600 stars which is mind-boggling to us + +00:13:56.399 --> 00:13:59.760 +because we have so much success but + +00:13:59.760 --> 00:14:02.399 +we have plenty of ideas about the future + +00:14:02.399 --> 00:14:03.360 +one of the key + +00:14:03.360 --> 00:14:06.000 +parts of development being the writing + +00:14:06.000 --> 00:14:08.480 +of an external parser for orgrim + +00:14:08.480 --> 00:14:09.680 +so I've been telling you about org + +00:14:09.680 --> 00:14:11.839 +element org elements runs + +00:14:11.839 --> 00:14:15.279 +inside Emacs but what if + +00:14:15.279 --> 00:14:19.519 +we wrote a background process + +00:14:19.519 --> 00:14:23.600 +that could read a file an augment file + +00:14:23.600 --> 00:14:25.760 +extract the same type of data that you + +00:14:25.760 --> 00:14:27.440 +see on your screen right now + +00:14:27.440 --> 00:14:30.240 +so that we could use to update a + +00:14:30.240 --> 00:14:30.959 +database + +00:14:30.959 --> 00:14:33.279 +so that we could use to compute the + +00:14:33.279 --> 00:14:34.959 +links so that we could use it + +00:14:34.959 --> 00:14:37.360 +to show you know orgrim server all the + +00:14:37.360 --> 00:14:39.519 +connections between your nodes + +00:14:39.519 --> 00:14:41.360 +now there is a path of improvement here + +00:14:41.360 --> 00:14:44.320 +that is extremely important to us + +00:14:44.320 --> 00:14:47.360 +but you know that's the technical aspect + +00:14:47.360 --> 00:14:48.639 +and I'm out of time I'm just going to + +00:14:48.639 --> 00:14:50.079 +take one more minute to finish on this + +00:14:50.079 --> 00:14:51.360 +point + +00:14:51.360 --> 00:14:54.560 +but we believe + +00:14:54.560 --> 00:14:57.680 +that orgrim has the potential to be a + +00:14:57.680 --> 00:14:58.399 +think tank + +00:14:58.399 --> 00:15:00.639 +in a way for org mode and the way we + +00:15:00.639 --> 00:15:01.920 +think about + +00:15:01.920 --> 00:15:04.079 +note-taking in general I've stressed a + +00:15:04.079 --> 00:15:06.079 +great deal in my first presentation + +00:15:06.079 --> 00:15:10.240 +sorry the one I did before neura that + +00:15:10.240 --> 00:15:12.480 +all chrome is really great as a way to + +00:15:12.480 --> 00:15:14.639 +think organically about knowledge + +00:15:14.639 --> 00:15:17.600 +and honestly we kind of want to put the + +00:15:17.600 --> 00:15:19.279 +theory into practice with orgrim + +00:15:19.279 --> 00:15:22.079 +we are holding something which has the + +00:15:22.079 --> 00:15:23.440 +potential to be + +00:15:23.440 --> 00:15:25.120 +a great factor of innovation for the + +00:15:25.120 --> 00:15:27.279 +future whether it be or org mode + +00:15:27.279 --> 00:15:29.600 +or even for software in general you know + +00:15:29.600 --> 00:15:31.440 +the way to think about + +00:15:31.440 --> 00:15:34.880 +build nodes of knowledge in a way + +00:15:34.880 --> 00:15:37.440 +and the way to represent all those ids + +00:15:37.440 --> 00:15:38.240 +with the graph + +00:15:38.240 --> 00:15:40.560 +the way to basically have a note-taking + +00:15:40.560 --> 00:15:41.600 +system that + +00:15:41.600 --> 00:15:43.360 +corresponds to the research that + +00:15:43.360 --> 00:15:45.839 +corresponds to the way you think + +00:15:45.839 --> 00:15:49.120 +so yeah I believe we are + +00:15:49.120 --> 00:15:51.839 +really excited about this and if you + +00:15:51.839 --> 00:15:53.519 +want to keep track of the development of + +00:15:53.519 --> 00:15:55.360 +all chrome + +00:15:55.360 --> 00:15:57.600 +I on my youtube channel which is already + +00:15:57.600 --> 00:15:59.279 +linked a little earlier + +00:15:59.279 --> 00:16:02.639 +inside this present inside the pad sorry + +00:16:02.639 --> 00:16:04.240 +I do have a youtube channel where I try + +00:16:04.240 --> 00:16:06.079 +to present novelties + +00:16:06.079 --> 00:16:09.519 +or the new stuff inside um orgrim + +00:16:09.519 --> 00:16:11.519 +but I also be recording videos about the + +00:16:11.519 --> 00:16:13.360 +technical aspects about the direction + +00:16:13.360 --> 00:16:15.519 +that we're taking with orgrim + +00:16:15.519 --> 00:16:18.000 +and if you want to talk with us we are + +00:16:18.000 --> 00:16:18.560 +always + +00:16:18.560 --> 00:16:22.160 +available either on isc channel orgrom + +00:16:22.160 --> 00:16:23.680 +I believe there's a dash between org and + +00:16:23.680 --> 00:16:25.279 +rome but also + +00:16:25.279 --> 00:16:27.279 +on the discourse and I'll be putting all + +00:16:27.279 --> 00:16:29.440 +the links inside the conversation + +00:16:29.440 --> 00:16:31.199 +and that's me done so thank you for + +00:16:31.199 --> 00:16:32.880 +listening and now I'll be taking + +00:16:32.880 --> 00:16:34.560 +three minutes of questions so as to be + +00:16:34.560 --> 00:16:37.360 +right on time + +00:16:37.360 --> 00:16:39.920 +mini thanks for your awesome talk leo + +00:16:39.920 --> 00:16:41.120 +thank you + +00:16:41.120 --> 00:16:43.040 +so I'm just refreshing the page and I'm + +00:16:43.040 --> 00:16:44.959 +going to scroll down to my + +00:16:44.959 --> 00:16:49.600 +talk if I can find the right section + +00:16:49.600 --> 00:16:53.120 +let me just scroll a little bit + +00:16:53.120 --> 00:16:55.600 +uh reproducible Emacs no I think it's + +00:16:55.600 --> 00:16:57.120 +slower + +00:16:57.120 --> 00:16:59.279 +god we have so many questions so at the + +00:16:59.279 --> 00:17:00.639 +same time I'm pissed because I can't + +00:17:00.639 --> 00:17:01.120 +find it + +00:17:01.120 --> 00:17:02.639 +but I'm really really impressed by the + +00:17:02.639 --> 00:17:05.360 +number of questions that we had oh yeah + +00:17:05.360 --> 00:17:07.760 +um which is about I think about line 600 + +00:17:07.760 --> 00:17:08.260 +or so + +00:17:08.260 --> 00:17:09.919 +[Music] + +00:17:09.919 --> 00:17:13.199 +yes got it splendid + +00:17:13.199 --> 00:17:16.400 +so um the questions so why not run a + +00:17:16.400 --> 00:17:18.160 +background Emacs for passing instead of + +00:17:18.160 --> 00:17:19.919 +implementing a new parser + +00:17:19.919 --> 00:17:22.559 +so I believe we've had this question uh + +00:17:22.559 --> 00:17:24.480 +I was giving a similar talk + +00:17:24.480 --> 00:17:27.600 +earlier this week and this week + +00:17:27.600 --> 00:17:31.679 +I'm not french this week sorry and + +00:17:31.679 --> 00:17:33.280 +someone asked me this question and the + +00:17:33.280 --> 00:17:35.679 +thing is running a background Emacs + +00:17:35.679 --> 00:17:38.320 +process you know it sounds great + +00:17:38.320 --> 00:17:40.400 +but it's also very limited because all + +00:17:40.400 --> 00:17:41.760 +the problems we have + +00:17:41.760 --> 00:17:45.520 +about concurrency about threads in Emacs + +00:17:45.520 --> 00:17:48.160 +well yes we can forward all our calls to + +00:17:48.160 --> 00:17:49.200 +background Emacs + +00:17:49.200 --> 00:17:51.760 +just like uh you know when you export a + +00:17:51.760 --> 00:17:52.240 +file + +00:17:52.240 --> 00:17:56.400 +with uh um sorry + +00:17:56.400 --> 00:17:57.840 +I mean could you mute microphone when + +00:17:57.840 --> 00:17:58.799 +you're speaking it's a little hard for + +00:17:58.799 --> 00:18:01.520 +me to concentrate + +00:18:01.520 --> 00:18:03.600 +that's fine don't worry you are now uh + +00:18:03.600 --> 00:18:04.640 +so um + +00:18:04.640 --> 00:18:06.960 +dammit where was I I'm sorry the + +00:18:06.960 --> 00:18:07.679 +question yes + +00:18:07.679 --> 00:18:09.280 +so basically forwarding all the + +00:18:09.280 --> 00:18:11.840 +questions uh sorry all our queries to uh + +00:18:11.840 --> 00:18:13.039 +background Emacs + +00:18:13.039 --> 00:18:16.000 +that is what uh org export is doing like + +00:18:16.000 --> 00:18:17.960 +you have the ability to + +00:18:17.960 --> 00:18:20.799 +asynchronously export latex documents + +00:18:20.799 --> 00:18:22.080 +odt documents from + +00:18:22.080 --> 00:18:24.480 +org mode and it uses a very minimal + +00:18:24.480 --> 00:18:26.000 +version of Emacs to do that but the + +00:18:26.000 --> 00:18:28.240 +problem is that we think that it's not + +00:18:28.240 --> 00:18:30.320 +going to scale as well as a true + +00:18:30.320 --> 00:18:33.039 +genuine background process and since we + +00:18:33.039 --> 00:18:34.480 +have been talking a lot + +00:18:34.480 --> 00:18:36.000 +as far as the old mode development is + +00:18:36.000 --> 00:18:38.160 +concerned about + +00:18:38.160 --> 00:18:40.640 +writing a proper parser writing a proper + +00:18:40.640 --> 00:18:41.760 +documentation + +00:18:41.760 --> 00:18:43.440 +for the passing of old mode file and + +00:18:43.440 --> 00:18:46.000 +writing a proper document standard + +00:18:46.000 --> 00:18:48.400 +that says okay this is how the old mode + +00:18:48.400 --> 00:18:50.000 +format works you know to + +00:18:50.000 --> 00:18:52.000 +basically have a way to not fall into + +00:18:52.000 --> 00:18:55.120 +the traps of markdown which has many + +00:18:55.120 --> 00:18:56.559 +many standards + +00:18:56.559 --> 00:18:58.480 +we need to think about this and we + +00:18:58.480 --> 00:19:00.000 +believe that all grown has + +00:19:00.000 --> 00:19:01.360 +the ability to think about these + +00:19:01.360 --> 00:19:03.120 +questions and as a + +00:19:03.120 --> 00:19:04.640 +as a person I'm also really interested + +00:19:04.640 --> 00:19:06.400 +about this so + +00:19:06.400 --> 00:19:07.840 +I can take the question I mean so don't + +00:19:07.840 --> 00:19:10.160 +worry about feeding them to me so how + +00:19:10.160 --> 00:19:11.760 +often does the + +00:19:11.760 --> 00:19:13.679 +db index get updated in order to contain + +00:19:13.679 --> 00:19:14.799 +changes within the + +00:19:14.799 --> 00:19:17.360 +files so we have two ways either we + +00:19:17.360 --> 00:19:19.440 +update as soon as you save a file + +00:19:19.440 --> 00:19:22.160 +or we have a timer which is an idle + +00:19:22.160 --> 00:19:23.600 +timer which waits okay + +00:19:23.600 --> 00:19:25.600 +the user has not imputed inputted + +00:19:25.600 --> 00:19:26.960 +anything in the last + +00:19:26.960 --> 00:19:29.360 +five seconds so it's time to queue a + +00:19:29.360 --> 00:19:30.080 +database + +00:19:30.080 --> 00:19:33.039 +passing a rebuild of the data not a an + +00:19:33.039 --> 00:19:33.919 +incrementation + +00:19:33.919 --> 00:19:37.120 +of the database I should say so + +00:19:37.120 --> 00:19:38.799 +did you ever think of uh I believe I + +00:19:38.799 --> 00:19:40.320 +have one more one more minutes and then + +00:19:40.320 --> 00:19:42.240 +I'll hand it to the other folks + +00:19:42.240 --> 00:19:43.440 +do you ever think of opening up or + +00:19:43.440 --> 00:19:45.440 +designing the sqldb as a general all + +00:19:45.440 --> 00:19:47.200 +speed up tool outside of orgrom so that + +00:19:47.200 --> 00:19:48.160 +other libraries + +00:19:48.160 --> 00:19:49.919 +that do execute complex queries are able + +00:19:49.919 --> 00:19:51.679 +to use it well + +00:19:51.679 --> 00:19:52.960 +a lot of people have been working on + +00:19:52.960 --> 00:19:54.640 +this and I believe alpha papa has been + +00:19:54.640 --> 00:19:56.480 +thinking quite a lot about this you know + +00:19:56.480 --> 00:19:57.679 +all ql + +00:19:57.679 --> 00:20:01.120 +is the ql stands for language + +00:20:01.120 --> 00:20:03.679 +and I I can't remember now what's uh + +00:20:03.679 --> 00:20:04.720 +what's the backend + +00:20:04.720 --> 00:20:08.080 +is for all ql but the idea is relatively + +00:20:08.080 --> 00:20:10.080 +relatively the same you know it's about + +00:20:10.080 --> 00:20:13.039 +finding ways to optimize the way we + +00:20:13.039 --> 00:20:14.880 +store the data about an old mode file + +00:20:14.880 --> 00:20:16.640 +and how we retrieve it + +00:20:16.640 --> 00:20:20.400 +and sql for us seems to seem to be a + +00:20:20.400 --> 00:20:22.159 +good idea now obviously + +00:20:22.159 --> 00:20:24.240 +maybe we could do something about old + +00:20:24.240 --> 00:20:26.080 +mode but the problem is I think a + +00:20:26.080 --> 00:20:27.360 +background process + +00:20:27.360 --> 00:20:30.799 +is not necessarily um in + +00:20:30.799 --> 00:20:32.960 +the core mentality of old mode but it's + +00:20:32.960 --> 00:20:34.000 +definitely a + +00:20:34.000 --> 00:20:36.080 +something that we could suggest uh when + +00:20:36.080 --> 00:20:37.679 +we are a little more mature because well + +00:20:37.679 --> 00:20:40.960 +orgrom was started last february and so + +00:20:40.960 --> 00:20:41.679 +it's a fairly + +00:20:41.679 --> 00:20:44.480 +young project in a way so uh I see + +00:20:44.480 --> 00:20:45.840 +plenty more questions but + +00:20:45.840 --> 00:20:48.400 +I'm out of time folks so I'm not sure uh + +00:20:48.400 --> 00:20:50.559 +the other speaker is probably ready + +00:20:50.559 --> 00:20:52.559 +so what I'll do is I'll probably try to + +00:20:52.559 --> 00:20:54.000 +answer your questions when I get the + +00:20:54.000 --> 00:20:55.360 +time inside the pad + +00:20:55.360 --> 00:20:58.960 +but feel free to ping me on isc + +00:20:58.960 --> 00:21:01.039 +or on the different channels we have + +00:21:01.039 --> 00:21:02.320 +foreground and + +00:21:02.320 --> 00:21:04.000 +I answer them with you know as much + +00:21:04.000 --> 00:21:05.520 +energy as I can gather + +00:21:05.520 --> 00:21:07.600 +all right thank you so much you are now + +00:21:07.600 --> 00:21:08.880 +unmuted + +00:21:08.880 --> 00:21:11.760 +thank you again very much leo and that + +00:21:11.760 --> 00:21:13.120 +was me done for today so you'll see me + +00:21:13.120 --> 00:21:14.000 +at the end but I'm + +00:21:14.000 --> 00:21:15.840 +officially done and I am free of + +00:21:15.840 --> 00:21:17.840 +thoughts I can focus on + +00:21:17.840 --> 00:21:22.640 +sleeping probably awesome + +00:21:22.640 --> 00:21:27.760 +all right see you guys later bye bye diff --git a/2020/subtitles/emacsconf-2020--19-sharing-blogs-and-more-with-org-webring--brett-gilio-autogen.vtt b/2020/subtitles/emacsconf-2020--19-sharing-blogs-and-more-with-org-webring--brett-gilio-autogen.vtt new file mode 100644 index 00000000..672f36de --- /dev/null +++ b/2020/subtitles/emacsconf-2020--19-sharing-blogs-and-more-with-org-webring--brett-gilio-autogen.vtt @@ -0,0 +1,709 @@ +WEBVTT + +00:00:01.120 --> 00:00:03.120 +hi my name is brett gillio + +00:00:03.120 --> 00:00:04.560 +and today I'll be sharing a project that + +00:00:04.560 --> 00:00:05.920 +several people and I've been working on + +00:00:05.920 --> 00:00:07.520 +for the past few months called org + +00:00:07.520 --> 00:00:08.480 +webbery + +00:00:08.480 --> 00:00:10.559 +the essential idea behind org webbering + +00:00:10.559 --> 00:00:12.240 +is to take the power of creating a + +00:00:12.240 --> 00:00:13.679 +website with org mode + +00:00:13.679 --> 00:00:15.360 +and its built-in features to control + +00:00:15.360 --> 00:00:17.520 +html and xml output + +00:00:17.520 --> 00:00:19.119 +and utilize it to share blogs git + +00:00:19.119 --> 00:00:22.080 +commits or other rss or atom static feed + +00:00:22.080 --> 00:00:22.640 +content + +00:00:22.640 --> 00:00:25.920 +to share directly with your audiences + +00:00:25.920 --> 00:00:28.560 +my website is created entirely using org + +00:00:28.560 --> 00:00:30.000 +mode and I love the amount of + +00:00:30.000 --> 00:00:31.679 +flexibility it offers me while keeping + +00:00:31.679 --> 00:00:34.079 +everything quite simple + +00:00:34.079 --> 00:00:35.920 +I am able to put information about + +00:00:35.920 --> 00:00:37.600 +myself a blog + +00:00:37.600 --> 00:00:40.079 +and my org web ring tool directly on on + +00:00:40.079 --> 00:00:42.879 +the home page using symbol org syntax + +00:00:42.879 --> 00:00:44.640 +as you can see I am currently displaying + +00:00:44.640 --> 00:00:46.239 +three posts on my website + +00:00:46.239 --> 00:00:48.239 +the first is the geeksday announcement + +00:00:48.239 --> 00:00:49.840 +the second is a quarterly financial + +00:00:49.840 --> 00:00:51.039 +update from sourcehut + +00:00:51.039 --> 00:00:52.320 +and the third is a post from + +00:00:52.320 --> 00:00:54.480 +drewdevault's blog drew devault by the + +00:00:54.480 --> 00:00:55.120 +way + +00:00:55.120 --> 00:00:57.680 +his open ring is what helped inspire + +00:00:57.680 --> 00:00:59.039 +what is today or + +00:00:59.039 --> 00:01:01.359 +web ring all this information is + +00:01:01.359 --> 00:01:03.440 +gathered using a sort of manifest file + +00:01:03.440 --> 00:01:05.360 +that org web ring will use to acquire + +00:01:05.360 --> 00:01:07.040 +and place the information in the correct + +00:01:07.040 --> 00:01:07.760 +format + +00:01:07.760 --> 00:01:10.000 +according to your specification + +00:01:10.000 --> 00:01:10.799 +additionally + +00:01:10.799 --> 00:01:11.840 +you can see that the geeksday + +00:01:11.840 --> 00:01:14.159 +announcement is post is pinned + +00:01:14.159 --> 00:01:16.000 +stylization is likewise controlled by + +00:01:16.000 --> 00:01:17.200 +using css + +00:01:17.200 --> 00:01:18.960 +you can add nice subtle color changes on + +00:01:18.960 --> 00:01:20.720 +mouse hover or control the size of the + +00:01:20.720 --> 00:01:23.759 +flexboxes all using standard css + +00:01:23.759 --> 00:01:26.080 +let's examine a simple scenario of using + +00:01:26.080 --> 00:01:28.320 +org webroom + +00:01:28.320 --> 00:01:30.400 +after you have org webbing installed + +00:01:30.400 --> 00:01:32.000 +you'll be able to create a manifest file + +00:01:32.000 --> 00:01:33.759 +that looks something like this + +00:01:33.759 --> 00:01:35.680 +this particular manifest file is an + +00:01:35.680 --> 00:01:37.840 +example offered in the repository under + +00:01:37.840 --> 00:01:39.520 +the assets directory + +00:01:39.520 --> 00:01:41.200 +please feel free to utilize them as a + +00:01:41.200 --> 00:01:42.640 +starting point if you are interested in + +00:01:42.640 --> 00:01:44.399 +using org web ring + +00:01:44.399 --> 00:01:46.320 +as you can see here we are able to place + +00:01:46.320 --> 00:01:48.640 +an rss or atom feed in this file and + +00:01:48.640 --> 00:01:50.479 +specify information about the feed we + +00:01:50.479 --> 00:01:51.920 +wish to produce + +00:01:51.920 --> 00:01:54.640 +for example the total number of items + +00:01:54.640 --> 00:01:56.159 +and the total number of entries per + +00:01:56.159 --> 00:01:57.439 +source item + +00:01:57.439 --> 00:01:59.439 +additionally you're able to filter posts + +00:01:59.439 --> 00:02:00.960 +you feel would not be relevant to your + +00:02:00.960 --> 00:02:02.079 +web ring + +00:02:02.079 --> 00:02:04.079 +we can take this example file and run + +00:02:04.079 --> 00:02:13.120 +the dispatch and see the result + +00:02:13.120 --> 00:02:15.280 +the web ring displays a proper summary + +00:02:15.280 --> 00:02:17.760 +set to a character limit you can specify + +00:02:17.760 --> 00:02:19.599 +additionally all the links in the web + +00:02:19.599 --> 00:02:21.520 +ring are navigable and will open in a + +00:02:21.520 --> 00:02:22.560 +new tab + +00:02:22.560 --> 00:02:24.239 +that way if someone wishes to view the + +00:02:24.239 --> 00:02:25.920 +content they simply need to + +00:02:25.920 --> 00:02:30.319 +click on the title or their source name + +00:02:30.319 --> 00:02:32.879 +now this particular example is not + +00:02:32.879 --> 00:02:34.800 +stylized because we have not given the + +00:02:34.800 --> 00:02:37.120 +website a css file to reference + +00:02:37.120 --> 00:02:38.720 +let's examine what is happening from + +00:02:38.720 --> 00:02:40.319 +behind the scenes a little bit + +00:02:40.319 --> 00:02:43.040 +from inside of the org mode file let's + +00:02:43.040 --> 00:02:43.360 +run + +00:02:43.360 --> 00:02:48.800 +the org web ring function + +00:02:48.800 --> 00:02:51.280 +as you can see it takes that xml file + +00:02:51.280 --> 00:02:54.239 +and processes it into the correct html + +00:02:54.239 --> 00:02:56.080 +you will then be able to embed this org + +00:02:56.080 --> 00:02:58.080 +function into another org file to be + +00:02:58.080 --> 00:03:00.080 +able to display it on your website + +00:03:00.080 --> 00:03:02.840 +pretty neat let's look at an at another + +00:03:02.840 --> 00:03:05.440 +example + +00:03:05.440 --> 00:03:07.360 +on my website we have an example of + +00:03:07.360 --> 00:03:09.519 +using org webbring to reply to another + +00:03:09.519 --> 00:03:10.800 +blog post + +00:03:10.800 --> 00:03:12.480 +what I have here is a post from drew to + +00:03:12.480 --> 00:03:14.640 +vault's blog it is showcased clearly at + +00:03:14.640 --> 00:03:16.239 +the top as a single entry + +00:03:16.239 --> 00:03:19.040 +and you can see it is pinned the pinning + +00:03:19.040 --> 00:03:20.800 +functionality ensures that this post is + +00:03:20.800 --> 00:03:22.400 +moved to the front of the hypothetical + +00:03:22.400 --> 00:03:23.120 +web ring + +00:03:23.120 --> 00:03:25.760 +and guaranteeing its visibility this is + +00:03:25.760 --> 00:03:27.599 +then coupled with a few changes such as + +00:03:27.599 --> 00:03:29.840 +disabling the generation time + +00:03:29.840 --> 00:03:31.120 +which would not be relevant to the + +00:03:31.120 --> 00:03:33.280 +readers and a change of the text in the + +00:03:33.280 --> 00:03:34.000 +header + +00:03:34.000 --> 00:03:37.040 +to demonstrate is indeed used as a reply + +00:03:37.040 --> 00:03:39.599 +an example of this is also provided in + +00:03:39.599 --> 00:03:42.319 +the assets directory + +00:03:42.319 --> 00:03:44.799 +last we can use org webbring as a blog + +00:03:44.799 --> 00:03:45.519 +planet + +00:03:45.519 --> 00:03:47.599 +which is one of my favorites this takes + +00:03:47.599 --> 00:03:49.360 +after the emax life planet which I + +00:03:49.360 --> 00:03:51.120 +believe is moderated by sasha + +00:03:51.120 --> 00:03:53.200 +and others as well as the haskell and + +00:03:53.200 --> 00:03:54.720 +ocamoplanets + +00:03:54.720 --> 00:03:56.959 +a planet for the uninitiated is a + +00:03:56.959 --> 00:03:58.879 +curated form of content sharing about a + +00:03:58.879 --> 00:04:00.159 +set of topics + +00:04:00.159 --> 00:04:02.400 +the max life haskell and ocampo planets + +00:04:02.400 --> 00:04:03.439 +as their names imply + +00:04:03.439 --> 00:04:05.920 +cover Emacs haskell and ocampo blogs + +00:04:05.920 --> 00:04:07.200 +respectively + +00:04:07.200 --> 00:04:09.680 +likewise my planet covers programming + +00:04:09.680 --> 00:04:11.360 +language theory and category theory + +00:04:11.360 --> 00:04:12.239 +primarily + +00:04:12.239 --> 00:04:13.920 +it works in essentially the same way as + +00:04:13.920 --> 00:04:15.840 +the org web ring you provide it with a + +00:04:15.840 --> 00:04:17.519 +list of feeds that get parsed + +00:04:17.519 --> 00:04:20.000 +however unlike the web ring the planet + +00:04:20.000 --> 00:04:21.919 +function has no limits on the number of + +00:04:21.919 --> 00:04:23.040 +entries per source + +00:04:23.040 --> 00:04:24.639 +and the display number of posts is + +00:04:24.639 --> 00:04:27.600 +increased significantly + +00:04:27.600 --> 00:04:29.759 +the syndicates or sources have their + +00:04:29.759 --> 00:04:30.720 +feeds shown + +00:04:30.720 --> 00:04:32.639 +visibly to users who may wish to fetch + +00:04:32.639 --> 00:04:33.759 +them + +00:04:33.759 --> 00:04:35.440 +a planet is typically meant to be a + +00:04:35.440 --> 00:04:37.040 +standalone page and not something you + +00:04:37.040 --> 00:04:38.639 +would embed in another page like a web + +00:04:38.639 --> 00:04:39.440 +ring + +00:04:39.440 --> 00:04:41.680 +all this is provided under a single file + +00:04:41.680 --> 00:04:43.600 +in the org web ring package as the code + +00:04:43.600 --> 00:04:45.280 +reuse is quite high + +00:04:45.280 --> 00:04:48.240 +aside from my own website we can view + +00:04:48.240 --> 00:04:49.840 +the org web ring being used in neat + +00:04:49.840 --> 00:04:52.400 +context with varying stylizations + +00:04:52.400 --> 00:04:54.320 +here's a nice example from mikhail + +00:04:54.320 --> 00:04:57.680 +kirilov at w96k.ru + +00:04:57.680 --> 00:05:00.000 +featuring a four symmetrical flexbox + +00:05:00.000 --> 00:05:00.960 +layout + +00:05:00.960 --> 00:05:02.720 +an appropriate russian language timing + +00:05:02.720 --> 00:05:04.720 +coding which can be also set in the org + +00:05:04.720 --> 00:05:07.360 +web ring manifest + +00:05:07.360 --> 00:05:09.600 +another is an example from camilo mesa + +00:05:09.600 --> 00:05:10.400 +gayete + +00:05:10.400 --> 00:05:13.280 +using ox hugo with org webring and + +00:05:13.280 --> 00:05:14.320 +likewise correct + +00:05:14.320 --> 00:05:15.840 +features the correct spanish time + +00:05:15.840 --> 00:05:17.680 +encoding + +00:05:17.680 --> 00:05:22.240 +last my other website workircd.org + +00:05:22.240 --> 00:05:24.400 +shows the web ring being used in + +00:05:24.400 --> 00:05:26.560 +combination with ocamo's tool link + +00:05:26.560 --> 00:05:27.440 +supalt + +00:05:27.440 --> 00:05:32.800 +to fetch git logs for that project + +00:05:32.800 --> 00:05:34.639 +you may obtain org web ring directly + +00:05:34.639 --> 00:05:36.320 +from source hut and add it to your load + +00:05:36.320 --> 00:05:37.039 +path + +00:05:37.039 --> 00:05:39.639 +additionally you will need to obtain + +00:05:39.639 --> 00:05:40.800 +xmlgen.el + +00:05:40.800 --> 00:05:43.280 +which is unfortunately not yet on alpha + +00:05:43.280 --> 00:05:44.960 +although I have been trying to get this + +00:05:44.960 --> 00:05:46.800 +rectified so I do not have to rewrite + +00:05:46.800 --> 00:05:49.840 +org web brings xml to html parser + +00:05:49.840 --> 00:05:51.759 +or if you're one of the cool kids using + +00:05:51.759 --> 00:05:54.000 +my favorite package manager gnu geeks + +00:05:54.000 --> 00:06:06.319 +you can obtain it like so + +00:06:06.319 --> 00:06:08.800 +all of the documentation for org web + +00:06:08.800 --> 00:06:09.840 +ring is available + +00:06:09.840 --> 00:06:12.000 +on the sourceup website or in the readme + +00:06:12.000 --> 00:06:13.840 +file after you check it out from the get + +00:06:13.840 --> 00:06:15.039 +tree + +00:06:15.039 --> 00:06:17.360 +there are so many ways to customize org + +00:06:17.360 --> 00:06:18.240 +web ring + +00:06:18.240 --> 00:06:20.880 +as there are just as many variables as + +00:06:20.880 --> 00:06:21.520 +there are + +00:06:21.520 --> 00:06:24.319 +parts and components to org web ring for + +00:06:24.319 --> 00:06:25.759 +you to change + +00:06:25.759 --> 00:06:27.759 +all of this is able to be done simply + +00:06:27.759 --> 00:06:31.600 +from that same manifest file + +00:06:31.600 --> 00:06:33.919 +now taking a moment to examine some of + +00:06:33.919 --> 00:06:35.759 +the org web ring code + +00:06:35.759 --> 00:06:37.840 +you can see it is all done in the same + +00:06:37.840 --> 00:06:40.160 +e-lisp that everybody else is used to + +00:06:40.160 --> 00:06:43.120 +now admittedly my e-lisp is not as + +00:06:43.120 --> 00:06:43.919 +strong as + +00:06:43.919 --> 00:06:47.120 +probably somebody else's so if you are + +00:06:47.120 --> 00:06:50.479 +an e-lisp ninja please feel free to + +00:06:50.479 --> 00:06:53.280 +send a contribution or a patch and tell + +00:06:53.280 --> 00:06:54.880 +me what I'm doing wrong + +00:06:54.880 --> 00:06:57.039 +it's I am not going to be offended by + +00:06:57.039 --> 00:06:58.639 +that at all I would love to see this + +00:06:58.639 --> 00:06:59.360 +code to + +00:06:59.360 --> 00:07:02.560 +improve otherwise I don't think it's + +00:07:02.560 --> 00:07:04.160 +half bad + +00:07:04.160 --> 00:07:06.800 +considering that my experience with + +00:07:06.800 --> 00:07:08.880 +lisps is usually in scheme + +00:07:08.880 --> 00:07:11.280 +me moving from scheme to e-lisp was not + +00:07:11.280 --> 00:07:13.680 +all that hard + +00:07:13.680 --> 00:07:17.120 +taking the syntax apart + +00:07:17.120 --> 00:07:20.880 +we're able to see that we can + +00:07:20.880 --> 00:07:24.240 +fetch urls which are then parsed and + +00:07:24.240 --> 00:07:27.680 +filtered sorted and then kind of reverse + +00:07:27.680 --> 00:07:28.479 +sorted + +00:07:28.479 --> 00:07:32.960 +rather to get you to the web ring result + +00:07:32.960 --> 00:07:34.639 +all of this is then passed through + +00:07:34.639 --> 00:07:37.840 +different parts of the xmlgen.el + +00:07:37.840 --> 00:07:40.639 +functions which gets you that html that + +00:07:40.639 --> 00:07:43.520 +you saw earlier + +00:07:43.520 --> 00:07:45.599 +org webbring is fully free software + +00:07:45.599 --> 00:07:47.440 +distributed under the gnu general public + +00:07:47.440 --> 00:07:49.280 +license versions three or later + +00:07:49.280 --> 00:07:52.000 +at your option I love accepting patches + +00:07:52.000 --> 00:07:53.120 +and collaborating + +00:07:53.120 --> 00:07:54.319 +I hope you will consider using + +00:07:54.319 --> 00:07:56.720 +orawebring you can contact me on + +00:07:56.720 --> 00:07:59.759 +freenode oftc or many other ioc irc + +00:07:59.759 --> 00:08:01.520 +networks at brettgillio + +00:08:01.520 --> 00:08:05.120 +or email me at brettgee gnu.org + +00:08:05.120 --> 00:08:07.759 +thanks so much to amin bendali and the + +00:08:07.759 --> 00:08:08.720 +Emacs cough + +00:08:08.720 --> 00:08:11.120 +organizers and to you the audience + +00:08:11.120 --> 00:08:13.840 +thanks diff --git a/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.vtt b/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.vtt new file mode 100644 index 00000000..0455366c --- /dev/null +++ b/2020/subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.vtt @@ -0,0 +1,1606 @@ +WEBVTT + +00:00:00.480 --> 00:00:02.879 +uh well good evening again uh I think I + +00:00:02.879 --> 00:00:04.319 +have a little time here + +00:00:04.319 --> 00:00:07.359 +uh to talk about macros uh is there + +00:00:07.359 --> 00:00:09.120 +still room in our in our schedule for + +00:00:09.120 --> 00:00:09.440 +that + +00:00:09.440 --> 00:00:11.440 +or should I just kind of jump to some of + +00:00:11.440 --> 00:00:12.559 +my thoughts on the day + +00:00:12.559 --> 00:00:15.920 +you are now unmuted um pretty sure we + +00:00:15.920 --> 00:00:17.039 +have some time + +00:00:17.039 --> 00:00:19.439 +all right great yeah go for it well I'll + +00:00:19.439 --> 00:00:20.720 +just drive into my pre + +00:00:20.720 --> 00:00:22.640 +prepared thing to hear that yeah + +00:00:22.640 --> 00:00:24.720 +actually you're right on time so + +00:00:24.720 --> 00:00:28.400 +oh what an amazing thing I I just uh + +00:00:28.400 --> 00:00:31.199 +you know I have been trying to do what I + +00:00:31.199 --> 00:00:33.040 +I've got a big thank you planet to get + +00:00:33.040 --> 00:00:36.239 +at the end but let me just say I uh + +00:00:36.239 --> 00:00:39.200 +it's it's been really cool to watch the + +00:00:39.200 --> 00:00:42.160 +way that people work together + +00:00:42.160 --> 00:00:46.000 +absolutely it's this whole event today + +00:00:46.000 --> 00:00:46.800 +has been + +00:00:46.800 --> 00:00:50.879 +nothing but awesome and uh no less like + +00:00:50.879 --> 00:00:53.120 +no little part thanks to all of the help + +00:00:53.120 --> 00:00:54.719 +from all of you guys + +00:00:54.719 --> 00:00:59.120 +and um everyone oh yeah it's awesome + +00:00:59.120 --> 00:01:02.399 +um yeah with that all just um shut up + +00:01:02.399 --> 00:01:03.520 +for now and uh + +00:01:03.520 --> 00:01:06.479 +take it away corwin you know how to make + +00:01:06.479 --> 00:01:09.840 +make that the default and good old cemex + +00:01:09.840 --> 00:01:12.799 +all right so I'm gonna try to continue + +00:01:12.799 --> 00:01:14.880 +my theme from the previous talk I'm a + +00:01:14.880 --> 00:01:16.960 +longtime Emacs user but I'm + +00:01:16.960 --> 00:01:20.240 +a pretty new person + +00:01:20.240 --> 00:01:22.880 +to trying to really understand what's + +00:01:22.880 --> 00:01:24.960 +going on within Emacs and make + +00:01:24.960 --> 00:01:28.240 +my customizations to it uh simple for + +00:01:28.240 --> 00:01:30.960 +what I tend to just think of will work + +00:01:30.960 --> 00:01:33.280 +and maybe that's that's that's a nice + +00:01:33.280 --> 00:01:36.240 +bow to put on that earlier talk + +00:01:36.240 --> 00:01:40.479 +so uh whoops + +00:01:40.479 --> 00:01:43.759 +uh let's see here now it's ctrl x + +00:01:43.759 --> 00:01:48.159 +alt I that's right + +00:01:48.159 --> 00:01:52.960 +and let's try that again okay good + +00:01:52.960 --> 00:01:56.000 +so demoing is fun uh but I + +00:01:56.000 --> 00:01:58.000 +will save most of that for tomorrow + +00:01:58.000 --> 00:01:59.759 +where my + +00:01:59.759 --> 00:02:03.040 +dear friend and co-collaborator in + +00:02:03.040 --> 00:02:04.799 +bringing you the dungeon mode project + +00:02:04.799 --> 00:02:07.119 +which is uh sort of + +00:02:07.119 --> 00:02:08.720 +the exciting thing that we we hope + +00:02:08.720 --> 00:02:10.800 +you'll be interested in + +00:02:10.800 --> 00:02:14.480 +um I think gets a little more of a + +00:02:14.480 --> 00:02:15.680 +reveal + +00:02:15.680 --> 00:02:19.360 +uh tonight I'll just uh close saying + +00:02:19.360 --> 00:02:22.640 +um a few things about the process of + +00:02:22.640 --> 00:02:24.319 +making it and continuing my theme of + +00:02:24.319 --> 00:02:25.680 +community + +00:02:25.680 --> 00:02:28.720 +uh first of all a specific and upfront + +00:02:28.720 --> 00:02:29.760 +shout out + +00:02:29.760 --> 00:02:33.120 +to tv's wasa masa who + +00:02:33.120 --> 00:02:36.239 +um absolutely shaped and guided this + +00:02:36.239 --> 00:02:38.720 +this program I I may have taken out a + +00:02:38.720 --> 00:02:40.080 +slide with your name on it but + +00:02:40.080 --> 00:02:43.599 +thank you um + +00:02:43.599 --> 00:02:46.720 +so when we think about Emacs macros and + +00:02:46.720 --> 00:02:47.120 +the + +00:02:47.120 --> 00:02:50.239 +power that they give us + +00:02:50.239 --> 00:02:53.280 +I think about them the the + +00:02:53.280 --> 00:02:54.720 +you know I think about them as a really + +00:02:54.720 --> 00:02:56.400 +deep rabbit hole they confuse + +00:02:56.400 --> 00:03:00.239 +people a lot and so to try to center + +00:03:00.239 --> 00:03:02.480 +myself on that I remember first that + +00:03:02.480 --> 00:03:03.599 +they're + +00:03:03.599 --> 00:03:05.840 +they're going to be talking to us about + +00:03:05.840 --> 00:03:09.599 +code + +00:03:09.599 --> 00:03:12.080 +uh excuse me I realize I hadn't set my + +00:03:12.080 --> 00:03:13.519 +timer + +00:03:13.519 --> 00:03:18.000 +here we are + +00:03:18.000 --> 00:03:21.680 +um so a simple macro syntax is going to + +00:03:21.680 --> 00:03:22.239 +generate + +00:03:22.239 --> 00:03:25.920 +something that is implicitly confusing + +00:03:25.920 --> 00:03:27.760 +to somebody that knows the syntax of + +00:03:27.760 --> 00:03:28.720 +emax lisp + +00:03:28.720 --> 00:03:31.200 +well we see something like this and a + +00:03:31.200 --> 00:03:32.000 +veteran I + +00:03:32.000 --> 00:03:36.239 +says that x isn't quoted what's going on + +00:03:36.239 --> 00:03:39.840 +but it can be hard to miss + +00:03:39.840 --> 00:03:43.040 +um a lot of the functions as we'll talk + +00:03:43.040 --> 00:03:44.640 +about in a moment that are built into + +00:03:44.640 --> 00:03:46.640 +Emacs + +00:03:46.640 --> 00:03:48.959 +really are macros so a lot of Emacs + +00:03:48.959 --> 00:03:50.480 +features work this way + +00:03:50.480 --> 00:03:53.040 +it might be scary but we have to look at + +00:03:53.040 --> 00:03:54.640 +it closely if we really want to get + +00:03:54.640 --> 00:03:58.400 +friendly with Emacs + +00:03:58.400 --> 00:04:01.439 +um let's just jump right into deaf macro + +00:04:01.439 --> 00:04:03.920 +which is which is our key entry point + +00:04:03.920 --> 00:04:04.720 +and the + +00:04:04.720 --> 00:04:08.560 +notes from this talk include the link um + +00:04:08.560 --> 00:04:12.000 +to that uh which which definitely + +00:04:12.000 --> 00:04:14.640 +uh read through a couple of times and + +00:04:14.640 --> 00:04:16.000 +that may take you through + +00:04:16.000 --> 00:04:19.440 +into the cldf macro which adds + +00:04:19.440 --> 00:04:23.440 +the common list lisp extensions + +00:04:23.440 --> 00:04:26.840 +and uh definitely + +00:04:26.840 --> 00:04:30.560 +uh challenging uh I've struggled there + +00:04:30.560 --> 00:04:31.759 +as we'll take a look at in + +00:04:31.759 --> 00:04:34.800 +in a moment um + +00:04:34.800 --> 00:04:36.400 +so I haven't played too much with cl + +00:04:36.400 --> 00:04:38.320 +maclet perhaps success in + +00:04:38.320 --> 00:04:42.160 +in that uh keyword space and figuring + +00:04:42.160 --> 00:04:44.320 +out what the right balance is there + +00:04:44.320 --> 00:04:46.000 +what will give me the confidence to try + +00:04:46.000 --> 00:04:47.680 +some more lexical + +00:04:47.680 --> 00:04:51.680 +uh macros + +00:04:51.680 --> 00:04:53.919 +let me also briefly introduce the comma + +00:04:53.919 --> 00:04:55.440 +and back quote if you + +00:04:55.440 --> 00:04:58.479 +have uh allowed your eyes to cross when + +00:04:58.479 --> 00:05:00.080 +you see these and that's not + +00:05:00.080 --> 00:05:03.600 +uh a shameful shameful thing it's + +00:05:03.600 --> 00:05:06.080 +confusing and we should be + +00:05:06.080 --> 00:05:08.160 +alerting each other when we when we + +00:05:08.160 --> 00:05:09.520 +stick macros in + +00:05:09.520 --> 00:05:11.199 +often by putting them in different + +00:05:11.199 --> 00:05:12.960 +different library spaces for complicated + +00:05:12.960 --> 00:05:14.160 +projects + +00:05:14.160 --> 00:05:17.520 +or um otherwise sort of warning people + +00:05:17.520 --> 00:05:19.520 +that this is not an interactive function + +00:05:19.520 --> 00:05:21.919 +if you get away with using it like one + +00:05:21.919 --> 00:05:22.639 +um + +00:05:22.639 --> 00:05:26.000 +to watch your back + +00:05:26.000 --> 00:05:29.440 +the uh + +00:05:29.440 --> 00:05:32.800 +the manual itself talks about macros + +00:05:32.800 --> 00:05:35.840 +as being a way of evaluating + +00:05:35.840 --> 00:05:39.039 +you know as as being um + +00:05:39.039 --> 00:05:41.520 +an evaluator that will take our amex + +00:05:41.520 --> 00:05:42.800 +lisp expression + +00:05:42.800 --> 00:05:44.800 +and the set of forms that kind of that + +00:05:44.800 --> 00:05:47.590 +will feed to it our code + +00:05:47.590 --> 00:05:48.960 +[Music] + +00:05:48.960 --> 00:05:51.120 +but it also provides us with this + +00:05:51.120 --> 00:05:52.000 +concept of an + +00:05:52.000 --> 00:05:55.039 +environment and and and that's really + +00:05:55.039 --> 00:05:56.639 +where the power + +00:05:56.639 --> 00:05:58.240 +comes in through that we can have + +00:05:58.240 --> 00:06:00.080 +lexical variables and + +00:06:00.080 --> 00:06:03.199 +um think about uh bring in some of the + +00:06:03.199 --> 00:06:06.400 +capabilities that + +00:06:06.400 --> 00:06:09.759 +um can be harder to reach with + +00:06:09.759 --> 00:06:13.840 +a a a pure declarative statement that + +00:06:13.840 --> 00:06:14.800 +doesn't allow + +00:06:14.800 --> 00:06:18.000 +for uh + +00:06:18.000 --> 00:06:21.440 +top level + +00:06:21.440 --> 00:06:28.639 +um asynchronous asynchronicity + +00:06:28.639 --> 00:06:31.950 +uh I'm gonna basically + +00:06:31.950 --> 00:06:33.520 +[Music] + +00:06:33.520 --> 00:06:35.759 +ignore the bike compilation phase for + +00:06:35.759 --> 00:06:36.880 +this talk + +00:06:36.880 --> 00:06:38.639 +uh in order to have any prayer of + +00:06:38.639 --> 00:06:39.919 +getting through it in the + +00:06:39.919 --> 00:06:43.600 +remaining nine or 11 minutes or whatever + +00:06:43.600 --> 00:06:48.319 +uh but + +00:06:48.319 --> 00:06:50.160 +suffice it to say it that's a scary + +00:06:50.160 --> 00:06:52.240 +space and that's that's that's really + +00:06:52.240 --> 00:06:54.160 +the thing that you want to start + +00:06:54.160 --> 00:06:57.199 +learning about as you think about taking + +00:06:57.199 --> 00:07:02.160 +taking macros on uh in earnest + +00:07:02.160 --> 00:07:05.919 +the um coming back to the comma syntax + +00:07:05.919 --> 00:07:07.440 +then + +00:07:07.440 --> 00:07:09.759 +having having given ourselves sort of a + +00:07:09.759 --> 00:07:12.479 +working definition for the Emacs lisp + +00:07:12.479 --> 00:07:14.479 +runtime environment then we can say that + +00:07:14.479 --> 00:07:15.840 +macros are going to + +00:07:15.840 --> 00:07:21.120 +inject code back into that stream + +00:07:21.120 --> 00:07:25.280 +whereas back quote is going to + +00:07:25.280 --> 00:07:28.479 +uh going to give code back + +00:07:28.479 --> 00:07:31.919 +to the to the stream or interject sorry + +00:07:31.919 --> 00:07:34.560 +it's going to interject uh back into the + +00:07:34.560 --> 00:07:35.360 +stream + +00:07:35.360 --> 00:07:39.840 +uh sort of uh an exclamatory excuse me + +00:07:39.840 --> 00:07:43.280 +I'd like to uh + +00:07:43.280 --> 00:07:46.720 +have a value here and we can take that + +00:07:46.720 --> 00:07:48.639 +value from the environment as it exists + +00:07:48.639 --> 00:07:54.160 +when our macro is evaluated + +00:07:54.160 --> 00:07:56.639 +back quote on the other hand takes the + +00:07:56.639 --> 00:07:57.280 +result + +00:07:57.280 --> 00:08:00.560 +from that and uh + +00:08:00.560 --> 00:08:02.400 +and returns it back to the stream for + +00:08:02.400 --> 00:08:04.319 +evaluation at the processing level that + +00:08:04.319 --> 00:08:05.680 +invoked us + +00:08:05.680 --> 00:08:08.720 +so in other words perhaps back up to + +00:08:08.720 --> 00:08:10.960 +a top level eval expression where our + +00:08:10.960 --> 00:08:16.720 +macro is invoked + +00:08:16.720 --> 00:08:20.080 +uh wrong way so um + +00:08:20.080 --> 00:08:22.560 +with what's I'm going to briefly bring + +00:08:22.560 --> 00:08:23.759 +you back to the game + +00:08:23.759 --> 00:08:27.120 +for just a moment + +00:08:27.120 --> 00:08:30.240 +um I won't + +00:08:30.240 --> 00:08:32.479 +I won't has I won't linger on this slide + +00:08:32.479 --> 00:08:33.599 +but but + +00:08:33.599 --> 00:08:37.039 +briefly uh this is a + +00:08:37.039 --> 00:08:40.080 +roll paper role-playing pen + +00:08:40.080 --> 00:08:43.599 +and pencil uh physical dice + +00:08:43.599 --> 00:08:46.320 +tradition that dates back a long time + +00:08:46.320 --> 00:08:48.080 +from a technology perspective + +00:08:48.080 --> 00:08:51.279 +it's it's old in the same way that uh + +00:08:51.279 --> 00:08:54.640 +other tools uh that I like are + +00:08:54.640 --> 00:08:58.560 +old + +00:08:58.560 --> 00:09:00.560 +uh it's simple to understand and I can + +00:09:00.560 --> 00:09:02.560 +communicate a lot with it with a simple + +00:09:02.560 --> 00:09:04.160 +amount of you know typing or + +00:09:04.160 --> 00:09:09.120 +scribbling something on a piece of paper + +00:09:09.120 --> 00:09:12.399 +it has a complicated problem space um + +00:09:12.399 --> 00:09:15.519 +of its own again I don't want to + +00:09:15.519 --> 00:09:18.560 +get too much into the game here but + +00:09:18.560 --> 00:09:21.680 +uh in this in this talk for the last + +00:09:21.680 --> 00:09:23.360 +five minutes I'll focus + +00:09:23.360 --> 00:09:26.640 +on the process that we took to to + +00:09:26.640 --> 00:09:29.920 +automate uh getting data out of the org + +00:09:29.920 --> 00:09:31.120 +mode tables which + +00:09:31.120 --> 00:09:32.720 +eventually as we'll talk about more + +00:09:32.720 --> 00:09:36.000 +tomorrow are used to draw + +00:09:36.000 --> 00:09:39.440 +game maps and other things + +00:09:39.440 --> 00:09:42.240 +um here I talk about kind of why we did + +00:09:42.240 --> 00:09:45.279 +that I'm going to skip briefly past that + +00:09:45.279 --> 00:09:49.360 +and say instead that at a high level + +00:09:49.360 --> 00:09:51.920 +it's it's symbolic informatics we're + +00:09:51.920 --> 00:09:53.519 +giving a symbolic name + +00:09:53.519 --> 00:09:58.080 +to a tile set and then + +00:09:58.080 --> 00:10:02.000 +uh + +00:10:02.000 --> 00:10:04.000 +and then assigning that tile set some + +00:10:04.000 --> 00:10:05.360 +some characteristics like physical + +00:10:05.360 --> 00:10:06.000 +speeds + +00:10:06.000 --> 00:10:08.399 +screen space a variable that we might + +00:10:08.399 --> 00:10:09.279 +want to swap in + +00:10:09.279 --> 00:10:12.800 +and so forth uh and + +00:10:12.800 --> 00:10:15.200 +you know our project rests heavily on on + +00:10:15.200 --> 00:10:16.160 +org mode and + +00:10:16.160 --> 00:10:21.040 +it's it's fundamental capabilities + +00:10:21.040 --> 00:10:24.000 +so the the code I'm going to show here + +00:10:24.000 --> 00:10:24.959 +is + +00:10:24.959 --> 00:10:28.320 +uh is + +00:10:28.320 --> 00:10:31.360 +is focused around sort of a a sticky + +00:10:31.360 --> 00:10:33.040 +problem space in in the information + +00:10:33.040 --> 00:10:35.600 +technology and I'm I'm a professional + +00:10:35.600 --> 00:10:39.120 +uh uh software engineer turned uh + +00:10:39.120 --> 00:10:41.120 +technology architect I support + +00:10:41.120 --> 00:10:45.120 +the websites for a recognizable + +00:10:45.120 --> 00:10:47.600 +financial services brand that I don't + +00:10:47.600 --> 00:10:49.680 +identify just so I don't accidentally + +00:10:49.680 --> 00:10:50.720 +end up + +00:10:50.720 --> 00:10:54.399 +uh inadvertently misrepresenting my firm + +00:10:54.399 --> 00:10:55.600 +in some financial + +00:10:55.600 --> 00:10:57.760 +uh perspective if I let some other + +00:10:57.760 --> 00:11:00.480 +companies slip at certain let some other + +00:11:00.480 --> 00:11:01.760 +companies slip + +00:11:01.760 --> 00:11:06.560 +name slip or my own it's certainly no + +00:11:06.560 --> 00:11:08.160 +representation of an opinion other than + +00:11:08.160 --> 00:11:11.279 +my own + +00:11:11.279 --> 00:11:13.980 +the um + +00:11:13.980 --> 00:11:18.800 +[Music] + +00:11:18.800 --> 00:11:22.720 +so etl has to do with moving data around + +00:11:22.720 --> 00:11:26.240 +we we have the idea of of + +00:11:26.240 --> 00:11:29.200 +a pipeline where we'll be able to verify + +00:11:29.200 --> 00:11:30.560 +certain assumptions not + +00:11:30.560 --> 00:11:32.480 +nominally about data quality but it + +00:11:32.480 --> 00:11:33.600 +could be about anything + +00:11:33.600 --> 00:11:36.000 +before the pipeline starts okay we've + +00:11:36.000 --> 00:11:37.279 +got a state where we think it should + +00:11:37.279 --> 00:11:38.560 +work if we run it + +00:11:38.560 --> 00:11:41.920 +we have uh some extraction where we'll + +00:11:41.920 --> 00:11:44.160 +get our sources and we may have the the + +00:11:44.160 --> 00:11:45.040 +opportunity to + +00:11:45.040 --> 00:11:47.920 +uh make some assertions there and in the + +00:11:47.920 --> 00:11:48.720 +transform + +00:11:48.720 --> 00:11:51.360 +stage as well as the load things get a + +00:11:51.360 --> 00:11:52.720 +little dicer + +00:11:52.720 --> 00:11:54.079 +to the point where we come out of the + +00:11:54.079 --> 00:11:55.360 +load stage and we should have some + +00:11:55.360 --> 00:11:57.040 +really solid assertions again that we + +00:11:57.040 --> 00:11:58.480 +can even go back and compare to the + +00:11:58.480 --> 00:11:59.680 +extract stage + +00:11:59.680 --> 00:12:02.639 +and from this we have the rudimentaries + +00:12:02.639 --> 00:12:04.959 +of a data quality practice + +00:12:04.959 --> 00:12:08.399 +uh in this case we have a number of org + +00:12:08.399 --> 00:12:09.360 +mode files that will all + +00:12:09.360 --> 00:12:12.639 +be distributed across a + +00:12:12.639 --> 00:12:16.720 +number of players uh computers + +00:12:16.720 --> 00:12:18.959 +so we might not want to update every + +00:12:18.959 --> 00:12:20.320 +part of every buffer + +00:12:20.320 --> 00:12:22.720 +I think it's a complicated problem space + +00:12:22.720 --> 00:12:24.560 +and so we tried to take + +00:12:24.560 --> 00:12:27.839 +a long-term view of + +00:12:27.839 --> 00:12:31.120 +the solution that we needed um so I'll + +00:12:31.120 --> 00:12:32.160 +go ahead + +00:12:32.160 --> 00:12:35.760 +and open up the fun function + +00:12:35.760 --> 00:12:37.839 +that well let's let's actually start + +00:12:37.839 --> 00:12:41.680 +with the one that's pretty easy to read + +00:12:41.680 --> 00:12:45.040 +and uh I'm gonna go ahead and just crank + +00:12:45.040 --> 00:12:46.800 +it up huge + +00:12:46.800 --> 00:12:51.680 +in case anybody's watching in 480. + +00:12:51.680 --> 00:12:56.480 +um so this this program is not + +00:12:56.480 --> 00:12:58.560 +a work of art it's a simple + +00:12:58.560 --> 00:13:01.120 +implementation of the idea that a list + +00:13:01.120 --> 00:13:05.440 +an a list of functions that return + +00:13:05.440 --> 00:13:08.160 +maybe some data maybe some data and an + +00:13:08.160 --> 00:13:10.399 +entry back into that a list + +00:13:10.399 --> 00:13:13.040 +um can be done quite extensively with + +00:13:13.040 --> 00:13:15.680 +very few lines of code + +00:13:15.680 --> 00:13:17.760 +neither is it an especially tight or + +00:13:17.760 --> 00:13:19.600 +thrifty implementation + +00:13:19.600 --> 00:13:22.000 +it's just trying to get the job done + +00:13:22.000 --> 00:13:22.800 +with a doc + +00:13:22.800 --> 00:13:26.160 +statement for everything at the heart + +00:13:26.160 --> 00:13:30.880 +um we see a call to this macro called dm + +00:13:30.880 --> 00:13:32.480 +coalesce hash and that's what I'd like + +00:13:32.480 --> 00:13:35.360 +to focus in on you can see I think + +00:13:35.360 --> 00:13:37.680 +that something on unpleasant is + +00:13:37.680 --> 00:13:38.800 +happening here + +00:13:38.800 --> 00:13:42.480 +I've got an eval in um + +00:13:42.480 --> 00:13:46.560 +what is I will share a a + +00:13:46.560 --> 00:13:49.519 +fairly central function that that that + +00:13:49.519 --> 00:13:49.920 +that + +00:13:49.920 --> 00:13:52.160 +those implementing this etl pattern are + +00:13:52.160 --> 00:13:53.920 +welcome to + +00:13:53.920 --> 00:13:56.639 +derive from that is this is a default + +00:13:56.639 --> 00:13:57.680 +transform + +00:13:57.680 --> 00:13:59.680 +that you can get when loading certain + +00:13:59.680 --> 00:14:00.959 +kinds of + +00:14:00.959 --> 00:14:04.560 +uh orgmo tables that have been uh + +00:14:04.560 --> 00:14:06.399 +properly adorned and again we'll get + +00:14:06.399 --> 00:14:09.120 +into that all tomorrow + +00:14:09.120 --> 00:14:11.440 +so keep an eye on time couple minutes + +00:14:11.440 --> 00:14:13.760 +left let's look at the macro itself and + +00:14:13.760 --> 00:14:15.360 +I have a slide on this but let's go + +00:14:15.360 --> 00:14:24.639 +ahead and risk getting off page + +00:14:24.639 --> 00:14:27.199 +oh boy here we go so this is my + +00:14:27.199 --> 00:14:28.959 +utilities bucket + +00:14:28.959 --> 00:14:31.920 +it has such basic features as give me a + +00:14:31.920 --> 00:14:34.000 +hash table with some defaults I'll think + +00:14:34.000 --> 00:14:36.000 +about that later + +00:14:36.000 --> 00:14:39.680 +and + +00:14:39.680 --> 00:14:44.720 +and add to list um a special version + +00:14:44.720 --> 00:14:47.600 +that enables us to be a little cavalier + +00:14:47.600 --> 00:14:49.360 +in experimenting with a-list versus + +00:14:49.360 --> 00:14:50.480 +hashes versus p + +00:14:50.480 --> 00:14:52.800 +lists we've made a right mess for + +00:14:52.800 --> 00:14:54.399 +ourselves in the proof of concept area + +00:14:54.399 --> 00:14:55.279 +and it's ripe + +00:14:55.279 --> 00:14:58.560 +for someone to write a white paper about + +00:14:58.560 --> 00:15:00.240 +when to prefer these things + +00:15:00.240 --> 00:15:04.800 +and fix + +00:15:04.800 --> 00:15:08.000 +the merge a list uh + +00:15:08.000 --> 00:15:10.720 +same work here let's get let's get down + +00:15:10.720 --> 00:15:12.959 +to business + +00:15:12.959 --> 00:15:16.000 +this function has quite a this a macro + +00:15:16.000 --> 00:15:18.560 +has quite a doc string and I think I + +00:15:18.560 --> 00:15:20.720 +mentioned earlier that I got myself into + +00:15:20.720 --> 00:15:22.240 +trouble with the keyword properties you + +00:15:22.240 --> 00:15:23.519 +can see that we have + +00:15:23.519 --> 00:15:27.839 +not only quite a number of them but + +00:15:27.839 --> 00:15:32.240 +a lot of a lot of default values many of + +00:15:32.240 --> 00:15:32.880 +which + +00:15:32.880 --> 00:15:36.000 +may be relying on the + +00:15:36.000 --> 00:15:37.680 +values that are passed in here this is + +00:15:37.680 --> 00:15:40.000 +complicated and as it turns out + +00:15:40.000 --> 00:15:44.000 +um I wasn't brave enough in most cases + +00:15:44.000 --> 00:15:46.079 +to try to write a lambda that could + +00:15:46.079 --> 00:15:47.279 +understand and + +00:15:47.279 --> 00:15:49.680 +replace uh its own local variable I just + +00:15:49.680 --> 00:15:50.399 +didn't + +00:15:50.399 --> 00:15:53.519 +it didn't save me enough time this was + +00:15:53.519 --> 00:15:54.800 +really easy + +00:15:54.800 --> 00:15:56.800 +to read and write and understand as I + +00:15:56.800 --> 00:15:58.240 +thought through my problem + +00:15:58.240 --> 00:16:01.440 +but now as I use it I I've lost a little + +00:16:01.440 --> 00:16:03.360 +ground maybe with this and I'm not even + +00:16:03.360 --> 00:16:04.079 +sure + +00:16:04.079 --> 00:16:07.279 +I like what I got from uh the many + +00:16:07.279 --> 00:16:08.079 +keyword + +00:16:08.079 --> 00:16:10.560 +properties when it and we can look + +00:16:10.560 --> 00:16:11.920 +perhaps if we have + +00:16:11.920 --> 00:16:17.340 +the time at what that looks like in uh + +00:16:17.340 --> 00:16:19.920 +[Music] + +00:16:19.920 --> 00:16:22.720 +oh all right I have to separately + +00:16:22.720 --> 00:16:24.480 +dismiss and restart that + +00:16:24.480 --> 00:16:27.519 +um so that so that's just about my time + +00:16:27.519 --> 00:16:29.600 +uh and being respectful of that I want + +00:16:29.600 --> 00:16:31.920 +to invite presenters to just jump in at + +00:16:31.920 --> 00:16:35.519 +any of the many large pauses I leave + +00:16:35.519 --> 00:16:38.079 +uh as I'll just leave up the doc string + +00:16:38.079 --> 00:16:40.160 +for a moment and maybe split the screen + +00:16:40.160 --> 00:16:45.199 +and pull open an item + +00:16:45.199 --> 00:16:48.720 +you are now unmuted uh thank you very + +00:16:48.720 --> 00:16:50.720 +much for your talk corwin + +00:16:50.720 --> 00:16:53.839 +um I think you still have like uh + +00:16:53.839 --> 00:16:55.279 +maybe three or four more minutes if you + +00:16:55.279 --> 00:16:57.680 +want to quickly wrap up + +00:16:57.680 --> 00:17:01.040 +okay so three or four more minutes I can + +00:17:01.040 --> 00:17:02.160 +easily spend + +00:17:02.160 --> 00:17:05.439 +on thank yous + +00:17:05.439 --> 00:17:07.280 +I might switch to that if there aren't + +00:17:07.280 --> 00:17:08.270 +questions on the path + +00:17:08.270 --> 00:17:10.160 +[Music] + +00:17:10.160 --> 00:17:12.559 +um would you like me to pull up the pad + +00:17:12.559 --> 00:17:14.079 +or are you looking at it + +00:17:14.079 --> 00:17:17.199 +I am I bookmarked it I am + +00:17:17.199 --> 00:17:30.840 +pulling the tab and I'll bring it in + +00:17:30.840 --> 00:17:34.960 +okay + +00:17:34.960 --> 00:17:38.799 +all right this is the wrong ether pad + +00:17:38.799 --> 00:17:44.480 +thanks for the link + +00:17:44.480 --> 00:17:48.000 +all right um so I think I'm looking for + +00:17:48.000 --> 00:17:54.880 +macros + +00:17:54.880 --> 00:17:58.400 +uh okay key message sure so the + +00:17:58.400 --> 00:18:01.679 +the key message is that it's um it's a + +00:18:01.679 --> 00:18:02.960 +jungle out there + +00:18:02.960 --> 00:18:06.240 +macros along with any other design can + +00:18:06.240 --> 00:18:08.559 +leave you in a position + +00:18:08.559 --> 00:18:11.919 +where you have a nice api and I can show + +00:18:11.919 --> 00:18:13.600 +you other examples you can find them in + +00:18:13.600 --> 00:18:14.960 +the dungeon mode source + +00:18:14.960 --> 00:18:18.480 +of many many other places where I use + +00:18:18.480 --> 00:18:21.600 +this exact same formula quickly + +00:18:21.600 --> 00:18:23.840 +sketching out how a character sheet + +00:18:23.840 --> 00:18:26.960 +or another big data set needs to + +00:18:26.960 --> 00:18:28.480 +needs to figure out what tables are + +00:18:28.480 --> 00:18:29.600 +going to be interesting from the + +00:18:29.600 --> 00:18:30.720 +collection of files + +00:18:30.720 --> 00:18:34.400 +and then load up the tile set and + +00:18:34.400 --> 00:18:38.880 +the uh layout file from that + +00:18:38.880 --> 00:18:41.600 +and I mean it works this the project is + +00:18:41.600 --> 00:18:43.280 +moving forward with this I have the + +00:18:43.280 --> 00:18:44.799 +flexibility that I need + +00:18:44.799 --> 00:18:46.720 +but here I am evaling my own code to + +00:18:46.720 --> 00:18:48.640 +make darn sure even if I get by + +00:18:48.640 --> 00:18:52.400 +by compiled uh this macro doesn't uh + +00:18:52.400 --> 00:18:55.440 +does get evaluated in the user's real + +00:18:55.440 --> 00:18:58.160 +run time clearly a design fail so that + +00:18:58.160 --> 00:18:58.880 +would be + +00:18:58.880 --> 00:19:00.880 +the key point of my talk is is to + +00:19:00.880 --> 00:19:02.400 +present this design + +00:19:02.400 --> 00:19:05.600 +fail and uh thank + +00:19:05.600 --> 00:19:08.320 +um thank the community but especially + +00:19:08.320 --> 00:19:09.520 +wasa masa + +00:19:09.520 --> 00:19:12.160 +for for some patience and let me add at + +00:19:12.160 --> 00:19:13.280 +this moment that + +00:19:13.280 --> 00:19:15.200 +uh he was so frustrated with me they + +00:19:15.200 --> 00:19:16.799 +were sort of frustrated with me I think + +00:19:16.799 --> 00:19:17.360 +I + +00:19:17.360 --> 00:19:20.400 +didn't qualify pronouns um + +00:19:20.400 --> 00:19:24.240 +with um + +00:19:24.240 --> 00:19:26.640 +with doing this the the first the this + +00:19:26.640 --> 00:19:28.160 +was one of our first interactions and + +00:19:28.160 --> 00:19:29.919 +the feedback was + +00:19:29.919 --> 00:19:34.240 +why is this a macro full stop + +00:19:34.240 --> 00:19:36.640 +and uh that's a great message actually + +00:19:36.640 --> 00:19:38.320 +and I and I hope that + +00:19:38.320 --> 00:19:40.160 +uh maybe this can encourage further + +00:19:40.160 --> 00:19:42.720 +talks across the subject about + +00:19:42.720 --> 00:19:44.160 +you know hey wait a minute macros are + +00:19:44.160 --> 00:19:46.720 +really fantastic as I hope I made + +00:19:46.720 --> 00:19:48.559 +clear you can do a tremendous amount + +00:19:48.559 --> 00:19:51.039 +about uh with them and we rely on them + +00:19:51.039 --> 00:19:52.320 +for + +00:19:52.320 --> 00:19:55.200 +almost all the fun goodies um from you + +00:19:55.200 --> 00:19:56.480 +know defund + +00:19:56.480 --> 00:20:02.159 +secu + +00:20:02.159 --> 00:20:04.960 +um I want to get to my my thank yous let + +00:20:04.960 --> 00:20:05.440 +me just + +00:20:05.440 --> 00:20:18.840 +peek back at the pad + +00:20:18.840 --> 00:20:20.000 +oh + +00:20:20.000 --> 00:20:22.080 +well that was actually a scratch buffer + +00:20:22.080 --> 00:20:23.760 +so I'll have to sort of read it cold off + +00:20:23.760 --> 00:20:24.720 +my notes + +00:20:24.720 --> 00:20:27.919 +um + +00:20:27.919 --> 00:20:30.320 +but also but I'll switch to I'll also + +00:20:30.320 --> 00:20:31.600 +I'll say a couple of thank yous if you + +00:20:31.600 --> 00:20:34.320 +don't mind + +00:20:34.320 --> 00:20:36.080 +in addition to the big thank you that I + +00:20:36.080 --> 00:20:38.400 +hope was implied by my shout out to wasa + +00:20:38.400 --> 00:20:39.360 +masa + +00:20:39.360 --> 00:20:42.720 +um I also want to thank you amen for + +00:20:42.720 --> 00:20:46.640 +um your kindness in extending + +00:20:46.640 --> 00:20:51.360 +to the project as well as to me the + +00:20:51.360 --> 00:20:54.320 +the chance to present here and and and + +00:20:54.320 --> 00:20:55.440 +you've you've also + +00:20:55.440 --> 00:20:56.799 +just done a lot of great stuff for our + +00:20:56.799 --> 00:20:59.360 +project thank you very much for that and + +00:20:59.360 --> 00:21:13.120 +sasha + +00:21:13.120 --> 00:21:15.919 +I'll get there um thank you so much for + +00:21:15.919 --> 00:21:17.200 +the inspiration that you are to our + +00:21:17.200 --> 00:21:18.320 +whole community + +00:21:18.320 --> 00:21:22.400 +I also want to thank the presenters + +00:21:22.400 --> 00:21:25.600 +um for just being so flexible and + +00:21:25.600 --> 00:21:27.600 +uh nagging back through the whole thing + +00:21:27.600 --> 00:21:29.120 +and especially to leo + +00:21:29.120 --> 00:21:30.960 +who has done so much to drive the show + +00:21:30.960 --> 00:21:32.159 +today + +00:21:32.159 --> 00:21:35.520 +um I + +00:21:35.520 --> 00:21:37.840 +this is a fractious tent at times and + +00:21:37.840 --> 00:21:38.960 +sometimes + +00:21:38.960 --> 00:21:41.360 +it is indeed a little bit of a circus + +00:21:41.360 --> 00:21:43.039 +but I + +00:21:43.039 --> 00:21:45.520 +am learning so much so fast I'm just + +00:21:45.520 --> 00:21:46.880 +inspired by how much + +00:21:46.880 --> 00:21:50.320 +Emacs can teach us thank you + +00:21:50.320 --> 00:21:53.120 +uh corbin for your kind words and you + +00:21:53.120 --> 00:21:54.960 +know about me of course but all about + +00:21:54.960 --> 00:21:56.000 +you know all of us + +00:21:56.000 --> 00:21:59.760 +and the conference and you know indeed + +00:21:59.760 --> 00:22:02.400 +thanks to everyone who's helped uh + +00:22:02.400 --> 00:22:04.159 +including the speakers of course + +00:22:04.159 --> 00:22:05.840 +without whom you know a maxcom really + +00:22:05.840 --> 00:22:08.960 +wouldn't have been a EmacsConf + +00:22:08.960 --> 00:22:10.640 +and you know it's been a pleasure + +00:22:10.640 --> 00:22:12.080 +knowing you and working with + +00:22:12.080 --> 00:22:15.520 +you um I guess um from afar for the most + +00:22:15.520 --> 00:22:17.360 +part on dungeon mode like helping + +00:22:17.360 --> 00:22:18.960 +helping with like small things here and + +00:22:18.960 --> 00:22:20.720 +there but um + +00:22:20.720 --> 00:22:22.320 +yeah it's been my pleasure and it's + +00:22:22.320 --> 00:22:23.840 +great to have you and + +00:22:23.840 --> 00:22:25.840 +um everyone else you know part of the + +00:22:25.840 --> 00:22:26.880 +community and + +00:22:26.880 --> 00:22:29.440 +for me to be part of the community it's + +00:22:29.440 --> 00:22:30.559 +been a lot of fun + +00:22:30.559 --> 00:22:33.679 +thank you + +00:22:33.679 --> 00:22:36.080 +it's it's it's it's an honor and I don't + +00:22:36.080 --> 00:22:38.000 +use that word an awful lot because I + +00:22:38.000 --> 00:22:38.720 +sort of + +00:22:38.720 --> 00:22:41.760 +sort of smirk at it but um gets us in a + +00:22:41.760 --> 00:22:44.320 +lot of trouble honor does but + +00:22:44.320 --> 00:22:47.360 +this will be a sure time to use it thank + +00:22:47.360 --> 00:22:48.840 +you + +00:22:48.840 --> 00:22:51.840 +likewise diff --git a/2020/subtitles/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs-autogen.vtt b/2020/subtitles/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs-autogen.vtt new file mode 100644 index 00000000..e9bcd225 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs-autogen.vtt @@ -0,0 +1,3301 @@ +WEBVTT + +00:00:00.080 --> 00:00:02.639 +hi my name is eduardo x I'm this person + +00:00:02.639 --> 00:00:03.439 +here + +00:00:03.439 --> 00:00:06.240 +and the title of this talk is on why + +00:00:06.240 --> 00:00:07.120 +most of + +00:00:07.120 --> 00:00:09.519 +most of the best features in ev look + +00:00:09.519 --> 00:00:11.599 +like five minute hacks + +00:00:11.599 --> 00:00:13.759 +and this is a presentation at the max + +00:00:13.759 --> 00:00:15.280 +conf 2020 + +00:00:15.280 --> 00:00:23.199 +happening in november 22 28 and 29 2020 + +00:00:23.199 --> 00:00:25.519 +so this is part one of the presentation + +00:00:25.519 --> 00:00:27.680 +and here I'm going to explain some + +00:00:27.680 --> 00:00:29.840 +some ideas that are prerequisites for + +00:00:29.840 --> 00:00:31.039 +understanding the rest of the + +00:00:31.039 --> 00:00:32.320 +presentation + +00:00:32.320 --> 00:00:35.440 +the three main keys of ev are matay meta + +00:00:35.440 --> 00:00:35.760 +k + +00:00:35.760 --> 00:00:37.920 +and mata j and I'm going to start by + +00:00:37.920 --> 00:00:42.079 +explaining metae and meta k + +00:00:42.079 --> 00:00:44.960 +metae is used to follow hyperlink and + +00:00:44.960 --> 00:00:46.800 +technically it is + +00:00:46.800 --> 00:00:49.680 +essentially just a ctrl e to move to the + +00:00:49.680 --> 00:00:50.879 +end of the line and then + +00:00:50.879 --> 00:00:54.320 +a ctrl x control e to execute this the + +00:00:54.320 --> 00:00:58.960 +sext before point at the end of the line + +00:00:58.960 --> 00:01:00.879 +and the thing is that a max comes with + +00:01:00.879 --> 00:01:03.120 +many functions that can be used as sex + +00:01:03.120 --> 00:01:05.040 +hyperlinks + +00:01:05.040 --> 00:01:07.040 +we can consider that they point to + +00:01:07.040 --> 00:01:09.040 +somewhere I'm going to refer to that as + +00:01:09.040 --> 00:01:09.520 +the + +00:01:09.520 --> 00:01:11.920 +target of the hyperlink and if we + +00:01:11.920 --> 00:01:12.960 +execute this + +00:01:12.960 --> 00:01:15.759 +sex paper links would go to that target + +00:01:15.759 --> 00:01:17.119 +for example this one + +00:01:17.119 --> 00:01:20.000 +is a hyperlink that points to a buffer + +00:01:20.000 --> 00:01:22.720 +with demand paid for cat + +00:01:22.720 --> 00:01:25.040 +and usually but not always after + +00:01:25.040 --> 00:01:27.040 +following the hyperlink we can go back + +00:01:27.040 --> 00:01:29.840 +by just skilling the the current buffer + +00:01:29.840 --> 00:01:30.720 +that the hyperlink + +00:01:30.720 --> 00:01:34.400 +created the target of the hyperlink + +00:01:34.400 --> 00:01:38.000 +but this example here is badly behaved + +00:01:38.000 --> 00:01:41.360 +if we execute it it creates a new frame + +00:01:41.360 --> 00:01:43.360 +and to go back to the previous situation + +00:01:43.360 --> 00:01:44.640 +we have to either + +00:01:44.640 --> 00:01:52.840 +click here or type ctrl x50 + +00:01:52.840 --> 00:01:54.880 +uh + +00:01:54.880 --> 00:01:57.520 +so here are some examples of sex + +00:01:57.520 --> 00:02:00.640 +hyperlinks using standard max functions + +00:02:00.640 --> 00:02:03.600 +this third one is uh badly behaved in a + +00:02:03.600 --> 00:02:04.880 +different way + +00:02:04.880 --> 00:02:08.879 +if executed we the target is created in + +00:02:08.879 --> 00:02:09.840 +the same window + +00:02:09.840 --> 00:02:13.840 +as we are now but it also shows a lot of + +00:02:13.840 --> 00:02:16.000 +garbage here in the aqua area so + +00:02:16.000 --> 00:02:20.840 +the the current frame becomes a bit + +00:02:20.840 --> 00:02:23.280 +messy + +00:02:23.280 --> 00:02:26.160 +and well one of the first things that I + +00:02:26.160 --> 00:02:28.319 +did when I was creating av + +00:02:28.319 --> 00:02:30.720 +many many years ago was that I created + +00:02:30.720 --> 00:02:31.680 +variants + +00:02:31.680 --> 00:02:34.840 +of all these functions that were better + +00:02:34.840 --> 00:02:36.640 +behaved + +00:02:36.640 --> 00:02:38.640 +and they were better behaved in two + +00:02:38.640 --> 00:02:40.480 +senses the obvious one + +00:02:40.480 --> 00:02:43.040 +was that they they all created the + +00:02:43.040 --> 00:02:43.680 +target + +00:02:43.680 --> 00:02:45.840 +in the same window as before so I could + +00:02:45.840 --> 00:02:48.720 +go back by just typing meta k + +00:02:48.720 --> 00:02:51.040 +which is essentially just killed this + +00:02:51.040 --> 00:02:52.879 +buffer + +00:02:52.879 --> 00:02:55.200 +and well but I also implemented + +00:02:55.200 --> 00:02:56.480 +something extra that + +00:02:56.480 --> 00:02:59.040 +are the post back lists for example for + +00:02:59.040 --> 00:02:59.840 +example these + +00:02:59.840 --> 00:03:03.599 +extra arguments here are a postback list + +00:03:03.599 --> 00:03:06.080 +and this extra arguments specify + +00:03:06.080 --> 00:03:09.599 +position and the target buffer + +00:03:09.599 --> 00:03:13.040 +and in this example this this spot + +00:03:13.040 --> 00:03:16.720 +spec list means starting from the from + +00:03:16.720 --> 00:03:18.239 +the beginning of the buffer + +00:03:18.239 --> 00:03:20.560 +search for the first occurrence of this + +00:03:20.560 --> 00:03:22.239 +string + +00:03:22.239 --> 00:03:24.159 +after that after the beginning of the + +00:03:24.159 --> 00:03:25.519 +buffer and then + +00:03:25.519 --> 00:03:28.159 +search for the first occurrence of this + +00:03:28.159 --> 00:03:29.120 +string + +00:03:29.120 --> 00:03:33.760 +after that + +00:03:33.760 --> 00:03:36.560 +eev also defines some hyperlinks that do + +00:03:36.560 --> 00:03:38.799 +not create new buffers + +00:03:38.799 --> 00:03:41.280 +uh here is the first example if I + +00:03:41.280 --> 00:03:41.840 +execute + +00:03:41.840 --> 00:03:45.920 +this one this one is a hyperlink to the + +00:03:45.920 --> 00:03:46.959 +to the result + +00:03:46.959 --> 00:03:50.720 +of running this show comment date uh + +00:03:50.720 --> 00:03:52.959 +but instead of showing the result in the + +00:03:52.959 --> 00:03:55.040 +new buffer the result is shown + +00:03:55.040 --> 00:03:58.959 +here so if execute to this type link + +00:03:58.959 --> 00:04:01.840 +the result of date the output of data is + +00:04:01.840 --> 00:04:04.239 +shown in the echo area and if executed + +00:04:04.239 --> 00:04:07.120 +again + +00:04:07.120 --> 00:04:09.519 +it shows the result again and the result + +00:04:09.519 --> 00:04:11.519 +changes every second + +00:04:11.519 --> 00:04:15.200 +and if so this is a variant + +00:04:15.200 --> 00:04:18.720 +of fine sh + +00:04:18.720 --> 00:04:21.840 +uh find sh0 is the variant that + +00:04:21.840 --> 00:04:24.960 +just shows the output in the echo area + +00:04:24.960 --> 00:04:28.080 +and find sh shows the output in + +00:04:28.080 --> 00:04:31.759 +a new buffer + +00:04:31.759 --> 00:04:35.919 +and here is an example of a hyperlink + +00:04:35.919 --> 00:04:37.520 +that + +00:04:37.520 --> 00:04:40.000 +calls an external program if execute + +00:04:40.000 --> 00:04:41.280 +this + +00:04:41.280 --> 00:04:43.759 +it it calls google chrome to open a + +00:04:43.759 --> 00:04:46.639 +certain url + +00:04:46.639 --> 00:04:51.520 +here it is let's go back to mx + +00:04:51.520 --> 00:04:55.280 +if execute this happening here + +00:04:55.280 --> 00:04:58.479 +it invokes my favorite pdf viewer which + +00:04:58.479 --> 00:04:58.880 +is + +00:04:58.880 --> 00:05:02.560 +xpdf it makes xpdf + +00:05:02.560 --> 00:05:07.759 +open this pdf page it is pdf + +00:05:07.759 --> 00:05:10.880 +in this page and this other arguments + +00:05:10.880 --> 00:05:15.199 +are ignored let me show how it works + +00:05:15.199 --> 00:05:19.120 +here it is this is a an accept from a + +00:05:19.120 --> 00:05:20.160 +book + +00:05:20.160 --> 00:05:22.639 +so page 3 and the pdf corresponds to + +00:05:22.639 --> 00:05:23.199 +page + +00:05:23.199 --> 00:05:26.400 +113 in the book and + +00:05:26.400 --> 00:05:29.360 +this variant here of the hyperlink above + +00:05:29.360 --> 00:05:31.759 +it opens the pdf in a different way + +00:05:31.759 --> 00:05:34.560 +it runs a program called pdf to text on + +00:05:34.560 --> 00:05:36.479 +this pdf here + +00:05:36.479 --> 00:05:39.600 +and max takes the output of + +00:05:39.600 --> 00:05:42.880 +run epd after text on this pdf here + +00:05:42.880 --> 00:05:46.080 +and displays it in a buffer and now this + +00:05:46.080 --> 00:05:47.280 +postback list + +00:05:47.280 --> 00:05:50.000 +is interpreted in a different way this + +00:05:50.000 --> 00:05:51.280 +thing is interpreted + +00:05:51.280 --> 00:05:54.400 +as a as a number of a page and a max + +00:05:54.400 --> 00:05:54.800 +goes + +00:05:54.800 --> 00:05:57.520 +to page three by counting form feeds in + +00:05:57.520 --> 00:05:58.240 +the + +00:05:58.240 --> 00:06:01.440 +converted version of the pdf and then it + +00:06:01.440 --> 00:06:03.039 +searches for this string + +00:06:03.039 --> 00:06:06.319 +and in this three so let's execute this + +00:06:06.319 --> 00:06:08.479 +to see what happens + +00:06:08.479 --> 00:06:10.800 +here it is I opened the same page as + +00:06:10.800 --> 00:06:14.800 +before + +00:06:14.800 --> 00:06:18.400 +it starts with lecture one so + +00:06:18.400 --> 00:06:20.720 +the other hyperlink searched for this + +00:06:20.720 --> 00:06:25.520 +string and for this string here + +00:06:25.520 --> 00:06:28.160 +uh and this thing here is a hyperlink to + +00:06:28.160 --> 00:06:30.400 +video + +00:06:30.400 --> 00:06:32.720 +and when I executed it's going to open + +00:06:32.720 --> 00:06:34.560 +this video here + +00:06:34.560 --> 00:06:37.759 +at this time this time stamp let's see + +00:06:37.759 --> 00:06:41.199 +one two three one + +00:06:41.199 --> 00:06:46.840 +two three that's the way to do + +00:06:46.840 --> 00:06:49.440 +it + +00:06:49.440 --> 00:06:52.560 +and also some hyperlinks that that I + +00:06:52.560 --> 00:06:53.680 +defined + +00:06:53.680 --> 00:06:56.479 +uh they don't work like like usual + +00:06:56.479 --> 00:06:58.160 +hyperlinks they work more + +00:06:58.160 --> 00:07:01.440 +like browser buttons + +00:07:01.440 --> 00:07:06.240 +these buttons that appear in web pages + +00:07:06.240 --> 00:07:09.120 +in the sense that these buttons usually + +00:07:09.120 --> 00:07:11.360 +don't open a new page they usually + +00:07:11.360 --> 00:07:13.280 +just do something to change the current + +00:07:13.280 --> 00:07:14.960 +page + +00:07:14.960 --> 00:07:18.160 +if I execute this the action of this + +00:07:18.160 --> 00:07:18.880 +function + +00:07:18.880 --> 00:07:22.240 +eek is to uh + +00:07:22.240 --> 00:07:24.800 +it interprets this string as a series of + +00:07:24.800 --> 00:07:25.919 +keys and it + +00:07:25.919 --> 00:07:28.840 +acts as if the user had typed all these + +00:07:28.840 --> 00:07:30.319 +keys so + +00:07:30.319 --> 00:07:33.680 +if executed I get a hello in the next + +00:07:33.680 --> 00:07:34.400 +line + +00:07:34.400 --> 00:07:36.639 +if executed again I get another hello + +00:07:36.639 --> 00:07:39.440 +another hello hello hello etc etc + +00:07:39.440 --> 00:07:44.319 +let me undo this mess oops + +00:07:44.319 --> 00:07:47.840 +and here is another kind of button + +00:07:47.840 --> 00:07:51.440 +that defines a new function if I execute + +00:07:51.440 --> 00:07:54.879 +this sex here at this moment though is + +00:07:54.879 --> 00:07:55.759 +not defined + +00:07:55.759 --> 00:07:57.919 +and if I execute this mx is going to + +00:07:57.919 --> 00:08:00.000 +show me a message saying + +00:08:00.000 --> 00:08:03.599 +uh symbols function cell is not defined + +00:08:03.599 --> 00:08:05.840 +something like this + +00:08:05.840 --> 00:08:09.520 +but if I execute the defund + +00:08:09.520 --> 00:08:12.960 +this the action of this function o here + +00:08:12.960 --> 00:08:16.479 +is to run this which opens a certain + +00:08:16.479 --> 00:08:18.960 +directory + +00:08:18.960 --> 00:08:21.840 +let me go back and here is another + +00:08:21.840 --> 00:08:23.039 +button that defines + +00:08:23.039 --> 00:08:25.840 +several functions at the same time if I + +00:08:25.840 --> 00:08:26.479 +execute + +00:08:26.479 --> 00:08:32.320 +this + +00:08:32.320 --> 00:08:35.599 +note that the the result of executing + +00:08:35.599 --> 00:08:36.719 +this expression + +00:08:36.719 --> 00:08:38.640 +is the name of one of the functions that + +00:08:38.640 --> 00:08:40.080 +it defined + +00:08:40.080 --> 00:08:42.800 +that is this one here and let me explain + +00:08:42.800 --> 00:08:43.360 +the + +00:08:43.360 --> 00:08:46.959 +these examples uh one of the functions + +00:08:46.959 --> 00:08:48.800 +that this thing here defined + +00:08:48.800 --> 00:08:51.839 +is called find or git file where + +00:08:51.839 --> 00:08:54.640 +this or gate in the middle of its name + +00:08:54.640 --> 00:08:55.040 +is + +00:08:55.040 --> 00:08:59.600 +exactly this first argument to code cd + +00:08:59.600 --> 00:09:02.640 +and the action of running find or get + +00:09:02.640 --> 00:09:03.120 +file + +00:09:03.120 --> 00:09:06.399 +on a string like this is that + +00:09:06.399 --> 00:09:09.680 +find or get file takes the string + +00:09:09.680 --> 00:09:13.360 +and prepends this string to it + +00:09:13.360 --> 00:09:15.600 +this one here which is the second + +00:09:15.600 --> 00:09:17.920 +argument to called cd + +00:09:17.920 --> 00:09:21.760 +and then it executes find flying + +00:09:21.760 --> 00:09:25.680 +on the result which is this one + +00:09:25.680 --> 00:09:28.320 +and fine flying is my variant of find + +00:09:28.320 --> 00:09:28.800 +file + +00:09:28.800 --> 00:09:32.080 +that supports both spec lists + +00:09:32.080 --> 00:09:36.880 +and this function here that I'm + +00:09:36.880 --> 00:09:39.600 +referring to as a button it also defines + +00:09:39.600 --> 00:09:41.200 +a function called + +00:09:41.200 --> 00:09:44.880 +find audit node here where the or gate + +00:09:44.880 --> 00:09:46.080 +is the same string + +00:09:46.080 --> 00:09:50.320 +as here and this function opens a node + +00:09:50.320 --> 00:09:54.160 +of of an info manual this one + +00:09:54.160 --> 00:09:57.920 +this text here opens this node in the + +00:09:57.920 --> 00:10:00.080 +org manual + +00:10:00.080 --> 00:10:03.519 +it is equivalent to this text here + +00:10:03.519 --> 00:10:06.800 +so in the passage from this line to this + +00:10:06.800 --> 00:10:08.720 +line we prepended + +00:10:08.720 --> 00:10:11.920 +to the node name the name of the manual + +00:10:11.920 --> 00:10:15.040 +here and find node is my variant + +00:10:15.040 --> 00:10:18.160 +of this standard mx function here + +00:10:18.160 --> 00:10:20.399 +but find node also supports post + +00:10:20.399 --> 00:10:23.519 +backlists + +00:10:23.519 --> 00:10:26.640 +eevee also defines some functions that + +00:10:26.640 --> 00:10:28.640 +define shorter hyperlinks to pdfs and + +00:10:28.640 --> 00:10:30.800 +videos + +00:10:30.800 --> 00:10:32.880 +remember that this thing here is a + +00:10:32.880 --> 00:10:34.720 +shorter hyperlink to a + +00:10:34.720 --> 00:10:37.120 +to a file and this thing here is a + +00:10:37.120 --> 00:10:39.040 +shorter hyperlink to a node and + +00:10:39.040 --> 00:10:43.200 +in an mx menu in an info manual + +00:10:43.200 --> 00:10:46.079 +uh if we run this thing here this code + +00:10:46.079 --> 00:10:47.279 +pdf page + +00:10:47.279 --> 00:10:50.240 +this acts like a button that defines a + +00:10:50.240 --> 00:10:52.880 +certain function + +00:10:52.880 --> 00:10:56.399 +and this string this other sex + +00:10:56.399 --> 00:10:59.040 +here defines another function the first + +00:10:59.040 --> 00:11:00.240 +one defines + +00:11:00.240 --> 00:11:03.040 +the function find funcspivac page and + +00:11:03.040 --> 00:11:05.360 +the second one defines the function find + +00:11:05.360 --> 00:11:09.279 +from text when we run the + +00:11:09.279 --> 00:11:12.240 +file when we run findfoxpivotpage it + +00:11:12.240 --> 00:11:13.440 +opens + +00:11:13.440 --> 00:11:17.600 +this pdf here the name is + +00:11:17.600 --> 00:11:20.640 +quite long uh + +00:11:20.640 --> 00:11:23.839 +this example opens this pdf at page 8 + +00:11:23.839 --> 00:11:26.079 +and searches for the string contents + +00:11:26.079 --> 00:11:28.000 +oops sorry in this case + +00:11:28.000 --> 00:11:31.279 +in this case it just ignores this string + +00:11:31.279 --> 00:11:33.519 +here it only considers + +00:11:33.519 --> 00:11:37.360 +the number of the page let's try + +00:11:37.360 --> 00:11:42.640 +ah we got + +00:11:42.640 --> 00:11:45.200 +here it is uh the contents of a book + +00:11:45.200 --> 00:11:46.880 +that is freely + +00:11:46.880 --> 00:11:50.800 +available uh here is another page of the + +00:11:50.800 --> 00:11:51.760 +book + +00:11:51.760 --> 00:11:55.040 +and if we execute the this happening + +00:11:55.040 --> 00:11:55.519 +here + +00:11:55.519 --> 00:11:58.399 +find funk's pivot text it converts the + +00:11:58.399 --> 00:11:59.920 +pdf to text + +00:11:59.920 --> 00:12:03.040 +and it searches for the page eight + +00:12:03.040 --> 00:12:05.040 +in it and then for the string this + +00:12:05.040 --> 00:12:08.079 +string here in page eight + +00:12:08.079 --> 00:12:12.240 +it takes a few seconds + +00:12:12.240 --> 00:12:16.160 +here it is so this is the + +00:12:16.160 --> 00:12:20.320 +ascii version of this contents page + +00:12:20.320 --> 00:12:25.040 +here uh note that this block here + +00:12:25.040 --> 00:12:28.800 +is a kind of an index to that book + +00:12:28.800 --> 00:12:31.680 +uh I have the full index somewhere but + +00:12:31.680 --> 00:12:33.600 +it's very long so I just copied a few + +00:12:33.600 --> 00:12:34.959 +lines here + +00:12:34.959 --> 00:12:38.959 +uh so this is a link to the to set + +00:12:38.959 --> 00:12:42.160 +section one chapter one this is the + +00:12:42.160 --> 00:12:45.360 +section 1.1 + +00:12:45.360 --> 00:12:48.959 +section 1.1.1 and so on + +00:12:48.959 --> 00:12:54.000 +and here is a link to the index + +00:12:54.000 --> 00:12:58.079 +and here is a part of my index + +00:12:58.079 --> 00:13:02.800 +of positions in the video that we just + +00:13:02.800 --> 00:13:03.279 +saw + +00:13:03.279 --> 00:13:05.760 +that I think that are especially + +00:13:05.760 --> 00:13:07.360 +relevant + +00:13:07.360 --> 00:13:10.639 +uh so this I believe + +00:13:10.639 --> 00:13:12.399 +hyperlink is a kind of a button that + +00:13:12.399 --> 00:13:14.160 +defines this function here + +00:13:14.160 --> 00:13:18.839 +find punch and punch into the video + +00:13:18.839 --> 00:13:27.600 +uh + +00:13:27.600 --> 00:13:31.440 +and we can also use this for video + +00:13:31.440 --> 00:13:33.360 +tutorials for example + +00:13:33.360 --> 00:13:37.200 +this is a very good tutorial on on magic + +00:13:37.200 --> 00:13:40.880 +if we execute this + +00:13:40.880 --> 00:13:42.560 +then these functions are going to be + +00:13:42.560 --> 00:13:44.800 +defined and these functions open + +00:13:44.800 --> 00:13:48.399 +this tutorial on magic + +00:13:48.399 --> 00:13:50.079 +these are some of the positions in the + +00:13:50.079 --> 00:13:51.839 +tutorial that I found especially + +00:13:51.839 --> 00:13:53.920 +especially relevant this is a very dense + +00:13:53.920 --> 00:13:55.600 +tutorial I had to take notes of + +00:13:55.600 --> 00:13:56.480 +everything + +00:13:56.480 --> 00:13:59.040 +and I had to watch everything things + +00:13:59.040 --> 00:14:00.800 +several times + +00:14:00.800 --> 00:14:03.440 +and for example this is a link to the + +00:14:03.440 --> 00:14:06.480 +position in the tutorial that explains + +00:14:06.480 --> 00:14:09.600 +uh how in space + +00:14:09.600 --> 00:14:12.880 +space max magic magic + +00:14:12.880 --> 00:14:17.600 +interprets space gs magic status + +00:14:17.600 --> 00:14:20.480 +let's see beginners space gs to initiate + +00:14:20.480 --> 00:14:22.320 +magic's git status + +00:14:22.320 --> 00:14:25.600 +uh you can also do that's it + +00:14:25.600 --> 00:14:28.800 +and here are some examples that I + +00:14:28.800 --> 00:14:32.160 +took from somewhere else the video + +00:14:32.160 --> 00:14:34.240 +tutorials from + +00:14:34.240 --> 00:14:43.519 +ralph koenig about org mode + +00:14:43.519 --> 00:14:45.519 +now let me show how the functions that + +00:14:45.519 --> 00:14:47.440 +define this router hyperlinks are + +00:14:47.440 --> 00:14:48.720 +implemented + +00:14:48.720 --> 00:14:51.199 +the standard ways in max to define + +00:14:51.199 --> 00:14:52.480 +functions that define + +00:14:52.480 --> 00:14:55.760 +other functions would be with macros uh + +00:14:55.760 --> 00:14:58.320 +let's see an example this is a standard + +00:14:58.320 --> 00:14:59.040 +function that + +00:14:59.040 --> 00:15:01.540 +defines new functions + +00:15:01.540 --> 00:15:02.959 +[Music] + +00:15:02.959 --> 00:15:06.959 +and if we execute it one of the res + +00:15:06.959 --> 00:15:09.040 +its result is the last function that it + +00:15:09.040 --> 00:15:10.160 +defined which is + +00:15:10.160 --> 00:15:13.920 +e-grief which is here + +00:15:13.920 --> 00:15:16.959 +it's implemented as a macro we can + +00:15:16.959 --> 00:15:19.360 +look at the result of macro expand which + +00:15:19.360 --> 00:15:20.880 +is going to show + +00:15:20.880 --> 00:15:23.519 +show us the result of of this of the + +00:15:23.519 --> 00:15:25.519 +expansion of this + +00:15:25.519 --> 00:15:28.000 +instead of expanding and executing it + +00:15:28.000 --> 00:15:28.959 +just + +00:15:28.959 --> 00:15:33.199 +expands and shows us the result + +00:15:33.199 --> 00:15:36.000 +here the result is a bit messy is too + +00:15:36.000 --> 00:15:37.600 +big for + +00:15:37.600 --> 00:15:40.959 +humans to understand but we can run + +00:15:40.959 --> 00:15:44.240 +this or this text here that takes that + +00:15:44.240 --> 00:15:47.519 +that result and pretty prints it + +00:15:47.519 --> 00:15:50.959 +so this is the pretty printed version of + +00:15:50.959 --> 00:15:54.000 +uh this macro here + +00:15:54.000 --> 00:15:57.600 +we can see that it defines + +00:15:57.600 --> 00:16:01.120 +several functions here + +00:16:01.120 --> 00:16:06.399 +for example this one + +00:16:06.399 --> 00:16:09.360 +and this just as a curiosity is a link + +00:16:09.360 --> 00:16:09.920 +to + +00:16:09.920 --> 00:16:13.839 +the definition of cld struct + +00:16:13.839 --> 00:16:16.880 +and note that the code is huge uh + +00:16:16.880 --> 00:16:19.199 +well it's very well commented but it's + +00:16:19.199 --> 00:16:20.079 +it has + +00:16:20.079 --> 00:16:23.759 +lots of special cases it has uh + +00:16:23.759 --> 00:16:26.959 +it supports lots of constructions and so + +00:16:26.959 --> 00:16:27.920 +it's huge and + +00:16:27.920 --> 00:16:30.639 +it's very difficult to understand I mean + +00:16:30.639 --> 00:16:33.360 +I found it very difficult to understand + +00:16:33.360 --> 00:16:35.040 +and here's a link to document the + +00:16:35.040 --> 00:16:37.759 +documentation of cld struct + +00:16:37.759 --> 00:16:42.000 +here in the manual for + +00:16:42.000 --> 00:16:46.000 +cl which is a kind of support for some + +00:16:46.000 --> 00:16:50.480 +features of common lisp in the max + +00:16:50.480 --> 00:16:53.600 +so let's compare this standard way of + +00:16:53.600 --> 00:16:54.639 +defining + +00:16:54.639 --> 00:16:56.560 +functions that define new functions + +00:16:56.560 --> 00:16:58.320 +which is with macros + +00:16:58.320 --> 00:17:01.680 +with this I'm going to use a slogan + +00:17:01.680 --> 00:17:04.160 +repeatedly the slogan is I am a very bad + +00:17:04.160 --> 00:17:06.319 +programmer + +00:17:06.319 --> 00:17:08.880 +I'm a very bad programmer so when I was + +00:17:08.880 --> 00:17:10.640 +trying to create functions that would + +00:17:10.640 --> 00:17:12.240 +define new functions + +00:17:12.240 --> 00:17:14.480 +I found it easier to generally generate + +00:17:14.480 --> 00:17:16.400 +this code as text + +00:17:16.400 --> 00:17:20.559 +and then run read and eval in it + +00:17:20.559 --> 00:17:23.199 +the code cd that we saw in the previous + +00:17:23.199 --> 00:17:24.640 +section + +00:17:24.640 --> 00:17:28.079 +we can see the the code that it produces + +00:17:28.079 --> 00:17:29.039 +by + +00:17:29.039 --> 00:17:31.039 +making a copy of this line and + +00:17:31.039 --> 00:17:33.280 +prepending this string here to the name + +00:17:33.280 --> 00:17:34.480 +of the function + +00:17:34.480 --> 00:17:36.720 +so instead of running code cd we run + +00:17:36.720 --> 00:17:38.400 +find code cd + +00:17:38.400 --> 00:17:41.280 +and it creates a new temporary buffer + +00:17:41.280 --> 00:17:44.400 +with the code that + +00:17:44.400 --> 00:17:47.760 +code cd would execute + +00:17:47.760 --> 00:17:50.320 +so it's a series of the fonts and a few + +00:17:50.320 --> 00:17:54.080 +set cues and so on + +00:17:54.080 --> 00:17:57.600 +and this thing is implemented mostly as + +00:17:57.600 --> 00:17:59.120 +a template + +00:17:59.120 --> 00:18:02.160 +uh the lola the + +00:18:02.160 --> 00:18:04.160 +there's an inner function called ee + +00:18:04.160 --> 00:18:06.240 +called cd base that receives just + +00:18:06.240 --> 00:18:08.799 +these two arguments and it says + +00:18:08.799 --> 00:18:10.640 +essentially just runs the function + +00:18:10.640 --> 00:18:14.320 +e template zero on the string here and + +00:18:14.320 --> 00:18:16.480 +the things between curly braces are + +00:18:16.480 --> 00:18:18.559 +substituted by the values + +00:18:18.559 --> 00:18:23.600 +of these arguments here + +00:18:23.600 --> 00:18:25.919 +there's one part of the tutorial here + +00:18:25.919 --> 00:18:28.480 +that explains all these things + +00:18:28.480 --> 00:18:31.039 +uh except for the rationale for some + +00:18:31.039 --> 00:18:32.559 +design decisions + +00:18:32.559 --> 00:18:35.360 +and those design decisions are one of + +00:18:35.360 --> 00:18:37.280 +the many motivations for this talk but + +00:18:37.280 --> 00:18:37.760 +um + +00:18:37.760 --> 00:18:39.679 +we are I'm only going to explain these + +00:18:39.679 --> 00:18:42.640 +things in detail at the end + +00:18:42.640 --> 00:18:48.480 +which is kind of so on + +00:18:48.480 --> 00:18:50.320 +in the beginning I said that the three + +00:18:50.320 --> 00:18:51.600 +main keys of av + +00:18:51.600 --> 00:18:56.000 +are meta e meta k and meta j + +00:18:56.000 --> 00:19:00.080 +let's see now what met what meta j does + +00:19:00.080 --> 00:19:01.520 +uh but I need to start with some + +00:19:01.520 --> 00:19:04.640 +motivation uh the motivation is that we + +00:19:04.640 --> 00:19:06.559 +can define commands with very short + +00:19:06.559 --> 00:19:08.240 +names and actually I became kind of + +00:19:08.240 --> 00:19:10.160 +addicted to that + +00:19:10.160 --> 00:19:13.200 +this is an example of the fund that + +00:19:13.200 --> 00:19:15.600 +defines a comment with a very short name + +00:19:15.600 --> 00:19:18.000 +its name is just one letter e + +00:19:18.000 --> 00:19:21.200 +and I can invoke you invoke it with meta + +00:19:21.200 --> 00:19:21.520 +x + +00:19:21.520 --> 00:19:24.720 +e if I type meta xp + +00:19:24.720 --> 00:19:27.360 +now it opens a latex file that I'm + +00:19:27.360 --> 00:19:31.130 +working on + +00:19:31.130 --> 00:19:32.559 +[Music] + +00:19:32.559 --> 00:19:35.200 +and I create most of my latex files + +00:19:35.200 --> 00:19:37.120 +using + +00:19:37.120 --> 00:19:39.200 +template template-based functions like + +00:19:39.200 --> 00:19:40.559 +the the + +00:19:40.559 --> 00:19:43.760 +implementation of code cd above and + +00:19:43.760 --> 00:19:46.559 +this template-based functions create + +00:19:46.559 --> 00:19:49.280 +files with extension.tag + +00:19:49.280 --> 00:19:51.280 +that start with a series of the fonts + +00:19:51.280 --> 00:19:53.919 +and comments for example + +00:19:53.919 --> 00:19:56.240 +let's look at this example here if I + +00:19:56.240 --> 00:19:58.320 +execute find the attack links with this + +00:19:58.320 --> 00:19:59.440 +argument + +00:19:59.440 --> 00:20:02.159 +uh it's going it's going to do several + +00:20:02.159 --> 00:20:03.440 +things for creating a + +00:20:03.440 --> 00:20:06.880 +file called slash tmp slash forward + +00:20:06.880 --> 00:20:08.320 +attack + +00:20:08.320 --> 00:20:11.200 +and the header of that file is going to + +00:20:11.200 --> 00:20:12.400 +be this + +00:20:12.400 --> 00:20:16.080 +which starts with two and with three + +00:20:16.080 --> 00:20:19.280 +the fonts with functions with very short + +00:20:19.280 --> 00:20:21.919 +names and comments + +00:20:21.919 --> 00:20:27.520 +let's compare with the situation here + +00:20:27.520 --> 00:20:32.799 +in my file 2020 favorite conventions.tag + +00:20:32.799 --> 00:20:34.640 +I have this header here in which I + +00:20:34.640 --> 00:20:37.039 +define six functions with very short + +00:20:37.039 --> 00:20:39.360 +names + +00:20:39.360 --> 00:20:41.919 +and in this case here that is even + +00:20:41.919 --> 00:20:44.799 +explained in the tutorial + +00:20:44.799 --> 00:20:48.000 +this we have mnemonics for + +00:20:48.000 --> 00:20:51.520 +these short names here and c is compile + +00:20:51.520 --> 00:20:54.799 +d is display I mean display the pdf + +00:20:54.799 --> 00:20:57.760 +and e is added in the sense of make a + +00:20:57.760 --> 00:20:58.159 +max + +00:20:58.159 --> 00:21:02.320 +visit that file + +00:21:02.320 --> 00:21:05.039 +okay now I can explain what is meta j + +00:21:05.039 --> 00:21:06.480 +itself + +00:21:06.480 --> 00:21:08.880 +uh we just saw comments with very short + +00:21:08.880 --> 00:21:09.600 +names + +00:21:09.600 --> 00:21:12.320 +and the idea is behind meta j is that we + +00:21:12.320 --> 00:21:14.840 +can define comments with very short + +00:21:14.840 --> 00:21:16.480 +numbers + +00:21:16.480 --> 00:21:19.679 +let me explain this uh + +00:21:19.679 --> 00:21:22.559 +the short explanation for what meta j + +00:21:22.559 --> 00:21:23.039 +does + +00:21:23.039 --> 00:21:25.360 +is that it jumps to set certain + +00:21:25.360 --> 00:21:27.039 +predefined places + +00:21:27.039 --> 00:21:29.760 +in particular a meta j without a numeric + +00:21:29.760 --> 00:21:30.799 +argument + +00:21:30.799 --> 00:21:33.280 +takes us to a buffer with with the basic + +00:21:33.280 --> 00:21:34.080 +help + +00:21:34.080 --> 00:21:37.679 +and a list of the current age of targets + +00:21:37.679 --> 00:21:39.760 +and this is something that is a bit + +00:21:39.760 --> 00:21:41.520 +simpler to understand + +00:21:41.520 --> 00:21:44.559 +if we type meta five meta j + +00:21:44.559 --> 00:21:47.919 +then meta j runs this sex + +00:21:47.919 --> 00:21:51.120 +here that is associated to + +00:21:51.120 --> 00:21:55.440 +the argument five I say that the target + +00:21:55.440 --> 00:21:59.039 +for the argument five is this one + +00:21:59.039 --> 00:22:01.520 +and if the argument is true then the + +00:22:01.520 --> 00:22:03.760 +target associated to the to the true + +00:22:03.760 --> 00:22:07.039 +is this sex here that opens + +00:22:07.039 --> 00:22:09.600 +well this one opens the main tutorial vv + +00:22:09.600 --> 00:22:10.240 +and this one + +00:22:10.240 --> 00:22:13.679 +opens another tutorial + +00:22:13.679 --> 00:22:15.679 +this is a link to one of the tutorials + +00:22:15.679 --> 00:22:20.480 +of ev to the part that explains meta j + +00:22:20.480 --> 00:22:22.559 +I've copied the the main part of the + +00:22:22.559 --> 00:22:24.559 +text here + +00:22:24.559 --> 00:22:28.159 +the header the header that meta j shows + +00:22:28.159 --> 00:22:31.360 +let me show it very quickly here + +00:22:31.360 --> 00:22:33.919 +here is their header and here is their + +00:22:33.919 --> 00:22:36.320 +rest + +00:22:36.320 --> 00:22:39.039 +the header is very beginner friendly and + +00:22:39.039 --> 00:22:40.000 +if you're a beginner + +00:22:40.000 --> 00:22:42.159 +who only knows how to use meta e to + +00:22:42.159 --> 00:22:44.559 +execute and met + +00:22:44.559 --> 00:22:46.799 +this should be okay and meta k to go + +00:22:46.799 --> 00:22:48.240 +back + +00:22:48.240 --> 00:22:52.320 +then you can and should use that header + +00:22:52.320 --> 00:22:56.720 +I mean this header here + +00:22:56.720 --> 00:22:59.360 +as your main starting point and every + +00:22:59.360 --> 00:23:00.799 +time that you feel lost + +00:23:00.799 --> 00:23:03.679 +you can type meta j and to go back to + +00:23:03.679 --> 00:23:04.799 +that header + +00:23:04.799 --> 00:23:07.039 +and you can use its links to navigate to + +00:23:07.039 --> 00:23:08.000 +the documentation + +00:23:08.000 --> 00:23:11.360 +for max nav let me explain that + +00:23:11.360 --> 00:23:14.799 +uh this header here has several ellis + +00:23:14.799 --> 00:23:15.679 +hyperlinks + +00:23:15.679 --> 00:23:19.039 +one here one here + +00:23:19.039 --> 00:23:22.400 +one here one here and so on + +00:23:22.400 --> 00:23:25.760 +uh these ones are links to the + +00:23:25.760 --> 00:23:29.280 +to the intros which are the tutorials + +00:23:29.280 --> 00:23:30.880 +find if you quick enter in the main + +00:23:30.880 --> 00:23:32.480 +tutorial and find ev + +00:23:32.480 --> 00:23:35.760 +keys intro is a kind of tutorial that is + +00:23:35.760 --> 00:23:36.720 +an index of + +00:23:36.720 --> 00:23:40.000 +the main keys + +00:23:40.000 --> 00:23:42.559 +and after that we have an explanation of + +00:23:42.559 --> 00:23:43.279 +what some + +00:23:43.279 --> 00:23:46.799 +numeric prefixes do so if we type + +00:23:46.799 --> 00:23:50.240 +met one method j the effect of that is + +00:23:50.240 --> 00:23:53.200 +exactly the same as executing this and + +00:23:53.200 --> 00:23:54.640 +we can execute this + +00:23:54.640 --> 00:24:00.159 +with meta e also + +00:24:00.159 --> 00:24:03.679 +meta tube meta j runs this sex and + +00:24:03.679 --> 00:24:06.960 +I can also execute it with meta e + +00:24:06.960 --> 00:24:10.559 +here it is it's this uh + +00:24:10.559 --> 00:24:14.240 +intro this uh + +00:24:14.240 --> 00:24:18.400 +sandbox tutorial and + +00:24:18.400 --> 00:24:24.640 +here is another sandbox tutorial + +00:24:24.640 --> 00:24:27.039 +let me go back and then the + +00:24:27.039 --> 00:24:28.720 +documentation says that + +00:24:28.720 --> 00:24:30.880 +that header the header that is beginner + +00:24:30.880 --> 00:24:31.760 +friendly + +00:24:31.760 --> 00:24:33.679 +is followed by a section that is very + +00:24:33.679 --> 00:24:35.520 +beginner unfriendly + +00:24:35.520 --> 00:24:37.600 +that contains a series of the fonts like + +00:24:37.600 --> 00:24:40.400 +these ones + +00:24:40.400 --> 00:24:43.440 +here the last line of the header is this + +00:24:43.440 --> 00:24:44.640 +comment here + +00:24:44.640 --> 00:24:46.720 +and then we have several defense like + +00:24:46.720 --> 00:24:48.559 +this + +00:24:48.559 --> 00:24:51.440 +let me explain how these things work + +00:24:51.440 --> 00:24:53.840 +technically what happens when we type + +00:24:53.840 --> 00:24:57.360 +meta j without any arguments is that it + +00:24:57.360 --> 00:24:57.840 +runs + +00:24:57.840 --> 00:25:00.960 +eu jump with argument neil and then + +00:25:00.960 --> 00:25:04.640 +this runs 5 e jumps + +00:25:04.640 --> 00:25:06.480 +when I run meta j with a numeric + +00:25:06.480 --> 00:25:08.000 +argument for example + +00:25:08.000 --> 00:25:11.120 +with argument 5 it runs a jump + +00:25:11.120 --> 00:25:14.400 +5 and e jump five + +00:25:14.400 --> 00:25:17.679 +uh concatenates this five one + +00:25:17.679 --> 00:25:20.400 +to make a name of a function this + +00:25:20.400 --> 00:25:21.679 +function here + +00:25:21.679 --> 00:25:24.320 +and it executes this function e jump + +00:25:24.320 --> 00:25:24.720 +five + +00:25:24.720 --> 00:25:28.880 +you jump uh dash five + +00:25:28.880 --> 00:25:31.919 +and eu jump dash five is + +00:25:31.919 --> 00:25:35.520 +executes find ev equity intro + +00:25:35.520 --> 00:25:39.360 +if I execute just meta j + +00:25:39.360 --> 00:25:41.440 +the section that shows the current age + +00:25:41.440 --> 00:25:43.919 +on targets + +00:25:43.919 --> 00:25:47.120 +has a line for e job five this is that + +00:25:47.120 --> 00:25:48.159 +is exactly the + +00:25:48.159 --> 00:25:52.400 +thing that I was explaining before + +00:25:52.400 --> 00:25:54.840 +so we can use meta j to navigate the + +00:25:54.840 --> 00:25:59.520 +tutorials and we can copy the links + +00:25:59.520 --> 00:26:03.440 +sorry we can copy links to the to + +00:26:03.440 --> 00:26:07.919 +tutorials to our notes + +00:26:07.919 --> 00:26:11.840 +oh sorry this has some typos + +00:26:11.840 --> 00:26:14.880 +for example if I execute this + +00:26:14.880 --> 00:26:18.080 +I go to a section of this tutorial here + +00:26:18.080 --> 00:26:20.640 +that explains the main keys of ev + +00:26:20.640 --> 00:26:24.320 +and these things are hyperlinks I can + +00:26:24.320 --> 00:26:26.240 +mark a hyperlink like this it is just + +00:26:26.240 --> 00:26:27.440 +plain text and I + +00:26:27.440 --> 00:26:30.559 +can copy it to my notes and the idea is + +00:26:30.559 --> 00:26:31.760 +that every time + +00:26:31.760 --> 00:26:33.520 +every time that I find something that is + +00:26:33.520 --> 00:26:35.520 +interesting I can create a hyperlink to + +00:26:35.520 --> 00:26:36.240 +it + +00:26:36.240 --> 00:26:38.720 +and I can put these links in my notes so + +00:26:38.720 --> 00:26:40.799 +I can navigate back + +00:26:40.799 --> 00:26:42.960 +to all the interesting positions very + +00:26:42.960 --> 00:26:48.799 +quickly + +00:26:48.799 --> 00:26:51.760 +okay next feature if we type meta + +00:26:51.760 --> 00:26:54.080 +uppercase j + +00:26:54.080 --> 00:26:57.600 +uh then + +00:26:57.600 --> 00:27:00.080 +this this is a function that transforms + +00:27:00.080 --> 00:27:03.679 +the current line in a certain way + +00:27:03.679 --> 00:27:06.080 +let me give an example let me isolate + +00:27:06.080 --> 00:27:07.360 +this and let me create + +00:27:07.360 --> 00:27:09.919 +duplicate this line to to make clear + +00:27:09.919 --> 00:27:11.039 +what happens + +00:27:11.039 --> 00:27:14.240 +if I type meta uppercase j here + +00:27:14.240 --> 00:27:16.880 +this line here becomes the fund for a + +00:27:16.880 --> 00:27:17.440 +jump + +00:27:17.440 --> 00:27:21.200 +6 and the target of this e-jump + +00:27:21.200 --> 00:27:24.799 +is exactly this sex here + +00:27:24.799 --> 00:27:28.559 +let me undo this mess + +00:27:28.559 --> 00:27:31.360 +and if the first word in the line is not + +00:27:31.360 --> 00:27:32.840 +a number for example + +00:27:32.840 --> 00:27:36.240 +here let me do the same thing + +00:27:36.240 --> 00:27:39.039 +duplicate the line and type meta + +00:27:39.039 --> 00:27:41.200 +uppercase j + +00:27:41.200 --> 00:27:44.240 +then mat uppercase j converts that to a + +00:27:44.240 --> 00:27:45.600 +defund that defines + +00:27:45.600 --> 00:27:49.440 +a function with a very short name + +00:27:49.440 --> 00:27:52.720 +and this function with a very short name + +00:27:52.720 --> 00:27:56.720 +opens this file here in the directory + +00:27:56.720 --> 00:27:59.360 +with the copy of the the git repository + +00:27:59.360 --> 00:28:01.360 +for org mode + +00:28:01.360 --> 00:28:05.360 +let me undo the mass again + +00:28:05.360 --> 00:28:09.120 +oops + +00:28:09.120 --> 00:28:14.640 +that's it + +00:28:14.640 --> 00:28:17.760 +meta uppercase j is a + +00:28:17.760 --> 00:28:21.279 +particular case of of something that + +00:28:21.279 --> 00:28:24.559 +I use a lot in eevee I have if he has + +00:28:24.559 --> 00:28:25.279 +lots of + +00:28:25.279 --> 00:28:28.799 +comments that sorry key sequences + +00:28:28.799 --> 00:28:31.780 +that are like meta uppercase letter and + +00:28:31.780 --> 00:28:33.200 +[Music] + +00:28:33.200 --> 00:28:35.279 +almost all of them operate on the + +00:28:35.279 --> 00:28:37.279 +current line and transform the current + +00:28:37.279 --> 00:28:38.880 +line in certain way + +00:28:38.880 --> 00:28:42.000 +for example this is a file name + +00:28:42.000 --> 00:28:45.360 +and if I type meta uppercase f here + +00:28:45.360 --> 00:28:48.640 +it becomes a link to that file this is + +00:28:48.640 --> 00:28:50.000 +the name of a month page + +00:28:50.000 --> 00:28:53.600 +and if I type meta uppercase m here + +00:28:53.600 --> 00:28:55.760 +it converts that to the link to a month + +00:28:55.760 --> 00:28:58.080 +page and this is a shell command + +00:28:58.080 --> 00:29:01.679 +and if I type meta uppercase s here + +00:29:01.679 --> 00:29:04.960 +it converts that to a link to a + +00:29:04.960 --> 00:29:08.720 +to find fan shell + +00:29:08.720 --> 00:29:11.919 +and until a few years ago these + +00:29:11.919 --> 00:29:12.960 +functions + +00:29:12.960 --> 00:29:16.159 +with matter uppercase letter were half + +00:29:16.159 --> 00:29:18.080 +of my main ways of creating sex + +00:29:18.080 --> 00:29:18.880 +hyperlinks + +00:29:18.880 --> 00:29:21.039 +with few key strokes in the beginning of + +00:29:21.039 --> 00:29:22.399 +course I had to create my + +00:29:22.399 --> 00:29:25.600 +sex pipelines by typing each character + +00:29:25.600 --> 00:29:28.640 +but uh after some time and decided that + +00:29:28.640 --> 00:29:31.520 +I needed something more efficient + +00:29:31.520 --> 00:29:34.559 +so this is end of part one of the two of + +00:29:34.559 --> 00:29:34.960 +the + +00:29:34.960 --> 00:29:38.480 +presentation + +00:29:38.480 --> 00:29:40.640 +so this is part two of the presentation + +00:29:40.640 --> 00:29:41.760 +and the main theme + +00:29:41.760 --> 00:29:44.320 +here is the standard describe key + +00:29:44.320 --> 00:29:46.320 +function that comes with the max + +00:29:46.320 --> 00:29:49.200 +and my variant of it the thing is that + +00:29:49.200 --> 00:29:50.960 +the standard described key in max + +00:29:50.960 --> 00:29:53.120 +is user friendly but it is hacker + +00:29:53.120 --> 00:29:55.600 +unfriendly well I felt so + +00:29:55.600 --> 00:29:58.559 +and when I tried to complement it by by + +00:29:58.559 --> 00:30:00.799 +writing a hacker friendly version of it + +00:30:00.799 --> 00:30:03.120 +that produced the sex hyperlinks that I + +00:30:03.120 --> 00:30:03.919 +needed + +00:30:03.919 --> 00:30:05.440 +I got something that I found really + +00:30:05.440 --> 00:30:07.039 +lovely and + +00:30:07.039 --> 00:30:09.679 +several of the main designs design + +00:30:09.679 --> 00:30:12.480 +decisions of eev can be seen there + +00:30:12.480 --> 00:30:14.320 +but when I showed my variants to other + +00:30:14.320 --> 00:30:15.520 +people they hated it + +00:30:15.520 --> 00:30:17.760 +they felt that it was totally against + +00:30:17.760 --> 00:30:19.360 +their notions of + +00:30:19.360 --> 00:30:23.440 +user friendliness + +00:30:23.440 --> 00:30:25.760 +okay so let's see the standard describe + +00:30:25.760 --> 00:30:26.799 +key if I run + +00:30:26.799 --> 00:30:30.159 +this hyperlink here I get + +00:30:30.159 --> 00:30:32.399 +this the result of running the scribe + +00:30:32.399 --> 00:30:34.399 +key on the key down + +00:30:34.399 --> 00:30:36.399 +and this is a big buffer with some + +00:30:36.399 --> 00:30:38.080 +things in italics + +00:30:38.080 --> 00:30:41.360 +and some hyperlinks here these + +00:30:41.360 --> 00:30:43.120 +hyperlinks are standard in the sense + +00:30:43.120 --> 00:30:43.679 +that + +00:30:43.679 --> 00:30:46.240 +the targets are not visible and they are + +00:30:46.240 --> 00:30:47.760 +implemented using + +00:30:47.760 --> 00:30:50.799 +buttons in a max lisp this section of + +00:30:50.799 --> 00:30:51.200 +the + +00:30:51.200 --> 00:30:53.919 +mx list manual describes how buttons + +00:30:53.919 --> 00:30:56.799 +work + +00:30:56.799 --> 00:31:00.640 +and the the source code is + +00:31:00.640 --> 00:31:03.440 +quite difficult I mean when I was + +00:31:03.440 --> 00:31:04.240 +starting to + +00:31:04.240 --> 00:31:06.559 +to try to decipher this when I was a + +00:31:06.559 --> 00:31:07.600 +beginner + +00:31:07.600 --> 00:31:11.200 +using max 19.34 I felt that this + +00:31:11.200 --> 00:31:12.320 +described key was + +00:31:12.320 --> 00:31:15.519 +very difficult to understand uh + +00:31:15.519 --> 00:31:20.080 +and I felt that the the designers the + +00:31:20.080 --> 00:31:22.640 +the people who wrote it were sacrificing + +00:31:22.640 --> 00:31:23.679 +too much of the + +00:31:23.679 --> 00:31:26.159 +hacker friendliness that I was expecting + +00:31:26.159 --> 00:31:31.279 +from it to make it beginner friendly + +00:31:31.279 --> 00:31:33.600 +let me explain what are the the problems + +00:31:33.600 --> 00:31:34.799 +with the standard + +00:31:34.799 --> 00:31:36.559 +the describe key if we think that + +00:31:36.559 --> 00:31:38.640 +hyperlinks are things like this + +00:31:38.640 --> 00:31:41.600 +with the target and the text then in the + +00:31:41.600 --> 00:31:43.600 +button hyperlinks of describe key + +00:31:43.600 --> 00:31:47.120 +this three bad things happen first + +00:31:47.120 --> 00:31:49.120 +it is hard to extract the target from + +00:31:49.120 --> 00:31:51.200 +the hyperlink second it is hard to + +00:31:51.200 --> 00:31:52.000 +recreate + +00:31:52.000 --> 00:31:54.480 +a list of code that would go to that + +00:31:54.480 --> 00:31:55.440 +target + +00:31:55.440 --> 00:31:57.519 +and third it is hard to copy the full + +00:31:57.519 --> 00:31:59.840 +hyperlink including the targets to other + +00:31:59.840 --> 00:32:00.640 +buffers + +00:32:00.640 --> 00:32:04.960 +I only knew how to copy the text + +00:32:04.960 --> 00:32:07.279 +when I was trying to decipher what + +00:32:07.279 --> 00:32:09.039 +described key was doing + +00:32:09.039 --> 00:32:11.679 +I created lots of hyperlinks like this + +00:32:11.679 --> 00:32:12.159 +to + +00:32:12.159 --> 00:32:14.960 +inspect the text properties and things + +00:32:14.960 --> 00:32:16.159 +like that + +00:32:16.159 --> 00:32:18.480 +for example in the description of the + +00:32:18.480 --> 00:32:20.000 +key down + +00:32:20.000 --> 00:32:23.600 +here we have a button that points to + +00:32:23.600 --> 00:32:26.799 +simple dotel + +00:32:26.799 --> 00:32:29.679 +the text of that button is simple.l this + +00:32:29.679 --> 00:32:31.600 +hyperlinks goes to the + +00:32:31.600 --> 00:32:34.320 +to the middle of this button hyperlink + +00:32:34.320 --> 00:32:35.519 +here + +00:32:35.519 --> 00:32:39.120 +uh this hyperlink here + +00:32:39.120 --> 00:32:41.919 +goes to the middle of the button of this + +00:32:41.919 --> 00:32:43.279 +button hyperlink + +00:32:43.279 --> 00:32:46.240 +and then inspects its text properties + +00:32:46.240 --> 00:32:47.679 +and then goes to + +00:32:47.679 --> 00:32:51.679 +this section here of the description + +00:32:51.679 --> 00:32:53.679 +so this is a high level description of + +00:32:53.679 --> 00:32:56.159 +the text properties + +00:32:56.159 --> 00:32:58.000 +I mean the text properties that make it + +00:32:58.000 --> 00:33:00.000 +a button and this is a + +00:33:00.000 --> 00:33:02.480 +lower level description of the these + +00:33:02.480 --> 00:33:04.320 +text properties + +00:33:04.320 --> 00:33:08.000 +and the button that points to + +00:33:08.000 --> 00:33:11.440 +forward line sorry the the button that + +00:33:11.440 --> 00:33:11.919 +whose + +00:33:11.919 --> 00:33:14.399 +text is forward line this one is + +00:33:14.399 --> 00:33:16.480 +slightly different + +00:33:16.480 --> 00:33:19.039 +this hyperlink here goes to the middle + +00:33:19.039 --> 00:33:21.200 +of that button + +00:33:21.200 --> 00:33:24.559 +and this hyperlink goes to the mid to + +00:33:24.559 --> 00:33:25.760 +the middle of that button + +00:33:25.760 --> 00:33:28.559 +inspects its text properties and go to + +00:33:28.559 --> 00:33:29.360 +the section + +00:33:29.360 --> 00:33:32.559 +of this button of this help + +00:33:32.559 --> 00:33:35.760 +uh buffer here that describe the the + +00:33:35.760 --> 00:33:36.399 +button + +00:33:36.399 --> 00:33:39.120 +and the lower level view of the text + +00:33:39.120 --> 00:33:41.679 +properties + +00:33:41.679 --> 00:33:45.519 +so I started to with things like this + +00:33:45.519 --> 00:33:47.519 +to understand what these buttons were + +00:33:47.519 --> 00:33:50.159 +doing and I was able to figure out how + +00:33:50.159 --> 00:33:50.960 +these things are + +00:33:50.960 --> 00:33:53.120 +implemented and describe key and then + +00:33:53.120 --> 00:33:55.519 +similar help functions in max + +00:33:55.519 --> 00:33:57.760 +and I discovered that one of the main + +00:33:57.760 --> 00:34:00.000 +lower level functions that a max used + +00:34:00.000 --> 00:34:01.360 +for this + +00:34:01.360 --> 00:34:04.080 +is a function called find function no + +00:34:04.080 --> 00:34:05.279 +select + +00:34:05.279 --> 00:34:08.240 +if I run find function no select on next + +00:34:08.240 --> 00:34:09.929 +line + +00:34:09.929 --> 00:34:11.200 +[Music] + +00:34:11.200 --> 00:34:14.240 +it returns a pair + +00:34:14.240 --> 00:34:18.079 +a cons made of a buffer and a position + +00:34:18.079 --> 00:34:20.560 +so I created functions that would that + +00:34:20.560 --> 00:34:21.679 +would + +00:34:21.679 --> 00:34:24.320 +uh follow this that would open that + +00:34:24.320 --> 00:34:25.119 +buffer + +00:34:25.119 --> 00:34:28.320 +in that position and then this is a + +00:34:28.320 --> 00:34:29.679 +postback list + +00:34:29.679 --> 00:34:31.679 +so we could go to these positions and + +00:34:31.679 --> 00:34:33.919 +then search for this string and another + +00:34:33.919 --> 00:34:36.000 +string and another string and so on + +00:34:36.000 --> 00:34:40.320 +so this goes to the definition of find a + +00:34:40.320 --> 00:34:41.040 +function + +00:34:41.040 --> 00:34:44.159 +and then to a to a string + +00:34:44.159 --> 00:34:47.919 +after it and I use these things to + +00:34:47.919 --> 00:34:49.040 +implement my own + +00:34:49.040 --> 00:34:51.839 +functions that pointed to the same the + +00:34:51.839 --> 00:34:52.960 +same targets + +00:34:52.960 --> 00:34:55.440 +as the button hyperlinks and describe + +00:34:55.440 --> 00:35:00.240 +key + +00:35:00.240 --> 00:35:03.200 +again let me show the comparison this is + +00:35:03.200 --> 00:35:05.599 +the standard describe key + +00:35:05.599 --> 00:35:10.480 +here and this is my variant + +00:35:10.480 --> 00:35:13.839 +uh it creates a buffer with links + +00:35:13.839 --> 00:35:17.680 +with the list hyperlinks about this key + +00:35:17.680 --> 00:35:20.960 +we get this so each one of these + +00:35:20.960 --> 00:35:22.960 +functions is either a blank line + +00:35:22.960 --> 00:35:28.720 +or a or an ellipse hyperlink + +00:35:28.720 --> 00:35:31.760 +here is a slight variant of the of the + +00:35:31.760 --> 00:35:32.880 +function + +00:35:32.880 --> 00:35:35.920 +find e key links above in this variant + +00:35:35.920 --> 00:35:38.079 +the argument is a string that has to be + +00:35:38.079 --> 00:35:39.280 +processed by + +00:35:39.280 --> 00:35:42.400 +read cbd macro to convert it to the + +00:35:42.400 --> 00:35:45.280 +lower level format + +00:35:45.280 --> 00:35:48.160 +and note that these functions here that + +00:35:48.160 --> 00:35:49.040 +I wrote + +00:35:49.040 --> 00:35:51.440 +they display temporary buffers with no + +00:35:51.440 --> 00:35:53.599 +help at all + +00:35:53.599 --> 00:35:57.359 +uh to be honest there's a link to a + +00:35:57.359 --> 00:35:58.560 +tutorial here but + +00:35:58.560 --> 00:36:01.680 +this is a recent edition so let's ignore + +00:36:01.680 --> 00:36:03.200 +this + +00:36:03.200 --> 00:36:06.640 +uh they they display temporary buffers + +00:36:06.640 --> 00:36:08.320 +with no help at all just lots of + +00:36:08.320 --> 00:36:09.520 +hyperlinks + +00:36:09.520 --> 00:36:11.599 +and these hyperlinks can be they are + +00:36:11.599 --> 00:36:13.359 +very hacker friendly in the sense that + +00:36:13.359 --> 00:36:15.040 +they can be followed with + +00:36:15.040 --> 00:36:17.520 +metae they can be copied to other + +00:36:17.520 --> 00:36:19.920 +buffers because they are plain text + +00:36:19.920 --> 00:36:23.680 +because they are just sex + +00:36:23.680 --> 00:36:26.240 +and they can be inspected in the sense + +00:36:26.240 --> 00:36:28.000 +that + +00:36:28.000 --> 00:36:32.400 +for example here + +00:36:32.400 --> 00:36:34.079 +we have a hyperlink to a function that + +00:36:34.079 --> 00:36:35.520 +we + +00:36:35.520 --> 00:36:37.599 +it may be difficult to figure out what + +00:36:37.599 --> 00:36:39.200 +this function does + +00:36:39.200 --> 00:36:42.320 +but we can go to that position and then + +00:36:42.320 --> 00:36:45.839 +type ctrl h f to see the descript + +00:36:45.839 --> 00:36:48.240 +description of this function + +00:36:48.240 --> 00:36:52.400 +and here is a hyperlink to + +00:36:52.400 --> 00:36:53.890 +the does that + +00:36:53.890 --> 00:36:56.000 +[Music] + +00:36:56.000 --> 00:37:00.160 +in my syntax say + +00:37:00.160 --> 00:37:02.800 +and this list of hyperlinks were + +00:37:02.800 --> 00:37:04.480 +generated by + +00:37:04.480 --> 00:37:08.000 +this code here that just just uh + +00:37:08.000 --> 00:37:11.119 +used a back quote to to generate + +00:37:11.119 --> 00:37:14.640 +lists of sex + +00:37:14.640 --> 00:37:18.240 +and I I felt that this function here + +00:37:18.240 --> 00:37:21.040 +uh that just generated this list was + +00:37:21.040 --> 00:37:22.160 +very easy to understand + +00:37:22.160 --> 00:37:24.960 +and to modify so this was hacker + +00:37:24.960 --> 00:37:28.480 +friendly in the way that I wanted + +00:37:28.480 --> 00:37:31.599 +and so I started using this + +00:37:31.599 --> 00:37:34.079 +and this idea of using buffers with sex + +00:37:34.079 --> 00:37:36.800 +fiber links and no help violated + +00:37:36.800 --> 00:37:38.720 +all the notions of user friendliness + +00:37:38.720 --> 00:37:40.079 +that I knew so I was + +00:37:40.079 --> 00:37:42.000 +exploring some something new at that + +00:37:42.000 --> 00:37:46.160 +time and this is the end of part two + +00:37:46.160 --> 00:37:49.359 +part three of this presentation is uh + +00:37:49.359 --> 00:37:52.240 +about the killer features of ev or why + +00:37:52.240 --> 00:37:54.800 +everybody should use av or at least have + +00:37:54.800 --> 00:37:57.920 +eev installed even if they think the tv + +00:37:57.920 --> 00:37:59.280 +is too weird + +00:37:59.280 --> 00:38:01.440 +so this is a very quick listing eevee + +00:38:01.440 --> 00:38:03.440 +has lease hyperlinks which are super + +00:38:03.440 --> 00:38:04.240 +nice + +00:38:04.240 --> 00:38:06.560 +it comes with lots of tutorials the main + +00:38:06.560 --> 00:38:07.599 +one here + +00:38:07.599 --> 00:38:10.800 +explains all the main features + +00:38:10.800 --> 00:38:14.079 +uh there's also a tutorial with that's + +00:38:14.079 --> 00:38:15.040 +an index of + +00:38:15.040 --> 00:38:18.079 +all the other tutorials here + +00:38:18.079 --> 00:38:21.680 +many many many tutorials uh if we forget + +00:38:21.680 --> 00:38:24.079 +everything we can just type meta j + +00:38:24.079 --> 00:38:27.280 +and remember that this this part here is + +00:38:27.280 --> 00:38:28.880 +beginner friendly and the rest is + +00:38:28.880 --> 00:38:30.839 +beginner + +00:38:30.839 --> 00:38:32.960 +unfriendly + +00:38:32.960 --> 00:38:38.320 +there's a tutorial on max list here + +00:38:38.320 --> 00:38:41.920 +it mainly explains how to understand + +00:38:41.920 --> 00:38:44.640 +a lisp code which is much easier than + +00:38:44.640 --> 00:38:46.320 +it's much easier to understand the lisp + +00:38:46.320 --> 00:38:47.040 +code and + +00:38:47.040 --> 00:38:48.800 +then to understand how to program in a + +00:38:48.800 --> 00:38:50.160 +lisp and + +00:38:50.160 --> 00:38:53.440 +most people are only going to need this + +00:38:53.440 --> 00:38:55.920 +uh ev is very easy to install it's in + +00:38:55.920 --> 00:38:58.240 +helper so we just need to do + +00:38:58.240 --> 00:39:00.560 +this thing here and it's very + +00:39:00.560 --> 00:39:03.520 +non-invasive + +00:39:03.520 --> 00:39:06.079 +uh years ago several years ago it was a + +00:39:06.079 --> 00:39:08.000 +very invasive package but then I changed + +00:39:08.000 --> 00:39:08.960 +everything + +00:39:08.960 --> 00:39:13.520 +now uh if we toggle ev mode on and off + +00:39:13.520 --> 00:39:16.640 +what's going to happen is just that the + +00:39:16.640 --> 00:39:20.000 +evk map key map becomes activated or + +00:39:20.000 --> 00:39:21.599 +deactivated + +00:39:21.599 --> 00:39:24.720 +and when we install the evita + +00:39:24.720 --> 00:39:28.320 +I mean when we require the only things + +00:39:28.320 --> 00:39:28.640 +that + +00:39:28.640 --> 00:39:32.640 +happens globally distance here + +00:39:32.640 --> 00:39:34.480 +several functions and variables become + +00:39:34.480 --> 00:39:36.240 +defined all of them have + +00:39:36.240 --> 00:39:40.079 +standard prefixes except for one + +00:39:40.079 --> 00:39:43.040 +three characters are changed in the + +00:39:43.040 --> 00:39:44.480 +standard display table + +00:39:44.480 --> 00:39:48.640 +to make them appear as colored glyphs + +00:39:48.640 --> 00:39:52.079 +the red star and two and the open + +00:39:52.079 --> 00:39:54.160 +double angle brackets and the closed + +00:39:54.160 --> 00:39:58.160 +double angle brackets + +00:39:58.160 --> 00:40:01.359 +and two environment variables are set + +00:40:01.359 --> 00:40:04.560 +and this is a trivial technicality + +00:40:04.560 --> 00:40:07.599 +we just run a def advice + +00:40:07.599 --> 00:40:10.160 +around one function that that is used by + +00:40:10.160 --> 00:40:10.800 +man + +00:40:10.800 --> 00:40:14.240 +justice also + +00:40:14.240 --> 00:40:16.720 +eevee has a very high discoverability + +00:40:16.720 --> 00:40:18.400 +factor + +00:40:18.400 --> 00:40:21.839 +and there's a way to create a very easy + +00:40:21.839 --> 00:40:25.200 +way to create a hyperlink to here + +00:40:25.200 --> 00:40:27.760 +uh I do not have time to show this now + +00:40:27.760 --> 00:40:29.760 +but for example if I'm + +00:40:29.760 --> 00:40:32.960 +here in a tutorial and I think that that + +00:40:32.960 --> 00:40:34.480 +this + +00:40:34.480 --> 00:40:36.240 +section is something interesting and I + +00:40:36.240 --> 00:40:39.520 +want to create a hyperlink to it + +00:40:39.520 --> 00:40:41.200 +I just have to type a certain key + +00:40:41.200 --> 00:40:43.040 +sequence here + +00:40:43.040 --> 00:40:46.800 +and here I got a hyperlink that I can + +00:40:46.800 --> 00:40:50.400 +copy to my notes and this hyperlink goes + +00:40:50.400 --> 00:40:52.260 +to that section + +00:40:52.260 --> 00:40:58.240 +[Music] + +00:40:58.240 --> 00:41:00.720 +we have hyperlinks that point to + +00:41:00.720 --> 00:41:02.319 +specific positions in + +00:41:02.319 --> 00:41:05.839 +pdf documents and nvidia files here + +00:41:05.839 --> 00:41:09.119 +this one opens a pdf and displays it + +00:41:09.119 --> 00:41:09.680 +this one + +00:41:09.680 --> 00:41:13.920 +opens a pdf and converts it to text + +00:41:13.920 --> 00:41:16.720 +and this one opens the video in a + +00:41:16.720 --> 00:41:18.400 +certain position + +00:41:18.400 --> 00:41:20.480 +and we also have a way to control + +00:41:20.480 --> 00:41:22.079 +shell-like programs + +00:41:22.079 --> 00:41:25.280 +uh in my presentation of the last year I + +00:41:25.280 --> 00:41:27.440 +spent one third of the presentation + +00:41:27.440 --> 00:41:29.520 +explaining this and I think that I gave + +00:41:29.520 --> 00:41:31.839 +a very good demonstration there + +00:41:31.839 --> 00:41:35.680 +the demonstration is here + +00:41:35.680 --> 00:41:38.800 +we can go to the web page and go to + +00:41:38.800 --> 00:41:41.839 +this section of the web page + +00:41:41.839 --> 00:41:47.680 +and start by this point + +00:41:47.680 --> 00:41:51.440 +and here we have an explanation and so + +00:41:51.440 --> 00:41:55.920 +on whatever + +00:41:55.920 --> 00:41:58.720 +and I've already mentioned this before + +00:41:58.720 --> 00:41:59.200 +uh + +00:41:59.200 --> 00:42:01.119 +eevee comes with a very nice elise + +00:42:01.119 --> 00:42:02.240 +tutorial + +00:42:02.240 --> 00:42:04.240 +so that's it this is the end of part + +00:42:04.240 --> 00:42:05.599 +three + +00:42:05.599 --> 00:42:07.359 +so this is the last part of my + +00:42:07.359 --> 00:42:09.839 +presentation and it's about the title of + +00:42:09.839 --> 00:42:10.160 +the + +00:42:10.160 --> 00:42:11.839 +the presentation I called the + +00:42:11.839 --> 00:42:13.599 +presentation why + +00:42:13.599 --> 00:42:16.560 +most of the best features in eevee look + +00:42:16.560 --> 00:42:16.960 +like + +00:42:16.960 --> 00:42:20.480 +like five minute hacks uh I've already + +00:42:20.480 --> 00:42:20.960 +run off + +00:42:20.960 --> 00:42:23.920 +out of time so I have to to skip this + +00:42:23.920 --> 00:42:24.800 +first + +00:42:24.800 --> 00:42:28.720 +part here in which I describe how I + +00:42:28.720 --> 00:42:31.280 +was exposed to several different notions + +00:42:31.280 --> 00:42:33.440 +of user friendliness + +00:42:33.440 --> 00:42:35.920 +and how the one that really blew my mind + +00:42:35.920 --> 00:42:37.119 +was the one in + +00:42:37.119 --> 00:42:41.680 +in a certain uh fought environment + +00:42:41.680 --> 00:42:44.160 +uh and let me make the long long story + +00:42:44.160 --> 00:42:46.560 +very very short + +00:42:46.560 --> 00:42:49.280 +uh in all this process I switched from + +00:42:49.280 --> 00:42:49.680 +from + +00:42:49.680 --> 00:42:52.079 +the belief that the user was always + +00:42:52.079 --> 00:42:52.960 +someone else + +00:42:52.960 --> 00:42:55.359 +someone external and that that I always + +00:42:55.359 --> 00:42:57.040 +had to write my programs for + +00:42:57.040 --> 00:43:00.079 +this external user I switched + +00:43:00.079 --> 00:43:02.240 +from from that to the belief that I am + +00:43:02.240 --> 00:43:03.200 +the user + +00:43:03.200 --> 00:43:05.839 +and I can play with the interface that I + +00:43:05.839 --> 00:43:07.040 +want I can + +00:43:07.040 --> 00:43:10.079 +write programs which that + +00:43:10.079 --> 00:43:12.079 +that only I am going to understand I can + +00:43:12.079 --> 00:43:14.240 +experiment with hundreds of interfaces + +00:43:14.240 --> 00:43:16.079 +and then select the best ones + +00:43:16.079 --> 00:43:18.720 +and document them and then share them + +00:43:18.720 --> 00:43:20.960 +with other people + +00:43:20.960 --> 00:43:23.520 +who are also experimenting with + +00:43:23.520 --> 00:43:24.720 +interfaces in their + +00:43:24.720 --> 00:43:28.880 +own ways and so eevee has + +00:43:28.880 --> 00:43:31.119 +lots of things that are user-friendly in + +00:43:31.119 --> 00:43:33.440 +these unusual ways that I've explained + +00:43:33.440 --> 00:43:34.880 +before + +00:43:34.880 --> 00:43:37.760 +and uh and if we disconsider that this + +00:43:37.760 --> 00:43:40.319 +notion of user friendliness is valid + +00:43:40.319 --> 00:43:44.079 +then this implement these things that av + +00:43:44.079 --> 00:43:45.119 +implement they are + +00:43:45.119 --> 00:43:47.280 +user friendly and hacker friendly at the + +00:43:47.280 --> 00:43:48.800 +same time + +00:43:48.800 --> 00:43:51.119 +and let me show one example this is one + +00:43:51.119 --> 00:43:51.920 +this is + +00:43:51.920 --> 00:43:54.640 +one that really took me one only five + +00:43:54.640 --> 00:43:56.640 +minutes to implement + +00:43:56.640 --> 00:43:59.599 +uh at one point a few months ago I + +00:43:59.599 --> 00:44:00.640 +discovered + +00:44:00.640 --> 00:44:04.240 +that sasha chewer's weekly posts about + +00:44:04.240 --> 00:44:05.599 +the max news + +00:44:05.599 --> 00:44:08.800 +had uh were also being posted to a + +00:44:08.800 --> 00:44:11.440 +mailing list that is stored at + +00:44:11.440 --> 00:44:14.800 +lists.we know.org and it's called max + +00:44:14.800 --> 00:44:16.319 +dungeons + +00:44:16.319 --> 00:44:19.280 +uh and I just and I found a way to + +00:44:19.280 --> 00:44:19.760 +create + +00:44:19.760 --> 00:44:25.440 +the links to to the posts in both places + +00:44:25.440 --> 00:44:28.400 +but I had to use a template for that so + +00:44:28.400 --> 00:44:30.640 +what we are seeing here now + +00:44:30.640 --> 00:44:32.560 +is a template with the the default + +00:44:32.560 --> 00:44:36.640 +values so this means that we have not uh + +00:44:36.640 --> 00:44:39.359 +set the year correctly we have not set + +00:44:39.359 --> 00:44:40.720 +the month correctly + +00:44:40.720 --> 00:44:44.240 +or the day correctly but if we run this + +00:44:44.240 --> 00:44:44.720 +text + +00:44:44.720 --> 00:44:48.960 +here uh let me do something else before + +00:44:48.960 --> 00:44:53.359 +if we run this text here + +00:44:53.359 --> 00:44:57.280 +which we change some of these + +00:44:57.280 --> 00:45:00.880 +entries in the + +00:45:00.880 --> 00:45:04.400 +in the template and we get these links + +00:45:04.400 --> 00:45:05.200 +here + +00:45:05.200 --> 00:45:09.119 +they all work for example this one opens + +00:45:09.119 --> 00:45:12.160 +uh the blog post in in session sasha + +00:45:12.160 --> 00:45:12.800 +chewers + +00:45:12.800 --> 00:45:16.000 +site and this one + +00:45:16.000 --> 00:45:21.280 +opens it in the mailing list + +00:45:21.280 --> 00:45:23.440 +and sometimes I want the org source of + +00:45:23.440 --> 00:45:25.760 +that and the easiest way to get the word + +00:45:25.760 --> 00:45:27.280 +source is to + +00:45:27.280 --> 00:45:30.480 +look at this link here that has an + +00:45:30.480 --> 00:45:31.680 +attachment + +00:45:31.680 --> 00:45:35.040 +and if I take this + +00:45:35.040 --> 00:45:38.560 +link here and I take this + +00:45:38.560 --> 00:45:42.319 +stem that points to to the attachment + +00:45:42.319 --> 00:45:44.480 +and I put it here and I generate this + +00:45:44.480 --> 00:45:45.440 +page again + +00:45:45.440 --> 00:45:49.119 +with all this data then I get a script + +00:45:49.119 --> 00:45:50.000 +here + +00:45:50.000 --> 00:45:53.359 +that downloads let me switch to a + +00:45:53.359 --> 00:45:54.640 +smaller font + +00:45:54.640 --> 00:45:58.160 +it downloads this attachment + +00:45:58.160 --> 00:46:00.960 +and it renames that attachment to + +00:46:00.960 --> 00:46:01.599 +something + +00:46:01.599 --> 00:46:06.000 +dot slash nx news sorry some things + +00:46:06.000 --> 00:46:10.720 +uh iphone mx news hyphen + +00:46:10.720 --> 00:46:15.119 +something mxnews.org here + +00:46:15.119 --> 00:46:17.599 +the file is already here already with + +00:46:17.599 --> 00:46:18.400 +the right name + +00:46:18.400 --> 00:46:21.359 +so I can open it with just this + +00:46:21.359 --> 00:46:22.079 +hyperlink + +00:46:22.079 --> 00:46:23.780 +let me go to the big font again + +00:46:23.780 --> 00:46:25.200 +[Music] + +00:46:25.200 --> 00:46:28.079 +and now I have the work source for that + +00:46:28.079 --> 00:46:29.280 +hyperlink + +00:46:29.280 --> 00:46:33.839 +sorry for that blog post + +00:46:33.839 --> 00:46:37.040 +and so this one line thing + +00:46:37.040 --> 00:46:40.960 +here is in a sense + +00:46:40.960 --> 00:46:43.920 +a a to to this blog post in all its + +00:46:43.920 --> 00:46:45.119 +formats + +00:46:45.119 --> 00:46:48.640 +uh if I execute this I get links to + +00:46:48.640 --> 00:46:52.000 +to all the places where it is posted + +00:46:52.000 --> 00:46:54.400 +and I get a hype and I get a script to + +00:46:54.400 --> 00:46:56.000 +download the local copy + +00:46:56.000 --> 00:47:00.480 +of the org source of it and that's it + +00:47:00.480 --> 00:47:03.200 +well I'm already out of time so let me + +00:47:03.200 --> 00:47:04.480 +finish here + +00:47:04.480 --> 00:47:10.079 +thanks bye diff --git a/2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy-autogen.vtt b/2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy-autogen.vtt new file mode 100644 index 00000000..b1831710 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy-autogen.vtt @@ -0,0 +1,2386 @@ +WEBVTT + +00:00:01.680 --> 00:00:04.080 +oh you are now muted + +00:00:04.080 --> 00:00:07.359 +all right then well uh hello everyone + +00:00:07.359 --> 00:00:09.840 +I hope uh you're all enjoying the Emacs + +00:00:09.840 --> 00:00:11.519 +conf + +00:00:11.519 --> 00:00:14.480 +my name is musa alhassi and I hope + +00:00:14.480 --> 00:00:15.040 +you're + +00:00:15.040 --> 00:00:17.920 +excited to learn about uh powering up + +00:00:17.920 --> 00:00:19.840 +special blocks + +00:00:19.840 --> 00:00:22.880 +um so let's let's first off uh find out + +00:00:22.880 --> 00:00:24.800 +what these special blocks are and + +00:00:24.800 --> 00:00:27.920 +and see what we can uh go from so + +00:00:27.920 --> 00:00:30.240 +uh yesterday I saw a lot of cool talks + +00:00:30.240 --> 00:00:32.719 +and uh people were chatting about how do + +00:00:32.719 --> 00:00:33.200 +you + +00:00:33.200 --> 00:00:35.520 +I know how should you present should you + +00:00:35.520 --> 00:00:37.200 +do it this way or that way and + +00:00:37.200 --> 00:00:38.640 +I thought maybe I should try a different + +00:00:38.640 --> 00:00:41.120 +way uh but but I'm talking about special + +00:00:41.120 --> 00:00:42.239 +blocks and if I + +00:00:42.239 --> 00:00:45.039 +show you an emax then I have to export + +00:00:45.039 --> 00:00:47.039 +the html so you can see what it looks + +00:00:47.039 --> 00:00:47.840 +like + +00:00:47.840 --> 00:00:50.800 +or export to a pdf so you can see what + +00:00:50.800 --> 00:00:51.920 +it looks like + +00:00:51.920 --> 00:00:54.239 +uh so I ended up writing an org reveal + +00:00:54.239 --> 00:00:56.399 +and + +00:00:56.399 --> 00:00:58.960 +joyously this this just works you can + +00:00:58.960 --> 00:01:00.879 +you can just see things here + +00:01:00.879 --> 00:01:02.960 +uh I was worried that I'd have to take + +00:01:02.960 --> 00:01:04.559 +pictures and then you know + +00:01:04.559 --> 00:01:07.600 +uh uh you know insert pings so that that + +00:01:07.600 --> 00:01:09.760 +was a delight + +00:01:09.760 --> 00:01:12.159 +okay uh so special blocks are these + +00:01:12.159 --> 00:01:12.960 +things like + +00:01:12.960 --> 00:01:16.000 +a center small quote uh that's what a + +00:01:16.000 --> 00:01:17.280 +special block is + +00:01:17.280 --> 00:01:19.360 +and with a bit of lisp we can we can + +00:01:19.360 --> 00:01:20.720 +make special blocks + +00:01:20.720 --> 00:01:23.200 +and link types right so uh using a + +00:01:23.200 --> 00:01:24.799 +single interface + +00:01:24.799 --> 00:01:26.720 +um and the interface is going to be + +00:01:26.720 --> 00:01:27.840 +similar to one + +00:01:27.840 --> 00:01:29.439 +many people are familiar with in + +00:01:29.439 --> 00:01:32.560 +particular org babel's + +00:01:32.560 --> 00:01:35.840 +source interface as well as using global + +00:01:35.840 --> 00:01:37.840 +header arguments for link types + +00:01:37.840 --> 00:01:39.680 +and the idea is to write it once and + +00:01:39.680 --> 00:01:41.200 +generate many different kinds + +00:01:41.200 --> 00:01:44.159 +right you write uh an org markup and you + +00:01:44.159 --> 00:01:44.720 +can have + +00:01:44.720 --> 00:01:47.680 +uh html you can have pdf and and + +00:01:47.680 --> 00:01:48.560 +joyously + +00:01:48.560 --> 00:01:51.840 +uh org reveal so that was uh that was an + +00:01:51.840 --> 00:01:53.600 +unexpected delight + +00:01:53.600 --> 00:01:56.640 +um so here is a few that you'll you'll + +00:01:56.640 --> 00:01:57.840 +just see as we + +00:01:57.840 --> 00:02:01.759 +uh in this presentation you know some uh + +00:02:01.759 --> 00:02:04.000 +uh I won't show some of these uh link + +00:02:04.000 --> 00:02:05.040 +only ones + +00:02:05.040 --> 00:02:06.799 +but we'll see a few of these other ones + +00:02:06.799 --> 00:02:08.080 +just to make the uh + +00:02:08.080 --> 00:02:09.920 +presentation look nice so the + +00:02:09.920 --> 00:02:11.520 +presentation is really going to + +00:02:11.520 --> 00:02:14.000 +present these blocks and the mechanism + +00:02:14.000 --> 00:02:15.120 +at the same time + +00:02:15.120 --> 00:02:18.400 +so uh so this no no html was written + +00:02:18.400 --> 00:02:21.280 +look ma no html just pure org mode and + +00:02:21.280 --> 00:02:22.000 +and + +00:02:22.000 --> 00:02:23.520 +you get all these beautiful boxes and + +00:02:23.520 --> 00:02:25.840 +things okay + +00:02:25.840 --> 00:02:27.680 +so the motivation for this is you know + +00:02:27.680 --> 00:02:29.120 +what uh + +00:02:29.120 --> 00:02:31.200 +you're you're online you run into a blog + +00:02:31.200 --> 00:02:32.239 +and you see something you like and + +00:02:32.239 --> 00:02:33.120 +you're like man + +00:02:33.120 --> 00:02:35.280 +you know I wish I could uh you know + +00:02:35.280 --> 00:02:36.640 +produce that + +00:02:36.640 --> 00:02:39.519 +um uh but you you check in the author + +00:02:39.519 --> 00:02:40.160 +wrote raw + +00:02:40.160 --> 00:02:44.239 +html you know plus html everywhere + +00:02:44.239 --> 00:02:46.800 +and uh that's that's you know gonna + +00:02:46.800 --> 00:02:47.840 +obscure + +00:02:47.840 --> 00:02:49.680 +your your real content it's going to be + +00:02:49.680 --> 00:02:51.200 +surrounded by all this uh + +00:02:51.200 --> 00:02:54.239 +styling information that's unfortunate + +00:02:54.239 --> 00:02:56.400 +uh the author decides to use an org + +00:02:56.400 --> 00:02:58.959 +macro all right a bit better + +00:02:58.959 --> 00:03:01.120 +but then what if you decide hey I want + +00:03:01.120 --> 00:03:03.360 +to make a + +00:03:03.360 --> 00:03:06.000 +not pdf great and then the worst of all + +00:03:06.000 --> 00:03:07.840 +the author doesn't give you the source + +00:03:07.840 --> 00:03:10.159 +and then you have to view page source + +00:03:10.159 --> 00:03:10.879 +and + +00:03:10.879 --> 00:03:13.760 +learn cascading style sheets and and you + +00:03:13.760 --> 00:03:14.239 +know + +00:03:14.239 --> 00:03:16.159 +sit in a corner and cry decide to do + +00:03:16.159 --> 00:03:18.080 +other things with your life + +00:03:18.080 --> 00:03:20.959 +so uh we want to give you org users + +00:03:20.959 --> 00:03:22.640 +numerous styles + +00:03:22.640 --> 00:03:26.000 +and uh and an extensible mechanism to + +00:03:26.000 --> 00:03:27.200 +add more of these + +00:03:27.200 --> 00:03:28.799 +aesthetically pleasing styles you know + +00:03:28.799 --> 00:03:31.200 +to have really nice things + +00:03:31.200 --> 00:03:34.720 +look one way in the html and look almost + +00:03:34.720 --> 00:03:35.599 +the same way + +00:03:35.599 --> 00:03:39.120 +in the pdf and other uh back ends and + +00:03:39.120 --> 00:03:41.680 +if by having these newer ones you know + +00:03:41.680 --> 00:03:42.159 +people + +00:03:42.159 --> 00:03:44.879 +might be encouraged to try making new + +00:03:44.879 --> 00:03:45.519 +ones + +00:03:45.519 --> 00:03:47.920 +especially when the interface is uh not + +00:03:47.920 --> 00:03:49.040 +so difficult + +00:03:49.040 --> 00:03:54.159 +uh that's the that's the aim okay + +00:03:54.159 --> 00:03:57.360 +uh so let's let's have a a real story to + +00:03:57.360 --> 00:03:59.120 +motivate this even more + +00:03:59.120 --> 00:04:02.319 +um so here's three friends uh I hope I + +00:04:02.319 --> 00:04:03.599 +don't butcher their names but these + +00:04:03.599 --> 00:04:04.640 +friends are called + +00:04:04.640 --> 00:04:07.040 +amin sasha and corwin and then they're + +00:04:07.040 --> 00:04:08.720 +organizing a conference + +00:04:08.720 --> 00:04:12.080 +uh EmacsConf 2020. + +00:04:12.080 --> 00:04:14.239 +so sasha decides to write an org file + +00:04:14.239 --> 00:04:16.479 +and and she would like some feedback + +00:04:16.479 --> 00:04:19.199 +okay and and just uh make it clear + +00:04:19.199 --> 00:04:19.840 +there's no + +00:04:19.840 --> 00:04:22.960 +uh just how easy this looks + +00:04:22.960 --> 00:04:27.280 +let's look at the source for this block + +00:04:27.280 --> 00:04:30.000 +notice it's just the word green then a + +00:04:30.000 --> 00:04:30.720 +colon + +00:04:30.720 --> 00:04:34.560 +than amine uh so no + +00:04:34.560 --> 00:04:37.759 +no div style coloring just just you know + +00:04:37.759 --> 00:04:38.479 +green color + +00:04:38.479 --> 00:04:41.520 +immune a very pleasant uh or markup + +00:04:41.520 --> 00:04:43.600 +so that's that's quite nice put some + +00:04:43.600 --> 00:04:44.960 +bold around it + +00:04:44.960 --> 00:04:47.840 +not not too difficult so hopefully uh + +00:04:47.840 --> 00:04:49.040 +this will be useful to + +00:04:49.040 --> 00:04:51.680 +other people as well so what kind of + +00:04:51.680 --> 00:04:52.240 +feedback + +00:04:52.240 --> 00:04:56.639 +uh would sasha expect to get um so maybe + +00:04:56.639 --> 00:04:59.120 +she would expect top level remarks + +00:04:59.120 --> 00:04:59.680 +visible + +00:04:59.680 --> 00:05:01.759 +in the export you know when she makes an + +00:05:01.759 --> 00:05:04.400 +html she can see right there a big block + +00:05:04.400 --> 00:05:07.840 +right maybe + +00:05:07.840 --> 00:05:09.840 +amin will suggest to sasha please + +00:05:09.840 --> 00:05:11.120 +replace this part + +00:05:11.120 --> 00:05:12.960 +with this other part or replace this + +00:05:12.960 --> 00:05:14.639 +word with this other word + +00:05:14.639 --> 00:05:16.960 +right um this is not really possible + +00:05:16.960 --> 00:05:17.680 +with raw + +00:05:17.680 --> 00:05:21.919 +html or uh yeah or with even latex + +00:05:21.919 --> 00:05:24.000 +you'd have to have multiple arguments + +00:05:24.000 --> 00:05:25.360 +the first argument and then + +00:05:25.360 --> 00:05:27.840 +the replacement argument and it's a bit + +00:05:27.840 --> 00:05:28.800 +clunky + +00:05:28.800 --> 00:05:30.960 +um but with our setup you just write + +00:05:30.960 --> 00:05:32.080 +some text + +00:05:32.080 --> 00:05:34.479 +write hashtag plus replace with and then + +00:05:34.479 --> 00:05:36.240 +write more text and you're good to go + +00:05:36.240 --> 00:05:39.440 +normal uh org markup um + +00:05:39.440 --> 00:05:40.720 +everyone speaks different languages + +00:05:40.720 --> 00:05:42.479 +maybe they want to use a + +00:05:42.479 --> 00:05:45.919 +uh one word or they're arguing about + +00:05:45.919 --> 00:05:48.000 +whether we talk about frames or windows + +00:05:48.000 --> 00:05:49.759 +um so maybe they want to have some + +00:05:49.759 --> 00:05:50.560 +translations + +00:05:50.560 --> 00:05:52.479 +right so there's different kinds of + +00:05:52.479 --> 00:05:55.360 +feedbacks uh let's let's take an example + +00:05:55.360 --> 00:05:59.360 +uh look at what they are okay + +00:05:59.360 --> 00:06:02.560 +uh so for example sasha might write + +00:06:02.560 --> 00:06:06.160 +uh this org mode right here and uh + +00:06:06.160 --> 00:06:08.319 +and then in her html exports you might + +00:06:08.319 --> 00:06:09.759 +see this + +00:06:09.759 --> 00:06:12.080 +and uh her feedback might look really + +00:06:12.080 --> 00:06:13.840 +nicely from anyone who says you know + +00:06:13.840 --> 00:06:14.560 +let's uh + +00:06:14.560 --> 00:06:16.639 +let's do some lisp instead of uh + +00:06:16.639 --> 00:06:18.560 +mathematics let's just do some list + +00:06:18.560 --> 00:06:20.960 +and and corwin says you know let's let's + +00:06:20.960 --> 00:06:22.479 +not be so silly + +00:06:22.479 --> 00:06:25.120 +maybe let's just say 9 a.m and move on + +00:06:25.120 --> 00:06:28.080 +okay + +00:06:28.080 --> 00:06:31.360 +um so amin likes to export to pdf + +00:06:31.360 --> 00:06:33.039 +and so he writes his top-level remarks + +00:06:33.039 --> 00:06:34.720 +using latex that's how + +00:06:34.720 --> 00:06:37.600 +so to get this uh square I mean please + +00:06:37.600 --> 00:06:38.960 +change whatever + +00:06:38.960 --> 00:06:41.440 +he might write like this hashtag you + +00:06:41.440 --> 00:06:43.120 +know plus latex + +00:06:43.120 --> 00:06:46.960 +hashtag plus latex right but then + +00:06:46.960 --> 00:06:50.000 +sasha only exports to p to html uh for + +00:06:50.000 --> 00:06:50.880 +example + +00:06:50.880 --> 00:06:54.880 +um and uh so she doesn't look at the pdf + +00:06:54.880 --> 00:06:57.199 +and she may not see his top-level + +00:06:57.199 --> 00:06:58.560 +feedback you know with those nice + +00:06:58.560 --> 00:06:59.440 +brackets and + +00:06:59.440 --> 00:07:02.160 +and bold right and so she might think + +00:07:02.160 --> 00:07:03.120 +everything's good + +00:07:03.120 --> 00:07:06.160 +right and that can be a bit disastrous + +00:07:06.160 --> 00:07:09.039 +um so maybe sasha will will then uh make + +00:07:09.039 --> 00:07:09.440 +some + +00:07:09.440 --> 00:07:13.199 +of her own feedback all right uh but + +00:07:13.199 --> 00:07:16.160 +and to produce it she might write html + +00:07:16.160 --> 00:07:16.560 +uh + +00:07:16.560 --> 00:07:20.639 +um html commands hashtag plus html to + +00:07:20.639 --> 00:07:21.680 +get that + +00:07:21.680 --> 00:07:24.240 +uh but then amin will make a pdf and + +00:07:24.240 --> 00:07:25.680 +this won't stick out + +00:07:25.680 --> 00:07:27.759 +and then so he might think everything's + +00:07:27.759 --> 00:07:30.160 +okay even even though it's not + +00:07:30.160 --> 00:07:33.520 +um then corwin actually decides hey + +00:07:33.520 --> 00:07:36.240 +uh let me read the exported result and + +00:07:36.240 --> 00:07:36.800 +these + +00:07:36.800 --> 00:07:38.319 +there's all those feedback from two + +00:07:38.319 --> 00:07:39.919 +people who haven't uh + +00:07:39.919 --> 00:07:42.080 +read anything because maybe they were in + +00:07:42.080 --> 00:07:43.840 +a russian and didn't + +00:07:43.840 --> 00:07:46.400 +see the top level feedback and so they + +00:07:46.400 --> 00:07:48.160 +agree hey let's have a uniform org + +00:07:48.160 --> 00:07:50.000 +interface that exports + +00:07:50.000 --> 00:07:53.280 +to both html and pdf make both of us + +00:07:53.280 --> 00:07:54.080 +happy + +00:07:54.080 --> 00:07:57.280 +okay so they decide to use org special + +00:07:57.280 --> 00:07:58.160 +blocks + +00:07:58.160 --> 00:08:01.840 +right um and to set this up they need to + +00:08:01.840 --> 00:08:04.400 +you know maybe read a little bit of lisp + +00:08:04.400 --> 00:08:04.879 +hooks + +00:08:04.879 --> 00:08:08.879 +advice macros to get all of this set up + +00:08:08.879 --> 00:08:10.840 +and then they'll use org as the main + +00:08:10.840 --> 00:08:12.319 +interface okay + +00:08:12.319 --> 00:08:14.400 +it's a lot of work but it's worth it + +00:08:14.400 --> 00:08:16.479 +right maybe + +00:08:16.479 --> 00:08:19.360 +um but then corwin corbin's a bit tears + +00:08:19.360 --> 00:08:19.759 +so + +00:08:19.759 --> 00:08:22.960 +uh corwin maybe doesn't want to write + +00:08:22.960 --> 00:08:24.800 +uh using blocks he thinks they're + +00:08:24.800 --> 00:08:26.080 +overkill and + +00:08:26.080 --> 00:08:29.360 +and sasha wants html and uh and + +00:08:29.360 --> 00:08:31.840 +I mean wants pdf and corwin wants org + +00:08:31.840 --> 00:08:32.560 +reveal + +00:08:32.560 --> 00:08:34.240 +so now they have to reformat all their + +00:08:34.240 --> 00:08:36.320 +code and then they need to use org link + +00:08:36.320 --> 00:08:37.120 +types to + +00:08:37.120 --> 00:08:39.599 +reduce the overkill all right so they + +00:08:39.599 --> 00:08:41.519 +can try to avoid duplication by + +00:08:41.519 --> 00:08:44.000 +factoring things out into self-contained + +00:08:44.000 --> 00:08:46.800 +uh defined functions or defunds + +00:08:46.800 --> 00:08:50.320 +um but now to set up or links + +00:08:50.320 --> 00:08:53.440 +uh we'll have uh to learn a new + +00:08:53.440 --> 00:08:54.399 +interface + +00:08:54.399 --> 00:08:57.040 +org setup link um learn a little bit + +00:08:57.040 --> 00:08:58.000 +about fonts + +00:08:58.000 --> 00:09:02.160 +follow links exports handles + +00:09:02.160 --> 00:09:05.040 +it's so much that's so much but but then + +00:09:05.040 --> 00:09:06.800 +you know the friends they learn a lot + +00:09:06.800 --> 00:09:08.399 +you know they learn about defund all + +00:09:08.399 --> 00:09:11.120 +right so these these words are red + +00:09:11.120 --> 00:09:12.480 +you get a little explanation I think + +00:09:12.480 --> 00:09:14.320 +it's a bit too small for anyone to read + +00:09:14.320 --> 00:09:16.720 +this is lisp documentation right for + +00:09:16.720 --> 00:09:18.000 +defund + +00:09:18.000 --> 00:09:19.680 +advice ad there's some list + +00:09:19.680 --> 00:09:21.600 +documentation right + +00:09:21.600 --> 00:09:23.600 +they learn about destructuring let's so + +00:09:23.600 --> 00:09:25.279 +this is from the dash library + +00:09:25.279 --> 00:09:26.959 +here's all that you know glorious + +00:09:26.959 --> 00:09:28.800 +glorious documentation with examples + +00:09:28.800 --> 00:09:29.360 +sorry + +00:09:29.360 --> 00:09:31.680 +I like that they might make an ad-hoc + +00:09:31.680 --> 00:09:33.760 +mechanism to simulate + +00:09:33.760 --> 00:09:36.000 +arguments for special blocks so + +00:09:36.000 --> 00:09:37.040 +something maybe called + +00:09:37.040 --> 00:09:40.399 +extract arguments and then of course to + +00:09:40.399 --> 00:09:41.920 +make new link types they have to learn + +00:09:41.920 --> 00:09:42.480 +about + +00:09:42.480 --> 00:09:45.120 +org link set parameters and then it's + +00:09:45.120 --> 00:09:46.480 +numerous uh + +00:09:46.480 --> 00:09:49.920 +bits and pieces all right so let's oh + +00:09:49.920 --> 00:09:50.720 +let's uh + +00:09:50.720 --> 00:09:53.600 +close all these ones down and and uh of + +00:09:53.600 --> 00:09:55.040 +course they also need to be uh + +00:09:55.040 --> 00:09:56.080 +comfortable with + +00:09:56.080 --> 00:09:58.720 +uh loops and maps and matching and + +00:09:58.720 --> 00:09:59.920 +string functions + +00:09:59.920 --> 00:10:02.560 +so it's it's a bit of a pain it's a bit + +00:10:02.560 --> 00:10:03.360 +of a pain + +00:10:03.360 --> 00:10:05.839 +um so it's probably not worth it so + +00:10:05.839 --> 00:10:06.560 +maybe I'll just + +00:10:06.560 --> 00:10:09.360 +rush things quickly or do an ad hoc you + +00:10:09.360 --> 00:10:10.320 +know + +00:10:10.320 --> 00:10:13.680 +we have things to do right + +00:10:13.680 --> 00:10:15.920 +so maybe maybe the squad wants to have a + +00:10:15.920 --> 00:10:17.839 +modular + +00:10:17.839 --> 00:10:21.120 +and unified interface so everyone's + +00:10:21.120 --> 00:10:23.040 +comfortable with defunct to define a + +00:10:23.040 --> 00:10:25.279 +function and they say you know what + +00:10:25.279 --> 00:10:26.480 +it would be nice if we could just you + +00:10:26.480 --> 00:10:29.440 +know define simultaneously + +00:10:29.440 --> 00:10:32.959 +both a block and the link type right + +00:10:32.959 --> 00:10:34.880 +and uh that way we have a single + +00:10:34.880 --> 00:10:36.000 +interface + +00:10:36.000 --> 00:10:38.240 +org mode for for these things and it + +00:10:38.240 --> 00:10:39.040 +would be nice was + +00:10:39.040 --> 00:10:42.079 +modular so if I defined a + +00:10:42.079 --> 00:10:43.680 +one kind of block and you defined + +00:10:43.680 --> 00:10:45.519 +another we could compose them + +00:10:45.519 --> 00:10:47.600 +right and then get a you know a nice + +00:10:47.600 --> 00:10:49.360 +bigger block like lego + +00:10:49.360 --> 00:10:52.320 +that would be nice building box okay and + +00:10:52.320 --> 00:10:54.160 +uh this is uh what we + +00:10:54.160 --> 00:10:56.240 +have come up with called death block and + +00:10:56.240 --> 00:10:57.600 +it also has a + +00:10:57.600 --> 00:11:00.240 +long documentation string containing + +00:11:00.240 --> 00:11:01.760 +examples and things + +00:11:01.760 --> 00:11:04.800 +so that way you can try to be useful + +00:11:04.800 --> 00:11:08.320 +okay um so let's let's look at a a + +00:11:08.320 --> 00:11:10.880 +solution to these friends uh trilemma + +00:11:10.880 --> 00:11:12.800 +all right so here's here's a way to + +00:11:12.800 --> 00:11:14.320 +define a block + +00:11:14.320 --> 00:11:17.040 +um it looks it's it doesn't look that + +00:11:17.040 --> 00:11:19.200 +difficult but this is how they can + +00:11:19.200 --> 00:11:22.320 +define a block for um + +00:11:22.320 --> 00:11:25.920 +for uh their top-level feedback right + +00:11:25.920 --> 00:11:27.680 +so let's let's look at the three main + +00:11:27.680 --> 00:11:28.959 +parts together + +00:11:28.959 --> 00:11:31.920 +it's not that uh difficult I hope just + +00:11:31.920 --> 00:11:33.040 +six lines + +00:11:33.040 --> 00:11:34.720 +and that's including a documentation + +00:11:34.720 --> 00:11:36.160 +string and you know + +00:11:36.160 --> 00:11:39.440 +uh new lines and things okay so in line + +00:11:39.440 --> 00:11:41.279 +one we just define the block just like + +00:11:41.279 --> 00:11:42.000 +you define + +00:11:42.000 --> 00:11:44.880 +a function we define a block the flag + +00:11:44.880 --> 00:11:46.399 +the block name is going to be called + +00:11:46.399 --> 00:11:49.680 +feedback it has an author who + +00:11:49.680 --> 00:11:53.360 +right the author has no default + +00:11:53.360 --> 00:11:56.160 +value it has a color and the color has a + +00:11:56.160 --> 00:11:57.760 +default value of red + +00:11:57.760 --> 00:12:00.560 +okay so just just as when you define + +00:12:00.560 --> 00:12:01.680 +functions they + +00:12:01.680 --> 00:12:04.880 +they uh you start by uh define + +00:12:04.880 --> 00:12:08.639 +or def block than the name some + +00:12:08.639 --> 00:12:10.720 +mandatory argument and some optional + +00:12:10.720 --> 00:12:13.440 +arguments okay + +00:12:13.440 --> 00:12:15.760 +then the next stage is well and + +00:12:15.760 --> 00:12:18.480 +definition a documentation you know + +00:12:18.480 --> 00:12:20.880 +uh the people who use this which are + +00:12:20.880 --> 00:12:22.880 +future you or future me you know + +00:12:22.880 --> 00:12:25.519 +uh might want to know what this is all + +00:12:25.519 --> 00:12:27.839 +right so let's get to document this + +00:12:27.839 --> 00:12:30.560 +uh and uh for for corwin who might want + +00:12:30.560 --> 00:12:32.079 +to use uh tooltips + +00:12:32.079 --> 00:12:34.560 +uh when corwin writes feedback whatever + +00:12:34.560 --> 00:12:35.120 +and + +00:12:35.120 --> 00:12:37.120 +Emacs they'll see a nice little tooltip + +00:12:37.120 --> 00:12:38.639 +and the tooltip will have + +00:12:38.639 --> 00:12:41.279 +this uh documentation string right so + +00:12:41.279 --> 00:12:43.279 +that'll be nice + +00:12:43.279 --> 00:12:45.200 +okay and then here's the third part the + +00:12:45.200 --> 00:12:46.480 +last three lines are + +00:12:46.480 --> 00:12:49.440 +not not so difficult if the back end is + +00:12:49.440 --> 00:12:49.680 +in + +00:12:49.680 --> 00:12:52.800 +is html the backend is html + +00:12:52.800 --> 00:12:55.360 +please use this template string + +00:12:55.360 --> 00:12:57.440 +otherwise use the other string + +00:12:57.440 --> 00:13:00.639 +okay and for each of these uh string + +00:13:00.639 --> 00:13:01.279 +markers + +00:13:01.279 --> 00:13:03.600 +please put in the color who wrote it and + +00:13:03.600 --> 00:13:04.959 +then the contents + +00:13:04.959 --> 00:13:07.279 +of the special block or the link type + +00:13:07.279 --> 00:13:08.160 +okay + +00:13:08.160 --> 00:13:10.639 +um so that's pretty neat not not so + +00:13:10.639 --> 00:13:11.600 +difficult + +00:13:11.600 --> 00:13:14.639 +so I thought that was kind of cool and + +00:13:14.639 --> 00:13:15.519 +then notice it's + +00:13:15.519 --> 00:13:18.480 +anaphoric it's it's a this this def + +00:13:18.480 --> 00:13:19.519 +block + +00:13:19.519 --> 00:13:21.760 +gives you two new names it gives you a + +00:13:21.760 --> 00:13:22.560 +name called + +00:13:22.560 --> 00:13:25.120 +uh contents and it gives you a name + +00:13:25.120 --> 00:13:26.480 +called back end + +00:13:26.480 --> 00:13:29.040 +right and so even if you're writing a + +00:13:29.040 --> 00:13:31.040 +def block and you intend it to be used + +00:13:31.040 --> 00:13:32.560 +only for links + +00:13:32.560 --> 00:13:35.440 +uh like the uh these colors for example + +00:13:35.440 --> 00:13:37.600 +uh these colors were defined using dev + +00:13:37.600 --> 00:13:38.399 +block + +00:13:38.399 --> 00:13:41.279 +uh and I used them as links right here + +00:13:41.279 --> 00:13:43.360 +and you don't need to worry + +00:13:43.360 --> 00:13:44.880 +where does the text come from in the + +00:13:44.880 --> 00:13:48.160 +link you know if I say red colon bob uh + +00:13:48.160 --> 00:13:48.959 +is it bob + +00:13:48.959 --> 00:13:50.720 +or if I put a description is it the + +00:13:50.720 --> 00:13:52.000 +description so + +00:13:52.000 --> 00:13:54.000 +it's whatever is available will will + +00:13:54.000 --> 00:13:56.720 +become uh the value of contents + +00:13:56.720 --> 00:13:59.199 +and if you're really you know interested + +00:13:59.199 --> 00:14:00.320 +and you want to do some + +00:14:00.320 --> 00:14:03.839 +intricate stuff uh def block also gives + +00:14:03.839 --> 00:14:04.959 +you something called + +00:14:04.959 --> 00:14:08.160 +raw dash contents if you really want to + +00:14:08.160 --> 00:14:09.360 +touch the raw + +00:14:09.360 --> 00:14:11.920 +uh contents with all of the org markups + +00:14:11.920 --> 00:14:12.639 +still there + +00:14:12.639 --> 00:14:16.000 +okay so let's uh let's see + +00:14:16.000 --> 00:14:18.320 +how uh everyone can uh communicate + +00:14:18.320 --> 00:14:19.440 +amongst themselves + +00:14:19.440 --> 00:14:22.480 +using this new interface okay so + +00:14:22.480 --> 00:14:26.000 +uh uh sasha speculates and she how does + +00:14:26.000 --> 00:14:28.399 +she speculate for her organ html + +00:14:28.399 --> 00:14:31.440 +she might just write hey look at that no + +00:14:31.440 --> 00:14:34.800 +no no html nice and and + +00:14:34.800 --> 00:14:37.519 +amin wants to have some green and so he + +00:14:37.519 --> 00:14:39.600 +just says hey here's some color green + +00:14:39.600 --> 00:14:42.240 +and and uh there you go it looks almost + +00:14:42.240 --> 00:14:42.959 +the same + +00:14:42.959 --> 00:14:46.560 +right uh notice that the main argument + +00:14:46.560 --> 00:14:49.680 +is right here def block took an author + +00:14:49.680 --> 00:14:52.480 +and here's the author again and now the + +00:14:52.480 --> 00:14:53.920 +optional argument + +00:14:53.920 --> 00:14:57.360 +uses the org babel source interface you + +00:14:57.360 --> 00:14:58.000 +just say + +00:14:58.000 --> 00:15:00.639 +colon and then a key and then the + +00:15:00.639 --> 00:15:01.440 +argument + +00:15:01.440 --> 00:15:05.040 +quite quite nice and and corwin doesn't + +00:15:05.040 --> 00:15:05.519 +want to + +00:15:05.519 --> 00:15:07.920 +use blocks it's a bit of an overkill and + +00:15:07.920 --> 00:15:09.760 +can just write a + +00:15:09.760 --> 00:15:12.959 +a little um right + +00:15:12.959 --> 00:15:16.000 +so the main argument is now the uh uh + +00:15:16.000 --> 00:15:17.440 +the label of the link + +00:15:17.440 --> 00:15:19.360 +all right and then the description of + +00:15:19.360 --> 00:15:21.600 +the link is the contents + +00:15:21.600 --> 00:15:24.959 +of uh of the feedback so that was quite + +00:15:24.959 --> 00:15:25.680 +nice + +00:15:25.680 --> 00:15:28.079 +so it looks like uh everyone uses the + +00:15:28.079 --> 00:15:29.360 +same interface on the left + +00:15:29.360 --> 00:15:32.800 +and can have varying uh outputs + +00:15:32.800 --> 00:15:34.480 +and it looks I think it looks quite nice + +00:15:34.480 --> 00:15:36.639 +and I hope you do too + +00:15:36.639 --> 00:15:40.000 +um and there's a few more maybe + +00:15:40.000 --> 00:15:42.160 +as you saw in some previous ones we had + +00:15:42.160 --> 00:15:43.920 +text side beside side + +00:15:43.920 --> 00:15:46.800 +right now um or we folded some regions + +00:15:46.800 --> 00:15:47.440 +away + +00:15:47.440 --> 00:15:49.360 +that was quite nice we put some things + +00:15:49.360 --> 00:15:50.959 +in pretty boxes + +00:15:50.959 --> 00:15:54.000 +um uh we had some spoilers at the very + +00:15:54.000 --> 00:15:57.120 +beginning that we we uh hit some text uh + +00:15:57.120 --> 00:15:58.160 +we demoed uh + +00:15:58.160 --> 00:15:59.600 +some texts right you know here's some + +00:15:59.600 --> 00:16:01.680 +org and here's what it looks like + +00:16:01.680 --> 00:16:04.480 +um and and most importantly uh they they + +00:16:04.480 --> 00:16:05.199 +compose + +00:16:05.199 --> 00:16:08.320 +right there's uh uh there's a + +00:16:08.320 --> 00:16:12.639 +a macro called uh uh thread block + +00:16:12.639 --> 00:16:14.720 +uh thread block a thread block call and + +00:16:14.720 --> 00:16:16.160 +it lets you thread the + +00:16:16.160 --> 00:16:18.000 +the contents through a number of blocks + +00:16:18.000 --> 00:16:20.639 +treating them as if they were functions + +00:16:20.639 --> 00:16:22.480 +and so really you can think of a block + +00:16:22.480 --> 00:16:23.680 +as a as a + +00:16:23.680 --> 00:16:26.560 +as a string valued function so that's + +00:16:26.560 --> 00:16:27.360 +pretty neat + +00:16:27.360 --> 00:16:30.959 +I I think and uh thank you for listening + +00:16:30.959 --> 00:16:31.759 +and uh + +00:16:31.759 --> 00:16:34.320 +I I hope you've uh enjoyed this little + +00:16:34.320 --> 00:16:34.880 +uh + +00:16:34.880 --> 00:16:37.600 +happy fun time with uh with the Emacs + +00:16:37.600 --> 00:16:38.160 +and friends + +00:16:38.160 --> 00:16:40.720 +and uh I'll I'm I'll happy happily + +00:16:40.720 --> 00:16:41.759 +answer questions + +00:16:41.759 --> 00:16:43.730 +uh right now um + +00:16:43.730 --> 00:16:45.360 +[Music] + +00:16:45.360 --> 00:16:48.160 +so uh someone says why did you put + +00:16:48.160 --> 00:16:50.480 +optional arguments in a separate list + +00:16:50.480 --> 00:16:53.600 +rather than using cl style argument + +00:16:53.600 --> 00:16:54.560 +lists + +00:16:54.560 --> 00:16:58.399 +um so that's a very good question + +00:16:58.399 --> 00:17:01.680 +and I will answer that by + +00:17:01.680 --> 00:17:04.400 +showing you a more involved definition + +00:17:04.400 --> 00:17:04.880 +of + +00:17:04.880 --> 00:17:08.959 +feedback so let's look at a + +00:17:08.959 --> 00:17:13.039 +a more involved one + +00:17:13.039 --> 00:17:16.079 +right right here so for example + +00:17:16.079 --> 00:17:19.280 +this one is called rural mark all right + +00:17:19.280 --> 00:17:21.760 +and uh please let me know if my text is + +00:17:21.760 --> 00:17:23.439 +not sufficiently big + +00:17:23.439 --> 00:17:26.799 +so here is here is why uh we have + +00:17:26.799 --> 00:17:29.520 +two arguments that takes two arguments + +00:17:29.520 --> 00:17:30.720 +uh instead of one + +00:17:30.720 --> 00:17:33.360 +for for its argument list right so you + +00:17:33.360 --> 00:17:34.799 +you have def block + +00:17:34.799 --> 00:17:37.679 +then you have the name right then you + +00:17:37.679 --> 00:17:38.400 +have + +00:17:38.400 --> 00:17:40.960 +the first uh argument list and the + +00:17:40.960 --> 00:17:42.880 +second argument list + +00:17:42.880 --> 00:17:46.080 +the first argument list uh takes the + +00:17:46.080 --> 00:17:49.280 +takes the text right after the begin + +00:17:49.280 --> 00:17:51.760 +right the text right after the begin is + +00:17:51.760 --> 00:17:52.320 +the main + +00:17:52.320 --> 00:17:55.760 +argument okay and then the remaining key + +00:17:55.760 --> 00:17:57.039 +value pairs + +00:17:57.039 --> 00:18:00.320 +are in the second argument list okay + +00:18:00.320 --> 00:18:03.280 +now the reason we have two is because uh + +00:18:03.280 --> 00:18:04.640 +in order to + +00:18:04.640 --> 00:18:06.799 +streamline the interface to account for + +00:18:06.799 --> 00:18:08.880 +both uh special blocks + +00:18:08.880 --> 00:18:12.320 +and or link types uh what we do is we + +00:18:12.320 --> 00:18:13.360 +say hey + +00:18:13.360 --> 00:18:16.160 +uh in the first argument list uh you can + +00:18:16.160 --> 00:18:18.000 +give a name to the first argument + +00:18:18.000 --> 00:18:21.039 +give it a default value and anything + +00:18:21.039 --> 00:18:24.240 +else you provide will become uh + +00:18:24.240 --> 00:18:27.760 +uh part of the I'll co link + +00:18:27.760 --> 00:18:30.000 +information so for example this link we + +00:18:30.000 --> 00:18:32.000 +decided to make its face + +00:18:32.000 --> 00:18:34.799 +angry red um you might want to give + +00:18:34.799 --> 00:18:35.840 +other features to + +00:18:35.840 --> 00:18:37.919 +links so we're trying to streamline the + +00:18:37.919 --> 00:18:39.679 +interface for both + +00:18:39.679 --> 00:18:42.320 +special blocks and org link types and we + +00:18:42.320 --> 00:18:42.880 +thought + +00:18:42.880 --> 00:18:46.240 +this way was quite nice um so + +00:18:46.240 --> 00:18:49.840 +that was the main reason uh someone asks + +00:18:49.840 --> 00:18:52.480 +uh so if if you uh if that's uh if you + +00:18:52.480 --> 00:18:55.039 +need if you have follow-up please ask + +00:18:55.039 --> 00:18:57.600 +someone asks do you intend to try to + +00:18:57.600 --> 00:19:00.559 +upstream this amazing work into org + +00:19:00.559 --> 00:19:03.600 +well I'm glad you like it I I don't know + +00:19:03.600 --> 00:19:04.559 +how to upstream + +00:19:04.559 --> 00:19:06.880 +but but I I will look into it and any + +00:19:06.880 --> 00:19:08.799 +advice or guidance would be + +00:19:08.799 --> 00:19:11.840 +much appreciated um you know + +00:19:11.840 --> 00:19:14.640 +lisp is awesome and just as defunded as + +00:19:14.640 --> 00:19:17.120 +a macro deathblock is a macro and then + +00:19:17.120 --> 00:19:20.240 +source blocks are awesome and then now + +00:19:20.240 --> 00:19:21.919 +maybe we can have arguments and special + +00:19:21.919 --> 00:19:24.080 +blocks and motivate and encourage more + +00:19:24.080 --> 00:19:25.280 +people to uh + +00:19:25.280 --> 00:19:28.799 +to uh learn lisp right + +00:19:28.799 --> 00:19:32.559 +so another person asks + +00:19:32.559 --> 00:19:35.280 +um what is used to produce colorful + +00:19:35.280 --> 00:19:38.559 +boxes around the cursor + +00:19:38.559 --> 00:19:40.400 +I I'm not quite sure if you're asking + +00:19:40.400 --> 00:19:41.840 +are you talking about my cursor right + +00:19:41.840 --> 00:19:42.559 +here + +00:19:42.559 --> 00:19:48.400 +or are you talking about in the slide um + +00:19:48.400 --> 00:19:50.559 +so this this this cursor is some + +00:19:50.559 --> 00:19:52.400 +application called + +00:19:52.400 --> 00:19:55.440 +a stream brush that I had to purchase uh + +00:19:55.440 --> 00:19:57.679 +unfortunately I could not find a a + +00:19:57.679 --> 00:19:59.039 +suitable free one + +00:19:59.039 --> 00:20:02.159 +um and the blocks I can demonstrate some + +00:20:02.159 --> 00:20:03.840 +Emacs list but I can open up my Emacs if + +00:20:03.840 --> 00:20:05.679 +people like and we can try some things + +00:20:05.679 --> 00:20:06.320 +out + +00:20:06.320 --> 00:20:09.440 +happy to do that uh + +00:20:09.440 --> 00:20:12.480 +you're welcome uh someone asks + +00:20:12.480 --> 00:20:14.880 +a side question about org reveal how do + +00:20:14.880 --> 00:20:15.520 +you get + +00:20:15.520 --> 00:20:17.440 +bespoke or multiple column layouts + +00:20:17.440 --> 00:20:19.120 +without using html + +00:20:19.120 --> 00:20:22.559 +ah excellent question that's what we do + +00:20:22.559 --> 00:20:24.640 +that's that's what this uh project is + +00:20:24.640 --> 00:20:26.000 +about so it's not + +00:20:26.000 --> 00:20:28.960 +org reveal it's it's our fancy parallel + +00:20:28.960 --> 00:20:29.440 +uh + +00:20:29.440 --> 00:20:32.240 +uh block so we have this thing you say + +00:20:32.240 --> 00:20:33.440 +begin parallel + +00:20:33.440 --> 00:20:35.679 +you say how many columns you would like + +00:20:35.679 --> 00:20:37.120 +uh do you want a bar + +00:20:37.120 --> 00:20:39.679 +or not and then you write some text and + +00:20:39.679 --> 00:20:40.960 +then you uh + +00:20:40.960 --> 00:20:42.480 +you get some text and according with the + +00:20:42.480 --> 00:20:44.400 +bar or not right so that's + +00:20:44.400 --> 00:20:47.520 +that's how we achieve that in our slides + +00:20:47.520 --> 00:20:50.080 +so I'm not uh I'm not quite sure where + +00:20:50.080 --> 00:20:52.880 +this was + +00:20:52.880 --> 00:20:59.520 +somewhere here I think + +00:20:59.520 --> 00:21:06.240 +let me try to find this for you + +00:21:06.240 --> 00:21:08.320 +I can't seem to find where the parallel + +00:21:08.320 --> 00:21:09.440 +blocks were + +00:21:09.440 --> 00:21:12.159 +apologies let's move on to the next + +00:21:12.159 --> 00:21:15.039 +question I suppose + +00:21:15.039 --> 00:21:17.760 +uh I'm pretty sure they're here ah there + +00:21:17.760 --> 00:21:18.400 +they are + +00:21:18.400 --> 00:21:21.360 +yes so these these uh were just + +00:21:21.360 --> 00:21:22.640 +instances of using + +00:21:22.640 --> 00:21:25.440 +uh the parallel block and it makes + +00:21:25.440 --> 00:21:26.480 +things parallel + +00:21:26.480 --> 00:21:29.600 +so that's quite nice um another person + +00:21:29.600 --> 00:21:33.360 +asks uh yes + +00:21:33.360 --> 00:21:36.720 +excellent um how does this relate to + +00:21:36.720 --> 00:21:37.840 +banda pandoc + +00:21:37.840 --> 00:21:39.360 +which is used for converting between + +00:21:39.360 --> 00:21:40.960 +markup formats + +00:21:40.960 --> 00:21:43.919 +so all we're doing is we're we're saying + +00:21:43.919 --> 00:21:44.400 +hey + +00:21:44.400 --> 00:21:46.799 +please write org because org is just + +00:21:46.799 --> 00:21:47.679 +fantastic + +00:21:47.679 --> 00:21:50.400 +and we love it and it's the dream and if + +00:21:50.400 --> 00:21:51.760 +you would like to view things + +00:21:51.760 --> 00:21:55.039 +in html or in org reveal or + +00:21:55.039 --> 00:21:58.559 +in pdf that's up to the user so + +00:21:58.559 --> 00:22:02.320 +here is a um oh + +00:22:02.320 --> 00:22:05.039 +made it too small now so here is a an + +00:22:05.039 --> 00:22:06.080 +example + +00:22:06.080 --> 00:22:08.880 +so here's an uh how here's how parallel + +00:22:08.880 --> 00:22:10.240 +is implemented + +00:22:10.240 --> 00:22:13.120 +uh just as a quick example uh not too + +00:22:13.120 --> 00:22:14.320 +long + +00:22:14.320 --> 00:22:16.880 +uh about half of the implementation is + +00:22:16.880 --> 00:22:18.400 +documentation so + +00:22:18.400 --> 00:22:20.720 +uh hopefully that speaks for for how + +00:22:20.720 --> 00:22:22.720 +useful this feature is + +00:22:22.720 --> 00:22:25.280 +uh so we decide if there's a rule or not + +00:22:25.280 --> 00:22:28.080 +um we look for the column break + +00:22:28.080 --> 00:22:29.760 +and really here we're looking at the + +00:22:29.760 --> 00:22:31.840 +back end if the back end is latex + +00:22:31.840 --> 00:22:34.960 +uh please use this uh incantation with + +00:22:34.960 --> 00:22:37.679 +multi columns mini pages what have you + +00:22:37.679 --> 00:22:38.559 +and if the + +00:22:38.559 --> 00:22:41.039 +back end is something else uh please uh + +00:22:41.039 --> 00:22:41.600 +do this + +00:22:41.600 --> 00:22:44.960 +uh div and style and uh other uh + +00:22:44.960 --> 00:22:46.640 +gibberish that we don't really wanna + +00:22:46.640 --> 00:22:48.080 +look at uh so + +00:22:48.080 --> 00:22:51.760 +uh when you pandoc works from org + +00:22:51.760 --> 00:22:55.280 +so it might not work directly since our + +00:22:55.280 --> 00:22:58.080 +interface the way we set it up is when + +00:22:58.080 --> 00:22:59.679 +you try to export + +00:22:59.679 --> 00:23:01.919 +uh we hook in and we do a bunch of + +00:23:01.919 --> 00:23:03.039 +pre-processing + +00:23:03.039 --> 00:23:05.919 +so this this uh def block is a is a + +00:23:05.919 --> 00:23:07.440 +string valued function + +00:23:07.440 --> 00:23:10.880 +and so whenever we see these uh begin + +00:23:10.880 --> 00:23:13.919 +parallel uh when you do an export + +00:23:13.919 --> 00:23:16.480 +I tell Emacs hold up look for those + +00:23:16.480 --> 00:23:16.960 +begin + +00:23:16.960 --> 00:23:19.360 +parallels please oh you found them grab + +00:23:19.360 --> 00:23:20.320 +that text + +00:23:20.320 --> 00:23:22.400 +you grabbed it great now please apply + +00:23:22.400 --> 00:23:24.080 +this person's uh function + +00:23:24.080 --> 00:23:27.120 +onto that text and splice in the result + +00:23:27.120 --> 00:23:29.760 +okay so so when you export uh we're + +00:23:29.760 --> 00:23:30.400 +performing + +00:23:30.400 --> 00:23:33.600 +arbitrary computations on your uh uh on + +00:23:33.600 --> 00:23:35.120 +your text + +00:23:35.120 --> 00:23:38.799 +so uh um some people might not find that + +00:23:38.799 --> 00:23:40.159 +comforting to have + +00:23:40.159 --> 00:23:43.039 +arbitrary uh computations happening so + +00:23:43.039 --> 00:23:45.039 +in this article there's a few where + +00:23:45.039 --> 00:23:47.520 +uh we change your text upon export we + +00:23:47.520 --> 00:23:48.320 +translate it + +00:23:48.320 --> 00:23:51.760 +we do other things to it um + +00:23:51.760 --> 00:23:55.360 +so someone says uh if you export to + +00:23:55.360 --> 00:23:57.360 +latex to pdf does that work well with + +00:23:57.360 --> 00:23:58.640 +beamer as well + +00:23:58.640 --> 00:24:00.320 +to create slides with columns for + +00:24:00.320 --> 00:24:02.080 +example for uh + +00:24:02.080 --> 00:24:05.200 +um so uh actually uh + +00:24:05.200 --> 00:24:08.000 +so uh I I made a bunch of these changes + +00:24:08.000 --> 00:24:09.200 +earlier this morning + +00:24:09.200 --> 00:24:12.320 +and it just says latex right here um + +00:24:12.320 --> 00:24:14.480 +so if you want to go to beamer I think + +00:24:14.480 --> 00:24:15.360 +the back end for me + +00:24:15.360 --> 00:24:18.240 +beamer is called well beamer so instead + +00:24:18.240 --> 00:24:18.960 +of a + +00:24:18.960 --> 00:24:21.200 +a p case what we would do is we would + +00:24:21.200 --> 00:24:22.000 +say oh + +00:24:22.000 --> 00:24:25.360 +if it's a latex or it's a beamer + +00:24:25.360 --> 00:24:29.279 +then uh use this uh otherwise + +00:24:29.279 --> 00:24:31.120 +it's not a latex it will simply default + +00:24:31.120 --> 00:24:33.039 +to this one which could be + +00:24:33.039 --> 00:24:36.400 +dangerous for your needs um I think it's + +00:24:36.400 --> 00:24:39.679 +a bad practice to put a underscore but I + +00:24:39.679 --> 00:24:41.279 +did it really quickly because I just + +00:24:41.279 --> 00:24:43.679 +wanted to show you that it works fine in + +00:24:43.679 --> 00:24:46.559 +org reveal contributions are more than + +00:24:46.559 --> 00:24:47.440 +welcome + +00:24:47.440 --> 00:24:51.039 +I I uh happily uh would love any + +00:24:51.039 --> 00:24:52.240 +assistance + +00:24:52.240 --> 00:24:56.080 +um and and I have a uh we have a + +00:24:56.080 --> 00:24:58.640 +list a reference cheat sheet here to to + +00:24:58.640 --> 00:25:00.159 +learn a little bit about lisp if you're + +00:25:00.159 --> 00:25:02.000 +not comfortable or to + +00:25:02.000 --> 00:25:04.640 +ask some questions lots of helpful + +00:25:04.640 --> 00:25:06.400 +people + +00:25:06.400 --> 00:25:09.440 +so there's another question that says uh + +00:25:09.440 --> 00:25:11.679 +does typing in a block mess up with a + +00:25:11.679 --> 00:25:13.120 +syntax highlighting + +00:25:13.120 --> 00:25:15.679 +usually you use a single color inside an + +00:25:15.679 --> 00:25:17.279 +example block for example + +00:25:17.279 --> 00:25:21.279 +ah you found my crutch you found + +00:25:21.279 --> 00:25:25.279 +my crutch um so I so there's + +00:25:25.279 --> 00:25:27.440 +emax's is all encompassing and I'm not + +00:25:27.440 --> 00:25:29.760 +quite sure how fonts work or are + +00:25:29.760 --> 00:25:32.559 +you know I I learned enough to get by I + +00:25:32.559 --> 00:25:33.840 +learned enough to get by + +00:25:33.840 --> 00:25:37.440 +so let me um but here's + +00:25:37.440 --> 00:25:39.760 +here's how links work they're they're a + +00:25:39.760 --> 00:25:40.799 +bit complicated + +00:25:40.799 --> 00:25:42.960 +this this is a bit scary I don't + +00:25:42.960 --> 00:25:43.919 +recommend anyone + +00:25:43.919 --> 00:25:47.039 +uh read it um + +00:25:47.039 --> 00:25:49.840 +but uh actually let me open up an email + +00:25:49.840 --> 00:25:50.559 +and you can + +00:25:50.559 --> 00:25:53.600 +you can see what I see uh so here's an + +00:25:53.600 --> 00:25:54.799 +Emacs + +00:25:54.799 --> 00:25:56.799 +all right let's make that a bit bigger + +00:25:56.799 --> 00:25:58.400 +uh let's change this + +00:25:58.400 --> 00:26:01.200 +slightly nope that's worse there you go + +00:26:01.200 --> 00:26:01.919 +so + +00:26:01.919 --> 00:26:05.760 +here's here's some words um so here's + +00:26:05.760 --> 00:26:09.360 +red hello um + +00:26:09.360 --> 00:26:12.000 +but you're worried about uh preserving + +00:26:12.000 --> 00:26:12.400 +uh + +00:26:12.400 --> 00:26:15.679 +uh uh um quantification + +00:26:15.679 --> 00:26:18.480 +so let's make an emax list block all + +00:26:18.480 --> 00:26:18.880 +right + +00:26:18.880 --> 00:26:22.840 +and let's say plus one two ah + +00:26:22.840 --> 00:26:28.000 +where's the fun hello + +00:26:28.000 --> 00:26:32.080 +um bye okay where's the coloring + +00:26:32.080 --> 00:26:34.880 +if we if we zoom in on this on this + +00:26:34.880 --> 00:26:36.000 +begin source block + +00:26:36.000 --> 00:26:39.200 +if we zoom in you can see down here + +00:26:39.200 --> 00:26:42.159 +uh we have our our coloring all right + +00:26:42.159 --> 00:26:43.279 +when we zoom in + +00:26:43.279 --> 00:26:46.960 +if we if we zoom out ah no coloring + +00:26:46.960 --> 00:26:50.080 +zoom in coloring it's about ah no + +00:26:50.080 --> 00:26:50.880 +coloring + +00:26:50.880 --> 00:26:53.840 +let's take off these bad boys and oh + +00:26:53.840 --> 00:26:55.679 +look my coloring's back + +00:26:55.679 --> 00:26:59.360 +so um in a previous + +00:26:59.360 --> 00:27:02.320 +uh iteration of the system I was able to + +00:27:02.320 --> 00:27:03.760 +maintain coloring + +00:27:03.760 --> 00:27:06.400 +uh in this new iteration I am not I + +00:27:06.400 --> 00:27:08.559 +don't know how to do it I haven't uh + +00:27:08.559 --> 00:27:11.039 +had the time to to implement it I spent + +00:27:11.039 --> 00:27:13.279 +a lot of time writing this uh + +00:27:13.279 --> 00:27:17.279 +48 page uh documentation uh with uh + +00:27:17.279 --> 00:27:19.679 +with some fun examples to to to try to + +00:27:19.679 --> 00:27:20.320 +help + +00:27:20.320 --> 00:27:21.760 +people learn so but but I would + +00:27:21.760 --> 00:27:23.760 +appreciate any help or guidance on + +00:27:23.760 --> 00:27:26.240 +how to uh maintain the quantification I + +00:27:26.240 --> 00:27:28.000 +I really would like to keep those colors + +00:27:28.000 --> 00:27:29.200 +in + +00:27:29.200 --> 00:27:31.840 +um musa we have time for maybe one more + +00:27:31.840 --> 00:27:32.640 +question + +00:27:32.640 --> 00:27:34.960 +um one or two more questions and then we + +00:27:34.960 --> 00:27:37.039 +have to move on to the next talk + +00:27:37.039 --> 00:27:39.120 +um but yeah you're more than welcome to + +00:27:39.120 --> 00:27:40.799 +take continue taking the questions via + +00:27:40.799 --> 00:27:42.559 +irc or the pad + +00:27:42.559 --> 00:27:45.760 +okay thank you thank you + +00:27:45.760 --> 00:27:48.480 +let's uh the final question we'll take + +00:27:48.480 --> 00:27:48.880 +is + +00:27:48.880 --> 00:27:52.320 +um should packages implement + +00:27:52.320 --> 00:27:54.399 +interface to one specific format or + +00:27:54.399 --> 00:27:55.840 +attempt to be conclusive to all the + +00:27:55.840 --> 00:27:57.279 +potential output targets + +00:27:57.279 --> 00:27:58.880 +I think you should just make them as you + +00:27:58.880 --> 00:28:01.120 +go and you know add them as you need + +00:28:01.120 --> 00:28:02.559 +them we'll make uh + +00:28:02.559 --> 00:28:05.600 +help requests or things and uh + +00:28:05.600 --> 00:28:07.840 +we can we can share recipes in this uh + +00:28:07.840 --> 00:28:09.279 +document and then + +00:28:09.279 --> 00:28:12.799 +try to add other uh techniques and then + +00:28:12.799 --> 00:28:16.000 +and we can uh use these blocks as a + +00:28:16.000 --> 00:28:19.200 +common uh interface for + +00:28:19.200 --> 00:28:22.240 +for exporting to pdf and other things + +00:28:22.240 --> 00:28:26.000 +and since someone asked here is a um + +00:28:26.000 --> 00:28:28.399 +here is uh what a pdf looks like this is + +00:28:28.399 --> 00:28:30.159 +the same pdf and + +00:28:30.159 --> 00:28:33.840 +uh rendered uh just I made no effort to + +00:28:33.840 --> 00:28:34.960 +make it look good + +00:28:34.960 --> 00:28:37.840 +but it surprisingly does look good so so + +00:28:37.840 --> 00:28:38.559 +uh that was + +00:28:38.559 --> 00:28:41.600 +uh that was nice um that was a + +00:28:41.600 --> 00:28:44.320 +terrible magenta but that is life uh + +00:28:44.320 --> 00:28:44.880 +anyhow + +00:28:44.880 --> 00:28:47.279 +I hope you all enjoyed this talk I hope + +00:28:47.279 --> 00:28:48.960 +you will find um + +00:28:48.960 --> 00:28:51.679 +death block uh useful to you it is + +00:28:51.679 --> 00:28:52.799 +available on melbourne + +00:28:52.799 --> 00:28:54.960 +uh in a rush to make it available for + +00:28:54.960 --> 00:28:57.679 +EmacsConf 2020 some melba + +00:28:57.679 --> 00:29:00.159 +guidelines may not have been in here too + +00:29:00.159 --> 00:29:00.960 +please do not + +00:29:00.960 --> 00:29:03.200 +hit me um and I hope everyone enjoys the + +00:29:03.200 --> 00:29:04.720 +rest of the EmacsConf + +00:29:04.720 --> 00:29:08.559 +2020 thank you diff --git a/2020/subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--questions--tuan-anh-nguyen-autogen.vtt b/2020/subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--questions--tuan-anh-nguyen-autogen.vtt new file mode 100644 index 00000000..0f0b2688 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--questions--tuan-anh-nguyen-autogen.vtt @@ -0,0 +1,1087 @@ +WEBVTT + +00:00:00.960 --> 00:00:03.679 +uh okay so the first question is is uh + +00:00:03.679 --> 00:00:05.600 +do you think that this package can be + +00:00:05.600 --> 00:00:08.000 +included into Emacs or + +00:00:08.000 --> 00:00:12.320 +uh empire uh + +00:00:12.320 --> 00:00:15.360 +I think uh it most definitely can is + +00:00:15.360 --> 00:00:18.560 +just a matter of paperwork but + +00:00:18.560 --> 00:00:21.760 +the reason I initially wanted to make it + +00:00:21.760 --> 00:00:24.480 +like a central package is that so that I + +00:00:24.480 --> 00:00:25.039 +can + +00:00:25.039 --> 00:00:28.720 +experiment with it more + +00:00:28.720 --> 00:00:31.920 +like have more freedom to experiment but + +00:00:31.920 --> 00:00:34.320 +eventually I think is a good candidate + +00:00:34.320 --> 00:00:35.680 +for inclusion into + +00:00:35.680 --> 00:00:38.800 +core + +00:00:38.800 --> 00:00:41.200 +and because because currently not in + +00:00:41.200 --> 00:00:42.640 +corey mass there are a couple of + +00:00:42.640 --> 00:00:44.480 +problems with it + +00:00:44.480 --> 00:00:47.840 +mostly in terms of performance + +00:00:47.840 --> 00:00:50.960 +for example like anytime we want to + +00:00:50.960 --> 00:00:53.280 +access the text in a buffer we need to + +00:00:53.280 --> 00:00:54.160 +make + +00:00:54.160 --> 00:00:57.360 +a copy of the text into a string + +00:00:57.360 --> 00:01:00.480 +and then right after reading from that + +00:01:00.480 --> 00:01:03.520 +text we need to free it right away and + +00:01:03.520 --> 00:01:05.280 +that results in a lot of garbage + +00:01:05.280 --> 00:01:09.040 +collection so it would be better + +00:01:09.040 --> 00:01:11.920 +either the treasure could be included in + +00:01:11.920 --> 00:01:12.240 +core + +00:01:12.240 --> 00:01:15.680 +imax or dynamic dynamic model support + +00:01:15.680 --> 00:01:16.799 +can be + +00:01:16.799 --> 00:01:19.439 +augmented with direct text access + +00:01:19.439 --> 00:01:24.080 +somehow + +00:01:24.080 --> 00:01:26.400 +so the second question is will release + +00:01:26.400 --> 00:01:27.200 +performance + +00:01:27.200 --> 00:01:30.320 +be more competitive with cce max + +00:01:30.320 --> 00:01:33.040 +enough so electricity in english is more + +00:01:33.040 --> 00:01:35.670 +attractive + +00:01:35.670 --> 00:01:38.240 +[Music] + +00:01:38.240 --> 00:01:43.439 +I think it's possible but uh yeah + +00:01:43.439 --> 00:01:45.840 +not sure about the amount of effort it + +00:01:45.840 --> 00:01:46.799 +can be + +00:01:46.799 --> 00:01:52.960 +multi-years effort and one thing that + +00:01:52.960 --> 00:01:56.479 +even though gce max can make uh + +00:01:56.479 --> 00:02:00.719 +it is fast enough there's + +00:02:00.719 --> 00:02:03.119 +there's one thing that it uh cannot have + +00:02:03.119 --> 00:02:05.280 +which is that because it's the lisp + +00:02:05.280 --> 00:02:09.679 +it needs the garage collector so + +00:02:09.679 --> 00:02:12.480 +we may experiment experience some kind + +00:02:12.480 --> 00:02:14.000 +of + +00:02:14.000 --> 00:02:17.360 +gcc post if we use live whereas the + +00:02:17.360 --> 00:02:19.920 +currently transistor is written in c + +00:02:19.920 --> 00:02:28.400 +so there's no such latency + +00:02:28.400 --> 00:02:31.040 +the next question is do you think three + +00:02:31.040 --> 00:02:32.400 +sister would be useful + +00:02:32.400 --> 00:02:36.080 +for all buffers I can imagine it being + +00:02:36.080 --> 00:02:38.319 +used to keep a post ast about an arc + +00:02:38.319 --> 00:02:39.599 +buffer + +00:02:39.599 --> 00:02:42.560 +light off element and update it in real + +00:02:42.560 --> 00:02:43.920 +time + +00:02:43.920 --> 00:02:46.239 +yeah actually this is a very interesting + +00:02:46.239 --> 00:02:47.760 +idea + +00:02:47.760 --> 00:02:50.800 +I saw someone started + +00:02:50.800 --> 00:02:53.760 +resistor grammar for all already I don't + +00:02:53.760 --> 00:02:55.120 +have a link right now but + +00:02:55.120 --> 00:02:58.159 +I can look for it + +00:02:58.159 --> 00:03:01.040 +I'll try looking for it and put the link + +00:03:01.040 --> 00:03:01.680 +in + +00:03:01.680 --> 00:03:09.599 +here later + +00:03:09.599 --> 00:03:13.280 +yeah yes someone has written here the uh + +00:03:13.280 --> 00:03:15.519 +and the biggest problem with uh right + +00:03:15.519 --> 00:03:17.040 +now is that it doesn't have + +00:03:17.040 --> 00:03:21.360 +formal grammar so + +00:03:21.360 --> 00:03:22.380 +so the effort + +00:03:22.380 --> 00:03:24.400 +[Applause] + +00:03:24.400 --> 00:03:27.120 +be quite big I think but but once we + +00:03:27.120 --> 00:03:28.799 +have that because the + +00:03:28.799 --> 00:03:31.519 +tree sitter can be run on the web as + +00:03:31.519 --> 00:03:34.239 +well + +00:03:34.239 --> 00:03:37.440 +we can on the web and in many other + +00:03:37.440 --> 00:03:38.080 +places + +00:03:38.080 --> 00:03:40.720 +if we have a grammar for a traditional + +00:03:40.720 --> 00:03:41.840 +grammar for all + +00:03:41.840 --> 00:03:45.680 +we can bring off more + +00:03:45.680 --> 00:03:49.680 +like everywhere that's a very cool + +00:03:49.680 --> 00:03:56.000 +thought + +00:03:56.000 --> 00:03:58.080 +next one is could this be used with + +00:03:58.080 --> 00:04:00.480 +packages like smart parents that aim to + +00:04:00.480 --> 00:04:03.200 +bring structural editing to + +00:04:03.200 --> 00:04:07.120 +non-s expression based languages + +00:04:07.120 --> 00:04:11.360 +yes that is actually one of the + +00:04:11.360 --> 00:04:14.720 +intended use cases initially + +00:04:14.720 --> 00:04:17.280 +it's definitely possible but it's just + +00:04:17.280 --> 00:04:18.880 +that no one has + +00:04:18.880 --> 00:04:37.199 +only started writing the integration yet + +00:04:37.199 --> 00:04:40.639 +and next one + +00:04:40.639 --> 00:04:41.919 +could you show the source that was + +00:04:41.919 --> 00:04:45.040 +matched by the parser in the debug view + +00:04:45.040 --> 00:04:48.479 +in addition to the grammar part matched + +00:04:48.479 --> 00:04:54.960 +uh yeah that's actually um + +00:04:54.960 --> 00:04:57.759 +on my to-do list but I haven't had time + +00:04:57.759 --> 00:04:59.280 +for it yet + +00:04:59.280 --> 00:05:02.560 +so uh if you go to the treesita + +00:05:02.560 --> 00:05:06.560 +website it also has an + +00:05:06.560 --> 00:05:08.800 +online playground where you can input + +00:05:08.800 --> 00:05:12.000 +the code and see the + +00:05:12.000 --> 00:05:14.400 +parse tree in real time and it's + +00:05:14.400 --> 00:05:16.000 +actually + +00:05:16.000 --> 00:05:19.360 +a lot more fancy than what we have in + +00:05:19.360 --> 00:05:22.840 +imax currently so + +00:05:22.840 --> 00:05:25.919 +yeah I just don't have time for it yes + +00:05:25.919 --> 00:05:27.120 +so + +00:05:27.120 --> 00:05:30.320 +some help here would be + +00:05:30.320 --> 00:05:38.700 +very appreciated + +00:05:38.700 --> 00:05:49.919 +[Music] + +00:05:49.919 --> 00:05:52.000 +the next question is will it ever be + +00:05:52.000 --> 00:05:54.240 +possible to write resetter grammars in a + +00:05:54.240 --> 00:05:55.280 +lisp + +00:05:55.280 --> 00:06:00.560 +or will javascript be required + +00:06:00.560 --> 00:06:02.800 +yeah that is already answered in the + +00:06:02.800 --> 00:06:05.280 +part so the + +00:06:05.280 --> 00:06:07.600 +the transcript is actually just used as + +00:06:07.600 --> 00:06:08.639 +a sort of + +00:06:08.639 --> 00:06:12.160 +preprocessor so the + +00:06:12.160 --> 00:06:14.639 +python generator actually works on the + +00:06:14.639 --> 00:06:15.680 +on a json + +00:06:15.680 --> 00:06:19.280 +structure so uh it's definitely possible + +00:06:19.280 --> 00:06:20.240 +to replace + +00:06:20.240 --> 00:06:29.039 +javascript with lists for this + +00:06:29.039 --> 00:06:31.280 +how extensive will the compatibility + +00:06:31.280 --> 00:06:32.160 +between + +00:06:32.160 --> 00:06:35.360 +highlighting grammars for e-max and + +00:06:35.360 --> 00:06:35.840 +those + +00:06:35.840 --> 00:06:44.560 +for veeam nail view + +00:06:44.560 --> 00:06:48.720 +so so right now the + +00:06:48.720 --> 00:06:51.680 +nail vim and Emacs used a different set + +00:06:51.680 --> 00:06:52.000 +of + +00:06:52.000 --> 00:06:55.440 +the highlighting queries and + +00:06:55.440 --> 00:06:59.520 +item probably uses another set of + +00:06:59.520 --> 00:07:03.039 +patterns as well I think it makes sense + +00:07:03.039 --> 00:07:04.960 +because + +00:07:04.960 --> 00:07:07.680 +each editor has its own like existing + +00:07:07.680 --> 00:07:08.479 +conventions + +00:07:08.479 --> 00:07:11.919 +for syntax highlighting so + +00:07:11.919 --> 00:07:15.599 +at least in the beginning I don't expect + +00:07:15.599 --> 00:07:18.560 +there is any compatibility between + +00:07:18.560 --> 00:07:21.599 +different editors + +00:07:21.599 --> 00:07:27.280 +but I think in the long run it will be + +00:07:27.280 --> 00:07:29.520 +would it better if there's some kind of + +00:07:29.520 --> 00:07:31.360 +effort to + +00:07:31.360 --> 00:07:34.880 +unify the at least provide the + +00:07:34.880 --> 00:07:37.440 +most common patterns that should work + +00:07:37.440 --> 00:07:42.840 +across + +00:07:42.840 --> 00:07:51.759 +editors + +00:07:51.759 --> 00:07:53.520 +next one is could there be a + +00:07:53.520 --> 00:07:55.280 +standardized approach + +00:07:55.280 --> 00:07:57.919 +to coding automatic refactoring in the + +00:07:57.919 --> 00:08:01.039 +future + +00:08:01.039 --> 00:08:02.639 +so that whichever language mode you're + +00:08:02.639 --> 00:08:04.160 +using you could see many + +00:08:04.160 --> 00:08:12.960 +available refactoring operations + +00:08:12.960 --> 00:08:16.400 +I'm not sure about this because the + +00:08:16.400 --> 00:08:19.919 +like + +00:08:19.919 --> 00:08:22.240 +most of uh refactoring operations are + +00:08:22.240 --> 00:08:23.840 +actually very + +00:08:23.840 --> 00:08:26.960 +like highly specific to a language or at + +00:08:26.960 --> 00:08:28.720 +least to class of + +00:08:28.720 --> 00:08:33.599 +class of languages so + +00:08:33.599 --> 00:08:37.839 +so so maybe it's not like uh one single + +00:08:37.839 --> 00:08:40.719 +approach for all the languages but maybe + +00:08:40.719 --> 00:08:41.519 +uh + +00:08:41.519 --> 00:08:43.760 +one for object-oriented oriented + +00:08:43.760 --> 00:08:44.959 +languages + +00:08:44.959 --> 00:08:50.160 +one for lisp like language for example + +00:08:50.160 --> 00:09:02.959 +maybe one for javascript and typestream + +00:09:02.959 --> 00:09:05.360 +next question is uh I'm completely new + +00:09:05.360 --> 00:09:07.519 +to trisita how do I use it + +00:09:07.519 --> 00:09:10.160 +as an end user is there any easy example + +00:09:10.160 --> 00:09:11.519 +config out there + +00:09:11.519 --> 00:09:14.000 +the organizer otherwise that shows + +00:09:14.000 --> 00:09:15.440 +standard usage + +00:09:15.440 --> 00:09:18.960 +with whatever programming language + +00:09:18.960 --> 00:09:20.480 +[Music] + +00:09:20.480 --> 00:09:27.600 +yeah there's no um + +00:09:27.600 --> 00:09:30.880 +uh actually that uh so the project has + +00:09:30.880 --> 00:09:32.000 +the documentation + +00:09:32.000 --> 00:09:36.399 +site but it's not very expensive yet + +00:09:36.399 --> 00:09:40.720 +I think we need to add more examples + +00:09:40.720 --> 00:09:48.720 +to the documentation + +00:09:48.720 --> 00:09:51.200 +can language major mode authors start + +00:09:51.200 --> 00:09:53.519 +taking advantage of this now + +00:09:53.519 --> 00:09:56.240 +or is it intended to be used as a minor + +00:09:56.240 --> 00:09:57.279 +mode + +00:09:57.279 --> 00:10:00.399 +uh actually it's both so it's intended + +00:10:00.399 --> 00:10:01.600 +to be used + +00:10:01.600 --> 00:10:04.480 +as a minor mode but it's also intended + +00:10:04.480 --> 00:10:05.920 +to + +00:10:05.920 --> 00:10:09.839 +be depended on by the major mode + +00:10:09.839 --> 00:10:13.519 +so basically it it wants to be a minor + +00:10:13.519 --> 00:10:13.920 +mode + +00:10:13.920 --> 00:10:17.200 +that is dependent on by the other + +00:10:17.200 --> 00:10:21.839 +major modes + +00:10:21.839 --> 00:10:25.680 +and by it here I mean the the base + +00:10:25.680 --> 00:10:30.839 +minor mode tree system mode + +00:10:30.839 --> 00:10:34.079 +so uh question + +00:10:34.079 --> 00:10:37.120 +11 is it possible to use this + +00:10:37.120 --> 00:10:40.160 +for refactoring tool + +00:10:40.160 --> 00:10:43.360 +uh yeah but + +00:10:43.360 --> 00:10:46.720 +um like for the kind of refactoring + +00:10:46.720 --> 00:10:47.680 +inside uh + +00:10:47.680 --> 00:10:52.640 +buffer it is uh + +00:10:52.640 --> 00:10:55.040 +it's very doable right now but you need + +00:10:55.040 --> 00:10:57.040 +to write some glue code + +00:10:57.040 --> 00:11:01.120 +but for for the kind of more + +00:11:01.120 --> 00:11:04.000 +extensive refactoring where you want to + +00:11:04.000 --> 00:11:04.399 +touch + +00:11:04.399 --> 00:11:09.279 +uh like all files in a project + +00:11:09.279 --> 00:11:11.440 +there needs there needs to be some kind + +00:11:11.440 --> 00:11:12.839 +of the project + +00:11:12.839 --> 00:11:15.920 +and another project and uh + +00:11:15.920 --> 00:11:18.399 +understanding of the language uh model + +00:11:18.399 --> 00:11:19.200 +system + +00:11:19.200 --> 00:11:21.120 +like how they are laid out in the file + +00:11:21.120 --> 00:11:22.560 +system as well + +00:11:22.560 --> 00:11:24.480 +and with that understanding that there + +00:11:24.480 --> 00:11:26.240 +should be passing of + +00:11:26.240 --> 00:11:29.920 +the files even files on the file system + +00:11:29.920 --> 00:11:30.480 +that + +00:11:30.480 --> 00:11:34.000 +are not yet loaded into Emacs + +00:11:34.000 --> 00:11:37.760 +so that sounds like something more + +00:11:37.760 --> 00:11:41.040 +a lot more + +00:11:41.040 --> 00:11:46.320 +a lot more extensive + +00:11:46.320 --> 00:11:49.519 +and it probably probably sounds like + +00:11:49.519 --> 00:11:50.000 +something + +00:11:50.000 --> 00:11:52.160 +something like an id in uh inside your + +00:11:52.160 --> 00:11:54.560 +max already like a replacement for + +00:11:54.560 --> 00:12:07.360 +for lsp + +00:12:07.360 --> 00:12:10.480 +so next question is the that pop-up mx + +00:12:10.480 --> 00:12:11.440 +window + +00:12:11.440 --> 00:12:15.200 +how do you get that + +00:12:15.200 --> 00:12:18.720 +is the custom hem code I wrote a long + +00:12:18.720 --> 00:12:20.320 +time ago + +00:12:20.320 --> 00:12:24.800 +but but right now the best way to + +00:12:24.800 --> 00:12:26.480 +to have something like that is probably + +00:12:26.480 --> 00:12:29.440 +the what is written here like uh + +00:12:29.440 --> 00:12:33.200 +ham boss frame or iv spring + +00:12:33.200 --> 00:12:39.839 +is a lot easier now + +00:12:39.839 --> 00:12:43.680 +is there a folding mode for tree sitter + +00:12:43.680 --> 00:12:46.320 +nowadays there's no folding mode for + +00:12:46.320 --> 00:12:48.079 +three sitters yet + +00:12:48.079 --> 00:12:52.000 +but uh + +00:12:52.000 --> 00:12:54.880 +uh but I think it would better be better + +00:12:54.880 --> 00:12:59.440 +if it's integrated with the + +00:12:59.440 --> 00:13:02.079 +like current currently there are + +00:13:02.079 --> 00:13:03.120 +multiple + +00:13:03.120 --> 00:13:04.880 +I'm not sure they're moving forward + +00:13:04.880 --> 00:13:07.200 +there are like code folding frameworks + +00:13:07.200 --> 00:13:10.240 +inside imax already or some the + +00:13:10.240 --> 00:13:12.800 +code showing packages like third party + +00:13:12.800 --> 00:13:13.920 +packaging + +00:13:13.920 --> 00:13:15.680 +and I think it's better to integrate + +00:13:15.680 --> 00:13:17.680 +with these mods + +00:13:17.680 --> 00:13:20.000 +rather than writing something new + +00:13:20.000 --> 00:13:32.399 +entirely + +00:13:32.399 --> 00:13:34.800 +are there any language major modes that + +00:13:34.800 --> 00:13:36.639 +have integrated already + +00:13:36.639 --> 00:13:40.079 +uh not yet + +00:13:40.079 --> 00:13:42.800 +so the there was a proposed web assembly + +00:13:42.800 --> 00:13:43.440 +mode + +00:13:43.440 --> 00:13:46.839 +but it's a new major mode in terms of + +00:13:46.839 --> 00:13:50.000 +existing major mode there is the + +00:13:50.000 --> 00:13:53.279 +typescript mode + +00:13:53.279 --> 00:13:55.600 +but they're only discussing about + +00:13:55.600 --> 00:13:57.519 +integration + +00:13:57.519 --> 00:14:02.079 +they're not integrated yet + +00:14:02.079 --> 00:14:04.639 +I think I can try writing the + +00:14:04.639 --> 00:14:05.360 +integration + +00:14:05.360 --> 00:14:09.199 +sometimes next month + +00:14:09.199 --> 00:14:11.839 +uh basically what they want right now is + +00:14:11.839 --> 00:14:12.720 +the + +00:14:12.720 --> 00:14:16.160 +syntax highlighting and handling + +00:14:16.160 --> 00:14:19.199 +synthetic highlighting and + +00:14:19.199 --> 00:14:22.959 +code indentation for tsx + +00:14:22.959 --> 00:14:27.760 +which is the embedded react + +00:14:27.760 --> 00:14:32.160 +syntax inside typescript + +00:14:32.160 --> 00:14:36.399 +so it turns out passing these tests + +00:14:36.399 --> 00:14:40.639 +is very troublesome so + +00:14:40.639 --> 00:14:43.920 +so trees that would be a crystal would + +00:14:43.920 --> 00:14:49.920 +be a lot of help there + +00:14:49.920 --> 00:14:53.279 +is there any link to the slides yes + +00:14:53.279 --> 00:14:59.920 +I'll post it in irc later + +00:14:59.920 --> 00:15:01.920 +regarding imax integration we will + +00:15:01.920 --> 00:15:04.240 +always need to be a foreign library or + +00:15:04.240 --> 00:15:05.440 +can it be included + +00:15:05.440 --> 00:15:10.839 +linked directly in compilation + +00:15:10.839 --> 00:15:14.480 +uh if if this is about the + +00:15:14.480 --> 00:15:17.600 +core library itself + +00:15:17.600 --> 00:15:21.839 +then I think it's uh answered it in the + +00:15:21.839 --> 00:15:23.440 +first question + +00:15:23.440 --> 00:15:27.440 +right now is a right now it's a + +00:15:27.440 --> 00:15:29.920 +dynamic model but in the long run it + +00:15:29.920 --> 00:15:30.959 +will better if + +00:15:30.959 --> 00:15:34.000 +it's included in core Emacs + +00:15:34.000 --> 00:15:39.839 +for the language definitions themselves + +00:15:39.839 --> 00:15:41.360 +it should be better if they are + +00:15:41.360 --> 00:15:43.279 +distributed uh + +00:15:43.279 --> 00:15:46.639 +separately like that right now so each + +00:15:46.639 --> 00:15:49.199 +uh for each language there will be a + +00:15:49.199 --> 00:15:49.680 +shared + +00:15:49.680 --> 00:15:52.639 +library that will be loaded by the core + +00:15:52.639 --> 00:16:00.480 +library at runtime + +00:16:00.480 --> 00:16:02.480 +so the last question is the python mode + +00:16:02.480 --> 00:16:04.240 +example is pretty good + +00:16:04.240 --> 00:16:06.160 +is that something that one can use + +00:16:06.160 --> 00:16:07.600 +already + +00:16:07.600 --> 00:16:12.320 +yes I'm using it at work right now + +00:16:12.320 --> 00:16:14.639 +I think that's all for that's all the + +00:16:14.639 --> 00:16:19.199 +questions right + +00:16:19.199 --> 00:16:23.440 +you are now unmuted yeah I think that's + +00:16:23.440 --> 00:16:27.839 +all the questions on the pads so far um + +00:16:27.839 --> 00:16:30.399 +so thank you but um there may be more + +00:16:30.399 --> 00:16:32.399 +questions coming on irc + +00:16:32.399 --> 00:16:36.639 +um I'll try to have a look + +00:16:36.639 --> 00:16:39.680 +and we still have about 10 or 15 more + +00:16:39.680 --> 00:16:40.560 +minutes so + +00:16:40.560 --> 00:16:43.600 +um there's no rush to wrap up in case um + +00:16:43.600 --> 00:16:48.160 +anyone has any more questions + +00:16:48.160 --> 00:16:50.880 +uh yeah I just realized that uh I mixed + +00:16:50.880 --> 00:16:51.360 +up the + +00:16:51.360 --> 00:16:54.959 +video editing and I uh lost an entire + +00:16:54.959 --> 00:16:56.000 +session on the + +00:16:56.000 --> 00:17:01.120 +introduction to treesita oh + +00:17:01.120 --> 00:17:06.640 +no worries + +00:17:06.640 --> 00:17:18.079 +you are now muted + +00:17:18.079 --> 00:17:20.079 +sounds like a perfect opportunity for + +00:17:20.079 --> 00:17:21.679 +you to redo the introduction if you'd + +00:17:21.679 --> 00:17:24.640 +like to + +00:17:24.640 --> 00:17:30.799 +uh actually uh forgot a lot of that + +00:17:30.799 --> 00:17:33.760 +and I'm with uh tired now so no I don't + +00:17:33.760 --> 00:17:35.760 +think I can do it + +00:17:35.760 --> 00:17:39.200 +it's uh 30 minutes until my bedtime + +00:17:39.200 --> 00:17:43.520 +oh yeah yeah okay you are now unmuted + +00:17:43.520 --> 00:17:46.640 +so in that case maybe we should + +00:17:46.640 --> 00:17:50.480 +um we should let tona + +00:17:50.480 --> 00:17:54.240 +get started going to bed and um and + +00:17:54.240 --> 00:17:56.960 +I mean then I will figure out what to do + +00:17:56.960 --> 00:17:57.840 +with the time + +00:17:57.840 --> 00:17:59.360 +should we start the next talk early + +00:17:59.360 --> 00:18:02.160 +since it's pre-recorded + +00:18:02.160 --> 00:18:05.360 +um yeah we can do we can do that um + +00:18:05.360 --> 00:18:07.919 +but um yeah tonight it you know right + +00:18:07.919 --> 00:18:09.919 +now it's pretty late there um no worries + +00:18:09.919 --> 00:18:10.480 +but + +00:18:10.480 --> 00:18:12.720 +yeah if you know over the next few days + +00:18:12.720 --> 00:18:13.520 +or weeks + +00:18:13.520 --> 00:18:16.559 +if you would like to um you know + +00:18:16.559 --> 00:18:20.240 +do a quick pre-recording or recording + +00:18:20.240 --> 00:18:22.080 +to add the introduction and then stitch + +00:18:22.080 --> 00:18:24.320 +it in with what you had already sent me + +00:18:24.320 --> 00:18:26.559 +um by all means please do that and I + +00:18:26.559 --> 00:18:30.160 +will upload the edited version + +00:18:30.160 --> 00:18:34.880 +uh yeah yeah I'll try to do that + +00:18:34.880 --> 00:18:39.760 +thank you yep thank you so much bye diff --git a/2020/subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--tuan-anh-nguyen-autogen.vtt b/2020/subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--tuan-anh-nguyen-autogen.vtt new file mode 100644 index 00000000..99133c78 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--tuan-anh-nguyen-autogen.vtt @@ -0,0 +1,1522 @@ +WEBVTT + +00:00:01.520 --> 00:00:04.400 +hello everyone my name is toniang + +00:00:04.400 --> 00:00:07.200 +I've been using amax for about 10 years + +00:00:07.200 --> 00:00:09.280 +today I'm going to talk about 360 + +00:00:09.280 --> 00:00:11.519 +a new imax package that allows ems to + +00:00:11.519 --> 00:00:13.759 +pass multiple programming languages + +00:00:13.759 --> 00:00:17.840 +in real time + +00:00:17.840 --> 00:00:21.840 +so what is the problem statement + +00:00:21.840 --> 00:00:23.359 +in order to support programming + +00:00:23.359 --> 00:00:24.960 +functionalities for a particular + +00:00:24.960 --> 00:00:25.760 +language + +00:00:25.760 --> 00:00:27.680 +a text editor needs to have some degree + +00:00:27.680 --> 00:00:29.679 +of language understanding + +00:00:29.679 --> 00:00:31.840 +traditionally text editors have relied + +00:00:31.840 --> 00:00:33.840 +very heavily on regular expressions for + +00:00:33.840 --> 00:00:34.960 +this + +00:00:34.960 --> 00:00:38.320 +e-max is no different most language + +00:00:38.320 --> 00:00:39.280 +major modes use + +00:00:39.280 --> 00:00:40.879 +regular expressions for syntax + +00:00:40.879 --> 00:00:42.960 +highlighting code navigation + +00:00:42.960 --> 00:00:46.239 +folding indexing and so on regular + +00:00:46.239 --> 00:00:47.440 +expressions are + +00:00:47.440 --> 00:00:50.559 +problematic for a couple of reasons + +00:00:50.559 --> 00:00:53.600 +they're slow and inaccurate they also + +00:00:53.600 --> 00:00:54.000 +make + +00:00:54.000 --> 00:00:56.800 +the code hard to read and write + +00:00:56.800 --> 00:00:57.440 +sometimes + +00:00:57.440 --> 00:00:59.199 +it's because the regular expressions + +00:00:59.199 --> 00:01:01.199 +themselves are very hairy + +00:01:01.199 --> 00:01:04.000 +and sometimes because they are just not + +00:01:04.000 --> 00:01:05.199 +powerful enough + +00:01:05.199 --> 00:01:07.840 +some helper code is usually needed to + +00:01:07.840 --> 00:01:11.200 +pass more intricate language features + +00:01:11.200 --> 00:01:13.280 +that also illustrates the core problem + +00:01:13.280 --> 00:01:16.159 +with regular expressions + +00:01:16.159 --> 00:01:18.400 +in that they are not powerful enough to + +00:01:18.400 --> 00:01:21.119 +pass programming languages + +00:01:21.119 --> 00:01:22.640 +an example feature that regular + +00:01:22.640 --> 00:01:25.040 +expressions cannot handle very well + +00:01:25.040 --> 00:01:27.520 +is string interpolation which is a very + +00:01:27.520 --> 00:01:28.320 +common feature + +00:01:28.320 --> 00:01:31.680 +in many modern programming languages + +00:01:31.680 --> 00:01:34.079 +it would be much nicer if image somehow + +00:01:34.079 --> 00:01:35.840 +had structural understanding of source + +00:01:35.840 --> 00:01:36.479 +code + +00:01:36.479 --> 00:01:39.520 +like ides do + +00:01:39.520 --> 00:01:41.119 +there have been multiple efforts to + +00:01:41.119 --> 00:01:42.960 +bring this kind of programming language + +00:01:42.960 --> 00:01:45.280 +understanding into Emacs + +00:01:45.280 --> 00:01:47.119 +there are language specific persons + +00:01:47.119 --> 00:01:48.640 +written in elise + +00:01:48.640 --> 00:01:50.240 +they can be thought of as the next + +00:01:50.240 --> 00:01:52.320 +logical step of the glue code on top + +00:01:52.320 --> 00:01:54.960 +of tribal expressions moving from + +00:01:54.960 --> 00:01:56.000 +partial local + +00:01:56.000 --> 00:01:58.079 +pattern recognition into a full-fledged + +00:01:58.079 --> 00:01:59.840 +parser + +00:01:59.840 --> 00:02:01.439 +the most prominent example of this + +00:02:01.439 --> 00:02:03.040 +approach is probably the famous + +00:02:03.040 --> 00:02:06.479 +js2 mode + +00:02:06.479 --> 00:02:10.080 +however this approach has several issues + +00:02:10.080 --> 00:02:12.959 +parsing is computationally expensive and + +00:02:12.959 --> 00:02:13.680 +imagine + +00:02:13.680 --> 00:02:16.800 +is not good at that kind of stuff + +00:02:16.800 --> 00:02:18.400 +furthermore maintenance is very + +00:02:18.400 --> 00:02:20.840 +troublesome in order to work on these + +00:02:20.840 --> 00:02:22.160 +process + +00:02:22.160 --> 00:02:23.599 +first you have to know at least well + +00:02:23.599 --> 00:02:25.599 +enough and then you have to be + +00:02:25.599 --> 00:02:27.760 +comfortable with writing a + +00:02:27.760 --> 00:02:30.319 +recursive ascendant parser while + +00:02:30.319 --> 00:02:32.080 +constantly keeping up with changes to + +00:02:32.080 --> 00:02:34.000 +the language itself + +00:02:34.000 --> 00:02:36.879 +which can be evolving very quickly like + +00:02:36.879 --> 00:02:39.360 +javascript for example + +00:02:39.360 --> 00:02:41.599 +together these constraints significantly + +00:02:41.599 --> 00:02:45.680 +reduce the pull of potential maintenance + +00:02:45.680 --> 00:02:47.760 +the biggest issue though in my opinion + +00:02:47.760 --> 00:02:49.680 +is lack of the set of generic + +00:02:49.680 --> 00:02:52.879 +and reusable apis this makes them very + +00:02:52.879 --> 00:02:54.319 +hard to use + +00:02:54.319 --> 00:02:55.920 +for minor modes that want to deal with + +00:02:55.920 --> 00:02:57.920 +cross-cutting concerns across multiple + +00:02:57.920 --> 00:02:59.920 +languages + +00:02:59.920 --> 00:03:01.760 +the other approach which has been + +00:03:01.760 --> 00:03:03.599 +gaining a lot of momentum in recent + +00:03:03.599 --> 00:03:04.319 +years + +00:03:04.319 --> 00:03:06.560 +is externalizing language understanding + +00:03:06.560 --> 00:03:08.159 +to another process + +00:03:08.159 --> 00:03:12.239 +also known as language server protocol + +00:03:12.239 --> 00:03:14.480 +this second approach is actually a very + +00:03:14.480 --> 00:03:16.560 +interesting one + +00:03:16.560 --> 00:03:18.400 +my decoupling language understanding + +00:03:18.400 --> 00:03:21.280 +from the editing facility itself + +00:03:21.280 --> 00:03:23.760 +the usb servers can attract a lot more + +00:03:23.760 --> 00:03:25.120 +contributors + +00:03:25.120 --> 00:03:28.959 +which makes maintenance easier however + +00:03:28.959 --> 00:03:32.400 +they also have several issues available + +00:03:32.400 --> 00:03:34.720 +being a separate process they are + +00:03:34.720 --> 00:03:36.000 +usually more resource + +00:03:36.000 --> 00:03:39.920 +intensive and depending on the language + +00:03:39.920 --> 00:03:42.159 +the usb server itself can bring with it + +00:03:42.159 --> 00:03:44.640 +a host of additional dependencies + +00:03:44.640 --> 00:03:47.680 +external to Emacs which may message to + +00:03:47.680 --> 00:03:50.640 +install and manage + +00:03:50.640 --> 00:03:53.760 +furthermore json over rpc has pretty + +00:03:53.760 --> 00:03:55.120 +high latency + +00:03:55.120 --> 00:03:57.840 +for one-off tasks like jumping to source + +00:03:57.840 --> 00:04:00.879 +or on-demand completion is great + +00:04:00.879 --> 00:04:03.040 +but for things like code highlighting + +00:04:03.040 --> 00:04:06.000 +the latency is just too much + +00:04:06.000 --> 00:04:08.319 +I was using rust and I was following the + +00:04:08.319 --> 00:04:10.480 +community effort to improve its id + +00:04:10.480 --> 00:04:11.760 +support + +00:04:11.760 --> 00:04:13.680 +hoping to integrate some of that into + +00:04:13.680 --> 00:04:15.760 +Emacs itself + +00:04:15.760 --> 00:04:17.600 +then I heard someone from community + +00:04:17.600 --> 00:04:19.759 +mention tree sitter + +00:04:19.759 --> 00:04:23.360 +and I decided to check it out + +00:04:23.360 --> 00:04:25.520 +basically trisita is an incremental + +00:04:25.520 --> 00:04:28.720 +parsing library and a parser generator + +00:04:28.720 --> 00:04:31.000 +it was introduced by the item editor in + +00:04:31.000 --> 00:04:33.040 +2018 + +00:04:33.040 --> 00:04:35.680 +besides item is also being integrated + +00:04:35.680 --> 00:04:36.960 +into the neo-vim + +00:04:36.960 --> 00:04:41.040 +editor and github is using it to power + +00:04:41.040 --> 00:04:42.479 +their source code analysis and + +00:04:42.479 --> 00:04:45.840 +navigation features + +00:04:45.840 --> 00:04:48.639 +it is written in c and can be compiled + +00:04:48.639 --> 00:04:49.199 +for all + +00:04:49.199 --> 00:04:53.120 +major platforms it can even be compiled + +00:04:53.120 --> 00:04:56.080 +to web assembly to run on the web that's + +00:04:56.080 --> 00:04:57.600 +how github is using it + +00:04:57.600 --> 00:05:00.800 +on their website + +00:05:00.800 --> 00:05:02.960 +so why is trisita an interesting + +00:05:02.960 --> 00:05:05.840 +solution to this problem + +00:05:05.840 --> 00:05:07.360 +there are multiple features that make it + +00:05:07.360 --> 00:05:10.000 +an attractive option + +00:05:10.000 --> 00:05:12.400 +it is designed to be fast by being + +00:05:12.400 --> 00:05:13.680 +incremental + +00:05:13.680 --> 00:05:15.680 +the initial parts of a typical big fight + +00:05:15.680 --> 00:05:18.160 +can take tens of milliseconds + +00:05:18.160 --> 00:05:20.240 +while subsequent incremental processes + +00:05:20.240 --> 00:05:22.560 +are sub milliseconds + +00:05:22.560 --> 00:05:24.720 +it achieves this by using structural + +00:05:24.720 --> 00:05:26.240 +sharing + +00:05:26.240 --> 00:05:29.360 +meaning replacing only affected nodes + +00:05:29.360 --> 00:05:32.960 +in the old tree when it needs to + +00:05:32.960 --> 00:05:36.000 +also unlike lsp being in the same + +00:05:36.000 --> 00:05:37.120 +process + +00:05:37.120 --> 00:05:40.639 +it has much lower latency + +00:05:40.639 --> 00:05:42.880 +secondly it provides a uniform + +00:05:42.880 --> 00:05:44.960 +programming interface + +00:05:44.960 --> 00:05:47.039 +the same data structures and functions + +00:05:47.039 --> 00:05:48.720 +work on parse trees of different + +00:05:48.720 --> 00:05:50.400 +languages + +00:05:50.400 --> 00:05:52.160 +syntax knows of different languages + +00:05:52.160 --> 00:05:54.160 +differ only by their types + +00:05:54.160 --> 00:05:57.360 +and their possible child nodes this + +00:05:57.360 --> 00:05:58.960 +is a big advantage over language + +00:05:58.960 --> 00:06:02.240 +specific parcels + +00:06:02.240 --> 00:06:04.880 +thirdly it's written in self-contained + +00:06:04.880 --> 00:06:06.880 +embeddable c + +00:06:06.880 --> 00:06:09.680 +as I mentioned previously it can even be + +00:06:09.680 --> 00:06:10.400 +compiled + +00:06:10.400 --> 00:06:13.759 +to webassembly this makes integrating it + +00:06:13.759 --> 00:06:15.199 +into various editors + +00:06:15.199 --> 00:06:18.240 +quite easy without having to install + +00:06:18.240 --> 00:06:22.880 +any external dependencies + +00:06:22.880 --> 00:06:24.639 +one thing that is not mentioned here is + +00:06:24.639 --> 00:06:28.000 +that being a parcel generator + +00:06:28.000 --> 00:06:31.039 +scrummers are declarative + +00:06:31.039 --> 00:06:34.880 +together with being editor independent + +00:06:34.880 --> 00:06:36.720 +this makes the pool of potential + +00:06:36.720 --> 00:06:38.160 +contributors + +00:06:38.160 --> 00:06:42.400 +much larger so I was convinced + +00:06:42.400 --> 00:06:45.520 +that trisito is a good fit for Emacs + +00:06:45.520 --> 00:06:48.000 +last year I started writing the bindings + +00:06:48.000 --> 00:06:48.720 +using + +00:06:48.720 --> 00:06:50.960 +dynamic model support introduced in imax + +00:06:50.960 --> 00:06:53.280 +25. + +00:06:53.280 --> 00:06:55.360 +dynamic module means there is platform + +00:06:55.360 --> 00:06:58.479 +specific native code involved + +00:06:58.479 --> 00:07:00.560 +but since they are pre-compiled binaries + +00:07:00.560 --> 00:07:02.880 +for the three major platforms + +00:07:02.880 --> 00:07:06.319 +it should work in most places currently + +00:07:06.319 --> 00:07:08.319 +the core functionalities are in a pretty + +00:07:08.319 --> 00:07:09.440 +good shape + +00:07:09.440 --> 00:07:12.560 +syntax highlighting is working nicely + +00:07:12.560 --> 00:07:14.840 +the whole thing is split into three + +00:07:14.840 --> 00:07:16.080 +packages + +00:07:16.080 --> 00:07:17.759 +tree sitter is the main package that + +00:07:17.759 --> 00:07:20.319 +other packages should depend on + +00:07:20.319 --> 00:07:22.800 +tree system lens is the language bundle + +00:07:22.800 --> 00:07:24.000 +that includes support + +00:07:24.000 --> 00:07:27.199 +for most common languages + +00:07:27.199 --> 00:07:30.080 +and finally the core apis are in the + +00:07:30.080 --> 00:07:32.160 +package tsc + +00:07:32.160 --> 00:07:36.160 +which stands for trees the core + +00:07:36.160 --> 00:07:38.800 +it is the implicit dependency of the + +00:07:38.800 --> 00:07:43.520 +three-seater package + +00:07:43.520 --> 00:07:46.000 +the main package includes the miner mode + +00:07:46.000 --> 00:07:47.520 +3-seater mode + +00:07:47.520 --> 00:07:49.840 +this provides the base for other major + +00:07:49.840 --> 00:07:52.560 +or minor modes to build on + +00:07:52.560 --> 00:07:55.280 +using image change tracking hooks it + +00:07:55.280 --> 00:07:55.840 +enables + +00:07:55.840 --> 00:07:58.080 +incremental parsing and provides a + +00:07:58.080 --> 00:08:00.800 +syntax tree that is always up to date + +00:08:00.800 --> 00:08:04.080 +after any edits in a buffer + +00:08:04.080 --> 00:08:06.560 +there is also a basic debug mode that + +00:08:06.560 --> 00:08:10.080 +shows the parse tree in another buffer + +00:08:10.080 --> 00:08:13.360 +here is a quick demo + +00:08:13.360 --> 00:08:15.759 +here I mean an empty python buffer with + +00:08:15.759 --> 00:08:17.520 +three seater enabled + +00:08:17.520 --> 00:08:19.440 +I'm going to turn on the debug mode to + +00:08:19.440 --> 00:08:26.560 +see the parse tree + +00:08:26.560 --> 00:08:28.720 +since the buffer is empty there is only + +00:08:28.720 --> 00:08:30.639 +one node in the syntax tree the top + +00:08:30.639 --> 00:08:33.279 +level module node + +00:08:33.279 --> 00:09:11.040 +let's try typing some code + +00:09:11.040 --> 00:09:13.600 +as you can see as I type into the python + +00:09:13.600 --> 00:09:14.640 +buffer + +00:09:14.640 --> 00:09:19.120 +the syntax tree updates in real time + +00:09:19.120 --> 00:09:21.120 +the other minor mode included in the + +00:09:21.120 --> 00:09:23.279 +main package is 3-seater + +00:09:23.279 --> 00:09:26.640 +hl mode it overrides font-lock mode and + +00:09:26.640 --> 00:09:28.480 +provides its own set of phases + +00:09:28.480 --> 00:09:31.839 +and customization options it is query + +00:09:31.839 --> 00:09:32.800 +driven + +00:09:32.800 --> 00:09:35.200 +that means instead of regular + +00:09:35.200 --> 00:09:36.240 +expressions + +00:09:36.240 --> 00:09:38.720 +it uses a list like query language to + +00:09:38.720 --> 00:09:40.320 +map syntax notes + +00:09:40.320 --> 00:09:43.760 +to highlighting phrases I'm going to + +00:09:43.760 --> 00:09:45.760 +open a python file with small snippets + +00:09:45.760 --> 00:09:54.320 +that showcase syntax highlighting + +00:09:54.320 --> 00:09:55.920 +so this is the default highlighting + +00:09:55.920 --> 00:10:00.880 +provided by python mode + +00:10:00.880 --> 00:10:02.839 +this is the highlighting enabled by tree + +00:10:02.839 --> 00:10:04.640 +sitter + +00:10:04.640 --> 00:10:07.680 +as you can see string interpolation + +00:10:07.680 --> 00:10:11.680 +and decorators are highlighted correctly + +00:10:11.680 --> 00:10:17.440 +function calls are also highlighted + +00:10:17.440 --> 00:10:20.240 +you can also note that property + +00:10:20.240 --> 00:10:21.839 +assessors + +00:10:21.839 --> 00:10:24.640 +and property assignments are highlighted + +00:10:24.640 --> 00:10:27.440 +differently + +00:10:27.440 --> 00:10:29.360 +what I like the most about this is that + +00:10:29.360 --> 00:10:30.880 +new bindings are consistently + +00:10:30.880 --> 00:10:32.640 +highlighted + +00:10:32.640 --> 00:10:36.320 +this included local variable + +00:10:36.320 --> 00:10:39.760 +function parameters and property + +00:10:39.760 --> 00:10:45.760 +mutations + +00:10:45.760 --> 00:10:48.000 +before going through the three queries + +00:10:48.000 --> 00:10:49.279 +and the syntax highlighting + +00:10:49.279 --> 00:10:51.680 +customization options + +00:10:51.680 --> 00:10:53.760 +let's take a brief look at the core data + +00:10:53.760 --> 00:10:55.040 +structures and functions + +00:10:55.040 --> 00:10:58.079 +that tree sitter provides + +00:10:58.079 --> 00:10:59.839 +so parsing is done with the help of a + +00:10:59.839 --> 00:11:02.240 +generic parser object + +00:11:02.240 --> 00:11:04.160 +a single parser object can be used to + +00:11:04.160 --> 00:11:06.000 +pass different languages + +00:11:06.000 --> 00:11:08.320 +by sending different language objects to + +00:11:08.320 --> 00:11:09.279 +it + +00:11:09.279 --> 00:11:10.880 +the language objects themselves are + +00:11:10.880 --> 00:11:14.079 +loaded from shared libraries + +00:11:14.079 --> 00:11:16.079 +since three seater mode already handles + +00:11:16.079 --> 00:11:17.360 +the parsing part + +00:11:17.360 --> 00:11:19.440 +we will instead focus on the functions + +00:11:19.440 --> 00:11:20.800 +that inspect nodes + +00:11:20.800 --> 00:11:25.279 +and in the resulting path tree + +00:11:25.279 --> 00:11:27.200 +we can ask tree sitter what is the + +00:11:27.200 --> 00:11:44.240 +syntax node at point + +00:11:44.240 --> 00:11:47.200 +uh is it an opaque object so this is not + +00:11:47.200 --> 00:11:48.480 +very useful + +00:11:48.480 --> 00:12:03.760 +we can instead ask what is its type + +00:12:03.760 --> 00:12:06.560 +so his type is the symbol comparison + +00:12:06.560 --> 00:12:08.959 +operator + +00:12:08.959 --> 00:12:11.600 +trees there are two kinds of nodes + +00:12:11.600 --> 00:12:13.680 +anonymous nodes and named nodes + +00:12:13.680 --> 00:12:15.519 +anonymous nodes correspond to simple + +00:12:15.519 --> 00:12:17.040 +grammar elements + +00:12:17.040 --> 00:12:19.839 +like keywords operators punctuations and + +00:12:19.839 --> 00:12:21.279 +so on + +00:12:21.279 --> 00:12:24.160 +name nodes on the other hand grammar + +00:12:24.160 --> 00:12:25.920 +elements that are interesting enough for + +00:12:25.920 --> 00:12:26.639 +their own + +00:12:26.639 --> 00:12:30.320 +to have a name like an identifier an + +00:12:30.320 --> 00:12:31.839 +expression + +00:12:31.839 --> 00:12:35.440 +or a function definition + +00:12:35.440 --> 00:12:37.760 +name node types are symbols while + +00:12:37.760 --> 00:12:42.639 +anonymous node types are strings + +00:12:42.639 --> 00:12:46.320 +for example if we are on this + +00:12:46.320 --> 00:12:49.760 +comparison operator + +00:12:49.760 --> 00:12:55.920 +the node type should be a string + +00:12:55.920 --> 00:12:57.920 +we can also get other information about + +00:12:57.920 --> 00:12:58.959 +the node + +00:12:58.959 --> 00:13:09.680 +for example what is this text + +00:13:09.680 --> 00:13:20.800 +or where it is in the buffer + +00:13:20.800 --> 00:13:43.199 +or what is its parent + +00:13:43.199 --> 00:13:46.160 +there are many other apis to query or + +00:13:46.160 --> 00:13:46.839 +not + +00:13:46.839 --> 00:13:52.639 +properties + +00:13:52.639 --> 00:13:54.399 +tree sitter allows searching for + +00:13:54.399 --> 00:13:58.240 +structural patterns within a parse tree + +00:13:58.240 --> 00:14:01.440 +it does so through a list like language + +00:14:01.440 --> 00:14:03.519 +this language supports by the matching + +00:14:03.519 --> 00:14:04.639 +by node types + +00:14:04.639 --> 00:14:07.760 +field names and predicates + +00:14:07.760 --> 00:14:10.079 +it also allows capturing nodes for + +00:14:10.079 --> 00:14:12.639 +further processing + +00:14:12.639 --> 00:14:37.680 +let's try to see some examples + +00:14:37.680 --> 00:14:41.040 +so in this very simple query we just + +00:14:41.040 --> 00:14:43.839 +try to highlight all the identifiers in + +00:14:43.839 --> 00:14:49.040 +the buffer + +00:14:49.040 --> 00:14:51.920 +this s side tells trisito to capture a + +00:14:51.920 --> 00:14:53.120 +node + +00:14:53.120 --> 00:14:55.839 +in the context of the query builder it's + +00:14:55.839 --> 00:14:57.360 +not very important + +00:14:57.360 --> 00:15:00.320 +but in normal highlighting query this + +00:15:00.320 --> 00:15:01.760 +will determine + +00:15:01.760 --> 00:15:06.639 +the face used to highlight the note + +00:15:06.639 --> 00:15:08.800 +suppose we want to capture all the + +00:15:08.800 --> 00:15:10.320 +function names + +00:15:10.320 --> 00:15:13.519 +instead of just any identifier + +00:15:13.519 --> 00:15:29.440 +you can improve the query like this + +00:15:29.440 --> 00:15:31.600 +uh this will highlight the whole + +00:15:31.600 --> 00:15:32.639 +definition + +00:15:32.639 --> 00:15:35.519 +but we only want to capture the function + +00:15:35.519 --> 00:15:36.399 +name + +00:15:36.399 --> 00:15:39.600 +which means the identifier + +00:15:39.600 --> 00:15:42.800 +here so we + +00:15:42.800 --> 00:15:46.320 +move the capture to after the identifier + +00:15:46.320 --> 00:15:49.600 +node + +00:15:49.600 --> 00:15:51.759 +if we want to capture the class names as + +00:15:51.759 --> 00:15:52.959 +well + +00:15:52.959 --> 00:16:10.079 +we just add another pattern + +00:16:10.079 --> 00:16:20.320 +let's look at a more practical example + +00:16:20.320 --> 00:16:22.959 +here we can see that single quotes + +00:16:22.959 --> 00:16:23.759 +strings and + +00:16:23.759 --> 00:16:25.600 +double quotes screens are highlighted + +00:16:25.600 --> 00:16:27.279 +the same + +00:16:27.279 --> 00:16:30.399 +but in some places + +00:16:30.399 --> 00:16:33.440 +because of some coding conventions + +00:16:33.440 --> 00:16:35.440 +it may be desirable to highlight them + +00:16:35.440 --> 00:16:37.279 +differently for example if + +00:16:37.279 --> 00:16:39.680 +the string is single quoted we may want + +00:16:39.680 --> 00:16:40.880 +to highlight it + +00:16:40.880 --> 00:16:44.399 +as a constant + +00:16:44.399 --> 00:16:46.160 +let's try to see whether we can + +00:16:46.160 --> 00:16:47.600 +distinguish these + +00:16:47.600 --> 00:16:56.240 +two cases + +00:16:56.240 --> 00:17:00.639 +so here we get all the strings + +00:17:00.639 --> 00:17:04.079 +if we want to see if it's single quotes + +00:17:04.079 --> 00:17:04.559 +or + +00:17:04.559 --> 00:17:08.799 +double quote strings + +00:17:08.799 --> 00:17:11.039 +we can try looking at the first + +00:17:11.039 --> 00:17:12.480 +character + +00:17:12.480 --> 00:17:15.280 +of the string I mean the first character + +00:17:15.280 --> 00:17:16.720 +of the note + +00:17:16.720 --> 00:17:19.360 +to check whether it's a single quote or + +00:17:19.360 --> 00:17:33.600 +a double quote + +00:17:33.600 --> 00:17:36.080 +yeah so for that we use the three + +00:17:36.080 --> 00:17:36.799 +setters + +00:17:36.799 --> 00:17:40.160 +support for predicate in this case + +00:17:40.160 --> 00:17:43.360 +we use a match predicate + +00:17:43.360 --> 00:17:46.080 +to check whether the string where the + +00:17:46.080 --> 00:17:46.799 +note + +00:17:46.799 --> 00:17:50.320 +starts with a single quote and with this + +00:17:50.320 --> 00:17:51.280 +pattern + +00:17:51.280 --> 00:17:58.840 +we only capture the single quotes + +00:17:58.840 --> 00:18:00.400 +strings + +00:18:00.400 --> 00:18:03.760 +let's try to give it a different face + +00:18:03.760 --> 00:18:13.039 +so we copy the pattern + +00:18:13.039 --> 00:18:18.640 +and we add this pattern + +00:18:18.640 --> 00:18:25.120 +pop item only + +00:18:25.120 --> 00:18:28.400 +but we also want to give the + +00:18:28.400 --> 00:18:31.440 +capture a different name + +00:18:31.440 --> 00:18:40.840 +let's say we want to highlight it as a + +00:18:40.840 --> 00:18:46.559 +keyword + +00:18:46.559 --> 00:19:06.320 +and now if we refresh the buffer + +00:19:06.320 --> 00:19:08.799 +we see that single quote strings are + +00:19:08.799 --> 00:19:10.320 +highlighted as + +00:19:10.320 --> 00:19:14.400 +keywords + +00:19:14.400 --> 00:19:16.400 +the highlighting patterns can also be + +00:19:16.400 --> 00:19:19.200 +set for a single project + +00:19:19.200 --> 00:19:23.440 +using directory local variable + +00:19:23.440 --> 00:19:26.880 +for example let's take a look at + +00:19:26.880 --> 00:19:35.760 +ems source code + +00:19:35.760 --> 00:19:40.400 +so in image c source there are a lot of + +00:19:40.400 --> 00:19:43.760 +uses of these different macros + +00:19:43.760 --> 00:19:47.679 +to define functions + +00:19:47.679 --> 00:19:51.200 +and you can see + +00:19:51.200 --> 00:19:53.520 +this is actually the function name but + +00:19:53.520 --> 00:19:55.760 +it's highlighted as the + +00:19:55.760 --> 00:19:59.120 +string so what we want + +00:19:59.120 --> 00:20:03.679 +is to somehow recognize this pattern + +00:20:03.679 --> 00:20:07.600 +and highlight it + +00:20:07.600 --> 00:20:11.280 +as highlight this part + +00:20:11.280 --> 00:20:14.559 +with the function phase instead + +00:20:14.559 --> 00:20:17.679 +in order to do that + +00:20:17.679 --> 00:20:20.240 +we put a pattern in this project + +00:20:20.240 --> 00:20:21.760 +directory local + +00:20:21.760 --> 00:20:31.760 +settings file + +00:20:31.760 --> 00:20:34.799 +so we can put this button in the c + +00:20:34.799 --> 00:20:40.159 +mode section + +00:20:40.159 --> 00:20:48.000 +and now if we enable tree sitter + +00:20:48.000 --> 00:20:50.480 +you can see that this is the highlighted + +00:20:50.480 --> 00:20:53.200 +uh + +00:20:53.200 --> 00:20:55.520 +as a normal function definition so this + +00:20:55.520 --> 00:20:56.559 +is the function + +00:20:56.559 --> 00:21:01.200 +face like we wanted + +00:21:01.200 --> 00:21:03.760 +the pattern for this is actually pretty + +00:21:03.760 --> 00:21:07.200 +simple + +00:21:07.200 --> 00:21:10.720 +it's only + +00:21:10.720 --> 00:21:14.720 +only this part so + +00:21:14.720 --> 00:21:17.440 +if it's a function call where the name + +00:21:17.440 --> 00:21:19.679 +of the function is different + +00:21:19.679 --> 00:21:21.600 +then we highlight the different as a + +00:21:21.600 --> 00:21:24.240 +keyword + +00:21:24.240 --> 00:21:27.360 +and then the first string element we + +00:21:27.360 --> 00:21:28.159 +highlighted + +00:21:28.159 --> 00:21:35.360 +as a function name + +00:21:35.360 --> 00:21:37.679 +since the language objects are actually + +00:21:37.679 --> 00:21:39.280 +native code + +00:21:39.280 --> 00:21:40.799 +they have to be compiled for each + +00:21:40.799 --> 00:21:43.440 +platform that we want to support + +00:21:43.440 --> 00:21:45.600 +this will become a big obstacle for + +00:21:45.600 --> 00:21:48.159 +3-seater adoption + +00:21:48.159 --> 00:21:50.240 +therefore I've created a language window + +00:21:50.240 --> 00:21:52.960 +package 3-seater length + +00:21:52.960 --> 00:21:54.960 +that takes care of pre-compiling the + +00:21:54.960 --> 00:21:56.320 +grammars the + +00:21:56.320 --> 00:21:59.679 +most common grammars for all three major + +00:21:59.679 --> 00:22:01.600 +platforms + +00:22:01.600 --> 00:22:04.080 +it also takes care of distributing these + +00:22:04.080 --> 00:22:05.360 +binaries + +00:22:05.360 --> 00:22:08.080 +and provides some highlighting queries + +00:22:08.080 --> 00:22:11.440 +for some of the languages + +00:22:11.440 --> 00:22:13.760 +it should be noted that this package + +00:22:13.760 --> 00:22:15.919 +should be treated as a temporary + +00:22:15.919 --> 00:22:19.919 +distribution mechanism only + +00:22:19.919 --> 00:22:22.240 +to help with bootstrapping three-seaters + +00:22:22.240 --> 00:22:24.720 +adoption + +00:22:24.720 --> 00:22:27.760 +the plan is that eventually these files + +00:22:27.760 --> 00:22:29.760 +should be provided by the language major + +00:22:29.760 --> 00:22:32.480 +modes themselves + +00:22:32.480 --> 00:22:35.120 +but in order to do that we need better + +00:22:35.120 --> 00:22:36.320 +tooling + +00:22:36.320 --> 00:22:40.240 +so we're not there yet + +00:22:40.240 --> 00:22:42.559 +since the call already works reasonably + +00:22:42.559 --> 00:22:43.280 +well + +00:22:43.280 --> 00:22:44.640 +there are several areas that would + +00:22:44.640 --> 00:22:46.320 +benefit from the community's + +00:22:46.320 --> 00:22:49.120 +contribution + +00:22:49.120 --> 00:22:51.520 +so three seaters upstream language + +00:22:51.520 --> 00:22:52.640 +prepositories + +00:22:52.640 --> 00:22:54.400 +already contain highlighting queries on + +00:22:54.400 --> 00:22:55.679 +their own + +00:22:55.679 --> 00:22:58.480 +however they are pretty basic and they + +00:22:58.480 --> 00:23:00.480 +may not fit well with existing emax + +00:23:00.480 --> 00:23:02.559 +conventions + +00:23:02.559 --> 00:23:04.320 +therefore the language bundle has its + +00:23:04.320 --> 00:23:07.120 +own set of highlighting queries + +00:23:07.120 --> 00:23:10.559 +this requires maintenance until language + +00:23:10.559 --> 00:23:11.600 +measurements adopt + +00:23:11.600 --> 00:23:13.760 +three sitter and maintain the queries on + +00:23:13.760 --> 00:23:16.640 +their own + +00:23:16.640 --> 00:23:18.480 +the queries are actually quite easy to + +00:23:18.480 --> 00:23:22.000 +write as you've already seen + +00:23:22.000 --> 00:23:24.240 +you just need to be familiar with the + +00:23:24.240 --> 00:23:25.360 +language + +00:23:25.360 --> 00:23:30.000 +familiar enough to come up with sensible + +00:23:30.000 --> 00:23:35.200 +highlighting patterns + +00:23:35.200 --> 00:23:37.600 +and if you are a maintainer of a + +00:23:37.600 --> 00:23:39.679 +language major mode + +00:23:39.679 --> 00:23:42.320 +you may want to consider integrating + +00:23:42.320 --> 00:23:43.360 +tree sitter into + +00:23:43.360 --> 00:23:46.960 +your mode initially maybe as an + +00:23:46.960 --> 00:23:50.080 +optional feature the integration is + +00:23:50.080 --> 00:23:53.279 +actually pretty straightforward + +00:23:53.279 --> 00:23:56.640 +especially for syntax highlighting + +00:23:56.640 --> 00:24:01.520 +or alternatively + +00:24:01.520 --> 00:24:03.760 +you can also try writing a new major + +00:24:03.760 --> 00:24:04.640 +mode + +00:24:04.640 --> 00:24:08.000 +from scratch that relies on tree sitter + +00:24:08.000 --> 00:24:12.559 +from the very beginning + +00:24:12.559 --> 00:24:16.320 +the code for such a major mode is + +00:24:16.320 --> 00:24:19.679 +quite simple for example + +00:24:19.679 --> 00:24:23.200 +this is the proposed + +00:24:23.200 --> 00:24:26.240 +what mode for web assembly + +00:24:26.240 --> 00:24:31.039 +the code is just + +00:24:31.039 --> 00:24:34.559 +like one page of code not + +00:24:34.559 --> 00:24:39.520 +not a lot + +00:24:39.520 --> 00:24:42.720 +you can also try writing new minor modes + +00:24:42.720 --> 00:24:46.559 +or writing integration packages + +00:24:46.559 --> 00:24:50.080 +for example a lot of package a lot of + +00:24:50.080 --> 00:24:50.880 +packages + +00:24:50.880 --> 00:24:54.559 +may benefit from tree sitter integration + +00:24:54.559 --> 00:24:58.840 +but no one has written the integration + +00:24:58.840 --> 00:25:02.960 +yet + +00:25:02.960 --> 00:25:05.039 +if you are interested in 3-seater you + +00:25:05.039 --> 00:25:06.720 +can use these links to + +00:25:06.720 --> 00:25:10.320 +learn more about it I think that's it + +00:25:10.320 --> 00:25:11.440 +for me today + +00:25:11.440 --> 00:25:18.159 +I'm happy to answer any questions diff --git a/2020/subtitles/emacsconf-2020--25-traverse-complex-json-structures-with-live-feedback-counsel-jq--zen-monk-alain-m-lafon-autogen.vtt b/2020/subtitles/emacsconf-2020--25-traverse-complex-json-structures-with-live-feedback-counsel-jq--zen-monk-alain-m-lafon-autogen.vtt new file mode 100644 index 00000000..e7eada5b --- /dev/null +++ b/2020/subtitles/emacsconf-2020--25-traverse-complex-json-structures-with-live-feedback-counsel-jq--zen-monk-alain-m-lafon-autogen.vtt @@ -0,0 +1,757 @@ +WEBVTT + +00:00:00.799 --> 00:00:04.000 +hello everyone and welcome to this short + +00:00:04.000 --> 00:00:05.520 +lightning talk + +00:00:05.520 --> 00:00:08.160 +traverse complex json structures with + +00:00:08.160 --> 00:00:09.519 +live feedback + +00:00:09.519 --> 00:00:13.040 +this is a pre-recorded talk and part of + +00:00:13.040 --> 00:00:18.000 +the e-max conf 2020 schedule + +00:00:18.000 --> 00:00:19.920 +this is what we're going to do I'll make + +00:00:19.920 --> 00:00:21.840 +a quick introduction to the topic at + +00:00:21.840 --> 00:00:22.320 +hand + +00:00:22.320 --> 00:00:23.920 +I'll give you a demonstration of some + +00:00:23.920 --> 00:00:25.760 +tools and then we'll leave you + +00:00:25.760 --> 00:00:29.199 +with the links to set tools + +00:00:29.199 --> 00:00:31.920 +before that just a little bit about me I + +00:00:31.920 --> 00:00:32.399 +am the + +00:00:32.399 --> 00:00:36.079 +ceo and co-founder of a company + +00:00:36.079 --> 00:00:39.520 +based in the swiss mountains called 200 + +00:00:39.520 --> 00:00:40.399 +okay + +00:00:40.399 --> 00:00:43.600 +we are a product incubator and + +00:00:43.600 --> 00:00:46.160 +service consultancy but we like to spend + +00:00:46.160 --> 00:00:47.200 +most or at least + +00:00:47.200 --> 00:00:50.719 +as much time as we can building free + +00:00:50.719 --> 00:00:52.719 +software + +00:00:52.719 --> 00:00:55.520 +I'm also an ordained zen monk and abbott + +00:00:55.520 --> 00:00:56.879 +of the lambda zen temple + +00:00:56.879 --> 00:01:00.160 +you can reach me anytime on questions + +00:01:00.160 --> 00:01:01.359 +regarding Emacs + +00:01:01.359 --> 00:01:05.860 +for example at ala at 200ok.ch + +00:01:05.860 --> 00:01:07.200 +[Music] + +00:01:07.200 --> 00:01:09.600 +but back to the topic at hand the + +00:01:09.600 --> 00:01:11.760 +proposition is as following + +00:01:11.760 --> 00:01:13.680 +most work on the computer is based on + +00:01:13.680 --> 00:01:15.520 +either text processing or text + +00:01:15.520 --> 00:01:16.479 +consumption + +00:01:16.479 --> 00:01:19.920 +and very often the text which you need + +00:01:19.920 --> 00:01:20.880 +to process + +00:01:20.880 --> 00:01:23.520 +is in a structured format for example in + +00:01:23.520 --> 00:01:24.560 +json + +00:01:24.560 --> 00:01:26.640 +that might even be if your job is not + +00:01:26.640 --> 00:01:28.560 +programming per se + +00:01:28.560 --> 00:01:30.400 +and reading through such a bigger chunk + +00:01:30.400 --> 00:01:33.119 +of json can be non-trivial however + +00:01:33.119 --> 00:01:36.479 +while just reading and understanding it + +00:01:36.479 --> 00:01:39.119 +will be essential to getting your job + +00:01:39.119 --> 00:01:40.320 +done + +00:01:40.320 --> 00:01:43.680 +so let's quickly check out an example + +00:01:43.680 --> 00:01:47.200 +json file this is from the github api + +00:01:47.200 --> 00:01:50.560 +where which is a request sorry the + +00:01:50.560 --> 00:01:53.119 +response to a request for a specific + +00:01:53.119 --> 00:01:55.280 +issue on the github api so let's + +00:01:55.280 --> 00:01:58.799 +quickly check that one out + +00:01:58.799 --> 00:02:01.280 +okay so here it is open and we can + +00:02:01.280 --> 00:02:03.280 +already see that there is lots of stuff + +00:02:03.280 --> 00:02:05.439 +going on here + +00:02:05.439 --> 00:02:08.319 +it's uh 200 lines it's not going to be + +00:02:08.319 --> 00:02:10.319 +very easy just just to find out what are + +00:02:10.319 --> 00:02:12.160 +the top level things in here what are + +00:02:12.160 --> 00:02:13.920 +the top level attributes of course I can + +00:02:13.920 --> 00:02:14.560 +do this + +00:02:14.560 --> 00:02:16.480 +and maybe it would by hand but that + +00:02:16.480 --> 00:02:17.840 +doesn't scale + +00:02:17.840 --> 00:02:20.560 +I can use cool Emacs facilities like the + +00:02:20.560 --> 00:02:22.560 +height show mode and try to + +00:02:22.560 --> 00:02:24.720 +fold all the things that are top level + +00:02:24.720 --> 00:02:27.200 +but that also doesn't really scale + +00:02:27.200 --> 00:02:29.760 +there must be a better way and of course + +00:02:29.760 --> 00:02:32.000 +there is there is prior art + +00:02:32.000 --> 00:02:34.959 +there is a tool called jq I'm going to + +00:02:34.959 --> 00:02:36.080 +quote the usp + +00:02:36.080 --> 00:02:39.120 +from their website jq is like + +00:02:39.120 --> 00:02:42.959 +sed said for json data you can use it to + +00:02:42.959 --> 00:02:44.720 +slice and filter and map + +00:02:44.720 --> 00:02:46.720 +and transform structured data with the + +00:02:46.720 --> 00:02:47.840 +same ease that + +00:02:47.840 --> 00:02:51.519 +z awk grep and friends let you play with + +00:02:51.519 --> 00:02:54.000 +text + +00:02:54.000 --> 00:02:56.160 +let me give you a quick demonstration of + +00:02:56.160 --> 00:02:57.519 +it by the way + +00:02:57.519 --> 00:02:59.680 +it's written in portable c it has zero + +00:02:59.680 --> 00:03:01.920 +runtime dependency so it's very easy + +00:03:01.920 --> 00:03:04.959 +to get started with it and use it on + +00:03:04.959 --> 00:03:09.040 +pretty much any unix-based + +00:03:09.040 --> 00:03:12.800 +computer sorry no linux based computer + +00:03:12.800 --> 00:03:16.159 +apologies okay so let's explore a + +00:03:16.159 --> 00:03:19.599 +json file with it it's a command line + +00:03:19.599 --> 00:03:21.120 +tool and it has a very + +00:03:21.120 --> 00:03:24.640 +simple command line syntax so you + +00:03:24.640 --> 00:03:26.799 +call the binary and then you give it a + +00:03:26.799 --> 00:03:27.840 +query + +00:03:27.840 --> 00:03:31.680 +and a file and then we'll return + +00:03:31.680 --> 00:03:33.840 +its answer so for example if I want the + +00:03:33.840 --> 00:03:35.440 +top level keys + +00:03:35.440 --> 00:03:38.319 +I will just say jq keys the file and it + +00:03:38.319 --> 00:03:39.840 +will return the keys + +00:03:39.840 --> 00:03:42.319 +simple as that so let's check this out + +00:03:42.319 --> 00:03:43.519 +in a real + +00:03:43.519 --> 00:03:46.879 +shell here I am in eshel + +00:03:46.879 --> 00:03:50.080 +let's run jq keys on the github + +00:03:50.080 --> 00:03:53.200 +issue comment and we can see + +00:03:53.200 --> 00:03:56.959 +that we have actually received a list + +00:03:56.959 --> 00:04:00.000 +back here with the top level + +00:04:00.000 --> 00:04:02.000 +things okay so this issue it looks very + +00:04:02.000 --> 00:04:04.319 +very interesting so let's uh ask it to + +00:04:04.319 --> 00:04:06.239 +give me more information on this + +00:04:06.239 --> 00:04:10.080 +issue then it's hairy again that's a lot + +00:04:10.080 --> 00:04:11.360 +of stuff + +00:04:11.360 --> 00:04:14.319 +I mean lucky for for us we are in Emacs + +00:04:14.319 --> 00:04:17.759 +here so we can use nice shortcuts we can + +00:04:17.759 --> 00:04:21.040 +copy this we go can go in here just + +00:04:21.040 --> 00:04:22.000 +select that + +00:04:22.000 --> 00:04:24.400 +get that out or something like this but + +00:04:24.400 --> 00:04:25.600 +still + +00:04:25.600 --> 00:04:28.320 +this is not really it's not really the + +00:04:28.320 --> 00:04:29.600 +best way + +00:04:29.600 --> 00:04:34.080 +to do that right it gets kind of tedious + +00:04:34.080 --> 00:04:36.639 +at this point the output can be + +00:04:36.639 --> 00:04:37.680 +humongous + +00:04:37.680 --> 00:04:39.360 +the shell is not really the best place + +00:04:39.360 --> 00:04:42.479 +to read through such big output I mean e + +00:04:42.479 --> 00:04:43.600 +shell is + +00:04:43.600 --> 00:04:45.440 +probably one of the better shells for + +00:04:45.440 --> 00:04:47.440 +this because it's just a regular Emacs + +00:04:47.440 --> 00:04:48.560 +buffer but still + +00:04:48.560 --> 00:04:51.199 +it's not really the best tool and I need + +00:04:51.199 --> 00:04:52.720 +to repeat the command + +00:04:52.720 --> 00:04:55.280 +all the time until I finally build the + +00:04:55.280 --> 00:04:56.000 +right query + +00:04:56.000 --> 00:04:59.120 +and all the time I use I lose my + +00:04:59.120 --> 00:05:02.080 +focus I lose what I'm currently looking + +00:05:02.080 --> 00:05:02.800 +at + +00:05:02.800 --> 00:05:06.080 +I'm seeing the new result it would be so + +00:05:06.080 --> 00:05:08.160 +much nicer to have live feedback + +00:05:08.160 --> 00:05:10.080 +and when working with Emacs we're quite + +00:05:10.080 --> 00:05:11.600 +used to that so there should be an + +00:05:11.600 --> 00:05:12.320 +option + +00:05:12.320 --> 00:05:15.120 +and of course there is it's Emacs right + +00:05:15.120 --> 00:05:17.759 +so you can do anything + +00:05:17.759 --> 00:05:20.880 +there is various good tools for + +00:05:20.880 --> 00:05:22.960 +completion in Emacs + +00:05:22.960 --> 00:05:26.000 +I used ivy for this + +00:05:26.000 --> 00:05:29.039 +I'm going to code the usp for ivy + +00:05:29.039 --> 00:05:31.840 +iv is a generic completion mechanism for + +00:05:31.840 --> 00:05:32.639 +Emacs + +00:05:32.639 --> 00:05:34.639 +while it operates similarly to other + +00:05:34.639 --> 00:05:35.919 +completion schemes + +00:05:35.919 --> 00:05:38.960 +such as icomplete mode iv aims to be + +00:05:38.960 --> 00:05:40.400 +more efficient smaller + +00:05:40.400 --> 00:05:43.120 +simpler and smoother to use yet highly + +00:05:43.120 --> 00:05:45.199 +customizable + +00:05:45.199 --> 00:05:47.840 +and that's true one of the cool things + +00:05:47.840 --> 00:05:49.440 +of iv + +00:05:49.440 --> 00:05:52.479 +compared to other completion mechanisms + +00:05:52.479 --> 00:05:54.320 +in Emacs + +00:05:54.320 --> 00:05:58.160 +is that it can be used on dynamic + +00:05:58.160 --> 00:06:01.600 +data so usually completion works on a + +00:06:01.600 --> 00:06:03.520 +static input for example you're in a + +00:06:03.520 --> 00:06:05.360 +buffer a text buffer + +00:06:05.360 --> 00:06:08.800 +and you use I search maybe with idle + +00:06:08.800 --> 00:06:09.600 +mode + +00:06:09.600 --> 00:06:12.400 +and you find your results that's all + +00:06:12.400 --> 00:06:13.360 +nice + +00:06:13.360 --> 00:06:16.960 +however if I + +00:06:16.960 --> 00:06:19.840 +want to search on dynamic data that + +00:06:19.840 --> 00:06:20.720 +doesn't work + +00:06:20.720 --> 00:06:23.759 +so whenever I type in my query + +00:06:23.759 --> 00:06:27.039 +for jq I actually need to call the jq + +00:06:27.039 --> 00:06:28.000 +binary + +00:06:28.000 --> 00:06:30.160 +and it will give a different result set + +00:06:30.160 --> 00:06:32.840 +back so it's a really + +00:06:32.840 --> 00:06:36.319 +dynamic mechanism that we need here it's + +00:06:36.319 --> 00:06:38.240 +much more like a search engine + +00:06:38.240 --> 00:06:41.440 +and ivy luckily has something built in + +00:06:41.440 --> 00:06:42.560 +and it's called + +00:06:42.560 --> 00:06:46.000 +console so I used council and jq + +00:06:46.000 --> 00:06:48.160 +and combined them and build a new + +00:06:48.160 --> 00:06:49.199 +package + +00:06:49.199 --> 00:06:52.960 +with which we can use Emacs and jq + +00:06:52.960 --> 00:06:56.000 +to have live feedback + +00:06:56.000 --> 00:06:58.800 +it's very easy to use so you just call + +00:06:58.800 --> 00:06:59.840 +console.jq + +00:06:59.840 --> 00:07:02.800 +on a buffer containing json for example + +00:07:02.800 --> 00:07:04.319 +the one we have here + +00:07:04.319 --> 00:07:07.280 +let's call console.jq on it and we + +00:07:07.280 --> 00:07:08.319 +already + +00:07:08.319 --> 00:07:11.280 +get a default query the dot query which + +00:07:11.280 --> 00:07:13.039 +just gives us + +00:07:13.039 --> 00:07:16.080 +the same file but now we can change it + +00:07:16.080 --> 00:07:17.280 +and for example + +00:07:17.280 --> 00:07:19.039 +find all the keys in here and then we + +00:07:19.039 --> 00:07:21.039 +see I had this issue this was the one + +00:07:21.039 --> 00:07:22.800 +that we were interested in + +00:07:22.800 --> 00:07:24.639 +so let's find more information on the + +00:07:24.639 --> 00:07:26.479 +issue what + +00:07:26.479 --> 00:07:28.800 +keys does it have actually have uh it + +00:07:28.800 --> 00:07:31.680 +has assignees that that interests me + +00:07:31.680 --> 00:07:34.800 +so let's check out the assignees in here + +00:07:34.800 --> 00:07:37.039 +there's two of them but I'm only + +00:07:37.039 --> 00:07:39.759 +interested in the first one + +00:07:39.759 --> 00:07:42.000 +I'm making stuff up as I go here of + +00:07:42.000 --> 00:07:43.599 +course + +00:07:43.599 --> 00:07:46.000 +and whenever I hit enter I get a new + +00:07:46.000 --> 00:07:47.039 +buffer + +00:07:47.039 --> 00:07:50.160 +which just shows me this + +00:07:50.160 --> 00:07:53.520 +particular result for the particular + +00:07:53.520 --> 00:07:55.599 +query that I entered + +00:07:55.599 --> 00:07:59.199 +so let me do that again we are in here + +00:07:59.199 --> 00:08:03.199 +we are looking at a + +00:08:03.199 --> 00:08:05.840 +json file this can be very very big + +00:08:05.840 --> 00:08:07.520 +doesn't also need to be a file just + +00:08:07.520 --> 00:08:09.520 +needs to be a buffer + +00:08:09.520 --> 00:08:12.160 +you call console.jq on it and you can do + +00:08:12.160 --> 00:08:13.599 +any kind of + +00:08:13.599 --> 00:08:16.479 +query on it for example let's see if + +00:08:16.479 --> 00:08:18.080 +there is a url here + +00:08:18.080 --> 00:08:20.319 +yes there's a url let's see if there's a + +00:08:20.319 --> 00:08:23.759 +repository here repository + +00:08:23.759 --> 00:08:26.879 +no there isn't what was it called issue + +00:08:26.879 --> 00:08:33.440 +keys repository url it was called okay + +00:08:33.440 --> 00:08:36.640 +so let's see issue pause + +00:08:36.640 --> 00:08:40.240 +url and then we see so + +00:08:40.240 --> 00:08:42.959 +apparently this issue command is for a + +00:08:42.959 --> 00:08:44.159 +repository called + +00:08:44.159 --> 00:08:47.839 +organize I wonder what that might be + +00:08:47.839 --> 00:08:50.320 +okay so that was a very short + +00:08:50.320 --> 00:08:52.640 +introduction to console jq + +00:08:52.640 --> 00:08:54.800 +you can see the timer here I only have + +00:08:54.800 --> 00:08:56.800 +one minute left to go so I'm going to + +00:08:56.800 --> 00:08:57.440 +leave + +00:08:57.440 --> 00:08:59.760 +with a very very short introduction to + +00:08:59.760 --> 00:09:01.519 +the console gq + +00:09:01.519 --> 00:09:05.040 +code it's not even 60 lines + +00:09:05.040 --> 00:09:07.519 +of e-lisp so building something like + +00:09:07.519 --> 00:09:09.600 +this is very very easy + +00:09:09.600 --> 00:09:12.800 +I would encourage you to go and read + +00:09:12.800 --> 00:09:14.560 +through the code in your own time + +00:09:14.560 --> 00:09:16.160 +if you're interested in building + +00:09:16.160 --> 00:09:18.320 +something like this if you're interested + +00:09:18.320 --> 00:09:19.600 +in just using + +00:09:19.600 --> 00:09:22.720 +jq or you're done + +00:09:22.720 --> 00:09:24.320 +these are the links to all the tools + +00:09:24.320 --> 00:09:25.839 +console.jq of course + +00:09:25.839 --> 00:09:28.800 +is readily available on melpah also + +00:09:28.800 --> 00:09:29.519 +developed + +00:09:29.519 --> 00:09:32.959 +under the agpl license on github + +00:09:32.959 --> 00:09:36.080 +and disorganized thing by the way it's + +00:09:36.080 --> 00:09:37.839 +orig mode for mobile and desktop + +00:09:37.839 --> 00:09:39.839 +browsers also a great + +00:09:39.839 --> 00:09:42.399 +free software tool maybe that interests + +00:09:42.399 --> 00:09:43.120 +you + +00:09:43.120 --> 00:09:46.240 +thank you for listening have great time + +00:09:46.240 --> 00:09:48.800 +10 seconds left I am going to stop this + +00:09:48.800 --> 00:09:49.360 +now + +00:09:49.360 --> 00:09:53.920 +enjoy EmacsConf have a great day diff --git a/2020/subtitles/emacsconf-2020--26-emacs-as-a-highschooler-how-it-changed-my-life--pierce-wang-autogen.vtt b/2020/subtitles/emacsconf-2020--26-emacs-as-a-highschooler-how-it-changed-my-life--pierce-wang-autogen.vtt new file mode 100644 index 00000000..e0ddcb76 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--26-emacs-as-a-highschooler-how-it-changed-my-life--pierce-wang-autogen.vtt @@ -0,0 +1,769 @@ +WEBVTT + +00:00:01.360 --> 00:00:03.040 +hello and welcome to my + +00:00:03.040 --> 00:00:05.520 +Emacs conference lightning talk today + +00:00:05.520 --> 00:00:07.120 +I'll be talking about + +00:00:07.120 --> 00:00:09.840 +my journey into Emacs as a high schooler + +00:00:09.840 --> 00:00:14.400 +and how it has changed my life + +00:00:14.400 --> 00:00:17.359 +right so who am I I am a senior at + +00:00:17.359 --> 00:00:19.520 +stanford online high school + +00:00:19.520 --> 00:00:22.800 +and I am also a violinist + +00:00:22.800 --> 00:00:24.320 +I started violin when I was two and a + +00:00:24.320 --> 00:00:26.960 +half and I have been + +00:00:26.960 --> 00:00:29.119 +keeping it up ever since violin is a + +00:00:29.119 --> 00:00:30.240 +huge part of my life + +00:00:30.240 --> 00:00:33.360 +and I am very much a musician at heart + +00:00:33.360 --> 00:00:36.239 +I am also a somewhat capable programmer + +00:00:36.239 --> 00:00:37.840 +I've done a lot of informal programming + +00:00:37.840 --> 00:00:39.280 +in the past + +00:00:39.280 --> 00:00:42.559 +and this year I'm taking my first ap + +00:00:42.559 --> 00:00:44.079 +compsci course + +00:00:44.079 --> 00:00:47.440 +in my high school and so + +00:00:47.440 --> 00:00:51.039 +I've done a lot of side projects + +00:00:51.039 --> 00:00:54.239 +mainly in python and some very short + +00:00:54.239 --> 00:00:56.800 +scripts in e-lisp + +00:00:56.800 --> 00:00:59.840 +and last but not least I am a tinker + +00:00:59.840 --> 00:01:02.879 +I love to play around with things and + +00:01:02.879 --> 00:01:06.720 +see what I can do better and just + +00:01:06.720 --> 00:01:10.880 +have as much fun as possible + +00:01:10.880 --> 00:01:15.040 +so how did I find Emacs + +00:01:15.040 --> 00:01:17.600 +I discovered it actually through a talk + +00:01:17.600 --> 00:01:18.880 +funnily enough + +00:01:18.880 --> 00:01:21.360 +at a vim conference given by aaron + +00:01:21.360 --> 00:01:23.520 +bieber + +00:01:23.520 --> 00:01:25.840 +titled evil mode or how I learned to + +00:01:25.840 --> 00:01:28.320 +stop worrying and love Emacs + +00:01:28.320 --> 00:01:31.439 +I watched that talk a couple times over + +00:01:31.439 --> 00:01:33.360 +just marveling at all the wonderful + +00:01:33.360 --> 00:01:35.759 +things that he could do in Emacs + +00:01:35.759 --> 00:01:38.799 +and being a previous vim user myself + +00:01:38.799 --> 00:01:41.680 +I found it very enticing to be able to + +00:01:41.680 --> 00:01:42.399 +have + +00:01:42.399 --> 00:01:44.960 +the evil mode package and very quickly + +00:01:44.960 --> 00:01:47.040 +switch to Emacs + +00:01:47.040 --> 00:01:48.799 +at the time I was also in my sophomore + +00:01:48.799 --> 00:01:51.040 +year and so + +00:01:51.040 --> 00:01:54.640 +I had had sort of a note-taking system + +00:01:54.640 --> 00:01:56.320 +in the past + +00:01:56.320 --> 00:01:59.360 +but it was not good um and I needed a + +00:01:59.360 --> 00:02:01.680 +more organized note-taking system + +00:02:01.680 --> 00:02:03.759 +my parents had suggested paper for a + +00:02:03.759 --> 00:02:04.960 +while and + +00:02:04.960 --> 00:02:08.160 +there was the whole organization + +00:02:08.160 --> 00:02:10.959 +part of that but that did not really + +00:02:10.959 --> 00:02:12.080 +work out for me + +00:02:12.080 --> 00:02:14.000 +and so I was trying to find this better + +00:02:14.000 --> 00:02:16.239 +note-taking system + +00:02:16.239 --> 00:02:19.440 +and it was very hard + +00:02:19.440 --> 00:02:22.239 +I had two main criteria which I did not + +00:02:22.239 --> 00:02:23.520 +define at the time + +00:02:23.520 --> 00:02:25.360 +but I realized was really what I was + +00:02:25.360 --> 00:02:26.640 +looking for + +00:02:26.640 --> 00:02:28.720 +first of all it had to be flexible + +00:02:28.720 --> 00:02:30.959 +enough and second of all it had + +00:02:30.959 --> 00:02:33.920 +I had to have control over the data and + +00:02:33.920 --> 00:02:34.959 +so + +00:02:34.959 --> 00:02:37.519 +through this process I actually went + +00:02:37.519 --> 00:02:39.680 +through a bunch of note-taking softwares + +00:02:39.680 --> 00:02:42.640 +rather systematically I went through + +00:02:42.640 --> 00:02:44.080 +google docs + +00:02:44.080 --> 00:02:47.519 +which very much did not work out + +00:02:47.519 --> 00:02:49.840 +I also went through evernote which also + +00:02:49.840 --> 00:02:50.640 +was not + +00:02:50.640 --> 00:02:53.200 +great for me and one note which I + +00:02:53.200 --> 00:02:55.200 +settled on for a little while + +00:02:55.200 --> 00:02:58.800 +but it did not meet these criteria + +00:02:58.800 --> 00:03:01.519 +particularly the second one I had taken + +00:03:01.519 --> 00:03:02.159 +some notes + +00:03:02.159 --> 00:03:05.280 +and I wanted to export it and onenote + +00:03:05.280 --> 00:03:07.519 +did not let me do that + +00:03:07.519 --> 00:03:12.000 +it was pdf horribly organized pdf + +00:03:12.000 --> 00:03:14.879 +and that's when I knew I needed some + +00:03:14.879 --> 00:03:17.440 +change + +00:03:17.440 --> 00:03:21.519 +so I discovered Emacs through this talk + +00:03:21.519 --> 00:03:24.080 +and through the wonderful features of + +00:03:24.080 --> 00:03:27.040 +org mode + +00:03:27.040 --> 00:03:30.080 +this is my first journal entry in Emacs + +00:03:30.080 --> 00:03:34.000 +I had been playing with it for one day + +00:03:34.000 --> 00:03:36.159 +and I was on the org agenda and I + +00:03:36.159 --> 00:03:38.159 +happened to press I + +00:03:38.159 --> 00:03:40.720 +which for the Emacs combined is the + +00:03:40.720 --> 00:03:41.599 +default for + +00:03:41.599 --> 00:03:45.440 +diary entry and so I was very excited + +00:03:45.440 --> 00:03:48.720 +um and I shouldn't stay on the slide too + +00:03:48.720 --> 00:03:50.239 +long unless you read it + +00:03:50.239 --> 00:03:53.760 +um so let's move on to the next one + +00:03:53.760 --> 00:03:57.200 +um so the learning curve for me I think + +00:03:57.200 --> 00:04:00.480 +particularly being an xbm user + +00:04:00.480 --> 00:04:03.760 +evil mode made it very easy to switch + +00:04:03.760 --> 00:04:06.080 +thankfully I there was the emax + +00:04:06.080 --> 00:04:07.439 +reference sheet + +00:04:07.439 --> 00:04:10.799 +and having evil mode to + +00:04:10.799 --> 00:04:14.080 +switch between um + +00:04:14.080 --> 00:04:17.440 +texts and whether it be editing a text + +00:04:17.440 --> 00:04:17.919 +file + +00:04:17.919 --> 00:04:20.560 +or going to other parts of just Emacs in + +00:04:20.560 --> 00:04:21.600 +general + +00:04:21.600 --> 00:04:24.800 +I think vim really helped with making me + +00:04:24.800 --> 00:04:26.840 +feel comfortable within this new + +00:04:26.840 --> 00:04:28.000 +environment + +00:04:28.000 --> 00:04:31.440 +and so having that experience I also + +00:04:31.440 --> 00:04:31.919 +wasn't + +00:04:31.919 --> 00:04:34.240 +new to the keybind-based world I have + +00:04:34.240 --> 00:04:36.320 +been very comfortable with computer + +00:04:36.320 --> 00:04:40.160 +and the keyboard for most of my life + +00:04:40.160 --> 00:04:43.520 +and so it was not a totally new + +00:04:43.520 --> 00:04:45.520 +environment for me + +00:04:45.520 --> 00:04:47.440 +I also spent a lot of time looking at + +00:04:47.440 --> 00:04:49.360 +the Emacs reference sheet + +00:04:49.360 --> 00:04:53.040 +just thinking about trying to find + +00:04:53.040 --> 00:04:55.040 +all of the different functions if I + +00:04:55.040 --> 00:04:56.639 +didn't know what something was + +00:04:56.639 --> 00:04:59.680 +then I queried it in Emacs and then I + +00:04:59.680 --> 00:05:01.199 +figured out what it was + +00:05:01.199 --> 00:05:03.759 +and that was one of the best ways for me + +00:05:03.759 --> 00:05:05.600 +to discover + +00:05:05.600 --> 00:05:09.360 +all of the capabilities of Emacs + +00:05:09.360 --> 00:05:11.440 +thirdly of course the self-documenting + +00:05:11.440 --> 00:05:12.800 +feature + +00:05:12.800 --> 00:05:15.199 +or nature of Emacs and narrowing + +00:05:15.199 --> 00:05:17.120 +frameworks such as helm + +00:05:17.120 --> 00:05:20.479 +really helped find things especially for + +00:05:20.479 --> 00:05:21.360 +mx + +00:05:21.360 --> 00:05:25.919 +for a while I was just + +00:05:25.919 --> 00:05:28.160 +I would go about my day and if I pressed + +00:05:28.160 --> 00:05:29.520 +to keep mine that I didn't know what it + +00:05:29.520 --> 00:05:30.720 +did + +00:05:30.720 --> 00:05:34.560 +I would do the losses and + +00:05:34.560 --> 00:05:36.240 +see the list of key binds that I had + +00:05:36.240 --> 00:05:37.600 +pressed and + +00:05:37.600 --> 00:05:40.400 +tried to find that one and query the + +00:05:40.400 --> 00:05:41.280 +function + +00:05:41.280 --> 00:05:45.280 +and what not so + +00:05:45.280 --> 00:05:49.120 +yeah and now we jump to now so + +00:05:49.120 --> 00:05:51.759 +there there is at least one moment in + +00:05:51.759 --> 00:05:53.280 +each day when I think + +00:05:53.280 --> 00:05:55.600 +how would I live without umax + +00:05:55.600 --> 00:05:57.680 +particularly now during my senior year + +00:05:57.680 --> 00:05:59.120 +in high school + +00:05:59.120 --> 00:06:02.720 +things are very busy with school violin + +00:06:02.720 --> 00:06:05.520 +and other side projects it's pretty + +00:06:05.520 --> 00:06:06.400 +crazy + +00:06:06.400 --> 00:06:09.680 +and so Emacs + +00:06:09.680 --> 00:06:12.720 +and org mode has really helped me stay + +00:06:12.720 --> 00:06:14.479 +on track with everything + +00:06:14.479 --> 00:06:16.960 +and the flexibility of these software is + +00:06:16.960 --> 00:06:18.840 +being able to have things in different + +00:06:18.840 --> 00:06:21.600 +files notes within the tasks + +00:06:21.600 --> 00:06:24.639 +all of that stuff has been truly a + +00:06:24.639 --> 00:06:25.840 +lifesaver + +00:06:25.840 --> 00:06:28.400 +and so I think I can confidently say + +00:06:28.400 --> 00:06:31.199 +that I have found Emacs to be + +00:06:31.199 --> 00:06:35.280 +the perfect software for me + +00:06:35.280 --> 00:06:38.639 +over the past two years of using Emacs + +00:06:38.639 --> 00:06:42.240 +now it is about two years and two months + +00:06:42.240 --> 00:06:45.039 +I have built a fairly well organized + +00:06:45.039 --> 00:06:46.160 +2000 + +00:06:46.160 --> 00:06:49.520 +plus line org literate config + +00:06:49.520 --> 00:06:52.160 +and so I actually I started with an + +00:06:52.160 --> 00:06:53.840 +e-lisp config + +00:06:53.840 --> 00:06:56.800 +just the vanilla e-max with evil mode + +00:06:56.800 --> 00:06:57.919 +and I built it up + +00:06:57.919 --> 00:07:00.319 +from there eventually I switched to org + +00:07:00.319 --> 00:07:02.400 +literate configs + +00:07:02.400 --> 00:07:05.840 +and used that to organize the snippets + +00:07:05.840 --> 00:07:10.080 +that I was putting in there and so + +00:07:10.080 --> 00:07:14.000 +yeah this is really my workflow now + +00:07:14.000 --> 00:07:16.639 +currently about 90 of everything I do on + +00:07:16.639 --> 00:07:18.960 +my computer is in Emacs + +00:07:18.960 --> 00:07:21.520 +the most notable things of course the + +00:07:21.520 --> 00:07:22.319 +list is far + +00:07:22.319 --> 00:07:26.000 +too long to put on one slide but I do a + +00:07:26.000 --> 00:07:28.160 +lot of my programming in Emacs + +00:07:28.160 --> 00:07:31.280 +mainly python and e-lisp + +00:07:31.280 --> 00:07:33.759 +because of my ap comp sci class I have + +00:07:33.759 --> 00:07:35.199 +to do java as well + +00:07:35.199 --> 00:07:38.720 +and thank goodness Emacs has wonderful + +00:07:38.720 --> 00:07:41.840 +support for that as well + +00:07:41.840 --> 00:07:45.840 +also I do all of my school assignments + +00:07:45.840 --> 00:07:48.800 +more or less in Emacs essay writing I do + +00:07:48.800 --> 00:07:50.400 +an org mode and I have some template + +00:07:50.400 --> 00:07:51.919 +files + +00:07:51.919 --> 00:07:53.919 +template org files which I just include + +00:07:53.919 --> 00:07:55.039 +at the top + +00:07:55.039 --> 00:07:58.160 +and then I can export easily to latex + +00:07:58.160 --> 00:08:01.440 +and a beautiful pdf + +00:08:01.440 --> 00:08:04.400 +math physics same thing latex fragments + +00:08:04.400 --> 00:08:05.840 +are a lifesaver + +00:08:05.840 --> 00:08:09.599 +and also really pretty + +00:08:09.599 --> 00:08:13.199 +and I take notes on basically everything + +00:08:13.199 --> 00:08:15.520 +at first I had things separate and then + +00:08:15.520 --> 00:08:16.319 +I started + +00:08:16.319 --> 00:08:19.360 +sort of putting it all into onenotes.org + +00:08:19.360 --> 00:08:21.360 +file or most of it into one + +00:08:21.360 --> 00:08:24.000 +file and that has actually worked out + +00:08:24.000 --> 00:08:24.960 +surprisingly well + +00:08:24.960 --> 00:08:26.479 +especially with all the searching + +00:08:26.479 --> 00:08:28.879 +features of agenda + +00:08:28.879 --> 00:08:33.440 +and whatnot um and I also use mail + +00:08:33.440 --> 00:08:35.680 +I recently made the switch probably + +00:08:35.680 --> 00:08:37.680 +about one or two months ago + +00:08:37.680 --> 00:08:40.479 +and it has been one of the best switches + +00:08:40.479 --> 00:08:40.959 +I've + +00:08:40.959 --> 00:08:44.480 +I've ever had especially given + +00:08:44.480 --> 00:08:46.320 +connecting to tasks all of this + +00:08:46.320 --> 00:08:47.839 +wonderful stuff + +00:08:47.839 --> 00:08:50.640 +just putting even more in Emacs is + +00:08:50.640 --> 00:08:54.160 +always a good thing I found + +00:08:54.160 --> 00:08:57.680 +so reflecting back on my journey I think + +00:08:57.680 --> 00:08:59.760 +one of the most important things was + +00:08:59.760 --> 00:09:01.440 +just having a reason to use it + +00:09:01.440 --> 00:09:04.480 +when I came to Emacs I had something + +00:09:04.480 --> 00:09:06.080 +that I was looking for + +00:09:06.080 --> 00:09:09.600 +and as soon as I found it I delved right + +00:09:09.600 --> 00:09:09.839 +in + +00:09:09.839 --> 00:09:12.720 +and I I started using it for that thing + +00:09:12.720 --> 00:09:14.480 +and so I was sort of forced to + +00:09:14.480 --> 00:09:16.959 +take the time to read the docs and + +00:09:16.959 --> 00:09:19.279 +figure out what functions I needed + +00:09:19.279 --> 00:09:22.399 +to function and how + +00:09:22.399 --> 00:09:25.839 +I was going to put my workflow + +00:09:25.839 --> 00:09:30.399 +and also of course the desire to tinker + +00:09:30.399 --> 00:09:33.519 +and yeah so really what's next for me + +00:09:33.519 --> 00:09:36.800 +is just wanting to become a more active + +00:09:36.800 --> 00:09:38.640 +member of the Emacs community + +00:09:38.640 --> 00:09:40.640 +I want to give back and I think this + +00:09:40.640 --> 00:09:43.760 +talk is sort of the first step to that + +00:09:43.760 --> 00:09:45.920 +being a more active part of this + +00:09:45.920 --> 00:09:48.000 +community that has + +00:09:48.000 --> 00:09:51.040 +indirectly perhaps um but just like + +00:09:51.040 --> 00:09:54.000 +really helped me become a better and + +00:09:54.000 --> 00:09:55.839 +more organized human being + +00:09:55.839 --> 00:09:58.880 +um I have some package ideas that I'm + +00:09:58.880 --> 00:10:01.920 +slowly working on and yeah I just hope + +00:10:01.920 --> 00:10:05.920 +to spread the word + +00:10:05.920 --> 00:10:08.000 +so thank you very much for listening to + +00:10:08.000 --> 00:10:09.360 +my lightning talk + +00:10:09.360 --> 00:10:11.360 +if you'd like to contact me here are + +00:10:11.360 --> 00:10:12.480 +three modes of + +00:10:12.480 --> 00:10:15.279 +or two modes of communication I will be + +00:10:15.279 --> 00:10:17.120 +on irc more + +00:10:17.120 --> 00:10:20.079 +soon and you can always email me if you + +00:10:20.079 --> 00:10:20.560 +have + +00:10:20.560 --> 00:10:23.200 +any questions you can also search me on + +00:10:23.200 --> 00:10:23.680 +youtube + +00:10:23.680 --> 00:10:26.399 +pierce wong violin thank you very much + +00:10:26.399 --> 00:10:26.800 +and + +00:10:26.800 --> 00:10:30.040 +I hope you enjoy the rest of the + +00:10:30.040 --> 00:10:33.040 +conference diff --git a/2020/subtitles/emacsconf-2020--26-emacs-as-a-highschooler-how-it-changed-my-life--questions--pierce-wang-autogen.vtt b/2020/subtitles/emacsconf-2020--26-emacs-as-a-highschooler-how-it-changed-my-life--questions--pierce-wang-autogen.vtt new file mode 100644 index 00000000..e0ddcb76 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--26-emacs-as-a-highschooler-how-it-changed-my-life--questions--pierce-wang-autogen.vtt @@ -0,0 +1,769 @@ +WEBVTT + +00:00:01.360 --> 00:00:03.040 +hello and welcome to my + +00:00:03.040 --> 00:00:05.520 +Emacs conference lightning talk today + +00:00:05.520 --> 00:00:07.120 +I'll be talking about + +00:00:07.120 --> 00:00:09.840 +my journey into Emacs as a high schooler + +00:00:09.840 --> 00:00:14.400 +and how it has changed my life + +00:00:14.400 --> 00:00:17.359 +right so who am I I am a senior at + +00:00:17.359 --> 00:00:19.520 +stanford online high school + +00:00:19.520 --> 00:00:22.800 +and I am also a violinist + +00:00:22.800 --> 00:00:24.320 +I started violin when I was two and a + +00:00:24.320 --> 00:00:26.960 +half and I have been + +00:00:26.960 --> 00:00:29.119 +keeping it up ever since violin is a + +00:00:29.119 --> 00:00:30.240 +huge part of my life + +00:00:30.240 --> 00:00:33.360 +and I am very much a musician at heart + +00:00:33.360 --> 00:00:36.239 +I am also a somewhat capable programmer + +00:00:36.239 --> 00:00:37.840 +I've done a lot of informal programming + +00:00:37.840 --> 00:00:39.280 +in the past + +00:00:39.280 --> 00:00:42.559 +and this year I'm taking my first ap + +00:00:42.559 --> 00:00:44.079 +compsci course + +00:00:44.079 --> 00:00:47.440 +in my high school and so + +00:00:47.440 --> 00:00:51.039 +I've done a lot of side projects + +00:00:51.039 --> 00:00:54.239 +mainly in python and some very short + +00:00:54.239 --> 00:00:56.800 +scripts in e-lisp + +00:00:56.800 --> 00:00:59.840 +and last but not least I am a tinker + +00:00:59.840 --> 00:01:02.879 +I love to play around with things and + +00:01:02.879 --> 00:01:06.720 +see what I can do better and just + +00:01:06.720 --> 00:01:10.880 +have as much fun as possible + +00:01:10.880 --> 00:01:15.040 +so how did I find Emacs + +00:01:15.040 --> 00:01:17.600 +I discovered it actually through a talk + +00:01:17.600 --> 00:01:18.880 +funnily enough + +00:01:18.880 --> 00:01:21.360 +at a vim conference given by aaron + +00:01:21.360 --> 00:01:23.520 +bieber + +00:01:23.520 --> 00:01:25.840 +titled evil mode or how I learned to + +00:01:25.840 --> 00:01:28.320 +stop worrying and love Emacs + +00:01:28.320 --> 00:01:31.439 +I watched that talk a couple times over + +00:01:31.439 --> 00:01:33.360 +just marveling at all the wonderful + +00:01:33.360 --> 00:01:35.759 +things that he could do in Emacs + +00:01:35.759 --> 00:01:38.799 +and being a previous vim user myself + +00:01:38.799 --> 00:01:41.680 +I found it very enticing to be able to + +00:01:41.680 --> 00:01:42.399 +have + +00:01:42.399 --> 00:01:44.960 +the evil mode package and very quickly + +00:01:44.960 --> 00:01:47.040 +switch to Emacs + +00:01:47.040 --> 00:01:48.799 +at the time I was also in my sophomore + +00:01:48.799 --> 00:01:51.040 +year and so + +00:01:51.040 --> 00:01:54.640 +I had had sort of a note-taking system + +00:01:54.640 --> 00:01:56.320 +in the past + +00:01:56.320 --> 00:01:59.360 +but it was not good um and I needed a + +00:01:59.360 --> 00:02:01.680 +more organized note-taking system + +00:02:01.680 --> 00:02:03.759 +my parents had suggested paper for a + +00:02:03.759 --> 00:02:04.960 +while and + +00:02:04.960 --> 00:02:08.160 +there was the whole organization + +00:02:08.160 --> 00:02:10.959 +part of that but that did not really + +00:02:10.959 --> 00:02:12.080 +work out for me + +00:02:12.080 --> 00:02:14.000 +and so I was trying to find this better + +00:02:14.000 --> 00:02:16.239 +note-taking system + +00:02:16.239 --> 00:02:19.440 +and it was very hard + +00:02:19.440 --> 00:02:22.239 +I had two main criteria which I did not + +00:02:22.239 --> 00:02:23.520 +define at the time + +00:02:23.520 --> 00:02:25.360 +but I realized was really what I was + +00:02:25.360 --> 00:02:26.640 +looking for + +00:02:26.640 --> 00:02:28.720 +first of all it had to be flexible + +00:02:28.720 --> 00:02:30.959 +enough and second of all it had + +00:02:30.959 --> 00:02:33.920 +I had to have control over the data and + +00:02:33.920 --> 00:02:34.959 +so + +00:02:34.959 --> 00:02:37.519 +through this process I actually went + +00:02:37.519 --> 00:02:39.680 +through a bunch of note-taking softwares + +00:02:39.680 --> 00:02:42.640 +rather systematically I went through + +00:02:42.640 --> 00:02:44.080 +google docs + +00:02:44.080 --> 00:02:47.519 +which very much did not work out + +00:02:47.519 --> 00:02:49.840 +I also went through evernote which also + +00:02:49.840 --> 00:02:50.640 +was not + +00:02:50.640 --> 00:02:53.200 +great for me and one note which I + +00:02:53.200 --> 00:02:55.200 +settled on for a little while + +00:02:55.200 --> 00:02:58.800 +but it did not meet these criteria + +00:02:58.800 --> 00:03:01.519 +particularly the second one I had taken + +00:03:01.519 --> 00:03:02.159 +some notes + +00:03:02.159 --> 00:03:05.280 +and I wanted to export it and onenote + +00:03:05.280 --> 00:03:07.519 +did not let me do that + +00:03:07.519 --> 00:03:12.000 +it was pdf horribly organized pdf + +00:03:12.000 --> 00:03:14.879 +and that's when I knew I needed some + +00:03:14.879 --> 00:03:17.440 +change + +00:03:17.440 --> 00:03:21.519 +so I discovered Emacs through this talk + +00:03:21.519 --> 00:03:24.080 +and through the wonderful features of + +00:03:24.080 --> 00:03:27.040 +org mode + +00:03:27.040 --> 00:03:30.080 +this is my first journal entry in Emacs + +00:03:30.080 --> 00:03:34.000 +I had been playing with it for one day + +00:03:34.000 --> 00:03:36.159 +and I was on the org agenda and I + +00:03:36.159 --> 00:03:38.159 +happened to press I + +00:03:38.159 --> 00:03:40.720 +which for the Emacs combined is the + +00:03:40.720 --> 00:03:41.599 +default for + +00:03:41.599 --> 00:03:45.440 +diary entry and so I was very excited + +00:03:45.440 --> 00:03:48.720 +um and I shouldn't stay on the slide too + +00:03:48.720 --> 00:03:50.239 +long unless you read it + +00:03:50.239 --> 00:03:53.760 +um so let's move on to the next one + +00:03:53.760 --> 00:03:57.200 +um so the learning curve for me I think + +00:03:57.200 --> 00:04:00.480 +particularly being an xbm user + +00:04:00.480 --> 00:04:03.760 +evil mode made it very easy to switch + +00:04:03.760 --> 00:04:06.080 +thankfully I there was the emax + +00:04:06.080 --> 00:04:07.439 +reference sheet + +00:04:07.439 --> 00:04:10.799 +and having evil mode to + +00:04:10.799 --> 00:04:14.080 +switch between um + +00:04:14.080 --> 00:04:17.440 +texts and whether it be editing a text + +00:04:17.440 --> 00:04:17.919 +file + +00:04:17.919 --> 00:04:20.560 +or going to other parts of just Emacs in + +00:04:20.560 --> 00:04:21.600 +general + +00:04:21.600 --> 00:04:24.800 +I think vim really helped with making me + +00:04:24.800 --> 00:04:26.840 +feel comfortable within this new + +00:04:26.840 --> 00:04:28.000 +environment + +00:04:28.000 --> 00:04:31.440 +and so having that experience I also + +00:04:31.440 --> 00:04:31.919 +wasn't + +00:04:31.919 --> 00:04:34.240 +new to the keybind-based world I have + +00:04:34.240 --> 00:04:36.320 +been very comfortable with computer + +00:04:36.320 --> 00:04:40.160 +and the keyboard for most of my life + +00:04:40.160 --> 00:04:43.520 +and so it was not a totally new + +00:04:43.520 --> 00:04:45.520 +environment for me + +00:04:45.520 --> 00:04:47.440 +I also spent a lot of time looking at + +00:04:47.440 --> 00:04:49.360 +the Emacs reference sheet + +00:04:49.360 --> 00:04:53.040 +just thinking about trying to find + +00:04:53.040 --> 00:04:55.040 +all of the different functions if I + +00:04:55.040 --> 00:04:56.639 +didn't know what something was + +00:04:56.639 --> 00:04:59.680 +then I queried it in Emacs and then I + +00:04:59.680 --> 00:05:01.199 +figured out what it was + +00:05:01.199 --> 00:05:03.759 +and that was one of the best ways for me + +00:05:03.759 --> 00:05:05.600 +to discover + +00:05:05.600 --> 00:05:09.360 +all of the capabilities of Emacs + +00:05:09.360 --> 00:05:11.440 +thirdly of course the self-documenting + +00:05:11.440 --> 00:05:12.800 +feature + +00:05:12.800 --> 00:05:15.199 +or nature of Emacs and narrowing + +00:05:15.199 --> 00:05:17.120 +frameworks such as helm + +00:05:17.120 --> 00:05:20.479 +really helped find things especially for + +00:05:20.479 --> 00:05:21.360 +mx + +00:05:21.360 --> 00:05:25.919 +for a while I was just + +00:05:25.919 --> 00:05:28.160 +I would go about my day and if I pressed + +00:05:28.160 --> 00:05:29.520 +to keep mine that I didn't know what it + +00:05:29.520 --> 00:05:30.720 +did + +00:05:30.720 --> 00:05:34.560 +I would do the losses and + +00:05:34.560 --> 00:05:36.240 +see the list of key binds that I had + +00:05:36.240 --> 00:05:37.600 +pressed and + +00:05:37.600 --> 00:05:40.400 +tried to find that one and query the + +00:05:40.400 --> 00:05:41.280 +function + +00:05:41.280 --> 00:05:45.280 +and what not so + +00:05:45.280 --> 00:05:49.120 +yeah and now we jump to now so + +00:05:49.120 --> 00:05:51.759 +there there is at least one moment in + +00:05:51.759 --> 00:05:53.280 +each day when I think + +00:05:53.280 --> 00:05:55.600 +how would I live without umax + +00:05:55.600 --> 00:05:57.680 +particularly now during my senior year + +00:05:57.680 --> 00:05:59.120 +in high school + +00:05:59.120 --> 00:06:02.720 +things are very busy with school violin + +00:06:02.720 --> 00:06:05.520 +and other side projects it's pretty + +00:06:05.520 --> 00:06:06.400 +crazy + +00:06:06.400 --> 00:06:09.680 +and so Emacs + +00:06:09.680 --> 00:06:12.720 +and org mode has really helped me stay + +00:06:12.720 --> 00:06:14.479 +on track with everything + +00:06:14.479 --> 00:06:16.960 +and the flexibility of these software is + +00:06:16.960 --> 00:06:18.840 +being able to have things in different + +00:06:18.840 --> 00:06:21.600 +files notes within the tasks + +00:06:21.600 --> 00:06:24.639 +all of that stuff has been truly a + +00:06:24.639 --> 00:06:25.840 +lifesaver + +00:06:25.840 --> 00:06:28.400 +and so I think I can confidently say + +00:06:28.400 --> 00:06:31.199 +that I have found Emacs to be + +00:06:31.199 --> 00:06:35.280 +the perfect software for me + +00:06:35.280 --> 00:06:38.639 +over the past two years of using Emacs + +00:06:38.639 --> 00:06:42.240 +now it is about two years and two months + +00:06:42.240 --> 00:06:45.039 +I have built a fairly well organized + +00:06:45.039 --> 00:06:46.160 +2000 + +00:06:46.160 --> 00:06:49.520 +plus line org literate config + +00:06:49.520 --> 00:06:52.160 +and so I actually I started with an + +00:06:52.160 --> 00:06:53.840 +e-lisp config + +00:06:53.840 --> 00:06:56.800 +just the vanilla e-max with evil mode + +00:06:56.800 --> 00:06:57.919 +and I built it up + +00:06:57.919 --> 00:07:00.319 +from there eventually I switched to org + +00:07:00.319 --> 00:07:02.400 +literate configs + +00:07:02.400 --> 00:07:05.840 +and used that to organize the snippets + +00:07:05.840 --> 00:07:10.080 +that I was putting in there and so + +00:07:10.080 --> 00:07:14.000 +yeah this is really my workflow now + +00:07:14.000 --> 00:07:16.639 +currently about 90 of everything I do on + +00:07:16.639 --> 00:07:18.960 +my computer is in Emacs + +00:07:18.960 --> 00:07:21.520 +the most notable things of course the + +00:07:21.520 --> 00:07:22.319 +list is far + +00:07:22.319 --> 00:07:26.000 +too long to put on one slide but I do a + +00:07:26.000 --> 00:07:28.160 +lot of my programming in Emacs + +00:07:28.160 --> 00:07:31.280 +mainly python and e-lisp + +00:07:31.280 --> 00:07:33.759 +because of my ap comp sci class I have + +00:07:33.759 --> 00:07:35.199 +to do java as well + +00:07:35.199 --> 00:07:38.720 +and thank goodness Emacs has wonderful + +00:07:38.720 --> 00:07:41.840 +support for that as well + +00:07:41.840 --> 00:07:45.840 +also I do all of my school assignments + +00:07:45.840 --> 00:07:48.800 +more or less in Emacs essay writing I do + +00:07:48.800 --> 00:07:50.400 +an org mode and I have some template + +00:07:50.400 --> 00:07:51.919 +files + +00:07:51.919 --> 00:07:53.919 +template org files which I just include + +00:07:53.919 --> 00:07:55.039 +at the top + +00:07:55.039 --> 00:07:58.160 +and then I can export easily to latex + +00:07:58.160 --> 00:08:01.440 +and a beautiful pdf + +00:08:01.440 --> 00:08:04.400 +math physics same thing latex fragments + +00:08:04.400 --> 00:08:05.840 +are a lifesaver + +00:08:05.840 --> 00:08:09.599 +and also really pretty + +00:08:09.599 --> 00:08:13.199 +and I take notes on basically everything + +00:08:13.199 --> 00:08:15.520 +at first I had things separate and then + +00:08:15.520 --> 00:08:16.319 +I started + +00:08:16.319 --> 00:08:19.360 +sort of putting it all into onenotes.org + +00:08:19.360 --> 00:08:21.360 +file or most of it into one + +00:08:21.360 --> 00:08:24.000 +file and that has actually worked out + +00:08:24.000 --> 00:08:24.960 +surprisingly well + +00:08:24.960 --> 00:08:26.479 +especially with all the searching + +00:08:26.479 --> 00:08:28.879 +features of agenda + +00:08:28.879 --> 00:08:33.440 +and whatnot um and I also use mail + +00:08:33.440 --> 00:08:35.680 +I recently made the switch probably + +00:08:35.680 --> 00:08:37.680 +about one or two months ago + +00:08:37.680 --> 00:08:40.479 +and it has been one of the best switches + +00:08:40.479 --> 00:08:40.959 +I've + +00:08:40.959 --> 00:08:44.480 +I've ever had especially given + +00:08:44.480 --> 00:08:46.320 +connecting to tasks all of this + +00:08:46.320 --> 00:08:47.839 +wonderful stuff + +00:08:47.839 --> 00:08:50.640 +just putting even more in Emacs is + +00:08:50.640 --> 00:08:54.160 +always a good thing I found + +00:08:54.160 --> 00:08:57.680 +so reflecting back on my journey I think + +00:08:57.680 --> 00:08:59.760 +one of the most important things was + +00:08:59.760 --> 00:09:01.440 +just having a reason to use it + +00:09:01.440 --> 00:09:04.480 +when I came to Emacs I had something + +00:09:04.480 --> 00:09:06.080 +that I was looking for + +00:09:06.080 --> 00:09:09.600 +and as soon as I found it I delved right + +00:09:09.600 --> 00:09:09.839 +in + +00:09:09.839 --> 00:09:12.720 +and I I started using it for that thing + +00:09:12.720 --> 00:09:14.480 +and so I was sort of forced to + +00:09:14.480 --> 00:09:16.959 +take the time to read the docs and + +00:09:16.959 --> 00:09:19.279 +figure out what functions I needed + +00:09:19.279 --> 00:09:22.399 +to function and how + +00:09:22.399 --> 00:09:25.839 +I was going to put my workflow + +00:09:25.839 --> 00:09:30.399 +and also of course the desire to tinker + +00:09:30.399 --> 00:09:33.519 +and yeah so really what's next for me + +00:09:33.519 --> 00:09:36.800 +is just wanting to become a more active + +00:09:36.800 --> 00:09:38.640 +member of the Emacs community + +00:09:38.640 --> 00:09:40.640 +I want to give back and I think this + +00:09:40.640 --> 00:09:43.760 +talk is sort of the first step to that + +00:09:43.760 --> 00:09:45.920 +being a more active part of this + +00:09:45.920 --> 00:09:48.000 +community that has + +00:09:48.000 --> 00:09:51.040 +indirectly perhaps um but just like + +00:09:51.040 --> 00:09:54.000 +really helped me become a better and + +00:09:54.000 --> 00:09:55.839 +more organized human being + +00:09:55.839 --> 00:09:58.880 +um I have some package ideas that I'm + +00:09:58.880 --> 00:10:01.920 +slowly working on and yeah I just hope + +00:10:01.920 --> 00:10:05.920 +to spread the word + +00:10:05.920 --> 00:10:08.000 +so thank you very much for listening to + +00:10:08.000 --> 00:10:09.360 +my lightning talk + +00:10:09.360 --> 00:10:11.360 +if you'd like to contact me here are + +00:10:11.360 --> 00:10:12.480 +three modes of + +00:10:12.480 --> 00:10:15.279 +or two modes of communication I will be + +00:10:15.279 --> 00:10:17.120 +on irc more + +00:10:17.120 --> 00:10:20.079 +soon and you can always email me if you + +00:10:20.079 --> 00:10:20.560 +have + +00:10:20.560 --> 00:10:23.200 +any questions you can also search me on + +00:10:23.200 --> 00:10:23.680 +youtube + +00:10:23.680 --> 00:10:26.399 +pierce wong violin thank you very much + +00:10:26.399 --> 00:10:26.800 +and + +00:10:26.800 --> 00:10:30.040 +I hope you enjoy the rest of the + +00:10:30.040 --> 00:10:33.040 +conference diff --git a/2020/subtitles/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann-autogen.vtt b/2020/subtitles/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann-autogen.vtt new file mode 100644 index 00000000..1d41f1e5 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann-autogen.vtt @@ -0,0 +1,913 @@ +WEBVTT + +00:00:00.880 --> 00:00:02.879 +hello everyone and welcome to my talk + +00:00:02.879 --> 00:00:04.520 +state of retrogaming and Emacs + +00:00:04.520 --> 00:00:06.960 +[Music] + +00:00:06.960 --> 00:00:08.639 +first of all a little bit about myself + +00:00:08.639 --> 00:00:12.000 +my name is neilman I'm 28 years old + +00:00:12.000 --> 00:00:13.599 +I work as a cyber security consultant + +00:00:13.599 --> 00:00:15.200 +msg systems and + +00:00:15.200 --> 00:00:17.440 +test other people's web applications and + +00:00:17.440 --> 00:00:19.359 +review the source code for security + +00:00:19.359 --> 00:00:20.160 +problems + +00:00:20.160 --> 00:00:22.960 +you can reach me by email I have my own + +00:00:22.960 --> 00:00:25.039 +self-hosted git repositories + +00:00:25.039 --> 00:00:26.480 +and I have a blog where you can + +00:00:26.480 --> 00:00:28.480 +occasionally find new posts by me on all + +00:00:28.480 --> 00:00:32.160 +kinds of things not just emix things + +00:00:32.160 --> 00:00:34.800 +so but the motivation about this one I + +00:00:34.800 --> 00:00:36.480 +found that Emacs is the ultimate + +00:00:36.480 --> 00:00:38.079 +procrastination machine and there are + +00:00:38.079 --> 00:00:40.160 +lots of fun demonstrations I'll go over + +00:00:40.160 --> 00:00:41.200 +a few of them + +00:00:41.200 --> 00:00:44.160 +for example someone made a thing to + +00:00:44.160 --> 00:00:46.079 +order sell it for himself online so it + +00:00:46.079 --> 00:00:48.239 +doesn't have to walk over to the shop + +00:00:48.239 --> 00:00:50.879 +there's plenty rc bots there's some game + +00:00:50.879 --> 00:00:51.760 +things + +00:00:51.760 --> 00:00:53.520 +there's an emulator for the z machine + +00:00:53.520 --> 00:00:55.600 +which you can use to play zorg + +00:00:55.600 --> 00:00:57.600 +and so I asked myself at this point can + +00:00:57.600 --> 00:00:59.039 +you actually emulate retro games at + +00:00:59.039 --> 00:01:01.039 +60fps and it looked around a bit + +00:01:01.039 --> 00:01:02.800 +and found some projects but none that + +00:01:02.800 --> 00:01:04.479 +were actually able to + +00:01:04.479 --> 00:01:07.360 +do it at 60fps so I set out to do my own + +00:01:07.360 --> 00:01:08.000 +one + +00:01:08.000 --> 00:01:09.439 +and looked out for a console that you + +00:01:09.439 --> 00:01:11.119 +can actually emulate at that speed + +00:01:11.119 --> 00:01:13.439 +using emax with its very very limited + +00:01:13.439 --> 00:01:14.690 +rendering + +00:01:14.690 --> 00:01:16.320 +[Music] + +00:01:16.320 --> 00:01:19.520 +and here's the project chip8.el it's + +00:01:19.520 --> 00:01:20.560 +pretty much finished + +00:01:20.560 --> 00:01:22.880 +it clocks into under 1000 sourced lines + +00:01:22.880 --> 00:01:24.000 +of code + +00:01:24.000 --> 00:01:26.159 +it supports the superchip 8 extensions + +00:01:26.159 --> 00:01:28.080 +it runs at full speed all games behave + +00:01:28.080 --> 00:01:30.159 +okay as far as I'm concerned and + +00:01:30.159 --> 00:01:32.320 +yeah I'm pretty happy with it it's very + +00:01:32.320 --> 00:01:34.479 +much the hell world of emulation + +00:01:34.479 --> 00:01:37.040 +and I might maybe do some other + +00:01:37.040 --> 00:01:40.880 +emulation projects in the future + +00:01:40.880 --> 00:01:43.360 +now for the section which is the longest + +00:01:43.360 --> 00:01:45.439 +bunch of fun facts about ship a dot el + +00:01:45.439 --> 00:01:46.320 +which I've learned + +00:01:46.320 --> 00:01:49.759 +during this project so + +00:01:49.759 --> 00:01:52.240 +what the hell is debate anyway first of + +00:01:52.240 --> 00:01:54.640 +all unlike many other emulation game + +00:01:54.640 --> 00:01:56.799 +things it's not a console but a vm + +00:01:56.799 --> 00:01:58.560 +it was designed for easy parting of home + +00:01:58.560 --> 00:02:00.000 +computer games + +00:02:00.000 --> 00:02:02.560 +it wasn't terribly successful and but + +00:02:02.560 --> 00:02:03.680 +there's still a small community of + +00:02:03.680 --> 00:02:04.320 +enthusiasts + +00:02:04.320 --> 00:02:06.079 +writing games for it and there are even + +00:02:06.079 --> 00:02:09.119 +a few demos + +00:02:09.119 --> 00:02:11.920 +this vm has system specs it has a very + +00:02:11.920 --> 00:02:14.720 +very simple 8-bit cpu with 16 registers + +00:02:14.720 --> 00:02:14.959 +and + +00:02:14.959 --> 00:02:17.760 +36 fixed size instructions you have a + +00:02:17.760 --> 00:02:18.160 +whole + +00:02:18.160 --> 00:02:20.560 +4 kilobyte of ram you have a stack with + +00:02:20.560 --> 00:02:22.080 +16 return addresses + +00:02:22.080 --> 00:02:24.480 +the resolution is 64 by 32 black white + +00:02:24.480 --> 00:02:25.760 +pixels + +00:02:25.760 --> 00:02:28.000 +rendering is done by drawing sprites + +00:02:28.000 --> 00:02:29.440 +these are drawn in excel mode meaning + +00:02:29.440 --> 00:02:30.160 +that if you + +00:02:30.160 --> 00:02:32.239 +draw a sprite and set a bit it just + +00:02:32.239 --> 00:02:33.840 +flips over from black to white or white + +00:02:33.840 --> 00:02:35.040 +to black + +00:02:35.040 --> 00:02:36.560 +first one you have a modern buzz that + +00:02:36.560 --> 00:02:38.239 +can just beep at one + +00:02:38.239 --> 00:02:40.640 +frequency and most unusually there's a + +00:02:40.640 --> 00:02:43.120 +hexadecimal keypad as input + +00:02:43.120 --> 00:02:45.360 +so the keys are basically zero to nine + +00:02:45.360 --> 00:02:48.480 +and a to f + +00:02:48.480 --> 00:02:50.879 +so how does this whole thing work it + +00:02:50.879 --> 00:02:52.400 +runs an unspecified speed + +00:02:52.400 --> 00:02:53.599 +you'll probably have to do some fine + +00:02:53.599 --> 00:02:54.879 +tune you find the speed you're happy + +00:02:54.879 --> 00:02:56.080 +with + +00:02:56.080 --> 00:02:58.560 +sound and delay timers exist they count + +00:02:58.560 --> 00:03:01.120 +down at 60fps down to zero + +00:03:01.120 --> 00:03:02.879 +this is done so that you can play a + +00:03:02.879 --> 00:03:05.120 +sound at some specific time + +00:03:05.120 --> 00:03:06.640 +the game itself is loaded with a fixed + +00:03:06.640 --> 00:03:08.640 +offset into ram the program account is + +00:03:08.640 --> 00:03:10.480 +set to exactly that offset + +00:03:10.480 --> 00:03:11.920 +and from there it enters the game loop + +00:03:11.920 --> 00:03:13.840 +where decodes and instruction executes + +00:03:13.840 --> 00:03:15.519 +it for the side effects and just + +00:03:15.519 --> 00:03:18.130 +loops and does this at infinitum + +00:03:18.130 --> 00:03:19.599 +[Music] + +00:03:19.599 --> 00:03:21.920 +so the game was the first thing where + +00:03:21.920 --> 00:03:23.920 +into problems the usual game approach is + +00:03:23.920 --> 00:03:24.239 +to + +00:03:24.239 --> 00:03:26.640 +do stuff figure out how long to eight + +00:03:26.640 --> 00:03:28.239 +wait for exactly that much and + +00:03:28.239 --> 00:03:30.640 +repeat this doesn't work well in imax at + +00:03:30.640 --> 00:03:31.680 +all because well + +00:03:31.680 --> 00:03:34.959 +user input basically and + +00:03:34.959 --> 00:03:37.280 +Emacs is designed to just do whatever it + +00:03:37.280 --> 00:03:39.040 +needs to do whenever you enter use input + +00:03:39.040 --> 00:03:40.080 +instead of + +00:03:40.080 --> 00:03:42.799 +doing things at one specific time if you + +00:03:42.799 --> 00:03:43.440 +try to do + +00:03:43.440 --> 00:03:45.040 +interruptable sleep well you get + +00:03:45.040 --> 00:03:46.640 +unpredictable behavior + +00:03:46.640 --> 00:03:49.440 +for example can be the timer doesn't run + +00:03:49.440 --> 00:03:50.959 +at all at next time because you've + +00:03:50.959 --> 00:03:52.560 +accidentally cancelled it + +00:03:52.560 --> 00:03:54.400 +if you do uninterruptable sleep it's + +00:03:54.400 --> 00:03:55.760 +freezes instead which isn't what you + +00:03:55.760 --> 00:03:56.720 +want either + +00:03:56.720 --> 00:03:59.360 +so I went for timers which forced me to + +00:03:59.360 --> 00:04:00.560 +do inversion of control + +00:04:00.560 --> 00:04:02.159 +meaning that I have to write code in the + +00:04:02.159 --> 00:04:04.080 +style where it's just call it + +00:04:04.080 --> 00:04:06.159 +time and this allows this input to + +00:04:06.159 --> 00:04:07.200 +happen and to + +00:04:07.200 --> 00:04:09.120 +for things to progress at roughly the + +00:04:09.120 --> 00:04:11.040 +speed I want to + +00:04:11.040 --> 00:04:12.879 +so there's the skydiver function which + +00:04:12.879 --> 00:04:14.159 +is called a 60fps + +00:04:14.159 --> 00:04:16.000 +and I have to be very careful to not do + +00:04:16.000 --> 00:04:17.359 +too much in it + +00:04:17.359 --> 00:04:20.479 +and say this function execute cpu cycles + +00:04:20.479 --> 00:04:22.960 +decrypt the sound delay registers and + +00:04:22.960 --> 00:04:23.680 +redraw + +00:04:23.680 --> 00:04:27.759 +the screen so to map this whole system + +00:04:27.759 --> 00:04:28.800 +to mx lisp + +00:04:28.800 --> 00:04:31.199 +I've used just integers and vectors + +00:04:31.199 --> 00:04:33.120 +which contain even more integers + +00:04:33.120 --> 00:04:35.040 +this is used for the ram registers + +00:04:35.040 --> 00:04:37.759 +return stack key state screen and so on + +00:04:37.759 --> 00:04:39.120 +and so forth basically + +00:04:39.120 --> 00:04:41.520 +what you would do if you were writing c + +00:04:41.520 --> 00:04:42.800 +all of this is stored in global + +00:04:42.800 --> 00:04:44.560 +variables I'm not using any + +00:04:44.560 --> 00:04:46.479 +lists at all and as a side effect + +00:04:46.479 --> 00:04:48.400 +there's no constant going on at all + +00:04:48.400 --> 00:04:50.320 +there are no extra objects created which + +00:04:50.320 --> 00:04:51.120 +would trigger + +00:04:51.120 --> 00:04:53.919 +garbage collection pulses this getting + +00:04:53.919 --> 00:04:55.840 +this red was rather tricky actually and + +00:04:55.840 --> 00:04:56.720 +there were some + +00:04:56.720 --> 00:04:58.560 +in garbage collection problems which I + +00:04:58.560 --> 00:05:01.759 +had to resolve over time + +00:05:01.759 --> 00:05:04.320 +so the coding instructions for this you + +00:05:04.320 --> 00:05:05.520 +have to know that all instructions are + +00:05:05.520 --> 00:05:06.800 +two bytes long + +00:05:06.800 --> 00:05:08.880 +and the arguments encoded inside them + +00:05:08.880 --> 00:05:10.240 +for example the jump to address + +00:05:10.240 --> 00:05:11.440 +instruction + +00:05:11.440 --> 00:05:15.120 +is encoded as one and three hex digits + +00:05:15.120 --> 00:05:18.400 +the type is extracted masking with f000 + +00:05:18.400 --> 00:05:20.800 +and then shifting it by 12 bits mask + +00:05:20.800 --> 00:05:21.680 +means the hd + +00:05:21.680 --> 00:05:24.000 +performance binary end you can do the + +00:05:24.000 --> 00:05:25.440 +same with the argument basement with + +00:05:25.440 --> 00:05:26.639 +zero fff + +00:05:26.639 --> 00:05:29.520 +and no shift if you do this long enough + +00:05:29.520 --> 00:05:31.039 +you'll find common patterns for example + +00:05:31.039 --> 00:05:32.639 +addresses are always encoded like this + +00:05:32.639 --> 00:05:35.280 +using the last three nibbles in the code + +00:05:35.280 --> 00:05:36.880 +you'll find a big count which dispatches + +00:05:36.880 --> 00:05:38.400 +on the type and executes it for the side + +00:05:38.400 --> 00:05:40.070 +effects + +00:05:40.070 --> 00:05:41.440 +[Music] + +00:05:41.440 --> 00:05:43.440 +for testing I've initially just accused + +00:05:43.440 --> 00:05:45.919 +the rom until I fit ctrl g + +00:05:45.919 --> 00:05:47.280 +and then use the debug command to run + +00:05:47.280 --> 00:05:49.039 +the screen to a buffer + +00:05:49.039 --> 00:05:51.360 +later on I found tiny roms that just + +00:05:51.360 --> 00:05:52.320 +display a static + +00:05:52.320 --> 00:05:55.680 +test screen for example logo and looked + +00:05:55.680 --> 00:05:57.280 +whether it looked right + +00:05:57.280 --> 00:05:59.199 +I added instructions as needed and went + +00:05:59.199 --> 00:06:00.960 +through more and more and more roms and + +00:06:00.960 --> 00:06:03.360 +later I wrote in unit test suite as a + +00:06:03.360 --> 00:06:05.199 +safety net and this unit test suite it + +00:06:05.199 --> 00:06:06.000 +just + +00:06:06.000 --> 00:06:08.400 +sets up an empty emulator state executes + +00:06:08.400 --> 00:06:10.080 +some instructions and then looks whether + +00:06:10.080 --> 00:06:10.400 +the + +00:06:10.400 --> 00:06:14.880 +expected side effects have happened + +00:06:14.880 --> 00:06:17.120 +for debugging I usually use e-debug but + +00:06:17.120 --> 00:06:19.120 +this was super ineffective because well + +00:06:19.120 --> 00:06:20.880 +you don't really want to step through + +00:06:20.880 --> 00:06:22.960 +big cons doing side effects for every + +00:06:22.960 --> 00:06:24.960 +single cycle when it can take like 100 + +00:06:24.960 --> 00:06:26.880 +cycles for things to happen + +00:06:26.880 --> 00:06:29.680 +therefore I've set up logging and + +00:06:29.680 --> 00:06:31.360 +whenever I locked something + +00:06:31.360 --> 00:06:32.720 +and couldn't figure out the error I + +00:06:32.720 --> 00:06:33.919 +compared my lock output with + +00:06:33.919 --> 00:06:37.039 +instrumented version of another emulator + +00:06:37.039 --> 00:06:39.199 +and if the locks diverge then I have + +00:06:39.199 --> 00:06:40.880 +figured out where the bug lies and could + +00:06:40.880 --> 00:06:42.720 +look deeper into it + +00:06:42.720 --> 00:06:44.479 +future project idea might be a chip 8 + +00:06:44.479 --> 00:06:46.639 +debugger but I doubt I'll ever + +00:06:46.639 --> 00:06:50.720 +go into it for analysis I initially + +00:06:50.720 --> 00:06:52.639 +wrote a disassembler which is a very + +00:06:52.639 --> 00:06:54.400 +simple thing but super tedious + +00:06:54.400 --> 00:06:56.160 +especially if you wanted to add advanced + +00:06:56.160 --> 00:06:57.599 +functionality for example analysis or + +00:06:57.599 --> 00:06:59.120 +thinking of what part is data what had + +00:06:59.120 --> 00:07:00.000 +this code + +00:07:00.000 --> 00:07:01.840 +and I had this great idea for using the + +00:07:01.840 --> 00:07:03.360 +radari 2 framework + +00:07:03.360 --> 00:07:05.120 +and adding analysis and disassembly + +00:07:05.120 --> 00:07:06.479 +plug-in for it + +00:07:06.479 --> 00:07:08.400 +so I looked into this found okay here + +00:07:08.400 --> 00:07:10.319 +where you can write plugins in c + +00:07:10.319 --> 00:07:12.160 +but also in python so I wrote one in + +00:07:12.160 --> 00:07:13.520 +python and then the scout there's + +00:07:13.520 --> 00:07:15.039 +actually existing one in core which you + +00:07:15.039 --> 00:07:17.440 +have to enable explicitly by passing its + +00:07:17.440 --> 00:07:19.599 +argument so I've tried it and found it's + +00:07:19.599 --> 00:07:21.840 +not exactly as good as my own one so + +00:07:21.840 --> 00:07:23.680 +improved this one and submitted pull + +00:07:23.680 --> 00:07:26.610 +requests until it was at the same level + +00:07:26.610 --> 00:07:28.080 +[Music] + +00:07:28.080 --> 00:07:30.160 +rendering was the trickiest part of this + +00:07:30.160 --> 00:07:31.360 +whole thing because + +00:07:31.360 --> 00:07:34.319 +well I decided against using a library + +00:07:34.319 --> 00:07:35.759 +not like there would have been any + +00:07:35.759 --> 00:07:37.120 +usable library for this + +00:07:37.120 --> 00:07:39.599 +my usual approach of accelerating svg + +00:07:39.599 --> 00:07:41.680 +file was too expensive it just created + +00:07:41.680 --> 00:07:45.120 +too much garbage and took too long time + +00:07:45.120 --> 00:07:47.360 +I then tried creating mutating strings + +00:07:47.360 --> 00:07:49.599 +this was either either too expensive + +00:07:49.599 --> 00:07:52.639 +just like svgs or too complicated I + +00:07:52.639 --> 00:07:55.039 +tried changing svg tiles which created + +00:07:55.039 --> 00:07:57.280 +gaps between the lines + +00:07:57.280 --> 00:07:59.520 +then I tried to create an xpm file which + +00:07:59.520 --> 00:08:00.720 +was backed by a bull vector + +00:08:00.720 --> 00:08:02.400 +administrating this bull vector + +00:08:02.400 --> 00:08:04.400 +but the image caching effect made it + +00:08:04.400 --> 00:08:06.879 +just every nth frame to appear which + +00:08:06.879 --> 00:08:10.000 +wasn't good either then I had the idea + +00:08:10.000 --> 00:08:11.440 +to just use plain text + +00:08:11.440 --> 00:08:13.280 +and paint the individual characters with + +00:08:13.280 --> 00:08:14.800 +a different background color this + +00:08:14.800 --> 00:08:17.120 +this had perfect perfect performance + +00:08:17.120 --> 00:08:18.479 +there were many optimization attempts + +00:08:18.479 --> 00:08:20.000 +until I got there and it was + +00:08:20.000 --> 00:08:21.840 +very very stressful I wasn't sure + +00:08:21.840 --> 00:08:23.199 +whether I would ever get to accept the + +00:08:23.199 --> 00:08:26.160 +performance at all + +00:08:26.160 --> 00:08:28.560 +for sound you only need to a single beep + +00:08:28.560 --> 00:08:30.319 +so technically it shouldn't be difficult + +00:08:30.319 --> 00:08:31.280 +to emulate it + +00:08:31.280 --> 00:08:33.519 +however doing this is hard because Emacs + +00:08:33.519 --> 00:08:34.880 +officially only supports synchronous + +00:08:34.880 --> 00:08:37.200 +playback of sounds + +00:08:37.200 --> 00:08:39.039 +but there's also emax process which you + +00:08:39.039 --> 00:08:41.360 +can launch in asynchronous way + +00:08:41.360 --> 00:08:43.519 +so I looked into it and found that + +00:08:43.519 --> 00:08:45.279 +employee has a slave mode and mpv + +00:08:45.279 --> 00:08:46.640 +supports listing on the + +00:08:46.640 --> 00:08:50.880 +fifo for commands so I've created a pipe + +00:08:50.880 --> 00:08:54.000 +started a past mpv in loop mode and + +00:08:54.000 --> 00:08:55.519 +always send in pause and pause command + +00:08:55.519 --> 00:08:58.000 +to the fifo and that way I could control + +00:08:58.000 --> 00:09:02.640 +when to start beeping and stop beeping + +00:09:02.640 --> 00:09:05.760 +so yeah that's it so far was a very + +00:09:05.760 --> 00:09:07.200 +educational experience + +00:09:07.200 --> 00:09:09.279 +I have tried out a bunch of games which + +00:09:09.279 --> 00:09:10.320 +were + +00:09:10.320 --> 00:09:12.640 +well I almost say the worst ports of + +00:09:12.640 --> 00:09:14.320 +classic games I've ever tried + +00:09:14.320 --> 00:09:15.839 +it wasn't terribly fun to play them but + +00:09:15.839 --> 00:09:18.320 +was fun to improve the emulator until + +00:09:18.320 --> 00:09:21.760 +well things worked good enough + +00:09:21.760 --> 00:09:23.279 +and I've learned a lot about how + +00:09:23.279 --> 00:09:25.120 +computers work at this level + +00:09:25.120 --> 00:09:27.760 +so maybe maybe I'll in the future make + +00:09:27.760 --> 00:09:28.880 +another emulator + +00:09:28.880 --> 00:09:31.920 +but uh I'm not sure whether anything + +00:09:31.920 --> 00:09:34.000 +more advanced like intel 8080 emulator + +00:09:34.000 --> 00:09:36.560 +will actually run mix fast enough + +00:09:36.560 --> 00:09:37.839 +but it's still an interesting idea + +00:09:37.839 --> 00:09:39.200 +because then you could actually have an + +00:09:39.200 --> 00:09:39.600 +os + +00:09:39.600 --> 00:09:41.680 +inside Emacs and fulfill that one + +00:09:41.680 --> 00:09:43.120 +specific meme + +00:09:43.120 --> 00:09:45.440 +but if I try to do most serious stuff + +00:09:45.440 --> 00:09:47.279 +I'll probably use chicken scheme which + +00:09:47.279 --> 00:09:48.000 +is my + +00:09:48.000 --> 00:09:49.920 +preferred language for serious projects + +00:09:49.920 --> 00:09:53.279 +and writing neso gamer emulator + +00:09:53.279 --> 00:09:57.839 +and that's it thank you diff --git a/2020/subtitles/emacsconf-2020--28-welcome-to-the-dungeon--erik-elmshauser-corwin-brust-autogen.vtt b/2020/subtitles/emacsconf-2020--28-welcome-to-the-dungeon--erik-elmshauser-corwin-brust-autogen.vtt new file mode 100644 index 00000000..cf3c1134 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--28-welcome-to-the-dungeon--erik-elmshauser-corwin-brust-autogen.vtt @@ -0,0 +1,4993 @@ +WEBVTT + +00:00:08.559 --> 00:00:12.960 +okay + +00:00:12.960 --> 00:00:14.960 +so I'm gonna start with my just my demo + +00:00:14.960 --> 00:00:18.000 +Emacs here eric we're ready + +00:00:18.000 --> 00:00:31.840 +oh we are live + +00:00:31.840 --> 00:00:35.440 +okay so you're starting then + +00:00:35.440 --> 00:00:39.200 +I guess I'll start right now here we go + +00:00:39.200 --> 00:00:41.760 +so I'm a windows user as we talked about + +00:00:41.760 --> 00:00:43.440 +yesterday + +00:00:43.440 --> 00:00:46.719 +I'm gonna try to uh start Emacs for you + +00:00:46.719 --> 00:00:47.440 +now + +00:00:47.440 --> 00:00:48.960 +and I've kind of got it pinned to this + +00:00:48.960 --> 00:00:52.879 +thing but mostly what I actually do + +00:00:52.879 --> 00:00:55.760 +is grab a file explorer and head to my + +00:00:55.760 --> 00:01:00.559 +desktop where I have all sorts of Emacs + +00:01:00.559 --> 00:01:05.960 +eric can you make sure that your vlc is + +00:01:05.960 --> 00:01:10.840 +muted + +00:01:10.840 --> 00:01:21.840 +okay + +00:01:21.840 --> 00:01:39.360 +give me a second please + +00:01:39.360 --> 00:01:42.079 +I do okay all right we should be we + +00:01:42.079 --> 00:01:44.000 +should be working again now my apologies + +00:01:44.000 --> 00:01:44.560 +for that + +00:01:44.560 --> 00:01:46.560 +all right handling technical problems in + +00:01:46.560 --> 00:01:47.759 +real time is + +00:01:47.759 --> 00:01:50.079 +uh what Emacs is all about as we're + +00:01:50.079 --> 00:01:52.079 +coding we're constantly making errors + +00:01:52.079 --> 00:01:53.360 +and fixing them and + +00:01:53.360 --> 00:01:54.560 +learning from the kinds of errors that + +00:01:54.560 --> 00:01:56.159 +we make and adjusting the editor to be + +00:01:56.159 --> 00:01:57.759 +easier to use + +00:01:57.759 --> 00:02:00.719 +so today we'll try to build on uh some + +00:02:00.719 --> 00:02:02.640 +of the ideas we introduced yesterday + +00:02:02.640 --> 00:02:05.600 +around how a community can help us learn + +00:02:05.600 --> 00:02:07.280 +Emacs faster + +00:02:07.280 --> 00:02:10.479 +and how we can think broadly + +00:02:10.479 --> 00:02:13.040 +about the people in our team when we + +00:02:13.040 --> 00:02:14.160 +decide how + +00:02:14.160 --> 00:02:16.080 +what kind of Emacs configuration we're + +00:02:16.080 --> 00:02:18.000 +going to have going for our project + +00:02:18.000 --> 00:02:19.680 +so I'm just going to fire up my normal + +00:02:19.680 --> 00:02:22.239 +Emacs config now so that we get + +00:02:22.239 --> 00:02:25.440 +uh hopefully a nice pretty demo or uh + +00:02:25.440 --> 00:02:29.120 +at least some slides and for safety + +00:02:29.120 --> 00:02:30.959 +we're going to avoid the server because + +00:02:30.959 --> 00:02:33.360 +I hate it when it crashes + +00:02:33.360 --> 00:02:35.280 +it's a little less stable under windows + +00:02:35.280 --> 00:02:41.120 +I think + +00:02:41.120 --> 00:02:43.360 +and well uh while this starts up I'll + +00:02:43.360 --> 00:02:44.800 +just briefly introduce + +00:02:44.800 --> 00:02:47.200 +my lifelong friend and eric uh elm + +00:02:47.200 --> 00:02:49.519 +salzer who's hanging in the wings and + +00:02:49.519 --> 00:02:51.120 +waiting impatiently for us to be able to + +00:02:51.120 --> 00:02:54.400 +start our slides + +00:02:54.400 --> 00:02:58.560 +hello everybody + +00:02:58.560 --> 00:03:00.720 +so you've heard plenty from me already + +00:03:00.720 --> 00:03:02.000 +this conference + +00:03:02.000 --> 00:03:05.760 +um I suppose + +00:03:05.760 --> 00:03:09.120 +uh so I'm just gonna uh + +00:03:09.120 --> 00:03:10.720 +so eric and I have worked things out so + +00:03:10.720 --> 00:03:12.400 +that he'll do most of the talking today + +00:03:12.400 --> 00:03:14.159 +I'll drive us through some code parts + +00:03:14.159 --> 00:03:14.879 +but + +00:03:14.879 --> 00:03:16.239 +the hope is that we'll just focus a + +00:03:16.239 --> 00:03:18.000 +little more on the game and if you have + +00:03:18.000 --> 00:03:20.000 +questions about the game at all please + +00:03:20.000 --> 00:03:21.840 +don't hesitate to ask those as well as + +00:03:21.840 --> 00:03:28.480 +your Emacs questions + +00:03:28.480 --> 00:03:34.959 +and I think we're starting out welcome + +00:03:34.959 --> 00:03:37.680 +and let's cut away here so we can show + +00:03:37.680 --> 00:03:41.200 +some faces + +00:03:41.200 --> 00:03:45.040 +I lost you eric why would you do that + +00:03:45.040 --> 00:03:48.319 +there he is + +00:03:48.319 --> 00:03:50.239 +and let's just do one more thing because + +00:03:50.239 --> 00:03:53.280 +that's just kind of offensive + +00:03:53.280 --> 00:03:55.439 +I'm gonna kill off that cute wallpaper + +00:03:55.439 --> 00:03:59.360 +we all were playing with yesterday + +00:03:59.360 --> 00:04:02.640 +although that's not so bad anymore + +00:04:02.640 --> 00:04:04.480 +oh that's terrible it's got to come back + +00:04:04.480 --> 00:04:11.120 +I'm sorry everybody + +00:04:11.120 --> 00:04:16.720 +oh my dear all right + +00:04:16.720 --> 00:04:19.040 +and we just opened Emacs so I have to + +00:04:19.040 --> 00:04:25.040 +open my slideshow + +00:04:25.040 --> 00:04:28.479 +and there we are + +00:04:28.479 --> 00:04:30.320 +okay eric I think I'm about as ready as + +00:04:30.320 --> 00:04:32.560 +I get + +00:04:32.560 --> 00:04:35.520 +cool well uh let's begin here welcome to + +00:04:35.520 --> 00:04:37.840 +the dungeon everybody + +00:04:37.840 --> 00:04:41.199 +I'm eric and this + +00:04:41.199 --> 00:04:43.199 +london is that we've been working on for + +00:04:43.199 --> 00:04:45.120 +about a year now + +00:04:45.120 --> 00:04:48.240 +um the dungeon + +00:04:48.240 --> 00:04:52.000 +game is based on + +00:04:52.000 --> 00:04:54.000 +a tradition of gaming that came out of + +00:04:54.000 --> 00:04:56.160 +the university of minnesota back in like + +00:04:56.160 --> 00:04:57.520 +the 1950s + +00:04:57.520 --> 00:05:00.639 +as far as we can tell and it + +00:05:00.639 --> 00:05:03.680 +is a predecessor an ancestor of most of + +00:05:03.680 --> 00:05:05.199 +the commercial role-playing games + +00:05:05.199 --> 00:05:07.680 +that you have heard of or maybe tried + +00:05:07.680 --> 00:05:08.720 +out from + +00:05:08.720 --> 00:05:10.800 +various stores and friends when I have + +00:05:10.800 --> 00:05:11.919 +you + +00:05:11.919 --> 00:05:14.240 +so one of the first things we want to + +00:05:14.240 --> 00:05:15.759 +talk about is what is it that sets + +00:05:15.759 --> 00:05:17.039 +dungeon apart + +00:05:17.039 --> 00:05:19.440 +why is it you know what is it about this + +00:05:19.440 --> 00:05:20.800 +game that makes us want to + +00:05:20.800 --> 00:05:22.880 +continue bringing it forward when there + +00:05:22.880 --> 00:05:25.039 +are so many games + +00:05:25.039 --> 00:05:26.800 +already commercially available that are + +00:05:26.800 --> 00:05:28.479 +descended from it + +00:05:28.479 --> 00:05:32.400 +um dungeon is kind of a + +00:05:32.400 --> 00:05:36.479 +simpler game like we + +00:05:36.479 --> 00:05:39.280 +don't a lot of the mechanics that you + +00:05:39.280 --> 00:05:40.400 +think of about like + +00:05:40.400 --> 00:05:42.240 +what is it that defines your character + +00:05:42.240 --> 00:05:44.560 +stats and skills and attributes + +00:05:44.560 --> 00:05:48.080 +we just don't deal with in dungeon um + +00:05:48.080 --> 00:05:51.199 +but dungeon + +00:05:51.199 --> 00:05:54.720 +the simplicity of it allows it um + +00:05:54.720 --> 00:05:59.560 +to be a view over creativity more than + +00:05:59.560 --> 00:06:01.840 +um + +00:06:01.840 --> 00:06:04.720 +so that's kind of why we like it but + +00:06:04.720 --> 00:06:16.639 +also + +00:06:16.639 --> 00:06:20.800 +so when we look at it as kind of like + +00:06:20.800 --> 00:06:24.000 +uh a technology problem whoops + +00:06:24.000 --> 00:06:26.880 +when we try to hey home uh I'm sorry I + +00:06:26.880 --> 00:06:27.919 +got ahead of us I'll + +00:06:27.919 --> 00:06:32.160 +I'll cut back + +00:06:32.160 --> 00:06:35.520 +I I thought we were doing fine + +00:06:35.520 --> 00:06:37.600 +okay well then I'll I'll just yeah + +00:06:37.600 --> 00:06:40.319 +either way + +00:06:40.319 --> 00:06:43.360 +so we've been friends since um + +00:06:43.360 --> 00:06:46.479 +it was our parents basically + +00:06:46.479 --> 00:06:49.840 +um our parents are friends uh and + +00:06:49.840 --> 00:06:53.120 +we learn this game from our parents + +00:06:53.120 --> 00:07:02.479 +um specifically um + +00:07:02.479 --> 00:07:04.560 +uh yeah that's where that's that's + +00:07:04.560 --> 00:07:06.400 +that's my q in right + +00:07:06.400 --> 00:07:09.599 +so um yeah my my + +00:07:09.599 --> 00:07:13.759 +my folks uh and and eric's folks were + +00:07:13.759 --> 00:07:15.120 +were really tight they used to run + +00:07:15.120 --> 00:07:17.360 +science fiction conventions together + +00:07:17.360 --> 00:07:20.400 +and yeah we our play + +00:07:20.400 --> 00:07:21.840 +featured you know imaginative + +00:07:21.840 --> 00:07:23.520 +role-playing usually we would find ways + +00:07:23.520 --> 00:07:25.360 +to work the computers in + +00:07:25.360 --> 00:07:28.639 +to things and uh uh + +00:07:28.639 --> 00:07:30.479 +I don't I don't know I I hardly have + +00:07:30.479 --> 00:07:35.000 +memories uh that proceed eric + +00:07:35.000 --> 00:07:37.840 +um also it turns out we're both + +00:07:37.840 --> 00:07:44.240 +kind of nervous uh we've been um + +00:07:44.240 --> 00:07:47.280 +back in the early 80s and + +00:07:47.280 --> 00:07:49.039 +for as long as we've been friends + +00:07:49.039 --> 00:07:51.360 +basically we've also been into playing + +00:07:51.360 --> 00:07:52.800 +with computers + +00:07:52.800 --> 00:07:55.440 +um over the years we've worked with many + +00:07:55.440 --> 00:07:55.840 +many + +00:07:55.840 --> 00:08:11.360 +different systems we've played + +00:08:11.360 --> 00:08:14.560 +like um so we + +00:08:14.560 --> 00:08:17.919 +also always thought like + +00:08:17.919 --> 00:08:20.800 +how is it that we can use these cool + +00:08:20.800 --> 00:08:22.639 +computers + +00:08:22.639 --> 00:08:28.319 +to build this dungeons + +00:08:28.319 --> 00:08:32.080 +right that's certainly what we did um + +00:08:32.080 --> 00:08:35.039 +so after some decades of bike shedding + +00:08:35.039 --> 00:08:35.839 +where we saw + +00:08:35.839 --> 00:08:37.360 +really a lot of changes in the + +00:08:37.360 --> 00:08:39.039 +technology field + +00:08:39.039 --> 00:08:40.800 +cell phones were invented smartphones + +00:08:40.800 --> 00:08:42.880 +were invented text messaging in + +00:08:42.880 --> 00:08:44.720 +particular had a dramatic + +00:08:44.720 --> 00:08:47.120 +impact on on what we thought dungeon + +00:08:47.120 --> 00:08:48.640 +would have to be able to do to be more + +00:08:48.640 --> 00:08:49.519 +fun + +00:08:49.519 --> 00:08:54.720 +than scribbling in in graph paper + +00:08:54.720 --> 00:08:58.480 +um yeah either way + +00:08:58.480 --> 00:09:01.519 +we've been using linux since the mid 90s + +00:09:01.519 --> 00:09:04.399 +um I don't remember exactly when I did + +00:09:04.399 --> 00:09:06.160 +my first linux install + +00:09:06.160 --> 00:09:09.279 +but uh I really + +00:09:09.279 --> 00:09:12.560 +liked it from the get-go and um I think + +00:09:12.560 --> 00:09:13.279 +it was + +00:09:13.279 --> 00:09:23.360 +you know um + +00:09:23.360 --> 00:09:26.320 +uh and I'll add I remember the day that + +00:09:26.320 --> 00:09:28.800 +I learned about the formation of gnu + +00:09:28.800 --> 00:09:32.560 +it um it had a life I I mean I read lots + +00:09:32.560 --> 00:09:33.440 +of licenses I + +00:09:33.440 --> 00:09:36.880 +I think a lot of us have written our own + +00:09:36.880 --> 00:09:38.480 +swag license code + +00:09:38.480 --> 00:09:41.600 +and uh I definitely credit the formation + +00:09:41.600 --> 00:09:42.800 +of gnu to my + +00:09:42.800 --> 00:09:48.640 +being interested in thinking about that + +00:09:48.640 --> 00:09:50.720 +right I am working the slides here okay + +00:09:50.720 --> 00:09:53.040 +well um + +00:09:53.040 --> 00:09:55.200 +so yeah this is your turn I already + +00:09:55.200 --> 00:09:56.080 +mentioned uh + +00:09:56.080 --> 00:09:58.720 +jeff yesterday so you're turning to take + +00:09:58.720 --> 00:10:00.399 +it for a few slides + +00:10:00.399 --> 00:10:03.519 +okay well I mean you know along the + +00:10:03.519 --> 00:10:04.240 +learning + +00:10:04.240 --> 00:10:07.200 +linux we started learning the various + +00:10:07.200 --> 00:10:08.560 +tools that were available + +00:10:08.560 --> 00:10:11.680 +through the new free software movement + +00:10:11.680 --> 00:10:14.000 +and um it didn't take very long before + +00:10:14.000 --> 00:10:14.720 +we got + +00:10:14.720 --> 00:10:18.240 +into using Emacs um and when we were + +00:10:18.240 --> 00:10:21.040 +working as software developers um back + +00:10:21.040 --> 00:10:24.000 +in the 90s we both were using Emacs in + +00:10:24.000 --> 00:10:25.680 +an office environment with + +00:10:25.680 --> 00:10:28.959 +some other developers and it I mean + +00:10:28.959 --> 00:10:40.560 +it was obviously a very powerful + +00:10:40.560 --> 00:10:43.120 +um yeah I'm not going to go on at length + +00:10:43.120 --> 00:10:48.880 +about my love for Emacs here so um + +00:10:48.880 --> 00:10:52.000 +so we yeah so we put together a project + +00:10:52.000 --> 00:10:52.480 +and + +00:10:52.480 --> 00:10:54.240 +and each time we rehearse this eric + +00:10:54.240 --> 00:10:56.320 +introduces it with it's my story to tell + +00:10:56.320 --> 00:10:58.000 +but since our flow is already to hell + +00:10:58.000 --> 00:10:59.360 +and we're just having a conversation + +00:10:59.360 --> 00:11:00.880 +with you today + +00:11:00.880 --> 00:11:03.920 +um I'll just jump in and say + +00:11:03.920 --> 00:11:06.399 +from a project standpoint the the + +00:11:06.399 --> 00:11:08.160 +project owes its inception + +00:11:08.160 --> 00:11:09.839 +to a tremendous number of people in + +00:11:09.839 --> 00:11:12.079 +fandom that you know + +00:11:12.079 --> 00:11:14.000 +uh encouraged us to just do crazy + +00:11:14.000 --> 00:11:15.680 +projects and + +00:11:15.680 --> 00:11:18.160 +in this case to our friends that were + +00:11:18.160 --> 00:11:18.800 +hanging out + +00:11:18.800 --> 00:11:21.360 +with us on discord all the time while we + +00:11:21.360 --> 00:11:22.560 +played different games + +00:11:22.560 --> 00:11:25.200 +and uh through that and while I was + +00:11:25.200 --> 00:11:26.640 +fooling with Emacs is + +00:11:26.640 --> 00:11:34.000 +generally other people played games uh + +00:11:34.000 --> 00:11:35.680 +kind of the pieces fell into place and + +00:11:35.680 --> 00:11:37.200 +we were all there so we could talk about + +00:11:37.200 --> 00:11:38.320 +it and the idea got + +00:11:38.320 --> 00:11:41.040 +exciting again and we started going back + +00:11:41.040 --> 00:11:42.800 +to all the places that we had + +00:11:42.800 --> 00:11:44.480 +had trouble with it in the past and it + +00:11:44.480 --> 00:11:46.640 +really did seem to add up we built proof + +00:11:46.640 --> 00:11:48.000 +of concepts to do + +00:11:48.000 --> 00:11:50.240 +hard stuff quickly and I guess we'll + +00:11:50.240 --> 00:11:51.440 +probably head into that + +00:11:51.440 --> 00:11:54.880 +that area now + +00:11:54.880 --> 00:12:03.360 +so + +00:12:03.360 --> 00:12:06.800 +and there was a slide about all of + +00:12:06.800 --> 00:12:31.360 +the problems + +00:12:31.360 --> 00:12:34.959 +hey there hey + +00:12:34.959 --> 00:12:37.279 +um yeah go ahead and continue I just got + +00:12:37.279 --> 00:12:38.800 +a phone call I think from leo so I'm + +00:12:38.800 --> 00:12:40.639 +gonna mute + +00:12:40.639 --> 00:12:44.480 +okay so um what we did in + +00:12:44.480 --> 00:12:47.600 +in the project was basically come up + +00:12:47.600 --> 00:12:49.680 +with our minimum play testable candidate + +00:12:49.680 --> 00:12:51.440 +we listed all of the things that we need + +00:12:51.440 --> 00:12:52.000 +to be able + +00:12:52.000 --> 00:12:56.240 +to make the project do in order to + +00:12:56.240 --> 00:12:59.040 +recreate the dungeon experience that we + +00:12:59.040 --> 00:12:59.519 +had + +00:12:59.519 --> 00:13:01.279 +with paper and dice sitting around a + +00:13:01.279 --> 00:13:05.600 +table when we were kids + +00:13:05.600 --> 00:13:09.680 +and + +00:13:09.680 --> 00:13:12.079 +I mean we you know it took a while for + +00:13:12.079 --> 00:13:13.839 +us to kind of + +00:13:13.839 --> 00:13:16.079 +tease apart the problem in a way where + +00:13:16.079 --> 00:13:18.000 +we could actually list out all of the + +00:13:18.000 --> 00:13:19.120 +features like + +00:13:19.120 --> 00:13:20.959 +what are the problems we have to solve + +00:13:20.959 --> 00:13:27.760 +and how do we solve them + +00:13:27.760 --> 00:13:30.959 +so creating any free software any + +00:13:30.959 --> 00:13:33.040 +self-organizing free software project + +00:13:33.040 --> 00:13:36.000 +is is challenging to start with and + +00:13:36.000 --> 00:13:37.200 +we're generally + +00:13:37.200 --> 00:13:38.480 +people with a bunch of other + +00:13:38.480 --> 00:13:40.320 +responsibilities by the time we get to + +00:13:40.320 --> 00:13:40.560 +it + +00:13:40.560 --> 00:13:44.000 +so it's it's not just hey + +00:13:44.000 --> 00:13:47.040 +you know the general herding cats it's + +00:13:47.040 --> 00:13:47.680 +it's + +00:13:47.680 --> 00:13:49.120 +you know trying to make it a part of + +00:13:49.120 --> 00:13:51.040 +your life to + +00:13:51.040 --> 00:13:54.399 +uh that being kind of a + +00:13:54.399 --> 00:13:57.680 +you know challenging battle we we + +00:13:57.680 --> 00:14:00.480 +kind of aligned on some some principles + +00:14:00.480 --> 00:14:02.639 +that we wanted to adhere to + +00:14:02.639 --> 00:14:04.079 +once we started taking the project + +00:14:04.079 --> 00:14:05.680 +seriously + +00:14:05.680 --> 00:14:09.519 +like pre you know particularly + +00:14:09.519 --> 00:14:12.720 +recognizing gnu in specific as we focus + +00:14:12.720 --> 00:14:15.199 +on giving back to the community + +00:14:15.199 --> 00:14:16.480 +taking what we learned as pearl + +00:14:16.480 --> 00:14:18.240 +programmers and + +00:14:18.240 --> 00:14:22.079 +uh you know bringing that spirit forward + +00:14:22.079 --> 00:14:24.320 +into into our work and maybe + +00:14:24.320 --> 00:14:26.399 +specifically support making sure that we + +00:14:26.399 --> 00:14:27.120 +can + +00:14:27.120 --> 00:14:30.639 +um you know write uh functions for the + +00:14:30.639 --> 00:14:31.760 +game + +00:14:31.760 --> 00:14:35.199 +um in pearl if we want to + +00:14:35.199 --> 00:14:38.079 +and then to use the game as a vehicle to + +00:14:38.079 --> 00:14:40.320 +make people look beyond + +00:14:40.320 --> 00:14:43.360 +the + +00:14:43.360 --> 00:14:46.800 +typically open source or sorry typically + +00:14:46.800 --> 00:14:49.600 +uh nominally open source at best + +00:14:49.600 --> 00:14:52.160 +generally pretty closed world of + +00:14:52.160 --> 00:14:54.160 +computer gaming a lot of windows users + +00:14:54.160 --> 00:14:55.440 +out there a lot of free + +00:14:55.440 --> 00:14:57.519 +non-free communication tools and a lot + +00:14:57.519 --> 00:14:59.760 +of uh + +00:14:59.760 --> 00:15:01.839 +you know a lot of ground to cover from a + +00:15:01.839 --> 00:15:03.360 +free software perspective + +00:15:03.360 --> 00:15:05.920 +so what can Emacs do from a gaming + +00:15:05.920 --> 00:15:07.360 +standpoint to + +00:15:07.360 --> 00:15:12.160 +to open that up + +00:15:12.160 --> 00:15:14.880 +and not to mention the hubris of the you + +00:15:14.880 --> 00:15:16.720 +know the two of us with a few friends + +00:15:16.720 --> 00:15:18.399 +basically deciding to take on what + +00:15:18.399 --> 00:15:19.440 +amounts to a + +00:15:19.440 --> 00:15:21.839 +huge project um you know we're + +00:15:21.839 --> 00:15:24.720 +essentially a year in now and we haven't + +00:15:24.720 --> 00:15:27.839 +really gotten over halfway to our + +00:15:27.839 --> 00:15:30.000 +minimum playtestable candidate + +00:15:30.000 --> 00:15:32.880 +um it's a it's a work in progress we've + +00:15:32.880 --> 00:15:34.320 +got a long row to go + +00:15:34.320 --> 00:15:36.800 +there's at least 50 items on the things + +00:15:36.800 --> 00:15:38.399 +that we think are critical to + +00:15:38.399 --> 00:15:40.320 +to be able to introduce it to my younger + +00:15:40.320 --> 00:15:44.720 +kids for example + +00:15:44.720 --> 00:15:48.399 +um okay so we're in the accomplishments + +00:15:48.399 --> 00:15:49.279 +section + +00:15:49.279 --> 00:15:50.959 +so we're supposed to be talking about + +00:15:50.959 --> 00:15:52.639 +the things that we have + +00:15:52.639 --> 00:15:55.920 +succeeded in doing in our first year um + +00:15:55.920 --> 00:15:58.880 +we have succeeded in working with data + +00:15:58.880 --> 00:16:01.199 +in org documents using org mode + +00:16:01.199 --> 00:16:04.480 +tables to store the data that we're + +00:16:04.480 --> 00:16:05.360 +going to use + +00:16:05.360 --> 00:16:09.279 +in the various parts of our game + +00:16:09.279 --> 00:16:12.519 +um and we've had a lot of success with + +00:16:12.519 --> 00:16:14.160 +svg.el + +00:16:14.160 --> 00:16:16.639 +uh it started withdrawing maps and we + +00:16:16.639 --> 00:16:17.279 +have + +00:16:17.279 --> 00:16:19.440 +another talk about our mapping + +00:16:19.440 --> 00:16:21.440 +specifically coming up next so we'll + +00:16:21.440 --> 00:16:23.759 +put off some of that discussion for a + +00:16:23.759 --> 00:16:25.199 +separate talk + +00:16:25.199 --> 00:16:28.720 +um but we've also succeeded in + +00:16:28.720 --> 00:16:32.320 +um getting into a bunch of different + +00:16:32.320 --> 00:16:35.680 +elements of the game where uh + +00:16:35.680 --> 00:16:38.160 +we're you know making a lot of progress + +00:16:38.160 --> 00:16:38.959 +using this + +00:16:38.959 --> 00:16:41.920 +drawing engine we developed to also draw + +00:16:41.920 --> 00:16:43.759 +this other thing and also draw this + +00:16:43.759 --> 00:16:45.279 +other thing and also draw this other + +00:16:45.279 --> 00:16:46.079 +thing and it's + +00:16:46.079 --> 00:16:49.519 +um you know we kind of backed into + +00:16:49.519 --> 00:16:52.560 +we've got this aesthetic and we're + +00:16:52.560 --> 00:16:54.720 +using it to draw interfaces for all of + +00:16:54.720 --> 00:17:03.120 +the different parts of the game + +00:17:03.120 --> 00:17:05.600 +so let's talk let's talk a little bit + +00:17:05.600 --> 00:17:06.959 +about what + +00:17:06.959 --> 00:17:10.880 +uh what works now um + +00:17:10.880 --> 00:17:13.360 +first of all there's the mapping part + +00:17:13.360 --> 00:17:14.640 +that eric mentioned + +00:17:14.640 --> 00:17:18.480 +and we'll jump here into um we'll start + +00:17:18.480 --> 00:17:20.880 +opening up some files and looking around + +00:17:20.880 --> 00:17:22.160 +um but then + +00:17:22.160 --> 00:17:25.520 +also later uh we'll we'll fire up an eye + +00:17:25.520 --> 00:17:26.959 +elm and look at some of the + +00:17:26.959 --> 00:17:28.400 +some of the other proofs of concept so + +00:17:28.400 --> 00:17:30.240 +hopefully we can + +00:17:30.240 --> 00:17:32.240 +pivot the second talk more toward the + +00:17:32.240 --> 00:17:34.320 +demos as as we skip some of the + +00:17:34.320 --> 00:17:35.520 +interactive stuff that might be + +00:17:35.520 --> 00:17:43.200 +mentioned in the slides that we go by + +00:17:43.200 --> 00:17:46.880 +so maps + +00:17:46.880 --> 00:17:50.080 +visual battle board um + +00:17:50.080 --> 00:17:53.120 +the battle board I'm just gonna I'm just + +00:17:53.120 --> 00:17:54.160 +gonna skip it eric + +00:17:54.160 --> 00:18:02.000 +we'll hit it in the next one okay + +00:18:02.000 --> 00:18:08.480 +hang on + +00:18:08.480 --> 00:18:09.919 +okay so I'm just going to go ahead and + +00:18:09.919 --> 00:18:11.840 +open up uh maps and + +00:18:11.840 --> 00:18:13.760 +let you talk from the from the svg + +00:18:13.760 --> 00:18:15.039 +process itself + +00:18:15.039 --> 00:18:16.480 +because that's the interesting part to + +00:18:16.480 --> 00:18:22.240 +me that uh to me + +00:18:22.240 --> 00:18:26.080 +okay talk about the svg + +00:18:26.080 --> 00:18:28.640 +process like what what are you thinking + +00:18:28.640 --> 00:18:30.640 +exactly we want to talk about how + +00:18:30.640 --> 00:18:33.760 +we turn our data into an image or + +00:18:33.760 --> 00:18:37.919 +what what are you hoping for yeah so + +00:18:37.919 --> 00:18:39.760 +I mean did you did you want to talk more + +00:18:39.760 --> 00:18:41.200 +from from the + +00:18:41.200 --> 00:18:45.679 +svg the hand-drawn svg graphics at all + +00:18:45.679 --> 00:18:47.039 +I thought we were going to save that + +00:18:47.039 --> 00:18:49.760 +stuff for the passing talk okay + +00:18:49.760 --> 00:18:52.000 +right now if you want yeah I mean so + +00:18:52.000 --> 00:18:53.440 +we've got about + +00:18:53.440 --> 00:18:56.559 +uh 10 minutes before the turn where we + +00:18:56.559 --> 00:18:58.400 +thought we would first take any + +00:18:58.400 --> 00:19:00.400 +questions that are hanging out there + +00:19:00.400 --> 00:19:02.320 +I unfortunately closed the ether pad but + +00:19:02.320 --> 00:19:04.799 +I can open it again real quick + +00:19:04.799 --> 00:19:08.480 +and or you can jump + +00:19:08.480 --> 00:19:11.440 +jump into the to the pathing stuff now + +00:19:11.440 --> 00:19:12.320 +or I can just + +00:19:12.320 --> 00:19:13.760 +throw up an animal and we can start the + +00:19:13.760 --> 00:19:15.440 +demos so + +00:19:15.440 --> 00:19:18.880 +let me invite uh almond or sasha back in + +00:19:18.880 --> 00:19:19.840 +if you guys + +00:19:19.840 --> 00:19:22.160 +or leo if any of you want to join the + +00:19:22.160 --> 00:19:22.960 +conversation + +00:19:22.960 --> 00:19:25.840 +make a suggestion as to how we balance + +00:19:25.840 --> 00:19:27.120 +between the remaining time + +00:19:27.120 --> 00:19:29.840 +the rest of what we have left starts in + +00:19:29.840 --> 00:19:32.480 +on toward the technical so especially + +00:19:32.480 --> 00:19:35.120 +if there would be questions uh questions + +00:19:35.120 --> 00:19:36.840 +about the game right now that would be + +00:19:36.840 --> 00:19:40.160 +awesome + +00:19:40.160 --> 00:19:48.720 +and I'm gonna get seated again + +00:19:48.720 --> 00:19:51.200 +I'm not sure if I talk over the stream + +00:19:51.200 --> 00:19:53.200 +um if you'll hear it because I'm just + +00:19:53.200 --> 00:19:54.720 +watching your stream + +00:19:54.720 --> 00:20:01.200 +but I can try writing an irc um + +00:20:01.200 --> 00:20:04.640 +sure yeah questions would be cool um or + +00:20:04.640 --> 00:20:07.360 +um yeah well eric why don't you just go + +00:20:07.360 --> 00:20:08.559 +ahead and start walking us through the + +00:20:08.559 --> 00:20:09.120 +hand + +00:20:09.120 --> 00:20:11.440 +hand-drawn svg stuff just a little bit + +00:20:11.440 --> 00:20:12.960 +because I think + +00:20:12.960 --> 00:20:14.640 +if that isn't interesting to people we + +00:20:14.640 --> 00:20:17.120 +can just preempt for a question + +00:20:17.120 --> 00:20:21.120 +okay so historically when we + +00:20:21.120 --> 00:20:24.080 +um decided to actually start writing + +00:20:24.080 --> 00:20:25.840 +code one of the very first things we + +00:20:25.840 --> 00:20:26.720 +wanted to do + +00:20:26.720 --> 00:20:30.080 +was the maps because initially it seemed + +00:20:30.080 --> 00:20:31.919 +like the maps were going to be one of + +00:20:31.919 --> 00:20:33.840 +the biggest challenges + +00:20:33.840 --> 00:20:35.760 +in terms of how do we get a text editor + +00:20:35.760 --> 00:20:38.000 +to draw pictures for us + +00:20:38.000 --> 00:20:42.159 +um we pretty quickly decided we wanted + +00:20:42.159 --> 00:20:45.280 +to work with svgs because it allowed us + +00:20:45.280 --> 00:20:48.559 +to leverage the power of Emacs as a text + +00:20:48.559 --> 00:20:52.159 +editor and a text manipulator to write + +00:20:52.159 --> 00:20:56.080 +text graphics with the svg format + +00:20:56.080 --> 00:20:59.520 +so we did some svg graphics by hand + +00:20:59.520 --> 00:21:01.440 +we went in and just started hand coding + +00:21:01.440 --> 00:21:02.640 +things that looked + +00:21:02.640 --> 00:21:05.440 +visually like the maps we used to draw + +00:21:05.440 --> 00:21:07.440 +by hand on graph paper when + +00:21:07.440 --> 00:21:08.960 +we were you know sitting around the + +00:21:08.960 --> 00:21:11.360 +table + +00:21:11.360 --> 00:21:14.559 +yep absolutely what emerged from that + +00:21:14.559 --> 00:21:17.840 +is as we started working on um some of + +00:21:17.840 --> 00:21:20.400 +these files this particular image is a + +00:21:20.400 --> 00:21:24.000 +test of some 20 wide water + +00:21:24.000 --> 00:21:26.240 +with some beaches around it and a + +00:21:26.240 --> 00:21:28.000 +special chamber kind of off to the side + +00:21:28.000 --> 00:21:29.679 +called a clapper + +00:21:29.679 --> 00:21:33.760 +and this was the way we would code is by + +00:21:33.760 --> 00:21:36.559 +sketching by hand all of these things to + +00:21:36.559 --> 00:21:37.600 +look right + +00:21:37.600 --> 00:21:39.440 +and then we would take that code and we + +00:21:39.440 --> 00:21:42.080 +noticed um it became real repetitive + +00:21:42.080 --> 00:21:43.919 +as we would go like chunk of water chunk + +00:21:43.919 --> 00:21:45.440 +of water chunk of water + +00:21:45.440 --> 00:21:46.880 +and we're like okay so what we really + +00:21:46.880 --> 00:21:48.559 +need is to define a + +00:21:48.559 --> 00:21:52.000 +set of um we called it tiles um but like + +00:21:52.000 --> 00:21:53.600 +you could think of it as rubber stamps + +00:21:53.600 --> 00:21:55.760 +where we write this graphics code + +00:21:55.760 --> 00:21:57.440 +and then we're able to repeat it in + +00:21:57.440 --> 00:22:00.400 +different places around the map + +00:22:00.400 --> 00:22:03.039 +um you want to flip over to code view + +00:22:03.039 --> 00:22:07.120 +and show that or do we want to move into + +00:22:07.120 --> 00:22:10.240 +tiles code + +00:22:10.240 --> 00:22:12.720 +so you know you can see just really + +00:22:12.720 --> 00:22:14.320 +obviously here the only thing that's + +00:22:14.320 --> 00:22:15.200 +changing from + +00:22:15.200 --> 00:22:18.240 +chunk of water to chunk of water is the + +00:22:18.240 --> 00:22:21.600 +x and y coordinates um + +00:22:21.600 --> 00:22:24.640 +we're you know we can skip getting into + +00:22:24.640 --> 00:22:26.000 +the svg directives + +00:22:26.000 --> 00:22:29.360 +and how all of the path statements + +00:22:29.360 --> 00:22:30.640 +actually work + +00:22:30.640 --> 00:22:33.679 +but you can trust us + +00:22:33.679 --> 00:22:36.480 +all of these d equals and there's m's + +00:22:36.480 --> 00:22:39.039 +and h's and v's that turns out to be + +00:22:39.039 --> 00:22:41.039 +horizontal lines and vertical lines and + +00:22:41.039 --> 00:22:42.480 +cursor moves and it's kind of like + +00:22:42.480 --> 00:22:44.159 +turtle graphics if anyone + +00:22:44.159 --> 00:22:46.640 +remembers that far back and we're + +00:22:46.640 --> 00:22:48.720 +picking up our pen and dropping it and + +00:22:48.720 --> 00:22:54.720 +drawing lines around on our map + +00:22:54.720 --> 00:22:56.240 +so we do have a few questions if you + +00:22:56.240 --> 00:22:58.000 +want to take them now otherwise + +00:22:58.000 --> 00:23:01.200 +um we can also jump in + +00:23:01.200 --> 00:23:03.120 +let's get them while they're fresh okay + +00:23:03.120 --> 00:23:04.559 +sounds good + +00:23:04.559 --> 00:23:07.520 +um so we'll probably shift to question + +00:23:07.520 --> 00:23:08.000 +and answer + +00:23:08.000 --> 00:23:10.799 +mode for up to 15 minutes here so if you + +00:23:10.799 --> 00:23:11.919 +do have questions + +00:23:11.919 --> 00:23:14.480 +um maybe stack rank go ahead and sort + +00:23:14.480 --> 00:23:15.679 +the questions + +00:23:15.679 --> 00:23:17.600 +a little for us or comment on them to + +00:23:17.600 --> 00:23:18.960 +let us know which ones you want to see + +00:23:18.960 --> 00:23:19.760 +us get here + +00:23:19.760 --> 00:23:21.280 +if we start getting a little long-winded + +00:23:21.280 --> 00:23:23.600 +or nudges along we'll take direction + +00:23:23.600 --> 00:23:26.960 +but thanks for your questions um I'd + +00:23:26.960 --> 00:23:28.799 +like to see a demo as well we'll look at + +00:23:28.799 --> 00:23:30.720 +that with the remaining time after this + +00:23:30.720 --> 00:23:32.159 +question block + +00:23:32.159 --> 00:23:35.200 +um more about what the game is + +00:23:35.200 --> 00:23:38.720 +okay sure so let's let's take our + +00:23:38.720 --> 00:23:40.720 +uh one minute each swing at what the + +00:23:40.720 --> 00:23:42.799 +game is you wanna go first I called + +00:23:42.799 --> 00:23:45.120 +weapons + +00:23:45.120 --> 00:23:48.840 +okay um dungeon + +00:23:48.840 --> 00:23:52.720 +is like role-playing games + +00:23:52.720 --> 00:23:55.440 +but you don't really do role-playing + +00:23:55.440 --> 00:23:56.159 +like the + +00:23:56.159 --> 00:23:57.919 +for me the thing the core of being a + +00:23:57.919 --> 00:23:59.520 +role-playing game is you + +00:23:59.520 --> 00:24:02.080 +take on the role of being your character + +00:24:02.080 --> 00:24:03.039 +and you play + +00:24:03.039 --> 00:24:06.000 +your character and dungeon's not like + +00:24:06.000 --> 00:24:06.400 +that + +00:24:06.400 --> 00:24:10.320 +dungeon um you can play + +00:24:10.320 --> 00:24:12.640 +so the dungeon party always has eight + +00:24:12.640 --> 00:24:13.840 +characters in it + +00:24:13.840 --> 00:24:15.840 +there's four in the front row and four + +00:24:15.840 --> 00:24:17.679 +in the back row and you march through + +00:24:17.679 --> 00:24:18.720 +the dungeon + +00:24:18.720 --> 00:24:22.159 +fighting whatever you encounter and if + +00:24:22.159 --> 00:24:24.000 +there's one player you play all eight + +00:24:24.000 --> 00:24:25.200 +characters + +00:24:25.200 --> 00:24:27.120 +and depending on how many players you + +00:24:27.120 --> 00:24:28.720 +have you split up the party + +00:24:28.720 --> 00:24:30.799 +in whatever way seems fair and equitable + +00:24:30.799 --> 00:24:32.960 +to everybody + +00:24:32.960 --> 00:24:34.880 +similarly I said the dungeon is kind of + +00:24:34.880 --> 00:24:36.720 +a simple game like there's only + +00:24:36.720 --> 00:24:38.320 +three races and there's only three + +00:24:38.320 --> 00:24:40.080 +classes all of your characters are + +00:24:40.080 --> 00:24:41.760 +either human elf dwarf + +00:24:41.760 --> 00:24:44.080 +they're all a warrior a priest or a + +00:24:44.080 --> 00:24:44.880 +wizard + +00:24:44.880 --> 00:24:46.640 +and all of these characters have you + +00:24:46.640 --> 00:24:48.320 +know special properties + +00:24:48.320 --> 00:24:51.279 +and special talents that is why they + +00:24:51.279 --> 00:24:53.760 +come together in this party of eight + +00:24:53.760 --> 00:24:56.240 +but essentially dungeon is a game about + +00:24:56.240 --> 00:24:57.600 +making up all of these + +00:24:57.600 --> 00:25:00.000 +um eight characters and stomping through + +00:25:00.000 --> 00:25:01.679 +the dungeon killing things taking their + +00:25:01.679 --> 00:25:03.840 +stuff + +00:25:03.840 --> 00:25:05.120 +well you're way over but I don't know + +00:25:05.120 --> 00:25:06.960 +how much I have to add to that + +00:25:06.960 --> 00:25:10.080 +I will just add that if if you're + +00:25:10.080 --> 00:25:14.159 +uh if if one's passion as a dungeon + +00:25:14.159 --> 00:25:16.559 +master is killing player characters this + +00:25:16.559 --> 00:25:17.120 +game + +00:25:17.120 --> 00:25:19.600 +is meant for you you don't have to build + +00:25:19.600 --> 00:25:21.039 +your game like that + +00:25:21.039 --> 00:25:22.559 +but that's definitely a thing that + +00:25:22.559 --> 00:25:24.400 +people do with this game + +00:25:24.400 --> 00:25:27.360 +um and then as eric said it just + +00:25:27.360 --> 00:25:28.960 +encourages you to put your creativity on + +00:25:28.960 --> 00:25:30.320 +the table to bring all the different + +00:25:30.320 --> 00:25:31.039 +elements + +00:25:31.039 --> 00:25:33.760 +um and this hopefully this may be clear + +00:25:33.760 --> 00:25:35.039 +in our slides since we were a little + +00:25:35.039 --> 00:25:36.400 +fumbling for the first few minutes of + +00:25:36.400 --> 00:25:36.960 +the talk + +00:25:36.960 --> 00:25:40.480 +but um there's also a kind of a player's + +00:25:40.480 --> 00:25:41.200 +guide + +00:25:41.200 --> 00:25:43.760 +that that I started a few years ago um + +00:25:43.760 --> 00:25:45.919 +that's that's not super complete + +00:25:45.919 --> 00:25:48.400 +but um but does cover some of the high + +00:25:48.400 --> 00:25:50.159 +level basics of the game that eric's + +00:25:50.159 --> 00:25:52.320 +been talking from + +00:25:52.320 --> 00:25:55.679 +and I would add that some of the things + +00:25:55.679 --> 00:25:56.960 +you know some of what makes dungeon + +00:25:56.960 --> 00:25:58.480 +great is that there's a lot of mystery + +00:25:58.480 --> 00:25:59.360 +about it + +00:25:59.360 --> 00:26:01.120 +like the player's handbook doesn't tell + +00:26:01.120 --> 00:26:02.880 +you all of the rules + +00:26:02.880 --> 00:26:06.080 +um or like really mystery + +00:26:06.080 --> 00:26:08.080 +and like there's mazes and there's + +00:26:08.080 --> 00:26:09.679 +puzzles and + +00:26:09.679 --> 00:26:12.240 +you have to figure out how things work + +00:26:12.240 --> 00:26:12.799 +and like + +00:26:12.799 --> 00:26:14.559 +we've got all of these treasure items in + +00:26:14.559 --> 00:26:16.640 +there that could help you deal with a + +00:26:16.640 --> 00:26:18.480 +particular monster if it occurs to you + +00:26:18.480 --> 00:26:19.919 +to use it + +00:26:19.919 --> 00:26:22.720 +and um you know like that there's a lot + +00:26:22.720 --> 00:26:23.360 +of + +00:26:23.360 --> 00:26:25.279 +um you don't know what's going on you're + +00:26:25.279 --> 00:26:27.039 +dropped in the middle of this situation + +00:26:27.039 --> 00:26:28.559 +and you have to try and survive + +00:26:28.559 --> 00:26:31.919 +and level up and figure it out and + +00:26:31.919 --> 00:26:33.840 +if you succeed in doing that for long + +00:26:33.840 --> 00:26:35.520 +enough eventually you start realizing + +00:26:35.520 --> 00:26:37.520 +that there are big picture puzzles + +00:26:37.520 --> 00:26:40.000 +that there are you know there is more to + +00:26:40.000 --> 00:26:41.760 +this than just killing things and taking + +00:26:41.760 --> 00:26:43.360 +their stuff + +00:26:43.360 --> 00:26:46.000 +and that's where the joy of designing + +00:26:46.000 --> 00:26:47.279 +these games comes in + +00:26:47.279 --> 00:26:49.679 +for me is like designing the mazes and + +00:26:49.679 --> 00:26:51.679 +designing the puzzles and like + +00:26:51.679 --> 00:26:53.200 +oh yeah and then they're going to come + +00:26:53.200 --> 00:26:54.240 +out of this room and you know what + +00:26:54.240 --> 00:26:55.919 +they're going to do they want to + +00:26:55.919 --> 00:26:58.240 +go that way so I'm going to put the trap + +00:26:58.240 --> 00:26:59.600 +right there + +00:26:59.600 --> 00:27:01.360 +and they'll walk right into it every + +00:27:01.360 --> 00:27:03.840 +time and then when the party does get in + +00:27:03.840 --> 00:27:05.440 +your map and they do exactly what you + +00:27:05.440 --> 00:27:07.200 +thought and they hit the trap it's just + +00:27:07.200 --> 00:27:09.279 +really satisfying to watch the look on + +00:27:09.279 --> 00:27:10.960 +their little faces as they squirm and + +00:27:10.960 --> 00:27:12.320 +struggle to stay alive + +00:27:12.320 --> 00:27:13.760 +yeah that's that's what I was trying to + +00:27:13.760 --> 00:27:15.520 +get at thanks all right that was perfect + +00:27:15.520 --> 00:27:16.320 +for me + +00:27:16.320 --> 00:27:19.200 +all right um so so highlight your + +00:27:19.200 --> 00:27:20.320 +question for me if you think it's + +00:27:20.320 --> 00:27:21.840 +important we grab it here before we jump + +00:27:21.840 --> 00:27:22.960 +into demos + +00:27:22.960 --> 00:27:25.039 +but otherwise I think it's time to try + +00:27:25.039 --> 00:27:27.919 +running some code + +00:27:27.919 --> 00:27:31.279 +what say okay I say do it + +00:27:31.279 --> 00:27:33.840 +okay so you less less camera more more + +00:27:33.840 --> 00:27:36.480 +Emacs now + +00:27:36.480 --> 00:27:39.120 +and hopefully I could find the right e + +00:27:39.120 --> 00:27:39.840 +max + +00:27:39.840 --> 00:27:42.960 +the right desktop all right there we are + +00:27:42.960 --> 00:27:48.799 +so we'll try to fire up uh + +00:27:48.799 --> 00:27:54.000 +and right now and I usually like to do + +00:27:54.000 --> 00:27:59.120 +the full path to emax + +00:27:59.120 --> 00:28:07.279 +when I'm gonna run it under minus q + +00:28:07.279 --> 00:28:13.120 +all right + +00:28:13.120 --> 00:28:16.720 +let's have some iom + +00:28:16.720 --> 00:28:19.360 +all right and then I'm also going to do + +00:28:19.360 --> 00:28:20.000 +a + +00:28:20.000 --> 00:28:24.000 +load file on the init script that you + +00:28:24.000 --> 00:28:25.840 +can find in the repository + +00:28:25.840 --> 00:28:30.480 +in the Emacs user and it's uh + +00:28:30.480 --> 00:28:34.960 +init scripts + +00:28:34.960 --> 00:28:40.159 +uh users folder + +00:28:40.159 --> 00:28:48.080 +user folder nice + +00:28:48.080 --> 00:28:49.919 +and it's called init dm because that + +00:28:49.919 --> 00:28:51.840 +happened to fit with my naming scheme + +00:28:51.840 --> 00:28:55.360 +potentially terrible all right and with + +00:28:55.360 --> 00:28:56.320 +that loaded + +00:28:56.320 --> 00:28:58.320 +in theory some very basic stuff will + +00:28:58.320 --> 00:29:00.159 +work even without us doing anything in + +00:29:00.159 --> 00:29:02.159 +iom so I think the the last thing eric + +00:29:02.159 --> 00:29:04.399 +was talking about was the svg code + +00:29:04.399 --> 00:29:06.000 +behind the maps + +00:29:06.000 --> 00:29:10.720 +um there as kind of the technical thread + +00:29:10.720 --> 00:29:13.760 +so we'll just fire open the maps pick a + +00:29:13.760 --> 00:29:15.440 +dungeon level + +00:29:15.440 --> 00:29:18.480 +let's pick a pretty one okay if I show + +00:29:18.480 --> 00:29:19.840 +this + +00:29:19.840 --> 00:29:23.440 +yeah whatever + +00:29:23.440 --> 00:29:27.679 +is that the surface yeah + +00:29:27.679 --> 00:29:30.799 +and let's scale it here I think if I + +00:29:30.799 --> 00:29:32.159 +wrap + +00:29:32.159 --> 00:29:34.960 +like once once we got the engine up and + +00:29:34.960 --> 00:29:36.399 +running a little bit + +00:29:36.399 --> 00:29:39.120 +we decided to do some experimentation + +00:29:39.120 --> 00:29:42.480 +about seeing what we could do to push + +00:29:42.480 --> 00:29:46.080 +the limits of our tile + +00:29:46.080 --> 00:29:49.360 +and gender so we more or less on the + +00:29:49.360 --> 00:29:50.080 +surface + +00:29:50.080 --> 00:29:53.120 +map I + +00:29:53.120 --> 00:29:56.399 +basically started with almost no + +00:29:56.399 --> 00:29:58.399 +tiles from below like the water and the + +00:29:58.399 --> 00:30:00.240 +beaches and the general store and the + +00:30:00.240 --> 00:30:01.279 +stairs + +00:30:01.279 --> 00:30:03.679 +were existing tiles but then we were + +00:30:03.679 --> 00:30:05.200 +like this is going to be a surface map + +00:30:05.200 --> 00:30:07.279 +so we're outdoors so I want hills and I + +00:30:07.279 --> 00:30:08.399 +want trees + +00:30:08.399 --> 00:30:11.760 +and I want grass and um it took a little + +00:30:11.760 --> 00:30:12.399 +while + +00:30:12.399 --> 00:30:15.039 +playing with svg to come up with some + +00:30:15.039 --> 00:30:16.320 +acceptable code + +00:30:16.320 --> 00:30:18.480 +but once the like the grass gets tiled + +00:30:18.480 --> 00:30:19.840 +out it + +00:30:19.840 --> 00:30:21.600 +kind of you know gives the illusion of + +00:30:21.600 --> 00:30:23.039 +grass and + +00:30:23.039 --> 00:30:24.880 +you know these are all in my estimation + +00:30:24.880 --> 00:30:26.399 +kind of crude graphics + +00:30:26.399 --> 00:30:28.640 +but we're at the proof of concept stage + +00:30:28.640 --> 00:30:30.399 +and it definitely proves that we can use + +00:30:30.399 --> 00:30:31.679 +our graphics engine + +00:30:31.679 --> 00:30:34.640 +to decide what we want our maps to look + +00:30:34.640 --> 00:30:35.279 +like + +00:30:35.279 --> 00:30:39.440 +and real quickly compose new map tiles + +00:30:39.440 --> 00:30:44.240 +and uh stamp out a bunch of new maps + +00:30:44.240 --> 00:30:46.880 +so now I'll uh show off one of the other + +00:30:46.880 --> 00:30:48.640 +things so the next thing we did once we + +00:30:48.640 --> 00:30:50.559 +once we had the maps doing + +00:30:50.559 --> 00:30:51.919 +and we haven't gotten into the features + +00:30:51.919 --> 00:30:53.600 +of the maps we can we can appoint time + +00:30:53.600 --> 00:30:54.960 +to that or not + +00:30:54.960 --> 00:30:58.960 +but um there are a number of + +00:30:58.960 --> 00:31:00.720 +uh featured features there that we can + +00:31:00.720 --> 00:31:02.840 +look at the + +00:31:02.840 --> 00:31:05.760 +uh we then wanted to + +00:31:05.760 --> 00:31:08.640 +try to see if that could make other + +00:31:08.640 --> 00:31:10.399 +interfaces more appealing so we built + +00:31:10.399 --> 00:31:11.360 +stuff like + +00:31:11.360 --> 00:31:14.320 +oop that's gonna be the map again um + +00:31:14.320 --> 00:31:15.919 +I'll just run it here through I + +00:31:15.919 --> 00:31:18.320 +am so it's more obvious what I'm doing + +00:31:18.320 --> 00:31:20.080 +um + +00:31:20.080 --> 00:31:21.679 +so let's look next to the character + +00:31:21.679 --> 00:31:26.080 +sheet oops + +00:31:26.080 --> 00:31:32.880 +back and alt p doesn't work okay + +00:31:32.880 --> 00:31:35.840 +that's a bummer uh that is not + +00:31:35.840 --> 00:31:38.240 +autoloaded + +00:31:38.240 --> 00:31:40.559 +so this this project is a bit of a mess + +00:31:40.559 --> 00:31:41.600 +right now y'all + +00:31:41.600 --> 00:31:43.120 +it does some stuff that's really + +00:31:43.120 --> 00:31:45.120 +exciting to us but the code is terrible + +00:31:45.120 --> 00:31:47.039 +and we need all the help we can get uh + +00:31:47.039 --> 00:31:48.399 +being told what our problems are and how + +00:31:48.399 --> 00:31:49.279 +to fix them + +00:31:49.279 --> 00:31:51.360 +so that is if you take nothing away from + +00:31:51.360 --> 00:31:52.559 +this talk + +00:31:52.559 --> 00:31:54.799 +uh take away from it that we could use + +00:31:54.799 --> 00:32:00.480 +your help + +00:32:00.480 --> 00:32:02.399 +yeah that doubles back to uh when we + +00:32:02.399 --> 00:32:04.640 +were talking about larry wall's cardinal + +00:32:04.640 --> 00:32:06.320 +virtues of programming like we + +00:32:06.320 --> 00:32:07.440 +definitely + +00:32:07.440 --> 00:32:09.760 +took on some hubris thinking we could do + +00:32:09.760 --> 00:32:10.640 +this + +00:32:10.640 --> 00:32:13.519 +and we might not be wrong but um we + +00:32:13.519 --> 00:32:14.799 +could do it easier with + +00:32:14.799 --> 00:32:16.799 +more hands you know many hands make + +00:32:16.799 --> 00:32:18.240 +light work all right + +00:32:18.240 --> 00:32:21.760 +I'll bite yeah + +00:32:21.760 --> 00:32:23.360 +and the character she won't load for us + +00:32:23.360 --> 00:32:24.799 +today I had some problems with my + +00:32:24.799 --> 00:32:26.960 +version control I had to revert my thing + +00:32:26.960 --> 00:32:29.360 +I threw all my local changes in a stash + +00:32:29.360 --> 00:32:31.200 +and it's it's a terrible mess let's look + +00:32:31.200 --> 00:32:32.080 +at stuff I + +00:32:32.080 --> 00:32:37.519 +tested already today uh before + +00:32:37.519 --> 00:32:40.559 +you got the battle board available + +00:32:40.559 --> 00:32:43.760 +let's find out first we'll load library + +00:32:43.760 --> 00:32:45.760 +it + +00:32:45.760 --> 00:32:48.000 +uh in fact actually your basic require + +00:32:48.000 --> 00:32:57.440 +should work + +00:32:57.440 --> 00:33:00.480 +no uh I can try load library + +00:33:00.480 --> 00:33:02.640 +uh you know what let's forg I'm just + +00:33:02.640 --> 00:33:03.760 +gonna go ahead and give it to you as a + +00:33:03.760 --> 00:33:04.960 +lab beast + +00:33:04.960 --> 00:33:09.919 +since that's probably more fun to watch + +00:33:09.919 --> 00:33:11.600 +we'll take it from my own inet + +00:33:11.600 --> 00:33:16.640 +this is more likely to be healthy + +00:33:16.640 --> 00:33:19.840 +since only some of the time uh first we + +00:33:19.840 --> 00:33:20.880 +have to + +00:33:20.880 --> 00:33:24.799 +uh ctrl x alt I d m + +00:33:24.799 --> 00:33:28.559 +all right and having then loaded + +00:33:28.559 --> 00:33:31.760 +the init control u f9 + +00:33:31.760 --> 00:33:34.080 +should give me the maps and we can + +00:33:34.080 --> 00:33:35.200 +verify + +00:33:35.200 --> 00:33:37.200 +things work in a basic way just by + +00:33:37.200 --> 00:33:38.640 +changing level + +00:33:38.640 --> 00:33:43.200 +let's look at something else + +00:33:43.200 --> 00:33:46.399 +um I mentioned there were a number of + +00:33:46.399 --> 00:33:47.360 +bindings + +00:33:47.360 --> 00:33:51.600 +show them briefly we wrote our own + +00:33:51.600 --> 00:33:54.080 +functions to handle movement some of + +00:33:54.080 --> 00:33:56.640 +those in svg.el the left + +00:33:56.640 --> 00:33:59.679 +uh left and right movements didn't + +00:33:59.679 --> 00:34:02.640 +didn't seem to work quite quite likely + +00:34:02.640 --> 00:34:03.120 +coding + +00:34:03.120 --> 00:34:06.720 +of course + +00:34:06.720 --> 00:34:09.760 +um all right enough + +00:34:09.760 --> 00:34:11.760 +so let's let's see if battleboard works + +00:34:11.760 --> 00:34:13.040 +now + +00:34:13.040 --> 00:34:15.760 +I really thought that was on f7 up + +00:34:15.760 --> 00:34:17.040 +that's the character sheet + +00:34:17.040 --> 00:34:19.679 +sweet that's why you stay out of user + +00:34:19.679 --> 00:34:24.879 +bindings + +00:34:24.879 --> 00:34:28.079 +so that looks a little better + +00:34:28.079 --> 00:34:33.919 +so let's talk about the character sheet + +00:34:33.919 --> 00:34:35.919 +yeah + +00:34:35.919 --> 00:34:38.000 +so the character sheet was our first big + +00:34:38.000 --> 00:34:39.839 +uh repurposing + +00:34:39.839 --> 00:34:42.560 +of the engine that we couldn't do uh the + +00:34:42.560 --> 00:34:44.159 +battle board program + +00:34:44.159 --> 00:34:53.599 +that uh let's see if that runs now too + +00:34:53.599 --> 00:35:00.880 +uh it's not interactive if it does + +00:35:00.880 --> 00:35:04.960 +good + +00:35:04.960 --> 00:35:08.480 +no + +00:35:08.480 --> 00:35:11.760 +try let cemex guess no joy all right I'm + +00:35:11.760 --> 00:35:13.040 +not sure what's up with the battle board + +00:35:13.040 --> 00:35:14.079 +eric + +00:35:14.079 --> 00:35:15.280 +we haven't messed with that one for a + +00:35:15.280 --> 00:35:17.119 +while in fact um + +00:35:17.119 --> 00:35:18.880 +we had discussed using its code as an + +00:35:18.880 --> 00:35:21.040 +example so maybe we'll debug it with you + +00:35:21.040 --> 00:35:22.640 +um I'll certainly check for questions + +00:35:22.640 --> 00:35:25.359 +first um + +00:35:25.359 --> 00:35:28.079 +the uh so the character sheet which is + +00:35:28.079 --> 00:35:31.280 +not scaling ideally here + +00:35:31.280 --> 00:35:35.680 +see if reloading it does anything + +00:35:35.680 --> 00:35:39.440 +nope not as far as I can tell assuming + +00:35:39.440 --> 00:35:40.960 +you don't have this scale implemented + +00:35:40.960 --> 00:35:42.800 +for character sheet + +00:35:42.800 --> 00:35:44.960 +that's right there's everything in scale + +00:35:44.960 --> 00:35:46.800 +it take in order to get what you were + +00:35:46.800 --> 00:35:54.079 +looking at there + +00:35:54.079 --> 00:35:58.640 +all right this uh + +00:35:58.640 --> 00:36:02.240 +this whole thing is hard-coded + +00:36:02.240 --> 00:36:05.440 +basically to the gills except + +00:36:05.440 --> 00:36:09.040 +for things like this this program + +00:36:09.040 --> 00:36:10.640 +represents a re-implementation of the + +00:36:10.640 --> 00:36:11.040 +draw + +00:36:11.040 --> 00:36:14.880 +engine using um all of the same things + +00:36:14.880 --> 00:36:19.599 +let's see that's selected so + +00:36:19.599 --> 00:36:21.680 +uh we'll just try bringing up a map + +00:36:21.680 --> 00:36:23.119 +again + +00:36:23.119 --> 00:36:26.320 +there's one and you'll notice um dm + +00:36:26.320 --> 00:36:28.560 +map doesn't know anything about the new + +00:36:28.560 --> 00:36:29.839 +draw engine + +00:36:29.839 --> 00:36:31.599 +and there are a couple of places where + +00:36:31.599 --> 00:36:33.520 +the new draw engine is still + +00:36:33.520 --> 00:36:36.480 +hooked in to the s for example + +00:36:36.480 --> 00:36:37.440 +particularly + +00:36:37.440 --> 00:36:39.680 +the sizing of the graph paper background + +00:36:39.680 --> 00:36:41.119 +so I've started the work + +00:36:41.119 --> 00:36:44.240 +in dmdraw.el + +00:36:44.240 --> 00:36:47.040 +of trying to show how exactly we did + +00:36:47.040 --> 00:36:47.440 +this + +00:36:47.440 --> 00:36:50.160 +removing the how did we get data out of + +00:36:50.160 --> 00:36:51.760 +org mode that I talked about yesterday + +00:36:51.760 --> 00:36:53.280 +with our etl flows + +00:36:53.280 --> 00:36:56.480 +and just focusing on + +00:36:56.480 --> 00:36:58.960 +how did we solve the problem of + +00:36:58.960 --> 00:37:00.160 +predicated drawing + +00:37:00.160 --> 00:37:01.839 +which I realized we didn't really talk + +00:37:01.839 --> 00:37:05.200 +about so should I jump into that + +00:37:05.200 --> 00:37:07.760 +yeah I guess uh how are we on time we + +00:37:07.760 --> 00:37:09.280 +have time for detours + +00:37:09.280 --> 00:37:11.359 +um yeah it looks like we could spend two + +00:37:11.359 --> 00:37:12.800 +or three minutes on that and then + +00:37:12.800 --> 00:37:15.599 +uh come back for the questions cool do + +00:37:15.599 --> 00:37:17.680 +it + +00:37:17.680 --> 00:37:20.480 +and I'm just gonna peek into my org mode + +00:37:20.480 --> 00:37:20.800 +by + +00:37:20.800 --> 00:37:23.200 +into my chat conference and I don't see + +00:37:23.200 --> 00:37:24.960 +anybody talking to me from the organizer + +00:37:24.960 --> 00:37:25.520 +channel + +00:37:25.520 --> 00:37:26.560 +so I'm going to assume that's a good + +00:37:26.560 --> 00:37:28.800 +guess + +00:37:28.800 --> 00:37:32.079 +um all right so let's let's go ahead and + +00:37:32.079 --> 00:37:34.160 +play with the map a little then that is + +00:37:34.160 --> 00:37:37.760 +uh pretty fun and and uh so much fun + +00:37:37.760 --> 00:37:39.440 +that we had to curtail play sessions in + +00:37:39.440 --> 00:37:41.760 +order to keep working on the project + +00:37:41.760 --> 00:37:45.119 +um + +00:37:45.119 --> 00:37:48.480 +so uh I'll + +00:37:48.480 --> 00:37:51.839 +I'll do the + +00:37:51.839 --> 00:37:55.920 +um we'll try to find something different + +00:37:55.920 --> 00:38:01.040 +from any gif I've shared here right + +00:38:01.040 --> 00:38:03.359 +so here we are in a random go ahead eric + +00:38:03.359 --> 00:38:05.760 +you phil + +00:38:05.760 --> 00:38:08.240 +oh okay so what what what corwin is + +00:38:08.240 --> 00:38:10.000 +doing here is he's about to put the + +00:38:10.000 --> 00:38:13.359 +the map into play mode um + +00:38:13.359 --> 00:38:16.800 +which is going to turn on the fog of war + +00:38:16.800 --> 00:38:19.920 +and then we're gonna use + +00:38:19.920 --> 00:38:23.040 +the fog of war and the the play mode to + +00:38:23.040 --> 00:38:24.560 +kind of reveal the map + +00:38:24.560 --> 00:38:26.240 +one square at a time like we would + +00:38:26.240 --> 00:38:28.160 +during a play session + +00:38:28.160 --> 00:38:29.920 +so we'll just drop the party randomly + +00:38:29.920 --> 00:38:31.280 +somewhere onto this map + +00:38:31.280 --> 00:38:33.839 +looks like we're on alpha maze level + +00:38:33.839 --> 00:38:36.079 +three here + +00:38:36.079 --> 00:38:40.800 +and um + +00:38:40.800 --> 00:38:46.320 +uh-oh then we'll walk around a little + +00:38:46.320 --> 00:38:50.480 +okay there we go we're halfway there + +00:38:50.480 --> 00:38:52.160 +I'll have to I'll have to do a full + +00:38:52.160 --> 00:38:53.520 +redraw + +00:38:53.520 --> 00:38:55.920 +uh the sketch the sketching stuff has + +00:38:55.920 --> 00:38:58.480 +has has broken things here like I said + +00:38:58.480 --> 00:39:00.240 +the two aren't separated once I run them + +00:39:00.240 --> 00:39:01.599 +in the same instance they're not + +00:39:01.599 --> 00:39:03.520 +predictable + +00:39:03.520 --> 00:39:05.359 +okay so let me elaborate here when he + +00:39:05.359 --> 00:39:07.040 +says the sketching stuff + +00:39:07.040 --> 00:39:10.560 +the current um focus of our work is to + +00:39:10.560 --> 00:39:13.520 +turn all of this map stuff we've got + +00:39:13.520 --> 00:39:14.320 +into + +00:39:14.320 --> 00:39:17.920 +a basically a wysiwyg map editor + +00:39:17.920 --> 00:39:20.880 +where we can get into the tiles and + +00:39:20.880 --> 00:39:22.160 +we'll be able to + +00:39:22.160 --> 00:39:24.480 +select the tile and basically rubber + +00:39:24.480 --> 00:39:26.560 +stamp it into a map + +00:39:26.560 --> 00:39:29.680 +graphically and then save the map file + +00:39:29.680 --> 00:39:30.000 +out + +00:39:30.000 --> 00:39:33.280 +and load it back in later so that um + +00:39:33.280 --> 00:39:36.720 +we're able to you know just pound out + +00:39:36.720 --> 00:39:38.480 +these maps real fast + +00:39:38.480 --> 00:39:42.000 +um using a graphical editor rather than + +00:39:42.000 --> 00:39:43.200 +having to hand code + +00:39:43.200 --> 00:39:45.440 +every symbol and every square of the + +00:39:45.440 --> 00:39:48.000 +tables + +00:39:48.000 --> 00:39:52.960 +so the process of doing that um + +00:39:52.960 --> 00:39:54.800 +things are a mess we've got covers off + +00:39:54.800 --> 00:39:56.720 +there's wires hanging out + +00:39:56.720 --> 00:39:58.720 +um different stuff works on different + +00:39:58.720 --> 00:40:03.119 +days + +00:40:03.119 --> 00:40:05.200 +well I will say in our defense this is + +00:40:05.200 --> 00:40:07.119 +exactly why we staged a complicated + +00:40:07.119 --> 00:40:07.520 +thing + +00:40:07.520 --> 00:40:09.680 +and uh probably we should have just gone + +00:40:09.680 --> 00:40:11.119 +with that instead of + +00:40:11.119 --> 00:40:14.160 +trying to give you uh the experience + +00:40:14.160 --> 00:40:17.760 +of of of what it's like uh to use Emacs + +00:40:17.760 --> 00:40:19.200 +to do this which is + +00:40:19.200 --> 00:40:21.359 +which is sort of the last minute thought + +00:40:21.359 --> 00:40:23.280 +there and my apologies for that + +00:40:23.280 --> 00:40:25.119 +if that's made it harder to follow the + +00:40:25.119 --> 00:40:27.200 +thread let's check back now for + +00:40:27.200 --> 00:40:28.240 +questions + +00:40:28.240 --> 00:40:30.000 +and see if anybody wants to redirect at + +00:40:30.000 --> 00:40:36.640 +all + +00:40:36.640 --> 00:40:39.599 +so yep this so what you're looking at + +00:40:39.599 --> 00:40:40.800 +all uses prog + +00:40:40.800 --> 00:40:44.880 +pragmatic svg uh + +00:40:44.880 --> 00:40:47.760 +svg generation uh for question number + +00:40:47.760 --> 00:40:49.119 +four there have you played with + +00:40:49.119 --> 00:40:52.000 +generating svgs pragmatically in Emacs + +00:40:52.000 --> 00:40:55.119 +that is what the maps are doing um in + +00:40:55.119 --> 00:40:55.680 +terms + +00:40:55.680 --> 00:40:58.480 +of uh uh we should have been maybe more + +00:40:58.480 --> 00:41:00.400 +explicit about that we started hand + +00:41:00.400 --> 00:41:01.680 +coding things and + +00:41:01.680 --> 00:41:05.119 +once we got the idea of what the code + +00:41:05.119 --> 00:41:06.400 +was going to look like + +00:41:06.400 --> 00:41:09.359 +we switched to doing it programmatically + +00:41:09.359 --> 00:41:10.000 +so + +00:41:10.000 --> 00:41:12.880 +um we were going to open up maybe now if + +00:41:12.880 --> 00:41:14.640 +we've got time we can get into the tile + +00:41:14.640 --> 00:41:15.839 +set real quick + +00:41:15.839 --> 00:41:18.640 +sure we definitely didn't do any of the + +00:41:18.640 --> 00:41:20.560 +pathing slides and so now we've skipped + +00:41:20.560 --> 00:41:23.040 +over some stuff we were going to present + +00:41:23.040 --> 00:41:25.040 +yeah that's right we skipped a whole + +00:41:25.040 --> 00:41:26.880 +bunch of slides and I can certainly uh + +00:41:26.880 --> 00:41:28.160 +go back to them they're open here + +00:41:28.160 --> 00:41:31.040 +obviously + +00:41:31.040 --> 00:41:33.599 +um right I was just showing off the + +00:41:33.599 --> 00:41:34.480 +sketching + +00:41:34.480 --> 00:41:36.880 +tool uh briefly in that context but I + +00:41:36.880 --> 00:41:38.000 +think you're right let's + +00:41:38.000 --> 00:41:40.000 +we can jump over to the actually I + +00:41:40.000 --> 00:41:41.280 +should finish with this now having + +00:41:41.280 --> 00:41:42.000 +teased it + +00:41:42.000 --> 00:41:45.119 +so let's do the same thing here ctrl h m + +00:41:45.119 --> 00:41:47.119 +and you'll see in this case there are + +00:41:47.119 --> 00:41:48.560 +very few keyboard + +00:41:48.560 --> 00:41:52.160 +key bindings that are set up um even + +00:41:52.160 --> 00:41:55.359 +this uh shift delete has a tera uh + +00:41:55.359 --> 00:41:59.280 +or shift with uh + +00:41:59.280 --> 00:42:02.560 +yeah control delete it would seem to be + +00:42:02.560 --> 00:42:05.680 +so that has couple obvious bugs with it + +00:42:05.680 --> 00:42:07.119 +right didn't pick it didn't pick up + +00:42:07.119 --> 00:42:09.280 +those control points until I reused them + +00:42:09.280 --> 00:42:11.280 +not clearing that stack + +00:42:11.280 --> 00:42:13.760 +um and also should probably think about + +00:42:13.760 --> 00:42:14.480 +whether + +00:42:14.480 --> 00:42:16.720 +the origin should return and hey marking + +00:42:16.720 --> 00:42:18.400 +that origin would be nice + +00:42:18.400 --> 00:42:19.839 +so there's a tremendous amount to do + +00:42:19.839 --> 00:42:21.680 +here this is just uh + +00:42:21.680 --> 00:42:24.400 +showing that it is possible to use + +00:42:24.400 --> 00:42:26.079 +essentially like a touch input + +00:42:26.079 --> 00:42:31.680 +to um uh + +00:42:31.680 --> 00:42:35.119 +yeah and then also we can switch over to + +00:42:35.119 --> 00:42:35.760 +our place + +00:42:35.760 --> 00:42:39.040 +tool and + +00:42:39.040 --> 00:42:43.040 +um hopefully we can get a nice big menu + +00:42:43.040 --> 00:42:45.040 +of all the tiles that eric prepared for + +00:42:45.040 --> 00:42:49.440 +the game maps + +00:42:49.440 --> 00:42:51.680 +uh that was probably a terrible choice + +00:42:51.680 --> 00:42:53.119 +but there you have just a bit of + +00:42:53.119 --> 00:42:56.800 +corridor right + +00:42:56.800 --> 00:43:00.480 +that looks + +00:43:00.480 --> 00:43:04.560 +uh and even the click yep and this this + +00:43:04.560 --> 00:43:06.160 +glitch action here is the last thing I + +00:43:06.160 --> 00:43:07.280 +was working on before I dropped + +00:43:07.280 --> 00:43:08.079 +everything to + +00:43:08.079 --> 00:43:10.079 +to build the decks that uh we will soon + +00:43:10.079 --> 00:43:14.240 +share for this conference + +00:43:14.240 --> 00:43:19.680 +so okay back to the tile sets + +00:43:19.680 --> 00:43:22.160 +right so the way we approached drawing + +00:43:22.160 --> 00:43:23.440 +it programmatically + +00:43:23.440 --> 00:43:25.200 +is we broke our code up into little + +00:43:25.200 --> 00:43:27.280 +snippets we called tiles + +00:43:27.280 --> 00:43:29.280 +um corman's going to open up the tile + +00:43:29.280 --> 00:43:32.160 +set here basically each tile has a name + +00:43:32.160 --> 00:43:35.280 +and then with that name we place data + +00:43:35.280 --> 00:43:37.920 +into different layers of the image + +00:43:37.920 --> 00:43:40.640 +some of the layers are just svg paths + +00:43:40.640 --> 00:43:41.280 +and + +00:43:41.280 --> 00:43:44.880 +the data is just svg commands + +00:43:44.880 --> 00:43:47.920 +like we saw in that handwritten code and + +00:43:47.920 --> 00:43:50.960 +some of it is compositions of other + +00:43:50.960 --> 00:43:54.160 +tiles so a tile can be made up of other + +00:43:54.160 --> 00:43:56.160 +tiles + +00:43:56.160 --> 00:43:58.000 +furthermore some of these tiles have + +00:43:58.000 --> 00:43:59.599 +conditional code in it + +00:43:59.599 --> 00:44:02.319 +where like some of this stuff is talking + +00:44:02.319 --> 00:44:02.720 +about + +00:44:02.720 --> 00:44:06.560 +elf and bang elf so the map is going to + +00:44:06.560 --> 00:44:08.079 +be drawn differently depending + +00:44:08.079 --> 00:44:09.440 +on whether or not there's elves in the + +00:44:09.440 --> 00:44:11.200 +party + +00:44:11.200 --> 00:44:16.880 +um so and that's the demo they broke + +00:44:16.880 --> 00:44:18.240 +the engine has to make all those + +00:44:18.240 --> 00:44:20.000 +decisions um + +00:44:20.000 --> 00:44:21.599 +and that's what we're calling predicated + +00:44:21.599 --> 00:44:23.280 +drawing oh there's a + +00:44:23.280 --> 00:44:25.200 +special room here do you have any elves + +00:44:25.200 --> 00:44:26.480 +you do so I draw + +00:44:26.480 --> 00:44:32.880 +there is elf's way um + +00:44:32.880 --> 00:44:35.839 +yeah so we built up the set of tiles and + +00:44:35.839 --> 00:44:36.319 +then + +00:44:36.319 --> 00:44:39.920 +um we basically made map files which + +00:44:39.920 --> 00:44:43.760 +take um our map and break it up into xy + +00:44:43.760 --> 00:44:47.839 +grids and then we drop these tiles into + +00:44:47.839 --> 00:44:50.240 +positions on the map so we can use the + +00:44:50.240 --> 00:44:52.000 +same tile square after square after + +00:44:52.000 --> 00:44:52.480 +square + +00:44:52.480 --> 00:44:54.720 +when there's a corridor north south it's + +00:44:54.720 --> 00:44:55.680 +the same tile + +00:44:55.680 --> 00:44:59.119 +over and over again and that makes it + +00:44:59.119 --> 00:45:02.400 +easy to reuse the code and then also + +00:45:02.400 --> 00:45:05.920 +when uh + +00:45:05.920 --> 00:45:10.560 +when we go to present um the + +00:45:10.560 --> 00:45:13.520 +what am I trying to say the the drawing + +00:45:13.520 --> 00:45:15.839 +in in fog of war mode as we move down + +00:45:15.839 --> 00:45:18.000 +the corridor we can just add the + +00:45:18.000 --> 00:45:20.640 +necessary code one bit at a time to the + +00:45:20.640 --> 00:45:23.440 +visible image so that what we're + +00:45:23.440 --> 00:45:24.960 +displaying doesn't contain + +00:45:24.960 --> 00:45:27.359 +any data except what the party has + +00:45:27.359 --> 00:45:30.240 +already discovered + +00:45:30.240 --> 00:45:32.319 +and thus we have kind of spoiler rich + +00:45:32.319 --> 00:45:34.400 +documents sitting on the gm + +00:45:34.400 --> 00:45:37.359 +server and then less you know and + +00:45:37.359 --> 00:45:38.400 +spoiler-free + +00:45:38.400 --> 00:45:41.440 +data that flows down to the org mode uh + +00:45:41.440 --> 00:45:44.000 +files on the player system and the only + +00:45:44.000 --> 00:45:47.040 +real challenge is making sure that the + +00:45:47.040 --> 00:45:50.160 +the nothing that the game does can mess + +00:45:50.160 --> 00:45:50.960 +with the + +00:45:50.960 --> 00:45:54.480 +the the users the the players data file + +00:45:54.480 --> 00:45:55.280 +in case they + +00:45:55.280 --> 00:45:57.680 +might have their own notes and things in + +00:45:57.680 --> 00:46:00.160 +it that that would be the one + +00:46:00.160 --> 00:46:06.160 +uh you know number one thing to avoid + +00:46:06.160 --> 00:46:08.000 +another thing we can talk about here is + +00:46:08.000 --> 00:46:09.680 +that there are layers + +00:46:09.680 --> 00:46:11.839 +you can see this table at the bottom has + +00:46:11.839 --> 00:46:13.520 +tile and overlay + +00:46:13.520 --> 00:46:15.119 +the overlay column is just going to + +00:46:15.119 --> 00:46:17.040 +contain some actual svg + +00:46:17.040 --> 00:46:20.800 +xml style tags um so that's where we can + +00:46:20.800 --> 00:46:21.599 +add whatever + +00:46:21.599 --> 00:46:25.359 +text elements or other svg like raw svg + +00:46:25.359 --> 00:46:26.720 +tags we want + +00:46:26.720 --> 00:46:28.880 +whereas a lot of the other layers are + +00:46:28.880 --> 00:46:30.560 +going to be like path layers we've got + +00:46:30.560 --> 00:46:32.960 +water layers and beach layers + +00:46:32.960 --> 00:46:35.359 +and our plan was to have a style sheet + +00:46:35.359 --> 00:46:37.680 +that defines how each of those layers + +00:46:37.680 --> 00:46:38.720 +are represented + +00:46:38.720 --> 00:46:40.720 +so like when the water gets drawn blue + +00:46:40.720 --> 00:46:42.160 +and it's got arrows on it + +00:46:42.160 --> 00:46:45.520 +giving it direction um all of that + +00:46:45.520 --> 00:46:47.680 +can be customized with a style sheet to + +00:46:47.680 --> 00:46:49.200 +change the water to be + +00:46:49.200 --> 00:46:51.200 +whatever you want and like we have + +00:46:51.200 --> 00:46:52.960 +beaches as yellow but maybe you like + +00:46:52.960 --> 00:46:54.319 +beaches as red or + +00:46:54.319 --> 00:46:57.359 +you know whatever so we also built + +00:46:57.359 --> 00:47:01.200 +some test programs um + +00:47:01.200 --> 00:47:04.079 +and various of the I'm not not sure what + +00:47:04.079 --> 00:47:05.359 +kind of shape we're gonna find these in + +00:47:05.359 --> 00:47:07.040 +but we can try running them + +00:47:07.040 --> 00:47:10.640 +um here for example is just a + +00:47:10.640 --> 00:47:12.960 +very basic all of using a saint using + +00:47:12.960 --> 00:47:15.119 +the same file to define + +00:47:15.119 --> 00:47:18.560 +the tiles and and then + +00:47:18.560 --> 00:47:24.880 +the layout so to speak oh look at that + +00:47:24.880 --> 00:47:26.640 +uh there's the layout okay so that + +00:47:26.640 --> 00:47:28.960 +actually looks fine tile + +00:47:28.960 --> 00:47:30.960 +and it's pat so this is defining a tile + +00:47:30.960 --> 00:47:32.400 +named seas + +00:47:32.400 --> 00:47:35.440 +and uh it's gonna have a list of tiles + +00:47:35.440 --> 00:47:38.720 +defined above um and you'll notice also + +00:47:38.720 --> 00:47:41.839 +that we can just sort of freely define + +00:47:41.839 --> 00:47:44.559 +and redefine and it sort of figures out + +00:47:44.559 --> 00:47:46.160 +oh this must still be part of the b + +00:47:46.160 --> 00:47:50.839 +row um we could also have done + +00:47:50.839 --> 00:48:00.000 +this + +00:48:00.000 --> 00:48:02.160 +okay so this would this would work as + +00:48:02.160 --> 00:48:08.480 +would this + +00:48:08.480 --> 00:48:11.599 +one of uh early on in development when + +00:48:11.599 --> 00:48:12.720 +we were talking about + +00:48:12.720 --> 00:48:14.400 +getting data in and out of these org + +00:48:14.400 --> 00:48:15.839 +tables it + +00:48:15.839 --> 00:48:19.440 +was kind of a priority to us to + +00:48:19.440 --> 00:48:22.319 +leave the way the data is organized open + +00:48:22.319 --> 00:48:23.040 +to + +00:48:23.040 --> 00:48:26.960 +the users and to the dungeon masters so + +00:48:26.960 --> 00:48:30.720 +while we set our tile set apart from our + +00:48:30.720 --> 00:48:32.559 +map sets + +00:48:32.559 --> 00:48:35.440 +this clearly shows that you can cram a + +00:48:35.440 --> 00:48:38.319 +tile set and a map into a single file + +00:48:38.319 --> 00:48:41.040 +so in situations like the surface where + +00:48:41.040 --> 00:48:43.040 +we're using different tiles from other + +00:48:43.040 --> 00:48:43.760 +maps + +00:48:43.760 --> 00:48:46.559 +maybe it makes sense to move you know + +00:48:46.559 --> 00:48:48.079 +those tiles just into the file + +00:48:48.079 --> 00:48:50.559 +with your map or like it's hard for us + +00:48:50.559 --> 00:48:52.400 +to predict how other people are going to + +00:48:52.400 --> 00:48:54.319 +want to use this when they design their + +00:48:54.319 --> 00:48:55.119 +games + +00:48:55.119 --> 00:48:57.359 +so we wanted to leave it as versatile as + +00:48:57.359 --> 00:48:58.160 +possible + +00:48:58.160 --> 00:49:01.599 +about how you can use it where it + +00:49:01.599 --> 00:49:02.640 +matters right + +00:49:02.640 --> 00:49:04.319 +not support every feature in the world I + +00:49:04.319 --> 00:49:05.920 +can't count the number of times I said + +00:49:05.920 --> 00:49:07.280 +eric eric eric + +00:49:07.280 --> 00:49:09.200 +hey if we do it like this people will be + +00:49:09.200 --> 00:49:10.800 +able and he just like + +00:49:10.800 --> 00:49:14.000 +does it have to do that do we do we does + +00:49:14.000 --> 00:49:14.480 +it like + +00:49:14.480 --> 00:49:17.920 +do we need it right away uh + +00:49:17.920 --> 00:49:19.599 +do you have to really rewrite everything + +00:49:19.599 --> 00:49:21.040 +so it can all do that + +00:49:21.040 --> 00:49:24.160 +and uh a lot of those + +00:49:24.160 --> 00:49:26.880 +a lot of those conversations too but the + +00:49:26.880 --> 00:49:28.240 +the key flexibilities + +00:49:28.240 --> 00:49:31.200 +are really there people might want to + +00:49:31.200 --> 00:49:32.559 +use a lot of different files they might + +00:49:32.559 --> 00:49:34.160 +want to lay the tables out however they + +00:49:34.160 --> 00:49:35.760 +want they have to be able to say hey + +00:49:35.760 --> 00:49:37.440 +this is a table that has + +00:49:37.440 --> 00:49:39.440 +data that's controlled by the game and + +00:49:39.440 --> 00:49:40.720 +everything else in the file + +00:49:40.720 --> 00:49:44.079 +is not the game's problem + +00:49:44.079 --> 00:49:45.920 +on our table some of our tables started + +00:49:45.920 --> 00:49:47.440 +getting really wide so we started + +00:49:47.440 --> 00:49:48.960 +striping the tables + +00:49:48.960 --> 00:49:51.119 +where we'll repeat the same table over + +00:49:51.119 --> 00:49:52.640 +and over and over again to + +00:49:52.640 --> 00:49:56.400 +get all of the columns in there without + +00:49:56.400 --> 00:49:59.119 +making it you know a million miles wide + +00:49:59.119 --> 00:49:59.599 +yeah + +00:49:59.599 --> 00:50:01.040 +do you want to should I go ahead and + +00:50:01.040 --> 00:50:02.640 +pull open like a level here + +00:50:02.640 --> 00:50:06.079 +do you think sure just to have shown it + +00:50:06.079 --> 00:50:08.319 +the aisle set's a great example of + +00:50:08.319 --> 00:50:09.680 +striped tables if you + +00:50:09.680 --> 00:50:11.119 +look down like in the level change + +00:50:11.119 --> 00:50:18.800 +feature oh sure + +00:50:18.800 --> 00:50:20.240 +sorry I'm not quite sitting well to my + +00:50:20.240 --> 00:50:22.400 +keyboard here I can just readjust things + +00:50:22.400 --> 00:50:30.079 +real quick + +00:50:30.079 --> 00:50:33.280 +so what you know you can see here + +00:50:33.280 --> 00:50:35.200 +like some of these tables got real wide + +00:50:35.200 --> 00:50:36.800 +when we're stuffing svg + +00:50:36.800 --> 00:50:40.559 +tags into them and what we + +00:50:40.559 --> 00:50:44.160 +oh maybe it's not in these + +00:50:44.160 --> 00:50:50.079 +I thought it was + +00:50:50.079 --> 00:50:52.960 +special probably yeah no there it is + +00:50:52.960 --> 00:50:54.240 +yeah + +00:50:54.240 --> 00:50:56.000 +it was in level change it does the table + +00:50:56.000 --> 00:50:58.720 +can you repeat okay great + +00:50:58.720 --> 00:51:00.640 +up and down so fast I didn't realize so + +00:51:00.640 --> 00:51:01.920 +this first table + +00:51:01.920 --> 00:51:05.680 +we've got path and what is that stairs + +00:51:05.680 --> 00:51:08.800 +so the stairs level is one that draws in + +00:51:08.800 --> 00:51:10.079 +like a pink color + +00:51:10.079 --> 00:51:11.920 +to highlight the places where you can + +00:51:11.920 --> 00:51:13.440 +change level + +00:51:13.440 --> 00:51:15.200 +and then if we scroll down to the second + +00:51:15.200 --> 00:51:17.200 +half of this section + +00:51:17.200 --> 00:51:19.359 +the second table is going to have all of + +00:51:19.359 --> 00:51:20.960 +these same tiles in it but + +00:51:20.960 --> 00:51:22.800 +instead of path and stairs we're going + +00:51:22.800 --> 00:51:24.720 +to have other + +00:51:24.720 --> 00:51:27.920 +columns can we + +00:51:27.920 --> 00:51:31.680 +see the next table + +00:51:31.680 --> 00:51:33.839 +there we go so the same tiles only here + +00:51:33.839 --> 00:51:35.359 +we've got overlay + +00:51:35.359 --> 00:51:38.720 +documentation and behavior and I guess + +00:51:38.720 --> 00:51:40.319 +we haven't talked about this at all the + +00:51:40.319 --> 00:51:41.839 +behavior column + +00:51:41.839 --> 00:51:44.880 +was our concept of a way that we could + +00:51:44.880 --> 00:51:47.520 +attach + +00:51:47.520 --> 00:51:49.680 +functions basically to these different + +00:51:49.680 --> 00:51:51.359 +areas of the map + +00:51:51.359 --> 00:51:54.720 +because sometimes when you enter an area + +00:51:54.720 --> 00:51:57.760 +we want it to do something like + +00:51:57.760 --> 00:51:59.920 +when you enter a stairs down maybe we + +00:51:59.920 --> 00:52:02.319 +want it to change to the next level + +00:52:02.319 --> 00:52:04.559 +and draw the stairs up behind you and + +00:52:04.559 --> 00:52:06.160 +draw you where you are + +00:52:06.160 --> 00:52:09.200 +on the next level so + +00:52:09.200 --> 00:52:11.040 +these are like hooks where we could + +00:52:11.040 --> 00:52:12.240 +attach functions + +00:52:12.240 --> 00:52:16.400 +or you know macros or whatever to + +00:52:16.400 --> 00:52:18.480 +make the map have these behaviors as we + +00:52:18.480 --> 00:52:23.440 +get further towards automation + +00:52:23.440 --> 00:52:26.559 +cool um so that's that + +00:52:26.559 --> 00:52:30.839 +should be pretty close to our time + +00:52:30.839 --> 00:52:33.920 +um questions or just say goodbye + +00:52:33.920 --> 00:52:36.880 +um yeah so there's the I'm sorry we + +00:52:36.880 --> 00:52:38.559 +couldn't show it earlier there is the + +00:52:38.559 --> 00:52:40.000 +battle board + +00:52:40.000 --> 00:52:44.240 +um and so this is used just to keep + +00:52:44.240 --> 00:52:48.079 +track of hit points so with this example + +00:52:48.079 --> 00:52:49.319 +battle board + +00:52:49.319 --> 00:52:51.680 +dmbattleboard.el there's there's a + +00:52:51.680 --> 00:52:53.760 +complete example of not only + +00:52:53.760 --> 00:52:57.200 +in a single file repub filling out the + +00:52:57.200 --> 00:53:00.480 +the cells and the tiles but then coming + +00:53:00.480 --> 00:53:00.960 +in + +00:53:00.960 --> 00:53:04.640 +and keeping the org mode file in sync + +00:53:04.640 --> 00:53:05.280 +with + +00:53:05.280 --> 00:53:09.040 +with clicks so and I can press the star + +00:53:09.040 --> 00:53:12.319 +key and set my damage to -1 and + +00:53:12.319 --> 00:53:15.359 +take the damage back off I just haven't + +00:53:15.359 --> 00:53:16.400 +spent a lot of time + +00:53:16.400 --> 00:53:18.079 +building up fancy bindings for this + +00:53:18.079 --> 00:53:20.800 +you'll also find that the crew + +00:53:20.800 --> 00:53:23.119 +probably find how I figure out what was + +00:53:23.119 --> 00:53:23.839 +clicked on + +00:53:23.839 --> 00:53:26.880 +in the code hard but if I just assign + +00:53:26.880 --> 00:53:28.000 +something recognizable + +00:53:28.000 --> 00:53:33.520 +for damage and then come into + +00:53:33.520 --> 00:53:35.440 +it will now have opened the org mode + +00:53:35.440 --> 00:53:37.040 +file behind the scenes because it's + +00:53:37.040 --> 00:53:41.280 +changing it + +00:53:41.280 --> 00:53:44.640 +and we can then look at that file a + +00:53:44.640 --> 00:53:47.599 +little bit and hopefully + +00:53:47.599 --> 00:53:51.040 +that is un + +00:53:51.040 --> 00:53:53.440 +uh large enough you can kind of see + +00:53:53.440 --> 00:53:55.520 +there's our 17 damage landed + +00:53:55.520 --> 00:53:59.119 +in armor the logic that sits behind that + +00:53:59.119 --> 00:54:01.200 +to figure out the part of the screen + +00:54:01.200 --> 00:54:08.880 +is not necessarily our finest work + +00:54:08.880 --> 00:54:11.839 +uh uh but it but it does work and it's + +00:54:11.839 --> 00:54:12.319 +one for + +00:54:12.319 --> 00:54:14.000 +the stuff was used on the map a little + +00:54:14.000 --> 00:54:15.920 +bit too we didn't really need to show + +00:54:15.920 --> 00:54:17.520 +that in the demo but as you're scrolling + +00:54:17.520 --> 00:54:19.680 +around there's like a highlighter + +00:54:19.680 --> 00:54:22.960 +um that that you know we were drawing on + +00:54:22.960 --> 00:54:24.720 +shaft to show you which square you've + +00:54:24.720 --> 00:54:26.160 +got selected + +00:54:26.160 --> 00:54:28.800 +um because we were having trouble with + +00:54:28.800 --> 00:54:29.839 +that code + +00:54:29.839 --> 00:54:31.280 +initially and we were sometimes + +00:54:31.280 --> 00:54:36.839 +revealing the wrong + +00:54:36.839 --> 00:54:38.720 +okay + +00:54:38.720 --> 00:54:40.480 +and I don't know how we're set for time + +00:54:40.480 --> 00:54:42.160 +but I just saw a message + +00:54:42.160 --> 00:54:44.400 +um from trixie that she could jump on if + +00:54:44.400 --> 00:54:46.480 +we want her oh that would be amazing + +00:54:46.480 --> 00:54:47.920 +yeah go ahead and invite her in I'll + +00:54:47.920 --> 00:54:51.680 +just cut to the scene as soon as she's + +00:54:51.680 --> 00:54:56.160 +I in uh yeah so we're reaching the ask + +00:54:56.160 --> 00:54:56.799 +me any + +00:54:56.799 --> 00:54:58.960 +anything uh portion of the program here + +00:54:58.960 --> 00:55:01.200 +with what uh with what time we have left + +00:55:01.200 --> 00:55:02.559 +for your questions + +00:55:02.559 --> 00:55:05.200 +um please correct me if we're still like + +00:55:05.200 --> 00:55:06.160 +10 minutes + +00:55:06.160 --> 00:55:08.799 +you know if we're if we're more than + +00:55:08.799 --> 00:55:10.000 +like + +00:55:10.000 --> 00:55:12.640 +15 to 20 minutes from our time but I I + +00:55:12.640 --> 00:55:13.760 +suspect we've less weight + +00:55:13.760 --> 00:55:16.640 +left way less than that and out of + +00:55:16.640 --> 00:55:17.440 +respect for + +00:55:17.440 --> 00:55:24.319 +all the other presenters um + +00:55:24.319 --> 00:55:28.720 +oh I don't want to close that actually + +00:55:28.720 --> 00:55:30.640 +I think I may have found an old version + +00:55:30.640 --> 00:55:32.839 +of my slides that could have some good + +00:55:32.839 --> 00:55:35.200 +stuff + +00:55:35.200 --> 00:55:36.799 +it's been an event for a couple of weeks + +00:55:36.799 --> 00:55:38.799 +here I had a break in and uh + +00:55:38.799 --> 00:55:41.359 +my somebody got into our bank accounts + +00:55:41.359 --> 00:55:43.599 +and + +00:55:43.599 --> 00:55:46.880 +nasty business just a lot going on over + +00:55:46.880 --> 00:55:50.720 +over this whole year I think + +00:55:50.720 --> 00:55:53.040 +do we have more questions to shag or + +00:55:53.040 --> 00:55:53.839 +where + +00:55:53.839 --> 00:55:56.960 +sure so I think + +00:55:56.960 --> 00:55:58.799 +there was at least one we deferred a + +00:55:58.799 --> 00:56:01.040 +little bit uh what the game + +00:56:01.040 --> 00:56:05.040 +is + +00:56:05.040 --> 00:56:06.799 +uh always eight characters that can be + +00:56:06.799 --> 00:56:08.400 +divided right that's so always eight + +00:56:08.400 --> 00:56:10.000 +characters that can be divided between + +00:56:10.000 --> 00:56:12.160 +the party is the classic formula + +00:56:12.160 --> 00:56:14.319 +it actually works pretty well for a + +00:56:14.319 --> 00:56:16.240 +conversational group remember that + +00:56:16.240 --> 00:56:17.760 +role-playing games are about talking to + +00:56:17.760 --> 00:56:18.480 +each other + +00:56:18.480 --> 00:56:20.000 +and being good at them is about taking + +00:56:20.000 --> 00:56:22.079 +excellent notes so + +00:56:22.079 --> 00:56:23.200 +when you're sitting around with a group + +00:56:23.200 --> 00:56:24.559 +of people and you're going to have to + +00:56:24.559 --> 00:56:25.920 +wait for them while they dig through + +00:56:25.920 --> 00:56:26.880 +their notes + +00:56:26.880 --> 00:56:28.720 +and listen to all of the things they + +00:56:28.720 --> 00:56:30.319 +find interesting to say + +00:56:30.319 --> 00:56:32.240 +and try to reach an imaginative place + +00:56:32.240 --> 00:56:34.160 +that you can stay together + +00:56:34.160 --> 00:56:36.160 +while you're doing all that and working + +00:56:36.160 --> 00:56:38.319 +in dice and remembering the rules + +00:56:38.319 --> 00:56:40.880 +it's actually a complicated activity I + +00:56:40.880 --> 00:56:43.200 +liken it more to a bridge game + +00:56:43.200 --> 00:56:46.240 +than to like uh + +00:56:46.240 --> 00:56:48.960 +you know parcheesi or perhaps even like + +00:56:48.960 --> 00:56:51.359 +risk or access and allies or other games + +00:56:51.359 --> 00:56:52.160 +that + +00:56:52.160 --> 00:56:54.319 +have have definitely the strategy to + +00:56:54.319 --> 00:56:56.160 +them but + +00:56:56.160 --> 00:57:00.160 +I don't eric your thoughts + +00:57:00.160 --> 00:57:03.920 +yeah I mean I think that's fair um + +00:57:03.920 --> 00:57:06.640 +you know yes definitely the the + +00:57:06.640 --> 00:57:08.160 +tradition is to always have eight + +00:57:08.160 --> 00:57:09.440 +characters in the party + +00:57:09.440 --> 00:57:12.079 +and you know one of the great things + +00:57:12.079 --> 00:57:13.760 +about dungeon is that everybody who + +00:57:13.760 --> 00:57:15.200 +writes their own dungeon + +00:57:15.200 --> 00:57:18.000 +gets to write their own rules and is + +00:57:18.000 --> 00:57:19.440 +free to change whatever + +00:57:19.440 --> 00:57:21.760 +you want and that being said I've + +00:57:21.760 --> 00:57:22.720 +certainly seen + +00:57:22.720 --> 00:57:25.839 +people try to take on challenging that + +00:57:25.839 --> 00:57:28.079 +always eight characters in a party + +00:57:28.079 --> 00:57:30.640 +thing um I've seen people take + +00:57:30.640 --> 00:57:32.640 +approaches like every player gets two + +00:57:32.640 --> 00:57:34.640 +characters and then you can have a party + +00:57:34.640 --> 00:57:36.319 +ranging from two to ten + +00:57:36.319 --> 00:57:38.079 +or there's always going to be ten or + +00:57:38.079 --> 00:57:40.000 +there's you know this or that or people + +00:57:40.000 --> 00:57:43.200 +have um tried stuff and none of it has + +00:57:43.200 --> 00:57:45.280 +really worked out very satisfactorily we + +00:57:45.280 --> 00:57:45.839 +always + +00:57:45.839 --> 00:57:48.319 +seem to keep coming back to our um party + +00:57:48.319 --> 00:57:49.680 +of eight + +00:57:49.680 --> 00:57:54.160 +yeah it's I I I I it's one of the things + +00:57:54.160 --> 00:57:55.839 +dungeon that you can't change when you + +00:57:55.839 --> 00:57:57.359 +write your own dungeon + +00:57:57.359 --> 00:57:58.720 +and that's the reason it's so + +00:57:58.720 --> 00:58:00.960 +complicated as a as a software + +00:58:00.960 --> 00:58:03.119 +project why it's taken us decades + +00:58:03.119 --> 00:58:04.559 +because + +00:58:04.559 --> 00:58:08.000 +trying to model the data for example or + +00:58:08.000 --> 00:58:11.280 +really any attempt to + +00:58:11.280 --> 00:58:14.160 +quantify it in specific terms always + +00:58:14.160 --> 00:58:15.680 +falls to examples + +00:58:15.680 --> 00:58:18.880 +well you know dungeons usually have + +00:58:18.880 --> 00:58:22.079 +elves dwarves and humans they have uh + +00:58:22.079 --> 00:58:25.280 +priests wizards and warriors uh they + +00:58:25.280 --> 00:58:27.599 +have eight characters in the party + +00:58:27.599 --> 00:58:30.000 +the bell rocks are particularly nasty + +00:58:30.000 --> 00:58:31.680 +and live in a room of some + +00:58:31.680 --> 00:58:35.119 +specific shape um spoilers + +00:58:35.119 --> 00:58:38.319 +uh right and we don't tell you the rules + +00:58:38.319 --> 00:58:39.520 +and that's what you know + +00:58:39.520 --> 00:58:40.960 +and you sit down at the table and you + +00:58:40.960 --> 00:58:42.640 +say what's your character name and + +00:58:42.640 --> 00:58:44.480 +what's your special power + +00:58:44.480 --> 00:58:48.400 +and and then I say uh I + +00:58:48.400 --> 00:58:51.599 +I I'm zelda and uh + +00:58:51.599 --> 00:58:53.839 +I I have this bridge that I can put down + +00:58:53.839 --> 00:58:56.000 +that always gets me across the river + +00:58:56.000 --> 00:58:59.040 +um so let's touch on special power real + +00:58:59.040 --> 00:58:59.359 +quick + +00:58:59.359 --> 00:59:01.119 +since that's one of the things that is + +00:59:01.119 --> 00:59:03.280 +kind of unique to dungeon + +00:59:03.280 --> 00:59:06.160 +and one of the things that is the + +00:59:06.160 --> 00:59:06.720 +biggest + +00:59:06.720 --> 00:59:08.960 +challenge to us in trying to code a + +00:59:08.960 --> 00:59:10.240 +system like this for + +00:59:10.240 --> 00:59:13.200 +automated play and that's that every + +00:59:13.200 --> 00:59:14.319 +character gets a + +00:59:14.319 --> 00:59:17.119 +unique special power and traditionally + +00:59:17.119 --> 00:59:18.000 +you negotiate + +00:59:18.000 --> 00:59:19.520 +your special power with the dungeon + +00:59:19.520 --> 00:59:21.839 +master when you create your character + +00:59:21.839 --> 00:59:24.079 +and occasionally throughout the course + +00:59:24.079 --> 00:59:25.839 +of the character's life their special + +00:59:25.839 --> 00:59:27.359 +power might change + +00:59:27.359 --> 00:59:29.920 +due to game circumstances usually it + +00:59:29.920 --> 00:59:33.280 +improves but sometimes not + +00:59:33.280 --> 00:59:34.960 +uh and that's those are the most fun + +00:59:34.960 --> 00:59:36.960 +conversations right sometimes we have + +00:59:36.960 --> 00:59:39.440 +fun gaming sessions where we barely get + +00:59:39.440 --> 00:59:41.760 +all the characters created and started + +00:59:41.760 --> 00:59:43.680 +because we get off into arguing about + +00:59:43.680 --> 00:59:45.440 +the special powers no zelda special + +00:59:45.440 --> 00:59:48.319 +powers obviously the candle come on + +00:59:48.319 --> 00:59:53.359 +also that was link not zelda + +00:59:53.359 --> 00:59:56.240 +I still have my t-shirt hey there she is + +00:59:56.240 --> 01:00:01.440 +let's cut scene + +01:00:01.440 --> 01:00:05.839 +you get video fun filters today because + +01:00:05.839 --> 01:00:07.359 +that's what we got going on over here + +01:00:07.359 --> 01:00:08.799 +today all right I'm gonna recut + +01:00:08.799 --> 01:00:18.079 +everybody hang on tight + +01:00:18.079 --> 01:00:20.799 +all right there's eric this is gonna be + +01:00:20.799 --> 01:00:23.200 +eric for a second hope + +01:00:23.200 --> 01:00:25.200 +no worries and welcome to the welcome to + +01:00:25.200 --> 01:00:27.440 +the stream uh trixie horror + +01:00:27.440 --> 01:00:30.960 +uh who is + +01:00:30.960 --> 01:00:32.720 +uh one of our project team members + +01:00:32.720 --> 01:00:34.559 +somebody who's learning Emacs as part of + +01:00:34.559 --> 01:00:35.440 +the project + +01:00:35.440 --> 01:00:38.480 +and um yeah I + +01:00:38.480 --> 01:00:40.720 +I I particularly wanted to invite you on + +01:00:40.720 --> 01:00:42.160 +to talk about your experience learning + +01:00:42.160 --> 01:00:44.319 +Emacs I think you have run into + +01:00:44.319 --> 01:00:46.079 +places where it's a pain in the butt to + +01:00:46.079 --> 01:00:47.839 +learn Emacs and that this is a safe + +01:00:47.839 --> 01:00:56.000 +space to talk about that + +01:00:56.000 --> 01:00:58.960 +jump into that by saying um the Emacs + +01:00:58.960 --> 01:01:00.640 +cheat sheet + +01:01:00.640 --> 01:01:02.880 +um I think it's the one that canoe puts + +01:01:02.880 --> 01:01:03.680 +out + +01:01:03.680 --> 01:01:07.680 +is a lifesaver um a little bit of a + +01:01:07.680 --> 01:01:09.440 +vocabulary disconnect + +01:01:09.440 --> 01:01:12.480 +like and this actually kind of comes up + +01:01:12.480 --> 01:01:13.359 +a lot + +01:01:13.359 --> 01:01:15.200 +in conversation with corona and eric and + +01:01:15.200 --> 01:01:18.000 +I but copy paste versus + +01:01:18.000 --> 01:01:21.920 +what yank and w + +01:01:21.920 --> 01:01:27.920 +whatever w + +01:01:27.920 --> 01:01:30.000 +why would you even do that to us right + +01:01:30.000 --> 01:01:31.200 +where where were you + +01:01:31.200 --> 01:01:33.359 +when zero's park happened no I I + +01:01:33.359 --> 01:01:38.480 +understand that makes sense what else + +01:01:38.480 --> 01:01:39.520 +I mean you don't have to sit here and + +01:01:39.520 --> 01:01:41.440 +rag on Emacs but we're here for that + +01:01:41.440 --> 01:01:43.119 +that's all I'm saying + +01:01:43.119 --> 01:01:44.400 +no I'm like that's been the biggest + +01:01:44.400 --> 01:01:46.799 +thing like I'm + +01:01:46.799 --> 01:01:49.920 +I'm used to like just kind of the + +01:01:49.920 --> 01:01:52.319 +very binary nature like nope that didn't + +01:01:52.319 --> 01:01:53.839 +work try something else + +01:01:53.839 --> 01:01:57.119 +so as long as you're like willing to try + +01:01:57.119 --> 01:01:59.200 +other stuff + +01:01:59.200 --> 01:02:02.880 +like Emacs will be fine so + +01:02:02.880 --> 01:02:06.559 +it's a tough cookie I can take it + +01:02:06.559 --> 01:02:08.960 +worst thing that happens is you have to + +01:02:08.960 --> 01:02:11.119 +really install it + +01:02:11.119 --> 01:02:13.520 +throw your ignite file that you + +01:02:13.520 --> 01:02:19.920 +hopefully have a backup of + +01:02:19.920 --> 01:02:22.079 +all right fine um are there more + +01:02:22.079 --> 01:02:24.640 +questions in the hopper + +01:02:24.640 --> 01:02:26.480 +yeah if anybody does have any questions + +01:02:26.480 --> 01:02:27.680 +up there uh + +01:02:27.680 --> 01:02:29.839 +for hope for eric or I so just to + +01:02:29.839 --> 01:02:32.000 +summarize I've known eric + +01:02:32.000 --> 01:02:34.240 +I've known eric my whole life I've known + +01:02:34.240 --> 01:02:36.160 +hope around a decade we + +01:02:36.160 --> 01:02:39.599 +worked together on a project for + +01:02:39.599 --> 01:02:44.559 +uh for a science fiction convention yeah + +01:02:44.559 --> 01:02:46.880 +we got conventions and then I also + +01:02:46.880 --> 01:02:48.960 +helped with I just wrote a bio + +01:02:48.960 --> 01:02:50.799 +so this should like all theoretically be + +01:02:50.799 --> 01:02:53.599 +in my head right + +01:02:53.599 --> 01:02:58.079 +I want I refer to my own bio + +01:02:58.079 --> 01:03:00.160 +I'm the project coordinator for dungeon + +01:03:00.160 --> 01:03:10.799 +mode + +01:03:10.799 --> 01:03:14.000 +um that's nice + +01:03:14.000 --> 01:03:16.400 +we've gotten a ton of support from a lot + +01:03:16.400 --> 01:03:18.000 +of our lifelong friends people + +01:03:18.000 --> 01:03:20.480 +and also people that we just met maybe + +01:03:20.480 --> 01:03:22.319 +that's a that's a great segue + +01:03:22.319 --> 01:03:25.039 +um do throw your questions in there I'm + +01:03:25.039 --> 01:03:26.400 +gonna fill for just a second and then + +01:03:26.400 --> 01:03:27.839 +we'll probably cut away + +01:03:27.839 --> 01:03:32.319 +um but uh + +01:03:32.319 --> 01:03:34.960 +uh I mean thematically actually that's + +01:03:34.960 --> 01:03:36.319 +that's too abrupt so we need to go + +01:03:36.319 --> 01:03:37.200 +around the room + +01:03:37.200 --> 01:03:39.119 +eric you had hours and hours to rehearse + +01:03:39.119 --> 01:03:40.720 +hope kind of jumped in on the last + +01:03:40.720 --> 01:03:41.359 +minute + +01:03:41.359 --> 01:03:43.520 +so let's let's is it okay to pick on you + +01:03:43.520 --> 01:03:46.319 +or do you want me to give mine + +01:03:46.319 --> 01:03:48.880 +uh to what are you asking me to do what + +01:03:48.880 --> 01:03:50.000 +do you what do you want people to take + +01:03:50.000 --> 01:03:51.359 +away from this talk + +01:03:51.359 --> 01:03:54.240 +you know as we think about dungeon and + +01:03:54.240 --> 01:03:55.280 +sharing it's + +01:03:55.280 --> 01:03:57.520 +sharing its tradition as we think about + +01:03:57.520 --> 01:03:58.799 +learning Emacs + +01:03:58.799 --> 01:04:02.799 +and like making that awesome um + +01:04:02.799 --> 01:04:04.880 +and just you know generally what's up + +01:04:04.880 --> 01:04:07.599 +with free software and trying to make + +01:04:07.599 --> 01:04:12.480 +computers a tool to make people freer + +01:04:12.480 --> 01:04:15.200 +wow that's like five questions yeah so + +01:04:15.200 --> 01:04:15.920 +I'm gonna start + +01:04:15.920 --> 01:04:18.960 +with jumping um I think + +01:04:18.960 --> 01:04:22.240 +that dungeon is a lot of fun and + +01:04:22.240 --> 01:04:25.359 +you know I'm I've played many + +01:04:25.359 --> 01:04:27.599 +commercial role-playing games over the + +01:04:27.599 --> 01:04:28.480 +years + +01:04:28.480 --> 01:04:31.680 +and I've enjoyed all of them and there + +01:04:31.680 --> 01:04:32.000 +are + +01:04:32.000 --> 01:04:34.720 +very few of them that I've had as many + +01:04:34.720 --> 01:04:36.319 +belly laughs and as much + +01:04:36.319 --> 01:04:40.160 +just joy playing as from dungeon + +01:04:40.160 --> 01:04:42.799 +and I think you know the magic of it is + +01:04:42.799 --> 01:04:43.280 +you know + +01:04:43.280 --> 01:04:45.520 +like any game like the real magic is the + +01:04:45.520 --> 01:04:47.200 +people you play with and having fun with + +01:04:47.200 --> 01:04:49.599 +your friends + +01:04:49.599 --> 01:04:51.280 +and what I would hope that people can + +01:04:51.280 --> 01:04:53.440 +take away from is that dungeon has the + +01:04:53.440 --> 01:04:55.920 +ability to be that magical thing + +01:04:55.920 --> 01:04:59.280 +and hopefully we can get our project to + +01:04:59.280 --> 01:05:00.000 +the point + +01:05:00.000 --> 01:05:02.160 +where it gets out of the way and lets + +01:05:02.160 --> 01:05:04.960 +you have that fun with your friends + +01:05:04.960 --> 01:05:07.200 +um but there's a lot of work to do we + +01:05:07.200 --> 01:05:08.240 +could use some help + +01:05:08.240 --> 01:05:10.880 +so if you're interested in having fun + +01:05:10.880 --> 01:05:20.960 +come help us build this fun tool + +01:05:20.960 --> 01:05:22.319 +all right so I just got the call that + +01:05:22.319 --> 01:05:24.079 +we've got just about two to three + +01:05:24.079 --> 01:05:25.039 +minutes left + +01:05:25.039 --> 01:05:28.160 +and we should start our wrap-up + +01:05:28.160 --> 01:05:31.440 +okay wrap up so + +01:05:31.440 --> 01:05:34.240 +yeah um so I'll I'll see if I can charge + +01:05:34.240 --> 01:05:35.920 +the room with some energy unless you're + +01:05:35.920 --> 01:05:38.480 +ready to have at it hope + +01:05:38.480 --> 01:05:40.720 +here here's here's what I want people to + +01:05:40.720 --> 01:05:42.799 +take away + +01:05:42.799 --> 01:05:47.039 +were you like no okay + +01:05:47.039 --> 01:05:53.599 +I'm not getting your audio hope + +01:05:53.599 --> 01:05:55.839 +it's okay on my end maybe I just need to + +01:05:55.839 --> 01:05:57.359 +speak up + +01:05:57.359 --> 01:05:58.880 +is this better let me know when I'm + +01:05:58.880 --> 01:06:00.640 +coming through yeah you're coming + +01:06:00.640 --> 01:06:01.680 +through now + +01:06:01.680 --> 01:06:05.359 +okay cool oh no I + +01:06:05.359 --> 01:06:08.799 +was gonna say go ahead I didn't okay + +01:06:08.799 --> 01:06:10.559 +I mean I I don't know that I know what I + +01:06:10.559 --> 01:06:12.880 +want to say either except a whole ton of + +01:06:12.880 --> 01:06:13.599 +thank yous + +01:06:13.599 --> 01:06:16.480 +so I will I will save those for the for + +01:06:16.480 --> 01:06:17.200 +the literal + +01:06:17.200 --> 01:06:20.880 +end here and instead + +01:06:20.880 --> 01:06:24.160 +what I would say is as we build + +01:06:24.160 --> 01:06:27.839 +our amazing innovations and + +01:06:27.839 --> 01:06:32.160 +explore our ideas in Emacs + +01:06:32.160 --> 01:06:35.119 +we are fighting our own ego for the will + +01:06:35.119 --> 01:06:36.079 +to get them done + +01:06:36.079 --> 01:06:37.680 +it's hard and we're not sure if they're + +01:06:37.680 --> 01:06:38.960 +going to be a good idea and will it + +01:06:38.960 --> 01:06:40.000 +excite people and part of our + +01:06:40.000 --> 01:06:41.680 +responsibility is to excite people so + +01:06:41.680 --> 01:06:43.440 +that they can feel good about liking + +01:06:43.440 --> 01:06:44.240 +them + +01:06:44.240 --> 01:06:45.680 +if you come off and you're like hey this + +01:06:45.680 --> 01:06:47.359 +is a terrible idea it's really hard to + +01:06:47.359 --> 01:06:47.920 +be like + +01:06:47.920 --> 01:06:49.760 +no I love that idea it works + +01:06:49.760 --> 01:06:51.200 +theatrically but + +01:06:51.200 --> 01:06:55.680 +in larger groups may not scale + +01:06:55.680 --> 01:06:58.400 +so that's a crucible for ideas and a + +01:06:58.400 --> 01:07:00.400 +crucible for teams + +01:07:00.400 --> 01:07:03.280 +the first part is definitely healthy the + +01:07:03.280 --> 01:07:04.240 +second part + +01:07:04.240 --> 01:07:07.440 +there's a lot we can we can do you know + +01:07:07.440 --> 01:07:08.640 +having upfront + +01:07:08.640 --> 01:07:10.880 +and and and good faith conversations on + +01:07:10.880 --> 01:07:15.440 +that subject + +01:07:15.440 --> 01:07:17.520 +anybody else wanted I want to weigh it + +01:07:17.520 --> 01:07:19.119 +in after that sorry that that was more + +01:07:19.119 --> 01:07:23.200 +of a calm down than a then a fire out + +01:07:23.200 --> 01:07:27.280 +oh that's okay + +01:07:27.280 --> 01:07:29.280 +I mean um the first part of this but I + +01:07:29.280 --> 01:07:30.960 +think um + +01:07:30.960 --> 01:07:32.960 +we would be remiss not to highlight org + +01:07:32.960 --> 01:07:34.880 +mode a little bit + +01:07:34.880 --> 01:07:37.839 +yeah like that's that's our bread and + +01:07:37.839 --> 01:07:38.480 +butter + +01:07:38.480 --> 01:07:40.240 +yeah our whole project is built on org + +01:07:40.240 --> 01:07:42.720 +mode right and I'm just really excited + +01:07:42.720 --> 01:07:46.240 +because like I have I don't have adhd + +01:07:46.240 --> 01:07:49.680 +but I have like something similar and so + +01:07:49.680 --> 01:07:51.119 +like to know that there's something that + +01:07:51.119 --> 01:07:54.880 +exists that is like purely hierarchical + +01:07:54.880 --> 01:07:57.760 +is incredible like I can just run a + +01:07:57.760 --> 01:07:58.559 +report + +01:07:58.559 --> 01:08:01.839 +basically and get all of my like + +01:08:01.839 --> 01:08:03.839 +to-do lists that I didn't have to put in + +01:08:03.839 --> 01:08:05.760 +one specific place + +01:08:05.760 --> 01:08:10.559 +um and like that's kind of been + +01:08:10.559 --> 01:08:14.559 +a complex issue for me of like + +01:08:14.559 --> 01:08:16.480 +okay I have all these to-do lists like + +01:08:16.480 --> 01:08:18.080 +in google keep or whatever like what do + +01:08:18.080 --> 01:08:18.319 +I + +01:08:18.319 --> 01:08:20.719 +do with them now so being able to like + +01:08:20.719 --> 01:08:21.359 +pull them + +01:08:21.359 --> 01:08:24.400 +into one list and then just cycle + +01:08:24.400 --> 01:08:26.640 +through them is really incredible + +01:08:26.640 --> 01:08:30.239 +and I think taking a dungeon and + +01:08:30.239 --> 01:08:34.480 +like using it to + +01:08:34.480 --> 01:08:35.839 +like combining it with org mode + +01:08:35.839 --> 01:08:37.759 +basically um + +01:08:37.759 --> 01:08:41.040 +really yeah I'm excited about it I'm + +01:08:41.040 --> 01:08:42.560 +excited to see like what it can do for + +01:08:42.560 --> 01:08:44.159 +player groups + +01:08:44.159 --> 01:08:47.759 +um yeah especially + +01:08:47.759 --> 01:08:50.319 +like I was excited about dungeon mode um + +01:08:50.319 --> 01:08:52.319 +before the pandemic and now like I'm + +01:08:52.319 --> 01:08:53.920 +only more enthusiastic + +01:08:53.920 --> 01:08:57.120 +so yeah uh definitely the pandemic has + +01:08:57.120 --> 01:08:58.400 +been the greatest thing that happened to + +01:08:58.400 --> 01:08:59.120 +this game + +01:08:59.120 --> 01:09:02.080 +terrible terrible as it is to say that + +01:09:02.080 --> 01:09:02.640 +it + +01:09:02.640 --> 01:09:05.120 +if we uh needed a hobby and it turns out + +01:09:05.120 --> 01:09:06.719 +role-playing games are + +01:09:06.719 --> 01:09:11.279 +a really good fit + +01:09:11.279 --> 01:09:13.839 +so um so I think that's probably about + +01:09:13.839 --> 01:09:14.799 +our time + +01:09:14.799 --> 01:09:18.560 +um I'm guessing that's my call and + +01:09:18.560 --> 01:09:21.759 +uh thank you very much thank you + +01:09:21.759 --> 01:09:23.120 +everybody + +01:09:23.120 --> 01:09:25.679 +we'll be around for discord and stuff + +01:09:25.679 --> 01:09:31.759 +later come catch us if you want to talk diff --git a/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.vtt b/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.vtt new file mode 100644 index 00000000..49db0989 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.vtt @@ -0,0 +1,634 @@ +WEBVTT + +00:00:00.880 --> 00:00:03.760 +hello and welcome to the stock + +00:00:03.760 --> 00:00:06.080 +the title of the stock is a tour feature + +00:00:06.080 --> 00:00:07.919 +a fast and fully featured terminal + +00:00:07.919 --> 00:00:08.559 +emulator + +00:00:08.559 --> 00:00:11.840 +inside new e-max so let's try to + +00:00:11.840 --> 00:00:13.360 +understand what we mean with the pass + +00:00:13.360 --> 00:00:14.559 +and fully featured + +00:00:14.559 --> 00:00:17.520 +and to do that we'll compare v term with + +00:00:17.520 --> 00:00:18.320 +the + +00:00:18.320 --> 00:00:20.640 +packages which are built in Emacs mean + +00:00:20.640 --> 00:00:22.400 +the term + +00:00:22.400 --> 00:00:25.199 +so let's let's jump into the v term so + +00:00:25.199 --> 00:00:26.720 +this is a feature buffer + +00:00:26.720 --> 00:00:29.679 +and this is a ansi term buffer what I'm + +00:00:29.679 --> 00:00:31.519 +going to do now is first I'm going to + +00:00:31.519 --> 00:00:32.160 +prove you + +00:00:32.160 --> 00:00:35.760 +what we move fast so to do that let me + +00:00:35.760 --> 00:00:37.520 +open a large file display on screen or + +00:00:37.520 --> 00:00:39.280 +large file this is about one megabyte of + +00:00:39.280 --> 00:00:40.239 +data + +00:00:40.239 --> 00:00:43.520 +and let me time that it takes about 0.6 + +00:00:43.520 --> 00:00:44.160 +seconds + +00:00:44.160 --> 00:00:47.200 +with feature let's do the same with + +00:00:47.200 --> 00:00:49.760 +with ancient term well we already + +00:00:49.760 --> 00:00:51.520 +already see the difference + +00:00:51.520 --> 00:00:53.039 +so I will use this time to tell you + +00:00:53.039 --> 00:00:54.559 +what's different and + +00:00:54.559 --> 00:00:57.360 +what is v term exactly so v term is a + +00:00:57.360 --> 00:00:58.879 +terminal emulator built + +00:00:58.879 --> 00:01:01.120 +on top of an external library the + +00:01:01.120 --> 00:01:02.719 +library is called libvi term + +00:01:02.719 --> 00:01:05.519 +and is the same library used by newton + +00:01:05.519 --> 00:01:07.200 +for their own terminal emulator + +00:01:07.200 --> 00:01:10.000 +it's a c library and this is what gives + +00:01:10.000 --> 00:01:10.799 +us + +00:01:10.799 --> 00:01:15.119 +a lot of good features first the speed + +00:01:15.119 --> 00:01:17.280 +time spent here 0.6 is essentially the + +00:01:17.280 --> 00:01:18.479 +time that it takes to + +00:01:18.479 --> 00:01:21.520 +one convert the emax representation of + +00:01:21.520 --> 00:01:22.240 +like text + +00:01:22.240 --> 00:01:23.840 +into the visa and representation of what + +00:01:23.840 --> 00:01:26.400 +was a string and two into + +00:01:26.400 --> 00:01:28.479 +actually displaying that and that can + +00:01:28.479 --> 00:01:29.520 +take time + +00:01:29.520 --> 00:01:31.840 +if there's a if there's quantification + +00:01:31.840 --> 00:01:33.680 +involved so these are the 0.6 seconds + +00:01:33.680 --> 00:01:34.240 +there + +00:01:34.240 --> 00:01:36.960 +as we say in the in ancestor that's much + +00:01:36.960 --> 00:01:37.920 +much + +00:01:37.920 --> 00:01:39.920 +more time it's much slower so the + +00:01:39.920 --> 00:01:41.680 +terminal will feel much snappier much + +00:01:41.680 --> 00:01:42.880 +faster + +00:01:42.880 --> 00:01:46.079 +but that's not the main benefit or the + +00:01:46.079 --> 00:01:47.840 +only benefit of using this external + +00:01:47.840 --> 00:01:48.799 +library + +00:01:48.799 --> 00:01:52.320 +feature the second big benefit + +00:01:52.320 --> 00:01:55.439 +is that v term has support for all the + +00:01:55.439 --> 00:01:56.560 +escape codes + +00:01:56.560 --> 00:01:59.200 +that exterm has support for so v term is + +00:01:59.200 --> 00:02:01.119 +essentially as running x term + +00:02:01.119 --> 00:02:03.600 +inside an imax buffer so let's see that + +00:02:03.600 --> 00:02:04.799 +this for example + +00:02:04.799 --> 00:02:07.119 +let's start by looking at the support + +00:02:07.119 --> 00:02:08.239 +for colors + +00:02:08.239 --> 00:02:09.920 +we have support for all the colors out + +00:02:09.920 --> 00:02:11.840 +of the box we don't have to do anything + +00:02:11.840 --> 00:02:15.040 +and if we did the same here well we have + +00:02:15.040 --> 00:02:15.680 +only + +00:02:15.680 --> 00:02:17.920 +20 colors there's a way to get all the + +00:02:17.920 --> 00:02:19.680 +colors but it's much more involved + +00:02:19.680 --> 00:02:23.040 +but this is not where v term shines + +00:02:23.040 --> 00:02:26.000 +uh we can run all the commands that we + +00:02:26.000 --> 00:02:27.200 +want + +00:02:27.200 --> 00:02:30.480 +h top and cdu + +00:02:30.480 --> 00:02:33.040 +everything runs here also this title + +00:02:33.040 --> 00:02:33.840 +it's a + +00:02:33.840 --> 00:02:36.400 +it's a fairly complicated manipulation + +00:02:36.400 --> 00:02:37.040 +of + +00:02:37.040 --> 00:02:40.879 +the window and it will not work here + +00:02:40.879 --> 00:02:42.319 +it just doesn't work actually now the + +00:02:42.319 --> 00:02:44.640 +terminal is probably messed up + +00:02:44.640 --> 00:02:48.400 +yes so using this external library + +00:02:48.400 --> 00:02:50.959 +removes the burden from the developers + +00:02:50.959 --> 00:02:52.000 +of having to implement + +00:02:52.000 --> 00:02:54.000 +support for all these cape codes we just + +00:02:54.000 --> 00:02:55.360 +use those + +00:02:55.360 --> 00:02:58.480 +so in many ways running veteran + +00:02:58.480 --> 00:03:01.760 +is us running extern inside a max + +00:03:01.760 --> 00:03:04.400 +but it's better than that because since + +00:03:04.400 --> 00:03:05.840 +this is an e-max buffer + +00:03:05.840 --> 00:03:08.879 +we can enjoy a lot of features from + +00:03:08.879 --> 00:03:09.760 +Emacs + +00:03:09.760 --> 00:03:11.920 +as well as a tighter integration with + +00:03:11.920 --> 00:03:13.200 +e-max itself + +00:03:13.200 --> 00:03:16.560 +for example as you see here the title of + +00:03:16.560 --> 00:03:17.599 +my buffer + +00:03:17.599 --> 00:03:20.720 +is from the director I'm in so let's go + +00:03:20.720 --> 00:03:21.760 +to my tmp + +00:03:21.760 --> 00:03:24.799 +the title will change so there's + +00:03:24.799 --> 00:03:26.560 +information being exchanged between v + +00:03:26.560 --> 00:03:28.000 +term and index + +00:03:28.000 --> 00:03:29.760 +and of course the title is not the only + +00:03:29.760 --> 00:03:32.000 +place where information is exchanged + +00:03:32.000 --> 00:03:34.799 +I can find a file and I will be in the + +00:03:34.799 --> 00:03:35.920 +directory + +00:03:35.920 --> 00:03:38.239 +where my terminal is this feature is + +00:03:38.239 --> 00:03:40.000 +also available in nc term + +00:03:40.000 --> 00:03:41.680 +and it works also on b term and it + +00:03:41.680 --> 00:03:43.840 +follows me so if I go to tmp I'll get + +00:03:43.840 --> 00:03:44.720 +the tmp + +00:03:44.720 --> 00:03:48.000 +if I ssh to a remote server it will work + +00:03:48.000 --> 00:03:48.640 +also + +00:03:48.640 --> 00:03:51.120 +on remote servers as well which is a + +00:03:51.120 --> 00:03:53.920 +very nice way to edit files remotely + +00:03:53.920 --> 00:03:55.760 +while we're working on a shelf and + +00:03:55.760 --> 00:03:57.360 +second while vterm + +00:03:57.360 --> 00:03:59.599 +is not an e-lisp interpreter like + +00:03:59.599 --> 00:04:02.159 +initial what we can do is we can + +00:04:02.159 --> 00:04:06.080 +still run inbox functions so for example + +00:04:06.080 --> 00:04:08.319 +that requires some configuration the + +00:04:08.319 --> 00:04:10.159 +term + +00:04:10.159 --> 00:04:12.480 +command message I as you see there's a + +00:04:12.480 --> 00:04:14.000 +higher so what I'm doing + +00:04:14.000 --> 00:04:16.239 +is I'm executing the eagles function I + +00:04:16.239 --> 00:04:17.199 +and I can drop that + +00:04:17.199 --> 00:04:19.840 +and turn it around uh hash function to + +00:04:19.840 --> 00:04:20.320 +run + +00:04:20.320 --> 00:04:24.880 +a-list functions or another one file see + +00:04:24.880 --> 00:04:27.600 +we call this feature message passing and + +00:04:27.600 --> 00:04:28.800 +it requires + +00:04:28.800 --> 00:04:30.880 +some configuration on the emac side as + +00:04:30.880 --> 00:04:32.000 +well as in the shell side + +00:04:32.000 --> 00:04:34.000 +it's important to stress what's the + +00:04:34.000 --> 00:04:35.360 +nature of feature + +00:04:35.360 --> 00:04:37.360 +for instance every time I'm sending a + +00:04:37.360 --> 00:04:39.120 +key binding it's not immediately clear + +00:04:39.120 --> 00:04:40.800 +if my intention is to send it to the + +00:04:40.800 --> 00:04:42.720 +shell or to imax so v term implements + +00:04:42.720 --> 00:04:44.320 +some reasonable defaults + +00:04:44.320 --> 00:04:46.800 +but at the moment it's mainly packaged + +00:04:46.800 --> 00:04:49.120 +to display characters on a screen + +00:04:49.120 --> 00:04:51.199 +so for example if you're using evil the + +00:04:51.199 --> 00:04:53.600 +editing commands in evil will not work + +00:04:53.600 --> 00:04:55.759 +immediately there's some work to be done + +00:04:55.759 --> 00:04:57.840 +and integration can be improved on that + +00:04:57.840 --> 00:04:58.479 +side but + +00:04:58.479 --> 00:05:00.240 +sometimes we really want this to behave + +00:05:00.240 --> 00:05:02.240 +exactly like a imax buffer + +00:05:02.240 --> 00:05:05.440 +we want to be able to search if + +00:05:05.440 --> 00:05:07.039 +if I try to get it to search it will not + +00:05:07.039 --> 00:05:08.880 +work I will send it to the shop so to do + +00:05:08.880 --> 00:05:09.360 +that + +00:05:09.360 --> 00:05:12.400 +we enabled the term copy mode so as you + +00:05:12.400 --> 00:05:12.800 +see + +00:05:12.800 --> 00:05:15.280 +copy mode and now this buffer is + +00:05:15.280 --> 00:05:17.039 +essentially a fundamental buffer + +00:05:17.039 --> 00:05:21.120 +I can move around as I can search + +00:05:21.120 --> 00:05:24.400 +uh so it must have I + +00:05:24.400 --> 00:05:25.840 +can do everything I want and there are + +00:05:25.840 --> 00:05:27.120 +additional features for example I can + +00:05:27.120 --> 00:05:29.600 +jump around + +00:05:29.600 --> 00:05:31.440 +all the prompts and I find this + +00:05:31.440 --> 00:05:32.639 +extremely useful + +00:05:32.639 --> 00:05:34.400 +because I can copy update from my + +00:05:34.400 --> 00:05:35.919 +programs or + +00:05:35.919 --> 00:05:39.199 +what I always have to do is I have to + +00:05:39.199 --> 00:05:42.400 +google some errors so what I do is I + +00:05:42.400 --> 00:05:43.120 +select that + +00:05:43.120 --> 00:05:45.919 +and I have my keybinding in maksakov and + +00:05:45.919 --> 00:05:46.880 +I'm googling + +00:05:46.880 --> 00:05:49.199 +what I have to google so this is very + +00:05:49.199 --> 00:05:50.400 +nice and + +00:05:50.400 --> 00:05:52.800 +if I now that have selected something if + +00:05:52.800 --> 00:05:54.400 +I just press return I will + +00:05:54.400 --> 00:05:57.120 +go back to my normal editing mode with + +00:05:57.120 --> 00:05:57.440 +the + +00:05:57.440 --> 00:06:00.400 +text copied so I can paste it back so + +00:06:00.400 --> 00:06:01.600 +it's a quick way to + +00:06:01.600 --> 00:06:04.160 +interact with copy and interact with uh + +00:06:04.160 --> 00:06:06.400 +with the output of a buffer so finally + +00:06:06.400 --> 00:06:07.840 +let's discuss how to actually + +00:06:07.840 --> 00:06:10.560 +use beta let's circle back and let's go + +00:06:10.560 --> 00:06:12.400 +and let's look at the github repo + +00:06:12.400 --> 00:06:14.400 +where development is happening v term is + +00:06:14.400 --> 00:06:15.520 +available in velpa + +00:06:15.520 --> 00:06:17.919 +but since it's leveraging the power of + +00:06:17.919 --> 00:06:18.960 +an external module + +00:06:18.960 --> 00:06:20.639 +you must have Emacs compiled with + +00:06:20.639 --> 00:06:22.000 +support for modules + +00:06:22.000 --> 00:06:25.600 +and many distros like ubuntu debian + +00:06:25.600 --> 00:06:27.199 +that's not there so you have to get + +00:06:27.199 --> 00:06:29.840 +Emacs with support for modules compiling + +00:06:29.840 --> 00:06:30.160 +or + +00:06:30.160 --> 00:06:32.000 +getting images somewhere else and also + +00:06:32.000 --> 00:06:33.840 +the first time you are going to use this + +00:06:33.840 --> 00:06:34.400 +which + +00:06:34.400 --> 00:06:37.440 +works only on mac or + +00:06:37.440 --> 00:06:40.319 +new linux systems Emacs will try to find + +00:06:40.319 --> 00:06:41.759 +and compile this module + +00:06:41.759 --> 00:06:43.680 +so it's important this requirement is + +00:06:43.680 --> 00:06:45.440 +important if you're using windows + +00:06:45.440 --> 00:06:47.600 +well that's not it's not available and + +00:06:47.600 --> 00:06:49.199 +will not work + +00:06:49.199 --> 00:06:52.560 +so to conclude I want to just advertise + +00:06:52.560 --> 00:06:53.440 +this page + +00:06:53.440 --> 00:06:56.240 +if you have problems look at the issues + +00:06:56.240 --> 00:06:57.120 +and + +00:06:57.120 --> 00:06:59.039 +open unusual in case we'll try to help + +00:06:59.039 --> 00:07:00.800 +you we are very excited about feature + +00:07:00.800 --> 00:07:02.639 +and I think it's a transformative + +00:07:02.639 --> 00:07:10.319 +terminal experience inside glue imax diff --git a/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--questions--gabriele-bozzola-sbozzolo-autogen.vtt b/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--questions--gabriele-bozzola-sbozzolo-autogen.vtt new file mode 100644 index 00000000..c9477c2d --- /dev/null +++ b/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--questions--gabriele-bozzola-sbozzolo-autogen.vtt @@ -0,0 +1,385 @@ +WEBVTT + +00:00:01.520 --> 00:00:03.360 +okay I mean can you hear me yep I can + +00:00:03.360 --> 00:00:05.279 +hear you can you hear me + +00:00:05.279 --> 00:00:07.200 +yes perfect so gabrielle uh if you want + +00:00:07.200 --> 00:00:08.480 +to start answering questions and by the + +00:00:08.480 --> 00:00:09.280 +way people for the + +00:00:09.280 --> 00:00:10.880 +for the stream I'm actually on a phone + +00:00:10.880 --> 00:00:12.400 +call right now so the quality might be a + +00:00:12.400 --> 00:00:13.360 +little bad + +00:00:13.360 --> 00:00:17.199 +but we're trying our best + +00:00:17.199 --> 00:00:20.480 +hello uh thanks for attending my talk + +00:00:20.480 --> 00:00:22.800 +I see four questions on the user product + +00:00:22.800 --> 00:00:24.000 +I'm going to answer + +00:00:24.000 --> 00:00:27.039 +them okay so the first one is + +00:00:27.039 --> 00:00:29.039 +can you put your test space from up + +00:00:29.039 --> 00:00:31.119 +somewhere uh yes they're very simple + +00:00:31.119 --> 00:00:31.840 +skips + +00:00:31.840 --> 00:00:33.680 +uh I'll find a way to distribute them + +00:00:33.680 --> 00:00:35.520 +somehow + +00:00:35.520 --> 00:00:37.600 +that's so that's an easy one the second + +00:00:37.600 --> 00:00:38.800 +one is more difficult it's more + +00:00:38.800 --> 00:00:40.559 +difficult it's the differences between + +00:00:40.559 --> 00:00:44.320 +e shell and v term so I did very basic + +00:00:44.320 --> 00:00:47.360 +level the main difference is that v + +00:00:47.360 --> 00:00:50.399 +term is implemented with + +00:00:50.399 --> 00:00:52.800 +as a bridge between Emacs and an + +00:00:52.800 --> 00:00:53.840 +external library + +00:00:53.840 --> 00:00:56.079 +which means that most of the code base + +00:00:56.079 --> 00:00:57.039 +is actually c + +00:00:57.039 --> 00:01:00.320 +it's not easy uh this is is a critical + +00:01:00.320 --> 00:01:01.280 +difference + +00:01:01.280 --> 00:01:03.760 +uh in terms of performance in terms of + +00:01:03.760 --> 00:01:04.320 +speed + +00:01:04.320 --> 00:01:06.960 +and all the other uh features that we + +00:01:06.960 --> 00:01:07.360 +can + +00:01:07.360 --> 00:01:10.400 +inherit from this library so vterm + +00:01:10.400 --> 00:01:13.119 +is similar to a real terminal it's not + +00:01:13.119 --> 00:01:13.600 +as + +00:01:13.600 --> 00:01:15.840 +uh it's not like a shell it's a real + +00:01:15.840 --> 00:01:17.040 +terminal emulator + +00:01:17.040 --> 00:01:19.600 +that can actually uh display but + +00:01:19.600 --> 00:01:20.479 +manipulate the + +00:01:20.479 --> 00:01:22.960 +terminal in pretty much any way whereas + +00:01:22.960 --> 00:01:23.520 +isha + +00:01:23.520 --> 00:01:25.759 +is simply a way to interact with your + +00:01:25.759 --> 00:01:26.640 +system + +00:01:26.640 --> 00:01:29.680 +in the data page we have a more + +00:01:29.680 --> 00:01:31.840 +complete discussion about this topic and + +00:01:31.840 --> 00:01:33.520 +where we compare v-terms with e-shell + +00:01:33.520 --> 00:01:34.799 +with shell with nc + +00:01:34.799 --> 00:01:38.720 +term as well I think so + +00:01:38.720 --> 00:01:40.640 +I think just to conclude this I think + +00:01:40.640 --> 00:01:42.000 +eshell and v term + +00:01:42.000 --> 00:01:44.079 +are somehow orthogonal in the sense that + +00:01:44.079 --> 00:01:45.280 +v3 is before a + +00:01:45.280 --> 00:01:46.880 +full complete terminal experience + +00:01:46.880 --> 00:01:49.439 +whereas isil is more for specific tasks + +00:01:49.439 --> 00:01:50.240 +of this + +00:01:50.240 --> 00:01:53.280 +uh which are not like terminal uh + +00:01:53.280 --> 00:01:55.759 +interfaces you know like page stock this + +00:01:55.759 --> 00:01:56.799 +kind of stuff + +00:01:56.799 --> 00:01:59.759 +uh the next question is uh is there a + +00:01:59.759 --> 00:02:01.200 +plan to avoid compilation of the initial + +00:02:01.200 --> 00:02:02.560 +completion steps + +00:02:02.560 --> 00:02:05.759 +so since the term is based on again + +00:02:05.759 --> 00:02:08.000 +on an external module we need to combine + +00:02:08.000 --> 00:02:08.800 +this module + +00:02:08.800 --> 00:02:10.800 +and we're using the dynamic module + +00:02:10.800 --> 00:02:11.920 +system to + +00:02:11.920 --> 00:02:13.920 +be able to interface with this module + +00:02:13.920 --> 00:02:16.239 +and this requires + +00:02:16.239 --> 00:02:18.879 +us to compile the module at least the + +00:02:18.879 --> 00:02:20.160 +very first time you start + +00:02:20.160 --> 00:02:23.920 +the I don't think we can do + +00:02:23.920 --> 00:02:26.720 +without that in the near future we need + +00:02:26.720 --> 00:02:28.480 +to compile this + +00:02:28.480 --> 00:02:31.599 +and we must there's no way around + +00:02:31.599 --> 00:02:33.360 +if we cannot simply distribute the + +00:02:33.360 --> 00:02:37.440 +module um + +00:02:37.440 --> 00:02:39.519 +if you want to think very long term + +00:02:39.519 --> 00:02:40.480 +maybe + +00:02:40.480 --> 00:02:42.959 +uh but I think there's no current plan + +00:02:42.959 --> 00:02:43.599 +to + +00:02:43.599 --> 00:02:45.760 +avoid the compilation as the very first + +00:02:45.760 --> 00:02:47.280 +step the first time you + +00:02:47.280 --> 00:02:50.400 +uh run vtor however all the subsequent + +00:02:50.400 --> 00:02:50.959 +times + +00:02:50.959 --> 00:02:54.720 +you will not have to compile peter um + +00:02:54.720 --> 00:02:57.840 +so for question four it's uh I have a + +00:02:57.840 --> 00:02:58.720 +nice looking problem + +00:02:58.720 --> 00:03:01.920 +thanks uh and if + +00:03:01.920 --> 00:03:04.159 +there's a git repo where you can see it + +00:03:04.159 --> 00:03:05.599 +or something like that + +00:03:05.599 --> 00:03:08.560 +so if you go to my github repo I have + +00:03:08.560 --> 00:03:09.760 +adobe files + +00:03:09.760 --> 00:03:12.560 +repo but look at that it's terrible it's + +00:03:12.560 --> 00:03:13.840 +super updated + +00:03:13.840 --> 00:03:16.800 +so I've been meaning to polish it for + +00:03:16.800 --> 00:03:17.519 +like years + +00:03:17.519 --> 00:03:20.080 +and I haven't got it so don't look at it + +00:03:20.080 --> 00:03:21.760 +my font is actually extremely simple + +00:03:21.760 --> 00:03:25.200 +I think it's the pure prompt from uh zsh + +00:03:25.200 --> 00:03:26.640 +or fish depending + +00:03:26.640 --> 00:03:28.799 +uh and I think I didn't do anything but + +00:03:28.799 --> 00:03:30.640 +like maybe tweaking the colors a little + +00:03:30.640 --> 00:03:31.360 +bit + +00:03:31.360 --> 00:03:33.280 +okay gabriel just sorry to interject if + +00:03:33.280 --> 00:03:35.519 +you could just take one more question + +00:03:35.519 --> 00:03:37.120 +yes the last question is already the + +00:03:37.120 --> 00:03:39.440 +answer which is uh will it work with + +00:03:39.440 --> 00:03:42.480 +e max terminal so minus and w and answer + +00:03:42.480 --> 00:03:44.480 +yes it works without any problem with + +00:03:44.480 --> 00:03:46.239 +imax terminal so you can run a terminal + +00:03:46.239 --> 00:03:47.760 +inside image inside of terminal + +00:03:47.760 --> 00:03:49.680 +and you can continue paying up as much + +00:03:49.680 --> 00:03:51.200 +as you want okay + +00:03:51.200 --> 00:03:53.920 +I think that's it explain the question + +00:03:53.920 --> 00:03:56.239 +oh sorry thank you + +00:03:56.239 --> 00:03:59.760 +thanks for attending this talk + +00:03:59.760 --> 00:04:01.519 +well thank you so much for giving it so + +00:04:01.519 --> 00:04:03.360 +I'm in back to you + +00:04:03.360 --> 00:04:07.280 +you are now unmuted thank you very much + +00:04:07.280 --> 00:04:09.519 +to gabrielle for the awesome talk and + +00:04:09.519 --> 00:04:11.200 +for taking live questions + +00:04:11.200 --> 00:04:14.319 +and also many thanks to leo for getting + +00:04:14.319 --> 00:04:15.200 +through to gabriel + +00:04:15.200 --> 00:04:18.720 +via phone in the face of gabriel having + +00:04:18.720 --> 00:04:20.720 +technical difficulties + +00:04:20.720 --> 00:04:24.160 +with using big blue button diff --git a/2020/subtitles/emacsconf-2020--31-lakota-language-and-emacs--grant-shangreaux-autogen.vtt b/2020/subtitles/emacsconf-2020--31-lakota-language-and-emacs--grant-shangreaux-autogen.vtt new file mode 100644 index 00000000..b3feac2d --- /dev/null +++ b/2020/subtitles/emacsconf-2020--31-lakota-language-and-emacs--grant-shangreaux-autogen.vtt @@ -0,0 +1,859 @@ +WEBVTT + +00:00:10.480 --> 00:00:11.519 +hello relatives + +00:00:11.519 --> 00:00:15.040 +grant shangri is what they call me + +00:00:15.040 --> 00:00:18.960 +and all of you I gladly take your hand + +00:00:18.960 --> 00:00:22.160 +and shake it um + +00:00:22.160 --> 00:00:26.240 +greetings everyone + +00:00:26.240 --> 00:00:28.560 +today I'm going to talk about lakota + +00:00:28.560 --> 00:00:30.480 +language and Emacs and how + +00:00:30.480 --> 00:00:33.680 +free software and Emacs empowered me to + +00:00:33.680 --> 00:00:36.000 +write on the computer in the language of + +00:00:36.000 --> 00:00:39.520 +my ancestors + +00:00:39.520 --> 00:00:42.640 +um start off the look with the story of + +00:00:42.640 --> 00:00:45.760 +lakotiappi the lakota language + +00:00:45.760 --> 00:00:48.800 +the lakota dakota dialect area + +00:00:48.800 --> 00:00:52.160 +for those of you who you don't know + +00:00:52.160 --> 00:00:55.600 +the lakota dakota people are also known + +00:00:55.600 --> 00:00:56.840 +as the sioux + +00:00:56.840 --> 00:00:59.760 +and the tribes cover an + +00:00:59.760 --> 00:01:03.120 +area of roughly 10 us states and parts + +00:01:03.120 --> 00:01:05.199 +of canada and so this language is + +00:01:05.199 --> 00:01:08.479 +spoken over a wide range of of + +00:01:08.479 --> 00:01:11.520 +area + +00:01:11.520 --> 00:01:14.400 +however the us government policy + +00:01:14.400 --> 00:01:16.640 +directly tried to silence this language + +00:01:16.640 --> 00:01:18.640 +my father was taken to a boarding school + +00:01:18.640 --> 00:01:20.960 +and was punished for speaking + +00:01:20.960 --> 00:01:23.280 +his native language and so he didn't + +00:01:23.280 --> 00:01:25.119 +teach it to his children + +00:01:25.119 --> 00:01:28.880 +several generations of lakota and dakota + +00:01:28.880 --> 00:01:29.600 +people + +00:01:29.600 --> 00:01:31.600 +and other tribes all over the country + +00:01:31.600 --> 00:01:32.640 +lost + +00:01:32.640 --> 00:01:34.560 +lost their first language their native + +00:01:34.560 --> 00:01:38.320 +language so today only around 2000 + +00:01:38.320 --> 00:01:41.040 +first first language native speakers are + +00:01:41.040 --> 00:01:43.119 +speaking lakota + +00:01:43.119 --> 00:01:44.960 +however there's language recovery + +00:01:44.960 --> 00:01:47.600 +projects that are empowering + +00:01:47.600 --> 00:01:49.759 +second language learners like myself to + +00:01:49.759 --> 00:01:51.720 +teach it to the new generation of + +00:01:51.720 --> 00:01:54.479 +children um + +00:01:54.479 --> 00:01:57.119 +which brings me to my story um I grew up + +00:01:57.119 --> 00:01:58.000 +without knowing + +00:01:58.000 --> 00:02:00.880 +my heritage um I didn't know who my + +00:02:00.880 --> 00:02:01.520 +father was + +00:02:01.520 --> 00:02:04.719 +both my parents were white um + +00:02:04.719 --> 00:02:07.119 +I discovered my biological family in + +00:02:07.119 --> 00:02:08.720 +around 2015 + +00:02:08.720 --> 00:02:12.160 +was kind of a shock to me up until that + +00:02:12.160 --> 00:02:13.840 +point probably the only time I'd heard + +00:02:13.840 --> 00:02:15.520 +the lakota language was in + +00:02:15.520 --> 00:02:18.720 +the movie dances with wolves possibly + +00:02:18.720 --> 00:02:20.720 +some other times + +00:02:20.720 --> 00:02:24.160 +around nebraska I'd heard it um but + +00:02:24.160 --> 00:02:27.200 +even myself growing up you know pretty + +00:02:27.200 --> 00:02:28.319 +close to + +00:02:28.319 --> 00:02:30.560 +to lakota people and other native + +00:02:30.560 --> 00:02:32.239 +american people + +00:02:32.239 --> 00:02:34.560 +american indian people I kind of thought + +00:02:34.560 --> 00:02:36.640 +it was just dead I thought the language + +00:02:36.640 --> 00:02:39.760 +was not alive anymore um + +00:02:39.760 --> 00:02:42.000 +but in 2016 my daughter began her + +00:02:42.000 --> 00:02:43.920 +journey into this world and I + +00:02:43.920 --> 00:02:46.720 +I was doing a lot of searching to find + +00:02:46.720 --> 00:02:48.239 +out like what could I do + +00:02:48.239 --> 00:02:50.560 +you know not knowing my family not + +00:02:50.560 --> 00:02:51.920 +knowing my culture + +00:02:51.920 --> 00:02:54.080 +what could I do to try to bring that + +00:02:54.080 --> 00:02:55.280 +into our life + +00:02:55.280 --> 00:02:58.640 +um and so I found out about these + +00:02:58.640 --> 00:03:00.720 +lakota classes that were happening I + +00:03:00.720 --> 00:03:02.720 +went up to standing rock + +00:03:02.720 --> 00:03:04.560 +in north dakota and attended the lakota + +00:03:04.560 --> 00:03:06.640 +summer institute for three weeks + +00:03:06.640 --> 00:03:08.480 +and began my journey to learn the + +00:03:08.480 --> 00:03:09.680 +language so I can + +00:03:09.680 --> 00:03:13.120 +try to pass it on so + +00:03:13.120 --> 00:03:16.560 +this brings us to Emacs + +00:03:16.560 --> 00:03:19.200 +I could talk a lot more about my story + +00:03:19.200 --> 00:03:20.959 +I'm sure there's a lot to say + +00:03:20.959 --> 00:03:24.640 +but we're here to talk about Emacs um + +00:03:24.640 --> 00:03:26.319 +I was already a free software user at + +00:03:26.319 --> 00:03:29.040 +the time and at the lakota language + +00:03:29.040 --> 00:03:31.440 +uh institute they they were they're + +00:03:31.440 --> 00:03:33.280 +giving us software there's a dictionary + +00:03:33.280 --> 00:03:34.879 +you could get on android + +00:03:34.879 --> 00:03:37.360 +um there was a keyboard for android that + +00:03:37.360 --> 00:03:38.560 +you could type with + +00:03:38.560 --> 00:03:41.760 +they had keyboard input methods for mac + +00:03:41.760 --> 00:03:44.959 +and windows but I'm a linux user free + +00:03:44.959 --> 00:03:46.720 +software user + +00:03:46.720 --> 00:03:49.280 +so I didn't have access to those things + +00:03:49.280 --> 00:03:49.760 +as + +00:03:49.760 --> 00:03:53.120 +as easily as I could and I do a lot of + +00:03:53.120 --> 00:03:55.280 +my thinking and note taking in Emacs and + +00:03:55.280 --> 00:03:57.280 +in org mode + +00:03:57.280 --> 00:04:01.200 +and so being able to to write this + +00:04:01.200 --> 00:04:04.640 +to to um to write things down to type + +00:04:04.640 --> 00:04:07.680 +on my own computer uh was was pretty + +00:04:07.680 --> 00:04:08.720 +important to me + +00:04:08.720 --> 00:04:11.360 +and I wasn't much of an emax hacker yet + +00:04:11.360 --> 00:04:12.799 +at the time I had + +00:04:12.799 --> 00:04:15.519 +barely done anything mostly just you + +00:04:15.519 --> 00:04:16.720 +know hacked on my + +00:04:16.720 --> 00:04:20.479 +config file but this was a real + +00:04:20.479 --> 00:04:23.600 +chance for me to experience + +00:04:23.600 --> 00:04:27.280 +the the benefits of free software first + +00:04:27.280 --> 00:04:30.400 +hand and not just to benefit myself but + +00:04:30.400 --> 00:04:34.080 +to potentially benefit + +00:04:34.080 --> 00:04:36.080 +everyone anyone interested in learning + +00:04:36.080 --> 00:04:39.120 +this language + +00:04:39.120 --> 00:04:42.880 +so Emacs and + +00:04:42.880 --> 00:04:44.880 +that free software philosophy really + +00:04:44.880 --> 00:04:47.520 +empowered me so I began digging in + +00:04:47.520 --> 00:04:49.840 +um I looked I began reading the the + +00:04:49.840 --> 00:04:51.520 +manual more closely + +00:04:51.520 --> 00:04:53.680 +as an american I'm I'm sad to say + +00:04:53.680 --> 00:04:55.440 +there's not a lot of + +00:04:55.440 --> 00:04:58.479 +other languages spoken or written where + +00:04:58.479 --> 00:05:00.160 +I'm from + +00:05:00.160 --> 00:05:02.240 +so it's not common that I that I have to + +00:05:02.240 --> 00:05:04.720 +think about this with computers + +00:05:04.720 --> 00:05:07.600 +I know international people you know + +00:05:07.600 --> 00:05:09.120 +have had to come up with + +00:05:09.120 --> 00:05:11.280 +with interesting ways to to enter their + +00:05:11.280 --> 00:05:12.160 +text + +00:05:12.160 --> 00:05:14.800 +and Emacs is probably a pioneer in that + +00:05:14.800 --> 00:05:16.320 +I I'd like to know more about the + +00:05:16.320 --> 00:05:17.520 +history of this but + +00:05:17.520 --> 00:05:19.840 +there's a whole section in the manual on + +00:05:19.840 --> 00:05:22.160 +international Emacs + +00:05:22.160 --> 00:05:23.840 +and I began reading this and I was + +00:05:23.840 --> 00:05:25.440 +talking about + +00:05:25.440 --> 00:05:28.000 +different input methods and and how many + +00:05:28.000 --> 00:05:29.759 +different languages were supported and + +00:05:29.759 --> 00:05:31.680 +how you could enter the text and how it + +00:05:31.680 --> 00:05:33.680 +supports the different characters and so + +00:05:33.680 --> 00:05:34.560 +on + +00:05:34.560 --> 00:05:36.639 +um I even noticed a few languages + +00:05:36.639 --> 00:05:38.880 +support several input methods + +00:05:38.880 --> 00:05:41.840 +that became important for me later on as + +00:05:41.840 --> 00:05:43.440 +I was working on this + +00:05:43.440 --> 00:05:45.280 +many many languages are already + +00:05:45.280 --> 00:05:46.720 +supported so + +00:05:46.720 --> 00:05:48.479 +those of you who haven't looked into + +00:05:48.479 --> 00:05:50.080 +this yet if you press + +00:05:50.080 --> 00:05:52.639 +control backslash it will open up a + +00:05:52.639 --> 00:05:53.680 +selection menu + +00:05:53.680 --> 00:05:57.039 +for you to to select um + +00:05:57.039 --> 00:05:59.120 +your input method and you can there's + +00:05:59.120 --> 00:06:01.440 +207 listed here + +00:06:01.440 --> 00:06:03.120 +that's including the two that I've + +00:06:03.120 --> 00:06:04.639 +contributed + +00:06:04.639 --> 00:06:09.199 +um so 205 on on a vanilla Emacs + +00:06:09.199 --> 00:06:11.120 +so that's a lot of languages supported + +00:06:11.120 --> 00:06:13.840 +by emac Emacs but there's so many more + +00:06:13.840 --> 00:06:17.440 +that could be um and since Emacs is free + +00:06:17.440 --> 00:06:19.280 +software and it is what it is I knew + +00:06:19.280 --> 00:06:20.000 +that defining + +00:06:20.000 --> 00:06:22.639 +a new input method was surely possible + +00:06:22.639 --> 00:06:23.039 +um + +00:06:23.039 --> 00:06:25.440 +unfortunately the the manual didn't + +00:06:25.440 --> 00:06:27.120 +describe it directly or at least I + +00:06:27.120 --> 00:06:28.800 +didn't pick it up so + +00:06:28.800 --> 00:06:30.960 +um you know the new emax hacker that I + +00:06:30.960 --> 00:06:32.319 +was I + +00:06:32.319 --> 00:06:34.880 +I timidly dove down into the source code + +00:06:34.880 --> 00:06:37.360 +and discovered the quail package + +00:06:37.360 --> 00:06:40.479 +um so back in the day apparently there + +00:06:40.479 --> 00:06:40.960 +was + +00:06:40.960 --> 00:06:44.560 +mule which is like the + +00:06:44.560 --> 00:06:47.360 +multi I don't I don't know it stood for + +00:06:47.360 --> 00:06:48.000 +something about + +00:06:48.000 --> 00:06:50.160 +language environments and and it has + +00:06:50.160 --> 00:06:51.759 +evolved + +00:06:51.759 --> 00:06:54.960 +and at some point um some japanese + +00:06:54.960 --> 00:06:58.000 +uh coders created an input method called + +00:06:58.000 --> 00:06:59.039 +tamago + +00:06:59.039 --> 00:07:03.599 +which means egg in japanese and uh + +00:07:03.599 --> 00:07:06.720 +tamago evolved into quail and they + +00:07:06.720 --> 00:07:08.800 +in the comments you can see they talk + +00:07:08.800 --> 00:07:10.720 +about how the quail egg is eaten in + +00:07:10.720 --> 00:07:12.800 +japan it's a smaller thing and + +00:07:12.800 --> 00:07:15.280 +the quail mode is like a nicer version + +00:07:15.280 --> 00:07:16.960 +of tamago I guess and + +00:07:16.960 --> 00:07:19.039 +there's a pun saying they hoped it would + +00:07:19.039 --> 00:07:22.639 +egg people on to create more input modes + +00:07:22.639 --> 00:07:26.240 +and quail is quite nice I looked into it + +00:07:26.240 --> 00:07:28.479 +and there's basically two things you use + +00:07:28.479 --> 00:07:30.720 +quail defined package and quail define + +00:07:30.720 --> 00:07:32.240 +rules + +00:07:32.240 --> 00:07:36.080 +so quail defined package + +00:07:36.080 --> 00:07:38.960 +you can see here is a function it's + +00:07:38.960 --> 00:07:41.759 +probably a macro that takes a name + +00:07:41.759 --> 00:07:43.599 +a language a title and some optional + +00:07:43.599 --> 00:07:44.879 +stuff which + +00:07:44.879 --> 00:07:48.319 +I didn't really have to deal with + +00:07:48.319 --> 00:07:50.479 +define name is a new quail package for + +00:07:50.479 --> 00:07:52.400 +input language title is a string to be + +00:07:52.400 --> 00:07:52.879 +split + +00:07:52.879 --> 00:07:54.400 +at the mode line to indicate this + +00:07:54.400 --> 00:07:57.120 +package + +00:07:57.120 --> 00:08:00.879 +so I began trying to do lakota input now + +00:08:00.879 --> 00:08:03.039 +this is a whole thing on its own because + +00:08:03.039 --> 00:08:04.240 +the lakota language + +00:08:04.240 --> 00:08:07.680 +was never written um + +00:08:07.680 --> 00:08:10.800 +pre-contact and post contact + +00:08:10.800 --> 00:08:12.879 +like there's several attempts at writing + +00:08:12.879 --> 00:08:14.800 +it and different orthographies + +00:08:14.800 --> 00:08:16.960 +and there's drama around all of this + +00:08:16.960 --> 00:08:19.360 +stuff + +00:08:19.360 --> 00:08:21.120 +it's pretty common to have drama going + +00:08:21.120 --> 00:08:24.160 +on in any american indian stuff + +00:08:24.160 --> 00:08:26.560 +going on so as I was doing this I + +00:08:26.560 --> 00:08:28.479 +started with the suggested lakota + +00:08:28.479 --> 00:08:29.680 +orthography which + +00:08:29.680 --> 00:08:32.880 +is actually called by its authors the + +00:08:32.880 --> 00:08:35.680 +the standard lakota orthography but its + +00:08:35.680 --> 00:08:36.959 +authors are + +00:08:36.959 --> 00:08:40.880 +um are european + +00:08:40.880 --> 00:08:43.039 +um the main author is a man named jan + +00:08:43.039 --> 00:08:45.040 +ulrich and I appreciate all his work and + +00:08:45.040 --> 00:08:46.160 +I'm grateful for + +00:08:46.160 --> 00:08:49.360 +the materials he's made available but um + +00:08:49.360 --> 00:08:51.040 +it's a little bit problematic because + +00:08:51.040 --> 00:08:54.160 +it's not an orthography created by + +00:08:54.160 --> 00:08:56.720 +our people by lakota people so there's + +00:08:56.720 --> 00:08:57.920 +another one called the white hat + +00:08:57.920 --> 00:09:00.080 +orthography which is created by albert + +00:09:00.080 --> 00:09:01.839 +whitehat who's a teacher + +00:09:01.839 --> 00:09:04.480 +um from the chichanguk tribe so I + +00:09:04.480 --> 00:09:05.360 +created two + +00:09:05.360 --> 00:09:08.640 +and thankfully emax lets me do that so + +00:09:08.640 --> 00:09:10.720 +it's pretty simple quail defined package + +00:09:10.720 --> 00:09:11.680 +I just + +00:09:11.680 --> 00:09:13.279 +say the package I want and then all + +00:09:13.279 --> 00:09:15.360 +these nils and t's for options I don't + +00:09:15.360 --> 00:09:16.480 +actually know what they mean but it + +00:09:16.480 --> 00:09:18.240 +works + +00:09:18.240 --> 00:09:20.240 +I could look it up and then quail define + +00:09:20.240 --> 00:09:22.640 +rules just defines mappings from ascii + +00:09:22.640 --> 00:09:23.600 +keys to + +00:09:23.600 --> 00:09:26.640 +the the text you want to put in so + +00:09:26.640 --> 00:09:29.680 +for this one there's a nasal n and then + +00:09:29.680 --> 00:09:33.600 +a dot and a macron like a wedge shape + +00:09:33.600 --> 00:09:36.640 +for marking up the consonants + +00:09:36.640 --> 00:09:39.839 +so that one's pretty easy and then the + +00:09:39.839 --> 00:09:41.760 +suggested lakota orthography is a little + +00:09:41.760 --> 00:09:43.040 +bit more difficult + +00:09:43.040 --> 00:09:45.600 +but still pretty easy I just map a + +00:09:45.600 --> 00:09:46.800 +sequence of keys + +00:09:46.800 --> 00:09:49.760 +a followed by the apostrophe makes the + +00:09:49.760 --> 00:09:51.760 +accented vowels so all of those + +00:09:51.760 --> 00:09:53.519 +and then again we have the hot checks + +00:09:53.519 --> 00:09:55.839 +for the guttural sounds of the language + +00:09:55.839 --> 00:09:58.399 +and the nasal end so that's it basically + +00:09:58.399 --> 00:09:59.120 +these two + +00:09:59.120 --> 00:10:02.480 +definitions allow me to type + +00:10:02.480 --> 00:10:06.560 +lakota language in Emacs um + +00:10:06.560 --> 00:10:09.279 +and it's great it works great publishing + +00:10:09.279 --> 00:10:09.920 +it + +00:10:09.920 --> 00:10:11.760 +is another problematic thing I wanted to + +00:10:11.760 --> 00:10:13.839 +use free software to do that + +00:10:13.839 --> 00:10:16.079 +so the first thing I did was I I posted + +00:10:16.079 --> 00:10:17.600 +on sourcehut + +00:10:17.600 --> 00:10:19.440 +which is great it's a good alternative + +00:10:19.440 --> 00:10:20.959 +for a git forge + +00:10:20.959 --> 00:10:22.880 +and I got it published on melba so the + +00:10:22.880 --> 00:10:24.000 +lakota input + +00:10:24.000 --> 00:10:25.760 +package is available if you'd like to + +00:10:25.760 --> 00:10:27.760 +try it out + +00:10:27.760 --> 00:10:29.839 +and bandali one of our hosts for the + +00:10:29.839 --> 00:10:31.680 +conference is helping me now + +00:10:31.680 --> 00:10:33.200 +through the process of committing the + +00:10:33.200 --> 00:10:35.279 +code to Emacs + +00:10:35.279 --> 00:10:37.120 +because I would like to do that I would + +00:10:37.120 --> 00:10:39.279 +like it to be available to everyone + +00:10:39.279 --> 00:10:41.680 +through Emacs itself so that anyone who + +00:10:41.680 --> 00:10:43.279 +wants to use it just has to download + +00:10:43.279 --> 00:10:43.920 +Emacs + +00:10:43.920 --> 00:10:46.240 +and there you go you can type lakota + +00:10:46.240 --> 00:10:47.120 +language + +00:10:47.120 --> 00:10:50.160 +so uh pila maya thank you + +00:10:50.160 --> 00:10:53.279 +all for listening and + +00:10:53.279 --> 00:10:55.920 +I hope to see you around in our Emacs + +00:10:55.920 --> 00:10:58.320 +community + +00:10:58.320 --> 00:11:04.720 +uh day diff --git a/2020/subtitles/emacsconf-2020--31-lakota-language-and-emacs--questions--grant-shangreaux-autogen.vtt b/2020/subtitles/emacsconf-2020--31-lakota-language-and-emacs--questions--grant-shangreaux-autogen.vtt new file mode 100644 index 00000000..164d8d8d --- /dev/null +++ b/2020/subtitles/emacsconf-2020--31-lakota-language-and-emacs--questions--grant-shangreaux-autogen.vtt @@ -0,0 +1,412 @@ +WEBVTT + +00:00:05.120 --> 00:00:05.680 +hello + +00:00:05.680 --> 00:00:10.080 +can you hear me yes I can awesome + +00:00:10.080 --> 00:00:12.400 +all right so we have a couple minutes + +00:00:12.400 --> 00:00:13.200 +and + +00:00:13.200 --> 00:00:15.200 +uh it seems a couple questions as well + +00:00:15.200 --> 00:00:17.680 +so take it away + +00:00:17.680 --> 00:00:20.000 +okay I won't share my screen unless + +00:00:20.000 --> 00:00:22.640 +needed um + +00:00:22.640 --> 00:00:25.439 +looks like question one advantages + +00:00:25.439 --> 00:00:27.599 +advantages of using Emacs input methods + +00:00:27.599 --> 00:00:31.119 +over something like x compose + +00:00:31.119 --> 00:00:32.559 +well there's a there's a couple things + +00:00:32.559 --> 00:00:34.320 +there one is + +00:00:34.320 --> 00:00:37.360 +um Emacs is cross platform so + +00:00:37.360 --> 00:00:39.520 +writing this input mode for Emacs means + +00:00:39.520 --> 00:00:41.520 +if I do end up using + +00:00:41.520 --> 00:00:44.559 +a non-free operating system I can still + +00:00:44.559 --> 00:00:46.480 +use Emacs I can still type + +00:00:46.480 --> 00:00:49.920 +in the way that I would like to um + +00:00:49.920 --> 00:00:52.800 +I did look in I don't I actually don't + +00:00:52.800 --> 00:00:54.640 +know what x compose is + +00:00:54.640 --> 00:00:56.719 +I tried looking for it on my system I + +00:00:56.719 --> 00:00:59.680 +could not find it anywhere + +00:00:59.680 --> 00:01:02.399 +I did actually go and figure out how to + +00:01:02.399 --> 00:01:02.879 +write a + +00:01:02.879 --> 00:01:06.080 +x11 keyboard layout so that's also + +00:01:06.080 --> 00:01:07.040 +available + +00:01:07.040 --> 00:01:09.840 +in the repository that has the Emacs + +00:01:09.840 --> 00:01:11.920 +package as well + +00:01:11.920 --> 00:01:14.720 +and it is handy to be able to have that + +00:01:14.720 --> 00:01:15.920 +so I can type in + +00:01:15.920 --> 00:01:21.200 +other applications besides Emacs + +00:01:21.200 --> 00:01:24.479 +but the main advantages for Emacs was it + +00:01:24.479 --> 00:01:25.119 +was actually + +00:01:25.119 --> 00:01:27.439 +much easier to discover and much easier + +00:01:27.439 --> 00:01:28.560 +to + +00:01:28.560 --> 00:01:31.439 +manipulate and get feedback you know as + +00:01:31.439 --> 00:01:33.040 +I was developing it like I could just + +00:01:33.040 --> 00:01:35.360 +evaluate the coil package + +00:01:35.360 --> 00:01:37.200 +try it out and see if it works when I + +00:01:37.200 --> 00:01:39.680 +was trying to do the x11 inputs I'd have + +00:01:39.680 --> 00:01:40.560 +to log out + +00:01:40.560 --> 00:01:42.799 +read and and relog in again to get + +00:01:42.799 --> 00:01:43.759 +things read and + +00:01:43.759 --> 00:01:46.240 +it was you know it doesn't have that + +00:01:46.240 --> 00:01:46.799 +beautiful + +00:01:46.799 --> 00:01:50.560 +interactivity the way that Emacs does so + +00:01:50.560 --> 00:01:53.040 +for me it was a good place to start um + +00:01:53.040 --> 00:01:54.960 +especially because + +00:01:54.960 --> 00:01:56.640 +I had never done anything like this + +00:01:56.640 --> 00:01:58.079 +before like developing + +00:01:58.079 --> 00:02:00.079 +something that felt low level you know + +00:02:00.079 --> 00:02:04.320 +like a keyboard input + +00:02:04.320 --> 00:02:06.399 +I hope that answers your question + +00:02:06.399 --> 00:02:08.479 +question two can you give us a demo of + +00:02:08.479 --> 00:02:09.280 +you typing in + +00:02:09.280 --> 00:02:12.400 +either lakota and input method sure + +00:02:12.400 --> 00:02:19.599 +um share my screen now + +00:02:19.599 --> 00:02:21.520 +of course I always have to select which + +00:02:21.520 --> 00:02:32.239 +one + +00:02:32.239 --> 00:02:36.560 +okay so control backslash opens the + +00:02:36.560 --> 00:02:37.840 +input modes + +00:02:37.840 --> 00:02:40.000 +although when you've selected one you + +00:02:40.000 --> 00:02:41.920 +have it already so + +00:02:41.920 --> 00:02:45.680 +uh yeah wash day + +00:02:45.680 --> 00:02:48.319 +that's it is good washed it so this is + +00:02:48.319 --> 00:02:50.000 +the suggested lakota + +00:02:50.000 --> 00:02:53.360 +orthography or otherwise known as the + +00:02:53.360 --> 00:02:56.560 +standard lakota orthography + +00:02:56.560 --> 00:02:58.800 +another benefit of doing it in Emacs is + +00:02:58.800 --> 00:03:00.640 +that I now get + +00:03:00.640 --> 00:03:06.800 +completion on lakota words so + +00:03:06.800 --> 00:03:08.800 +so I'm you know it's a second language + +00:03:08.800 --> 00:03:10.560 +for me and as I'm trying to learn it + +00:03:10.560 --> 00:03:11.440 +it's actually + +00:03:11.440 --> 00:03:13.760 +quite useful to have company mode as a + +00:03:13.760 --> 00:03:15.599 +bonus um + +00:03:15.599 --> 00:03:19.680 +for typing things + +00:03:19.680 --> 00:03:22.239 +I can show the other orthography so to + +00:03:22.239 --> 00:03:23.599 +to get another one you do + +00:03:23.599 --> 00:03:27.200 +the universal input control u backslash + +00:03:27.200 --> 00:03:30.560 +and I can try the white hat orthography + +00:03:30.560 --> 00:03:36.239 +oh yeah lost + +00:03:36.239 --> 00:03:39.760 +what's the command for that you are now + +00:03:39.760 --> 00:03:41.440 +unmuted + +00:03:41.440 --> 00:03:44.720 +yeah okay you are now muted + +00:03:44.720 --> 00:03:48.000 +thank you + +00:03:48.000 --> 00:03:52.080 +you are now unmuted you are now muted + +00:03:52.080 --> 00:03:55.680 +oops not quite as slick as that other + +00:03:55.680 --> 00:03:58.879 +demo we saw the other day + +00:03:58.879 --> 00:04:02.799 +okay so control u control backslash I + +00:04:02.799 --> 00:04:04.239 +can select a different + +00:04:04.239 --> 00:04:07.200 +input method um from the default so if I + +00:04:07.200 --> 00:04:10.560 +select white hat I can type + +00:04:10.560 --> 00:04:14.480 +wash day like that + +00:04:14.480 --> 00:04:18.000 +so it's a different orthography here um + +00:04:18.000 --> 00:04:19.919 +I won't go too deeply into that it's + +00:04:19.919 --> 00:04:21.440 +hard to think and talk and type all at + +00:04:21.440 --> 00:04:23.120 +the same time + +00:04:23.120 --> 00:04:26.320 +um I hope that's good + +00:04:26.320 --> 00:04:28.560 +I'm happy to do more maybe I'll put up a + +00:04:28.560 --> 00:04:31.840 +video of of demonstrating that sometimes + +00:04:31.840 --> 00:04:36.479 +why did I just go ahead + +00:04:36.479 --> 00:04:39.520 +um time about for like one more question + +00:04:39.520 --> 00:04:42.880 +okay on live yeah thank you + +00:04:42.880 --> 00:04:45.280 +um well real quick did I write the + +00:04:45.280 --> 00:04:46.240 +company back end + +00:04:46.240 --> 00:04:48.880 +no that's just the automatic company + +00:04:48.880 --> 00:04:50.639 +completion based on other things I've + +00:04:50.639 --> 00:04:51.280 +typed + +00:04:51.280 --> 00:04:55.440 +why did I decide on the the input method + +00:04:55.440 --> 00:04:58.080 +that's a good question um I just did it + +00:04:58.080 --> 00:04:58.880 +based on + +00:04:58.880 --> 00:05:03.120 +my experience um in the x input mode you + +00:05:03.120 --> 00:05:04.000 +type it first + +00:05:04.000 --> 00:05:06.160 +and honestly I would love any input on + +00:05:06.160 --> 00:05:07.120 +what's more + +00:05:07.120 --> 00:05:09.280 +usual for these type of combining + +00:05:09.280 --> 00:05:10.960 +letters + +00:05:10.960 --> 00:05:13.919 +and really what I would like to do is + +00:05:13.919 --> 00:05:15.360 +kind of confer with other + +00:05:15.360 --> 00:05:17.600 +people from the tribe and talk to elders + +00:05:17.600 --> 00:05:19.440 +and see + +00:05:19.440 --> 00:05:21.440 +what feels right what what is the best + +00:05:21.440 --> 00:05:23.600 +way to go about this + +00:05:23.600 --> 00:05:24.800 +I don't think that it should be an + +00:05:24.800 --> 00:05:26.960 +individual decision and in this case it + +00:05:26.960 --> 00:05:27.919 +is because + +00:05:27.919 --> 00:05:30.880 +I created it for myself but now that + +00:05:30.880 --> 00:05:32.320 +I've released it to the world I think + +00:05:32.320 --> 00:05:34.639 +there's more to think about + +00:05:34.639 --> 00:05:37.680 +okay I guess I have to go now so we can + +00:05:37.680 --> 00:05:38.800 +get to the next talk + +00:05:38.800 --> 00:05:42.320 +thank you for listening okay + +00:05:42.320 --> 00:05:44.320 +thank you very much grant for your + +00:05:44.320 --> 00:05:45.759 +awesome talk and for + +00:05:45.759 --> 00:05:50.720 +the questions and answers diff --git a/2020/subtitles/emacsconf-2020--32-object-oriented-code-in-the-gnus-newsreader--eric-abrahamsen-autogen.vtt b/2020/subtitles/emacsconf-2020--32-object-oriented-code-in-the-gnus-newsreader--eric-abrahamsen-autogen.vtt new file mode 100644 index 00000000..9f4d0e06 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--32-object-oriented-code-in-the-gnus-newsreader--eric-abrahamsen-autogen.vtt @@ -0,0 +1,2215 @@ +WEBVTT + +00:00:01.839 --> 00:00:04.160 +hello EmacsConf + +00:00:04.160 --> 00:00:05.759 +thanks very much first of all to the + +00:00:05.759 --> 00:00:07.200 +organizers of the conference + +00:00:07.200 --> 00:00:09.440 +and to the audience who I hope is out + +00:00:09.440 --> 00:00:10.480 +there somewhere + +00:00:10.480 --> 00:00:12.080 +uh for giving me this chance to talk + +00:00:12.080 --> 00:00:14.240 +about Emacs and some of my uh + +00:00:14.240 --> 00:00:16.560 +my poking around with Emacs lisp my name + +00:00:16.560 --> 00:00:18.480 +is eric abrahamson I'm not + +00:00:18.480 --> 00:00:20.960 +a professional programmer but I use + +00:00:20.960 --> 00:00:21.920 +Emacs all day + +00:00:21.920 --> 00:00:24.800 +every day for writing for translating + +00:00:24.800 --> 00:00:26.160 +for project management + +00:00:26.160 --> 00:00:28.160 +and most importantly for email which + +00:00:28.160 --> 00:00:29.199 +will be the + +00:00:29.199 --> 00:00:32.480 +subject of my talk today so I'm talking + +00:00:32.480 --> 00:00:35.440 +about object-oriented code in Emacs + +00:00:35.440 --> 00:00:38.320 +uh most famous possibly oldest + +00:00:38.320 --> 00:00:40.160 +definitely most notorious news reader + +00:00:40.160 --> 00:00:41.760 +slash Emacs client + +00:00:41.760 --> 00:00:44.320 +email client so in particular object + +00:00:44.320 --> 00:00:45.440 +oriented code + +00:00:45.440 --> 00:00:50.239 +in news why object-oriented code + +00:00:50.239 --> 00:00:51.920 +the way news works is it started off as + +00:00:51.920 --> 00:00:53.600 +a news reader so for access + +00:00:53.600 --> 00:00:57.039 +accessing nntp servers and later on grew + +00:00:57.039 --> 00:00:59.120 +a whole bunch of new functionality as a + +00:00:59.120 --> 00:01:01.039 +mail client so it can talk to imap + +00:01:01.039 --> 00:01:02.079 +servers + +00:01:02.079 --> 00:01:04.799 +mail dealer directories uh folders on + +00:01:04.799 --> 00:01:06.640 +your file system all kinds of stuff + +00:01:06.640 --> 00:01:08.400 +but it presents a unified interface to + +00:01:08.400 --> 00:01:09.760 +all those things so it's basically + +00:01:09.760 --> 00:01:11.040 +polymorphism + +00:01:11.040 --> 00:01:14.000 +one of the the basic fundamental + +00:01:14.000 --> 00:01:16.400 +principles of object oriented code so + +00:01:16.400 --> 00:01:18.720 +it's a good fit second reason is it + +00:01:18.720 --> 00:01:19.920 +already is + +00:01:19.920 --> 00:01:22.880 +object oriented and I'll get into what + +00:01:22.880 --> 00:01:23.759 +that means + +00:01:23.759 --> 00:01:27.280 +in a second so + +00:01:27.280 --> 00:01:28.640 +the background that you should know is + +00:01:28.640 --> 00:01:30.640 +that most of this code was written in + +00:01:30.640 --> 00:01:32.560 +the 90s + +00:01:32.560 --> 00:01:34.880 +Emacs lisp has only grown sort of + +00:01:34.880 --> 00:01:36.159 +official + +00:01:36.159 --> 00:01:38.640 +object orientation support libraries + +00:01:38.640 --> 00:01:41.200 +over the past 10 years or so + +00:01:41.200 --> 00:01:43.840 +from about 2010 to the present so what + +00:01:43.840 --> 00:01:44.799 +does + +00:01:44.799 --> 00:01:48.640 +news do so the basics of + +00:01:48.640 --> 00:01:50.560 +object orientation in most languages are + +00:01:50.560 --> 00:01:52.240 +you you define + +00:01:52.240 --> 00:01:53.759 +a class of some sort and then you + +00:01:53.759 --> 00:01:55.840 +instantiate that class and these + +00:01:55.840 --> 00:01:58.079 +class instances have two things they + +00:01:58.079 --> 00:02:00.320 +have data attributes or + +00:02:00.320 --> 00:02:01.759 +slots or members or whatever you're + +00:02:01.759 --> 00:02:04.799 +going to call them and they have + +00:02:04.799 --> 00:02:07.280 +methods which operate on individual + +00:02:07.280 --> 00:02:08.399 +instances + +00:02:08.399 --> 00:02:11.120 +so you could say that you create or + +00:02:11.120 --> 00:02:12.879 +instantiate an instance of a class in + +00:02:12.879 --> 00:02:13.920 +that instance + +00:02:13.920 --> 00:02:16.239 +owns two things that owns its set of + +00:02:16.239 --> 00:02:17.120 +attributes + +00:02:17.120 --> 00:02:20.239 +and it owns some methods which + +00:02:20.239 --> 00:02:23.280 +also work on the on the instance + +00:02:23.280 --> 00:02:26.720 +so both in nurse's existing code and in + +00:02:26.720 --> 00:02:29.040 +the more standard object oriented Emacs + +00:02:29.040 --> 00:02:30.080 +lisp libraries + +00:02:30.080 --> 00:02:32.480 +this relationship is turned on its head + +00:02:32.480 --> 00:02:34.080 +a little bit + +00:02:34.080 --> 00:02:37.599 +in that data slots and + +00:02:37.599 --> 00:02:40.239 +uh and instance methods are defined + +00:02:40.239 --> 00:02:41.360 +outside of the + +00:02:41.360 --> 00:02:42.959 +class or the instances themselves so + +00:02:42.959 --> 00:02:45.040 +they are top level definitions + +00:02:45.040 --> 00:02:46.879 +so we'll get to what that means in the + +00:02:46.879 --> 00:02:48.319 +in the newer libraries um + +00:02:48.319 --> 00:02:49.840 +in a bit but uh first I want to talk + +00:02:49.840 --> 00:02:51.760 +about how news does this and in order to + +00:02:51.760 --> 00:02:54.319 +do that we are going to go deep into + +00:02:54.319 --> 00:02:57.440 +the darkest corner of the new co source + +00:02:57.440 --> 00:02:59.879 +code tree to a library called + +00:02:59.879 --> 00:03:02.879 +nno.l very cryptically + +00:03:02.879 --> 00:03:05.040 +titled uh library and when we open it up + +00:03:05.040 --> 00:03:06.800 +we find + +00:03:06.800 --> 00:03:09.519 +a library with no code comments and + +00:03:09.519 --> 00:03:11.040 +almost no doc strings + +00:03:11.040 --> 00:03:12.800 +almost as if lars was a little ashamed + +00:03:12.800 --> 00:03:14.159 +not ashamed but knew he was doing + +00:03:14.159 --> 00:03:16.000 +something a little bit crazy + +00:03:16.000 --> 00:03:19.040 +and didn't want anyone to see so + +00:03:19.040 --> 00:03:21.040 +this file contains the the object + +00:03:21.040 --> 00:03:22.400 +oriented mechanism + +00:03:22.400 --> 00:03:24.480 +whereby you can define different kinds + +00:03:24.480 --> 00:03:25.760 +of back ends for news + +00:03:25.760 --> 00:03:27.280 +and then those back ends can be + +00:03:27.280 --> 00:03:29.760 +instantiated as individual + +00:03:29.760 --> 00:03:32.480 +servers and as you define these backends + +00:03:32.480 --> 00:03:33.360 +you're supposed to use + +00:03:33.360 --> 00:03:36.000 +two macros which you can see here one is + +00:03:36.000 --> 00:03:36.640 +called def + +00:03:36.640 --> 00:03:39.599 +vu and one is called defu and if you + +00:03:39.599 --> 00:03:41.280 +look at the definitions the definitions + +00:03:41.280 --> 00:03:43.280 +look pretty simple here def vu basically + +00:03:43.280 --> 00:03:45.440 +turns into a def var + +00:03:45.440 --> 00:03:49.040 +and foo turns into a defund + +00:03:49.040 --> 00:03:52.239 +and along with those basic definitions + +00:03:52.239 --> 00:03:55.760 +the library also does some registration + +00:03:55.760 --> 00:03:58.720 +memoization caching of those variables + +00:03:58.720 --> 00:04:00.080 +it saves them in the structure + +00:04:00.080 --> 00:04:01.840 +for later use so that we know that those + +00:04:01.840 --> 00:04:03.360 +are meant to be + +00:04:03.360 --> 00:04:05.280 +uh attributes and methods that are used + +00:04:05.280 --> 00:04:06.640 +with instances + +00:04:06.640 --> 00:04:08.000 +with server instances but you can see + +00:04:08.000 --> 00:04:09.280 +that there's no server instance + +00:04:09.280 --> 00:04:10.560 +definition here there's no + +00:04:10.560 --> 00:04:13.200 +like no nothing these are top level + +00:04:13.200 --> 00:04:14.239 +these are top level + +00:04:14.239 --> 00:04:18.160 +definitions so really data attributes + +00:04:18.160 --> 00:04:18.639 +for + +00:04:18.639 --> 00:04:22.000 +new servers and + +00:04:22.000 --> 00:04:23.840 +methods or functions that operate on + +00:04:23.840 --> 00:04:25.440 +those instances are completely + +00:04:25.440 --> 00:04:28.400 +separate mechanisms they don't really + +00:04:28.400 --> 00:04:29.600 +have anything to do with each other they + +00:04:29.600 --> 00:04:31.680 +don't belong to the same data structures + +00:04:31.680 --> 00:04:37.120 +so how do they work follow me + +00:04:37.120 --> 00:04:39.520 +aka methods and attributes these are all + +00:04:39.520 --> 00:04:41.360 +the things I just said + +00:04:41.360 --> 00:04:44.479 +so when you define a + +00:04:44.479 --> 00:04:48.560 +a backend type + +00:04:48.560 --> 00:04:51.199 +in noose what you get is this a + +00:04:51.199 --> 00:04:52.400 +definition a list + +00:04:52.400 --> 00:04:54.080 +and it'll say there is such a back end + +00:04:54.080 --> 00:04:55.520 +as nnml + +00:04:55.520 --> 00:04:58.880 +and these are its uh data attributes + +00:04:58.880 --> 00:04:59.520 +that any + +00:04:59.520 --> 00:05:01.840 +given instance can have and then these + +00:05:01.840 --> 00:05:02.960 +are + +00:05:02.960 --> 00:05:04.960 +the functions or methods that are + +00:05:04.960 --> 00:05:06.880 +defined to operate on + +00:05:06.880 --> 00:05:08.960 +an instance of this backend so a server + +00:05:08.960 --> 00:05:11.440 +that belongs to the nnml + +00:05:11.440 --> 00:05:13.360 +backend so at least we have this data + +00:05:13.360 --> 00:05:15.120 +here so that's that's handy we don't you + +00:05:15.120 --> 00:05:16.880 +don't really touch that that's like very + +00:05:16.880 --> 00:05:18.000 +very very deep + +00:05:18.000 --> 00:05:20.560 +um use code that doesn't really come up + +00:05:20.560 --> 00:05:22.560 +even as a + +00:05:22.560 --> 00:05:25.280 +even as a bug squasher or whatever we + +00:05:25.280 --> 00:05:26.479 +don't touch that very often but there + +00:05:26.479 --> 00:05:27.280 +they are and that's + +00:05:27.280 --> 00:05:30.400 +that's how they work now the next thing + +00:05:30.400 --> 00:05:32.080 +that obviously you want to know is okay + +00:05:32.080 --> 00:05:34.000 +where are if I've started up news where + +00:05:34.000 --> 00:05:35.039 +are my servers + +00:05:35.039 --> 00:05:37.199 +uh where are these server objects since + +00:05:37.199 --> 00:05:39.199 +this is object oriented + +00:05:39.199 --> 00:05:41.840 +programming and the weird thing that you + +00:05:41.840 --> 00:05:43.199 +will eventually + +00:05:43.199 --> 00:05:45.199 +figure out in some cases after years of + +00:05:45.199 --> 00:05:46.880 +poking around in the new source code + +00:05:46.880 --> 00:05:49.199 +is that servers do not exist in an + +00:05:49.199 --> 00:05:50.320 +ontological + +00:05:50.320 --> 00:05:53.440 +philosophical sense as objects the + +00:05:53.440 --> 00:05:55.440 +primary data structures of noose are + +00:05:55.440 --> 00:05:57.039 +groups + +00:05:57.039 --> 00:05:58.960 +and in sort of an object-oriented + +00:05:58.960 --> 00:06:00.720 +hierarchical you know mindset you'd + +00:06:00.720 --> 00:06:01.759 +think well + +00:06:01.759 --> 00:06:03.759 +groups belong to servers so servers must + +00:06:03.759 --> 00:06:05.759 +exist but they don't + +00:06:05.759 --> 00:06:08.000 +each group and here you can see some + +00:06:08.000 --> 00:06:09.360 +examples of groups + +00:06:09.360 --> 00:06:11.199 +these are basically the data structures + +00:06:11.199 --> 00:06:13.039 +that represent a group each group also + +00:06:13.039 --> 00:06:14.960 +has a little entry here that + +00:06:14.960 --> 00:06:17.039 +that tells you what server it belongs to + +00:06:17.039 --> 00:06:18.000 +and each group + +00:06:18.000 --> 00:06:20.479 +replicates that data uh saying which + +00:06:20.479 --> 00:06:23.120 +server it belongs to and so when + +00:06:23.120 --> 00:06:24.479 +nurse is going through doing its + +00:06:24.479 --> 00:06:26.160 +business uh trying to figure out what's + +00:06:26.160 --> 00:06:27.680 +like updating mail from the groups or + +00:06:27.680 --> 00:06:29.840 +whatever almost every time + +00:06:29.840 --> 00:06:31.600 +it will cycle through all the list of + +00:06:31.600 --> 00:06:32.960 +groups it'll + +00:06:32.960 --> 00:06:34.960 +it'll look at all the server definitions + +00:06:34.960 --> 00:06:36.720 +and it will categorize the groups by + +00:06:36.720 --> 00:06:38.160 +server + +00:06:38.160 --> 00:06:41.120 +which which is just weird because you're + +00:06:41.120 --> 00:06:42.160 +sort of looking for okay where does the + +00:06:42.160 --> 00:06:43.840 +server exist it doesn't exist it's put + +00:06:43.840 --> 00:06:44.479 +together + +00:06:44.479 --> 00:06:48.319 +every time uh out of out of code + +00:06:48.319 --> 00:06:50.400 +elsewhere in the news code base + +00:06:50.400 --> 00:06:51.840 +specifically from these group + +00:06:51.840 --> 00:06:54.080 +these group definitions and so this is + +00:06:54.080 --> 00:06:55.199 +very odd because + +00:06:55.199 --> 00:06:58.080 +in in some sense like here this one its + +00:06:58.080 --> 00:06:58.720 +server is + +00:06:58.720 --> 00:07:02.240 +nnml and an empty string so there's a + +00:07:02.240 --> 00:07:03.919 +certain sense here in which this server + +00:07:03.919 --> 00:07:04.479 +is not + +00:07:04.479 --> 00:07:06.400 +really an object at all what it is is a + +00:07:06.400 --> 00:07:07.759 +set of instructions for how to find + +00:07:07.759 --> 00:07:08.560 +messages + +00:07:08.560 --> 00:07:11.199 +and this set of instructions is go to + +00:07:11.199 --> 00:07:12.800 +the default place where the user + +00:07:12.800 --> 00:07:15.440 +might have their mail and expect to find + +00:07:15.440 --> 00:07:16.000 +messages + +00:07:16.000 --> 00:07:18.080 +there in an nml format which is + +00:07:18.080 --> 00:07:19.840 +basically just one message per + +00:07:19.840 --> 00:07:22.479 +um per file and any number of groups + +00:07:22.479 --> 00:07:23.840 +could have those same instructions uh + +00:07:23.840 --> 00:07:25.440 +but they're not it's not really a thing + +00:07:25.440 --> 00:07:26.720 +it's really just a + +00:07:26.720 --> 00:07:28.639 +it's more of a procedural instruction + +00:07:28.639 --> 00:07:30.240 +and on the other end of the spectrum you + +00:07:30.240 --> 00:07:31.919 +might have an nni map + +00:07:31.919 --> 00:07:33.599 +server which very much is a thing it has + +00:07:33.599 --> 00:07:35.840 +its own it has its own server its own + +00:07:35.840 --> 00:07:37.759 +port its own authentication + +00:07:37.759 --> 00:07:40.240 +system so some of the servers are more + +00:07:40.240 --> 00:07:41.360 +like things some of the servers are more + +00:07:41.360 --> 00:07:42.400 +like instructions + +00:07:42.400 --> 00:07:45.520 +as news works right now um these + +00:07:45.520 --> 00:07:47.280 +most of the servers are treated like + +00:07:47.280 --> 00:07:48.879 +just instruction sets + +00:07:48.879 --> 00:07:50.879 +and and there's no place where you can + +00:07:50.879 --> 00:07:53.120 +go and find them there's no one central + +00:07:53.120 --> 00:07:55.360 +uh variable that defines them all so how + +00:07:55.360 --> 00:07:56.160 +do the + +00:07:56.160 --> 00:07:57.520 +um so we'll talk about the methods in a + +00:07:57.520 --> 00:07:59.520 +second how do the data attributes work + +00:07:59.520 --> 00:08:02.639 +uh put very crudely um + +00:08:02.639 --> 00:08:04.479 +your servers when they're put together + +00:08:04.479 --> 00:08:05.919 +uh they are okay they are + +00:08:05.919 --> 00:08:08.080 +kept in a variable and it's called nno + +00:08:08.080 --> 00:08:08.960 +nno + +00:08:08.960 --> 00:08:11.120 +state a list and there's a concept to + +00:08:11.120 --> 00:08:12.960 +this of the current server + +00:08:12.960 --> 00:08:16.560 +so when we go here let's go back to + +00:08:16.560 --> 00:08:19.039 +our nnno definition a list so when we + +00:08:19.039 --> 00:08:20.560 +have an nnml + +00:08:20.560 --> 00:08:22.240 +server say we have one here and it's + +00:08:22.240 --> 00:08:24.400 +just this blank string + +00:08:24.400 --> 00:08:26.639 +these are all when you define that in + +00:08:26.639 --> 00:08:28.879 +your own uh server definition code + +00:08:28.879 --> 00:08:31.919 +you can put in different values for all + +00:08:31.919 --> 00:08:32.399 +of these + +00:08:32.399 --> 00:08:35.760 +various attributes and when noose comes + +00:08:35.760 --> 00:08:37.039 +when it comes time for news to operate + +00:08:37.039 --> 00:08:38.959 +on this server in particular ask it to + +00:08:38.959 --> 00:08:40.640 +you know open a group or get new mail + +00:08:40.640 --> 00:08:42.080 +what it will do is it will take + +00:08:42.080 --> 00:08:45.360 +that particular server's data from these + +00:08:45.360 --> 00:08:45.920 +symbols + +00:08:45.920 --> 00:08:47.600 +and it will copy all that information + +00:08:47.600 --> 00:08:49.600 +into the global devfars + +00:08:49.600 --> 00:08:51.760 +so for the time that you are operating + +00:08:51.760 --> 00:08:53.120 +on this particular server + +00:08:53.120 --> 00:08:55.920 +its individual data becomes the values + +00:08:55.920 --> 00:08:56.800 +of these global + +00:08:56.800 --> 00:08:59.360 +variables which when you realize what's + +00:08:59.360 --> 00:09:00.560 +happening is sort of terrifying you + +00:09:00.560 --> 00:09:02.080 +think oh my god + +00:09:02.080 --> 00:09:04.480 +but at the same time it's actually kind + +00:09:04.480 --> 00:09:05.760 +of impressive and it's amazing that it + +00:09:05.760 --> 00:09:07.279 +works as well as it does + +00:09:07.279 --> 00:09:09.120 +I'm actually a little bit in awe of the + +00:09:09.120 --> 00:09:10.880 +of the code in this in this library I + +00:09:10.880 --> 00:09:12.560 +think it's pretty impressive + +00:09:12.560 --> 00:09:15.760 +so as you nno change server + +00:09:15.760 --> 00:09:18.320 +uh this function here these values get + +00:09:18.320 --> 00:09:20.080 +copied into the global value into the + +00:09:20.080 --> 00:09:21.440 +global variables and then as you go on + +00:09:21.440 --> 00:09:22.399 +the next server + +00:09:22.399 --> 00:09:24.000 +that gets you know cleaned out and + +00:09:24.000 --> 00:09:26.399 +recopied there are a few + +00:09:26.399 --> 00:09:29.680 +um a few other slot types + +00:09:29.680 --> 00:09:32.000 +or attribute types which do because all + +00:09:32.000 --> 00:09:33.440 +of these attributes see they all start + +00:09:33.440 --> 00:09:34.720 +with the nml + +00:09:34.720 --> 00:09:37.920 +or in this case and in folder prefix + +00:09:37.920 --> 00:09:40.560 +but there are a few slot types that all + +00:09:40.560 --> 00:09:41.760 +servers need for + +00:09:41.760 --> 00:09:43.279 +for instance their most recent status + +00:09:43.279 --> 00:09:45.920 +message a status symbol like open denied + +00:09:45.920 --> 00:09:46.640 +whatever + +00:09:46.640 --> 00:09:48.080 +and that data is sort of scattered + +00:09:48.080 --> 00:09:49.680 +around the rest of the news + +00:09:49.680 --> 00:09:51.200 +code base in various variables or + +00:09:51.200 --> 00:09:53.440 +various places + +00:09:53.440 --> 00:09:55.440 +so that's that sort of just contributes + +00:09:55.440 --> 00:09:56.560 +to the confusion when you're trying to + +00:09:56.560 --> 00:09:57.360 +figure out why + +00:09:57.360 --> 00:10:00.720 +things are going wrong so that is our + +00:10:00.720 --> 00:10:03.839 +um nnoo which is and + +00:10:03.839 --> 00:10:05.440 +sort of how the attributes and these + +00:10:05.440 --> 00:10:07.360 +global variables work + +00:10:07.360 --> 00:10:09.120 +if we want to talk about defu and the + +00:10:09.120 --> 00:10:10.480 +methods we + +00:10:10.480 --> 00:10:20.800 +go to + +00:10:20.800 --> 00:10:23.200 +and so this is the place where all the + +00:10:23.200 --> 00:10:25.600 +server level methods are defined + +00:10:25.600 --> 00:10:27.200 +and what we have here are things like + +00:10:27.200 --> 00:10:29.279 +here's an example there's closed server + +00:10:29.279 --> 00:10:32.640 +this closed server is given a + +00:10:32.640 --> 00:10:36.320 +a server as a an argument + +00:10:36.320 --> 00:10:38.079 +it looks at the server and basically it + +00:10:38.079 --> 00:10:40.560 +finds the proper function to call on + +00:10:40.560 --> 00:10:42.079 +this particular server + +00:10:42.079 --> 00:10:45.120 +using the function new skip function by + +00:10:45.120 --> 00:10:45.600 +taking + +00:10:45.600 --> 00:10:48.959 +the sort of latter half of this function + +00:10:48.959 --> 00:10:49.760 +symbol + +00:10:49.760 --> 00:10:52.079 +and pasting it together with the symbol + +00:10:52.079 --> 00:10:53.440 +that represents the back end so + +00:10:53.440 --> 00:10:56.800 +if you were calling this on an nni map + +00:10:56.800 --> 00:10:59.600 +server your skip function would look at + +00:10:59.600 --> 00:11:01.279 +your imap server look at closed server I + +00:11:01.279 --> 00:11:02.240 +knew what + +00:11:02.240 --> 00:11:07.839 +it would come up with + +00:11:07.839 --> 00:11:10.240 +server sure enough there's an imac close + +00:11:10.240 --> 00:11:11.920 +server and it'll call this code and then + +00:11:11.920 --> 00:11:12.240 +it'll + +00:11:12.240 --> 00:11:14.000 +it'll go and do its other bookkeeping + +00:11:14.000 --> 00:11:15.279 +another sort of + +00:11:15.279 --> 00:11:18.320 +surrounding code and so that's not that + +00:11:18.320 --> 00:11:19.279 +actually works pretty well + +00:11:19.279 --> 00:11:22.640 +uh as as things go uh defu + +00:11:22.640 --> 00:11:24.959 +makes a record that this this function + +00:11:24.959 --> 00:11:26.800 +exists and nus gets function get + +00:11:26.800 --> 00:11:28.320 +function looks on that cache finds the + +00:11:28.320 --> 00:11:29.600 +function and calls it + +00:11:29.600 --> 00:11:30.959 +now what's particularly confusing is + +00:11:30.959 --> 00:11:32.560 +that you don't actually even have to use + +00:11:32.560 --> 00:11:33.360 +defu + +00:11:33.360 --> 00:11:35.519 +so whoever wrote and then mail gear + +00:11:35.519 --> 00:11:38.399 +which is a weird library + +00:11:38.399 --> 00:11:39.920 +said to heck with you I'm not using any + +00:11:39.920 --> 00:11:41.600 +of these + +00:11:41.600 --> 00:11:43.120 +any of this machinery I'm going to do it + +00:11:43.120 --> 00:11:45.839 +myself so we have + +00:11:45.839 --> 00:11:49.680 +def structs to hold uh the instance + +00:11:49.680 --> 00:11:52.320 +data and then we have just plain old + +00:11:52.320 --> 00:11:53.040 +defense + +00:11:53.040 --> 00:11:55.680 +for things like animal your close server + +00:11:55.680 --> 00:11:57.279 +request close all of these + +00:11:57.279 --> 00:11:59.279 +these server level uh variables and it + +00:11:59.279 --> 00:12:00.320 +just turns out that + +00:12:00.320 --> 00:12:03.360 +news in its belt and suspenders + +00:12:03.360 --> 00:12:05.839 +approach to uh to coding it'll actually + +00:12:05.839 --> 00:12:07.279 +just go out if it can't find + +00:12:07.279 --> 00:12:10.320 +the memoized function it'll just go out + +00:12:10.320 --> 00:12:12.160 +and say has anybody defined a function + +00:12:12.160 --> 00:12:14.240 +that looks like this pattern and then + +00:12:14.240 --> 00:12:16.000 +and then melder says yes I did and then + +00:12:16.000 --> 00:12:17.920 +we call it and then we go so it's just + +00:12:17.920 --> 00:12:19.920 +it's fine it works it just adds to the + +00:12:19.920 --> 00:12:21.440 +confusion why + +00:12:21.440 --> 00:12:24.240 +why does it work we don't know sometimes + +00:12:24.240 --> 00:12:25.440 +the only thing worse than not knowing + +00:12:25.440 --> 00:12:26.880 +why something doesn't work is + +00:12:26.880 --> 00:12:30.000 +not knowing why something does work um + +00:12:30.000 --> 00:12:30.560 +and then + +00:12:30.560 --> 00:12:31.920 +a last little bit I want to touch on + +00:12:31.920 --> 00:12:33.680 +here is inheritance which is another + +00:12:33.680 --> 00:12:35.440 +sort of cornerstone of object-oriented + +00:12:35.440 --> 00:12:38.480 +coding as far as I can tell only uh + +00:12:38.480 --> 00:12:40.160 +the only inheritance that goes on is in + +00:12:40.160 --> 00:12:41.920 +something called nn male + +00:12:41.920 --> 00:12:45.519 +which provides sort of common functions + +00:12:45.519 --> 00:12:48.399 +for back ends that keep their mail on + +00:12:48.399 --> 00:12:49.360 +your + +00:12:49.360 --> 00:12:52.000 +local machine and you can spool it you + +00:12:52.000 --> 00:12:53.680 +can delete it you can you know you own + +00:12:53.680 --> 00:12:55.440 +the messages it's not like an nntp + +00:12:55.440 --> 00:12:56.160 +server + +00:12:56.160 --> 00:12:59.040 +and so a lot of those male deer nnml + +00:12:59.040 --> 00:13:00.160 +whatever + +00:13:00.160 --> 00:13:02.959 +a lot of those have sort of similar code + +00:13:02.959 --> 00:13:04.079 +which they + +00:13:04.079 --> 00:13:07.600 +which they share via this nn mail + +00:13:07.600 --> 00:13:09.600 +you call it an abstract parent class I + +00:13:09.600 --> 00:13:12.959 +guess so if you have something like nnml + +00:13:12.959 --> 00:13:15.440 +it has a request scan uh when it goes + +00:13:15.440 --> 00:13:16.720 +into request scan + +00:13:16.720 --> 00:13:18.800 +it ends up calling nnmail.newmail and it + +00:13:18.800 --> 00:13:21.760 +says I am calling this as an nml server + +00:13:21.760 --> 00:13:23.279 +and here are some of my callback + +00:13:23.279 --> 00:13:24.959 +functions and my variables that I would + +00:13:24.959 --> 00:13:26.000 +like you to use + +00:13:26.000 --> 00:13:28.000 +when you are getting your email so in + +00:13:28.000 --> 00:13:30.120 +this way the code is sort of you know + +00:13:30.120 --> 00:13:33.120 +inter-interleaved between the the child + +00:13:33.120 --> 00:13:35.680 +class and the parent class even though + +00:13:35.680 --> 00:13:37.120 +we're not talking in terms of classes + +00:13:37.120 --> 00:13:39.440 +here at all really + +00:13:39.440 --> 00:13:42.160 +so that's how noose works right now I + +00:13:42.160 --> 00:13:42.959 +hope that's clear + +00:13:42.959 --> 00:13:45.519 +it certainly wasn't to me and I still + +00:13:45.519 --> 00:13:46.560 +have to go refresh my + +00:13:46.560 --> 00:13:48.079 +memory I'd like to talk a little bit + +00:13:48.079 --> 00:13:50.079 +about sort of the newer + +00:13:50.079 --> 00:13:51.600 +libraries that are available now for + +00:13:51.600 --> 00:13:54.240 +doing object-oriented code + +00:13:54.240 --> 00:13:56.959 +uh as I mentioned I think earlier nno + +00:13:56.959 --> 00:13:59.279 +the copyright headers for 1996 so that's + +00:13:59.279 --> 00:14:00.320 +pretty venerable + +00:14:00.320 --> 00:14:02.639 +coincidentally around the same time eric + +00:14:02.639 --> 00:14:05.519 +ludlum started developing e-I-e-I-o + +00:14:05.519 --> 00:14:08.320 +which is a which is sort of inspired by + +00:14:08.320 --> 00:14:09.360 +a common lisp's + +00:14:09.360 --> 00:14:12.720 +common lisp object system um I got a + +00:14:12.720 --> 00:14:14.240 +very good introduction to that from this + +00:14:14.240 --> 00:14:14.959 +book + +00:14:14.959 --> 00:14:16.399 +practical common lisp which I would + +00:14:16.399 --> 00:14:18.000 +encourage you to look at if you haven't + +00:14:18.000 --> 00:14:20.079 +which you probably have anyway + +00:14:20.079 --> 00:14:22.320 +e-I-e-I-o was incorporated into Emacs in + +00:14:22.320 --> 00:14:23.920 +2010 + +00:14:23.920 --> 00:14:27.839 +so that yeah e-I-e-I-o provides um + +00:14:27.839 --> 00:14:30.240 +the deaf class statements it provides + +00:14:30.240 --> 00:14:32.079 +deaf generics deaf methods all that sort + +00:14:32.079 --> 00:14:32.639 +of stuff + +00:14:32.639 --> 00:14:34.800 +sort of a common lisp object-oriented + +00:14:34.800 --> 00:14:36.320 +code + +00:14:36.320 --> 00:14:38.399 +at some point stephan monier's money + +00:14:38.399 --> 00:14:39.760 +money another name I haven't pronounced + +00:14:39.760 --> 00:14:41.199 +it all out + +00:14:41.199 --> 00:14:43.839 +started either cleaning up that code or + +00:14:43.839 --> 00:14:45.120 +for one reason or another writing a + +00:14:45.120 --> 00:14:46.959 +re-implementation of generic functions + +00:14:46.959 --> 00:14:48.000 +which was added + +00:14:48.000 --> 00:14:51.440 +uh in 2015 and then throughout this time + +00:14:51.440 --> 00:14:51.920 +another + +00:14:51.920 --> 00:14:54.639 +sort of object-oriented style + +00:14:54.639 --> 00:14:55.760 +declaration is + +00:14:55.760 --> 00:14:58.160 +defstruct which started off in the cl + +00:14:58.160 --> 00:15:00.000 +libraries + +00:15:00.000 --> 00:15:01.600 +implemented with vectors later was + +00:15:01.600 --> 00:15:02.959 +implemented with records so they're + +00:15:02.959 --> 00:15:04.639 +easier to target + +00:15:04.639 --> 00:15:06.720 +anyway that's another option so how + +00:15:06.720 --> 00:15:08.399 +would we this is I'm probably out of + +00:15:08.399 --> 00:15:09.279 +time already but + +00:15:09.279 --> 00:15:13.839 +we're only getting to the part + +00:15:13.839 --> 00:15:15.760 +the whole point of this is how would we + +00:15:15.760 --> 00:15:17.920 +rewrite someone news's code to use these + +00:15:17.920 --> 00:15:19.920 +newer libraries + +00:15:19.920 --> 00:15:21.760 +if we didn't have to support third party + +00:15:21.760 --> 00:15:23.839 +libraries this wouldn't be that hard + +00:15:23.839 --> 00:15:26.639 +but out there noose is really up on uh + +00:15:26.639 --> 00:15:28.160 +you know backwards compatibility and not + +00:15:28.160 --> 00:15:30.240 +breaking people's stuff and you know + +00:15:30.240 --> 00:15:33.040 +multi-decade support for things so there + +00:15:33.040 --> 00:15:34.240 +are people out there who have written + +00:15:34.240 --> 00:15:35.759 +third-party libraries + +00:15:35.759 --> 00:15:38.480 +um defining new backends for you can use + +00:15:38.480 --> 00:15:40.000 +like hacker news or whatever as + +00:15:40.000 --> 00:15:41.759 +a as a server so we want to be able to + +00:15:41.759 --> 00:15:43.199 +support those if you didn't have to + +00:15:43.199 --> 00:15:44.240 +support those it'd be fine you'd + +00:15:44.240 --> 00:15:46.079 +re-implement you'd use generic functions + +00:15:46.079 --> 00:15:47.440 +you'd use either structure classes + +00:15:47.440 --> 00:15:48.560 +whatever but we got a + +00:15:48.560 --> 00:15:51.040 +it's a little bit tricky to support + +00:15:51.040 --> 00:15:52.000 +these other people's + +00:15:52.000 --> 00:15:54.320 +libraries so one of the things we can do + +00:15:54.320 --> 00:15:56.079 +is rewrite the defu + +00:15:56.079 --> 00:15:59.279 +so if you remember defu is the thing + +00:15:59.279 --> 00:16:00.079 +that uh + +00:16:00.079 --> 00:16:03.120 +or sorry uh defu + +00:16:03.120 --> 00:16:04.800 +is the thing that defines methods that + +00:16:04.800 --> 00:16:07.040 +operate on object answers + +00:16:07.040 --> 00:16:10.160 +instances and we can uh rewrite that to + +00:16:10.160 --> 00:16:10.639 +use + +00:16:10.639 --> 00:16:13.440 +cldef generic and that's this is fairly + +00:16:13.440 --> 00:16:14.240 +fairly simple + +00:16:14.240 --> 00:16:15.440 +it looks like a lot of code it's not a + +00:16:15.440 --> 00:16:17.759 +lot of good for instance we have the + +00:16:17.759 --> 00:16:20.320 +new closed server code that we looked at + +00:16:20.320 --> 00:16:21.199 +earlier + +00:16:21.199 --> 00:16:22.720 +and we have this phone call and the new + +00:16:22.720 --> 00:16:24.560 +skip function so this would look + +00:16:24.560 --> 00:16:28.720 +like using generic functions and methods + +00:16:28.720 --> 00:16:30.240 +it would look like this we'd have + +00:16:30.240 --> 00:16:32.959 +a generic def generic which is just a + +00:16:32.959 --> 00:16:34.560 +sort of a declaration + +00:16:34.560 --> 00:16:36.320 +and a doc string and then we have those + +00:16:36.320 --> 00:16:37.680 +implementations + +00:16:37.680 --> 00:16:40.320 +so we can see what the original code + +00:16:40.320 --> 00:16:42.399 +does here is it first says okay what + +00:16:42.399 --> 00:16:44.720 +type is our our is our argument here and + +00:16:44.720 --> 00:16:45.839 +if it's a string + +00:16:45.839 --> 00:16:48.560 +then go and get the proper s the proper + +00:16:48.560 --> 00:16:50.160 +method definition + +00:16:50.160 --> 00:16:52.480 +from that string so the way we do that + +00:16:52.480 --> 00:16:53.920 +with methods is we + +00:16:53.920 --> 00:16:56.000 +we say if the server is a string so if + +00:16:56.000 --> 00:16:57.440 +it matches this type + +00:16:57.440 --> 00:16:58.720 +then what we're going to do is just + +00:16:58.720 --> 00:17:00.320 +recall we're going to call this function + +00:17:00.320 --> 00:17:02.160 +all over again + +00:17:02.160 --> 00:17:05.199 +using uh basically the same code here + +00:17:05.199 --> 00:17:06.400 +the same code that takes a string and + +00:17:06.400 --> 00:17:07.600 +gets the object so + +00:17:07.600 --> 00:17:10.640 +this does this can add extra function + +00:17:10.640 --> 00:17:11.600 +calls + +00:17:11.600 --> 00:17:12.880 +depending on how you've written the rest + +00:17:12.880 --> 00:17:14.880 +of your code um but this is sort of the + +00:17:14.880 --> 00:17:16.640 +canonical way of doing this + +00:17:16.640 --> 00:17:19.679 +uh using methods then our next part here + +00:17:19.679 --> 00:17:20.559 +is + +00:17:20.559 --> 00:17:22.000 +nishkit function we're going to get a + +00:17:22.000 --> 00:17:24.559 +function called closed server + +00:17:24.559 --> 00:17:26.079 +the difference here is that all these + +00:17:26.079 --> 00:17:27.360 +functions are all going to be called + +00:17:27.360 --> 00:17:28.000 +close + +00:17:28.000 --> 00:17:29.360 +news close server they're not going to + +00:17:29.360 --> 00:17:31.120 +be called news like nni my + +00:17:31.120 --> 00:17:32.799 +closed server and ntp close server + +00:17:32.799 --> 00:17:34.400 +they're all going to have the same name + +00:17:34.400 --> 00:17:36.160 +and what we do is uh we have an around + +00:17:36.160 --> 00:17:37.440 +method + +00:17:37.440 --> 00:17:40.640 +for any server that is a const which is + +00:17:40.640 --> 00:17:43.679 +which is as close as we care to get uh + +00:17:43.679 --> 00:17:45.520 +for you know zeroing in on the type that + +00:17:45.520 --> 00:17:46.799 +we're looking for + +00:17:46.799 --> 00:17:48.559 +we put in a round method on that so that + +00:17:48.559 --> 00:17:50.480 +we can call the next method which we'll + +00:17:50.480 --> 00:17:51.679 +call the more specific + +00:17:51.679 --> 00:17:53.440 +method and then we have our other + +00:17:53.440 --> 00:17:55.600 +bookkeeping code to clean up you know + +00:17:55.600 --> 00:17:57.280 +set up tear down code we'll go around + +00:17:57.280 --> 00:17:58.640 +that + +00:17:58.640 --> 00:18:00.080 +and then in one of the back-end + +00:18:00.080 --> 00:18:02.080 +definitions for instance in an imap + +00:18:02.080 --> 00:18:04.320 +we have another news closed server thing + +00:18:04.320 --> 00:18:05.760 +this looks at the server + +00:18:05.760 --> 00:18:08.880 +and it says is this server a list that + +00:18:08.880 --> 00:18:10.799 +starts with a symbol and an imap and if + +00:18:10.799 --> 00:18:12.480 +it is then we're almost guaranteed that + +00:18:12.480 --> 00:18:13.679 +this is what we wanted + +00:18:13.679 --> 00:18:15.840 +and then this is where we would insert + +00:18:15.840 --> 00:18:17.600 +all the rest of the code from anonymous + +00:18:17.600 --> 00:18:18.960 +closed server + +00:18:18.960 --> 00:18:20.799 +where we'd re-redefine that to look like + +00:18:20.799 --> 00:18:22.880 +this so it's not that hard + +00:18:22.880 --> 00:18:26.080 +theoretically so what we would do + +00:18:26.080 --> 00:18:28.720 +is take the defu macro macro and then + +00:18:28.720 --> 00:18:29.679 +rewrite that + +00:18:29.679 --> 00:18:32.240 +so that it actually defines a cl def + +00:18:32.240 --> 00:18:33.039 +method like + +00:18:33.039 --> 00:18:35.520 +one of these now there's a couple of + +00:18:35.520 --> 00:18:36.320 +these things + +00:18:36.320 --> 00:18:38.960 +unfortunately it's not that easy get rid + +00:18:38.960 --> 00:18:41.200 +of you + +00:18:41.200 --> 00:18:43.490 +a couple of these things + +00:18:43.490 --> 00:18:46.400 +[Music] + +00:18:46.400 --> 00:18:49.039 +that don't use their server as the first + +00:18:49.039 --> 00:18:49.919 +argument + +00:18:49.919 --> 00:18:52.400 +or any of the arguments or it's an + +00:18:52.400 --> 00:18:53.280 +optional argument + +00:18:53.280 --> 00:18:54.720 +and we need the server to be in there to + +00:18:54.720 --> 00:18:56.640 +dispatch on its type + +00:18:56.640 --> 00:18:58.799 +if the server doesn't show up as a as a + +00:18:58.799 --> 00:19:00.080 +required + +00:19:00.080 --> 00:19:01.760 +argument we're not going to be able to + +00:19:01.760 --> 00:19:03.600 +locate the the proper + +00:19:03.600 --> 00:19:07.440 +function call so in the case of + +00:19:07.440 --> 00:19:10.640 +noose request group here we start with + +00:19:10.640 --> 00:19:12.080 +the group it's the group that matters + +00:19:12.080 --> 00:19:12.720 +and we get + +00:19:12.720 --> 00:19:14.960 +the newscommand method as an optional + +00:19:14.960 --> 00:19:16.240 +argument + +00:19:16.240 --> 00:19:18.559 +so that's not cool we don't want that so + +00:19:18.559 --> 00:19:20.480 +what we need instead is something that + +00:19:20.480 --> 00:19:21.360 +looks like this + +00:19:21.360 --> 00:19:23.840 +what we're going to do with uh this is + +00:19:23.840 --> 00:19:25.360 +gonna be just terrible terrible code but + +00:19:25.360 --> 00:19:26.640 +hopefully it won't get used very often + +00:19:26.640 --> 00:19:28.160 +it's gonna be really embarrassing + +00:19:28.160 --> 00:19:30.559 +um defu what's what definitely was gonna + +00:19:30.559 --> 00:19:31.520 +have to do is + +00:19:31.520 --> 00:19:33.200 +say okay is this a function that doesn't + +00:19:33.200 --> 00:19:34.559 +have the server as the first argument + +00:19:34.559 --> 00:19:35.360 +and if it does + +00:19:35.360 --> 00:19:36.960 +it's gonna say oh it's news request + +00:19:36.960 --> 00:19:38.400 +group what happens has to happen with + +00:19:38.400 --> 00:19:39.280 +news request group + +00:19:39.280 --> 00:19:40.799 +is we take the news command method and + +00:19:40.799 --> 00:19:43.200 +we're going to move it up to the front + +00:19:43.200 --> 00:19:46.240 +to the first argument here and it's + +00:19:46.240 --> 00:19:47.520 +either going to be + +00:19:47.520 --> 00:19:48.720 +it's either going to be given or it's + +00:19:48.720 --> 00:19:50.840 +going to be nil because it's it is + +00:19:50.840 --> 00:19:52.080 +optional + +00:19:52.080 --> 00:19:54.320 +okay I briefly edited the space time + +00:19:54.320 --> 00:19:55.760 +continuum there to conceal the fact that + +00:19:55.760 --> 00:19:56.400 +I had + +00:19:56.400 --> 00:19:57.679 +actually not finished writing the code + +00:19:57.679 --> 00:19:59.440 +that I was supposed to write anyway + +00:19:59.440 --> 00:20:02.159 +um so now we have once we've reordered + +00:20:02.159 --> 00:20:02.960 +the + +00:20:02.960 --> 00:20:04.320 +the arguments to the function then we + +00:20:04.320 --> 00:20:05.760 +have to check our various possible + +00:20:05.760 --> 00:20:06.880 +values one is + +00:20:06.880 --> 00:20:08.640 +uh that the server was not passed in in + +00:20:08.640 --> 00:20:10.080 +which case we recall + +00:20:10.080 --> 00:20:12.400 +request group with the server um the + +00:20:12.400 --> 00:20:13.840 +other is that it's just a string in + +00:20:13.840 --> 00:20:15.360 +which case we do that and then this is + +00:20:15.360 --> 00:20:16.559 +sort of the the normal + +00:20:16.559 --> 00:20:18.559 +the normal case that we would expect to + +00:20:18.559 --> 00:20:20.720 +cons so that's not that bad it's not you + +00:20:20.720 --> 00:20:21.039 +know + +00:20:21.039 --> 00:20:23.760 +it's not beautiful um I would be sort of + +00:20:23.760 --> 00:20:24.480 +ashamed to + +00:20:24.480 --> 00:20:26.159 +let anybody see that particular macro + +00:20:26.159 --> 00:20:28.000 +but I think that it would work okay + +00:20:28.000 --> 00:20:30.640 +now the more difficult thing is going to + +00:20:30.640 --> 00:20:31.440 +be + +00:20:31.440 --> 00:20:34.640 +the data variables so + +00:20:34.640 --> 00:20:37.600 +the equivalent of def vu because our two + +00:20:37.600 --> 00:20:39.360 +options for defining classes here are + +00:20:39.360 --> 00:20:41.039 +def struct and def class both of which + +00:20:41.039 --> 00:20:41.919 +required you + +00:20:41.919 --> 00:20:45.280 +to define the slots inside this macro + +00:20:45.280 --> 00:20:46.960 +itself + +00:20:46.960 --> 00:20:49.039 +so defu is top level um how do we get + +00:20:49.039 --> 00:20:51.280 +the top level this top level macro + +00:20:51.280 --> 00:20:55.039 +uh to insert slot names into these + +00:20:55.039 --> 00:20:56.240 +definitions it's + +00:20:56.240 --> 00:20:58.960 +it's possible that it'll be um that I + +00:20:58.960 --> 00:21:00.240 +could monkey patch + +00:21:00.240 --> 00:21:03.039 +uh an existing struct or an existing + +00:21:03.039 --> 00:21:04.799 +class to add a new slot into it that + +00:21:04.799 --> 00:21:05.280 +sounds + +00:21:05.280 --> 00:21:07.760 +ugly the other option would be to give + +00:21:07.760 --> 00:21:09.600 +it a server variable slot which is just + +00:21:09.600 --> 00:21:11.520 +a generalized bucket + +00:21:11.520 --> 00:21:13.760 +that holds anything that gets defined + +00:21:13.760 --> 00:21:15.520 +via def loop + +00:21:15.520 --> 00:21:16.720 +I don't like either of those solutions + +00:21:16.720 --> 00:21:18.799 +but I'm I don't see any other + +00:21:18.799 --> 00:21:22.480 +any other way of doing that so we re + +00:21:22.480 --> 00:21:25.520 +rewrite the nno declare macro to either + +00:21:25.520 --> 00:21:27.440 +be a destructor or a def class + +00:21:27.440 --> 00:21:29.840 +and we rewrite the def boom macro to + +00:21:29.840 --> 00:21:31.039 +somehow + +00:21:31.039 --> 00:21:33.039 +associate that variable name the symbol + +00:21:33.039 --> 00:21:34.480 +with the with the resulting class + +00:21:34.480 --> 00:21:36.159 +definition + +00:21:36.159 --> 00:21:37.760 +then the last question is do we use + +00:21:37.760 --> 00:21:39.600 +structure classes + +00:21:39.600 --> 00:21:41.600 +they both got their their strengths and + +00:21:41.600 --> 00:21:43.200 +their weaknesses + +00:21:43.200 --> 00:21:46.480 +the nice thing is that I mean I've got + +00:21:46.480 --> 00:21:47.520 +how many servers you're going to have + +00:21:47.520 --> 00:21:49.600 +really I've got I think less than 10 + +00:21:49.600 --> 00:21:51.919 +uh truly deranged mine might have as as + +00:21:51.919 --> 00:21:52.960 +many as + +00:21:52.960 --> 00:21:55.440 +50 let's double that to 100 100 of + +00:21:55.440 --> 00:21:56.480 +anything is not going to matter it + +00:21:56.480 --> 00:21:58.400 +doesn't matter what we use + +00:21:58.400 --> 00:22:00.159 +death structures are simpler they're + +00:22:00.159 --> 00:22:02.720 +lighter weight they're defined on top of + +00:22:02.720 --> 00:22:05.600 +the direct the c records so you know + +00:22:05.600 --> 00:22:06.960 +that's nice + +00:22:06.960 --> 00:22:08.559 +the slots don't carry very much + +00:22:08.559 --> 00:22:10.320 +information with them there's no type + +00:22:10.320 --> 00:22:11.760 +information there's no doc string for + +00:22:11.760 --> 00:22:14.480 +the slots themselves + +00:22:14.480 --> 00:22:16.559 +they can also only do single inheritance + +00:22:16.559 --> 00:22:17.919 +which some might say + +00:22:17.919 --> 00:22:21.120 +was an advantage def class each slot + +00:22:21.120 --> 00:22:22.640 +gets a lot more information associated + +00:22:22.640 --> 00:22:24.000 +with it with it which I think can be + +00:22:24.000 --> 00:22:24.480 +nice + +00:22:24.480 --> 00:22:27.120 +it can do multiple inheritance if you're + +00:22:27.120 --> 00:22:28.799 +going to go there + +00:22:28.799 --> 00:22:30.720 +they are heavier weight in particular + +00:22:30.720 --> 00:22:32.640 +their printed representation is gross + +00:22:32.640 --> 00:22:34.080 +it's enormous + +00:22:34.080 --> 00:22:35.840 +so if you see one show up in a back + +00:22:35.840 --> 00:22:37.520 +trace or in your messages buffer can + +00:22:37.520 --> 00:22:38.240 +really + +00:22:38.240 --> 00:22:39.520 +it can really blow that up and make it + +00:22:39.520 --> 00:22:41.360 +hard to read this of course won't be an + +00:22:41.360 --> 00:22:43.200 +issue because our code won't have any + +00:22:43.200 --> 00:22:46.240 +errors in it um my argument for multiple + +00:22:46.240 --> 00:22:48.320 +inheritance here is that I can imagine + +00:22:48.320 --> 00:22:51.280 +new servers falling into sort of like a + +00:22:51.280 --> 00:22:52.720 +little two by two matrix of + +00:22:52.720 --> 00:22:56.240 +of parent classes one being news versus + +00:22:56.240 --> 00:22:56.799 +mail + +00:22:56.799 --> 00:23:00.320 +so news the messages belong to somebody + +00:23:00.320 --> 00:23:00.720 +else + +00:23:00.720 --> 00:23:02.080 +you can't touch them you can't delete + +00:23:02.080 --> 00:23:03.840 +them mail meaning + +00:23:03.840 --> 00:23:06.000 +the messages are under your command + +00:23:06.000 --> 00:23:08.960 +either a local mail dealer a remote imap + +00:23:08.960 --> 00:23:11.039 +you're allowed to spool them copy them + +00:23:11.039 --> 00:23:12.640 +delete them at will + +00:23:12.640 --> 00:23:13.919 +and then the other sort of line of the + +00:23:13.919 --> 00:23:16.400 +matrix would be a local file system + +00:23:16.400 --> 00:23:19.760 +versus some kind of a you know server + +00:23:19.760 --> 00:23:20.559 +port + +00:23:20.559 --> 00:23:23.280 +remote access and that second the server + +00:23:23.280 --> 00:23:24.960 +port remote access thing might require + +00:23:24.960 --> 00:23:26.880 +authentication it might require a keep + +00:23:26.880 --> 00:23:28.559 +alive for a connection + +00:23:28.559 --> 00:23:30.159 +um it's there's going to be a process + +00:23:30.159 --> 00:23:31.600 +there rather than just file system + +00:23:31.600 --> 00:23:32.400 +commands + +00:23:32.400 --> 00:23:33.840 +so I could see if I was going to do + +00:23:33.840 --> 00:23:35.360 +multiple inheritance that's what I would + +00:23:35.360 --> 00:23:36.240 +do those two + +00:23:36.240 --> 00:23:39.039 +those two possible parent classes anyway + +00:23:39.039 --> 00:23:40.400 +that's as far as I've gotten + +00:23:40.400 --> 00:23:41.520 +I thought that I would be able to write + +00:23:41.520 --> 00:23:43.279 +more of this code before I did this talk + +00:23:43.279 --> 00:23:44.720 +but instead I spent the whole time + +00:23:44.720 --> 00:23:46.720 +messing with video codecs but that's + +00:23:46.720 --> 00:23:48.320 +where we're at and I'm going to cut + +00:23:48.320 --> 00:23:49.440 +myself off now + +00:23:49.440 --> 00:23:50.960 +I hope there are questions I hope I'm + +00:23:50.960 --> 00:23:53.440 +there to to answer your questions + +00:23:53.440 --> 00:23:55.919 +and thanks very much again to everyone + +00:23:55.919 --> 00:23:57.120 +involved + +00:23:57.120 --> 00:23:59.279 +bye diff --git a/2020/subtitles/emacsconf-2020--33-maxima-a-computer-algebra-system-in-emacs--fermin.vtt b/2020/subtitles/emacsconf-2020--33-maxima-a-computer-algebra-system-in-emacs--fermin.vtt new file mode 100644 index 00000000..6810a359 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--33-maxima-a-computer-algebra-system-in-emacs--fermin.vtt @@ -0,0 +1,1708 @@ +WEBVTT + +00:00:01.680 --> 00:00:04.480 +you are now unmuted + +00:00:04.480 --> 00:00:08.000 +okay can you guys hear me yeah + +00:00:08.000 --> 00:00:11.280 +can you guys hear me sir yep I can and + +00:00:11.280 --> 00:00:14.480 +we're live so take it away okay + +00:00:14.480 --> 00:00:17.199 +so um hello everyone my name is ferming + +00:00:17.199 --> 00:00:18.400 +I'm a programmer + +00:00:18.400 --> 00:00:20.960 +a math student from spain I've been + +00:00:20.960 --> 00:00:22.400 +using me e-max for + +00:00:22.400 --> 00:00:24.960 +two years now more or less and today I'm + +00:00:24.960 --> 00:00:26.000 +going to talk about + +00:00:26.000 --> 00:00:28.320 +a maxima computer algebra system in 2 + +00:00:28.320 --> 00:00:29.199 +max + +00:00:29.199 --> 00:00:32.239 +so let's talk about what is maxima + +00:00:32.239 --> 00:00:34.239 +well maxim is a system for manipulation + +00:00:34.239 --> 00:00:36.079 +of symbolic and numerical expression + +00:00:36.079 --> 00:00:37.920 +and it's similar in some regard to + +00:00:37.920 --> 00:00:39.440 +octave + +00:00:39.440 --> 00:00:42.160 +and it's also free software is derived + +00:00:42.160 --> 00:00:45.039 +from the maxima from the 60 from the m80 + +00:00:45.039 --> 00:00:47.120 +and it's written in common lisp which is + +00:00:47.120 --> 00:00:48.320 +a language that I really + +00:00:48.320 --> 00:00:50.719 +like I enjoy writing it so for me it's a + +00:00:50.719 --> 00:00:51.600 +plus + +00:00:51.600 --> 00:00:55.039 +okay so let's talk about the initial + +00:00:55.039 --> 00:00:57.039 +support for maxima when I first started + +00:00:57.039 --> 00:00:59.280 +using it I looked for support into Emacs + +00:00:59.280 --> 00:01:00.320 +and I found that + +00:01:00.320 --> 00:01:03.120 +there's two major modes in the main + +00:01:03.120 --> 00:01:04.640 +repository of maxima + +00:01:04.640 --> 00:01:07.200 +for remax the first one is imaxima which + +00:01:07.200 --> 00:01:09.280 +I don't know too much about it + +00:01:09.280 --> 00:01:12.000 +and the second one is maxima dot l which + +00:01:12.000 --> 00:01:13.439 +is the one I took first + +00:01:13.439 --> 00:01:16.640 +and it was pretty nice has like a major + +00:01:16.640 --> 00:01:18.080 +mode a minor mode + +00:01:18.080 --> 00:01:21.280 +a nice ripple but it also has some + +00:01:21.280 --> 00:01:23.040 +disadvantage + +00:01:23.040 --> 00:01:25.040 +and the first one is that is quite + +00:01:25.040 --> 00:01:26.479 +outdated I think + +00:01:26.479 --> 00:01:29.600 +it was from the 2007 + +00:01:29.600 --> 00:01:30.960 +so it's not tested with the current + +00:01:30.960 --> 00:01:33.280 +email version and the second one + +00:01:33.280 --> 00:01:35.520 +is that it doesn't use modern e-max + +00:01:35.520 --> 00:01:36.320 +capability + +00:01:36.320 --> 00:01:38.640 +I'm talking for example about the last + +00:01:38.640 --> 00:01:40.479 +or more latex preview + +00:01:40.479 --> 00:01:44.720 +from the last a max 27.1 I think + +00:01:44.720 --> 00:01:46.079 +and that's why is that they know + +00:01:46.079 --> 00:01:47.920 +integrated with common third party + +00:01:47.920 --> 00:01:49.600 +extension I'm talking about company for + +00:01:49.600 --> 00:01:51.520 +example third party + +00:01:51.520 --> 00:01:55.360 +yeah you know the alpa melba packages + +00:01:55.360 --> 00:01:57.280 +so uh this stock is going to be divided + +00:01:57.280 --> 00:01:58.719 +in two parts the first one is going to + +00:01:58.719 --> 00:02:00.799 +be how I maximize my date today + +00:02:00.799 --> 00:02:03.040 +in max exercise don't worry it's going + +00:02:03.040 --> 00:02:03.840 +to be + +00:02:03.840 --> 00:02:06.000 +quite easy and the second one is going + +00:02:06.000 --> 00:02:07.680 +to be why for the package + +00:02:07.680 --> 00:02:10.560 +and the list improvement that I did and + +00:02:10.560 --> 00:02:13.200 +a couple of things more maybe the future + +00:02:13.200 --> 00:02:14.480 +and where's the package right now if you + +00:02:14.480 --> 00:02:16.720 +can use it so + +00:02:16.720 --> 00:02:19.440 +let's talk about the workflow so right + +00:02:19.440 --> 00:02:21.360 +out of the box it has like an + +00:02:21.360 --> 00:02:23.040 +orimal support I didn't write this it + +00:02:23.040 --> 00:02:24.400 +was already + +00:02:24.400 --> 00:02:27.680 +in Emacs + +00:02:27.680 --> 00:02:30.319 +so that's pretty nice let's go with a + +00:02:30.319 --> 00:02:32.720 +simple example + +00:02:32.720 --> 00:02:34.480 +okay so this is an array of three + +00:02:34.480 --> 00:02:36.000 +equations and three variables + +00:02:36.000 --> 00:02:37.920 +so it's a system that can be solved and + +00:02:37.920 --> 00:02:39.840 +the solution is unique + +00:02:39.840 --> 00:02:42.560 +um so we're going to solve it right + +00:02:42.560 --> 00:02:44.120 +let's go + +00:02:44.120 --> 00:02:47.519 +solutions okay here's how you define a + +00:02:47.519 --> 00:02:48.080 +variable + +00:02:48.080 --> 00:02:52.640 +in it's called solve okay + +00:02:52.640 --> 00:02:56.480 +it's called implicit explicit + +00:02:56.480 --> 00:03:00.400 +sorry okay and now an array of + +00:03:00.400 --> 00:03:03.680 +our variables actually okay + +00:03:03.680 --> 00:03:05.760 +so first of all we have to send this + +00:03:05.760 --> 00:03:07.599 +variable to the maxima + +00:03:07.599 --> 00:03:10.400 +repo with we can do that with ctrl c + +00:03:10.400 --> 00:03:11.200 +control c + +00:03:11.200 --> 00:03:14.480 +or with the maxima send line + +00:03:14.480 --> 00:03:19.200 +okay so let's um let's put the maxima + +00:03:19.200 --> 00:03:20.560 +buffer right here + +00:03:20.560 --> 00:03:23.680 +okay let's so um + +00:03:23.680 --> 00:03:25.360 +right now we can get the solution like + +00:03:25.360 --> 00:03:27.040 +this so we call already + +00:03:27.040 --> 00:03:29.360 +uh we call this line right now control + +00:03:29.360 --> 00:03:30.239 +sequence to c + +00:03:30.239 --> 00:03:31.920 +as you can see we get like an array + +00:03:31.920 --> 00:03:33.440 +inside an array because + +00:03:33.440 --> 00:03:36.080 +uh let's see why we get this so we can + +00:03:36.080 --> 00:03:38.799 +call maxima + +00:03:38.799 --> 00:03:42.239 +help a point this will open a + +00:03:42.239 --> 00:03:44.879 +dock um buffer with all information + +00:03:44.879 --> 00:03:46.000 +about the + +00:03:46.000 --> 00:03:48.799 +solve function so we can see that this + +00:03:48.799 --> 00:03:51.360 +list of solution equations + +00:03:51.360 --> 00:03:54.560 +you can see it okay so but we no we know + +00:03:54.560 --> 00:03:56.640 +that this system only have one solution + +00:03:56.640 --> 00:03:58.239 +so we're only interested in the first + +00:03:58.239 --> 00:04:00.400 +one we can do this like pretty easily + +00:04:00.400 --> 00:04:02.080 +just to take the first one + +00:04:02.080 --> 00:04:05.120 +we can send it to the buffer so this is + +00:04:05.120 --> 00:04:06.640 +quite easy example as you can see + +00:04:06.640 --> 00:04:09.280 +they have to completion much of the help + +00:04:09.280 --> 00:04:10.400 +facilities that we have + +00:04:10.400 --> 00:04:12.319 +we can also get information about the + +00:04:12.319 --> 00:04:14.720 +symbol for example maxima + +00:04:14.720 --> 00:04:17.440 +symbol doc and we get in the and now you + +00:04:17.440 --> 00:04:17.840 +can see + +00:04:17.840 --> 00:04:19.840 +correctly in the mini buffer all the + +00:04:19.840 --> 00:04:20.959 +possible + +00:04:20.959 --> 00:04:24.080 +um parameter of the function + +00:04:24.080 --> 00:04:28.000 +right so let's continue + +00:04:28.000 --> 00:04:31.440 +okay so let's go to a more well + +00:04:31.440 --> 00:04:34.880 +complicated example to say oops + +00:04:34.880 --> 00:04:38.560 +okay so we have this + +00:04:38.560 --> 00:04:42.400 +equation and we want to go from -1 to 5 + +00:04:42.400 --> 00:04:43.919 +I want to show in a nice + +00:04:43.919 --> 00:04:46.400 +graph right first of all we begin + +00:04:46.400 --> 00:04:47.759 +sending this line to the + +00:04:47.759 --> 00:04:51.759 +maxima ripple hold it button again + +00:04:51.759 --> 00:04:54.880 +okay um so this is not ideal if you want + +00:04:54.880 --> 00:04:56.960 +to write down this equation because + +00:04:56.960 --> 00:05:00.160 +it's quite messy what is when so + +00:05:00.160 --> 00:05:03.039 +uh what's thing are where so we can call + +00:05:03.039 --> 00:05:04.479 +the function maxima + +00:05:04.479 --> 00:05:07.520 +let's say insert form okay + +00:05:07.520 --> 00:05:10.240 +and this is more easy this basically put + +00:05:10.240 --> 00:05:11.280 +text behind + +00:05:11.280 --> 00:05:14.240 +and led or mode to render it and this is + +00:05:14.240 --> 00:05:15.120 +quite easy to + +00:05:15.120 --> 00:05:19.039 +write down you can use it like in every + +00:05:19.039 --> 00:05:22.560 +expression so um first we have to call a + +00:05:22.560 --> 00:05:23.199 +library + +00:05:23.199 --> 00:05:27.280 +let's load the library library draw + +00:05:27.280 --> 00:05:29.199 +we have also completion for local + +00:05:29.199 --> 00:05:31.520 +variable and local + +00:05:31.520 --> 00:05:35.039 +libraries sorry let me try to finish + +00:05:35.039 --> 00:05:38.240 +draw okay and we send the line + +00:05:38.240 --> 00:05:40.320 +so right now we have a leverage and we + +00:05:40.320 --> 00:05:42.240 +should even have auto completion for the + +00:05:42.240 --> 00:05:43.600 +library function + +00:05:43.600 --> 00:05:47.039 +okay we have let's call draw2d + +00:05:47.039 --> 00:05:50.400 +and now we can call implicit we should + +00:05:50.400 --> 00:05:51.199 +have + +00:05:51.199 --> 00:05:54.400 +okay and we can I mean put the variable + +00:05:54.400 --> 00:05:57.520 +of equations we put the first variable d + +00:05:57.520 --> 00:05:58.639 +minus + +00:05:58.639 --> 00:06:02.319 +five d five five + +00:06:02.319 --> 00:06:05.280 +the v variable the minus five and the + +00:06:05.280 --> 00:06:06.639 +five + +00:06:06.639 --> 00:06:09.680 +okay it should be all all good so let me + +00:06:09.680 --> 00:06:11.759 +try to send it + +00:06:11.759 --> 00:06:14.639 +okay you cannot see it right now because + +00:06:14.639 --> 00:06:16.639 +I'm just sharing the maxima screen let + +00:06:16.639 --> 00:06:19.360 +me try to change that + +00:06:19.360 --> 00:06:23.520 +okay um + +00:06:23.520 --> 00:06:31.520 +okay can you plot hello + +00:06:31.520 --> 00:06:33.919 +okay so this is basically the graph that + +00:06:33.919 --> 00:06:35.440 +I can upload generates + +00:06:35.440 --> 00:06:38.800 +uh right now it's not integrated into + +00:06:38.800 --> 00:06:41.039 +into the maximum package but it's a work + +00:06:41.039 --> 00:06:42.240 +in progress + +00:06:42.240 --> 00:06:46.000 +so let's go back to Emacs + +00:06:46.000 --> 00:06:50.160 +uh where are you okay there you are okay + +00:06:50.160 --> 00:06:53.520 +okay so um + +00:06:53.520 --> 00:06:56.639 +let's continue so uh this is some of the + +00:06:56.639 --> 00:06:57.759 +things that you can use + +00:06:57.759 --> 00:07:00.000 +for your day-to-day programming in + +00:07:00.000 --> 00:07:01.919 +maxima + +00:07:01.919 --> 00:07:05.759 +let's go now with the + +00:07:05.759 --> 00:07:07.360 +okay as you can see this is just text + +00:07:07.360 --> 00:07:08.880 +that is render + +00:07:08.880 --> 00:07:11.199 +okay let's go within a slide this is how + +00:07:11.199 --> 00:07:13.440 +I use maxima a simple example you don't + +00:07:13.440 --> 00:07:14.400 +want to + +00:07:14.400 --> 00:07:16.240 +talk too much about it because everyone + +00:07:16.240 --> 00:07:17.919 +use the package in a different way + +00:07:17.919 --> 00:07:19.680 +so right now I'm going to talk about the + +00:07:19.680 --> 00:07:21.039 +original package and + +00:07:21.039 --> 00:07:23.520 +the way I change it right so the + +00:07:23.520 --> 00:07:25.120 +documentation + +00:07:25.120 --> 00:07:27.840 +of the original was great but for me it + +00:07:27.840 --> 00:07:29.680 +wasn't embedded in the code + +00:07:29.680 --> 00:07:31.840 +it was something sometimes hard to read + +00:07:31.840 --> 00:07:33.599 +like it was like a big + +00:07:33.599 --> 00:07:36.319 +chunk of comment it gave me all the + +00:07:36.319 --> 00:07:37.039 +information + +00:07:37.039 --> 00:07:40.400 +like um for me that's too much I prefer + +00:07:40.400 --> 00:07:44.240 +a cohesive small comment and then a big + +00:07:44.240 --> 00:07:45.360 +redmi will order + +00:07:45.360 --> 00:07:47.759 +all the links and information so that's + +00:07:47.759 --> 00:07:48.960 +one of the first thing I + +00:07:48.960 --> 00:07:52.080 +change um then also completion I'm a big + +00:07:52.080 --> 00:07:52.560 +fan + +00:07:52.560 --> 00:07:55.759 +I'm used to slime so I'm I love + +00:07:55.759 --> 00:07:58.639 +great auto completion so um the first + +00:07:58.639 --> 00:08:00.160 +thing that I noticed that well + +00:08:00.160 --> 00:08:01.840 +it uses an absolute function I don't + +00:08:01.840 --> 00:08:04.479 +know if you can see correctly okay + +00:08:04.479 --> 00:08:07.039 +comment dynamic is deprecated and it + +00:08:07.039 --> 00:08:08.800 +also have like this + +00:08:08.800 --> 00:08:10.720 +variable which is maximus symbol which + +00:08:10.720 --> 00:08:12.720 +is basically a big + +00:08:12.720 --> 00:08:16.160 +list of all the possible completions so + +00:08:16.160 --> 00:08:19.280 +if I load the library it's not aware of + +00:08:19.280 --> 00:08:20.960 +the new symbols or even if I + +00:08:20.960 --> 00:08:23.039 +create a variable it's not loaded so + +00:08:23.039 --> 00:08:24.240 +it's not dynamic + +00:08:24.240 --> 00:08:26.160 +so I want the first thing I want is + +00:08:26.160 --> 00:08:28.319 +dynamic completion right + +00:08:28.319 --> 00:08:31.680 +so I improve it which wasn't that hard + +00:08:31.680 --> 00:08:34.159 +I first of all create maximum completion + +00:08:34.159 --> 00:08:36.080 +which we're going to see in a moment + +00:08:36.080 --> 00:08:38.479 +and then it changes completion region so + +00:08:38.479 --> 00:08:39.200 +this is the + +00:08:39.200 --> 00:08:41.039 +improved version but the good thing is + +00:08:41.039 --> 00:08:43.760 +like I decoupled the completion function + +00:08:43.760 --> 00:08:45.839 +so I make that you can use it on your + +00:08:45.839 --> 00:08:47.600 +own so you get a prefix + +00:08:47.600 --> 00:08:50.800 +which is um like + +00:08:50.800 --> 00:08:52.560 +the thing that you're going to also + +00:08:52.560 --> 00:08:55.040 +complete you get the inferior process + +00:08:55.040 --> 00:08:56.959 +which I'm going to talk about later but + +00:08:56.959 --> 00:08:58.959 +basically it's a maxima process you can + +00:08:58.959 --> 00:08:59.760 +work with + +00:08:59.760 --> 00:09:01.760 +and you get an optional argument which + +00:09:01.760 --> 00:09:03.040 +is fuzzy finding + +00:09:03.040 --> 00:09:06.399 +okay so you can easily send a block here + +00:09:06.399 --> 00:09:07.200 +what + +00:09:07.200 --> 00:09:10.399 +uh with the propos which is a maxima + +00:09:10.399 --> 00:09:11.440 +command that gets you + +00:09:11.440 --> 00:09:13.839 +all the auto completion and then you + +00:09:13.839 --> 00:09:14.959 +process the + +00:09:14.959 --> 00:09:18.240 +the output and you return a list + +00:09:18.240 --> 00:09:20.480 +of possible completion this function can + +00:09:20.480 --> 00:09:21.600 +be easily put into + +00:09:21.600 --> 00:09:24.800 +company as you can see you just + +00:09:24.800 --> 00:09:26.640 +get maximum auxiliary inferior process + +00:09:26.640 --> 00:09:28.560 +is a process that just + +00:09:28.560 --> 00:09:32.080 +uses sorry I have of + +00:09:32.080 --> 00:09:35.360 +all the apropos and the get that symbol + +00:09:35.360 --> 00:09:36.480 +it's like uh + +00:09:36.480 --> 00:09:39.440 +like you say auxiliary let's help me uh + +00:09:39.440 --> 00:09:41.360 +for that dirty stuff + +00:09:41.360 --> 00:09:43.680 +so and process manipulation let's talk + +00:09:43.680 --> 00:09:44.640 +about + +00:09:44.640 --> 00:09:46.959 +how the maxima process was in the + +00:09:46.959 --> 00:09:47.920 +beginning + +00:09:47.920 --> 00:09:50.720 +so at first it was just one process and + +00:09:50.720 --> 00:09:52.560 +you send all of the things there + +00:09:52.560 --> 00:09:54.560 +and you move the processor here and + +00:09:54.560 --> 00:09:56.320 +there and + +00:09:56.320 --> 00:09:58.160 +there was a global state right so all + +00:09:58.160 --> 00:09:59.600 +the function depends on + +00:09:59.600 --> 00:10:02.000 +variable global variables and I don't + +00:10:02.000 --> 00:10:05.120 +like that approach I prefer more like a + +00:10:05.120 --> 00:10:07.680 +shirt to say functional like you sense + +00:10:07.680 --> 00:10:09.519 +one of things and you return + +00:10:09.519 --> 00:10:12.000 +something so it's not like a void + +00:10:12.000 --> 00:10:13.440 +function so to say + +00:10:13.440 --> 00:10:16.399 +so I change it recipe uh well this is + +00:10:16.399 --> 00:10:18.079 +the maxima start function now + +00:10:18.079 --> 00:10:20.959 +let's just create a startup process with + +00:10:20.959 --> 00:10:22.560 +this function which is maxima make + +00:10:22.560 --> 00:10:23.680 +inferior + +00:10:23.680 --> 00:10:26.880 +so this function just gets a name + +00:10:26.880 --> 00:10:30.000 +and it return a process of maxima and + +00:10:30.000 --> 00:10:31.519 +you can then manipulate it the way you + +00:10:31.519 --> 00:10:32.240 +want + +00:10:32.240 --> 00:10:35.600 +let's see a better version so this is + +00:10:35.600 --> 00:10:36.800 +the opposite right this + +00:10:36.800 --> 00:10:39.200 +remove an inferior process and delete + +00:10:39.200 --> 00:10:41.760 +the process and kill the buffer + +00:10:41.760 --> 00:10:43.440 +right so let's give an example because + +00:10:43.440 --> 00:10:45.519 +this you can see pretty easily in this + +00:10:45.519 --> 00:10:46.399 +example + +00:10:46.399 --> 00:10:50.079 +so I want to go to the scratch buffer + +00:10:50.079 --> 00:10:51.519 +which I think you can see it better + +00:10:51.519 --> 00:10:54.399 +okay so this is the way you can get a + +00:10:54.399 --> 00:10:55.760 +process with your name + +00:10:55.760 --> 00:10:58.320 +and save it into a variable right let's + +00:10:58.320 --> 00:11:00.880 +execute this so as you can see well + +00:11:00.880 --> 00:11:02.880 +I don't know if you can see big you get + +00:11:02.880 --> 00:11:03.920 +a process + +00:11:03.920 --> 00:11:05.839 +let's go to it the process called my + +00:11:05.839 --> 00:11:07.040 +maxima + +00:11:07.040 --> 00:11:09.519 +as the buffer right and if we can you + +00:11:09.519 --> 00:11:10.079 +can send + +00:11:10.079 --> 00:11:12.240 +stuff to the process right we can call + +00:11:12.240 --> 00:11:14.959 +maximus in block get a block of valid + +00:11:14.959 --> 00:11:16.880 +maxima code and just pass the variable + +00:11:16.880 --> 00:11:17.760 +the process + +00:11:17.760 --> 00:11:20.800 +and we send code to the process right we + +00:11:20.800 --> 00:11:21.519 +can + +00:11:21.519 --> 00:11:23.440 +this is useful if you have some + +00:11:23.440 --> 00:11:25.760 +expensive computation that you want + +00:11:25.760 --> 00:11:28.480 +to process laser to say so the process + +00:11:28.480 --> 00:11:29.680 +can manage it + +00:11:29.680 --> 00:11:32.640 +and when you get the results correctly + +00:11:32.640 --> 00:11:33.920 +you can also get the result from the + +00:11:33.920 --> 00:11:34.399 +process + +00:11:34.399 --> 00:11:35.920 +I mean I don't put it here but quite + +00:11:35.920 --> 00:11:38.000 +easy and then you + +00:11:38.000 --> 00:11:41.200 +removed in favor which is the way to get + +00:11:41.200 --> 00:11:42.079 +rid of the process + +00:11:42.079 --> 00:11:43.600 +and the buffer so if we call this + +00:11:43.600 --> 00:11:45.279 +function we should get rid of the + +00:11:45.279 --> 00:11:48.399 +this process and it works the processing + +00:11:48.399 --> 00:11:49.920 +is no longer + +00:11:49.920 --> 00:11:54.160 +I'm happy to continue so um + +00:11:54.160 --> 00:11:56.160 +other things that improve the package on + +00:11:56.160 --> 00:11:57.680 +my commitment during time + +00:11:57.680 --> 00:11:59.760 +I'm going good okay another thing that I + +00:11:59.760 --> 00:12:01.360 +did to the package was to add + +00:12:01.360 --> 00:12:02.560 +continue integration and continue + +00:12:02.560 --> 00:12:04.959 +delivery right so the package didn't + +00:12:04.959 --> 00:12:06.320 +have any tests + +00:12:06.320 --> 00:12:09.440 +and the code was a little bit messy so + +00:12:09.440 --> 00:12:12.959 +I add integration a test + +00:12:12.959 --> 00:12:16.560 +and test with the test simple framework + +00:12:16.560 --> 00:12:19.519 +from rocky bursting the maintainer of + +00:12:19.519 --> 00:12:20.560 +real + +00:12:20.560 --> 00:12:23.279 +good which is a great package by the way + +00:12:23.279 --> 00:12:24.079 +um + +00:12:24.079 --> 00:12:25.920 +yeah this is one example of the process + +00:12:25.920 --> 00:12:28.079 +so right now because um + +00:12:28.079 --> 00:12:29.760 +the infrastructure of the process + +00:12:29.760 --> 00:12:31.680 +management is decoupled + +00:12:31.680 --> 00:12:33.680 +so I can test it pretty easily this is + +00:12:33.680 --> 00:12:35.200 +the test function of the + +00:12:35.200 --> 00:12:37.519 +inferior running so I can check if an + +00:12:37.519 --> 00:12:39.519 +inferior is running right now + +00:12:39.519 --> 00:12:41.440 +and I can just delete it after and get + +00:12:41.440 --> 00:12:43.200 +the results + +00:12:43.200 --> 00:12:45.279 +and I also did some integration with the + +00:12:45.279 --> 00:12:46.959 +party packages the first one company of + +00:12:46.959 --> 00:12:48.639 +course I love auto completion + +00:12:48.639 --> 00:12:50.880 +the second one was hormone that was + +00:12:50.880 --> 00:12:53.839 +already there and latex with the + +00:12:53.839 --> 00:12:56.880 +um or logic insert form + +00:12:56.880 --> 00:13:00.079 +and with poly mode because um let me + +00:13:00.079 --> 00:13:02.959 +evaluate this maxima can understand lisp + +00:13:02.959 --> 00:13:03.680 +code + +00:13:03.680 --> 00:13:06.959 +well more or less it has like a + +00:13:06.959 --> 00:13:10.000 +function so to say that you can send a + +00:13:10.000 --> 00:13:11.279 +list command to the + +00:13:11.279 --> 00:13:13.600 +maxima rebel and you can understand it + +00:13:13.600 --> 00:13:14.480 +in some way so + +00:13:14.480 --> 00:13:17.839 +we can go to the maxima poly + +00:13:17.839 --> 00:13:20.959 +only maxima right you enable polymaxima + +00:13:20.959 --> 00:13:22.800 +and it creates a polymode + +00:13:22.800 --> 00:13:25.519 +which this is lisp code and this is + +00:13:25.519 --> 00:13:26.399 +maxima code + +00:13:26.399 --> 00:13:28.639 +so we can send this to the maxima ripple + +00:13:28.639 --> 00:13:30.560 +we come to c control r which + +00:13:30.560 --> 00:13:34.240 +it sends the um the current + +00:13:34.240 --> 00:13:37.760 +um area region sorry + +00:13:37.760 --> 00:13:40.160 +and we define a variable which is called + +00:13:40.160 --> 00:13:41.839 +test and as we can see we have the + +00:13:41.839 --> 00:13:44.000 +variable test right here so you can + +00:13:44.000 --> 00:13:47.360 +program in lisp and you can send it to + +00:13:47.360 --> 00:13:48.079 +maxima + +00:13:48.079 --> 00:13:50.399 +so this is pretty good pretty nice um + +00:13:50.399 --> 00:13:51.920 +working integration with + +00:13:51.920 --> 00:13:55.040 +the slime mode and with swank so you can + +00:13:55.040 --> 00:13:57.120 +actually have a completion of + +00:13:57.120 --> 00:13:59.120 +a function inside the maximal list + +00:13:59.120 --> 00:14:00.959 +package but + +00:14:00.959 --> 00:14:02.800 +this is going to take quite a while + +00:14:02.800 --> 00:14:04.399 +because it's not trivial + +00:14:04.399 --> 00:14:07.360 +so um we're the feature of maxima right + +00:14:07.360 --> 00:14:09.440 +now well we have fonts highlighting + +00:14:09.440 --> 00:14:11.519 +smart indentation uh it was already in + +00:14:11.519 --> 00:14:14.480 +the package but now it's quite better + +00:14:14.480 --> 00:14:16.880 +great help functions right now I can + +00:14:16.880 --> 00:14:18.160 +find the recommendation quite + +00:14:18.160 --> 00:14:20.800 +fast and currently the menu integration + +00:14:20.800 --> 00:14:22.160 +this is quite basic it needs to be a + +00:14:22.160 --> 00:14:23.120 +little bit improved + +00:14:23.120 --> 00:14:25.199 +uh latex support also completion the + +00:14:25.199 --> 00:14:26.720 +company and maximizer process + +00:14:26.720 --> 00:14:28.480 +integration and mini buffer I didn't + +00:14:28.480 --> 00:14:29.120 +show you + +00:14:29.120 --> 00:14:32.880 +but basically if you call global maxima + +00:14:32.880 --> 00:14:34.639 +minor mode you have the minor mode you + +00:14:34.639 --> 00:14:36.720 +call maxima mini buffer + +00:14:36.720 --> 00:14:38.399 +how are you okay mini buffer you can + +00:14:38.399 --> 00:14:40.720 +basically just write simple maxima + +00:14:40.720 --> 00:14:42.720 +command and it will give you the result + +00:14:42.720 --> 00:14:45.920 +this is like a permanent version of um + +00:14:45.920 --> 00:14:48.959 +calc so you can do it you write the + +00:14:48.959 --> 00:14:50.560 +command and you get the output uh way + +00:14:50.560 --> 00:14:52.320 +more to come I have like a list + +00:14:52.320 --> 00:14:56.079 +of issues that I put enhancement a new + +00:14:56.079 --> 00:14:58.880 +feature that I'm going to develop + +00:14:58.880 --> 00:15:01.199 +so uh the future under presence of the + +00:15:01.199 --> 00:15:03.120 +package well the package is right now + +00:15:03.120 --> 00:15:06.880 +melpa a melba stable um + +00:15:06.880 --> 00:15:10.720 +in this 0.7.6 version + +00:15:10.720 --> 00:15:13.360 +and I'm planning to include into the + +00:15:13.360 --> 00:15:15.279 +known canoe alpha + +00:15:15.279 --> 00:15:16.720 +this is the url of the package by the + +00:15:16.720 --> 00:15:18.959 +way so you can if you go to metapod you + +00:15:18.959 --> 00:15:20.079 +put maxima and + +00:15:20.079 --> 00:15:22.160 +you can download it it doesn't have too + +00:15:22.160 --> 00:15:23.199 +much dependencies + +00:15:23.199 --> 00:15:26.639 +you aware of that um and thank you very + +00:15:26.639 --> 00:15:27.120 +much + +00:15:27.120 --> 00:15:28.720 +uh this is going to be my talk these are + +00:15:28.720 --> 00:15:30.959 +my uh information + +00:15:30.959 --> 00:15:33.519 +this is my gitlab this is my page which + +00:15:33.519 --> 00:15:34.000 +I don't + +00:15:34.000 --> 00:15:37.120 +love too much and this is my email + +00:15:37.120 --> 00:15:40.240 +so um thank you very much and I will be + +00:15:40.240 --> 00:15:41.839 +answering some questions right now + +00:15:41.839 --> 00:15:45.600 +and happy hacking + +00:15:45.600 --> 00:15:49.600 +you are now unmuted thank you very much + +00:15:49.600 --> 00:15:52.720 +vermin for the great talk um okay yeah + +00:15:52.720 --> 00:15:55.759 +let's see if you have any questions + +00:15:55.759 --> 00:15:58.800 +uh yeah I'm reading like this um + +00:15:58.800 --> 00:16:01.759 +so I'm a buddy october usually right now + +00:16:01.759 --> 00:16:04.560 +okay + +00:16:04.560 --> 00:16:06.880 +maxima over october yep there are a + +00:16:06.880 --> 00:16:08.639 +couple questions + +00:16:08.639 --> 00:16:11.519 +wow maxima we're okay I don't want to I + +00:16:11.519 --> 00:16:12.160 +don't know + +00:16:12.160 --> 00:16:13.940 +october that much um + +00:16:13.940 --> 00:16:15.680 +[Music] + +00:16:15.680 --> 00:16:17.839 +like I use it like a couple of times but + +00:16:17.839 --> 00:16:18.880 +I'm not happy + +00:16:18.880 --> 00:16:24.000 +and I found the octave packets to be + +00:16:24.000 --> 00:16:27.120 +quite a little bit harder to understand + +00:16:27.120 --> 00:16:31.519 +and also that + +00:16:31.519 --> 00:16:33.839 +it didn't have too much features like I + +00:16:33.839 --> 00:16:35.680 +prefer the maximum used to + +00:16:35.680 --> 00:16:37.839 +maybe octave is better I don't I'm not + +00:16:37.839 --> 00:16:38.880 +100 sure + +00:16:38.880 --> 00:16:40.800 +I know that you can use it for similar + +00:16:40.800 --> 00:16:42.079 +stuff but + +00:16:42.079 --> 00:16:47.120 +that's it so sorry + +00:16:47.120 --> 00:16:50.959 +okay I'm in a little bit of a rush sorry + +00:16:50.959 --> 00:16:54.079 +let me drink a little blue okay + +00:16:54.079 --> 00:17:00.639 +okay + +00:17:00.639 --> 00:17:05.280 +okay how does maxima compare to sagemath + +00:17:05.280 --> 00:17:08.959 +in imax + +00:17:08.959 --> 00:17:13.360 +I mean I don't know what is sage + +00:17:13.360 --> 00:17:17.439 +math I'm sorry um so I cannot answer + +00:17:17.439 --> 00:17:18.079 +your question + +00:17:18.079 --> 00:17:21.839 +with your question I think um + +00:17:21.839 --> 00:17:25.039 +sorry but I mean maxima is ready in + +00:17:25.039 --> 00:17:26.720 +combo list that's just a preference for + +00:17:26.720 --> 00:17:28.000 +me because I like + +00:17:28.000 --> 00:17:31.120 +lisp dialect and common lisp is + +00:17:31.120 --> 00:17:36.400 +interesting um + +00:17:36.400 --> 00:17:40.480 +yeah do you plan to + +00:17:40.480 --> 00:17:42.720 +I mean a maximum organization for maxima + +00:17:42.720 --> 00:17:43.840 +code block + +00:17:43.840 --> 00:17:47.360 +yes I want to improve the um + +00:17:47.360 --> 00:17:50.720 +of maxima package but I didn't have + +00:17:50.720 --> 00:17:52.000 +enough time and I want to + +00:17:52.000 --> 00:17:54.400 +clear a little bit of the code because + +00:17:54.400 --> 00:17:58.000 +still right now + +00:17:58.000 --> 00:18:00.080 +the code is quite messy in some areas + +00:18:00.080 --> 00:18:02.080 +because I pretty much implement first + +00:18:02.080 --> 00:18:03.520 +the base function I want to + +00:18:03.520 --> 00:18:05.600 +build on top of so right now it's quite + +00:18:05.600 --> 00:18:07.120 +usable but I still have something that I + +00:18:07.120 --> 00:18:07.919 +want to improve + +00:18:07.919 --> 00:18:11.120 +so when I finish that I will + +00:18:11.120 --> 00:18:14.799 +improve the normal version I think + +00:18:14.799 --> 00:18:16.640 +it's maximizing to get into into your + +00:18:16.640 --> 00:18:18.640 +opinion yes I + +00:18:18.640 --> 00:18:21.200 +I think that the creator of maxima like + +00:18:21.200 --> 00:18:21.919 +have this + +00:18:21.919 --> 00:18:26.640 +lisp mine and probably + +00:18:26.640 --> 00:18:29.520 +that they if you go to a symbol you get + +00:18:29.520 --> 00:18:30.559 +all the information + +00:18:30.559 --> 00:18:33.520 +and that reflects that you can actually + +00:18:33.520 --> 00:18:36.480 +write your program of maxima into + +00:18:36.480 --> 00:18:40.000 +um into lisp literally because they have + +00:18:40.000 --> 00:18:40.799 +a command + +00:18:40.799 --> 00:18:42.480 +so I think that is quite easy to get + +00:18:42.480 --> 00:18:44.880 +into some university use it for + +00:18:44.880 --> 00:18:48.240 +um first um + +00:18:48.240 --> 00:18:51.200 +years so it's quite easy and I think + +00:18:51.200 --> 00:18:53.039 +with my package you can use it + +00:18:53.039 --> 00:18:56.640 +like pretty pretty easily just create a + +00:18:56.640 --> 00:18:58.960 +file and you can start typing and + +00:18:58.960 --> 00:19:00.880 +maximize quite easy to install also + +00:19:00.880 --> 00:19:04.400 +so I think yeah it's crazy and + +00:19:04.400 --> 00:19:07.600 +the page should restart I don't know why + +00:19:07.600 --> 00:19:18.320 +sorry + +00:19:18.320 --> 00:19:22.559 +strict in fixed lisp syntax + +00:19:22.559 --> 00:19:25.440 +you're talking about the maxima itself + +00:19:25.440 --> 00:19:26.240 +syntax + +00:19:26.240 --> 00:19:27.760 +or I don't understand the question + +00:19:27.760 --> 00:19:32.240 +correctly + +00:19:32.240 --> 00:19:33.679 +well I'm going to go to the next + +00:19:33.679 --> 00:19:35.440 +question is there + +00:19:35.440 --> 00:19:37.360 +support for images in maximum mode not + +00:19:37.360 --> 00:19:38.880 +right now + +00:19:38.880 --> 00:19:45.280 +the way I want to implement some imax + +00:19:45.280 --> 00:19:49.120 +things uh is there support for + +00:19:49.120 --> 00:19:51.280 +but right now it doesn't have like a if + +00:19:51.280 --> 00:19:53.360 +you could want to have a new plot + +00:19:53.360 --> 00:19:55.600 +um inside you buffer right now it's not + +00:19:55.600 --> 00:19:56.720 +possible so + +00:19:56.720 --> 00:19:59.360 +that's the thing that I maximized that + +00:19:59.360 --> 00:20:01.200 +maxima.l still doesn't + +00:20:01.200 --> 00:20:03.520 +do which university you start to use + +00:20:03.520 --> 00:20:04.720 +maxima um + +00:20:04.720 --> 00:20:08.799 +in this aragosa university from spain + +00:20:08.799 --> 00:20:11.840 +they used to maximize the um thing in + +00:20:11.840 --> 00:20:12.640 +the engineer + +00:20:12.640 --> 00:20:16.400 +and in the math also so I'm 100 sure + +00:20:16.400 --> 00:20:18.320 +right now but when I started + +00:20:18.320 --> 00:20:19.679 +are you planning to option your package + +00:20:19.679 --> 00:20:22.559 +into maxima um I don't know about that + +00:20:22.559 --> 00:20:25.440 +because uh maybe can be a little bit + +00:20:25.440 --> 00:20:26.320 +messy + +00:20:26.320 --> 00:20:30.720 +um because the maxima ripple is more + +00:20:30.720 --> 00:20:32.960 +built around like maxima itself and they + +00:20:32.960 --> 00:20:33.360 +don't + +00:20:33.360 --> 00:20:37.600 +update the interfaces that much + +00:20:37.600 --> 00:20:42.240 +I have no problem like it's okay it just + +00:20:42.240 --> 00:20:45.360 +you have to um if you want to push you + +00:20:45.360 --> 00:20:46.320 +can push in other + +00:20:46.320 --> 00:20:48.480 +repository I mean it's just changed the + +00:20:48.480 --> 00:20:49.520 +file another way + +00:20:49.520 --> 00:20:52.880 +but also the test um is going to be a + +00:20:52.880 --> 00:20:54.080 +little bit harder because I think + +00:20:54.080 --> 00:20:55.200 +they're using + +00:20:55.200 --> 00:20:59.120 +search for and I'm using + +00:20:59.120 --> 00:21:01.200 +git lab continue integration within the + +00:21:01.200 --> 00:21:02.159 +jury + +00:21:02.159 --> 00:21:06.799 +so yeah I don't think that now unmuted + +00:21:06.799 --> 00:21:10.799 +yeah it will be nice + +00:21:10.799 --> 00:21:12.799 +okay um it's possible to include + +00:21:12.799 --> 00:21:14.840 +maximizing or false similar to jupiter + +00:21:14.840 --> 00:21:16.480 +notebooks + +00:21:16.480 --> 00:21:19.919 +um I mean you can uh use maximize your + +00:21:19.919 --> 00:21:23.280 +or files and you have maximum l mod + +00:21:23.280 --> 00:21:26.320 +integrated and you can like create put + +00:21:26.320 --> 00:21:31.520 +that code into a buffer and then + +00:21:31.520 --> 00:21:34.400 +uh edited correctly but it is now not it + +00:21:34.400 --> 00:21:36.159 +doesn't have like all the features like + +00:21:36.159 --> 00:21:37.679 +other languages because + +00:21:37.679 --> 00:21:40.480 +right now uh as my understanding is + +00:21:40.480 --> 00:21:42.320 +quite basic so I still have some + +00:21:42.320 --> 00:21:45.440 +still needs some some stuff some work + +00:21:45.440 --> 00:21:47.919 +around + +00:21:47.919 --> 00:21:52.320 +okay I think that's it + +00:21:52.320 --> 00:21:56.320 +you are now unmuted + +00:21:56.320 --> 00:21:59.600 +yep so that's it uh thank you very much + +00:21:59.600 --> 00:22:01.919 +fermin for your live talk and for you + +00:22:01.919 --> 00:22:04.640 +know the live q a + +00:22:04.640 --> 00:22:07.679 +thank you all amazing uh max conf + +00:22:07.679 --> 00:22:09.840 +cheers thank you it's thanks to you all + +00:22:09.840 --> 00:22:10.720 +you guys + +00:22:10.720 --> 00:22:16.840 +it's awesome okay thank you cheers bye + +00:22:16.840 --> 00:22:19.840 +bye diff --git a/2020/subtitles/emacsconf-2020--34-extend-emacs-to-modern-gui-applications-with-eaf--matthew-zeng-autogen.vtt b/2020/subtitles/emacsconf-2020--34-extend-emacs-to-modern-gui-applications-with-eaf--matthew-zeng-autogen.vtt new file mode 100644 index 00000000..d9a406f9 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--34-extend-emacs-to-modern-gui-applications-with-eaf--matthew-zeng-autogen.vtt @@ -0,0 +1,1714 @@ +WEBVTT + +00:00:03.600 --> 00:00:04.560 +hello + +00:00:04.560 --> 00:00:06.720 +hopefully everyone is staying safe and + +00:00:06.720 --> 00:00:08.000 +staying home + +00:00:08.000 --> 00:00:10.000 +I feel very grateful to live in a world + +00:00:10.000 --> 00:00:12.000 +today that technology and free software + +00:00:12.000 --> 00:00:13.759 +can be leveraged to connect people in + +00:00:13.759 --> 00:00:16.080 +such disconnected and difficult times + +00:00:16.080 --> 00:00:17.840 +and to have an online conference like + +00:00:17.840 --> 00:00:19.920 +this hopefully you've all + +00:00:19.920 --> 00:00:22.960 +enjoyed this year's Emacs con so far + +00:00:22.960 --> 00:00:24.720 +many thanks to all the people that made + +00:00:24.720 --> 00:00:26.880 +this possible + +00:00:26.880 --> 00:00:30.000 +anyways welcome to my talk extend Emacs + +00:00:30.000 --> 00:00:30.960 +to modern gui + +00:00:30.960 --> 00:00:34.079 +applications with eaf the imax + +00:00:34.079 --> 00:00:35.920 +application framework + +00:00:35.920 --> 00:00:38.320 +this will be my first ever talk so + +00:00:38.320 --> 00:00:39.840 +apologies for my + +00:00:39.840 --> 00:00:43.280 +inexperience let us begin + +00:00:43.280 --> 00:00:46.559 +about me my name is matthew zing you can + +00:00:46.559 --> 00:00:47.840 +also call me mt + +00:00:47.840 --> 00:00:50.640 +or mindu I'm a chinese canadian living + +00:00:50.640 --> 00:00:51.440 +in toronto + +00:00:51.440 --> 00:00:54.239 +ontario offline I'm an undergrad + +00:00:54.239 --> 00:00:56.079 +studying mathematics at the university + +00:00:56.079 --> 00:00:57.760 +of urudu + +00:00:57.760 --> 00:01:00.480 +online I mean one of the admins of the + +00:01:00.480 --> 00:01:03.039 +Emacs china + +00:01:03.039 --> 00:01:06.320 +the largest Emacs forum in china so + +00:01:06.320 --> 00:01:08.080 +to all chinese listen to my talk right + +00:01:08.080 --> 00:01:10.960 +now feel free to check it out + +00:01:10.960 --> 00:01:14.320 +and this is a link to my github profile + +00:01:14.320 --> 00:01:17.280 +to my projects I'm involving one's me + +00:01:17.280 --> 00:01:18.240 +max which is + +00:01:18.240 --> 00:01:20.159 +I'm the author of a user-friendly + +00:01:20.159 --> 00:01:21.840 +full-featured image configuration + +00:01:21.840 --> 00:01:22.799 +distribution + +00:01:22.799 --> 00:01:25.040 +it is what I'm using right now as well + +00:01:25.040 --> 00:01:26.880 +as the imax application filter + +00:01:26.880 --> 00:01:29.119 +which I help to maintain along with the + +00:01:29.119 --> 00:01:30.400 +other other + +00:01:30.400 --> 00:01:33.040 +lazy cat which of course is today's + +00:01:33.040 --> 00:01:35.759 +topic + +00:01:35.759 --> 00:01:38.720 +so as you might all might have already + +00:01:38.720 --> 00:01:40.960 +noticed I'm currently using Emacs + +00:01:40.960 --> 00:01:43.600 +and oh and opening navigating closing + +00:01:43.600 --> 00:01:45.360 +all these websites that are rendered + +00:01:45.360 --> 00:01:46.159 +properly + +00:01:46.159 --> 00:01:49.200 +or within Emacs it's all thanks to the + +00:01:49.200 --> 00:01:51.840 +ef project + +00:01:51.840 --> 00:01:54.000 +so we're living in a society that's + +00:01:54.000 --> 00:01:55.920 +heavily dependent on the internet + +00:01:55.920 --> 00:01:59.520 +and multimedia it is unavoidable to run + +00:01:59.520 --> 00:02:01.200 +to some occasion that you need to + +00:02:01.200 --> 00:02:02.880 +open a fancy website that uses + +00:02:02.880 --> 00:02:04.799 +javascript and css + +00:02:04.799 --> 00:02:08.239 +or you need to watch some videos however + +00:02:08.239 --> 00:02:11.120 +due to the nature and history of Emacs + +00:02:11.120 --> 00:02:11.840 +it cannot + +00:02:11.840 --> 00:02:13.840 +render all these modern graphics + +00:02:13.840 --> 00:02:16.400 +effectively and efficiently + +00:02:16.400 --> 00:02:19.360 +Emacs is solely a text-based editing + +00:02:19.360 --> 00:02:20.400 +environment + +00:02:20.400 --> 00:02:23.520 +and I argue that this is not a bad thing + +00:02:23.520 --> 00:02:25.680 +in fact it is one of the reasons that me + +00:02:25.680 --> 00:02:27.760 +and I believe many of you as well + +00:02:27.760 --> 00:02:29.760 +are attracted to Emacs in the first + +00:02:29.760 --> 00:02:30.879 +place + +00:02:30.879 --> 00:02:33.760 +unfortunately this results in us having + +00:02:33.760 --> 00:02:35.680 +to open a dedicated web browser to + +00:02:35.680 --> 00:02:37.040 +browse the internet + +00:02:37.040 --> 00:02:38.879 +open a dedicated video player to watch + +00:02:38.879 --> 00:02:41.440 +some videos or a pdf render to read some + +00:02:41.440 --> 00:02:42.640 +documents + +00:02:42.640 --> 00:02:45.200 +so far ems cannot do all these tasks on + +00:02:45.200 --> 00:02:46.000 +its own + +00:02:46.000 --> 00:02:48.080 +but can only be achieved using other + +00:02:48.080 --> 00:02:51.519 +external applications + +00:02:51.519 --> 00:02:55.840 +so the other the author manatee lazy cat + +00:02:55.840 --> 00:02:58.640 +or lazy cat in short didn't want to use + +00:02:58.640 --> 00:03:00.560 +all these external applications + +00:03:00.560 --> 00:03:03.120 +he wanted to have an uninterrupted e-max + +00:03:03.120 --> 00:03:04.159 +experience + +00:03:04.159 --> 00:03:07.280 +he wanted to truly live in e-max + +00:03:07.280 --> 00:03:10.080 +however it would be a lot of work to + +00:03:10.080 --> 00:03:11.040 +build this + +00:03:11.040 --> 00:03:13.519 +modern application from scratch there's + +00:03:13.519 --> 00:03:16.239 +simply no time or research to do that + +00:03:16.239 --> 00:03:18.800 +so lazy car without utilizing existing + +00:03:18.800 --> 00:03:20.400 +applications + +00:03:20.400 --> 00:03:22.319 +and to try to make it collaborate with + +00:03:22.319 --> 00:03:24.959 +Emacs there are many solutions available + +00:03:24.959 --> 00:03:26.000 +one of it + +00:03:26.000 --> 00:03:28.560 +is the e-max x windows manager and I'm + +00:03:28.560 --> 00:03:30.159 +sure a lot of you already know that + +00:03:30.159 --> 00:03:33.360 +the exwm however it didn't work for him + +00:03:33.360 --> 00:03:35.200 +because although ux doubling opens the + +00:03:35.200 --> 00:03:37.440 +door to use other applications within + +00:03:37.440 --> 00:03:38.239 +Emacs + +00:03:38.239 --> 00:03:40.879 +it as a fine window manager cannot + +00:03:40.879 --> 00:03:41.519 +modify + +00:03:41.519 --> 00:03:43.920 +customize or extend other software from + +00:03:43.920 --> 00:03:45.040 +Emacs + +00:03:45.040 --> 00:03:46.799 +for example it cannot modify the + +00:03:46.799 --> 00:03:48.480 +behavior when you press a key in + +00:03:48.480 --> 00:03:49.599 +chromium or + +00:03:49.599 --> 00:03:52.159 +pdf viewer therefore it cannot utilize + +00:03:52.159 --> 00:03:54.000 +the rich emax ecosystem that's been + +00:03:54.000 --> 00:03:57.360 +growing for almost 40 years + +00:03:57.360 --> 00:04:00.720 +on the other hand in the ef browser so + +00:04:00.720 --> 00:04:03.760 +if you mx ef open + +00:04:03.760 --> 00:04:07.200 +browser with history you can see + +00:04:07.200 --> 00:04:09.840 +on the lower half of my screen a list of + +00:04:09.840 --> 00:04:11.920 +histories sorted by my personal + +00:04:11.920 --> 00:04:14.560 +most visited sites and you can search + +00:04:14.560 --> 00:04:16.560 +for a site that you've been + +00:04:16.560 --> 00:04:19.440 +into or search for some keyword and in a + +00:04:19.440 --> 00:04:21.840 +search engine + +00:04:21.840 --> 00:04:24.240 +so this is all achieved by utilizing the + +00:04:24.240 --> 00:04:25.919 +popular completion framework in the + +00:04:25.919 --> 00:04:29.280 +Emacs ecosystem + +00:04:29.280 --> 00:04:31.120 +so this car decided to develop a + +00:04:31.120 --> 00:04:33.680 +solution of its own in 2018 + +00:04:33.680 --> 00:04:36.960 +namely the eaf project so I joined the + +00:04:36.960 --> 00:04:40.840 +development last year + +00:04:40.840 --> 00:04:44.000 +2019 ef is + +00:04:44.000 --> 00:04:47.880 +a highly customizable and extensible + +00:04:47.880 --> 00:04:49.759 +reapplication framework that extends + +00:04:49.759 --> 00:04:52.160 +imax to graphical capabilities using pi + +00:04:52.160 --> 00:04:57.840 +qd5 and it is not a window manager + +00:04:57.840 --> 00:05:02.479 +alright so in the readme you can see a + +00:05:02.479 --> 00:05:03.440 +list of gifs + +00:05:03.440 --> 00:05:05.600 +showcasing all the available ef + +00:05:05.600 --> 00:05:06.720 +applications + +00:05:06.720 --> 00:05:09.520 +a browser a markdown premier a video + +00:05:09.520 --> 00:05:10.960 +player + +00:05:10.960 --> 00:05:14.240 +a pdf viewer and more today I don't have + +00:05:14.240 --> 00:05:16.160 +enough time to demonstrate each one of + +00:05:16.160 --> 00:05:16.560 +them + +00:05:16.560 --> 00:05:18.720 +but I will select a couple applications + +00:05:18.720 --> 00:05:21.120 +to show you + +00:05:21.120 --> 00:05:24.240 +so since we are already using ef browser + +00:05:24.240 --> 00:05:27.840 +we'll start with this besides using the + +00:05:27.840 --> 00:05:29.600 +classic control n control p + +00:05:29.600 --> 00:05:32.000 +you can also use the vim style xjkl to + +00:05:32.000 --> 00:05:33.840 +move up or down + +00:05:33.840 --> 00:05:36.320 +also meta shift comma or g to the + +00:05:36.320 --> 00:05:37.280 +beginning of page + +00:05:37.280 --> 00:05:39.120 +when that shift period or capital g to + +00:05:39.120 --> 00:05:41.199 +the end of page + +00:05:41.199 --> 00:05:44.320 +limiting and surfing keys linear and + +00:05:44.320 --> 00:05:46.479 +surfing keys are popular keyboard-based + +00:05:46.479 --> 00:05:48.400 +browsing techniques in chrome + +00:05:48.400 --> 00:05:50.479 +and they've imported here as well you + +00:05:50.479 --> 00:05:52.720 +can press f to toggle markers pointing + +00:05:52.720 --> 00:05:53.039 +to + +00:05:53.039 --> 00:05:55.280 +all the links in the current page say I + +00:05:55.280 --> 00:05:56.960 +want to visit the wiki + +00:05:56.960 --> 00:05:59.680 +which comes very very handy when you + +00:05:59.680 --> 00:06:02.400 +want to configure ef to your liking + +00:06:02.400 --> 00:06:04.720 +so you see the marker on top of wiki is + +00:06:04.720 --> 00:06:05.440 +dd + +00:06:05.440 --> 00:06:08.479 +press dd and you enter and now + +00:06:08.479 --> 00:06:10.240 +you will navigate it to this link so you + +00:06:10.240 --> 00:06:13.840 +don't need to use your mouse at all + +00:06:13.840 --> 00:06:16.560 +so a full list of key bindings can be + +00:06:16.560 --> 00:06:17.680 +found when you + +00:06:17.680 --> 00:06:20.560 +control hm just as any other max major + +00:06:20.560 --> 00:06:21.199 +mode + +00:06:21.199 --> 00:06:22.960 +so you don't have to remember everything + +00:06:22.960 --> 00:06:25.600 +all the key bindings I said to you + +00:06:25.600 --> 00:06:28.560 +so this is a global binding application + +00:06:28.560 --> 00:06:30.960 +to every other ef application as well + +00:06:30.960 --> 00:06:34.319 +so you can find it under the week or or + +00:06:34.319 --> 00:06:36.720 +you can find it under the wiki in the + +00:06:36.720 --> 00:06:37.600 +key binding + +00:06:37.600 --> 00:06:40.639 +section so press f again and use + +00:06:40.639 --> 00:06:44.240 +ns press enter now you're in the key + +00:06:44.240 --> 00:06:45.600 +binding web page + +00:06:45.600 --> 00:06:47.520 +you can see all of the key buttons + +00:06:47.520 --> 00:06:49.280 +available in every + +00:06:49.280 --> 00:06:53.919 +es application and you can try them out + +00:06:53.919 --> 00:06:56.479 +and you can customize your key bindings + +00:06:56.479 --> 00:06:57.360 +using ef + +00:06:57.360 --> 00:07:00.240 +bank key you can customize control n as + +00:07:00.240 --> 00:07:02.960 +in the web page to + +00:07:02.960 --> 00:07:05.759 +to scroll up in the ef pdf viewer or you + +00:07:05.759 --> 00:07:06.639 +can unbind + +00:07:06.639 --> 00:07:09.599 +an existing binding using using yet bank + +00:07:09.599 --> 00:07:10.000 +key + +00:07:10.000 --> 00:07:14.840 +binder to new so it doesn't bind to + +00:07:14.840 --> 00:07:16.160 +anything + +00:07:16.160 --> 00:07:20.319 +okay so here comes the important part + +00:07:20.319 --> 00:07:22.479 +if you want to customize ef you should + +00:07:22.479 --> 00:07:25.440 +visit the customization page in the wiki + +00:07:25.440 --> 00:07:28.840 +so now I press meta b to go back in + +00:07:28.840 --> 00:07:30.240 +history and + +00:07:30.240 --> 00:07:32.960 +go to the customization package press f + +00:07:32.960 --> 00:07:34.080 +press a d + +00:07:34.080 --> 00:07:36.639 +enter and now we're in the customization + +00:07:36.639 --> 00:07:37.360 +page + +00:07:37.360 --> 00:07:39.280 +so the first customization option you + +00:07:39.280 --> 00:07:42.639 +see is dark mode + +00:07:42.639 --> 00:07:44.479 +let's say if you want to turn on the doc + +00:07:44.479 --> 00:07:46.720 +mode for ef browser + +00:07:46.720 --> 00:07:48.479 +and you don't want to use your mouse to + +00:07:48.479 --> 00:07:49.919 +do all this stuff + +00:07:49.919 --> 00:07:53.360 +you press c and you can select + +00:07:53.360 --> 00:07:55.840 +c to toggle the correct browsing you can + +00:07:55.840 --> 00:07:58.240 +see a lot of markers available + +00:07:58.240 --> 00:08:01.280 +pop um again but they're not they're not + +00:08:01.280 --> 00:08:02.720 +on top of links but instead of + +00:08:02.720 --> 00:08:03.599 +paragraphs + +00:08:03.599 --> 00:08:05.360 +you select the paragraph or your choice + +00:08:05.360 --> 00:08:06.639 +in this case you want + +00:08:06.639 --> 00:08:10.240 +ls which comes here + +00:08:10.240 --> 00:08:12.720 +and then you just you just move the + +00:08:12.720 --> 00:08:15.120 +cursor like what you always do + +00:08:15.120 --> 00:08:18.800 +in Emacs and now you select everything + +00:08:18.800 --> 00:08:23.280 +and use meta w to + +00:08:23.280 --> 00:08:25.680 +excuse me metadata to copy the taste the + +00:08:25.680 --> 00:08:26.479 +text + +00:08:26.479 --> 00:08:29.199 +now we made a shift column to evaluate + +00:08:29.199 --> 00:08:30.960 +what we just copied + +00:08:30.960 --> 00:08:35.120 +and set that to true and + +00:08:35.120 --> 00:08:38.320 +press r or f5 to refresh the page + +00:08:38.320 --> 00:08:42.159 +voila we have the dark mode enabled + +00:08:42.159 --> 00:08:44.880 +so there are well let's take a toggle + +00:08:44.880 --> 00:08:46.160 +back off for now + +00:08:46.160 --> 00:08:49.360 +now we made our shift column again + +00:08:49.360 --> 00:08:51.600 +and we find the the one we just used and + +00:08:51.600 --> 00:08:53.519 +change it back to false + +00:08:53.519 --> 00:08:56.880 +and refresh the page back in the light + +00:08:56.880 --> 00:08:59.360 +mode + +00:08:59.360 --> 00:09:02.160 +so there are many other customization + +00:09:02.160 --> 00:09:03.680 +options available you can either + +00:09:03.680 --> 00:09:05.920 +evaluate like what we just did or add it + +00:09:05.920 --> 00:09:08.000 +to your Emacs configuration file + +00:09:08.000 --> 00:09:11.680 +so in this wiki you can have you can + +00:09:11.680 --> 00:09:14.399 +you can make the ef browser to to + +00:09:14.399 --> 00:09:16.320 +continue where you left off + +00:09:16.320 --> 00:09:20.160 +similar to the chromium setting + +00:09:20.160 --> 00:09:22.800 +and you can make yes the default browser + +00:09:22.800 --> 00:09:23.839 +Emacs by + +00:09:23.839 --> 00:09:26.720 +aliasing aliasing browse web to your + +00:09:26.720 --> 00:09:27.680 +open browser + +00:09:27.680 --> 00:09:30.399 +or or set the browse url browser + +00:09:30.399 --> 00:09:31.200 +function to + +00:09:31.200 --> 00:09:33.519 +open browser there's just some tricks + +00:09:33.519 --> 00:09:34.480 +and there are also + +00:09:34.480 --> 00:09:37.920 +uh an experimental app blocker currently + +00:09:37.920 --> 00:09:41.680 +take in place and so therefore it can + +00:09:41.680 --> 00:09:44.720 +block some elements but not all so + +00:09:44.720 --> 00:09:47.279 +we we really encourage people to help us + +00:09:47.279 --> 00:09:48.240 +test out and + +00:09:48.240 --> 00:09:51.440 +add more conditions in + +00:09:51.440 --> 00:09:54.560 +so you can so the ef browser is able to + +00:09:54.560 --> 00:09:55.760 +download + +00:09:55.760 --> 00:09:57.680 +any files from the internet and it will + +00:09:57.680 --> 00:09:59.920 +be downloaded using + +00:09:59.920 --> 00:10:04.000 +a area too and + +00:10:04.000 --> 00:10:06.079 +you can also customize the ef browser + +00:10:06.079 --> 00:10:07.200 +download path + +00:10:07.200 --> 00:10:11.120 +using ef set so it's a function that we + +00:10:11.120 --> 00:10:14.399 +defined similar to set the normal set we + +00:10:14.399 --> 00:10:15.040 +know + +00:10:15.040 --> 00:10:16.480 +so by default the download file is + +00:10:16.480 --> 00:10:18.160 +stored in your home directory slash + +00:10:18.160 --> 00:10:19.600 +downloads + +00:10:19.600 --> 00:10:20.800 +and you can change that whenever you + +00:10:20.800 --> 00:10:22.720 +want you can also disable + +00:10:22.720 --> 00:10:26.079 +saving browsing history so remember + +00:10:26.079 --> 00:10:28.959 +when I press when I use mx you have open + +00:10:28.959 --> 00:10:30.480 +browser's history I see all the + +00:10:30.480 --> 00:10:32.079 +histories here but if you want more + +00:10:32.079 --> 00:10:33.680 +privacy you don't want that to be + +00:10:33.680 --> 00:10:35.360 +available at all you can turn it off + +00:10:35.360 --> 00:10:36.560 +easily with ef + +00:10:36.560 --> 00:10:38.720 +set queue and set that remember history + +00:10:38.720 --> 00:10:40.640 +to false + +00:10:40.640 --> 00:10:42.399 +you can also say your default search + +00:10:42.399 --> 00:10:43.839 +engine so + +00:10:43.839 --> 00:10:47.200 +so right now we have google although + +00:10:47.200 --> 00:10:50.480 +not not really good but google and also + +00:10:50.480 --> 00:10:53.600 +go which is a better search engine + +00:10:53.600 --> 00:10:57.360 +well uh yeah ethically better search + +00:10:57.360 --> 00:10:59.360 +engine + +00:10:59.360 --> 00:11:02.560 +so you can also configure + +00:11:02.560 --> 00:11:05.040 +the zoom so the default zoom of your + +00:11:05.040 --> 00:11:07.600 +browser is 1.0 so you can convert + +00:11:07.600 --> 00:11:10.000 +convert 3000 to 1.25 so you can so when + +00:11:10.000 --> 00:11:11.920 +you open any web page about it will be + +00:11:11.920 --> 00:11:14.079 +zoomed + +00:11:14.079 --> 00:11:17.360 +by default uh you can + +00:11:17.360 --> 00:11:20.399 +also disable javascript although I + +00:11:20.399 --> 00:11:22.240 +personally don't really suggest you to + +00:11:22.240 --> 00:11:23.440 +do because it will + +00:11:23.440 --> 00:11:26.240 +basically break a lot of our features + +00:11:26.240 --> 00:11:28.480 +because a lot of the browser browser + +00:11:28.480 --> 00:11:29.519 +related features + +00:11:29.519 --> 00:11:33.760 +must be implemented using javascript + +00:11:33.760 --> 00:11:35.440 +but yeah you can do it if you really + +00:11:35.440 --> 00:11:37.920 +want to and there also some + +00:11:37.920 --> 00:11:41.519 +customization on ef camera + +00:11:41.519 --> 00:11:47.760 +you can do as well yeah + +00:11:47.760 --> 00:11:52.399 +so uh let's move on to efpd viewer + +00:11:52.399 --> 00:11:56.079 +so now now let's open + +00:11:56.079 --> 00:11:59.440 +the pdf file using af + +00:11:59.440 --> 00:12:01.519 +so that's one something already here but + +00:12:01.519 --> 00:12:02.720 +let's open it here + +00:12:02.720 --> 00:12:06.079 +so yes open and + +00:12:06.079 --> 00:12:08.160 +select introduction to programming in + +00:12:08.160 --> 00:12:11.440 +e-max list + +00:12:11.440 --> 00:12:13.760 +uh I have it already open but it's okay + +00:12:13.760 --> 00:12:17.040 +so you have the file + +00:12:17.040 --> 00:12:20.160 +you have other files displayed + +00:12:20.160 --> 00:12:22.800 +you have all the pages display story yes + +00:12:22.800 --> 00:12:23.200 +and + +00:12:23.200 --> 00:12:27.040 +there are 273 pages in total but notice + +00:12:27.040 --> 00:12:29.279 +like how fast it is to browse + +00:12:29.279 --> 00:12:31.440 +all the pages it is blazingly fast + +00:12:31.440 --> 00:12:33.519 +that's all thanks to python and + +00:12:33.519 --> 00:12:37.040 +mupdf which you don't really get from + +00:12:37.040 --> 00:12:40.880 +Emacs list + +00:12:40.880 --> 00:12:43.600 +so let's say if I want to jump to page + +00:12:43.600 --> 00:12:44.079 +50 + +00:12:44.079 --> 00:12:48.639 +we press p and enter 50. + +00:12:48.639 --> 00:12:53.279 +50 and here we are we are at page 50. + +00:12:53.279 --> 00:12:55.440 +you can look at the lower right to + +00:12:55.440 --> 00:12:58.880 +verify the page you're on + +00:12:58.880 --> 00:13:02.079 +and you can you can + +00:13:02.079 --> 00:13:05.120 +use I to toggle dark mode + +00:13:05.120 --> 00:13:07.839 +as expected and let's say you want to + +00:13:07.839 --> 00:13:08.240 +find + +00:13:08.240 --> 00:13:11.519 +table of contents so use ctrl s + +00:13:11.519 --> 00:13:15.680 +the image default binding for I search + +00:13:15.680 --> 00:13:19.360 +and search for a table of contents + +00:13:19.360 --> 00:13:21.680 +here we are it is highlighted for you + +00:13:21.680 --> 00:13:23.120 +and you can control s for more but + +00:13:23.120 --> 00:13:24.240 +there's only one or + +00:13:24.240 --> 00:13:27.200 +one match one other one you ctrl g to + +00:13:27.200 --> 00:13:28.800 +disable the highlight + +00:13:28.800 --> 00:13:30.880 +and you see a lot of options for you to + +00:13:30.880 --> 00:13:32.320 +go + +00:13:32.320 --> 00:13:35.040 +okay let's say if you want to go to the + +00:13:35.040 --> 00:13:36.240 +preface + +00:13:36.240 --> 00:13:39.519 +so that is you press f which which is + +00:13:39.519 --> 00:13:40.639 +also similar to + +00:13:40.639 --> 00:13:44.240 +eef browser you press f for vimeo + +00:13:44.240 --> 00:13:47.760 +and you see the marker now change to w + +00:13:47.760 --> 00:13:50.160 +press wn and then you can go to the + +00:13:50.160 --> 00:13:51.279 +prefix + +00:13:51.279 --> 00:13:54.320 +now we'll add a prefix + +00:13:54.320 --> 00:13:56.480 +so now you finish reading you want to + +00:13:56.480 --> 00:13:57.600 +save your progress + +00:13:57.600 --> 00:13:59.440 +no worries it is already saved for you + +00:13:59.440 --> 00:14:01.199 +by ef you can safely + +00:14:01.199 --> 00:14:04.240 +close the document using x + +00:14:04.240 --> 00:14:07.519 +and opening again af + +00:14:07.519 --> 00:14:10.560 +open and the file see your I + +00:14:10.560 --> 00:14:14.000 +preface again so you're right at where + +00:14:14.000 --> 00:14:16.560 +you let up left up + +00:14:16.560 --> 00:14:19.440 +you can also use mx org store link or + +00:14:19.440 --> 00:14:20.480 +ctrl cl + +00:14:20.480 --> 00:14:23.279 +which I prefer to if you want to save a + +00:14:23.279 --> 00:14:24.480 +particular page in + +00:14:24.480 --> 00:14:28.240 +a orgmo file so now + +00:14:28.240 --> 00:14:30.320 +I go back to my presentation now I don't + +00:14:30.320 --> 00:14:31.760 +need this anymore + +00:14:31.760 --> 00:14:35.600 +uh so you just control c control l + +00:14:35.600 --> 00:14:39.120 +or I think mx or insert link + +00:14:39.120 --> 00:14:41.040 +so you can find the file right here and + +00:14:41.040 --> 00:14:42.399 +you press enter + +00:14:42.399 --> 00:14:44.320 +and you press enter for the description + +00:14:44.320 --> 00:14:46.480 +again and now it's right here + +00:14:46.480 --> 00:14:50.720 +and ctrl c ctrl o to open it voila + +00:14:50.720 --> 00:14:54.000 +you're back right so + +00:14:54.000 --> 00:14:57.120 +let's now demonstrate the ef video + +00:14:57.120 --> 00:14:58.880 +player + +00:14:58.880 --> 00:15:02.639 +so mxef open if you use ef open whenever + +00:15:02.639 --> 00:15:03.279 +you want to + +00:15:03.279 --> 00:15:06.079 +open some file you use yet open browser + +00:15:06.079 --> 00:15:07.279 +if you want to use some + +00:15:07.279 --> 00:15:09.920 +actual application that's not really + +00:15:09.920 --> 00:15:11.199 +related to a file + +00:15:11.199 --> 00:15:14.800 +so you have open and select the video + +00:15:14.800 --> 00:15:15.600 +you want so + +00:15:15.600 --> 00:15:18.320 +video demo so I already have a video + +00:15:18.320 --> 00:15:19.040 +demo + +00:15:19.040 --> 00:15:21.839 +ready so because I recorded a video of + +00:15:21.839 --> 00:15:22.720 +the demo + +00:15:22.720 --> 00:15:26.000 +of the ef camera have a look so + +00:15:26.000 --> 00:15:28.079 +let's move to the beginning hello people + +00:15:28.079 --> 00:15:29.279 +from the future + +00:15:29.279 --> 00:15:32.399 +this is a demo of the ef video player + +00:15:32.399 --> 00:15:35.199 +that demos the ef camera feature + +00:15:35.199 --> 00:15:37.440 +so as you can see on the screen of me + +00:15:37.440 --> 00:15:38.639 +inside my camera + +00:15:38.639 --> 00:15:40.959 +and the screen is actually with all + +00:15:40.959 --> 00:15:42.880 +within Emacs + +00:15:42.880 --> 00:15:46.079 +right so and you can open this + +00:15:46.079 --> 00:15:49.839 +using here open camera + +00:15:49.839 --> 00:15:53.040 +and which I'm already into and you can + +00:15:53.040 --> 00:15:53.600 +press + +00:15:53.600 --> 00:15:56.720 +p to capture a photo + +00:15:56.720 --> 00:15:59.680 +so the photo is by default stored at + +00:15:59.680 --> 00:16:00.880 +your home slash + +00:16:00.880 --> 00:16:03.920 +downloads directory and you can modify + +00:16:03.920 --> 00:16:04.320 +it + +00:16:04.320 --> 00:16:07.839 +freely so if you go here and you can see + +00:16:07.839 --> 00:16:09.519 +the camera stored + +00:16:09.519 --> 00:16:13.759 +right here so why what I used here + +00:16:13.759 --> 00:16:16.240 +so you press space to pause what I used + +00:16:16.240 --> 00:16:17.120 +here is + +00:16:17.120 --> 00:16:20.320 +the year so ef open this entire so + +00:16:20.320 --> 00:16:22.959 +basically so in direct you you go to you + +00:16:22.959 --> 00:16:23.839 +you select + +00:16:23.839 --> 00:16:26.959 +the file that should be opened by + +00:16:26.959 --> 00:16:30.320 +eaf and I use that so it it detects that + +00:16:30.320 --> 00:16:32.720 +it wants to use the ef image viewer so + +00:16:32.720 --> 00:16:35.839 +I accidentally tested if image viewer + +00:16:35.839 --> 00:16:39.759 +before I noticed so that that that gives + +00:16:39.759 --> 00:16:40.240 +the + +00:16:40.240 --> 00:16:43.680 +image of the photo I just took + +00:16:43.680 --> 00:16:47.040 +using ef camera and as you can see you + +00:16:47.040 --> 00:16:47.360 +can + +00:16:47.360 --> 00:16:50.720 +I can use hl the bim button to navigate + +00:16:50.720 --> 00:16:51.600 +in the time + +00:16:51.600 --> 00:16:55.920 +timestamp in the video and I can use + +00:16:55.920 --> 00:17:02.320 +jk to to change the volumes of the video + +00:17:02.320 --> 00:17:05.520 +alright so now you've seen all the basic + +00:17:05.520 --> 00:17:06.160 +usages + +00:17:06.160 --> 00:17:08.720 +of the ef project it comes the question + +00:17:08.720 --> 00:17:11.600 +of what is the magic behind it + +00:17:11.600 --> 00:17:14.559 +all right let's open the hacking page in + +00:17:14.559 --> 00:17:15.919 +the wiki + +00:17:15.919 --> 00:17:20.400 +the design is laid out in a diagram here + +00:17:20.400 --> 00:17:25.120 +so and let's put it + +00:17:25.120 --> 00:17:27.839 +side by side along with my text so you + +00:17:27.839 --> 00:17:28.160 +can + +00:17:28.160 --> 00:17:32.320 +go we can follow through + +00:17:32.320 --> 00:17:36.080 +right okay let me + +00:17:36.080 --> 00:17:42.320 +sorry let me drink some water + +00:17:42.320 --> 00:17:46.000 +so this page in the wiki went into a lot + +00:17:46.000 --> 00:17:48.160 +of detail + +00:17:48.160 --> 00:17:49.520 +due to the time constraint I will just + +00:17:49.520 --> 00:17:51.679 +rephrase some of the ideas here so for + +00:17:51.679 --> 00:17:53.520 +anyone interested please have a look at + +00:17:53.520 --> 00:17:55.600 +the wiki yourself + +00:17:55.600 --> 00:17:58.160 +the easiest way to think about eaf is + +00:17:58.160 --> 00:17:58.720 +that + +00:17:58.720 --> 00:18:01.679 +the actual gui application is started in + +00:18:01.679 --> 00:18:02.960 +the background + +00:18:02.960 --> 00:18:04.960 +then the frame of the application is + +00:18:04.960 --> 00:18:07.120 +attached to the appropriate location on + +00:18:07.120 --> 00:18:07.679 +the + +00:18:07.679 --> 00:18:10.720 +Emacs window so + +00:18:10.720 --> 00:18:13.440 +you have linked qt5 with Emacs using + +00:18:13.440 --> 00:18:14.960 +list and python + +00:18:14.960 --> 00:18:17.120 +of the python site which is colored + +00:18:17.120 --> 00:18:18.640 +yellow in the image + +00:18:18.640 --> 00:18:20.559 +you have two graphics view and queue + +00:18:20.559 --> 00:18:22.960 +graphics scene objects + +00:18:22.960 --> 00:18:25.039 +these are used to simulate the e-max + +00:18:25.039 --> 00:18:26.640 +window buffer design + +00:18:26.640 --> 00:18:28.640 +where q graphics scene is similar to + +00:18:28.640 --> 00:18:29.840 +buffers in Emacs + +00:18:29.840 --> 00:18:31.840 +it controls the state and the content + +00:18:31.840 --> 00:18:34.240 +details of the application + +00:18:34.240 --> 00:18:39.039 +well q graphics view is similar to + +00:18:39.039 --> 00:18:41.200 +geographic view is similar to imax + +00:18:41.200 --> 00:18:43.200 +window it populates the buffer + +00:18:43.200 --> 00:18:45.919 +to graphics scene to the full program at + +00:18:45.919 --> 00:18:46.960 +the appropriate + +00:18:46.960 --> 00:18:50.320 +position whenever an ef mode buffer + +00:18:50.320 --> 00:18:57.679 +brings to a background + +00:18:57.679 --> 00:18:59.679 +whenever an ef mode buffer brings to the + +00:18:59.679 --> 00:19:00.880 +foreground sorry + +00:19:00.880 --> 00:19:02.559 +a queue graphics view instance is + +00:19:02.559 --> 00:19:05.120 +created and whenever the buffer goes to + +00:19:05.120 --> 00:19:06.080 +the background + +00:19:06.080 --> 00:19:08.000 +the q graphics view instance is then + +00:19:08.000 --> 00:19:09.120 +deleted + +00:19:09.120 --> 00:19:10.960 +while q graphics scene the actual + +00:19:10.960 --> 00:19:12.480 +process remains running in the + +00:19:12.480 --> 00:19:14.480 +background until the ef mode buffer is + +00:19:14.480 --> 00:19:16.000 +killed + +00:19:16.000 --> 00:19:18.320 +gpa compositing is used to ensure that q + +00:19:18.320 --> 00:19:19.440 +graphics view and + +00:19:19.440 --> 00:19:21.840 +graphics sync is synchronized real time + +00:19:21.840 --> 00:19:24.000 +using q windows set parent function + +00:19:24.000 --> 00:19:25.679 +the queue graphics view is attached to + +00:19:25.679 --> 00:19:27.840 +appropriate location on the e-max frame + +00:19:27.840 --> 00:19:30.640 +so that although great applications are + +00:19:30.640 --> 00:19:32.400 +not running within e-max + +00:19:32.400 --> 00:19:36.160 +they look as if they were + +00:19:36.160 --> 00:19:39.039 +so when user types on the keyboard it is + +00:19:39.039 --> 00:19:41.039 +first received by the Emacs ef + +00:19:41.039 --> 00:19:43.520 +ef mode buffer and then it lifts sends + +00:19:43.520 --> 00:19:45.360 +the event to google graphics sync using + +00:19:45.360 --> 00:19:46.240 +dbus + +00:19:46.240 --> 00:19:48.720 +when user clicks on the gui application + +00:19:48.720 --> 00:19:50.400 +it is received by the queue graphics + +00:19:50.400 --> 00:19:50.799 +view + +00:19:50.799 --> 00:19:53.280 +and process in python ellipse can + +00:19:53.280 --> 00:19:55.200 +communicate with python through dbus + +00:19:55.200 --> 00:19:59.200 +in other words in other words you can + +00:19:59.200 --> 00:20:01.360 +customize and extend Emacs not just + +00:20:01.360 --> 00:20:01.760 +using + +00:20:01.760 --> 00:20:04.480 +lisp and now you can use python this way + +00:20:04.480 --> 00:20:05.360 +one can leverage + +00:20:05.360 --> 00:20:07.039 +all the python properties like + +00:20:07.039 --> 00:20:09.600 +multi-threading or some other stuff + +00:20:09.600 --> 00:20:11.679 +the entire python ecosystem can be + +00:20:11.679 --> 00:20:13.520 +utilized as well + +00:20:13.520 --> 00:20:16.159 +such as the qt web engine that is the + +00:20:16.159 --> 00:20:16.960 +basis for + +00:20:16.960 --> 00:20:20.640 +our eef browser and pi mu pdf is the + +00:20:20.640 --> 00:20:23.360 +basis for the ef pdf viewer + +00:20:23.360 --> 00:20:25.840 +so this really opens the window to many + +00:20:25.840 --> 00:20:28.240 +many new possibilities to extend Emacs + +00:20:28.240 --> 00:20:32.720 +using eaf + +00:20:32.720 --> 00:20:36.080 +all right back here we are always + +00:20:36.080 --> 00:20:37.760 +looking for people to join the + +00:20:37.760 --> 00:20:39.679 +development there are many many + +00:20:39.679 --> 00:20:42.720 +more work that needs to be done like + +00:20:42.720 --> 00:20:44.640 +such as testing and debug if there are + +00:20:44.640 --> 00:20:46.640 +more linux distros and window managers + +00:20:46.640 --> 00:20:47.760 +such as i3 + +00:20:47.760 --> 00:20:51.200 +and stuff I mean you can also add new ef + +00:20:51.200 --> 00:20:52.080 +applications + +00:20:52.080 --> 00:20:54.240 +or debug and enhance existing af + +00:20:54.240 --> 00:20:55.440 +applications + +00:20:55.440 --> 00:20:58.000 +or you can port ef to native wayland + +00:20:58.000 --> 00:21:00.240 +which I just discussed with the + +00:21:00.240 --> 00:21:03.840 +the ems whip kit author uh a kill + +00:21:03.840 --> 00:21:07.919 +akira tile and she he told me that like + +00:21:07.919 --> 00:21:10.159 +really like it must really yeah it + +00:21:10.159 --> 00:21:11.200 +doesn't really work + +00:21:11.200 --> 00:21:14.320 +um native villain because it uses + +00:21:14.320 --> 00:21:16.799 +x valence so it doesn't work on the pgdk + +00:21:16.799 --> 00:21:18.159 +port of Emacs + +00:21:18.159 --> 00:21:20.559 +so and we also need people to pour ef to + +00:21:20.559 --> 00:21:22.080 +non-free operating systems + +00:21:22.080 --> 00:21:25.600 +including windows and mac os + +00:21:25.600 --> 00:21:28.480 +and that's because like debug is a linux + +00:21:28.480 --> 00:21:30.080 +specific feature so it doesn't really + +00:21:30.080 --> 00:21:31.360 +work on other platform + +00:21:31.360 --> 00:21:33.039 +we need to change replace it with some + +00:21:33.039 --> 00:21:34.640 +alternative and + +00:21:34.640 --> 00:21:36.720 +geographic scene somehow doesn't really + +00:21:36.720 --> 00:21:38.640 +work on mac os + +00:21:38.640 --> 00:21:40.320 +and there are many other to-do lists + +00:21:40.320 --> 00:21:42.880 +available so please have a look + +00:21:42.880 --> 00:21:45.039 +if and see it's anything you want to + +00:21:45.039 --> 00:21:46.640 +work on + +00:21:46.640 --> 00:21:49.039 +all right so since this is a + +00:21:49.039 --> 00:21:51.120 +pre-recorded talk I won't be able to do + +00:21:51.120 --> 00:21:53.520 +the q a real time in the video + +00:21:53.520 --> 00:21:56.080 +however I will be around on the + +00:21:56.080 --> 00:21:57.200 +collaborate pad + +00:21:57.200 --> 00:22:00.559 +and the irc imax con you must come + +00:22:00.559 --> 00:22:01.360 +questions + +00:22:01.360 --> 00:22:04.240 +to answer any questions it pops up and + +00:22:04.240 --> 00:22:05.760 +you can also submit an issue + +00:22:05.760 --> 00:22:09.120 +on the repo and you can check the wiki + +00:22:09.120 --> 00:22:12.640 +for some other guides and tricks + +00:22:12.640 --> 00:22:15.039 +all right thank you guys and hopefully + +00:22:15.039 --> 00:22:16.000 +you find the + +00:22:16.000 --> 00:22:18.320 +this year project very interesting and + +00:22:18.320 --> 00:22:24.320 +enjoy the rest of Emacs com 2020 diff --git a/2020/subtitles/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--questions--zachary-kanfer-autogen.vtt b/2020/subtitles/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--questions--zachary-kanfer-autogen.vtt new file mode 100644 index 00000000..3c8dd20c --- /dev/null +++ b/2020/subtitles/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--questions--zachary-kanfer-autogen.vtt @@ -0,0 +1,508 @@ +WEBVTT + +00:00:02.800 --> 00:00:09.200 +I can yes + +00:00:09.200 --> 00:00:13.120 +okay um yeah so I'm uh zachary canfer + +00:00:13.120 --> 00:00:14.920 +let's go to the + +00:00:14.920 --> 00:00:17.520 +questions uh the first question uh why + +00:00:17.520 --> 00:00:19.119 +do we go top to bottom for time + +00:00:19.119 --> 00:00:19.840 +progression + +00:00:19.840 --> 00:00:23.920 +uh and left to right uh for low to high + +00:00:23.920 --> 00:00:27.279 +interesting I think uh so the initial + +00:00:27.279 --> 00:00:30.000 +uh thing I was copying that initial app + +00:00:30.000 --> 00:00:31.599 +work this way + +00:00:31.599 --> 00:00:35.280 +um and + +00:00:35.280 --> 00:00:36.960 +yeah I mean certainly traditional music + +00:00:36.960 --> 00:00:38.960 +you know on a staff uh + +00:00:38.960 --> 00:00:43.040 +does go left to right uh like this + +00:00:43.040 --> 00:00:46.000 +um I mean going top to bottom does make + +00:00:46.000 --> 00:00:47.440 +it easier to add more beats without + +00:00:47.440 --> 00:00:48.960 +having to wrap but certainly that could + +00:00:48.960 --> 00:00:49.920 +be managed + +00:00:49.920 --> 00:00:52.239 +um yeah I I had not really thought about + +00:00:52.239 --> 00:00:53.760 +it but it is definitely something worth + +00:00:53.760 --> 00:00:55.199 +looking into + +00:00:55.199 --> 00:01:02.480 +uh yeah you are now unmuted + +00:01:02.480 --> 00:01:05.680 +ah good point thank you let me go ahead + +00:01:05.680 --> 00:01:06.960 +and do that + +00:01:06.960 --> 00:01:14.240 +uh the entire screen + +00:01:14.240 --> 00:01:16.880 +okay so the screen share should be + +00:01:16.880 --> 00:01:18.320 +starting + +00:01:18.320 --> 00:01:21.439 +there we go cool all right uh + +00:01:21.439 --> 00:01:24.880 +two will be placed on the song um not + +00:01:24.880 --> 00:01:26.640 +now I can I can make some recordings of + +00:01:26.640 --> 00:01:28.080 +it or certainly you can try it + +00:01:28.080 --> 00:01:30.720 +um I couldn't quite get the the + +00:01:30.720 --> 00:01:33.119 +microphone and the webcam and everything + +00:01:33.119 --> 00:01:37.040 +to work with the sound playing now um so + +00:01:37.040 --> 00:01:40.079 +uh I can record some also please uh + +00:01:40.079 --> 00:01:43.520 +I put a link at the uh here in the uh + +00:01:43.520 --> 00:01:46.640 +etherpad https://zck.me/emacsconf2020 + +00:01:46.640 --> 00:01:48.479 +where you can go and get the source + +00:01:48.479 --> 00:01:49.920 +and you can try it yourself uh there's + +00:01:49.920 --> 00:01:51.920 +no dependencies needed so it's just all + +00:01:51.920 --> 00:01:54.560 +in Emacs um so please you know try it + +00:01:54.560 --> 00:01:57.040 +yourself + +00:01:57.040 --> 00:02:00.079 +any chance for an Emacs tracker or mod + +00:02:00.079 --> 00:02:01.040 +player + +00:02:01.040 --> 00:02:03.680 +um I don't really know what a mod player + +00:02:03.680 --> 00:02:04.479 +or tracker + +00:02:04.479 --> 00:02:08.000 +are but I mean I'm sure + +00:02:08.000 --> 00:02:09.679 +that would be cool uh maybe there's one + +00:02:09.679 --> 00:02:11.599 +on now but I don't know uh + +00:02:11.599 --> 00:02:13.920 +my musical background so I've played + +00:02:13.920 --> 00:02:15.200 +various instruments since about the + +00:02:15.200 --> 00:02:15.840 +third grade + +00:02:15.840 --> 00:02:18.160 +uh started recorder uh play cello I play + +00:02:18.160 --> 00:02:19.520 +guitar now + +00:02:19.520 --> 00:02:22.560 +um but yeah so just kind of random + +00:02:22.560 --> 00:02:23.680 +instruments and + +00:02:23.680 --> 00:02:26.959 +uh yeah I guess kind of some of those + +00:02:26.959 --> 00:02:27.280 +things + +00:02:27.280 --> 00:02:30.480 +influence how I think about music um + +00:02:30.480 --> 00:02:33.519 +uh yeah um + +00:02:33.519 --> 00:02:35.360 +are there any open source musical + +00:02:35.360 --> 00:02:36.640 +management sample libraries that could + +00:02:36.640 --> 00:02:37.840 +be used + +00:02:37.840 --> 00:02:41.200 +um good question I'm sure there are um I + +00:02:41.200 --> 00:02:42.400 +don't know any that integrate really + +00:02:42.400 --> 00:02:43.360 +well with Emacs + +00:02:43.360 --> 00:02:44.560 +one of the cool things that I liked + +00:02:44.560 --> 00:02:45.680 +about this is that there are no + +00:02:45.680 --> 00:02:47.440 +dependencies + +00:02:47.440 --> 00:02:49.360 +you know you don't need any external + +00:02:49.360 --> 00:02:50.800 +program to + +00:02:50.800 --> 00:02:53.040 +uh generate the music I mean it it does + +00:02:53.040 --> 00:02:54.160 +shell out to + +00:02:54.160 --> 00:02:57.280 +to play um but that + +00:02:57.280 --> 00:02:58.640 +should be able to be done on any + +00:02:58.640 --> 00:02:59.840 +operating system as always you have + +00:02:59.840 --> 00:03:03.519 +something that can play wav files + +00:03:03.519 --> 00:03:05.599 +um but yeah it is interesting to kind of + +00:03:05.599 --> 00:03:06.879 +try the different + +00:03:06.879 --> 00:03:10.000 +uh different sounds and different + +00:03:10.000 --> 00:03:12.239 +tones uh that you could get with + +00:03:12.239 --> 00:03:14.400 +different instruments + +00:03:14.400 --> 00:03:16.959 +have I written any actual songs um + +00:03:16.959 --> 00:03:17.599 +nothing + +00:03:17.599 --> 00:03:21.040 +super uh + +00:03:21.040 --> 00:03:23.680 +uh well put together just I kind of just + +00:03:23.680 --> 00:03:25.519 +been playing around with this + +00:03:25.519 --> 00:03:27.440 +it's kind of I making this was one of + +00:03:27.440 --> 00:03:29.040 +those things where like once I made it I + +00:03:29.040 --> 00:03:30.080 +was like okay + +00:03:30.080 --> 00:03:31.280 +now I can play with it and I did a + +00:03:31.280 --> 00:03:32.720 +little bit and was like I don't know if + +00:03:32.720 --> 00:03:33.920 +I feel like it right now + +00:03:33.920 --> 00:03:37.280 +you know which I've I've found that to + +00:03:37.280 --> 00:03:38.720 +be the case with some things that I've + +00:03:38.720 --> 00:03:39.599 +implemented + +00:03:39.599 --> 00:03:41.360 +in Emacs where it's I make it and then + +00:03:41.360 --> 00:03:43.519 +it's the kind of some of the desire to + +00:03:43.519 --> 00:03:44.480 +use it all the time + +00:03:44.480 --> 00:03:46.879 +goes away but I'm sure I'll circle back + +00:03:46.879 --> 00:03:47.760 +around + +00:03:47.760 --> 00:03:51.040 +at some point especially kind of maybe + +00:03:51.040 --> 00:03:52.400 +once I add in different tones or + +00:03:52.400 --> 00:03:54.640 +something + +00:03:54.640 --> 00:03:56.400 +I guess a similar question for + +00:03:56.400 --> 00:03:57.840 +pre-recorded sounds yeah I mean + +00:03:57.840 --> 00:04:01.120 +if it's part of what I did what I wrote + +00:04:01.120 --> 00:04:02.080 +was a + +00:04:02.080 --> 00:04:04.720 +wave generation library so if you kind + +00:04:04.720 --> 00:04:06.720 +of have the data + +00:04:06.720 --> 00:04:08.400 +you could use those and like chop them + +00:04:08.400 --> 00:04:10.159 +up and take certain lengths of them + +00:04:10.159 --> 00:04:13.360 +and make a wav file so it's not plug and + +00:04:13.360 --> 00:04:14.959 +play right now but you could certainly + +00:04:14.959 --> 00:04:19.120 +add those notes uh to do it + +00:04:19.120 --> 00:04:21.040 +um any knitting midi mapping + +00:04:21.040 --> 00:04:22.720 +possibilities um + +00:04:22.720 --> 00:04:24.560 +I haven't looked into it but I'm sure + +00:04:24.560 --> 00:04:26.160 +you definitely could output to midi + +00:04:26.160 --> 00:04:28.800 +um which is another benefit of having + +00:04:28.800 --> 00:04:30.400 +that multiple layers with the top layer + +00:04:30.400 --> 00:04:31.520 +is just like + +00:04:31.520 --> 00:04:33.360 +um you know if the root note is this + +00:04:33.360 --> 00:04:35.120 +we're just two semitones up or seven + +00:04:35.120 --> 00:04:36.560 +semitones up or whatever it is + +00:04:36.560 --> 00:04:38.160 +uh it should be relatively simple to + +00:04:38.160 --> 00:04:40.720 +kind of switch out that layer underneath + +00:04:40.720 --> 00:04:44.479 +uh from wave to midi or other things + +00:04:44.479 --> 00:04:45.759 +what were some of the challenges with + +00:04:45.759 --> 00:04:47.520 +writing a special mode for Emacs + +00:04:47.520 --> 00:04:49.759 +uh interested in getting into this not + +00:04:49.759 --> 00:04:51.040 +sure where to start + +00:04:51.040 --> 00:04:54.960 +um there uh yeah it so + +00:04:54.960 --> 00:04:57.120 +this isn't the first mode I've written + +00:04:57.120 --> 00:04:58.320 +um so that's right + +00:04:58.320 --> 00:05:01.759 +certainly that helps um I actually + +00:05:01.759 --> 00:05:05.600 +um I have a video that we recorded it + +00:05:05.600 --> 00:05:08.240 +as part of Emacs nyc on making a major + +00:05:08.240 --> 00:05:09.039 +mode + +00:05:09.039 --> 00:05:10.720 +that's basically like starts from + +00:05:10.720 --> 00:05:12.639 +nothing and kind of builds up to + +00:05:12.639 --> 00:05:15.680 +an implementation of tic-tac-toe um + +00:05:15.680 --> 00:05:17.039 +but so it kind of goes into printing + +00:05:17.039 --> 00:05:19.600 +things out and buttons and making the + +00:05:19.600 --> 00:05:21.280 +mode + +00:05:21.280 --> 00:05:22.800 +I mean one of the best parts about Emacs + +00:05:22.800 --> 00:05:24.560 +is because it's so + +00:05:24.560 --> 00:05:26.479 +uh configurable and so introspectible + +00:05:26.479 --> 00:05:28.479 +you can start pretty simply + +00:05:28.479 --> 00:05:30.320 +and just kind of asking max about things + +00:05:30.320 --> 00:05:32.320 +and then make one little + +00:05:32.320 --> 00:05:34.960 +change um it's really it's not that bad + +00:05:34.960 --> 00:05:36.479 +so uh + +00:05:36.479 --> 00:05:39.039 +I'll try to throw a link up on that uh + +00:05:39.039 --> 00:05:40.560 +on on that page I put up or + +00:05:40.560 --> 00:05:42.000 +please email me for whoever asked this + +00:05:42.000 --> 00:05:44.479 +question uh to get a link to that video + +00:05:44.479 --> 00:05:46.240 +um or just look at look at the source + +00:05:46.240 --> 00:05:47.919 +code of this or any other major mode + +00:05:47.919 --> 00:05:50.479 +um it it's pretty ems breaks it makes it + +00:05:50.479 --> 00:05:52.880 +pretty easy to extend uh + +00:05:52.880 --> 00:05:56.479 +major modes and I think that's that's + +00:05:56.479 --> 00:05:57.600 +the last question + +00:05:57.600 --> 00:06:00.240 +in the ether pad so uh thanks so much + +00:06:00.240 --> 00:06:02.479 +everybody for coming + +00:06:02.479 --> 00:06:06.720 +you are now unmuted uh thank you so much + +00:06:06.720 --> 00:06:09.039 +to curry for your awesome talk + +00:06:09.039 --> 00:06:12.960 +and for doing live questions + +00:06:12.960 --> 00:06:19.840 +thank you thank you cheers diff --git a/2020/subtitles/emacsconf-2020--38-emacs-development-update--john-wiegley-autogen.vtt b/2020/subtitles/emacsconf-2020--38-emacs-development-update--john-wiegley-autogen.vtt new file mode 100644 index 00000000..7c0d9ed5 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--38-emacs-development-update--john-wiegley-autogen.vtt @@ -0,0 +1,460 @@ +WEBVTT + +00:00:00.080 --> 00:00:03.040 +hello EmacsConf this is john wigley I'm + +00:00:03.040 --> 00:00:04.960 +one of the co-maintainers of Emacs along + +00:00:04.960 --> 00:00:06.319 +with ellie zoretsky + +00:00:06.319 --> 00:00:09.280 +and lars ingebrigston and I wanted to + +00:00:09.280 --> 00:00:09.840 +give you + +00:00:09.840 --> 00:00:12.639 +a technical update on what has been + +00:00:12.639 --> 00:00:14.960 +happening + +00:00:14.960 --> 00:00:18.400 +with the Emacs in the last year so + +00:00:18.400 --> 00:00:20.640 +specifically uh we have a few notes that + +00:00:20.640 --> 00:00:21.600 +I've gotten from + +00:00:21.600 --> 00:00:24.480 +a call with ellie he's been in charge of + +00:00:24.480 --> 00:00:25.840 +directing most of the + +00:00:25.840 --> 00:00:28.000 +technical contributions on the mailing + +00:00:28.000 --> 00:00:30.160 +list and monitoring all the patches + +00:00:30.160 --> 00:00:33.200 +so I'm more here just as a messenger + +00:00:33.200 --> 00:00:35.840 +he says that we have good progress and + +00:00:35.840 --> 00:00:37.120 +support for cairo + +00:00:37.120 --> 00:00:39.040 +this is going to be enabled by default + +00:00:39.040 --> 00:00:40.320 +and emax 28 + +00:00:40.320 --> 00:00:42.480 +and cairo plus half buzz is going to be + +00:00:42.480 --> 00:00:44.800 +the preferred rendering combination + +00:00:44.800 --> 00:00:46.879 +so cairo support is not new but in the + +00:00:46.879 --> 00:00:48.719 +past there were a lot of bugs in the + +00:00:48.719 --> 00:00:51.440 +code and so it was made experimental + +00:00:51.440 --> 00:00:52.960 +so most of those bugs have been fixed + +00:00:52.960 --> 00:00:54.960 +recently and now it becomes the default + +00:00:54.960 --> 00:00:56.320 +and the next major version + +00:00:56.320 --> 00:00:58.320 +which will enable several good features + +00:00:58.320 --> 00:01:00.320 +such as color emojis if you're looking + +00:01:00.320 --> 00:01:01.680 +forward to those + +00:01:01.680 --> 00:01:04.720 +xft as a result is deprecated there are + +00:01:04.720 --> 00:01:06.560 +bugs not getting fixed in that code it + +00:01:06.560 --> 00:01:07.760 +doesn't appear to be very well + +00:01:07.760 --> 00:01:08.720 +maintained + +00:01:08.720 --> 00:01:10.960 +it was the most advanced font mac end + +00:01:10.960 --> 00:01:13.760 +and emax before cairo became dependable + +00:01:13.760 --> 00:01:15.920 +so now that we have a more a better + +00:01:15.920 --> 00:01:17.840 +maintained and available solution in + +00:01:17.840 --> 00:01:19.360 +cairo we're going to go from that + +00:01:19.360 --> 00:01:23.200 +go from xft to that native compilation + +00:01:23.200 --> 00:01:23.840 +in lisp + +00:01:23.840 --> 00:01:26.400 +will also be landing soon it's currently + +00:01:26.400 --> 00:01:28.080 +on a branch but there are several people + +00:01:28.080 --> 00:01:28.799 +using it + +00:01:28.799 --> 00:01:31.040 +they say they're very impressed it does + +00:01:31.040 --> 00:01:32.479 +require live gcc + +00:01:32.479 --> 00:01:35.600 +jit to be installed for it to work and + +00:01:35.600 --> 00:01:37.439 +this means you have to have gcc 10 + +00:01:37.439 --> 00:01:38.960 +installed + +00:01:38.960 --> 00:01:41.040 +execution of Emacs lisp with native + +00:01:41.040 --> 00:01:42.240 +compilation on + +00:01:42.240 --> 00:01:45.280 +is about 2.5 times faster than the + +00:01:45.280 --> 00:01:46.159 +bytecode + +00:01:46.159 --> 00:01:48.399 +interpreter we don't yet have any + +00:01:48.399 --> 00:01:49.439 +measurements on + +00:01:49.439 --> 00:01:51.600 +memory or how it affects resources + +00:01:51.600 --> 00:01:52.960 +besides cpu so + +00:01:52.960 --> 00:01:54.720 +we do look forward to having more + +00:01:54.720 --> 00:01:56.399 +numbers and analysis to see what the + +00:01:56.399 --> 00:01:58.320 +real impact of that is going to be + +00:01:58.320 --> 00:02:01.360 +also it may vary in compute advantage + +00:02:01.360 --> 00:02:02.799 +based on the type of workload that + +00:02:02.799 --> 00:02:04.320 +you're performing + +00:02:04.320 --> 00:02:06.240 +a downside to the native compilation at + +00:02:06.240 --> 00:02:08.080 +the moment is that it takes a long + +00:02:08.080 --> 00:02:10.720 +time to compile even when you're doing a + +00:02:10.720 --> 00:02:12.720 +16 core build of Emacs + +00:02:12.720 --> 00:02:14.959 +it can still take 15 minutes to compile + +00:02:14.959 --> 00:02:15.760 +Emacs + +00:02:15.760 --> 00:02:17.840 +and all of its in all of its lisp code + +00:02:17.840 --> 00:02:19.520 +with this enabled + +00:02:19.520 --> 00:02:21.840 +also this is going to have to happen on + +00:02:21.840 --> 00:02:23.120 +every user's machine + +00:02:23.120 --> 00:02:25.360 +because we cannot distribute the native + +00:02:25.360 --> 00:02:27.520 +compilation products they are specific + +00:02:27.520 --> 00:02:28.319 +to the compo + +00:02:28.319 --> 00:02:29.760 +to the processor that you might be + +00:02:29.760 --> 00:02:31.440 +running on so + +00:02:31.440 --> 00:02:33.920 +the emax distribution will remain much + +00:02:33.920 --> 00:02:35.680 +as it is now but if you want to have the + +00:02:35.680 --> 00:02:37.760 +benefits of natively compiled + +00:02:37.760 --> 00:02:39.599 +core lisp files you're going to have to + +00:02:39.599 --> 00:02:41.519 +spend that time and have gcc 10 + +00:02:41.519 --> 00:02:42.400 +available + +00:02:42.400 --> 00:02:45.840 +to get that compilation support um + +00:02:45.840 --> 00:02:48.959 +the gtk only build is being prepared + +00:02:48.959 --> 00:02:52.160 +for merging so what this does is it + +00:02:52.160 --> 00:02:52.959 +throws away + +00:02:52.959 --> 00:02:55.120 +most of the other tool kits that Emacs + +00:02:55.120 --> 00:02:56.000 +was using + +00:02:56.000 --> 00:02:59.280 +and relies only on gtk making Emacs + +00:02:59.280 --> 00:03:01.760 +much more of a gtk application than it + +00:03:01.760 --> 00:03:03.920 +has been + +00:03:03.920 --> 00:03:06.480 +the main issue here is that we were + +00:03:06.480 --> 00:03:08.480 +abusing gtk in some ways that weren't + +00:03:08.480 --> 00:03:09.360 +really meant + +00:03:09.360 --> 00:03:10.879 +and now we're going to be more of a + +00:03:10.879 --> 00:03:12.879 +first club gtk will be more of a first + +00:03:12.879 --> 00:03:14.080 +class citizen in the + +00:03:14.080 --> 00:03:17.040 +approach and the ways that we use it and + +00:03:17.040 --> 00:03:17.440 +and + +00:03:17.440 --> 00:03:19.280 +be using it in the ways that the gtk + +00:03:19.280 --> 00:03:21.200 +developers intended + +00:03:21.200 --> 00:03:23.360 +there is going to be much more support + +00:03:23.360 --> 00:03:24.640 +for xt mouse + +00:03:24.640 --> 00:03:27.280 +so xt mouse allows you to use your mouse + +00:03:27.280 --> 00:03:29.120 +inside of a terminal window + +00:03:29.120 --> 00:03:30.799 +which you could do before but there were + +00:03:30.799 --> 00:03:33.120 +certain aspects such as menus + +00:03:33.120 --> 00:03:36.159 +that weren't supported so instead of + +00:03:36.159 --> 00:03:38.239 +having kind of partial support for mouse + +00:03:38.239 --> 00:03:39.840 +inside of an x term with xt + +00:03:39.840 --> 00:03:42.879 +mouse you get full support this is going + +00:03:42.879 --> 00:03:44.959 +to allow + +00:03:44.959 --> 00:03:46.720 +changes in the way that things can be + +00:03:46.720 --> 00:03:48.159 +bound the ways that + +00:03:48.159 --> 00:03:51.200 +uh key bindings can the mouse events can + +00:03:51.200 --> 00:03:53.200 +be mapped to key bindings while in + +00:03:53.200 --> 00:03:56.879 +x terms and um yeah little by little + +00:03:56.879 --> 00:03:58.480 +this support is being extended even + +00:03:58.480 --> 00:03:59.040 +further + +00:03:59.040 --> 00:04:01.599 +so we look forward to seeing that + +00:04:01.599 --> 00:04:04.080 +develop in the near term + +00:04:04.080 --> 00:04:06.239 +once this is merged by the way also then + +00:04:06.239 --> 00:04:08.080 +Emacs will have mouse support in every + +00:04:08.080 --> 00:04:09.840 +one of its available configurations + +00:04:09.840 --> 00:04:12.720 +which has not been true until now Emacs + +00:04:12.720 --> 00:04:14.680 +27 will be soon releasing + +00:04:14.680 --> 00:04:17.519 +27.2 and the pretest for that should + +00:04:17.519 --> 00:04:19.919 +begin sometime soon after Emacs comp is + +00:04:19.919 --> 00:04:20.880 +done + +00:04:20.880 --> 00:04:23.360 +and finally Emacs 28 is going to get + +00:04:23.360 --> 00:04:24.800 +better emoji support + +00:04:24.800 --> 00:04:26.479 +right now emojis are registered + +00:04:26.479 --> 00:04:29.120 +internally within Emacs as symbols + +00:04:29.120 --> 00:04:31.759 +which works in some ways but does not + +00:04:31.759 --> 00:04:33.759 +support some of the special features + +00:04:33.759 --> 00:04:37.360 +of of emojis such as different + +00:04:37.360 --> 00:04:40.000 +skin tones for the hand emoji or face + +00:04:40.000 --> 00:04:41.120 +emojis + +00:04:41.120 --> 00:04:43.280 +in Emacs 28 emojis are going to have + +00:04:43.280 --> 00:04:45.199 +their own support within the sequel + +00:04:45.199 --> 00:04:47.199 +c code and then this is going to allow + +00:04:47.199 --> 00:04:49.360 +those types of variations and other + +00:04:49.360 --> 00:04:52.720 +emoji specific font setups so that is + +00:04:52.720 --> 00:04:54.639 +everything for Emacs + +00:04:54.639 --> 00:04:56.720 +in the future I don't have a timeline + +00:04:56.720 --> 00:04:59.120 +for you on when 28 will be available + +00:04:59.120 --> 00:05:01.520 +but 27 is going to keep improving until + +00:05:01.520 --> 00:05:02.720 +we're ready to get there + +00:05:02.720 --> 00:05:04.479 +so have fun with the rest of you max + +00:05:04.479 --> 00:05:06.479 +conf and I hope to see you there + +00:05:06.479 --> 00:05:09.199 +bye diff --git a/2020/subtitles/emacsconf-2020--39-nongnu-elpa--questions--richard-stallman-autogen.vtt b/2020/subtitles/emacsconf-2020--39-nongnu-elpa--questions--richard-stallman-autogen.vtt new file mode 100644 index 00000000..82fc005a --- /dev/null +++ b/2020/subtitles/emacsconf-2020--39-nongnu-elpa--questions--richard-stallman-autogen.vtt @@ -0,0 +1,2833 @@ +WEBVTT + +00:00:00.640 --> 00:00:04.160 +okay so the first question is what is an + +00:00:04.160 --> 00:00:05.680 +example of a car + +00:00:05.680 --> 00:00:08.800 +a package currently in + +00:00:08.800 --> 00:00:12.160 +a non-elpa repo that does not work well + +00:00:12.160 --> 00:00:13.759 +with Emacs + +00:00:13.759 --> 00:00:18.000 +well one of them is s dot el + +00:00:18.000 --> 00:00:19.760 +and this is what made me aware that + +00:00:19.760 --> 00:00:21.920 +there was an issue here that caused + +00:00:21.920 --> 00:00:25.760 +problems well s.e.l + +00:00:25.760 --> 00:00:29.439 +is a beautifully written package + +00:00:29.439 --> 00:00:31.279 +that appears to be very useful for + +00:00:31.279 --> 00:00:32.800 +people + +00:00:32.800 --> 00:00:36.320 +and there's just one thing wrong with it + +00:00:36.320 --> 00:00:39.520 +it gobbled up the name space + +00:00:39.520 --> 00:00:43.680 +of symbols starting with s dash + +00:00:43.680 --> 00:00:47.039 +and I was shocked to discover that + +00:00:47.039 --> 00:00:49.440 +somebody who had not coordinated with + +00:00:49.440 --> 00:00:51.760 +the Emacs developers at all + +00:00:51.760 --> 00:00:55.360 +had implemented a package using such a + +00:00:55.360 --> 00:00:56.800 +short prefix which + +00:00:56.800 --> 00:00:59.760 +isn't the right way to do things oh by + +00:00:59.760 --> 00:01:01.520 +the way the questions have moved off the + +00:01:01.520 --> 00:01:04.000 +screen this is no good I can continue + +00:01:04.000 --> 00:01:05.360 +answering this one + +00:01:05.360 --> 00:01:08.880 +but I'll be stuck when this one is over + +00:01:08.880 --> 00:01:12.159 +anyway so uh + +00:01:12.159 --> 00:01:15.040 +and I was told that there was nothing I + +00:01:15.040 --> 00:01:16.560 +could do about it + +00:01:16.560 --> 00:01:19.920 +that so many users packages were using + +00:01:19.920 --> 00:01:22.960 +swl and thus essentially using that + +00:01:22.960 --> 00:01:24.240 +definition + +00:01:24.240 --> 00:01:28.080 +of the s dash star symbols + +00:01:28.080 --> 00:01:31.360 +that any attempt to use them + +00:01:31.360 --> 00:01:34.720 +publicly or privately for anything else + +00:01:34.720 --> 00:01:38.079 +would lead to horrible problems + +00:01:38.079 --> 00:01:41.680 +and I don't like that + +00:01:41.680 --> 00:01:45.520 +I decided I wanted to do something + +00:01:45.520 --> 00:01:49.040 +a so that that wouldn't happen again + +00:01:49.040 --> 00:01:52.320 +and b to make it unhappen + +00:01:52.320 --> 00:01:55.119 +in that case well the way to make it + +00:01:55.119 --> 00:01:57.840 +unhappen in that case is with a new + +00:01:57.840 --> 00:02:02.240 +symbol renaming feature the idea is + +00:02:02.240 --> 00:02:05.360 +you rename that file to something else + +00:02:05.360 --> 00:02:09.119 +and then you define an s.e.l that + +00:02:09.119 --> 00:02:11.520 +sets up symbol renaming and then loads + +00:02:11.520 --> 00:02:13.040 +the something else + +00:02:13.040 --> 00:02:16.080 +so it actually runs the same code it + +00:02:16.080 --> 00:02:16.400 +just + +00:02:16.400 --> 00:02:20.879 +doesn't globally define the symbols + +00:02:20.879 --> 00:02:23.920 +s dash whatever but they + +00:02:23.920 --> 00:02:26.160 +appear to work for the programs that + +00:02:26.160 --> 00:02:28.319 +explicitly + +00:02:28.319 --> 00:02:32.640 +require that require sdl + +00:02:32.640 --> 00:02:36.000 +or the s package so this gets the same + +00:02:36.000 --> 00:02:38.080 +behavior for all the programs that are + +00:02:38.080 --> 00:02:40.239 +using that library + +00:02:40.239 --> 00:02:43.360 +and uh doesn't interfere + +00:02:43.360 --> 00:02:47.840 +with the global name space at all + +00:02:47.840 --> 00:02:50.319 +however to do that we need to have a + +00:02:50.319 --> 00:02:52.080 +package + +00:02:52.080 --> 00:02:55.360 +s.e.l that isn't the same + +00:02:55.360 --> 00:02:57.760 +totally a short file that's totally + +00:02:57.760 --> 00:02:58.640 +different + +00:02:58.640 --> 00:03:01.440 +plus we've got to have the file that + +00:03:01.440 --> 00:03:02.840 +normally is called + +00:03:02.840 --> 00:03:06.239 +s.e.l available but + +00:03:06.239 --> 00:03:10.319 +uh under another name well + +00:03:10.319 --> 00:03:13.040 +how are we going to do that we can't put + +00:03:13.040 --> 00:03:14.800 +this into + +00:03:14.800 --> 00:03:18.879 +into Emacs in a nice way that + +00:03:18.879 --> 00:03:21.920 +won't make the uh won't make the + +00:03:21.920 --> 00:03:24.560 +maintainer angry + +00:03:24.560 --> 00:03:26.480 +of the mate to the developer of that + +00:03:26.480 --> 00:03:28.159 +package + +00:03:28.159 --> 00:03:32.080 +but we can do it with non-gnu + +00:03:32.080 --> 00:03:34.640 +elpa we can put those two things into + +00:03:34.640 --> 00:03:36.239 +non-gnu elpa + +00:03:36.239 --> 00:03:38.720 +without any difficulty and this shows + +00:03:38.720 --> 00:03:40.720 +one of the advantages + +00:03:40.720 --> 00:03:43.280 +we can put files we can put packages + +00:03:43.280 --> 00:03:45.440 +into non-gdu elpa + +00:03:45.440 --> 00:03:48.400 +and make changes in them now in general + +00:03:48.400 --> 00:03:49.599 +we wouldn't + +00:03:49.599 --> 00:03:51.760 +go to the effort of making big changes + +00:03:51.760 --> 00:03:54.319 +that's just too much to do + +00:03:54.319 --> 00:03:56.400 +unless something's really important but + +00:03:56.400 --> 00:03:58.000 +small changes + +00:03:58.000 --> 00:04:01.120 +that help things fit in are + +00:04:01.120 --> 00:04:04.319 +easy to do and + +00:04:04.319 --> 00:04:07.120 +uh okay oh so basically the recording + +00:04:07.120 --> 00:04:10.319 +didn't get anything until now I just saw + +00:04:10.319 --> 00:04:13.439 +a note pop up this session is now being + +00:04:13.439 --> 00:04:14.319 +recorded + +00:04:14.319 --> 00:04:16.320 +I hope it's been recorded all along it + +00:04:16.320 --> 00:04:18.160 +would be a shame to + +00:04:18.160 --> 00:04:21.280 +spoil oh good okay + +00:04:21.280 --> 00:04:27.120 +okay good so uh that's one of the issues + +00:04:27.120 --> 00:04:30.479 +uh does non-gnu eopa already exist + +00:04:30.479 --> 00:04:33.840 +or is this a sort of quote plan I don't + +00:04:33.840 --> 00:04:35.360 +know why you have to + +00:04:35.360 --> 00:04:37.919 +put scare quotes around the word plan + +00:04:37.919 --> 00:04:40.400 +it's sort of in between + +00:04:40.400 --> 00:04:44.160 +it's the creation of it is started you + +00:04:44.160 --> 00:04:45.440 +will find + +00:04:45.440 --> 00:04:48.160 +that there is an archive that it's + +00:04:48.160 --> 00:04:51.520 +possible to download packages from + +00:04:51.520 --> 00:04:54.880 +and there is a repository to put them in + +00:04:54.880 --> 00:04:57.120 +but that's not the way it's really + +00:04:57.120 --> 00:04:58.560 +supposed to work + +00:04:58.560 --> 00:05:02.800 +uh this is not supposed to be like the + +00:05:02.800 --> 00:05:04.320 +new elpa where there's + +00:05:04.320 --> 00:05:07.280 +one repo for all the packages and thus + +00:05:07.280 --> 00:05:09.039 +anyone who wants to edit any of them + +00:05:09.039 --> 00:05:11.199 +anyone that we want to have edit any of + +00:05:11.199 --> 00:05:11.680 +them + +00:05:11.680 --> 00:05:13.280 +has got to have access to the whole + +00:05:13.280 --> 00:05:15.440 +thing for one thing + +00:05:15.440 --> 00:05:18.560 +some packages will make + +00:05:18.560 --> 00:05:21.840 +an arrangement with the developers + +00:05:21.840 --> 00:05:25.120 +and they'll assure us that they will + +00:05:25.120 --> 00:05:27.039 +do things as things should be done and + +00:05:27.039 --> 00:05:28.400 +then we'll + +00:05:28.400 --> 00:05:32.080 +have their repo copied automatically + +00:05:32.080 --> 00:05:35.919 +or in other cases say + +00:05:35.919 --> 00:05:38.160 +copied manually with a little checking + +00:05:38.160 --> 00:05:40.160 +every so often + +00:05:40.160 --> 00:05:43.199 +uh and then uh in + +00:05:43.199 --> 00:05:46.400 +other cases we'll need to have our own + +00:05:46.400 --> 00:05:49.440 +repo for a particular package + +00:05:49.440 --> 00:05:52.479 +but we shouldn't have a single repo for + +00:05:52.479 --> 00:05:54.400 +all the packages we should have a repo + +00:05:54.400 --> 00:05:55.919 +for each package + +00:05:55.919 --> 00:05:57.840 +so that the people working on that can + +00:05:57.840 --> 00:06:01.120 +get access to modify it + +00:06:01.120 --> 00:06:04.319 +this has to be finished setting up + +00:06:04.319 --> 00:06:06.080 +and we're still working out the + +00:06:06.080 --> 00:06:07.680 +procedures + +00:06:07.680 --> 00:06:11.039 +for instance for making the arrangements + +00:06:11.039 --> 00:06:14.400 +with the developers of a package so that + +00:06:14.400 --> 00:06:15.440 +we can + +00:06:15.440 --> 00:06:18.840 +we hope uh entrust its development to + +00:06:18.840 --> 00:06:20.400 +them and + +00:06:20.400 --> 00:06:24.800 +rely on them directly + +00:06:24.800 --> 00:06:26.560 +and there may be more that needs to be + +00:06:26.560 --> 00:06:29.840 +worked on + +00:06:29.840 --> 00:06:36.639 +oh there's so many questions + +00:06:36.639 --> 00:06:39.280 +well I hope you the third question is + +00:06:39.280 --> 00:06:40.880 +what are the benefits + +00:06:40.880 --> 00:06:43.680 +I hope that people now see the benefits + +00:06:43.680 --> 00:06:46.240 +I've described them + +00:06:46.240 --> 00:06:49.599 +uh next question is it possible to work + +00:06:49.599 --> 00:06:51.440 +with the melba team + +00:06:51.440 --> 00:06:54.720 +to integrate that into Emacs + +00:06:54.720 --> 00:06:59.440 +no because the goal doesn't make sense + +00:06:59.440 --> 00:07:03.759 +melba the way it's done does not belong + +00:07:03.759 --> 00:07:07.199 +inside Emacs in any sense well first of + +00:07:07.199 --> 00:07:08.560 +all it can't literally be + +00:07:08.560 --> 00:07:11.280 +inside Emacs we don't have copyright + +00:07:11.280 --> 00:07:13.280 +assignments for that code + +00:07:13.280 --> 00:07:18.160 +and to get it would be unfeasible + +00:07:18.160 --> 00:07:20.560 +but we're not asking for copyright + +00:07:20.560 --> 00:07:21.520 +assignments for + +00:07:21.520 --> 00:07:25.280 +non-gnu elpa so that's + +00:07:25.280 --> 00:07:27.599 +you might wonder could melpa be merged + +00:07:27.599 --> 00:07:31.440 +with non-venue elpa the problem is + +00:07:31.440 --> 00:07:35.039 +melpa doesn't modify the packages + +00:07:35.039 --> 00:07:38.240 +it's just a place to find releases of + +00:07:38.240 --> 00:07:41.360 +packages wherever they happen to be + +00:07:41.360 --> 00:07:44.800 +and they put packages in with + +00:07:44.800 --> 00:07:48.319 +only a little bit of checking + +00:07:48.319 --> 00:07:51.520 +so no we there are a lot of packages + +00:07:51.520 --> 00:07:51.919 +that are + +00:07:51.919 --> 00:07:55.280 +in melpa that we'd like to get into + +00:07:55.280 --> 00:07:58.479 +non-canoe elpa I don't know the names of + +00:07:58.479 --> 00:08:00.800 +most of them but I expect most of them + +00:08:00.800 --> 00:08:04.160 +would be fine to have but they've got to + +00:08:04.160 --> 00:08:08.560 +be looked at one by one + +00:08:08.560 --> 00:08:12.000 +there are some rules for non-glpa + +00:08:12.000 --> 00:08:14.479 +and the only way to check them is to + +00:08:14.479 --> 00:08:18.000 +check them on one package at a time + +00:08:18.000 --> 00:08:22.160 +and that's going to take effort + +00:08:22.160 --> 00:08:25.039 +now with the people who work on melba + +00:08:25.039 --> 00:08:26.080 +want to get involved + +00:08:26.080 --> 00:08:29.440 +of this that would be great + +00:08:29.440 --> 00:08:32.800 +I haven't tried asking them first we've + +00:08:32.800 --> 00:08:33.919 +got to get this thing + +00:08:33.919 --> 00:08:37.599 +set up I doubt they would want to + +00:08:37.599 --> 00:08:40.479 +but if they said yes that would be + +00:08:40.479 --> 00:08:44.159 +wonderful + +00:08:44.159 --> 00:08:48.399 +uh any thoughts of packages being + +00:08:48.399 --> 00:09:00.959 +added I'm afraid + +00:09:00.959 --> 00:09:05.440 +um + +00:09:05.440 --> 00:09:07.200 +I'm afraid any thoughts of packages + +00:09:07.200 --> 00:09:08.959 +being added as + +00:09:08.959 --> 00:09:11.040 +some url I don't know anything about but + +00:09:11.040 --> 00:09:13.120 +it talks about open source + +00:09:13.120 --> 00:09:16.800 +which means I'm very unlikely to have + +00:09:16.800 --> 00:09:17.680 +much + +00:09:17.680 --> 00:09:20.959 +in common with whatever they say about + +00:09:20.959 --> 00:09:24.080 +either licensing or + +00:09:24.080 --> 00:09:27.760 +what's right and wrong uh + +00:09:27.760 --> 00:09:29.959 +but this seems to be something about + +00:09:29.959 --> 00:09:31.920 +disregarding licenses + +00:09:31.920 --> 00:09:35.680 +altogether well that is basically + +00:09:35.680 --> 00:09:39.360 +asking to lose there are reasons + +00:09:39.360 --> 00:09:43.360 +why we developed gnu licenses to release + +00:09:43.360 --> 00:09:45.600 +software why we have criteria + +00:09:45.600 --> 00:09:48.320 +for which licenses make a program free + +00:09:48.320 --> 00:09:49.519 +software + +00:09:49.519 --> 00:09:52.640 +if the program doesn't carry a license + +00:09:52.640 --> 00:09:55.519 +or if it carries a non-free license that + +00:09:55.519 --> 00:09:56.080 +program + +00:09:56.080 --> 00:09:59.760 +is not free software now you can + +00:09:59.760 --> 00:10:02.839 +maybe get away with disregarding that + +00:10:02.839 --> 00:10:04.800 +fact uh unless + +00:10:04.800 --> 00:10:07.600 +somebody an author or publisher stops + +00:10:07.600 --> 00:10:08.959 +you + +00:10:08.959 --> 00:10:11.360 +but we're not going to take we're not + +00:10:11.360 --> 00:10:12.399 +basically going to + +00:10:12.399 --> 00:10:15.200 +disregard the question of whether the + +00:10:15.200 --> 00:10:16.399 +software we + +00:10:16.399 --> 00:10:19.040 +recommend to people really is free + +00:10:19.040 --> 00:10:21.360 +software or not + +00:10:21.360 --> 00:10:24.560 +that's basically uh + +00:10:24.560 --> 00:10:27.519 +blindfolding yourself to the legal + +00:10:27.519 --> 00:10:29.120 +situation of the software you're + +00:10:29.120 --> 00:10:30.480 +distributing + +00:10:30.480 --> 00:10:33.519 +it's a terrible idea uh if they + +00:10:33.519 --> 00:10:35.920 +disregard our licenses they will hear + +00:10:35.920 --> 00:10:38.640 +from us about it + +00:10:38.640 --> 00:10:40.959 +and if you want to contribute to the + +00:10:40.959 --> 00:10:42.720 +free world + +00:10:42.720 --> 00:10:46.320 +put free licenses on your code + +00:10:46.320 --> 00:10:48.640 +and choose good ones to get this + +00:10:48.640 --> 00:10:50.000 +information + +00:10:50.000 --> 00:10:53.440 +look at gnu.org slash licensing + +00:10:53.440 --> 00:10:57.120 +in particular slash licenses + +00:10:57.120 --> 00:10:59.839 +and one page that input that's important + +00:10:59.839 --> 00:11:01.120 +is license + +00:11:01.120 --> 00:11:05.040 +dash recommendations.html + +00:11:05.040 --> 00:11:07.360 +that's where we advise you on what + +00:11:07.360 --> 00:11:09.279 +license we would recommend you use + +00:11:09.279 --> 00:11:11.360 +depending on the circumstances + +00:11:11.360 --> 00:11:15.600 +there's also license dash list dot html + +00:11:15.600 --> 00:11:20.160 +which describes a lot of licenses and + +00:11:20.160 --> 00:11:22.160 +says which ones are free + +00:11:22.160 --> 00:11:25.040 +which ones are compatible with the new + +00:11:25.040 --> 00:11:26.160 +gpl + +00:11:26.160 --> 00:11:28.640 +it's really important to use only gpl + +00:11:28.640 --> 00:11:31.519 +compatible licenses + +00:11:31.519 --> 00:11:34.320 +so that the various programs can be + +00:11:34.320 --> 00:11:35.519 +combined together + +00:11:35.519 --> 00:11:40.720 +or linked and + +00:11:40.720 --> 00:11:43.120 +you can also get other information about + +00:11:43.120 --> 00:11:44.240 +gnu licenses + +00:11:44.240 --> 00:11:47.040 +and the reasons why they are written the + +00:11:47.040 --> 00:11:55.279 +way they are + +00:11:55.279 --> 00:12:03.200 +oh sorry I don't see the next question + +00:12:03.200 --> 00:12:05.600 +oh why do I insist on using per and + +00:12:05.600 --> 00:12:07.519 +purrs + +00:12:07.519 --> 00:12:11.680 +uh I'm not happy with using + +00:12:11.680 --> 00:12:14.959 +they which is a plural pronoun with a + +00:12:14.959 --> 00:12:17.440 +singular antecedent + +00:12:17.440 --> 00:12:20.480 +it's bad because it causes + +00:12:20.480 --> 00:12:24.800 +confusion that is completely gratuitous + +00:12:24.800 --> 00:12:28.639 +many sentences become a lot of work + +00:12:28.639 --> 00:12:33.200 +to parse and understand if you + +00:12:33.200 --> 00:12:36.480 +add that ambiguity that source of him of + +00:12:36.480 --> 00:12:39.839 +regular ambiguity now + +00:12:39.839 --> 00:12:42.720 +I do not accept the demands of other + +00:12:42.720 --> 00:12:43.680 +people + +00:12:43.680 --> 00:12:47.519 +in regard to changing my grammar + +00:12:47.519 --> 00:12:50.800 +you can try to convince me but + +00:12:50.800 --> 00:12:54.240 +no one is entitled to give me orders + +00:12:54.240 --> 00:12:55.440 +about that + +00:12:55.440 --> 00:12:58.880 +or state their desires and expect + +00:12:58.880 --> 00:13:03.200 +obedience not for me and not from you + +00:13:03.200 --> 00:13:06.560 +or anyone we are all + +00:13:06.560 --> 00:13:09.839 +equally entitled to decide + +00:13:09.839 --> 00:13:13.200 +how we will speak and how we won't speak + +00:13:13.200 --> 00:13:18.000 +now I've spelled out all of these points + +00:13:18.000 --> 00:13:22.880 +in a file called stolman.org + +00:13:22.880 --> 00:13:30.120 +articles slash + +00:13:30.120 --> 00:13:31.600 +genderneutrality.html + +00:13:31.600 --> 00:13:33.760 +of course this is not a gnu project + +00:13:33.760 --> 00:13:36.000 +policy + +00:13:36.000 --> 00:13:46.839 +it's my own personal ideas on the + +00:13:46.839 --> 00:13:53.920 +subject + +00:13:53.920 --> 00:13:57.120 +if any of you feels offended + +00:13:57.120 --> 00:14:01.040 +by my referring to you with a singular + +00:14:01.040 --> 00:14:04.320 +gender neutral pronoun feel free + +00:14:04.320 --> 00:14:07.680 +to ex contact me privately + +00:14:07.680 --> 00:14:10.720 +and explain to me your reasons + +00:14:10.720 --> 00:14:14.000 +I will pay attention to them I'll + +00:14:14.000 --> 00:14:16.639 +think about them assuming that they're + +00:14:16.639 --> 00:14:18.399 +not something I've already + +00:14:18.399 --> 00:14:24.079 +considered and decided to dismiss before + +00:14:24.079 --> 00:14:27.760 +but you must not speak to me as if I had + +00:14:27.760 --> 00:14:30.240 +no business not obeying you because + +00:14:30.240 --> 00:14:30.800 +that's + +00:14:30.800 --> 00:14:34.320 +rude and it is not likely to convince me + +00:14:34.320 --> 00:14:40.720 +to change my mind + +00:14:40.720 --> 00:14:44.240 +I believe it is not actually + +00:14:44.240 --> 00:14:48.320 +of stating offense to anyone + +00:14:48.320 --> 00:14:50.560 +and the fact that somebody disagrees + +00:14:50.560 --> 00:14:52.880 +with me does not mean I'm wrong + +00:14:52.880 --> 00:15:00.720 +but I always can be wrong + +00:15:00.720 --> 00:15:02.560 +when you wrote that you could add a + +00:15:02.560 --> 00:15:05.680 +package to non your new elpa + +00:15:05.680 --> 00:15:07.120 +are you implying that you would add + +00:15:07.120 --> 00:15:09.199 +packages with or without package + +00:15:09.199 --> 00:15:11.120 +maintainers knowledge + +00:15:11.120 --> 00:15:15.279 +of course the packages we would + +00:15:15.279 --> 00:15:18.000 +we would distribute in this way are free + +00:15:18.000 --> 00:15:19.519 +software + +00:15:19.519 --> 00:15:21.920 +everyone is entitled to redistribute + +00:15:21.920 --> 00:15:22.720 +them + +00:15:22.720 --> 00:15:26.560 +and everyone is also entitled to modify + +00:15:26.560 --> 00:15:26.959 +them + +00:15:26.959 --> 00:15:29.199 +and redistribute them that's part of the + +00:15:29.199 --> 00:15:31.680 +meaning of free software + +00:15:31.680 --> 00:15:35.040 +I have been unable to understand + +00:15:35.040 --> 00:15:38.320 +how there came to be an idea + +00:15:38.320 --> 00:15:42.560 +that those who redistribute packages + +00:15:42.560 --> 00:15:45.600 +have some idea to be mere + +00:15:45.600 --> 00:15:49.360 +some obligation to be near mirrors + +00:15:49.360 --> 00:15:54.480 +and not modify things themselves + +00:15:54.480 --> 00:15:58.560 +well if a package is + +00:15:58.560 --> 00:16:01.440 +being maintained by developers who are + +00:16:01.440 --> 00:16:03.440 +cooperating with us + +00:16:03.440 --> 00:16:06.240 +we'll normally just leave it to them + +00:16:06.240 --> 00:16:07.360 +after all + +00:16:07.360 --> 00:16:10.079 +we have lots of other work to do they + +00:16:10.079 --> 00:16:10.399 +are + +00:16:10.399 --> 00:16:14.000 +clearly experts on the packages they've + +00:16:14.000 --> 00:16:15.600 +developed + +00:16:15.600 --> 00:16:18.399 +let's leave it to them if they make that + +00:16:18.399 --> 00:16:22.800 +sort of arrangement with us but + +00:16:22.800 --> 00:16:26.480 +that's up to them we can't insist that + +00:16:26.480 --> 00:16:29.120 +anyone make an arrangement with us + +00:16:29.120 --> 00:16:30.720 +but since those programs are free + +00:16:30.720 --> 00:16:33.279 +software anyone c is + +00:16:33.279 --> 00:16:36.639 +free to redistribute them and we will do + +00:16:36.639 --> 00:16:41.839 +that + +00:16:41.839 --> 00:16:45.519 +have you ever used vi or vim or + +00:16:45.519 --> 00:16:52.079 +evil mode no + +00:16:52.079 --> 00:16:53.920 +are there any plans to implement + +00:16:53.920 --> 00:16:56.800 +security considerations in non-gnu + +00:16:56.800 --> 00:17:00.720 +elpa uh we probably + +00:17:00.720 --> 00:17:02.959 +should and this will have to be + +00:17:02.959 --> 00:17:04.959 +implemented + +00:17:04.959 --> 00:17:08.559 +but at the moment + +00:17:08.559 --> 00:17:12.000 +developer Emacs maintainers will copy + +00:17:12.000 --> 00:17:13.280 +packages + +00:17:13.280 --> 00:17:18.160 +into it and so as long as they are + +00:17:18.160 --> 00:17:20.160 +verifying the packages and getting the + +00:17:20.160 --> 00:17:22.480 +packages from the right place + +00:17:22.480 --> 00:17:25.199 +that will take care of the security once + +00:17:25.199 --> 00:17:25.919 +there is + +00:17:25.919 --> 00:17:30.160 +when with automatic copying in + +00:17:30.160 --> 00:17:33.200 +will have to do something to + +00:17:33.200 --> 00:17:35.200 +make sure that we're fetching the + +00:17:35.200 --> 00:17:40.320 +packages securely + +00:17:40.320 --> 00:17:43.360 +and uh some of you might be interested + +00:17:43.360 --> 00:17:44.000 +in + +00:17:44.000 --> 00:17:46.080 +helping to design and implement this + +00:17:46.080 --> 00:17:48.000 +system + +00:17:48.000 --> 00:17:52.559 +uh what distro do I use + +00:17:52.559 --> 00:17:56.720 +uh well which distro of gnu slash linux + +00:17:56.720 --> 00:17:58.000 +do I use + +00:17:58.000 --> 00:18:03.520 +I use tree scale + +00:18:03.520 --> 00:18:07.200 +I haven't tried most of the free distros + +00:18:07.200 --> 00:18:10.080 +and the reason is it's not crucial that + +00:18:10.080 --> 00:18:11.120 +I do so + +00:18:11.120 --> 00:18:13.520 +we don't need me to rate the various + +00:18:13.520 --> 00:18:14.799 +free distros on + +00:18:14.799 --> 00:18:17.520 +practical questions because anyone can + +00:18:17.520 --> 00:18:20.000 +do that as well as I can + +00:18:20.000 --> 00:18:24.400 +and so you can tell people what + +00:18:24.400 --> 00:18:27.760 +you think of using them for me what's + +00:18:27.760 --> 00:18:29.360 +important to me + +00:18:29.360 --> 00:18:32.400 +is to inform people of the difference + +00:18:32.400 --> 00:18:34.160 +between the free distros + +00:18:34.160 --> 00:18:36.799 +and the non-free distros making sure + +00:18:36.799 --> 00:18:38.799 +people are aware that if you + +00:18:38.799 --> 00:18:42.000 +install a non-free gnu slash linux + +00:18:42.000 --> 00:18:45.600 +distro you'll get a free operating + +00:18:45.600 --> 00:18:46.720 +system with + +00:18:46.720 --> 00:18:49.919 +non-free stuff in various quantities + +00:18:49.919 --> 00:18:54.160 +added thus you will not reach freedom + +00:18:54.160 --> 00:18:56.240 +although you you'll make a lot of + +00:18:56.240 --> 00:18:57.520 +progress compared + +00:18:57.520 --> 00:19:01.039 +with using for instance windows or + +00:19:01.039 --> 00:19:03.919 +mac os or whatever vicious thing it + +00:19:03.919 --> 00:19:06.160 +might be + +00:19:06.160 --> 00:19:08.559 +I'd like to I'd like to people to be + +00:19:08.559 --> 00:19:09.760 +aware + +00:19:09.760 --> 00:19:12.799 +of this next step towards + +00:19:12.799 --> 00:19:14.720 +getting freedom for yourself and your + +00:19:14.720 --> 00:19:16.160 +own computing + +00:19:16.160 --> 00:19:24.480 +so that you can do that if you want to + +00:19:24.480 --> 00:19:29.039 +uh + +00:19:29.039 --> 00:19:31.360 +so who gets to make the final decision + +00:19:31.360 --> 00:19:32.799 +regarding + +00:19:32.799 --> 00:19:36.640 +non-gnu elpa the + +00:19:36.640 --> 00:19:39.200 +emax maintainers are going to be in + +00:19:39.200 --> 00:19:40.960 +charge of this + +00:19:40.960 --> 00:19:44.480 +but because it's not + +00:19:44.480 --> 00:19:47.760 +just a technical decision it has with + +00:19:47.760 --> 00:19:51.360 +only technical consequences + +00:19:51.360 --> 00:19:54.960 +but in general unless there's some + +00:19:54.960 --> 00:19:57.760 +severe problem with the package we will + +00:19:57.760 --> 00:20:03.600 +want to put it in + +00:20:03.600 --> 00:20:06.400 +and I expect most packages won't have a + +00:20:06.400 --> 00:20:07.440 +problem + +00:20:07.440 --> 00:20:09.919 +and we can just put them in when we get + +00:20:09.919 --> 00:20:11.679 +to them + +00:20:11.679 --> 00:20:15.919 +won't the elpa link to non-free sites + +00:20:15.919 --> 00:20:17.600 +like github + +00:20:17.600 --> 00:20:20.799 +uh it's a mistake to talk about a + +00:20:20.799 --> 00:20:25.760 +non-free site + +00:20:25.760 --> 00:20:29.120 +because a site is not a program + +00:20:29.120 --> 00:20:32.159 +a program is either free or non-free and + +00:20:32.159 --> 00:20:32.960 +we have + +00:20:32.960 --> 00:20:36.480 +clearly stated criteria for that in + +00:20:36.480 --> 00:20:39.679 +gnu.org philosophy slash + +00:20:39.679 --> 00:20:43.039 +free dash sw.html we have the free + +00:20:43.039 --> 00:20:45.360 +software definition + +00:20:45.360 --> 00:20:51.919 +but a site well their programs on it + +00:20:51.919 --> 00:20:54.000 +but it doesn't make sense to ask whether + +00:20:54.000 --> 00:20:55.120 +the site is + +00:20:55.120 --> 00:20:58.000 +free or not it's too simplistic a + +00:20:58.000 --> 00:20:58.880 +question + +00:20:58.880 --> 00:21:02.000 +to have a meaningful answer now one + +00:21:02.000 --> 00:21:05.679 +thing you can ask about is does the site + +00:21:05.679 --> 00:21:08.799 +send javascript to the user's machine + +00:21:08.799 --> 00:21:11.760 +to the user's browser and if so is that + +00:21:11.760 --> 00:21:12.960 +javascript + +00:21:12.960 --> 00:21:17.120 +non-free well github + +00:21:17.120 --> 00:21:19.919 +does send non-free javascript for some + +00:21:19.919 --> 00:21:21.200 +operations + +00:21:21.200 --> 00:21:24.240 +so we consider it unsatisfactory as a + +00:21:24.240 --> 00:21:26.159 +repository + +00:21:26.159 --> 00:21:29.600 +but uh that doesn't mean linking to it + +00:21:29.600 --> 00:21:33.360 +for is a bad thing to do regardless of + +00:21:33.360 --> 00:21:34.720 +what the purpose is + +00:21:34.720 --> 00:21:36.640 +for instance if the purpose is to refer + +00:21:36.640 --> 00:21:38.240 +to some things + +00:21:38.240 --> 00:21:40.799 +that you can access without running the + +00:21:40.799 --> 00:21:42.880 +non-free javascript + +00:21:42.880 --> 00:21:47.200 +then it's okay for that purpose + +00:21:47.200 --> 00:21:50.480 +so if now that you understand the + +00:21:50.480 --> 00:21:52.559 +details of this issue + +00:21:52.559 --> 00:21:54.880 +you think that there is a problem with + +00:21:54.880 --> 00:21:55.919 +the + +00:21:55.919 --> 00:22:00.080 +link to camel there's + +00:22:00.080 --> 00:22:03.679 +sorry a link in camel dot html + +00:22:03.679 --> 00:22:06.799 +well report it to + +00:22:06.799 --> 00:22:10.880 +uh bug gnu emax reported as an Emacs bug + +00:22:10.880 --> 00:22:14.159 +but do think about the criteria I've + +00:22:14.159 --> 00:22:15.840 +just said because maybe it's not a + +00:22:15.840 --> 00:22:18.000 +problem + +00:22:18.000 --> 00:22:21.840 +is it okay to use the gnu of pharaoh gpl + +00:22:21.840 --> 00:22:24.559 +for emax packages + +00:22:24.559 --> 00:22:28.880 +yes it is + +00:22:28.880 --> 00:22:31.120 +uh which is your favorite programming + +00:22:31.120 --> 00:22:32.080 +language + +00:22:32.080 --> 00:22:35.200 +if lisp which variant + +00:22:35.200 --> 00:22:38.400 +well I don't exactly have a + +00:22:38.400 --> 00:22:41.760 +favorite variant but + +00:22:41.760 --> 00:22:45.120 +when I designed Emacs lisp I + +00:22:45.120 --> 00:22:47.520 +did the best thing I could think of at + +00:22:47.520 --> 00:22:48.799 +the time + +00:22:48.799 --> 00:22:52.559 +subject to the need to keep it small + +00:22:52.559 --> 00:22:55.520 +for the first few years it was important + +00:22:55.520 --> 00:22:56.960 +for gdu Emacs + +00:22:56.960 --> 00:22:59.840 +to run in a machine which could only + +00:22:59.840 --> 00:23:00.799 +give it half + +00:23:00.799 --> 00:23:04.480 +a meg of user space + +00:23:04.480 --> 00:23:06.559 +so there are a lot of constructs that + +00:23:06.559 --> 00:23:09.200 +clearly were desirable to include + +00:23:09.200 --> 00:23:12.320 +that I left out because we could + +00:23:12.320 --> 00:23:16.880 +make it work without them + +00:23:16.880 --> 00:23:18.960 +and then a lot of those have been added + +00:23:18.960 --> 00:23:20.640 +since because + +00:23:20.640 --> 00:23:23.200 +it's been a long time since we needed to + +00:23:23.200 --> 00:23:40.960 +keep Emacs so rigorously small + +00:23:40.960 --> 00:23:44.240 +um someone is + +00:23:44.240 --> 00:23:47.679 +asking about the + +00:23:47.679 --> 00:23:51.360 +fsf's repository project well + +00:23:51.360 --> 00:23:54.400 +we agreed that there would be another + +00:23:54.400 --> 00:23:55.440 +virtual machine + +00:23:55.440 --> 00:23:59.919 +running one of those for the gnu project + +00:23:59.919 --> 00:24:15.840 +but that's as far as the discussion went + +00:24:15.840 --> 00:24:20.480 +question 17 is extremely insulting + +00:24:20.480 --> 00:24:25.600 +I have not engaged in sexual harassment + +00:24:25.600 --> 00:24:28.720 +don't expect me to plead guilty to such + +00:24:28.720 --> 00:24:28.960 +a + +00:24:28.960 --> 00:24:32.640 +nasty claim + +00:24:32.640 --> 00:24:35.600 +people have been accusing me of many + +00:24:35.600 --> 00:24:36.799 +things + +00:24:36.799 --> 00:24:39.919 +some of which are + +00:24:39.919 --> 00:24:43.120 +basically mole hills and some of which + +00:24:43.120 --> 00:24:46.559 +are false so + +00:24:46.559 --> 00:24:50.640 +uh I'm not going to give them + +00:24:50.640 --> 00:24:53.840 +anything I have been bullied in a + +00:24:53.840 --> 00:24:56.400 +horrible way + +00:24:56.400 --> 00:24:59.679 +that was wrong + +00:24:59.679 --> 00:25:02.720 +I would like the bullies to apologize to + +00:25:02.720 --> 00:25:03.520 +me + +00:25:03.520 --> 00:25:06.320 +and when I see that they're not bullying + +00:25:06.320 --> 00:25:08.960 +I will forgive them + +00:25:08.960 --> 00:25:11.279 +I would like to have conversations with + +00:25:11.279 --> 00:25:14.799 +them if any of the mole hills + +00:25:14.799 --> 00:25:17.840 +annoyed someone I'm happy to talk + +00:25:17.840 --> 00:25:20.880 +with her and thus + +00:25:20.880 --> 00:25:31.120 +uh help help resolve things with peace + +00:25:31.120 --> 00:25:35.120 +and my opinion on + +00:25:35.120 --> 00:25:39.200 +quote diversity within + +00:25:39.200 --> 00:25:42.720 +Emacs well Emacs is + +00:25:42.720 --> 00:25:45.679 +never going to be diverse it is extended + +00:25:45.679 --> 00:25:46.480 +in + +00:25:46.480 --> 00:25:49.760 +one language Emacs lisp + +00:25:49.760 --> 00:25:53.279 +well I don't know uh we did have an idea + +00:25:53.279 --> 00:25:55.840 +of implementing extensibility using + +00:25:55.840 --> 00:25:58.400 +scheme and the hope was that guile + +00:25:58.400 --> 00:26:01.120 +could be integrated with Emacs that + +00:26:01.120 --> 00:26:02.960 +turned out to be difficult it may be + +00:26:02.960 --> 00:26:05.279 +impossible but in principle + +00:26:05.279 --> 00:26:07.520 +it might be a good thing that would be a + +00:26:07.520 --> 00:26:11.039 +small amount of diversity + +00:26:11.039 --> 00:26:14.960 +but it's not that important + +00:26:14.960 --> 00:26:16.960 +what I think is really important for + +00:26:16.960 --> 00:26:18.880 +developing Emacs + +00:26:18.880 --> 00:26:22.799 +is to make it do word processing + +00:26:22.799 --> 00:26:27.039 +I sometimes use libra office + +00:26:27.039 --> 00:26:30.080 +and yeah I can make it do things + +00:26:30.080 --> 00:26:32.799 +it has features for wysiwyg which are + +00:26:32.799 --> 00:26:34.880 +very nice + +00:26:34.880 --> 00:26:38.000 +but it's in other regards + +00:26:38.000 --> 00:26:40.400 +it's not Emacs and it doesn't have the + +00:26:40.400 --> 00:26:42.400 +abilities of Emacs + +00:26:42.400 --> 00:26:45.600 +and it should + +00:26:45.600 --> 00:26:48.400 +so I urge people to work on extending + +00:26:48.400 --> 00:26:49.039 +Emacs + +00:26:49.039 --> 00:26:51.600 +in that direction adding the features + +00:26:51.600 --> 00:27:13.600 +that a word processor has to have + +00:27:13.600 --> 00:27:16.640 +the last question I can answer is + +00:27:16.640 --> 00:27:21.679 +18 but yes it's a very sad thing + +00:27:21.679 --> 00:27:24.960 +how many companies + +00:27:24.960 --> 00:27:28.399 +insist on using non-free software + +00:27:28.399 --> 00:27:33.200 +well I would get a different kind of job + +00:27:33.200 --> 00:27:36.799 +that's a decision I made many years ago + +00:27:36.799 --> 00:27:40.320 +early in the gnu project + +00:27:40.320 --> 00:27:42.799 +I decided I would not first I would not + +00:27:42.799 --> 00:27:47.679 +get a job developing non-free software + +00:27:47.679 --> 00:27:50.960 +and later on I decided + +00:27:50.960 --> 00:27:54.880 +once I could stop using non-free + +00:27:54.880 --> 00:27:57.120 +software that is once we had + +00:27:57.120 --> 00:28:00.799 +a gnu slash linux system that we could + +00:28:00.799 --> 00:28:08.320 +switch over to and uh + +00:28:08.320 --> 00:28:11.679 +oh wait I thought I thought magic wand + +00:28:11.679 --> 00:28:16.240 +time meant it was time to stop + +00:28:16.240 --> 00:28:21.039 +but now I rather ask the question + +00:28:21.039 --> 00:28:27.760 +uh + +00:28:27.760 --> 00:28:32.480 +so what do you do well if I were you + +00:28:32.480 --> 00:28:35.679 +I'd probably not work for any of those + +00:28:35.679 --> 00:28:37.440 +companies + +00:28:37.440 --> 00:28:39.679 +if I needed to make money I'd get a job + +00:28:39.679 --> 00:28:40.799 +but I get some + +00:28:40.799 --> 00:28:43.840 +other kind of job + +00:28:43.840 --> 00:28:48.080 +that didn't involve using software + +00:28:48.080 --> 00:28:51.039 +I would or that let me choose the + +00:28:51.039 --> 00:28:53.600 +software I would use + +00:28:53.600 --> 00:28:56.880 +but I would live cheaply you know the + +00:28:56.880 --> 00:28:58.000 +less you spend + +00:28:58.000 --> 00:29:00.640 +the less you need to make and the more + +00:29:00.640 --> 00:29:01.120 +time + +00:29:01.120 --> 00:29:04.720 +you can take away from your paid work + +00:29:04.720 --> 00:29:07.200 +and the more flexibility you have in + +00:29:07.200 --> 00:29:08.640 +which paid work + +00:29:08.640 --> 00:29:13.039 +you can do being in a position + +00:29:13.039 --> 00:29:16.399 +to say no to avoid being + +00:29:16.399 --> 00:29:23.679 +desperate to say yes + +00:29:23.679 --> 00:29:27.440 +uh strengthens your position + +00:29:27.440 --> 00:29:31.200 +and you need that one way you can help + +00:29:31.200 --> 00:29:33.279 +do that is by + +00:29:33.279 --> 00:29:36.559 +not having children now that is a + +00:29:36.559 --> 00:29:38.960 +tangent but it can't be denied that + +00:29:38.960 --> 00:29:41.760 +raising children is very expensive I + +00:29:41.760 --> 00:29:42.399 +have heard + +00:29:42.399 --> 00:29:45.559 +many people say that they are + +00:29:45.559 --> 00:29:48.080 +uncomfortable with their jobs + +00:29:48.080 --> 00:29:50.880 +but they have to do those jobs to make + +00:29:50.880 --> 00:29:52.240 +enough money + +00:29:52.240 --> 00:29:55.440 +to support their children + +00:29:55.440 --> 00:29:59.120 +well think about that be aware + +00:29:59.120 --> 00:30:01.520 +that's likely to happen to you before + +00:30:01.520 --> 00:30:06.159 +you make that decision + +00:30:06.159 --> 00:30:10.000 +what would I + +00:30:10.000 --> 00:30:13.279 +what would I change about free software + +00:30:13.279 --> 00:30:16.960 +well since this is + +00:30:16.960 --> 00:30:20.880 +magic I would magically find + +00:30:20.880 --> 00:30:25.600 +a way of showing everyone why + +00:30:25.600 --> 00:30:28.000 +most free software needs to be copy + +00:30:28.000 --> 00:30:29.679 +lifted + +00:30:29.679 --> 00:30:32.480 +so that our community would not + +00:30:32.480 --> 00:30:34.880 +basically + +00:30:34.880 --> 00:30:38.640 +submit to abuse by proprietary software + +00:30:38.640 --> 00:30:45.919 +developers + +00:30:45.919 --> 00:30:49.760 +of course I could go further if I could + +00:30:49.760 --> 00:30:53.279 +magically recruit a hundred thousand + +00:30:53.279 --> 00:30:55.760 +good programmers to do lots of work + +00:30:55.760 --> 00:30:57.919 +improving free software + +00:30:57.919 --> 00:31:01.039 +we might well if we could do this 20 + +00:31:01.039 --> 00:31:03.279 +years ago we might have wiped out + +00:31:03.279 --> 00:31:06.559 +non-free systems and then we wouldn't + +00:31:06.559 --> 00:31:07.200 +have had + +00:31:07.200 --> 00:31:10.320 +horrible things like + +00:31:10.320 --> 00:31:14.480 +world wide web drm that + +00:31:14.480 --> 00:31:18.000 +no one has the courage to resist + +00:31:18.000 --> 00:31:20.480 +if they're desperately trying to get + +00:31:20.480 --> 00:31:22.640 +money for anything + +00:31:22.640 --> 00:31:26.240 +and if they need approval of companies + +00:31:26.240 --> 00:31:29.519 +of the big companies that push for drm + +00:31:29.519 --> 00:31:32.960 +uh then they don't dare even resist as + +00:31:32.960 --> 00:31:38.240 +much as they can resist + +00:31:38.240 --> 00:31:40.880 +and look what happened to the world wide + +00:31:40.880 --> 00:31:43.200 +web consortium + +00:31:43.200 --> 00:31:47.279 +uh they surrendered blatantly + +00:31:47.279 --> 00:31:50.399 +and ignominiously by + +00:31:50.399 --> 00:31:55.760 +endorsing the drm system + +00:31:55.760 --> 00:31:59.600 +so what can you do I don't have a magic + +00:31:59.600 --> 00:32:00.880 +wand + +00:32:00.880 --> 00:32:04.720 +I'm a human being with the capabilities + +00:32:04.720 --> 00:32:06.559 +I have + +00:32:06.559 --> 00:32:09.919 +but the advantage of + +00:32:09.919 --> 00:32:12.840 +great firmness in campaigning for free + +00:32:12.840 --> 00:32:14.000 +software + +00:32:14.000 --> 00:32:18.240 +and this enables me to do things + +00:32:18.240 --> 00:32:27.679 +that no one else will do + +00:32:27.679 --> 00:32:30.480 +what tools from pre unix days do you + +00:32:30.480 --> 00:32:31.519 +miss + +00:32:31.519 --> 00:32:34.240 +well I don't I don't think about them + +00:32:34.240 --> 00:32:34.880 +with + +00:32:34.880 --> 00:32:38.640 +missing them actually but + +00:32:38.640 --> 00:32:42.080 +it was sort of nice to have + +00:32:42.080 --> 00:32:46.240 +ddt as your login shell + +00:32:46.240 --> 00:32:49.600 +so in using modern terminology + +00:32:49.600 --> 00:32:52.640 +because that meant at any time you could + +00:32:52.640 --> 00:32:55.519 +stop a program lotus debugging symbols + +00:32:55.519 --> 00:32:57.519 +and start examining the data in the + +00:32:57.519 --> 00:32:58.799 +instructions + +00:32:58.799 --> 00:33:01.519 +you could debug it that way and then you + +00:33:01.519 --> 00:33:03.039 +could even + +00:33:03.039 --> 00:33:06.720 +patch in instructions to continue + +00:33:06.720 --> 00:33:09.760 +running that job with the bug fixed + +00:33:09.760 --> 00:33:11.600 +in fact you could even do this with the + +00:33:11.600 --> 00:33:13.919 +system kernel + +00:33:13.919 --> 00:33:16.640 +so that your jobs wouldn't get lost I + +00:33:16.640 --> 00:33:17.840 +did that + +00:33:17.840 --> 00:33:20.559 +quite a few times of course sometimes I + +00:33:20.559 --> 00:33:22.720 +saw what was wrong and I just had to + +00:33:22.720 --> 00:33:25.919 +fix a piece of data but sometimes + +00:33:25.919 --> 00:33:28.240 +it took me a long time to figure out how + +00:33:28.240 --> 00:33:29.679 +to get the system to + +00:33:29.679 --> 00:33:32.480 +keep on going but with the work I had + +00:33:32.480 --> 00:33:34.240 +done + +00:33:34.240 --> 00:33:39.279 +I didn't want to lose that work + +00:33:39.279 --> 00:33:41.600 +and so one of the first features I put + +00:33:41.600 --> 00:33:43.039 +into gdu Emacs was + +00:33:43.039 --> 00:33:47.760 +auto save + +00:33:47.760 --> 00:33:50.640 +uh I'm not going to try to figure out + +00:33:50.640 --> 00:33:54.320 +which packages I re I actually used + +00:33:54.320 --> 00:33:56.480 +uh if I knew I would get hit by a bus + +00:33:56.480 --> 00:33:59.039 +tomorrow + +00:33:59.039 --> 00:34:02.320 +uh say because of a fortune teller + +00:34:02.320 --> 00:34:05.039 +no a fortune teller doesn't give you any + +00:34:05.039 --> 00:34:06.240 +knowledge it's just + +00:34:06.240 --> 00:34:10.159 +superstitious uh hand waving + +00:34:10.159 --> 00:34:13.760 +so assuming that I + +00:34:13.760 --> 00:34:16.480 +talked that I got a reading from a + +00:34:16.480 --> 00:34:18.879 +fortune teller which is + +00:34:18.879 --> 00:34:23.119 +implausible enough to begin with uh + +00:34:23.119 --> 00:34:25.040 +that wouldn't give me any knowledge + +00:34:25.040 --> 00:34:28.320 +about what was going to happen to me + +00:34:28.320 --> 00:34:32.879 +oh by the way fortune tellers generally + +00:34:32.879 --> 00:34:34.960 +play back to you facts that they've + +00:34:34.960 --> 00:34:36.879 +discovered about you + +00:34:36.879 --> 00:34:40.480 +together with cold reading which means + +00:34:40.480 --> 00:34:43.440 +they say things calculated to make it + +00:34:43.440 --> 00:34:44.639 +appear that they know + +00:34:44.639 --> 00:34:49.119 +more than they do or things that are + +00:34:49.119 --> 00:34:52.399 +uh that sound wise to anyone + +00:34:52.399 --> 00:34:55.679 +so you can say the same thing to + +00:34:55.679 --> 00:34:58.800 +uh say 100 people + +00:34:58.800 --> 00:35:02.000 +and 80 or 90 of them will say boy that + +00:35:02.000 --> 00:35:06.480 +was really accurate + +00:35:06.480 --> 00:35:10.400 +but what if for some reason + +00:35:10.400 --> 00:35:15.119 +uh about + +00:35:15.119 --> 00:35:17.440 +what what advice would I give for + +00:35:17.440 --> 00:35:18.560 +stewardship of + +00:35:18.560 --> 00:35:22.079 +Emacs well basically + +00:35:22.079 --> 00:35:25.359 +focus on + +00:35:25.359 --> 00:35:28.480 +keeping the community strong in + +00:35:28.480 --> 00:35:29.280 +defending + +00:35:29.280 --> 00:35:32.640 +freedom if you have a choice between + +00:35:32.640 --> 00:35:34.400 +keeping the community strong in + +00:35:34.400 --> 00:35:36.079 +defending freedom + +00:35:36.079 --> 00:35:38.800 +and getting more people to participate + +00:35:38.800 --> 00:35:40.720 +in the development + +00:35:40.720 --> 00:35:43.839 +you've got to choose the freedom it is + +00:35:43.839 --> 00:35:44.400 +very + +00:35:44.400 --> 00:35:48.400 +easy for free software projects to + +00:35:48.400 --> 00:35:52.320 +subordinate freedom to other criteria + +00:35:52.320 --> 00:35:55.359 +and once that happens it's + +00:35:55.359 --> 00:35:58.079 +easy for those who don't care much about + +00:35:58.079 --> 00:35:58.720 +freedom + +00:35:58.720 --> 00:36:00.800 +such as sometimes companies that might + +00:36:00.800 --> 00:36:02.640 +offer you some money + +00:36:02.640 --> 00:36:08.160 +to purchase your soul + +00:36:08.160 --> 00:36:10.560 +not that there are really things that + +00:36:10.560 --> 00:36:14.240 +exist called souls it's a metaphor but + +00:36:14.240 --> 00:36:16.560 +it's an important metaphor for something + +00:36:16.560 --> 00:36:18.800 +important + +00:36:18.800 --> 00:36:20.880 +people in the community have to be + +00:36:20.880 --> 00:36:24.320 +thinking about freedom + +00:36:24.320 --> 00:36:27.280 +when they make decisions about what is + +00:36:27.280 --> 00:36:31.839 +wise to do + +00:36:31.839 --> 00:36:36.480 +the decision to devel to set up non-glpa + +00:36:36.480 --> 00:36:39.839 +has a drawback it was a compromise now a + +00:36:39.839 --> 00:36:41.520 +lot of people will + +00:36:41.520 --> 00:36:44.560 +tell you that I am uncompromising and + +00:36:44.560 --> 00:36:46.240 +say that that's a flaw + +00:36:46.240 --> 00:36:48.720 +well they're wrong I make little + +00:36:48.720 --> 00:36:50.320 +compromises + +00:36:50.320 --> 00:36:53.040 +very often and occasionally I make a + +00:36:53.040 --> 00:36:55.359 +medium-sized compromise + +00:36:55.359 --> 00:36:58.880 +the compromise is in the past we wanted + +00:36:58.880 --> 00:36:59.359 +to get + +00:36:59.359 --> 00:37:01.599 +copyright assignments for the packages + +00:37:01.599 --> 00:37:02.400 +in gnu + +00:37:02.400 --> 00:37:06.240 +elpa so that we could move them into + +00:37:06.240 --> 00:37:09.119 +core Emacs and of course sometimes we + +00:37:09.119 --> 00:37:11.200 +move packages in the other direction + +00:37:11.200 --> 00:37:14.480 +that way we are where we distribute a + +00:37:14.480 --> 00:37:16.160 +given package + +00:37:16.160 --> 00:37:18.160 +is something we can decide purely + +00:37:18.160 --> 00:37:20.880 +technically + +00:37:20.880 --> 00:37:25.200 +and however make insisting on getting + +00:37:25.200 --> 00:37:26.800 +copyright assignments for all the + +00:37:26.800 --> 00:37:28.640 +packages in gnu elpa + +00:37:28.640 --> 00:37:32.079 +meant that we had to say sorry no + +00:37:32.079 --> 00:37:35.119 +we will not install that packages in + +00:37:35.119 --> 00:37:38.560 +packaging dewey lpa unless the + +00:37:38.560 --> 00:37:41.520 +authors sign copyright assignments and + +00:37:41.520 --> 00:37:44.079 +sometimes that's a lot of trouble + +00:37:44.079 --> 00:37:47.520 +well non-glpa + +00:37:47.520 --> 00:37:50.160 +won't require copyright assignments if + +00:37:50.160 --> 00:37:51.520 +there's a free package + +00:37:51.520 --> 00:37:54.560 +we can make whatever changes presumably + +00:37:54.560 --> 00:37:57.200 +small otherwise we would probably say + +00:37:57.200 --> 00:38:00.560 +we don't have time but and then + +00:38:00.560 --> 00:38:04.560 +put it in but it does have the drawback + +00:38:04.560 --> 00:38:05.599 +that + +00:38:05.599 --> 00:38:07.680 +we in general we won't be able to move + +00:38:07.680 --> 00:38:09.119 +those packages + +00:38:09.119 --> 00:38:12.960 +into core Emacs without + +00:38:12.960 --> 00:38:14.960 +getting the legal papers then that we + +00:38:14.960 --> 00:38:20.160 +didn't get before + +00:38:20.160 --> 00:38:24.320 +how do you see the future of gdu Emacs + +00:38:24.320 --> 00:38:27.599 +uh I don't see the future + +00:38:27.599 --> 00:38:29.839 +I used to say that my crystal ball is + +00:38:29.839 --> 00:38:31.680 +cloudy today + +00:38:31.680 --> 00:38:35.680 +unfortunately that has another + +00:38:35.680 --> 00:38:39.040 +meaning which is quite ironic uh we + +00:38:39.040 --> 00:38:41.200 +certainly don't want + +00:38:41.200 --> 00:38:44.800 +our lives to be + +00:38:44.800 --> 00:38:48.480 +somewhere in a cloud because + +00:38:48.480 --> 00:38:51.119 +that clouds your mind and then people + +00:38:51.119 --> 00:38:51.599 +start + +00:38:51.599 --> 00:38:54.240 +cheating you and taking advantage of you + +00:38:54.240 --> 00:38:56.880 +and it's horrible + +00:38:56.880 --> 00:39:00.160 +but uh I don't see the future I just + +00:39:00.160 --> 00:39:02.720 +can be sure from the past that there + +00:39:02.720 --> 00:39:03.839 +will be + +00:39:03.839 --> 00:39:07.599 +challenges where some of the people + +00:39:07.599 --> 00:39:10.720 +involved want to make a big compromise + +00:39:10.720 --> 00:39:12.960 +that isn't worth it + +00:39:12.960 --> 00:39:16.880 +and they some they may even get the + +00:39:16.880 --> 00:39:18.079 +impression that it's + +00:39:18.079 --> 00:39:21.200 +up to them well actually + +00:39:21.200 --> 00:39:24.480 +Emacs has appointed maintainers just as + +00:39:24.480 --> 00:39:27.440 +every gdu package does and they are the + +00:39:27.440 --> 00:39:29.280 +ones in charge of developing that + +00:39:29.280 --> 00:39:30.480 +package + +00:39:30.480 --> 00:39:34.400 +and this is for a good reason + +00:39:34.400 --> 00:39:38.200 +because the appointed maintainers take + +00:39:38.200 --> 00:39:39.760 +responsibility + +00:39:39.760 --> 00:39:42.240 +to carry out the gnu project policies + +00:39:42.240 --> 00:39:44.079 +and most important of all + +00:39:44.079 --> 00:39:46.160 +are the ones that make the whole system + +00:39:46.160 --> 00:39:47.520 +work together + +00:39:47.520 --> 00:39:52.640 +and the ethical standards + +00:39:52.640 --> 00:39:59.920 +to respect freedom and defend freedom + +00:39:59.920 --> 00:40:02.240 +is there any plan to move more packages + +00:40:02.240 --> 00:40:04.960 +from core Emacs into elpa + +00:40:04.960 --> 00:40:08.480 +uh I don't know uh + +00:40:08.480 --> 00:40:11.440 +whether there is a plan I suppose if + +00:40:11.440 --> 00:40:12.720 +there's a plan + +00:40:12.720 --> 00:40:15.680 +we probably would have done it if there + +00:40:15.680 --> 00:40:16.960 +had been a plan + +00:40:16.960 --> 00:40:19.839 +some have been moved I don't see this as + +00:40:19.839 --> 00:40:20.319 +a + +00:40:20.319 --> 00:40:22.400 +fundamentally important issue it's a + +00:40:22.400 --> 00:40:24.160 +matter of what's convenient for + +00:40:24.160 --> 00:40:26.640 +the users and their advantages and + +00:40:26.640 --> 00:40:29.599 +disadvantages to each choice + +00:40:29.599 --> 00:40:32.800 +what is your opinion on higher education + +00:40:32.800 --> 00:40:35.760 +uh requiring non-free software for + +00:40:35.760 --> 00:40:36.720 +instance + +00:40:36.720 --> 00:40:40.400 +well I wouldn't I wouldn't + +00:40:40.400 --> 00:40:43.440 +matriculate in a school which did that + +00:40:43.440 --> 00:40:50.960 +unless I saw a way I could refuse + +00:40:50.960 --> 00:40:54.960 +now of course I do this + +00:40:54.960 --> 00:40:57.760 +because I can get away with it and + +00:40:57.760 --> 00:41:00.240 +therefore my doing it is extremely + +00:41:00.240 --> 00:41:04.960 +important to show somebody does resist + +00:41:04.960 --> 00:41:08.400 +I don't expect most people who support + +00:41:08.400 --> 00:41:09.359 +free school + +00:41:09.359 --> 00:41:12.319 +who advocate free software to go that + +00:41:12.319 --> 00:41:13.599 +far + +00:41:13.599 --> 00:41:17.760 +uh I published an article in the spring + +00:41:17.760 --> 00:41:21.040 +entitled saying no even once + +00:41:21.040 --> 00:41:24.640 +is helping saying no to non-free + +00:41:24.640 --> 00:41:25.359 +software + +00:41:25.359 --> 00:41:29.040 +even once because + +00:41:29.040 --> 00:41:32.240 +the more you do it the more you help but + +00:41:32.240 --> 00:41:34.640 +even doing it a little in a way that + +00:41:34.640 --> 00:41:36.640 +other people notice + +00:41:36.640 --> 00:41:39.920 +is starting to help so + +00:41:39.920 --> 00:41:43.440 +uh please don't think that your choices + +00:41:43.440 --> 00:41:45.119 +are either + +00:41:45.119 --> 00:41:48.480 +be as firm and stubborn as I am + +00:41:48.480 --> 00:41:52.240 +or just give up and let yourself drift + +00:41:52.240 --> 00:41:56.240 +helplessly as if you had no volition + +00:41:56.240 --> 00:41:58.079 +there are a lot of points in between + +00:41:58.079 --> 00:42:00.720 +there and you can surely + +00:42:00.720 --> 00:42:04.079 +manage to say no some of the time + +00:42:04.079 --> 00:42:07.839 +and show people an example of saying no + +00:42:07.839 --> 00:42:11.040 +some of the time for instance you could + +00:42:11.040 --> 00:42:12.720 +say to people + +00:42:12.720 --> 00:42:15.520 +you know I hate the fact that my school + +00:42:15.520 --> 00:42:16.000 +makes me + +00:42:16.000 --> 00:42:20.400 +use zoom uh so whenever + +00:42:20.400 --> 00:42:22.240 +I'm not being forced I'm not going to + +00:42:22.240 --> 00:42:25.760 +use it + +00:42:25.760 --> 00:42:29.200 +or I hate the fact that the only way I + +00:42:29.200 --> 00:42:31.200 +can talk to that group of people + +00:42:31.200 --> 00:42:35.200 +is resume but when + +00:42:35.200 --> 00:42:38.400 +but for anything else I will feel better + +00:42:38.400 --> 00:42:40.079 +about myself if I don't + +00:42:40.079 --> 00:42:42.880 +see lots of ways to say no some of the + +00:42:42.880 --> 00:42:44.000 +time + +00:42:44.000 --> 00:42:47.040 +and yield some of the time + +00:42:47.040 --> 00:42:50.960 +and when you try saying no occasionally + +00:42:50.960 --> 00:42:53.920 +you may just develop the ability to say + +00:42:53.920 --> 00:42:56.400 +no more often + +00:42:56.400 --> 00:42:58.800 +now whether you would ever get to be as + +00:42:58.800 --> 00:43:00.640 +stubborn as I am + +00:43:00.640 --> 00:43:04.480 +I don't know but what I find is that + +00:43:04.480 --> 00:43:08.480 +I like the fact that I've never made + +00:43:08.480 --> 00:43:12.480 +this kind of compromise + +00:43:12.480 --> 00:43:15.839 +I feel I have a reputation to maintain + +00:43:15.839 --> 00:43:19.319 +nobody's forcing me but I get + +00:43:19.319 --> 00:43:21.119 +satisfaction + +00:43:21.119 --> 00:43:24.319 +out of maintaining out of being able to + +00:43:24.319 --> 00:43:26.400 +continue to say + +00:43:26.400 --> 00:43:30.880 +I will not + +00:43:30.880 --> 00:43:34.480 +you are now unmuted and that also + +00:43:34.480 --> 00:43:40.480 +can happen at various different levels + +00:43:40.480 --> 00:43:43.520 +so you can get that satisfaction + +00:43:43.520 --> 00:43:46.640 +of fully maintaining a refusal + +00:43:46.640 --> 00:43:54.400 +that applies only to certain areas + +00:43:54.400 --> 00:43:57.040 +citizens uh noon already let's maybe + +00:43:57.040 --> 00:43:58.880 +take one or two more questions and then + +00:43:58.880 --> 00:43:59.599 +break for + +00:43:59.599 --> 00:44:03.200 +the lunch break okay thank you + +00:44:03.200 --> 00:44:06.000 +how often do you personally use Emacs as + +00:44:06.000 --> 00:44:07.440 +the + +00:44:07.440 --> 00:44:10.640 +lowest question now uh + +00:44:10.640 --> 00:44:16.640 +well I use it most of the day + +00:44:16.640 --> 00:44:18.880 +I occasionally do use other things in + +00:44:18.880 --> 00:44:20.160 +fact I occasionally edit with + +00:44:20.160 --> 00:44:21.599 +libreoffice + +00:44:21.599 --> 00:44:24.240 +I occasionally use media players I + +00:44:24.240 --> 00:44:25.280 +occasionally + +00:44:25.280 --> 00:44:29.040 +uh + +00:44:29.040 --> 00:44:32.480 +I occasionally ssh to a machine and type + +00:44:32.480 --> 00:44:34.000 +some commands on it + +00:44:34.000 --> 00:44:35.440 +which occasionally includes running + +00:44:35.440 --> 00:44:42.319 +Emacs on it + +00:44:42.319 --> 00:44:45.760 +I read pdf files a lot + +00:44:45.760 --> 00:44:47.520 +would be nice if you could get those + +00:44:47.520 --> 00:44:49.599 +into Emacs so that I could read them + +00:44:49.599 --> 00:44:52.240 +with Emacs commands + +00:44:52.240 --> 00:44:55.040 +and I maybe even edit them with the max + +00:44:55.040 --> 00:44:56.160 +commands + +00:44:56.160 --> 00:44:59.440 +when they can be edited I use + +00:44:59.440 --> 00:45:02.960 +uh journal sometimes + +00:45:02.960 --> 00:45:10.079 +to write on a pdf file + +00:45:10.079 --> 00:45:12.160 +are there any more interesting projects + +00:45:12.160 --> 00:45:13.760 +you have in mind over and above + +00:45:13.760 --> 00:45:18.400 +non-gnu elpa uh + +00:45:18.400 --> 00:45:22.079 +I can't think of one right now well + +00:45:22.079 --> 00:45:25.520 +there are things there are things that + +00:45:25.520 --> 00:45:27.119 +the gnu project needs + +00:45:27.119 --> 00:45:30.560 +doing there are packages that don't have + +00:45:30.560 --> 00:45:32.319 +maintainers or could use + +00:45:32.319 --> 00:45:35.839 +more maintainers uh + +00:45:35.839 --> 00:45:38.880 +talk with maintainers at canoe.org + +00:45:38.880 --> 00:45:42.000 +and the assistant candusences will + +00:45:42.000 --> 00:45:44.960 +help you find a package where you can do + +00:45:44.960 --> 00:45:48.400 +good + +00:45:48.400 --> 00:45:50.560 +not for beginners though you got to get + +00:45:50.560 --> 00:45:52.079 +you got to learn + +00:45:52.079 --> 00:45:55.599 +uh a substantive substantial level of + +00:45:55.599 --> 00:45:58.160 +capacity to develop and debug programs + +00:45:58.160 --> 00:45:59.440 +before you can + +00:45:59.440 --> 00:46:02.800 +be a maintainer uh have I ever looked at + +00:46:02.800 --> 00:46:04.480 +maggot + +00:46:04.480 --> 00:46:08.400 +uh no I haven't + +00:46:08.400 --> 00:46:11.920 +but I believe + +00:46:11.920 --> 00:46:14.880 +work is being done to get it put into + +00:46:14.880 --> 00:46:16.560 +Emacs + +00:46:16.560 --> 00:46:22.240 +and at that point I'll give it a try + +00:46:22.240 --> 00:46:25.200 +I do not want to share my configuration + +00:46:25.200 --> 00:46:25.760 +files + +00:46:25.760 --> 00:46:29.520 +they're personal but + +00:46:29.520 --> 00:46:33.599 +how about if we end this now + +00:46:33.599 --> 00:46:36.880 +you are now unmuted sounds good to me + +00:46:36.880 --> 00:46:38.880 +thank you very much richard for joining + +00:46:38.880 --> 00:46:41.520 +in for live questions + +00:46:41.520 --> 00:46:43.839 +okay diff --git a/2020/subtitles/emacsconf-2020--40-closing-remarks-part-1-autogen.vtt b/2020/subtitles/emacsconf-2020--40-closing-remarks-part-1-autogen.vtt new file mode 100644 index 00000000..fd49bf4e --- /dev/null +++ b/2020/subtitles/emacsconf-2020--40-closing-remarks-part-1-autogen.vtt @@ -0,0 +1,205 @@ +WEBVTT + +00:00:07.359 --> 00:00:09.519 +alrighty + +00:00:09.519 --> 00:00:19.840 +we're all set up waiting for corbin + +00:00:19.840 --> 00:00:22.960 +you are now muted + +00:00:22.960 --> 00:00:26.240 +oh it might be having a kid emergency so + +00:00:26.240 --> 00:00:28.080 +if you want we can get started with our + +00:00:28.080 --> 00:00:30.080 +closing remarks you are now unmuted and + +00:00:30.080 --> 00:00:31.199 +then we will + +00:00:31.199 --> 00:00:35.120 +um you know bring corwin in when when um + +00:00:35.120 --> 00:00:38.879 +things permit + +00:00:38.879 --> 00:00:42.840 +let me just share the closing remarks + +00:00:42.840 --> 00:00:44.160 +notes + +00:00:44.160 --> 00:00:46.879 +so that we can see what that's like + +00:00:46.879 --> 00:00:48.879 +actually + +00:00:48.879 --> 00:00:55.440 +um + +00:00:55.440 --> 00:00:58.399 +yeah sure I guess we can do the closing + +00:00:58.399 --> 00:01:00.719 +remarks + +00:01:00.719 --> 00:01:03.680 +okay not actually closing yet there + +00:01:03.680 --> 00:01:06.400 +might be another talk after this but + +00:01:06.400 --> 00:01:08.479 +since we have a little time before uh + +00:01:08.479 --> 00:01:09.680 +before + +00:01:09.680 --> 00:01:12.320 +uh cornbread comes well you know share + +00:01:12.320 --> 00:01:13.439 +some of the interesting things we've + +00:01:13.439 --> 00:01:14.799 +seen today + +00:01:14.799 --> 00:01:18.479 +so uh there have been about 12 20 talks + +00:01:18.479 --> 00:01:21.840 +21 out once once ong macros + +00:01:21.840 --> 00:01:25.360 +happens that's all today there's 16 more + +00:01:25.360 --> 00:01:26.159 +talks tomorrow + +00:01:26.159 --> 00:01:28.560 +so if you thought today was lots of fun + +00:01:28.560 --> 00:01:30.880 +be sure to tune in tomorrow as well + +00:01:30.880 --> 00:01:33.920 +uh for reference last year's EmacsConf + +00:01:33.920 --> 00:01:36.240 +had 30 talks many of which were lighting + +00:01:36.240 --> 00:01:37.600 +talks this year + +00:01:37.600 --> 00:01:39.680 +we had slightly longer talks and a lot + +00:01:39.680 --> 00:01:41.360 +more interactivities or a lot more + +00:01:41.360 --> 00:01:43.119 +question and answer sections + +00:01:43.119 --> 00:01:45.360 +they're worth more than there were about + +00:01:45.360 --> 00:01:47.040 +391 viewers + +00:01:47.040 --> 00:01:50.079 +on the main main stream + +00:01:50.079 --> 00:01:52.320 +and about 26 in the lower resolution + +00:01:52.320 --> 00:01:53.680 +stream + +00:01:53.680 --> 00:01:55.680 +last year's viewers were last year had + +00:01:55.680 --> 00:01:58.960 +about 270 viewers at the same time so + +00:01:58.960 --> 00:02:01.280 +the max clock is getting bigger and + +00:02:01.280 --> 00:02:02.719 +etherpad has been working out + +00:02:02.719 --> 00:02:05.360 +really really well uh people have been + +00:02:05.360 --> 00:02:07.280 +using that to pose their questions + +00:02:07.280 --> 00:02:08.800 +so I think at some point I saw there + +00:02:08.800 --> 00:02:11.120 +were 124 people working on it and we + +00:02:11.120 --> 00:02:12.640 +only managed to + +00:02:12.640 --> 00:02:17.440 +accidentally erase it once so yay us + +00:02:17.440 --> 00:02:19.599 +and yay everybody for helping thank you + +00:02:19.599 --> 00:02:24.319 +so much + +00:02:24.319 --> 00:02:27.920 +so yeah so the videos and other + +00:02:27.920 --> 00:02:29.200 +resources + +00:02:29.200 --> 00:02:31.840 +um we're planning to post uh sometime + +00:02:31.840 --> 00:02:33.680 +over the next few weeks + +00:02:33.680 --> 00:02:36.000 +um it actually took a couple weeks last + +00:02:36.000 --> 00:02:37.519 +year but this year + +00:02:37.519 --> 00:02:39.519 +I'm hoping that we can at least + +00:02:39.519 --> 00:02:41.040 +partially partially + +00:02:41.040 --> 00:02:44.160 +um release them much sooner um + +00:02:44.160 --> 00:02:45.440 +you know I might be able to get around + +00:02:45.440 --> 00:02:47.280 +to uploading some of the pre-recorded + +00:02:47.280 --> 00:02:48.160 +talks + +00:02:48.160 --> 00:02:53.360 +um later tonight after the conference + +00:02:53.360 --> 00:02:57.760 +so keep an eye on emacsconf.org/2020 for that + +00:02:57.760 --> 00:03:01.120 +Join our mailing lists which is + +00:03:01.120 --> 00:03:07.840 +a list that you know. https://lists.gnu.org/mailman/listinfo/emacsconf-discuss diff --git a/2020/subtitles/emacsconf-2020--40-closing-remarks-part-2-autogen.vtt b/2020/subtitles/emacsconf-2020--40-closing-remarks-part-2-autogen.vtt new file mode 100644 index 00000000..b7b770ac --- /dev/null +++ b/2020/subtitles/emacsconf-2020--40-closing-remarks-part-2-autogen.vtt @@ -0,0 +1,1000 @@ +WEBVTT + +00:00:03.760 --> 00:00:04.480 +this is the + +00:00:04.480 --> 00:00:06.640 +closing remarks section where we get to + +00:00:06.640 --> 00:00:07.680 +again thank people + +00:00:07.680 --> 00:00:09.440 +and get people to share their lessons + +00:00:09.440 --> 00:00:10.800 +learned and whatnot + +00:00:10.800 --> 00:00:13.599 +but uh leo since you've stayed up to uh + +00:00:13.599 --> 00:00:14.080 +to + +00:00:14.080 --> 00:00:16.000 +say something let's let's let's turn it + +00:00:16.000 --> 00:00:17.520 +over to you + +00:00:17.520 --> 00:00:20.240 +oh what should I be saying I mean let me + +00:00:20.240 --> 00:00:22.640 +just turn on the webcam first + +00:00:22.640 --> 00:00:25.279 +and uh as you can see the day has + +00:00:25.279 --> 00:00:26.480 +progressed I'm not + +00:00:26.480 --> 00:00:28.640 +blasting light into my face I'm now + +00:00:28.640 --> 00:00:30.080 +sitting instead of + +00:00:30.080 --> 00:00:32.160 +you know standing so you can tell that + +00:00:32.160 --> 00:00:33.760 +it's getting quite late for europe right + +00:00:33.760 --> 00:00:38.239 +now + +00:00:38.239 --> 00:00:40.320 +but uh yeah I'm not sure if you want me + +00:00:40.320 --> 00:00:42.559 +to to go we've already done a little bit + +00:00:42.559 --> 00:00:44.800 +of our closing remarks anyway before uh + +00:00:44.800 --> 00:00:45.920 +colleen's talk + +00:00:45.920 --> 00:00:48.719 +so yeah what do you want me to add I + +00:00:48.719 --> 00:00:49.120 +mean we've + +00:00:49.120 --> 00:00:50.800 +all we've all been thanking one another + +00:00:50.800 --> 00:00:52.719 +we've been spanking the speakers + +00:00:52.719 --> 00:00:55.440 +uh you know nothing would have been + +00:00:55.440 --> 00:00:56.800 +possible without the efforts + +00:00:56.800 --> 00:00:59.359 +of you know all the other organizers in + +00:00:59.359 --> 00:01:01.280 +the team but also the speakers so + +00:01:01.280 --> 00:01:03.039 +I'll just reiterate what corwin has been + +00:01:03.039 --> 00:01:05.040 +telling you thank you so much for being + +00:01:05.040 --> 00:01:05.680 +so + +00:01:05.680 --> 00:01:07.920 +so many today I believe we've tripled + +00:01:07.920 --> 00:01:09.520 +the amount of viewers that we had for + +00:01:09.520 --> 00:01:11.360 +the previous imax conf + +00:01:11.360 --> 00:01:14.960 +and that's mind-boggling to have + +00:01:14.960 --> 00:01:17.600 +so many people have seen me to think + +00:01:17.600 --> 00:01:19.119 +that so many people have seen me spill + +00:01:19.119 --> 00:01:20.479 +water on myself + +00:01:20.479 --> 00:01:22.560 +and do a fool of myself for the entire + +00:01:22.560 --> 00:01:24.040 +day it is + +00:01:24.040 --> 00:01:26.320 +outstandingly stupid but still thank you + +00:01:26.320 --> 00:01:27.119 +so much + +00:01:27.119 --> 00:01:30.880 +it's fine yeah it's this one + +00:01:30.880 --> 00:01:32.640 +yeah this is this is going going really + +00:01:32.640 --> 00:01:34.240 +really well um + +00:01:34.240 --> 00:01:36.079 +but of course there's always ideas we + +00:01:36.079 --> 00:01:37.360 +can you can try to + +00:01:37.360 --> 00:01:39.439 +make it even even better so if you have + +00:01:39.439 --> 00:01:41.840 +any ideas or if you have any + +00:01:41.840 --> 00:01:43.280 +uh comments on the things that work + +00:01:43.280 --> 00:01:44.479 +really well that you'd like us to keep + +00:01:44.479 --> 00:01:45.600 +doing tomorrow + +00:01:45.600 --> 00:01:47.040 +please make sure to leave them in the + +00:01:47.040 --> 00:01:49.920 +other pad uh so the url is somewhere in + +00:01:49.920 --> 00:01:51.600 +all the different places we put it + +00:01:51.600 --> 00:01:53.200 +and there's a section all the way at the + +00:01:53.200 --> 00:01:55.439 +end where you people can drop in their + +00:01:55.439 --> 00:01:56.640 +general feedback + +00:01:56.640 --> 00:01:59.200 +and what went well what can be improved + +00:01:59.200 --> 00:02:01.040 +if you want to volunteer to help out + +00:02:01.040 --> 00:02:01.439 +with + +00:02:01.439 --> 00:02:04.240 +copying questions for example that might + +00:02:04.240 --> 00:02:05.439 +be great + +00:02:05.439 --> 00:02:08.879 +anyways it's all there uh and um + +00:02:08.879 --> 00:02:12.879 +that's that's my part + +00:02:12.879 --> 00:02:16.000 +um sorry + +00:02:16.000 --> 00:02:18.400 +so say that again uh it's been lots of + +00:02:18.400 --> 00:02:20.480 +fun and there's tomorrow oh my goodness + +00:02:20.480 --> 00:02:23.280 +you're still tomorrow that's tomorrow + +00:02:23.280 --> 00:02:26.720 +damn it + +00:02:26.720 --> 00:02:30.239 +yeah it's so it's been a lot of fun + +00:02:30.239 --> 00:02:31.680 +today + +00:02:31.680 --> 00:02:35.280 +um let's see so yeah I'm + +00:02:35.280 --> 00:02:38.080 +I guess we did go through the stats + +00:02:38.080 --> 00:02:39.280 +before but I'll + +00:02:39.280 --> 00:02:42.319 +also quickly add that um + +00:02:42.319 --> 00:02:44.879 +you know I've been looking a bit of an + +00:02:44.879 --> 00:02:45.680 +eye on the + +00:02:45.680 --> 00:02:47.920 +server's network bandwidth usage and you + +00:02:47.920 --> 00:02:49.280 +know today we've + +00:02:49.280 --> 00:02:51.920 +had about 1.3 terabytes of outbound + +00:02:51.920 --> 00:02:53.200 +traffic + +00:02:53.200 --> 00:02:56.319 +um which is definitely something + +00:02:56.319 --> 00:02:59.280 +and it's a record it's by by far you + +00:02:59.280 --> 00:03:00.800 +know shattered last year's numbers we + +00:03:00.800 --> 00:03:01.680 +had I think + +00:03:01.680 --> 00:03:04.959 +about like 400 viewers live um peaking + +00:03:04.959 --> 00:03:06.159 +at one point + +00:03:06.159 --> 00:03:09.280 +um and it's very humble + +00:03:09.280 --> 00:03:13.040 +humbling to see um like so many people + +00:03:13.040 --> 00:03:16.480 +um you know tune in to watch talks + +00:03:16.480 --> 00:03:18.080 +um about their favorite piece of + +00:03:18.080 --> 00:03:20.319 +software um about Emacs + +00:03:20.319 --> 00:03:23.760 +and um you know be part of the community + +00:03:23.760 --> 00:03:27.280 +and you know have us be be part of the + +00:03:27.280 --> 00:03:28.239 +community or + +00:03:28.239 --> 00:03:30.799 +I guess um you know run this sort of an + +00:03:30.799 --> 00:03:32.080 +event so it's been absolutely + +00:03:32.080 --> 00:03:35.680 +awesome um I guess I can quickly get to + +00:03:35.680 --> 00:03:36.319 +the + +00:03:36.319 --> 00:03:38.879 +thanks if you leo or sasha don't have + +00:03:38.879 --> 00:03:40.799 +anything else to add + +00:03:40.799 --> 00:03:44.000 +nope all good alrighty um + +00:03:44.000 --> 00:03:47.040 +yeah so let's see I'd like to thank the + +00:03:47.040 --> 00:03:48.400 +free software foundation + +00:03:48.400 --> 00:03:51.840 +especially the tech team um for + +00:03:51.840 --> 00:03:53.680 +for their general support for letting us + +00:03:53.680 --> 00:03:55.599 +use their big blue button + +00:03:55.599 --> 00:03:58.640 +um yeah thank you so much it's + +00:03:58.640 --> 00:04:00.640 +it's made a lot of difference this year + +00:04:00.640 --> 00:04:02.720 +um you know last year for EmacsConf + +00:04:02.720 --> 00:04:04.000 +2019 we used + +00:04:04.000 --> 00:04:07.040 +um jitsi meat um + +00:04:07.040 --> 00:04:10.799 +which was awesome but um + +00:04:10.799 --> 00:04:13.280 +you know we did run into some technical + +00:04:13.280 --> 00:04:15.599 +difficulties with it but this time + +00:04:15.599 --> 00:04:17.840 +um you know big blue button was for the + +00:04:17.840 --> 00:04:19.519 +most part smooth sailing + +00:04:19.519 --> 00:04:22.639 +um so yeah thank you very much to the + +00:04:22.639 --> 00:04:23.919 +free software foundation + +00:04:23.919 --> 00:04:25.520 +foundation for letting us use their + +00:04:25.520 --> 00:04:27.360 +weekly watson instance + +00:04:27.360 --> 00:04:29.199 +allow me to just interject for a second + +00:04:29.199 --> 00:04:31.280 +it was smooth sailing for absolutely + +00:04:31.280 --> 00:04:33.360 +every single speaker but myself + +00:04:33.360 --> 00:04:35.520 +well I managed to have three different + +00:04:35.520 --> 00:04:37.600 +problems with big blue buttons so + +00:04:37.600 --> 00:04:39.440 +I'll be fighting buggy pulse all night + +00:04:39.440 --> 00:04:42.000 +you can be sure of that + +00:04:42.000 --> 00:04:44.560 +please do um yeah that's that's the + +00:04:44.560 --> 00:04:46.000 +beauty of free software I guess + +00:04:46.000 --> 00:04:48.240 +is you know it it can be frustrating but + +00:04:48.240 --> 00:04:49.360 +at least you know there's + +00:04:49.360 --> 00:04:51.040 +multiple ways forward with you know + +00:04:51.040 --> 00:04:52.880 +reporting bugs and sending patches + +00:04:52.880 --> 00:04:55.840 +um and you know that's part of I guess + +00:04:55.840 --> 00:04:56.960 +the message that + +00:04:56.960 --> 00:04:59.360 +I'm I'm hoping that like you know people + +00:04:59.360 --> 00:05:01.680 +who take away from an event like this + +00:05:01.680 --> 00:05:04.560 +um around a community like this um you + +00:05:04.560 --> 00:05:05.440 +know Emacs + +00:05:05.440 --> 00:05:08.320 +you know being such an um long-standing + +00:05:08.320 --> 00:05:10.960 +piece of free software um + +00:05:10.960 --> 00:05:13.840 +and having this large of a community + +00:05:13.840 --> 00:05:15.840 +around it who who's been continuing to + +00:05:15.840 --> 00:05:17.520 +grow + +00:05:17.520 --> 00:05:20.160 +and mature with Emacs and you know every + +00:05:20.160 --> 00:05:23.199 +year we get new people in + +00:05:23.199 --> 00:05:26.240 +more and more people discover Emacs um + +00:05:26.240 --> 00:05:27.840 +you know join the community + +00:05:27.840 --> 00:05:31.520 +or communities I should say um + +00:05:31.520 --> 00:05:34.720 +it's just wonderful and + +00:05:34.720 --> 00:05:36.560 +a large part of it is possible because + +00:05:36.560 --> 00:05:38.800 +Emacs is free software um + +00:05:38.800 --> 00:05:42.560 +so I mean at the risk of spoiling my own + +00:05:42.560 --> 00:05:43.280 +talk + +00:05:43.280 --> 00:05:46.400 +uh-huh I I I + +00:05:46.400 --> 00:05:48.000 +I want to say that's that's what we're + +00:05:48.000 --> 00:05:50.000 +going to pivot to tomorrow that's that's + +00:05:50.000 --> 00:05:50.400 +what + +00:05:50.400 --> 00:05:52.800 +uh welcome to the dungeon talk is really + +00:05:52.800 --> 00:05:55.199 +about why it has to be free software + +00:05:55.199 --> 00:05:58.080 +and as you peel the project apart I + +00:05:58.080 --> 00:05:58.960 +think you'll see + +00:05:58.960 --> 00:06:02.000 +eric and I have for a long time that it + +00:06:02.000 --> 00:06:05.440 +is shameful to even think about trying + +00:06:05.440 --> 00:06:06.560 +to put + +00:06:06.560 --> 00:06:10.240 +some things outside of the public domain + +00:06:10.240 --> 00:06:14.639 +right yeah exactly and I think that's a + +00:06:14.639 --> 00:06:17.120 +good point to bring this up um this is a + +00:06:17.120 --> 00:06:18.240 +closing remark + +00:06:18.240 --> 00:06:19.919 +but it's only for today you know we've + +00:06:19.919 --> 00:06:22.319 +got tomorrow a long day of events + +00:06:22.319 --> 00:06:25.919 +um much like today um you know I say it + +00:06:25.919 --> 00:06:26.639 +long but + +00:06:26.639 --> 00:06:28.720 +in a way like thinking back it kind of + +00:06:28.720 --> 00:06:29.840 +like went by like this + +00:06:29.840 --> 00:06:34.160 +so um yeah it's gonna be a lot of fun + +00:06:34.160 --> 00:06:37.120 +much like today was so yeah definitely + +00:06:37.120 --> 00:06:38.800 +tune in tomorrow + +00:06:38.800 --> 00:06:41.039 +um we're going to be starting at the + +00:06:41.039 --> 00:06:43.240 +same time same place you know + +00:06:43.240 --> 00:06:45.919 +live.emacsconf.org + +00:06:45.919 --> 00:06:47.360 +for the specific mount points for + +00:06:47.360 --> 00:06:48.960 +example you know we'll be using + +00:06:48.960 --> 00:06:50.000 +main.webm + +00:06:50.000 --> 00:06:53.599 +and main dash 480p dot webm + +00:06:53.599 --> 00:06:57.680 +um I want to say thank you to sasha for + +00:06:57.680 --> 00:07:00.000 +setting that up and getting it running + +00:07:00.000 --> 00:07:00.800 +because + +00:07:00.800 --> 00:07:04.240 +I remember last year um + +00:07:04.240 --> 00:07:06.960 +you know we had a couple of people um + +00:07:06.960 --> 00:07:08.080 +requesting + +00:07:08.080 --> 00:07:11.280 +that you know a a lower resolution + +00:07:11.280 --> 00:07:14.000 +stream or mount point be made available + +00:07:14.000 --> 00:07:14.560 +um + +00:07:14.560 --> 00:07:18.000 +because of their limited bandwidth and + +00:07:18.000 --> 00:07:19.840 +it like when you have like free software + +00:07:19.840 --> 00:07:21.759 +tools it's not too hard + +00:07:21.759 --> 00:07:25.919 +um to get something like that going um + +00:07:25.919 --> 00:07:27.919 +I mean not impossible I should say it + +00:07:27.919 --> 00:07:29.199 +wasn't too easy + +00:07:29.199 --> 00:07:32.000 +we did have some difficulties with it + +00:07:32.000 --> 00:07:33.120 +today + +00:07:33.120 --> 00:07:34.800 +I'm learning more about ffmpeg and I + +00:07:34.800 --> 00:07:36.160 +expected to know at this point but it's + +00:07:36.160 --> 00:07:37.840 +great + +00:07:37.840 --> 00:07:41.599 +maybe it'll work tomorrow too yeah + +00:07:41.599 --> 00:07:44.720 +um yeah sasha can attest to it um + +00:07:44.720 --> 00:07:46.160 +you know there were still some king + +00:07:46.160 --> 00:07:47.759 +spitting iron out + +00:07:47.759 --> 00:07:51.039 +um and it's a process but you know we're + +00:07:51.039 --> 00:07:51.840 +all learning + +00:07:51.840 --> 00:07:54.879 +um each each of us in our own ways + +00:07:54.879 --> 00:07:58.000 +um yeah so there's that + +00:07:58.000 --> 00:08:00.400 +I'm very happy to have had that mount + +00:08:00.400 --> 00:08:02.800 +points to making banks conf accessible + +00:08:02.800 --> 00:08:03.599 +to people + +00:08:03.599 --> 00:08:06.560 +in um you know areas of the world where + +00:08:06.560 --> 00:08:08.160 +bandwidth may not be + +00:08:08.160 --> 00:08:10.160 +um you know as cheap or as readily + +00:08:10.160 --> 00:08:12.240 +available + +00:08:12.240 --> 00:08:13.680 +or just you know someone wanting to + +00:08:13.680 --> 00:08:15.280 +watch on their phone um + +00:08:15.280 --> 00:08:17.520 +even here um you know in the us and + +00:08:17.520 --> 00:08:18.560 +canada + +00:08:18.560 --> 00:08:20.160 +data plans are not exactly cheap or + +00:08:20.160 --> 00:08:21.919 +unlimited so + +00:08:21.919 --> 00:08:24.960 +um yeah that's great + +00:08:24.960 --> 00:08:29.520 +let's see yeah so + +00:08:29.520 --> 00:08:31.199 +we are already halfway through this + +00:08:31.199 --> 00:08:33.599 +one's uh network bandwidth usage for our + +00:08:33.599 --> 00:08:34.560 +server + +00:08:34.560 --> 00:08:38.839 +um for tomorrow we should save some for + +00:08:38.839 --> 00:08:41.360 +tomorrow + +00:08:41.360 --> 00:08:44.240 +all right yeah but for for tomorrow I'll + +00:08:44.240 --> 00:08:45.680 +probably try bumping up the server a + +00:08:45.680 --> 00:08:47.600 +little bit more to get us some bandwidth + +00:08:47.600 --> 00:08:50.959 +some more bandwidth um + +00:08:50.959 --> 00:08:54.399 +yeah um in terms of thank yous + +00:08:54.399 --> 00:08:56.320 +um can you scroll down a little bit + +00:08:56.320 --> 00:08:58.880 +please of course + +00:08:58.880 --> 00:09:02.000 +uh thank you + +00:09:02.000 --> 00:09:05.440 +right um yeah so the fsf and fsf tech + +00:09:05.440 --> 00:09:06.800 +team again for letting us use their + +00:09:06.800 --> 00:09:08.320 +picture button instance + +00:09:08.320 --> 00:09:11.839 +um volunteers and organizers + +00:09:11.839 --> 00:09:15.120 +um so there's there's me + +00:09:15.120 --> 00:09:17.519 +um there's valvin 192 there's david + +00:09:17.519 --> 00:09:19.279 +bremner david o'toole + +00:09:19.279 --> 00:09:22.399 +um corwin who + +00:09:22.399 --> 00:09:24.399 +both presented and also has been helping + +00:09:24.399 --> 00:09:26.399 +out um + +00:09:26.399 --> 00:09:30.240 +and especially um oops can you scroll + +00:09:30.240 --> 00:09:33.600 +up again in the past + +00:09:33.600 --> 00:09:36.959 +leo leo + +00:09:36.959 --> 00:09:40.240 +um right so sorry I got distracted by + +00:09:40.240 --> 00:09:45.680 +cool stuff + +00:09:45.680 --> 00:09:48.160 +sorry go ahead okay go no no go ahead I + +00:09:48.160 --> 00:09:48.880 +was just + +00:09:48.880 --> 00:09:52.480 +being distracted um yeah we'll have some + +00:09:52.480 --> 00:09:53.680 +time to check it out later + +00:09:53.680 --> 00:09:57.360 +after the event today um but yeah + +00:09:57.360 --> 00:10:00.399 +a special thank you um to to to you + +00:10:00.399 --> 00:10:02.160 +sasha and to you leo + +00:10:02.160 --> 00:10:05.839 +um you know for hanging out all day um + +00:10:05.839 --> 00:10:08.240 +and helping with like you know juggling + +00:10:08.240 --> 00:10:09.120 +everything + +00:10:09.120 --> 00:10:11.360 +me for the most part I was just you know + +00:10:11.360 --> 00:10:12.959 +running the stream and making sure that + +00:10:12.959 --> 00:10:13.920 +I joined the + +00:10:13.920 --> 00:10:17.360 +the right room um but you know a lot of + +00:10:17.360 --> 00:10:18.640 +it was um + +00:10:18.640 --> 00:10:21.680 +sasha um and leo doing a lot of stuff + +00:10:21.680 --> 00:10:23.120 +behind the scenes you know doing quick + +00:10:23.120 --> 00:10:24.240 +tech checks with + +00:10:24.240 --> 00:10:27.360 +with the speakers to to make sure um you + +00:10:27.360 --> 00:10:27.680 +know + +00:10:27.680 --> 00:10:29.120 +things are generally working pretty + +00:10:29.120 --> 00:10:31.120 +smoothly and + +00:10:31.120 --> 00:10:34.160 +you know I'm happy to say that of course + +00:10:34.160 --> 00:10:37.279 +except for um leo's bad luck a little + +00:10:37.279 --> 00:10:37.839 +bit with + +00:10:37.839 --> 00:10:41.040 +with big blue button um we didn't really + +00:10:41.040 --> 00:10:42.399 +have any technical issue + +00:10:42.399 --> 00:10:44.160 +other technical issues this year um + +00:10:44.160 --> 00:10:46.480 +which is awesome compared to last year + +00:10:46.480 --> 00:10:49.360 +um yeah and leo I do look forward to + +00:10:49.360 --> 00:10:50.640 +those bug reports too + +00:10:50.640 --> 00:10:53.760 +people watching you can make sure I'll + +00:10:53.760 --> 00:10:56.480 +cc you into them so don't worry about it + +00:10:56.480 --> 00:11:00.560 +please do um yes so + +00:11:00.560 --> 00:11:03.040 +I'll say briefly I very much like to + +00:11:03.040 --> 00:11:04.480 +thank our speakers + +00:11:04.480 --> 00:11:08.720 +and um our participants um the audience + +00:11:08.720 --> 00:11:12.560 +for hanging out with us watching and + +00:11:12.560 --> 00:11:14.160 +you know just being a part of this + +00:11:14.160 --> 00:11:16.480 +making Emacs conf20 + +00:11:16.480 --> 00:11:18.160 +as awesome as it turned out as it's + +00:11:18.160 --> 00:11:19.920 +turned out to be and + +00:11:19.920 --> 00:11:22.160 +um I'm personally very much looking + +00:11:22.160 --> 00:11:24.160 +forward to an awesome tomorrow as well + +00:11:24.160 --> 00:11:27.360 +um and with that I'll basically speak + +00:11:27.360 --> 00:11:29.600 +less and pass it on to sasha and leo to + +00:11:29.600 --> 00:11:31.440 +conclude + +00:11:31.440 --> 00:11:33.040 +well you're just expecting us to have + +00:11:33.040 --> 00:11:34.770 +anything left to say after you + +00:11:34.770 --> 00:11:38.880 +[Laughter] + +00:11:38.880 --> 00:11:41.200 +but the fighter deals you're the lead + +00:11:41.200 --> 00:11:44.640 +organizer you get to have the last word + +00:11:44.640 --> 00:11:48.320 +most definitely yes + +00:11:48.320 --> 00:11:51.680 +come on um okay I mean + +00:11:51.680 --> 00:11:54.000 +if I start talking again if I start + +00:11:54.000 --> 00:11:55.200 +talking again + +00:11:55.200 --> 00:11:58.320 +also just ramp us right back up I have + +00:11:58.320 --> 00:12:00.079 +so much positive to say about this + +00:12:00.079 --> 00:12:02.160 +community um + +00:12:02.160 --> 00:12:04.000 +if I'm jumping back in again it's only + +00:12:04.000 --> 00:12:05.279 +to say thank you for + +00:12:05.279 --> 00:12:08.000 +uh running the show for closing the show + +00:12:08.000 --> 00:12:10.560 +for being in the show cheers + +00:12:10.560 --> 00:12:12.160 +absolutely I mean I couldn't say it + +00:12:12.160 --> 00:12:14.160 +better myself um + +00:12:14.160 --> 00:12:17.519 +yeah so on that great positive note we + +00:12:17.519 --> 00:12:19.839 +I guess we will conclude today and we'll + +00:12:19.839 --> 00:12:21.440 +catch you all at uh + +00:12:21.440 --> 00:12:24.880 +9am tomorrow by the way you can start + +00:12:24.880 --> 00:12:26.160 +placing beds to know which + +00:12:26.160 --> 00:12:30.560 +color my suit is going to be tomorrow + +00:12:30.560 --> 00:12:33.600 +sounds good bye alrighty + +00:12:33.600 --> 00:12:39.839 +bye guys bye diff --git a/2020/subtitles/emacsconf-2020--41-opening-remarks-autogen.vtt b/2020/subtitles/emacsconf-2020--41-opening-remarks-autogen.vtt new file mode 100644 index 00000000..8bbb4f17 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--41-opening-remarks-autogen.vtt @@ -0,0 +1,1036 @@ +WEBVTT + +00:00:09.360 --> 00:00:10.719 +so we can't hear you right now just to + +00:00:10.719 --> 00:00:11.280 +make sure + +00:00:11.280 --> 00:00:15.120 +no now we can hello + +00:00:15.120 --> 00:00:18.560 +hello morning good morning + +00:00:18.560 --> 00:00:21.680 +good morning all right so looks like + +00:00:21.680 --> 00:00:25.039 +um you can hear me let's see if the um + +00:00:25.039 --> 00:00:28.240 +stream can hear me can someone in Emacs + +00:00:28.240 --> 00:00:28.880 +con + +00:00:28.880 --> 00:00:32.000 +confirm that they can hear me as well + +00:00:32.000 --> 00:00:35.920 +yes awesome yep apparently they can + +00:00:35.920 --> 00:00:39.520 +awesome okay great um + +00:00:39.520 --> 00:00:42.399 +alrighty let's get started do you guys + +00:00:42.399 --> 00:00:42.719 +wanna + +00:00:42.719 --> 00:00:45.840 +go ahead with the opening sure + +00:00:45.840 --> 00:00:48.160 +sasha do you want to start okay hello + +00:00:48.160 --> 00:00:50.160 +and welcome to the second day of Emacs + +00:00:50.160 --> 00:00:51.920 +con 2020 + +00:00:51.920 --> 00:00:54.719 +and you could we've got a whole lot of + +00:00:54.719 --> 00:00:55.520 +uh + +00:00:55.520 --> 00:00:57.600 +of development talks and coding related + +00:00:57.600 --> 00:00:59.840 +talks scheduled for today so you can + +00:00:59.840 --> 00:01:02.160 +do a quick scan of the schedule again + +00:01:02.160 --> 00:01:04.559 +all the times are very approximate + +00:01:04.559 --> 00:01:07.200 +so if you happen to be earlier late for + +00:01:07.200 --> 00:01:08.320 +something that you wanted to + +00:01:08.320 --> 00:01:11.600 +see we'll figure it out uh we've got um + +00:01:11.600 --> 00:01:12.240 +we've got + +00:01:12.240 --> 00:01:14.560 +talks about the Emacs development itself + +00:01:14.560 --> 00:01:15.439 +as well as + +00:01:15.439 --> 00:01:18.799 +developing with Emacs uh and a couple of + +00:01:18.799 --> 00:01:19.439 +things that + +00:01:19.439 --> 00:01:21.200 +were more user talks but got moved to + +00:01:21.200 --> 00:01:22.960 +the second day for timing reasons + +00:01:22.960 --> 00:01:24.080 +because there's so much stuff on the + +00:01:24.080 --> 00:01:25.759 +first day + +00:01:25.759 --> 00:01:27.280 +that's uh that's our quick schedule + +00:01:27.280 --> 00:01:29.119 +overview the schedule page has more + +00:01:29.119 --> 00:01:31.680 +of course now how do you actually do all + +00:01:31.680 --> 00:01:32.479 +that uh + +00:01:32.479 --> 00:01:35.680 +leo you want to tell them yep so as + +00:01:35.680 --> 00:01:37.119 +yesterday if you want to participate + +00:01:37.119 --> 00:01:38.320 +well I suppose you're + +00:01:38.320 --> 00:01:40.159 +watching the stream right now so I won't + +00:01:40.159 --> 00:01:41.600 +go into detail as far as this is + +00:01:41.600 --> 00:01:42.399 +concerned + +00:01:42.399 --> 00:01:44.079 +but for the questions and for taking + +00:01:44.079 --> 00:01:46.000 +notes we are using an after pad + +00:01:46.000 --> 00:01:47.840 +where basically you just go onto the + +00:01:47.840 --> 00:01:49.360 +page and you add your questions + +00:01:49.360 --> 00:01:51.439 +under the topic which is being discussed + +00:01:51.439 --> 00:01:53.040 +at the moment so I'm sure the people + +00:01:53.040 --> 00:01:54.560 +will be putting the legs back in the + +00:01:54.560 --> 00:01:55.840 +chat I'm just going to do this real + +00:01:55.840 --> 00:01:57.280 +quick + +00:01:57.280 --> 00:02:00.880 +there we go so now it's in the chat sir + +00:02:00.880 --> 00:02:04.000 +we have on isc three rooms that you can + +00:02:04.000 --> 00:02:04.399 +use + +00:02:04.399 --> 00:02:05.840 +if you want to get in touch with us + +00:02:05.840 --> 00:02:07.439 +first if you want to discuss whatever is + +00:02:07.439 --> 00:02:08.959 +going on during this stream you can go + +00:02:08.959 --> 00:02:09.679 +on + +00:02:09.679 --> 00:02:12.560 +imax cont okay and that's where most of + +00:02:12.560 --> 00:02:13.760 +the discussion happens + +00:02:13.760 --> 00:02:16.319 +we also have #emacsconf-accessible + +00:02:16.319 --> 00:02:18.239 +for the people who either can't see or + +00:02:18.239 --> 00:02:19.920 +can't hear and you know they + +00:02:19.920 --> 00:02:21.520 +we have lovely volunteers who have been + +00:02:21.520 --> 00:02:22.720 +describing what has been going on + +00:02:22.720 --> 00:02:23.680 +yesterday + +00:02:23.680 --> 00:02:25.599 +uh and we really thank you for this + +00:02:25.599 --> 00:02:27.760 +because it's really great for getting + +00:02:27.760 --> 00:02:29.760 +you know more people giving the chance + +00:02:29.760 --> 00:02:31.120 +to more people to follow the conference + +00:02:31.120 --> 00:02:32.800 +so thank you so much for this + +00:02:32.800 --> 00:02:34.080 +and also if you want to get in touch + +00:02:34.080 --> 00:02:36.640 +with us the organizers either if you are + +00:02:36.640 --> 00:02:38.640 +a speaker or if you have anything that + +00:02:38.640 --> 00:02:40.319 +you'd like us to know about + +00:02:40.319 --> 00:02:42.400 +something like a streaming problem or + +00:02:42.400 --> 00:02:43.840 +audio problem or anything along those + +00:02:43.840 --> 00:02:45.599 +lines you know + +00:02:45.599 --> 00:02:46.959 +maybe other programs actually keep them + +00:02:46.959 --> 00:02:48.480 +in imax conf we are looking at both + +00:02:48.480 --> 00:02:49.280 +charts anyway + +00:02:49.280 --> 00:02:52.160 +but to get in touch Emacsconf that oh + +00:02:52.160 --> 00:02:52.560 +sorry + +00:02:52.560 --> 00:02:56.480 +dash.org and also we had I don't believe + +00:02:56.480 --> 00:02:57.120 +we have + +00:02:57.120 --> 00:02:58.720 +we had all that much of this yesterday + +00:02:58.720 --> 00:03:00.560 +but if you would like to continue the + +00:03:00.560 --> 00:03:01.680 +discussion + +00:03:01.680 --> 00:03:03.920 +with some of the speakers like you had a + +00:03:03.920 --> 00:03:05.360 +topic that you really liked and you'd + +00:03:05.360 --> 00:03:07.120 +like to continue talking with them + +00:03:07.120 --> 00:03:10.159 +well we invite you to go on jitsi and to + +00:03:10.159 --> 00:03:11.120 +create a room + +00:03:11.120 --> 00:03:13.040 +uh all together and to have a direct + +00:03:13.040 --> 00:03:15.280 +direct chat with the speaker + +00:03:15.280 --> 00:03:17.280 +or whichever people might be interested + +00:03:17.280 --> 00:03:18.560 +in the topic as well + +00:03:18.560 --> 00:03:20.640 +okay I believe that's me I'm not sure to + +00:03:20.640 --> 00:03:21.760 +whom I'm handing + +00:03:21.760 --> 00:03:23.360 +the rest of the presentation is it to + +00:03:23.360 --> 00:03:26.080 +you I mean um yeah sure I can take it + +00:03:26.080 --> 00:03:29.760 +um all right so hello everyone welcome + +00:03:29.760 --> 00:03:32.480 +to the second day of ux comp 2020 um + +00:03:32.480 --> 00:03:33.840 +thank you for being here + +00:03:33.840 --> 00:03:35.360 +today and for those of you who were + +00:03:35.360 --> 00:03:36.799 +around yesterday thank you for being + +00:03:36.799 --> 00:03:38.239 +around yesterday as well + +00:03:38.239 --> 00:03:40.959 +um it was an awesome day and you know + +00:03:40.959 --> 00:03:42.400 +like leo and sasha said + +00:03:42.400 --> 00:03:44.400 +today I think is also very much gonna be + +00:03:44.400 --> 00:03:46.560 +another awesome day of great talks + +00:03:46.560 --> 00:03:49.040 +um yeah so I'm very much looking forward + +00:03:49.040 --> 00:03:49.760 +to it + +00:03:49.760 --> 00:03:53.040 +um so yeah the schedule is up um + +00:03:53.040 --> 00:03:56.560 +at emacsconf.org/2020/schedule you + +00:03:56.560 --> 00:03:57.760 +gotta scroll down + +00:03:57.760 --> 00:04:00.959 +to the second day uh let's see people + +00:04:00.959 --> 00:04:02.640 +tell me that my mic is quiet + +00:04:02.640 --> 00:04:05.840 +um I guess I can on the stream + +00:04:05.840 --> 00:04:09.120 +um I think so yeah let me double check + +00:04:09.120 --> 00:04:09.599 +this + +00:04:09.599 --> 00:04:12.720 +real quick okay I can also try + +00:04:12.720 --> 00:04:14.959 +um like increasing the volume here a + +00:04:14.959 --> 00:04:17.919 +little bit + +00:04:17.919 --> 00:04:20.000 +okay it doesn't sound all that quiet to + +00:04:20.000 --> 00:04:21.440 +me just because we are + +00:04:21.440 --> 00:04:23.840 +I'm being very familiar right now so the + +00:04:23.840 --> 00:04:24.479 +volume + +00:04:24.479 --> 00:04:27.360 +must be quite high compared to you no + +00:04:27.360 --> 00:04:28.479 +yeah it's it's fine um + +00:04:28.479 --> 00:04:32.240 +okay I think it's better now um anyways + +00:04:32.240 --> 00:04:35.919 +let's see awesome yeah so yesterday + +00:04:35.919 --> 00:04:38.479 +um you know so the setup that I'm using + +00:04:38.479 --> 00:04:40.800 +this year for streaming the desktop + +00:04:40.800 --> 00:04:44.400 +and the talks is that I use the um + +00:04:44.400 --> 00:04:47.919 +script a a script by the fsf forks which + +00:04:47.919 --> 00:04:52.000 +they also used for liquor planet + +00:04:52.000 --> 00:04:54.400 +and so the thing with this script is + +00:04:54.400 --> 00:04:56.240 +that it only takes one audio source by + +00:04:56.240 --> 00:04:57.040 +default + +00:04:57.040 --> 00:04:59.120 +and so I have that set to the desktop + +00:04:59.120 --> 00:05:01.520 +audio so yesterday on the spot I had to + +00:05:01.520 --> 00:05:03.440 +improvise to how to get my own audio on + +00:05:03.440 --> 00:05:05.199 +the stream and I used mumbo + +00:05:05.199 --> 00:05:06.880 +but then that added a delay which was + +00:05:06.880 --> 00:05:08.720 +pretty annoying um + +00:05:08.720 --> 00:05:10.720 +but today this morning I figured I could + +00:05:10.720 --> 00:05:13.120 +use pulse audio's um monitor system to + +00:05:13.120 --> 00:05:14.240 +add myself + +00:05:14.240 --> 00:05:17.039 +um right on this machine um so that the + +00:05:17.039 --> 00:05:18.479 +delay is shorter and + +00:05:18.479 --> 00:05:19.840 +seems to be working well so I'm very + +00:05:19.840 --> 00:05:21.759 +happy about that um + +00:05:21.759 --> 00:05:24.080 +but anyways yeah so let's get on we have + +00:05:24.080 --> 00:05:24.960 +the schedule + +00:05:24.960 --> 00:05:26.880 +um I'm thanking again the free software + +00:05:26.880 --> 00:05:28.479 +foundation tech team + +00:05:28.479 --> 00:05:31.680 +um for um you know + +00:05:31.680 --> 00:05:33.600 +uh allowing us to use this very big + +00:05:33.600 --> 00:05:35.280 +button uh instance + +00:05:35.280 --> 00:05:38.720 +um that uh you know for live talks um + +00:05:38.720 --> 00:05:41.039 +let's see um I'd like to thank all the + +00:05:41.039 --> 00:05:42.240 +volunteers once again + +00:05:42.240 --> 00:05:45.680 +um you know uh bavin david bremner + +00:05:45.680 --> 00:05:48.240 +david dave o'toole who's been specially + +00:05:48.240 --> 00:05:49.280 +helping out a lot + +00:05:49.280 --> 00:05:51.360 +in the e-max imax conf dash accessible + +00:05:51.360 --> 00:05:53.120 +channel with describing what's going on + +00:05:53.120 --> 00:05:54.800 +at any given moment + +00:05:54.800 --> 00:05:58.000 +um of course corwin + +00:05:58.000 --> 00:06:01.039 +carl boyd and um the two folks that + +00:06:01.039 --> 00:06:02.639 +you're seeing right beside me right now + +00:06:02.639 --> 00:06:04.080 +uh leon sasha + +00:06:04.080 --> 00:06:06.479 +who's been doing so much this year um + +00:06:06.479 --> 00:06:08.240 +thank you all very much + +00:06:08.240 --> 00:06:12.479 +um yeah let's see oh and also of course + +00:06:12.479 --> 00:06:15.440 +our wonderful speakers and audience um + +00:06:15.440 --> 00:06:15.840 +which + +00:06:15.840 --> 00:06:18.000 +are basically the main thing that this + +00:06:18.000 --> 00:06:18.880 +conference + +00:06:18.880 --> 00:06:21.199 +is about and is centered about us people + +00:06:21.199 --> 00:06:23.280 +talking about their experiences + +00:06:23.280 --> 00:06:25.360 +um sharing the things they've learned or + +00:06:25.360 --> 00:06:26.880 +they find interesting and + +00:06:26.880 --> 00:06:29.840 +for everyone to discussing in chat um + +00:06:29.840 --> 00:06:31.440 +yeah so it's awesome + +00:06:31.440 --> 00:06:33.759 +uh if you scroll down a little bit on + +00:06:33.759 --> 00:06:34.880 +the page + +00:06:34.880 --> 00:06:37.600 +um I just want to plug the mailing list + +00:06:37.600 --> 00:06:38.319 +right + +00:06:38.319 --> 00:06:40.639 +yeah so we have the emacsconf-discuss + +00:06:40.639 --> 00:06:41.919 +mailing list + +00:06:41.919 --> 00:06:45.039 +once again um which you know is + +00:06:45.039 --> 00:06:47.600 +we use for discussions around the + +00:06:47.600 --> 00:06:48.240 +conference + +00:06:48.240 --> 00:06:51.039 +including announcements before and after + +00:06:51.039 --> 00:06:52.479 +it's a fairly quiet list + +00:06:52.479 --> 00:06:55.520 +um so if you do like to subscribe um you + +00:06:55.520 --> 00:06:55.840 +know + +00:06:55.840 --> 00:06:57.199 +you won't get bombarded with emails + +00:06:57.199 --> 00:06:59.440 +really um + +00:06:59.440 --> 00:07:01.759 +uh yeah so that's something to consider + +00:07:01.759 --> 00:07:02.880 +um for example you know + +00:07:02.880 --> 00:07:04.639 +after the conference we're gonna be + +00:07:04.639 --> 00:07:06.240 +posting all the videos + +00:07:06.240 --> 00:07:07.759 +and um that's where I'm gonna be + +00:07:07.759 --> 00:07:09.440 +announcing it um at least + +00:07:09.440 --> 00:07:12.880 +in in one place one of the places um + +00:07:12.880 --> 00:07:15.680 +yeah and I'd also like to draw attention + +00:07:15.680 --> 00:07:16.720 +to our + +00:07:16.720 --> 00:07:19.360 +conduct guidelines at emacsconf.org + +00:07:19.360 --> 00:07:21.199 +conduct + +00:07:21.199 --> 00:07:23.120 +which is a series of guidelines and + +00:07:23.120 --> 00:07:25.599 +suggestions to to help make the event + +00:07:25.599 --> 00:07:28.800 +you know enjoyable and um you know an + +00:07:28.800 --> 00:07:30.000 +awesome experience for everyone + +00:07:30.000 --> 00:07:33.280 +involved um I think um so I wasn't + +00:07:33.280 --> 00:07:34.639 +keeping a close eye on the chat + +00:07:34.639 --> 00:07:36.160 +yesterday because it was super busy but + +00:07:36.160 --> 00:07:36.880 +I think + +00:07:36.880 --> 00:07:38.479 +uh in general you know everything was + +00:07:38.479 --> 00:07:40.240 +going pretty well pretty smoothly + +00:07:40.240 --> 00:07:42.319 +um so thank you so much everyone for + +00:07:42.319 --> 00:07:44.319 +keeping these in mind + +00:07:44.319 --> 00:07:46.879 +and um yeah that's it for me let's see + +00:07:46.879 --> 00:07:48.479 +if lee or sasha would like to add + +00:07:48.479 --> 00:07:51.520 +anything + +00:07:51.520 --> 00:07:52.879 +no but if you're all good to go you've + +00:07:52.879 --> 00:07:54.319 +said everything and we've said + +00:07:54.319 --> 00:07:55.680 +everything + +00:07:55.680 --> 00:07:59.120 +have a great day awesome yeah um + +00:07:59.120 --> 00:08:02.000 +uh okay someone okay so dave is asking + +00:08:02.000 --> 00:08:03.280 +what is the hallway track + +00:08:03.280 --> 00:08:06.319 +uh slash on conference um do either of + +00:08:06.319 --> 00:08:07.520 +you want to explain that or should I + +00:08:07.520 --> 00:08:08.160 +take it + +00:08:08.160 --> 00:08:10.080 +uh basically we're gonna have our hands + +00:08:10.080 --> 00:08:12.400 +full keeping the keeping the main track + +00:08:12.400 --> 00:08:14.080 +running but of course + +00:08:14.080 --> 00:08:15.360 +people have all sorts of interesting + +00:08:15.360 --> 00:08:17.280 +conversation ideas and sometimes it's + +00:08:17.280 --> 00:08:18.879 +nice to do it in real time or with + +00:08:18.879 --> 00:08:20.960 +shared screens or things like that + +00:08:20.960 --> 00:08:23.360 +so if you're having a conversation and + +00:08:23.360 --> 00:08:24.639 +you want to have + +00:08:24.639 --> 00:08:28.000 +more of a webcam or screen sharing thing + +00:08:28.000 --> 00:08:31.039 +to enrich that discussion feel free to + +00:08:31.039 --> 00:08:32.800 +set up a web conference using any of + +00:08:32.800 --> 00:08:35.360 +your okay + +00:08:35.360 --> 00:08:36.880 +can you do time in practice later all + +00:08:36.880 --> 00:08:38.880 +right feel free to + +00:08:38.880 --> 00:08:41.760 +set up your own conference c type web + +00:08:41.760 --> 00:08:43.120 +conference thingy + +00:08:43.120 --> 00:08:46.080 +and um and go find the people who are + +00:08:46.080 --> 00:08:47.279 +interested in the same thing + +00:08:47.279 --> 00:08:49.839 +and I'll do all that stuff right + +00:08:49.839 --> 00:08:50.480 +absolutely + +00:08:50.480 --> 00:08:53.120 +thanks sasha yeah so basically the idea + +00:08:53.120 --> 00:08:53.760 +is that + +00:08:53.760 --> 00:08:55.360 +so you know because of the limited time + +00:08:55.360 --> 00:08:58.080 +we kind of have to um keep moving along + +00:08:58.080 --> 00:09:00.720 +uh from one talk to the next and you + +00:09:00.720 --> 00:09:02.240 +know sometimes there's a lot of awesome + +00:09:02.240 --> 00:09:04.080 +questions or discussions going on + +00:09:04.080 --> 00:09:05.760 +from for example you know in Emacs con + +00:09:05.760 --> 00:09:08.240 +for like for the questions on the pad + +00:09:08.240 --> 00:09:11.440 +um yeah so the I guess hallway track or + +00:09:11.440 --> 00:09:12.160 +unconference + +00:09:12.160 --> 00:09:15.360 +is basically a suggestion for those who + +00:09:15.360 --> 00:09:16.160 +are interested + +00:09:16.160 --> 00:09:19.120 +to for example set up a jutsu meet room + +00:09:19.120 --> 00:09:21.120 +and then you know I'll go join there + +00:09:21.120 --> 00:09:23.519 +and discuss the talk if you know if the + +00:09:23.519 --> 00:09:25.279 +speaker can join after their talk + +00:09:25.279 --> 00:09:26.240 +wonderful + +00:09:26.240 --> 00:09:29.519 +um but if not even um you know if if + +00:09:29.519 --> 00:09:31.519 +only like you know the audience and + +00:09:31.519 --> 00:09:34.000 +folks you know from the emax campfire c + +00:09:34.000 --> 00:09:35.760 +would like to join and discuss that + +00:09:35.760 --> 00:09:37.279 +definitely works too + +00:09:37.279 --> 00:09:40.320 +um yeah that's it um + +00:09:40.320 --> 00:09:42.000 +I think oh one other thing that we I + +00:09:42.000 --> 00:09:44.560 +guess wanted to mention possibly is that + +00:09:44.560 --> 00:09:46.560 +um yesterday I think I noticed that a + +00:09:46.560 --> 00:09:48.640 +lot of the questions were getting added + +00:09:48.640 --> 00:09:52.240 +um like top to bottom on the pad but um + +00:09:52.240 --> 00:09:54.560 +I think the suggestion is to put them + +00:09:54.560 --> 00:09:56.000 +like stack them up so like + +00:09:56.000 --> 00:09:58.000 +um add new at the new questions on the + +00:09:58.000 --> 00:09:59.360 +top um + +00:09:59.360 --> 00:10:01.600 +that might make it easier both for you + +00:10:01.600 --> 00:10:03.120 +know the people + +00:10:03.120 --> 00:10:05.760 +to who are typing the questions um but + +00:10:05.760 --> 00:10:07.120 +also for the speaker to + +00:10:07.120 --> 00:10:09.519 +sort of have a fixed I guess um point + +00:10:09.519 --> 00:10:10.720 +where they're looking at for new + +00:10:10.720 --> 00:10:11.760 +questions + +00:10:11.760 --> 00:10:13.839 +um so don't put your questions under + +00:10:13.839 --> 00:10:15.200 +somebody else's question + +00:10:15.200 --> 00:10:17.760 +put it at that top level sort of you + +00:10:17.760 --> 00:10:18.640 +know thing + +00:10:18.640 --> 00:10:21.519 +right get your own bullet points yeah + +00:10:21.519 --> 00:10:23.040 +and on the same topic yesterday some + +00:10:23.040 --> 00:10:24.480 +people were a little scared + +00:10:24.480 --> 00:10:26.959 +when all the colors were removed it was + +00:10:26.959 --> 00:10:27.839 +me basically + +00:10:27.839 --> 00:10:29.839 +in order to help the speakers know which + +00:10:29.839 --> 00:10:31.680 +is the section that should be looking at + +00:10:31.680 --> 00:10:33.680 +at the start of every presentation what + +00:10:33.680 --> 00:10:35.200 +I will do is that I will wipe all the + +00:10:35.200 --> 00:10:35.760 +colors + +00:10:35.760 --> 00:10:38.480 +so all the attributions of modifications + +00:10:38.480 --> 00:10:39.360 +to authors + +00:10:39.360 --> 00:10:41.600 +so that the streamer sorry the speaker + +00:10:41.600 --> 00:10:43.200 +has a little easier time finding their + +00:10:43.200 --> 00:10:44.480 +talk in the list + +00:10:44.480 --> 00:10:47.200 +right yeah so yeah for for speakers just + +00:10:47.200 --> 00:10:48.560 +keep scrolling down until you hit a + +00:10:48.560 --> 00:10:49.360 +colorful + +00:10:49.360 --> 00:10:52.079 +colorful section um with the author + +00:10:52.079 --> 00:10:52.640 +colors + +00:10:52.640 --> 00:10:55.600 +and um yeah double check that um that's + +00:10:55.600 --> 00:10:57.200 +you know it is your talk + +00:10:57.200 --> 00:11:00.560 +um yeah with that said I think that's + +00:11:00.560 --> 00:11:04.240 +all of it for our opening remarks right + +00:11:04.240 --> 00:11:07.760 +um okay awesome so in that case + +00:11:07.760 --> 00:11:12.320 +um we will start queuing up the talks + +00:11:12.320 --> 00:11:14.560 +next up right after this opening remark + +00:11:14.560 --> 00:11:16.959 +we have Emacs development updates by + +00:11:16.959 --> 00:11:18.880 +um one of the co-maintainers of Emacs + +00:11:18.880 --> 00:11:20.240 +john weekley + +00:11:20.240 --> 00:11:24.320 +um it is a pre-recording and um + +00:11:24.320 --> 00:11:27.519 +I don't think john is awake yet because + +00:11:27.519 --> 00:11:28.399 +of right he's + +00:11:28.399 --> 00:11:31.279 +probably uh still asleep but um he will + +00:11:31.279 --> 00:11:31.839 +be + +00:11:31.839 --> 00:11:33.920 +um looking taking a look at the + +00:11:33.920 --> 00:11:35.120 +questions on the pad + +00:11:35.120 --> 00:11:38.160 +later on um so yeah please keep posting + +00:11:38.160 --> 00:11:40.160 +your questions on the path for him to + +00:11:40.160 --> 00:11:43.279 +later look and try to answer awesome + +00:11:43.279 --> 00:11:48.800 +so see you guys in a bit diff --git a/2020/subtitles/emacsconf-2020--42-closing-remarks-autogen.vtt b/2020/subtitles/emacsconf-2020--42-closing-remarks-autogen.vtt new file mode 100644 index 00000000..db71c0cc --- /dev/null +++ b/2020/subtitles/emacsconf-2020--42-closing-remarks-autogen.vtt @@ -0,0 +1,2905 @@ +WEBVTT + +00:00:02.240 --> 00:00:03.120 +all right + +00:00:03.120 --> 00:00:05.359 +in the meantime while waiting for corwin + +00:00:05.359 --> 00:00:06.399 +wow we did it + +00:00:06.399 --> 00:00:09.599 +look at that + +00:00:09.599 --> 00:00:12.799 +yeah it's I mean who would have thought + +00:00:12.799 --> 00:00:14.960 +right + +00:00:14.960 --> 00:00:17.279 +I mean I I surely didn't when we started + +00:00:17.279 --> 00:00:18.640 +no knowing how + +00:00:18.640 --> 00:00:20.560 +exhausted I was at the end of the first + +00:00:20.560 --> 00:00:22.000 +day I would have imagined + +00:00:22.000 --> 00:00:24.480 +to survive the second day of more of + +00:00:24.480 --> 00:00:29.279 +this same nonsense + +00:00:29.279 --> 00:00:32.320 +um yeah it's it's been fun + +00:00:32.320 --> 00:00:35.200 +it's been a lot of work um especially + +00:00:35.200 --> 00:00:36.880 +for you and sasha + +00:00:36.880 --> 00:00:39.680 +but um you know it's it's incredible I'm + +00:00:39.680 --> 00:00:41.040 +I'm very happy + +00:00:41.040 --> 00:00:43.520 +that um you know we managed to pull + +00:00:43.520 --> 00:00:44.399 +through + +00:00:44.399 --> 00:00:46.960 +um you know for two days straight not + +00:00:46.960 --> 00:00:48.800 +one day + +00:00:48.800 --> 00:00:52.320 +yeah well hey we did try + +00:00:52.320 --> 00:00:54.000 +well we actually did manage to accept + +00:00:54.000 --> 00:00:55.360 +all the top proposals + +00:00:55.360 --> 00:00:57.360 +so if you're thinking oh I could I could + +00:00:57.360 --> 00:00:59.039 +give an even better talk than the ones I + +00:00:59.039 --> 00:00:59.840 +heard today + +00:00:59.840 --> 00:01:01.680 +or yesterday please send us a talk + +00:01:01.680 --> 00:01:03.440 +proposal for next year + +00:01:03.440 --> 00:01:04.960 +we might be able to fit it's all in but + +00:01:04.960 --> 00:01:06.720 +we might have to declare an Emacs week I + +00:01:06.720 --> 00:01:09.840 +don't know + +00:01:09.840 --> 00:01:12.799 +yeah absolutely yeah it's it's funny + +00:01:12.799 --> 00:01:13.200 +like + +00:01:13.200 --> 00:01:15.360 +um I remember a little bit last year but + +00:01:15.360 --> 00:01:16.880 +also this year we kind of + +00:01:16.880 --> 00:01:19.439 +we're trying to set up um I guess sort + +00:01:19.439 --> 00:01:20.960 +of a procedure for + +00:01:20.960 --> 00:01:23.200 +accepting and rejecting talks but then + +00:01:23.200 --> 00:01:24.720 +you know we have got the actual + +00:01:24.720 --> 00:01:27.680 +submissions and oh my god so much + +00:01:27.680 --> 00:01:28.880 +awesome stuff + +00:01:28.880 --> 00:01:30.799 +um I mean I definitely wouldn't have + +00:01:30.799 --> 00:01:33.360 +been a movie + +00:01:33.360 --> 00:01:35.360 +how can you say not anything it's emad + +00:01:35.360 --> 00:01:36.720 +so you just throw it all in + +00:01:36.720 --> 00:01:38.159 +including the kitchen sink and then + +00:01:38.159 --> 00:01:40.640 +we'll sort it all out later + +00:01:40.640 --> 00:01:42.720 +so if you went through all this the + +00:01:42.720 --> 00:01:44.240 +entire conference and you missed some + +00:01:44.240 --> 00:01:46.079 +interesting talks because a we started + +00:01:46.079 --> 00:01:46.640 +early + +00:01:46.640 --> 00:01:48.240 +because you're very excited and didn't + +00:01:48.240 --> 00:01:50.399 +need the technical you know buffer time + +00:01:50.399 --> 00:01:53.119 +uh or b you really had to step away at + +00:01:53.119 --> 00:01:54.159 +some point so you must + +00:01:54.159 --> 00:01:55.840 +talk you really wanted to recordings + +00:01:55.840 --> 00:01:58.960 +will eventually be available + +00:01:58.960 --> 00:02:02.320 +yes absolutely um yeah I know + +00:02:02.320 --> 00:02:05.360 +so many people asked in the chat um you + +00:02:05.360 --> 00:02:06.000 +know + +00:02:06.000 --> 00:02:08.000 +is did I already miss the stock or are + +00:02:08.000 --> 00:02:09.200 +the pre-recordings up + +00:02:09.200 --> 00:02:12.319 +um yeah so they're not up yet but + +00:02:12.319 --> 00:02:15.280 +um you know especially with the + +00:02:15.280 --> 00:02:16.400 +pre-recordings that + +00:02:16.400 --> 00:02:18.560 +those are basically um ready to be + +00:02:18.560 --> 00:02:19.920 +uploaded so + +00:02:19.920 --> 00:02:22.879 +you know right after we finish this talk + +00:02:22.879 --> 00:02:23.760 +um + +00:02:23.760 --> 00:02:26.879 +I'm going to um start uploading them + +00:02:26.879 --> 00:02:29.599 +um because you know those are just ready + +00:02:29.599 --> 00:02:30.480 +we have them + +00:02:30.480 --> 00:02:32.720 +and then for the ones that were only + +00:02:32.720 --> 00:02:33.519 +live + +00:02:33.519 --> 00:02:36.879 +also as well as the live q a sessions um + +00:02:36.879 --> 00:02:40.080 +we will try to process them + +00:02:40.080 --> 00:02:43.440 +and get those up as well yes after + +00:02:43.440 --> 00:02:45.680 +you've had some sleep + +00:02:45.680 --> 00:02:49.040 +yeah after after some rest um + +00:02:49.040 --> 00:02:51.920 +yeah and I'm I'm just with us oh there + +00:02:51.920 --> 00:02:55.040 +you go hey corbin + +00:02:55.040 --> 00:02:57.280 +um yeah I don't think we have your sound + +00:02:57.280 --> 00:02:58.959 +yet so double check that + +00:02:58.959 --> 00:03:03.440 +but um hi how about now yes + +00:03:03.440 --> 00:03:05.920 +um yeah I'm just seeing the chatbot go + +00:03:05.920 --> 00:03:07.360 +by an EmacsConf and + +00:03:07.360 --> 00:03:09.360 +everyone is being so nice um it's just + +00:03:09.360 --> 00:03:12.239 +making me smile + +00:03:12.239 --> 00:03:14.159 +okay people want a question section so + +00:03:14.159 --> 00:03:15.360 +I'm gonna add a question + +00:03:15.360 --> 00:03:17.599 +thing and people can throw in their + +00:03:17.599 --> 00:03:18.720 +questions + +00:03:18.720 --> 00:03:22.159 +somewhere just telling you if you want + +00:03:22.159 --> 00:03:23.840 +three Emacs conference per year the + +00:03:23.840 --> 00:03:26.159 +answer is no judging by the amount of + +00:03:26.159 --> 00:03:28.159 +stress that we've accrued all together + +00:03:28.159 --> 00:03:28.959 +today + +00:03:28.959 --> 00:03:30.799 +we are not ready to do this three times + +00:03:30.799 --> 00:03:32.640 +every year the answer is + +00:03:32.640 --> 00:03:34.480 +you're welcome to organize it and we'll + +00:03:34.480 --> 00:03:36.000 +happily share our notes + +00:03:36.000 --> 00:03:38.159 +um and I will take a mention of it in my + +00:03:38.159 --> 00:03:39.040 +Emacs news + +00:03:39.040 --> 00:03:41.200 +so please feel free to go ahead and put + +00:03:41.200 --> 00:03:43.920 +things together yourselves + +00:03:43.920 --> 00:03:46.959 +yeah absolutely um you know for me I + +00:03:46.959 --> 00:03:48.400 +think once a year is + +00:03:48.400 --> 00:03:51.680 +quite enough but um if + +00:03:51.680 --> 00:03:55.040 +go ahead oh however if I if today leaves + +00:03:55.040 --> 00:03:56.080 +you wanting more + +00:03:56.080 --> 00:03:58.720 +there are emax meetups and I think there + +00:03:58.720 --> 00:04:00.000 +are a couple of a + +00:04:00.000 --> 00:04:02.239 +couple of them coming up in december so + +00:04:02.239 --> 00:04:04.319 +if you check back in my talk + +00:04:04.319 --> 00:04:06.560 +for Emacs news highlights I've linked to + +00:04:06.560 --> 00:04:08.080 +a couple that are coming up in the next + +00:04:08.080 --> 00:04:09.760 +couple of weeks + +00:04:09.760 --> 00:04:12.000 +nice yeah and I think zakariya mentioned + +00:04:12.000 --> 00:04:12.959 +that um + +00:04:12.959 --> 00:04:15.920 +he's either participating or he runs or + +00:04:15.920 --> 00:04:17.840 +is one of the people that runs the Emacs + +00:04:17.840 --> 00:04:19.120 +nyc meetup + +00:04:19.120 --> 00:04:22.079 +um yeah so definitely check that out and + +00:04:22.079 --> 00:04:23.759 +you know all the other ones that may be + +00:04:23.759 --> 00:04:24.639 +out there + +00:04:24.639 --> 00:04:29.120 +um yeah for sure uh + +00:04:29.120 --> 00:04:32.160 +yeah so so I'll jump in on there + +00:04:32.160 --> 00:04:34.720 +on that point too I I have a lot of + +00:04:34.720 --> 00:04:36.000 +energy for + +00:04:36.000 --> 00:04:39.840 +um for helping people get together um + +00:04:39.840 --> 00:04:43.440 +adam uh uh from melpa + +00:04:43.440 --> 00:04:46.880 +suggested uh I should do some twitch + +00:04:46.880 --> 00:04:48.880 +stuff I'll probably try that I have put + +00:04:48.880 --> 00:04:50.320 +a couple things out there and even a few + +00:04:50.320 --> 00:04:51.360 +people came by + +00:04:51.360 --> 00:04:53.919 +so I I think I would agree the interest + +00:04:53.919 --> 00:04:54.840 +is there + +00:04:54.840 --> 00:04:57.600 +and I definitely would love to spend + +00:04:57.600 --> 00:04:59.120 +that time talking to people that want to + +00:04:59.120 --> 00:05:00.000 +organize + +00:05:00.000 --> 00:05:01.759 +as well as people that are interested in + +00:05:01.759 --> 00:05:04.160 +just learning to use Emacs as an editor + +00:05:04.160 --> 00:05:07.120 +I think it's um I think it's a fantastic + +00:05:07.120 --> 00:05:08.880 +journey speaking for myself as somebody + +00:05:08.880 --> 00:05:10.560 +that um I don't + +00:05:10.560 --> 00:05:12.080 +always have the right keystrokes right + +00:05:12.080 --> 00:05:13.759 +at hand sometimes yeah + +00:05:13.759 --> 00:05:16.160 +my mentor in in computer programming is + +00:05:16.160 --> 00:05:17.840 +david dyer bennett and + +00:05:17.840 --> 00:05:21.440 +um I started uh apprenticing with him + +00:05:21.440 --> 00:05:24.800 +as when he was a freelancer um + +00:05:24.800 --> 00:05:28.160 +many decades ago now and + +00:05:28.160 --> 00:05:31.919 +you know he has a mantra that is uh + +00:05:31.919 --> 00:05:33.440 +you know I can do that in about five + +00:05:33.440 --> 00:05:35.280 +minutes if it's + +00:05:35.280 --> 00:05:37.840 +the right five minutes and and that's + +00:05:37.840 --> 00:05:39.919 +kind of the story of my life + +00:05:39.919 --> 00:05:43.360 +um and Emacs is just a tool to + +00:05:43.360 --> 00:05:45.759 +get the right five minutes more often no + +00:05:45.759 --> 00:05:46.560 +matter + +00:05:46.560 --> 00:05:48.720 +you know how can how cooperative the + +00:05:48.720 --> 00:05:49.600 +fingers are + +00:05:49.600 --> 00:05:52.400 +or or whether the ideas are free-flowing + +00:05:52.400 --> 00:05:52.800 +you know + +00:05:52.800 --> 00:05:55.680 +and getting that right environment is a + +00:05:55.680 --> 00:05:56.800 +lot of things for a lot of different + +00:05:56.800 --> 00:05:58.720 +people a lot of things to us on a + +00:05:58.720 --> 00:06:00.639 +different day + +00:06:00.639 --> 00:06:04.080 +um so yeah I have a ton of energy + +00:06:04.080 --> 00:06:08.400 +around you know hey let's talk more + +00:06:08.400 --> 00:06:11.919 +absolutely um yes so + +00:06:11.919 --> 00:06:14.560 +you know I think we are everyone's + +00:06:14.560 --> 00:06:15.600 +pretty energetic + +00:06:15.600 --> 00:06:18.080 +oh before I forget I know I will forget + +00:06:18.080 --> 00:06:18.639 +um + +00:06:18.639 --> 00:06:20.800 +to speakers uh those of you who are + +00:06:20.800 --> 00:06:22.400 +still watching right now + +00:06:22.400 --> 00:06:24.720 +um I would very much appreciate it if + +00:06:24.720 --> 00:06:26.240 +you could send us you know + +00:06:26.240 --> 00:06:27.520 +any of the materials you know for + +00:06:27.520 --> 00:06:29.919 +example the slides or any links and + +00:06:29.919 --> 00:06:31.600 +resources to us + +00:06:31.600 --> 00:06:34.880 +so we could add them to to the + +00:06:34.880 --> 00:06:38.880 +EmacsConf wiki + +00:06:38.880 --> 00:06:41.840 +or you can add them directly yourself if + +00:06:41.840 --> 00:06:43.759 +you go to Emacsconf.org + +00:06:43.759 --> 00:06:46.400 +edit there's instructions for basically + +00:06:46.400 --> 00:06:47.120 +anyone + +00:06:47.120 --> 00:06:50.800 +to edit the wiki if they like to um + +00:06:50.800 --> 00:06:54.000 +yes so now uh back to getting + +00:06:54.000 --> 00:06:57.039 +uh getting back to corwin's point um and + +00:06:57.039 --> 00:06:58.800 +also what sasha mentioned + +00:06:58.800 --> 00:07:01.520 +so um you know maybe one EmacsConf + +00:07:01.520 --> 00:07:02.800 +might be enough + +00:07:02.800 --> 00:07:06.319 +um for us for one year or for me but + +00:07:06.319 --> 00:07:09.840 +um in terms of Emacs related events + +00:07:09.840 --> 00:07:14.160 +um so this this conference was + +00:07:14.160 --> 00:07:17.360 +uh is like you know mainly about Emacs + +00:07:17.360 --> 00:07:20.960 +um but it's also in my opinion a + +00:07:20.960 --> 00:07:22.319 +showcase of + +00:07:22.319 --> 00:07:24.160 +um just how much you can do with free + +00:07:24.160 --> 00:07:27.440 +software Emacs itself is free software + +00:07:27.440 --> 00:07:30.800 +but um also all the tools that we used + +00:07:30.800 --> 00:07:34.400 +um these two days for like uh streaming + +00:07:34.400 --> 00:07:37.759 +for you know playing back to videos um + +00:07:37.759 --> 00:07:39.840 +yeah it's all free software and anyone + +00:07:39.840 --> 00:07:41.440 +can use and improve them + +00:07:41.440 --> 00:07:43.840 +so um one thing that I wanted to put out + +00:07:43.840 --> 00:07:45.440 +there before I forget + +00:07:45.440 --> 00:07:48.960 +is that um so we have these couple of + +00:07:48.960 --> 00:07:50.000 +servers set up + +00:07:50.000 --> 00:07:52.960 +for streaming for imax conf and I would + +00:07:52.960 --> 00:07:54.639 +be very much happy to + +00:07:54.639 --> 00:07:59.039 +um help any other group basically + +00:07:59.039 --> 00:08:00.319 +you know look into using our + +00:08:00.319 --> 00:08:03.199 +infrastructure for + +00:08:03.199 --> 00:08:06.720 +doing their own live event using only + +00:08:06.720 --> 00:08:09.360 +free software so if you are interested + +00:08:09.360 --> 00:08:10.080 +in that + +00:08:10.080 --> 00:08:12.639 +please feel free to ping me either in + +00:08:12.639 --> 00:08:14.879 +the max conf channel on freenode + +00:08:14.879 --> 00:08:17.840 +um where my nick is bandali or just + +00:08:17.840 --> 00:08:18.720 +email me at + +00:08:18.720 --> 00:08:21.440 +bandeli gnu.org um I would be happy to + +00:08:21.440 --> 00:08:22.800 +help you with that + +00:08:22.800 --> 00:08:29.199 +um yeah I'll defer to others + +00:08:29.199 --> 00:08:31.440 +we'll jump in and jump in there george I + +00:08:31.440 --> 00:08:34.080 +mean + +00:08:34.080 --> 00:08:35.760 +it's okay you've been you've been quiet + +00:08:35.760 --> 00:08:37.839 +for too long now I I have this I have to + +00:08:37.839 --> 00:08:39.279 +pick on people when there's more than + +00:08:39.279 --> 00:08:40.640 +three people in a group + +00:08:40.640 --> 00:08:42.000 +you know somehow that's the point of + +00:08:42.000 --> 00:08:44.000 +wait I'm afraid somebody gets shy + +00:08:44.000 --> 00:08:47.920 +and when it's not me I I you know + +00:08:47.920 --> 00:08:51.440 +um so you know I I + +00:08:51.440 --> 00:08:54.080 +uh yeah I can't thank you enough for the + +00:08:54.080 --> 00:08:55.360 +for all you've done I mean I have a + +00:08:55.360 --> 00:08:57.040 +whole list of thank yous here that I + +00:08:57.040 --> 00:08:58.320 +could just start reading + +00:08:58.320 --> 00:09:01.360 +uh but but they you know they start with + +00:09:01.360 --> 00:09:02.880 +you and that was the abbreviated list I + +00:09:02.880 --> 00:09:04.480 +gave at the beginning of the first talk + +00:09:04.480 --> 00:09:05.200 +right + +00:09:05.200 --> 00:09:06.800 +I just appreciate the sense of + +00:09:06.800 --> 00:09:08.399 +encouragement and + +00:09:08.399 --> 00:09:12.320 +openness that you bring to it I think + +00:09:12.320 --> 00:09:15.519 +you know we share uh + +00:09:15.519 --> 00:09:17.120 +taking inspiration from a lot of people + +00:09:17.120 --> 00:09:19.279 +in the community and want to give that + +00:09:19.279 --> 00:09:20.800 +back and that's a great thing to have in + +00:09:20.800 --> 00:09:21.440 +common + +00:09:21.440 --> 00:09:24.880 +around any any volunteer + +00:09:24.880 --> 00:09:27.920 +thank you it's a it's a pleasure um to + +00:09:27.920 --> 00:09:29.040 +be part of this + +00:09:29.040 --> 00:09:31.920 +awesome community around Emacs um this + +00:09:31.920 --> 00:09:33.600 +piece of free software that has been + +00:09:33.600 --> 00:09:36.800 +around for more than 40 years as + +00:09:36.800 --> 00:09:38.720 +impressive as that is I think more + +00:09:38.720 --> 00:09:41.440 +impressive is a community around it + +00:09:41.440 --> 00:09:44.720 +and all the people people around it + +00:09:44.720 --> 00:09:52.640 +um yeah definitely + +00:09:52.640 --> 00:09:54.560 +sorry I'm just smiling because I've + +00:09:54.560 --> 00:09:56.240 +managed to catch a glimpse of the first + +00:09:56.240 --> 00:09:57.760 +question that we have + +00:09:57.760 --> 00:10:00.560 +and I'm trying to suit myself literally + +00:10:00.560 --> 00:10:02.560 +to know how to answer this question + +00:10:02.560 --> 00:10:04.640 +and I'm not exactly sure how to do this + +00:10:04.640 --> 00:10:11.040 +to the best of my ability so + +00:10:11.040 --> 00:10:12.880 +I don't know I think this at this point + +00:10:12.880 --> 00:10:14.240 +we would like to remind all of our + +00:10:14.240 --> 00:10:15.680 +viewers of the + +00:10:15.680 --> 00:10:18.800 +conduct guidelines + +00:10:18.800 --> 00:10:22.800 +try not to objectify our speakers + +00:10:22.800 --> 00:10:24.959 +yeah that's a generally good point to + +00:10:24.959 --> 00:10:25.920 +remember + +00:10:25.920 --> 00:10:29.680 +um even in the closing remarks + +00:10:29.680 --> 00:10:31.680 +because that's that's a thing I do and I + +00:10:31.680 --> 00:10:34.000 +just wa I want to go on record saying I + +00:10:34.000 --> 00:10:34.320 +am + +00:10:34.320 --> 00:10:36.399 +ready to take it on any live stream any + +00:10:36.399 --> 00:10:38.880 +day of the week please call me on that + +00:10:38.880 --> 00:10:40.720 +it's always you it's always a new + +00:10:40.720 --> 00:10:42.320 +experience for somebody + +00:10:42.320 --> 00:10:44.399 +I've definitely been across lines that + +00:10:44.399 --> 00:10:46.160 +embarrass me before and + +00:10:46.160 --> 00:10:48.320 +I want to know about that thank you in + +00:10:48.320 --> 00:10:50.320 +advance + +00:10:50.320 --> 00:10:52.800 +okay so do you want to do like someone's + +00:10:52.800 --> 00:10:53.519 +official + +00:10:53.519 --> 00:10:55.760 +closing of people so closing up stuff + +00:10:55.760 --> 00:10:56.560 +just in case + +00:10:56.560 --> 00:10:58.000 +people want to know what the next steps + +00:10:58.000 --> 00:10:59.839 +are and then we can do all the fun + +00:10:59.839 --> 00:11:02.800 +questions and hanging out thing + +00:11:02.800 --> 00:11:07.040 +okay um right so yeah + +00:11:07.040 --> 00:11:09.680 +okay following up um emax meetups and + +00:11:09.680 --> 00:11:11.279 +mention those uh if you want to keep + +00:11:11.279 --> 00:11:12.640 +connecting with people you can do that + +00:11:12.640 --> 00:11:14.079 +throughout the year + +00:11:14.079 --> 00:11:16.240 +we'll figure out some kind of like list + +00:11:16.240 --> 00:11:18.399 +on Emacs wiki or whatever that will list + +00:11:18.399 --> 00:11:19.600 +the different meetups or you can just + +00:11:19.600 --> 00:11:21.839 +search for emats meetup in your area + +00:11:21.839 --> 00:11:23.360 +but of course since many of them have + +00:11:23.360 --> 00:11:25.680 +online meetups now um Emacs news will + +00:11:25.680 --> 00:11:27.600 +mention those whenever people remember + +00:11:27.600 --> 00:11:29.600 +to tell me in advance + +00:11:29.600 --> 00:11:31.920 +um okay so Emacs meetups that's the + +00:11:31.920 --> 00:11:33.440 +thing collaborative pad + +00:11:33.440 --> 00:11:36.160 +the either pad isn't great there is a + +00:11:36.160 --> 00:11:38.079 +meta discussion so if you want to add + +00:11:38.079 --> 00:11:40.000 +things that worked well or make notes of + +00:11:40.000 --> 00:11:41.760 +things that could work even better next + +00:11:41.760 --> 00:11:42.560 +year + +00:11:42.560 --> 00:11:44.880 +then write it while it's fresh we'll + +00:11:44.880 --> 00:11:46.720 +make a copy and we'll post it + +00:11:46.720 --> 00:11:49.440 +to the wiki somewhere like we did last + +00:11:49.440 --> 00:11:50.160 +year + +00:11:50.160 --> 00:11:52.000 +we can also copy and paste the links + +00:11:52.000 --> 00:11:53.680 +from the individual sections + +00:11:53.680 --> 00:11:56.079 +into top pages so you can follow the + +00:11:56.079 --> 00:11:58.240 +links from there + +00:11:58.240 --> 00:12:00.240 +and if you spoke at a conference and you + +00:12:00.240 --> 00:12:01.680 +would like to make it easier for people + +00:12:01.680 --> 00:12:02.880 +to follow up with you + +00:12:02.880 --> 00:12:04.560 +please let us know your follow-up + +00:12:04.560 --> 00:12:06.079 +information and we can add it to that + +00:12:06.079 --> 00:12:07.040 +page also + +00:12:07.040 --> 00:12:09.600 +or it's a wiki you can edit yourself if + +00:12:09.600 --> 00:12:11.120 +you have questions when the videos + +00:12:11.120 --> 00:12:12.079 +finally come out + +00:12:12.079 --> 00:12:13.519 +when you watch them after the videos + +00:12:13.519 --> 00:12:15.360 +have come out then you can look at the + +00:12:15.360 --> 00:12:17.120 +page for follow-up information + +00:12:17.120 --> 00:12:20.000 +and subscribe to the mailing list low + +00:12:20.000 --> 00:12:22.000 +traffic you can get updates like when we + +00:12:22.000 --> 00:12:24.480 +release the photos I release the videos + +00:12:24.480 --> 00:12:26.320 +and uh and they're ready for you to + +00:12:26.320 --> 00:12:28.800 +check out so that's what I got for + +00:12:28.800 --> 00:12:32.160 +next steps awesome + +00:12:32.160 --> 00:12:34.880 +thank you sasha um do one of you guys + +00:12:34.880 --> 00:12:35.680 +want to do + +00:12:35.680 --> 00:12:39.760 +the um the thanks or should I do them + +00:12:39.760 --> 00:12:42.800 +no read to you so good + +00:12:42.800 --> 00:12:44.480 +I was gonna I was gonna say the same + +00:12:44.480 --> 00:12:46.560 +thing you are so you go ahead + +00:12:46.560 --> 00:12:50.240 +okay + +00:12:50.240 --> 00:12:51.920 +thinking that that was an awesome thing + +00:12:51.920 --> 00:12:53.760 +for for ramen to do if you would be + +00:12:53.760 --> 00:12:57.360 +willing + +00:12:57.360 --> 00:12:59.120 +yeah you're the lead organizer you get + +00:12:59.120 --> 00:13:00.959 +stuck with other fun jobs + +00:13:00.959 --> 00:13:05.440 +all the difficult stuff yeah + +00:13:05.440 --> 00:13:07.360 +yeah you don't know dating upwards read + +00:13:07.360 --> 00:13:08.720 +my crap if you don't want to + +00:13:08.720 --> 00:13:12.320 +but um oh no that's + +00:13:12.320 --> 00:13:14.959 +I definitely want to read that corbin um + +00:13:14.959 --> 00:13:16.399 +yeah I'll pull it up + +00:13:16.399 --> 00:13:20.399 +but um yeah before we get into that um + +00:13:20.399 --> 00:13:23.279 +I want to read what we have here so uh + +00:13:23.279 --> 00:13:25.040 +thank you very much to the free software + +00:13:25.040 --> 00:13:26.079 +foundation + +00:13:26.079 --> 00:13:29.040 +especially the tech team for lending us + +00:13:29.040 --> 00:13:29.600 +allowing + +00:13:29.600 --> 00:13:31.760 +us to use this very big blue button + +00:13:31.760 --> 00:13:32.720 +instance + +00:13:32.720 --> 00:13:35.839 +that we've used for live calls and um + +00:13:35.839 --> 00:13:38.000 +live q a with so many of the speakers + +00:13:38.000 --> 00:13:39.199 +this year + +00:13:39.199 --> 00:13:42.959 +um thank you so much uh shout out to the + +00:13:42.959 --> 00:13:43.760 +tech team + +00:13:43.760 --> 00:13:47.040 +um especially reuben who does a lot + +00:13:47.040 --> 00:13:50.240 +especially with big blue button um + +00:13:50.240 --> 00:13:53.199 +and like streaming in general um but + +00:13:53.199 --> 00:13:53.680 +also + +00:13:53.680 --> 00:13:55.519 +the other members of the tech team like + +00:13:55.519 --> 00:13:57.360 +ian andrew and michael + +00:13:57.360 --> 00:14:01.519 +thank you all um next stop volunteers + +00:14:01.519 --> 00:14:05.920 +bobbin david bremner uh dave o'toole for + +00:14:05.920 --> 00:14:09.199 +taking um on basically writing + +00:14:09.199 --> 00:14:10.240 +descriptive text + +00:14:10.240 --> 00:14:15.279 +in our #emacsconf-accessible channel + +00:14:15.279 --> 00:14:18.480 +along with uh joe corneli and + +00:14:18.480 --> 00:14:21.920 +um sea bass or sea bass um + +00:14:21.920 --> 00:14:25.199 +basically for transcribing talks + +00:14:25.199 --> 00:14:27.950 +um in a way live um + +00:14:27.950 --> 00:14:29.120 +[Music] + +00:14:29.120 --> 00:14:32.320 +yes thank you to corwin of course + +00:14:32.320 --> 00:14:35.600 +uh thank you to carl voight uh thank you + +00:14:35.600 --> 00:14:35.920 +to + +00:14:35.920 --> 00:14:39.519 +sasha and leo very much um + +00:14:39.519 --> 00:14:42.639 +for all your hard work um this event + +00:14:42.639 --> 00:14:44.240 +literally wouldn't have been possible + +00:14:44.240 --> 00:14:45.680 +without all of your uh + +00:14:45.680 --> 00:14:49.279 +guys's helps um so thank you + +00:14:49.279 --> 00:14:51.760 +and as I told you in the chat you know + +00:14:51.760 --> 00:14:52.639 +you would have been + +00:14:52.639 --> 00:14:54.800 +really happy to one-man army the entire + +00:14:54.800 --> 00:14:58.160 +thing if we hadn't been there so + +00:14:58.160 --> 00:15:00.560 +I I don't know I may have been able to + +00:15:00.560 --> 00:15:01.839 +but I definitely would have been happy + +00:15:01.839 --> 00:15:02.320 +to + +00:15:02.320 --> 00:15:05.760 +I'm much more happier this way so um + +00:15:05.760 --> 00:15:07.600 +I guess it's the moment when we ask you + +00:15:07.600 --> 00:15:09.519 +uh your energy level is it at + +00:15:09.519 --> 00:15:12.560 +50 is it at 40 can you give us an + +00:15:12.560 --> 00:15:13.120 +estimate + +00:15:13.120 --> 00:15:16.399 +roughly um yeah which is what uh + +00:15:16.399 --> 00:15:19.120 +corbin had mentioned um I think I'm at a + +00:15:19.120 --> 00:15:19.519 +good + +00:15:19.519 --> 00:15:22.320 +like 50 or 60 percent um it's just + +00:15:22.320 --> 00:15:23.040 +blended + +00:15:23.040 --> 00:15:24.800 +yeah definitely more than I can say last + +00:15:24.800 --> 00:15:27.199 +for last year + +00:15:27.199 --> 00:15:30.320 +but yes thank you um + +00:15:30.320 --> 00:15:33.519 +thank you to um all of the + +00:15:33.519 --> 00:15:36.720 +our awesome audience members um everyone + +00:15:36.720 --> 00:15:39.279 +who participated in any way + +00:15:39.279 --> 00:15:42.880 +in the conference also + +00:15:42.880 --> 00:15:44.959 +of course a big thank you to all the + +00:15:44.959 --> 00:15:46.399 +awesome speakers + +00:15:46.399 --> 00:15:48.720 +for submitting all of these amazing + +00:15:48.720 --> 00:15:49.440 +talks + +00:15:49.440 --> 00:15:52.320 +um on a very wide range of topics from a + +00:15:52.320 --> 00:15:53.120 +wide + +00:15:53.120 --> 00:15:56.160 +range of backgrounds it was just awesome + +00:15:56.160 --> 00:15:59.680 +thank you um and now corbin do you want + +00:15:59.680 --> 00:16:03.600 +to read over your text or should I do it + +00:16:03.600 --> 00:16:07.759 +it's entirely up to you I mean I + +00:16:07.759 --> 00:16:09.920 +I would have to find it again but I will + +00:16:09.920 --> 00:16:11.759 +I just have to bring the right Emacs to + +00:16:11.759 --> 00:16:12.720 +the front here + +00:16:12.720 --> 00:16:16.240 +my story of today yeah sure go forward + +00:16:16.240 --> 00:16:18.959 +um I've already talked enough so I kind + +00:16:18.959 --> 00:16:20.480 +of like the idea of putting words in + +00:16:20.480 --> 00:16:20.880 +your mouth + +00:16:20.880 --> 00:16:23.600 +honestly if you feel good saying go go + +00:16:23.600 --> 00:16:25.440 +for it and that'll be good for me + +00:16:25.440 --> 00:16:27.759 +or if we want to segue into random next + +00:16:27.759 --> 00:16:29.680 +conversation I'm up for that too but I'm + +00:16:29.680 --> 00:16:30.720 +conscious of + +00:16:30.720 --> 00:16:33.839 +other people with uh um + +00:16:33.839 --> 00:16:35.600 +young friends wandering about the house + +00:16:35.600 --> 00:16:37.120 +and beginning to thump on things + +00:16:37.120 --> 00:16:39.360 +I got it I probably didn't what have you + +00:16:39.360 --> 00:16:41.440 +pasted me before + +00:16:41.440 --> 00:16:44.399 +right that one is that what you wanted + +00:16:44.399 --> 00:16:44.800 +yeah + +00:16:44.800 --> 00:16:46.399 +I saw the question in there about + +00:16:46.399 --> 00:16:48.399 +windows that's definitely a subject I'm + +00:16:48.399 --> 00:16:50.320 +happy to talk about I think others on + +00:16:50.320 --> 00:16:51.519 +the call have gotten + +00:16:51.519 --> 00:16:54.000 +uh gotten some of that in in as part of + +00:16:54.000 --> 00:16:55.600 +other conversations + +00:16:55.600 --> 00:16:58.800 +um in brief summary it's kind of a + +00:16:58.800 --> 00:16:59.839 +necessity thing + +00:16:59.839 --> 00:17:03.040 +it's um + +00:17:03.040 --> 00:17:06.160 +it's it's complicated you know it's but + +00:17:06.160 --> 00:17:09.280 +I I guess I I can say uh + +00:17:09.280 --> 00:17:11.760 +I'd ask you not to not to make free + +00:17:11.760 --> 00:17:13.280 +software purity tests right + +00:17:13.280 --> 00:17:17.439 +you know I um need windows right now + +00:17:17.439 --> 00:17:19.839 +and so that has to be fine because I + +00:17:19.839 --> 00:17:33.840 +want to be able to give back + +00:17:33.840 --> 00:17:35.360 +I'm looking at it I had the wrong part + +00:17:35.360 --> 00:17:48.799 +of the buffer open I think karen + +00:17:48.799 --> 00:17:56.799 +let me briefly say um + +00:17:56.799 --> 00:17:58.559 +we're using okay so I can I can talk + +00:17:58.559 --> 00:18:00.960 +about crdt we experimented with it um + +00:18:00.960 --> 00:18:04.320 +and I quite a bit and then eric and I + +00:18:04.320 --> 00:18:07.039 +significantly further we uh messed up + +00:18:07.039 --> 00:18:08.880 +some of our slides significantly getting + +00:18:08.880 --> 00:18:10.480 +a little too ambitious with having + +00:18:10.480 --> 00:18:12.080 +multiple people editing it + +00:18:12.080 --> 00:18:14.400 +and letting everybody go to work on the + +00:18:14.400 --> 00:18:15.360 +presentations + +00:18:15.360 --> 00:18:17.919 +so we wasted we found many different + +00:18:17.919 --> 00:18:19.679 +ways to use Emacs to waste time and + +00:18:19.679 --> 00:18:21.360 +preparing for emax conf + +00:18:21.360 --> 00:18:23.840 +but I'm pretty confident we have we have + +00:18:23.840 --> 00:18:25.520 +all the good parts saved and + +00:18:25.520 --> 00:18:28.480 +we'll just need to pull those together + +00:18:28.480 --> 00:18:28.880 +uh + +00:18:28.880 --> 00:18:30.720 +for you back into a single or more file + +00:18:30.720 --> 00:18:33.600 +that we can put up with those videos + +00:18:33.600 --> 00:18:36.000 +thanks again for bearing with us um + +00:18:36.000 --> 00:18:37.919 +hopefully my point about + +00:18:37.919 --> 00:18:54.640 +Emacs being there for you came across + +00:18:54.640 --> 00:18:56.480 +oh yes I can scroll I can scroll back + +00:18:56.480 --> 00:18:57.679 +down to your text if you like + +00:18:57.679 --> 00:19:04.320 +okay here we go + +00:19:04.320 --> 00:19:06.559 +uh we're figuring out carwin here's your + +00:19:06.559 --> 00:19:08.240 +text + +00:19:08.240 --> 00:19:10.080 +if you want to read it otherwise I'll be + +00:19:10.080 --> 00:19:11.600 +plenty happy to read it if you want me + +00:19:11.600 --> 00:19:12.480 +to + +00:19:12.480 --> 00:19:15.919 +take it all right + +00:19:15.919 --> 00:19:18.400 +obviously you had to ask the esl learner + +00:19:18.400 --> 00:19:20.480 +so english as a second language to read + +00:19:20.480 --> 00:19:24.000 +a chunk of text so thank you for this + +00:19:24.000 --> 00:19:28.960 +all right okay so uh this is my call win + +00:19:28.960 --> 00:19:32.400 +so Emacs is very very complicated + +00:19:32.400 --> 00:19:35.440 +and using computer is hard with Emacs we + +00:19:35.440 --> 00:19:37.200 +have an ideal opportunity to learn + +00:19:37.200 --> 00:19:40.160 +from our errors to take on hard work + +00:19:40.160 --> 00:19:41.600 +with diverse groups + +00:19:41.600 --> 00:19:44.160 +and to effect lasting solutions to make + +00:19:44.160 --> 00:19:44.960 +Emacs + +00:19:44.960 --> 00:19:47.600 +and thereby any word of software thing + +00:19:47.600 --> 00:19:48.320 +in practically + +00:19:48.320 --> 00:19:50.799 +any human and spoken language easier to + +00:19:50.799 --> 00:19:52.320 +learn and to use + +00:19:52.320 --> 00:19:55.520 +forever life doesn't come with warning + +00:19:55.520 --> 00:19:56.080 +labels + +00:19:56.080 --> 00:19:59.039 +or margin notes we have a blank map and + +00:19:59.039 --> 00:20:00.799 +an uncertain number of batteries for the + +00:20:00.799 --> 00:20:01.840 +torch + +00:20:01.840 --> 00:20:04.159 +but there's light in the darkness it's + +00:20:04.159 --> 00:20:05.200 +freedom + +00:20:05.200 --> 00:20:07.200 +it's the idea of giving to people + +00:20:07.200 --> 00:20:12.240 +something that cannot be taken away + +00:20:12.240 --> 00:20:14.320 +ultraman to say that that was very + +00:20:14.320 --> 00:20:15.440 +beautiful uh + +00:20:15.440 --> 00:20:21.120 +thank you corbin for writing that + +00:20:21.120 --> 00:20:26.960 +okay so uh are there any questions + +00:20:26.960 --> 00:20:32.159 +oh muted + +00:20:32.159 --> 00:20:34.240 +I still can't I'm muted I think I'm + +00:20:34.240 --> 00:20:36.400 +sorry + +00:20:36.400 --> 00:20:40.559 +um what I said was thank you uh + +00:20:40.559 --> 00:20:45.600 +just thanks + +00:20:45.600 --> 00:20:48.640 +I just this community has really been + +00:20:48.640 --> 00:20:49.760 +there for me it's + +00:20:49.760 --> 00:20:56.080 +hard to learn and need + +00:20:56.080 --> 00:20:58.080 +so yeah I keep laughing because I I see + +00:20:58.080 --> 00:21:00.000 +things coming through the chat and I do + +00:21:00.000 --> 00:21:01.600 +not know how to react visually + +00:21:01.600 --> 00:21:02.960 +I'm not used to getting those types of + +00:21:02.960 --> 00:21:04.640 +messages + +00:21:04.640 --> 00:21:08.000 +it is very upsetting I don't know which + +00:21:08.000 --> 00:21:11.120 +one to use I'm using my english as well + +00:21:11.120 --> 00:21:13.120 +I'm intentionally not looking over there + +00:21:13.120 --> 00:21:14.320 +because I'll just get dragged into + +00:21:14.320 --> 00:21:16.799 +conversation and then this we will be on + +00:21:16.799 --> 00:21:18.080 +live stream all night I don't know if + +00:21:18.080 --> 00:21:19.600 +you know me at all in fact I + +00:21:19.600 --> 00:21:21.679 +I my apologies you probably don't hi my + +00:21:21.679 --> 00:21:24.080 +name is corwin I like to talk + +00:21:24.080 --> 00:21:27.039 +I like to get you excited about ideas + +00:21:27.039 --> 00:21:28.720 +that I think we agree about + +00:21:28.720 --> 00:21:31.440 +so we can get somewhere solving an + +00:21:31.440 --> 00:21:33.200 +important problem and there's a lot of + +00:21:33.200 --> 00:21:35.520 +important problems in the world so + +00:21:35.520 --> 00:21:37.840 +I have been living in a devil's paradise + +00:21:37.840 --> 00:21:39.600 +throughout covet as people are sitting + +00:21:39.600 --> 00:21:40.159 +at home + +00:21:40.159 --> 00:21:42.799 +and really frustrated especially in the + +00:21:42.799 --> 00:21:44.480 +united states where I live + +00:21:44.480 --> 00:21:46.640 +about political and social justice + +00:21:46.640 --> 00:21:47.520 +issues you + +00:21:47.520 --> 00:21:49.760 +probably heard of the town where I live + +00:21:49.760 --> 00:21:50.799 +recently + +00:21:50.799 --> 00:21:54.559 +as a direct um + +00:21:54.559 --> 00:21:58.000 +uh kind of crucible there right + +00:21:58.000 --> 00:22:02.400 +um we are a troubled people + +00:22:02.400 --> 00:22:04.559 +we're arguing about freedom it's to the + +00:22:04.559 --> 00:22:06.320 +point where it's hard to put those words + +00:22:06.320 --> 00:22:07.280 +down + +00:22:07.280 --> 00:22:10.400 +without assuming people are gonna write + +00:22:10.400 --> 00:22:12.320 +you off as a shyster + +00:22:12.320 --> 00:22:15.600 +that's insanity we know exactly what + +00:22:15.600 --> 00:22:16.640 +that means + +00:22:16.640 --> 00:22:20.480 +especially in this community we uh + +00:22:20.480 --> 00:22:23.679 +we're here because we want to + +00:22:23.679 --> 00:22:26.640 +um because we want to make sure that + +00:22:26.640 --> 00:22:27.200 +some + +00:22:27.200 --> 00:22:29.280 +part of what the potential that + +00:22:29.280 --> 00:22:30.880 +technology offers + +00:22:30.880 --> 00:22:32.880 +is indelibly written out there that + +00:22:32.880 --> 00:22:34.320 +nobody can take away + +00:22:34.320 --> 00:22:36.799 +that's the bottom line on that that that + +00:22:36.799 --> 00:22:38.240 +closing thought I mean that's where I'd + +00:22:38.240 --> 00:22:40.240 +leave you at with Emacs conference + +00:22:40.240 --> 00:22:41.919 +you want to make stuff that other people + +00:22:41.919 --> 00:22:43.280 +can't take away because that's where + +00:22:43.280 --> 00:22:44.320 +freedom + +00:22:44.320 --> 00:22:48.320 +is hiding + +00:22:48.320 --> 00:22:51.360 +thank you and I agree there is something + +00:22:51.360 --> 00:22:52.799 +to be said about + +00:22:52.799 --> 00:22:55.039 +um you know this idea of having some + +00:22:55.039 --> 00:22:56.080 +piece of software + +00:22:56.080 --> 00:22:59.360 +or an art form to um + +00:22:59.360 --> 00:23:01.679 +setting it free to to live on + +00:23:01.679 --> 00:23:03.360 +indefinitely into the future and for + +00:23:03.360 --> 00:23:04.400 +everyone else + +00:23:04.400 --> 00:23:06.320 +um and for people who may have not + +00:23:06.320 --> 00:23:07.600 +already even been born + +00:23:07.600 --> 00:23:09.679 +to you know at some point someday + +00:23:09.679 --> 00:23:11.280 +discover it and + +00:23:11.280 --> 00:23:13.840 +um you know start using it and making it + +00:23:13.840 --> 00:23:15.039 +even better + +00:23:15.039 --> 00:23:18.880 +um yeah so I think on that note + +00:23:18.880 --> 00:23:21.120 +this might be a good note to conclude on + +00:23:21.120 --> 00:23:23.039 +what you folks think + +00:23:23.039 --> 00:23:24.720 +I always like to go around the room one + +00:23:24.720 --> 00:23:26.640 +time but again I'll keep everybody on + +00:23:26.640 --> 00:23:28.240 +the phone forever so don't + +00:23:28.240 --> 00:23:30.960 +don't don't use my definitely I have to + +00:23:30.960 --> 00:23:31.860 +be seconded + +00:23:31.860 --> 00:23:33.840 +[Laughter] + +00:23:33.840 --> 00:23:38.000 +okay um leo sasha + +00:23:38.000 --> 00:23:40.240 +uh I was just wondering if we'd answered + +00:23:40.240 --> 00:23:41.760 +as many questions as we could + +00:23:41.760 --> 00:23:43.840 +from the people because I believe we've + +00:23:43.840 --> 00:23:45.440 +answered some of them and sasha has been + +00:23:45.440 --> 00:23:47.520 +kind enough to answer them in line + +00:23:47.520 --> 00:23:49.360 +but maybe we wanted to take some of them + +00:23:49.360 --> 00:23:50.960 +live especially some of the later ones + +00:23:50.960 --> 00:23:52.080 +just to + +00:23:52.080 --> 00:23:54.320 +send people off with a feeling that we + +00:23:54.320 --> 00:23:56.240 +answered to the very last question that + +00:23:56.240 --> 00:23:58.640 +they had + +00:23:58.640 --> 00:24:01.360 +and until the sound over my head gets + +00:24:01.360 --> 00:24:03.360 +too loud and I have to mute I'll be here + +00:24:03.360 --> 00:24:04.400 +and then I'll uh + +00:24:04.400 --> 00:24:07.039 +be here if I can convince the loud ones + +00:24:07.039 --> 00:24:10.799 +to come watch with me + +00:24:10.799 --> 00:24:13.039 +so it's really up to you I mean we I'm + +00:24:13.039 --> 00:24:14.559 +the one crumbling right now you know I'm + +00:24:14.559 --> 00:24:15.200 +just + +00:24:15.200 --> 00:24:17.200 +it's pure showmanship that is keeping me + +00:24:17.200 --> 00:24:18.799 +up right now the energy that I've been + +00:24:18.799 --> 00:24:21.120 +accumulating over the last few days + +00:24:21.120 --> 00:24:22.799 +but what's going to happen basically + +00:24:22.799 --> 00:24:24.400 +when we finish this live stream + +00:24:24.400 --> 00:24:26.240 +firstly I'm going to turn off this light + +00:24:26.240 --> 00:24:27.840 +which has been blasting + +00:24:27.840 --> 00:24:30.000 +a very white light in my eyes and up + +00:24:30.000 --> 00:24:31.039 +until 11 pm + +00:24:31.039 --> 00:24:34.400 +every single day you see this very comfy + +00:24:34.400 --> 00:24:37.120 +uh you know so far what not I'm just + +00:24:37.120 --> 00:24:37.919 +going to + +00:24:37.919 --> 00:24:42.880 +crush on it right away so + +00:24:42.880 --> 00:24:45.440 +that sounds like a good plan to me um + +00:24:45.440 --> 00:24:47.279 +you know we've all worked hard + +00:24:47.279 --> 00:24:50.159 +especially you all um and definitely + +00:24:50.159 --> 00:24:51.360 +deserve some rest + +00:24:51.360 --> 00:24:54.640 +to um you know rejuvenate our job + +00:24:54.640 --> 00:24:58.159 +and get back into it again um + +00:24:58.159 --> 00:25:01.279 +yeah sasha did you want to add anything + +00:25:01.279 --> 00:25:05.919 +else + +00:25:05.919 --> 00:25:08.240 +you just muted yourself yes you've just + +00:25:08.240 --> 00:25:12.640 +muted yourself + +00:25:12.640 --> 00:25:14.799 +uh yeah just answering questions at the + +00:25:14.799 --> 00:25:15.780 +moment um + +00:25:15.780 --> 00:25:17.039 +[Music] + +00:25:17.039 --> 00:25:18.400 +at some point I will have to do two + +00:25:18.400 --> 00:25:20.320 +things but in the meantime I can do + +00:25:20.320 --> 00:25:25.520 +Emacs grown-up Emacs things wow + +00:25:25.520 --> 00:25:26.880 +what are you saying grown-up Emacs but + +00:25:26.880 --> 00:25:28.799 +we still had a talk by uh + +00:25:28.799 --> 00:25:32.400 +someone today who was uh 17 I believe + +00:25:32.400 --> 00:25:36.480 +so yeah I was very impressed by this + +00:25:36.480 --> 00:25:39.039 +yeah it's awesome just seeing the wide + +00:25:39.039 --> 00:25:40.320 +diversity and the wide + +00:25:40.320 --> 00:25:43.600 +age range of people um just getting into + +00:25:43.600 --> 00:25:45.200 +Emacs picking up + +00:25:45.200 --> 00:25:48.240 +for all sorts of different things um + +00:25:48.240 --> 00:25:49.840 +corbin and I had a bit of a chat about + +00:25:49.840 --> 00:25:51.440 +this about this + +00:25:51.440 --> 00:25:53.440 +piece of free software that is Emacs and + +00:25:53.440 --> 00:25:54.960 +all the freedoms + +00:25:54.960 --> 00:25:58.320 +freedoms that it grants us um but yeah + +00:25:58.320 --> 00:25:58.960 +we could + +00:25:58.960 --> 00:26:02.080 +go on forever and ever um yeah I really + +00:26:02.080 --> 00:26:02.559 +can + +00:26:02.559 --> 00:26:05.039 +and then and you know and it has to be + +00:26:05.039 --> 00:26:06.400 +about getting something done and that's + +00:26:06.400 --> 00:26:07.440 +where I think + +00:26:07.440 --> 00:26:11.679 +sasha your work and organization is so + +00:26:11.679 --> 00:26:15.679 +uh vital to us + +00:26:15.679 --> 00:26:18.799 +we uh you know we have to direct that + +00:26:18.799 --> 00:26:20.720 +energy into self-organizing + +00:26:20.720 --> 00:26:22.480 +and and that's where I'd like probably + +00:26:22.480 --> 00:26:24.159 +to focus my work + +00:26:24.159 --> 00:26:26.159 +over the probably the next several years + +00:26:26.159 --> 00:26:27.200 +is + +00:26:27.200 --> 00:26:31.120 +um is is putting that thought and some + +00:26:31.120 --> 00:26:32.000 +of the + +00:26:32.000 --> 00:26:34.720 +uh some of the ideas that are built into + +00:26:34.720 --> 00:26:35.600 +org mode and + +00:26:35.600 --> 00:26:37.200 +in fact some of the implementation + +00:26:37.200 --> 00:26:38.720 +that's built into org one and in fact + +00:26:38.720 --> 00:26:40.240 +probably org mode + +00:26:40.240 --> 00:26:43.440 +because hey there it is + +00:26:43.440 --> 00:26:46.159 +to work on that yeah you should see all + +00:26:46.159 --> 00:26:47.279 +the org scripts I wrote + +00:26:47.279 --> 00:26:50.320 +so cool not that other people but anyway + +00:26:50.320 --> 00:26:51.760 +we wrote this like fancy scheduling + +00:26:51.760 --> 00:26:52.000 +thing + +00:26:52.000 --> 00:26:52.799 +and you should check out the + +00:26:52.799 --> 00:26:55.360 +submissions.org to to try to use it + +00:26:55.360 --> 00:26:57.279 +because then if other people use it they + +00:26:57.279 --> 00:26:59.360 +can improve it and then I get to use the + +00:26:59.360 --> 00:27:00.720 +improvements next year + +00:27:00.720 --> 00:27:04.159 +also erc ux irc clients awesome + +00:27:04.159 --> 00:27:06.159 +so a lot of automation was a lot of fun + +00:27:06.159 --> 00:27:07.919 +to work on absolutely + +00:27:07.919 --> 00:27:10.400 +yeah sasha did a lot of cool automation + +00:27:10.400 --> 00:27:11.440 +stuff this year + +00:27:11.440 --> 00:27:13.200 +um you know around generating the + +00:27:13.200 --> 00:27:15.039 +schedules and everything the pages in + +00:27:15.039 --> 00:27:17.200 +the Emacs freaky with org mode + +00:27:17.200 --> 00:27:19.919 +um and you know for the calls with uh + +00:27:19.919 --> 00:27:21.039 +speakers + +00:27:21.039 --> 00:27:24.159 +and coordinating in imaxcom.org + +00:27:24.159 --> 00:27:26.720 +um or like you know updating the topics + +00:27:26.720 --> 00:27:27.600 +all this stuff + +00:27:27.600 --> 00:27:30.480 +she basically automated all of this um + +00:27:30.480 --> 00:27:32.240 +which is definitely very impressive and + +00:27:32.240 --> 00:27:34.480 +I know I'm gonna be looking into + +00:27:34.480 --> 00:27:37.600 +um yeah definitely check out um + +00:27:37.600 --> 00:27:40.720 +erc I'm a little biased um I + +00:27:40.720 --> 00:27:43.360 +started sort of maintaining it a little + +00:27:43.360 --> 00:27:44.320 +bit ago + +00:27:44.320 --> 00:27:47.760 +but um it's been there forever and + +00:27:47.760 --> 00:27:49.279 +you know I'm just following the + +00:27:49.279 --> 00:27:51.919 +footsteps of giants or standing on their + +00:27:51.919 --> 00:27:53.120 +shoulders + +00:27:53.120 --> 00:27:56.640 +so definitely check it out um yeah + +00:27:56.640 --> 00:27:59.919 +any uh last notes to add before we get + +00:27:59.919 --> 00:28:00.559 +back + +00:28:00.559 --> 00:28:03.120 +to um playing the last few demos that we + +00:28:03.120 --> 00:28:04.960 +have + +00:28:04.960 --> 00:28:07.600 +I just wanted to say that I'm really sad + +00:28:07.600 --> 00:28:08.480 +for the people + +00:28:08.480 --> 00:28:11.360 +uh viewing uh viewers right now who + +00:28:11.360 --> 00:28:12.000 +won't get + +00:28:12.000 --> 00:28:14.320 +the thrill of receiving a message by + +00:28:14.320 --> 00:28:16.080 +sasha at 3am telling + +00:28:16.080 --> 00:28:17.679 +oh I found a way to automate all the + +00:28:17.679 --> 00:28:18.960 +talks I found a way to have this + +00:28:18.960 --> 00:28:20.480 +schedule be generated automatically in + +00:28:20.480 --> 00:28:21.760 +an old mode file + +00:28:21.760 --> 00:28:23.520 +and you know I'm having my team in the + +00:28:23.520 --> 00:28:25.360 +morning I'm waking up I see an email + +00:28:25.360 --> 00:28:27.760 +which was unless three am and I say + +00:28:27.760 --> 00:28:31.039 +wow impressive + +00:28:31.039 --> 00:28:33.600 +that works like quite nicely for you um + +00:28:33.600 --> 00:28:34.159 +leo + +00:28:34.159 --> 00:28:36.000 +with like you know the times and time + +00:28:36.000 --> 00:28:37.360 +zones and everything + +00:28:37.360 --> 00:28:39.440 +and with sasha usually getting it on + +00:28:39.440 --> 00:28:40.480 +later at night + +00:28:40.480 --> 00:28:44.399 +um yeah you do get this bedtime right + +00:28:44.399 --> 00:28:45.919 +wait until bedtime and then up until + +00:28:45.919 --> 00:28:47.279 +like one or two because it's too much + +00:28:47.279 --> 00:28:49.200 +fun + +00:28:49.200 --> 00:28:52.559 +yeah exactly um yeah + +00:28:52.559 --> 00:28:56.240 +so uh on that note + +00:28:56.240 --> 00:28:59.919 +if uh there isn't much else to say then + +00:28:59.919 --> 00:29:03.200 +I will uh thank each and every one once + +00:29:03.200 --> 00:29:04.000 +again + +00:29:04.000 --> 00:29:07.039 +um who was in any way + +00:29:07.039 --> 00:29:10.240 +part of this um and helped with um + +00:29:10.240 --> 00:29:13.520 +any of this um basically + +00:29:13.520 --> 00:29:16.640 +um Emacs company anyway um and watched + +00:29:16.640 --> 00:29:17.039 +it + +00:29:17.039 --> 00:29:20.640 +helped whatever um submitted the talk um + +00:29:20.640 --> 00:29:22.960 +I very much thank you um this wouldn't + +00:29:22.960 --> 00:29:23.760 +have been + +00:29:23.760 --> 00:29:27.120 +what it has been without um all of + +00:29:27.120 --> 00:29:30.240 +you folks participation and help and + +00:29:30.240 --> 00:29:32.960 +um just being out there and spreading + +00:29:32.960 --> 00:29:34.720 +the gospel of Emacs + +00:29:34.720 --> 00:29:37.760 +um yeah so + +00:29:37.760 --> 00:29:40.799 +yep there we go leo + +00:29:40.799 --> 00:29:42.399 +sorry someone just asked me if I was + +00:29:42.399 --> 00:29:44.159 +still wearing jeans today so I just felt + +00:29:44.159 --> 00:29:46.799 +obligated to show it + +00:29:46.799 --> 00:29:50.320 +nice I never got my thanks in I I have + +00:29:50.320 --> 00:29:51.039 +to thank + +00:29:51.039 --> 00:29:54.399 +uh leo and uh + +00:29:54.399 --> 00:29:57.760 +and I'll just stare at you but I I won't + +00:29:57.760 --> 00:29:58.480 +say your name + +00:29:58.480 --> 00:30:01.520 +yet again um for the insane work that + +00:30:01.520 --> 00:30:02.000 +you do + +00:30:02.000 --> 00:30:06.320 +and and and sasha um + +00:30:06.320 --> 00:30:09.039 +you are an asset to our whole community + +00:30:09.039 --> 00:30:11.039 +with the vibrance that you bring and the + +00:30:11.039 --> 00:30:13.200 +the passion that you have for + +00:30:13.200 --> 00:30:16.720 +um for community itself uh + +00:30:16.720 --> 00:30:18.480 +I think a lot of us can say that you're + +00:30:18.480 --> 00:30:20.000 +you're driving a lot of our work + +00:30:20.000 --> 00:30:24.240 +in in certain ways um + +00:30:24.240 --> 00:30:25.919 +and then I I want to thank all the + +00:30:25.919 --> 00:30:28.480 +presenters for uh + +00:30:28.480 --> 00:30:30.399 +for working with us to get every + +00:30:30.399 --> 00:30:31.760 +everything scheduled + +00:30:31.760 --> 00:30:35.520 +and also my team and project + +00:30:35.520 --> 00:30:39.279 +um for helping uh get the project + +00:30:39.279 --> 00:30:41.200 +actually testable we had some + +00:30:41.200 --> 00:30:43.279 +interesting stuff to show + +00:30:43.279 --> 00:30:46.720 +and my family for uh all that they do + +00:30:46.720 --> 00:30:49.279 +to make it possible for me to give back + +00:30:49.279 --> 00:30:56.080 +to free software + +00:30:56.080 --> 00:30:57.679 +oh there's a question um someone's + +00:30:57.679 --> 00:30:59.440 +volunteering to help just get the stream + +00:30:59.440 --> 00:31:00.399 +recordings out + +00:31:00.399 --> 00:31:02.880 +so it's it's up to you yeah your call + +00:31:02.880 --> 00:31:03.600 +you want + +00:31:03.600 --> 00:31:05.760 +them out and then you have some time to + +00:31:05.760 --> 00:31:07.200 +prepare nice + +00:31:07.200 --> 00:31:09.600 +cut up versions or do you want everyone + +00:31:09.600 --> 00:31:11.120 +to hang on and then just link to like + +00:31:11.120 --> 00:31:12.960 +the EmacsConf website + +00:31:12.960 --> 00:31:16.159 +right right um I would very much + +00:31:16.159 --> 00:31:17.679 +appreciate help with that + +00:31:17.679 --> 00:31:20.880 +in fact um for last year's um live + +00:31:20.880 --> 00:31:21.919 +recordings + +00:31:21.919 --> 00:31:25.279 +we had someone to help us um + +00:31:25.279 --> 00:31:28.320 +uh andrew jordy in fact who also helped + +00:31:28.320 --> 00:31:30.159 +light a bunch of transcripts last year + +00:31:30.159 --> 00:31:32.559 +did an awesome job um + +00:31:32.559 --> 00:31:34.240 +yeah I really wanted to have him around + +00:31:34.240 --> 00:31:36.080 +this year but you know circumstances + +00:31:36.080 --> 00:31:36.720 +with + +00:31:36.720 --> 00:31:39.279 +um everything going on around around the + +00:31:39.279 --> 00:31:39.840 +world + +00:31:39.840 --> 00:31:42.880 +um just didn't work out but um yeah I + +00:31:42.880 --> 00:31:43.279 +could + +00:31:43.279 --> 00:31:46.240 +definitely use um help with cutting up + +00:31:46.240 --> 00:31:48.159 +the videos + +00:31:48.159 --> 00:31:49.679 +you know for the pre-recordings that's + +00:31:49.679 --> 00:31:51.519 +pretty trivial it's just me having to + +00:31:51.519 --> 00:31:52.640 +upload them + +00:31:52.640 --> 00:31:55.120 +and create the pages so I will do that + +00:31:55.120 --> 00:31:55.679 +but + +00:31:55.679 --> 00:31:58.320 +um to whoever asked the question if it's + +00:31:58.320 --> 00:31:59.279 +on the pad + +00:31:59.279 --> 00:32:01.200 +or if it's in irc sorry I missed it I + +00:32:01.200 --> 00:32:03.440 +will go I'll look back later + +00:32:03.440 --> 00:32:06.240 +um yeah just ping me message me or email + +00:32:06.240 --> 00:32:07.200 +me + +00:32:07.200 --> 00:32:10.080 +at vandalia gnu.org and um I would + +00:32:10.080 --> 00:32:17.840 +appreciate your help + +00:32:17.840 --> 00:32:20.159 +so have we finished the roundtable uh I + +00:32:20.159 --> 00:32:20.880 +believe we're + +00:32:20.880 --> 00:32:23.760 +doing the last thinking so colwin did it + +00:32:23.760 --> 00:32:24.640 +sasha did it + +00:32:24.640 --> 00:32:27.679 +should I go next + +00:32:27.679 --> 00:32:30.320 +so well as you can see I've lowered + +00:32:30.320 --> 00:32:31.200 +myself + +00:32:31.200 --> 00:32:33.360 +ever since the last time I've spoken so + +00:32:33.360 --> 00:32:34.399 +the dynasty started + +00:32:34.399 --> 00:32:36.640 +starting to set in but uh yeah I just + +00:32:36.640 --> 00:32:37.600 +wanted to + +00:32:37.600 --> 00:32:40.399 +um rejoin everyone and just say that + +00:32:40.399 --> 00:32:40.880 +thank you + +00:32:40.880 --> 00:32:42.320 +so much to all the organizers who have + +00:32:42.320 --> 00:32:44.640 +been helping us uh we've done a stellar + +00:32:44.640 --> 00:32:45.279 +job + +00:32:45.279 --> 00:32:47.279 +that I believe at least this year of + +00:32:47.279 --> 00:32:48.880 +keeping things on track + +00:32:48.880 --> 00:32:51.440 +and I hope that all of you have been + +00:32:51.440 --> 00:32:53.039 +able to enjoy this + +00:32:53.039 --> 00:32:56.240 +and yeah I don't have any anyone + +00:32:56.240 --> 00:32:58.480 +in particular to thank you know uh for + +00:32:58.480 --> 00:32:59.840 +me free software was + +00:32:59.840 --> 00:33:01.919 +for a very long time something I did in + +00:33:01.919 --> 00:33:02.960 +my bedroom + +00:33:02.960 --> 00:33:04.559 +on the side of my studies and generally + +00:33:04.559 --> 00:33:06.080 +when I was procrastinating + +00:33:06.080 --> 00:33:08.720 +from writing that one particular essay + +00:33:08.720 --> 00:33:10.559 +or that one particular thesis + +00:33:10.559 --> 00:33:13.120 +you know I did my old mood stuff in the + +00:33:13.120 --> 00:33:13.919 +background so + +00:33:13.919 --> 00:33:16.159 +just to be able to you know join the + +00:33:16.159 --> 00:33:17.440 +community + +00:33:17.440 --> 00:33:19.360 +when normally I got the chance to you + +00:33:19.360 --> 00:33:21.279 +know write some code for it and try to + +00:33:21.279 --> 00:33:23.600 +animate to community but also to be part + +00:33:23.600 --> 00:33:24.399 +of an event + +00:33:24.399 --> 00:33:28.480 +that is so genuine + +00:33:28.480 --> 00:33:30.960 +in its mission so genuine in the way + +00:33:30.960 --> 00:33:31.519 +that + +00:33:31.519 --> 00:33:34.799 +we got speakers together we had you know + +00:33:34.799 --> 00:33:36.399 +we had this excitement that we wanted to + +00:33:36.399 --> 00:33:38.000 +share and judging + +00:33:38.000 --> 00:33:39.360 +by the reactions we've had over the + +00:33:39.360 --> 00:33:41.200 +couple of days you know I I believe + +00:33:41.200 --> 00:33:41.840 +we've + +00:33:41.840 --> 00:33:44.799 +completely hit our target and as corwin + +00:33:44.799 --> 00:33:45.679 +said yesterday I + +00:33:45.679 --> 00:33:48.320 +am I guess I suppose a little humbled I + +00:33:48.320 --> 00:33:50.000 +know it might sound weird for me because + +00:33:50.000 --> 00:33:50.320 +I'm + +00:33:50.320 --> 00:33:52.240 +from britain all the time but when we're + +00:33:52.240 --> 00:33:53.760 +going to press stop + +00:33:53.760 --> 00:33:56.080 +to diet you know for the broadcast I + +00:33:56.080 --> 00:33:56.799 +think it's + +00:33:56.799 --> 00:33:59.840 +going to start slowly dawning slowly + +00:33:59.840 --> 00:34:02.880 +sorry french accent coming back slowly + +00:34:02.880 --> 00:34:06.480 +dawning on me what we've done and + +00:34:06.480 --> 00:34:08.320 +yeah it'll take me a couple of weeks to + +00:34:08.320 --> 00:34:09.520 +recover mentally + +00:34:09.520 --> 00:34:12.000 +spiritually physically and whatnot but I + +00:34:12.000 --> 00:34:13.599 +believe after I'll be able to enjoy what + +00:34:13.599 --> 00:34:15.599 +we've been able to do and for that + +00:34:15.599 --> 00:34:20.800 +thank you so much + +00:34:20.800 --> 00:34:24.480 +um yeah it's you're still you know kind + +00:34:24.480 --> 00:34:25.919 +of in the moment and + +00:34:25.919 --> 00:34:29.359 +um kind of maybe you haven't quite grabs + +00:34:29.359 --> 00:34:32.159 +grasped at all yet but yeah I think + +00:34:32.159 --> 00:34:33.359 +it'll + +00:34:33.359 --> 00:34:36.079 +start hitting us all individually at + +00:34:36.079 --> 00:34:37.599 +different points over the next couple of + +00:34:37.599 --> 00:34:39.119 +days or weeks + +00:34:39.119 --> 00:34:42.079 +um as we take some time to you know rest + +00:34:42.079 --> 00:34:43.599 +up and re-energize + +00:34:43.599 --> 00:34:47.359 +and you know keep going forward um + +00:34:47.359 --> 00:34:50.960 +yeah so on that note if um + +00:34:50.960 --> 00:34:53.839 +no one else has anything to add I will + +00:34:53.839 --> 00:34:54.320 +um + +00:34:54.320 --> 00:34:57.200 +[ __ ] you all farewell and thank you + +00:34:57.200 --> 00:34:59.680 +everyone once again for joining us + +00:34:59.680 --> 00:35:03.839 +and making an awesome amazing EmacsConf 2020. + +00:35:03.839 --> 00:35:06.079 +um just quickly say we weren't sure that + +00:35:06.079 --> 00:35:07.680 +we will be able to pull it off + +00:35:07.680 --> 00:35:09.599 +given all the madness going on around + +00:35:09.599 --> 00:35:10.720 +the world but + +00:35:10.720 --> 00:35:13.839 +for us to have broken um so many of our + +00:35:13.839 --> 00:35:14.880 +numbers and records + +00:35:14.880 --> 00:35:17.440 +for all of them basically um you know we + +00:35:17.440 --> 00:35:18.240 +just had + +00:35:18.240 --> 00:35:20.240 +just about like two and a half or three + +00:35:20.240 --> 00:35:22.320 +terabytes of streaming bandwidth usage + +00:35:22.320 --> 00:35:22.960 +so that's + +00:35:22.960 --> 00:35:25.520 +incredible and so many people join in so + +00:35:25.520 --> 00:35:26.400 +many talks + +00:35:26.400 --> 00:35:30.079 +so it's amazing thank you um + +00:35:30.079 --> 00:35:31.839 +yes I see a question coming will the + +00:35:31.839 --> 00:35:34.040 +ether pad be archived somewhere on + +00:35:34.040 --> 00:35:35.440 +imageconf.org + +00:35:35.440 --> 00:35:37.920 +um and the answer is yes I think sasha + +00:35:37.920 --> 00:35:38.960 +is answering + +00:35:38.960 --> 00:35:41.800 +um yes it will be linked under + +00:35:41.800 --> 00:35:43.200 +imanxconf.org + +00:35:43.200 --> 00:35:46.400 +2020 um that page will contain all the + +00:35:46.400 --> 00:35:47.680 +resources about + +00:35:47.680 --> 00:35:50.880 +everything um you know + +00:35:50.880 --> 00:35:54.880 +uh about imsgufton20 2020 sorry + +00:35:54.880 --> 00:35:57.599 +um yeah now you see some people saying + +00:35:57.599 --> 00:35:59.119 +early happy birthday to me + +00:35:59.119 --> 00:36:02.320 +um thank you so very much um I think + +00:36:02.320 --> 00:36:02.800 +this + +00:36:02.800 --> 00:36:05.760 +uh this conference was an incredible um + +00:36:05.760 --> 00:36:06.160 +I guess + +00:36:06.160 --> 00:36:09.200 +prelude to to my birthday um + +00:36:09.200 --> 00:36:12.880 +so thank you all and on that note + +00:36:12.880 --> 00:36:15.599 +I will end the stream and say goodbye + +00:36:15.599 --> 00:36:15.920 +and + +00:36:15.920 --> 00:36:19.680 +beat you very well bye + +00:36:19.680 --> 00:36:23.040 +bye everyone and then you're going to + +00:36:23.040 --> 00:36:23.839 +play the + +00:36:23.839 --> 00:36:27.119 +devils yep exactly okay + +00:36:27.119 --> 00:36:30.960 +bye bye -- cgit v1.2.3