From a835a2b017829395cba32e3fc2dc19a51f32cf69 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sun, 13 Dec 2020 01:35:03 -0500 Subject: Add subtitles for talk07 --- 2020/info/07.md | 5 +- 2020/organizers-notebook.md | 89 +- 2020/organizers-notebook.org | 9 +- ...aradigm--questions--sid-kasivajhula-autogen.vtt | 361 ------ ...ble-ui-paradigm--questions--sid-kasivajhula.vtt | 353 ++++++ ...alable-ui-paradigm--sid-kasivajhula-autogen.vtt | 1336 -------------------- ...acs-a-scalable-ui-paradigm--sid-kasivajhula.vtt | 1285 +++++++++++++++++++ 7 files changed, 1692 insertions(+), 1746 deletions(-) delete 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--questions--sid-kasivajhula.vtt delete 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--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt (limited to '2020') diff --git a/2020/info/07.md b/2020/info/07.md index b1321d4f..46446b99 100644 --- a/2020/info/07.md +++ b/2020/info/07.md @@ -1,9 +1,12 @@ # Beyond Vim and Emacs: A Scalable UI Paradigm Sid Kasivajhula -[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.webm"]] +[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.webm" subtitles="emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt" size="161MB"]] [Download compressed .webm video (45.1M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula--vp9-q56-video-original-audio.webm) +[[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula.webm" subtitles="emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula.vtt" size="40MB"]] +[Download compressed .webm video (5M)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula--vp9-q56-video-original-audio.webm) + A practiced dexterity with the arcane incantations known as keybindings is the true mark of the veteran Emacs user. Yet, it takes years to get there, and if you tried to explain what you were doing there, nobody would diff --git a/2020/organizers-notebook.md b/2020/organizers-notebook.md index a57c0b4b..233b2aac 100644 --- a/2020/organizers-notebook.md +++ b/2020/organizers-notebook.md @@ -22,54 +22,55 @@ Either subtitles (with timestamps) or a text transcript (no timestamps) is perfe ## Edit automatic subtitles -No need to worry about end timestamps, since I'll set them to the -beginning timestamp. To reduce duplication of work, make sure you have the latest copy of organizers-notebook.org. Mark the one you +To reduce duplication of work, make sure you have the latest copy of organizers-notebook.org. Mark the one you want to do by prepending your name to the TODO title, and commit organizers-notebook.org back to the repo. -- [ ] <./subtitles/emacsconf-2020--00-opening-remarks-autogen.sbv> -- [X] sachac <./subtitles/emacsconf-2020--03-idea-to-novel-superstructure-emacs-for-writing--bala-ramadurai-autogen.sbv> +I modified the `subed` package to work with VTT files. The modified version is at , and I've submitted a pull request. It's pretty cool! If you copy the webm to the same directory and name it with the same filename (except ending in .webm instead of .vtt, of course), subed will automatically synchronize as you move through the subtitles. + +- [ ] <./subtitles/emacsconf-2020--00-opening-remarks-autogen.vtt> +- [X] sachac <./subtitles/emacsconf-2020--03-idea-to-novel-superstructure-emacs-for-writing--bala-ramadurai-autogen.vtt> See -- [X] sachac <./subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory-autogen.sbv> -- [X] sachac <./subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux-autogen.sbv> -- [X] sachac <./subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--questions--grant-shangreaux-autogen.sbv> -- [ ] sachac <./subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--09-orgmode-your-life-in-plain-text--rainer-koenig-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--11-the-org-gtd-package-opinions-about-getting-things-done--aldric-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--12-one-big-ass-org-file-or-multiple-tiny-ones-finally-the-end-of-the-debate--leo-vivier-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--13-experience-report-steps-to-emacs-hyper-notebooks--joseph-corneli-raymond-puzio-cameron-ray-smith-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--14-readme-driven-design--adam-ard-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--15-moving-from-jekyll-to-orgmode-an-experience-report--adolfo-villafiorita-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--16-org-roam-presentation-demonstration-and-whats-on-the-horizon--leo-vivier-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--17-org-mode-and-org-roam-for-scholars-and-researchers--noorah-alhasan-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--18-org-roam-technical-presentation--leo-vivier-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--19-sharing-blogs-and-more-with-org-webring--brett-gilio-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--questions--tuan-anh-nguyen-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--tuan-anh-nguyen-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--25-traverse-complex-json-structures-with-live-feedback-counsel-jq--zen-monk-alain-m-lafon-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--26-emacs-as-a-highschooler-how-it-changed-my-life--pierce-wang-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--26-emacs-as-a-highschooler-how-it-changed-my-life--questions--pierce-wang-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--28-welcome-to-the-dungeon--erik-elmshauser-corwin-brust-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--30-a-tour-of-vterm--questions--gabriele-bozzola-sbozzolo-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--31-lakota-language-and-emacs--grant-shangreaux-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--31-lakota-language-and-emacs--questions--grant-shangreaux-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--32-object-oriented-code-in-the-gnus-newsreader--eric-abrahamsen-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--33-maxima-a-computer-algebra-system-in-emacs--fermin.sbv> -- [ ] <./subtitles/emacsconf-2020--34-extend-emacs-to-modern-gui-applications-with-eaf--matthew-zeng-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--questions--zachary-kanfer-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--38-emacs-development-update--john-wiegley-autogen.sbv> -- [ ] bhavin192 <./subtitles/emacsconf-2020--39-nongnu-elpa--questions--richard-stallman-autogen.sbv> -- [X] bhavin192 <./subtitles/emacsconf-2020--39-nongnu-elpa--richard-stallman-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--40-closing-remarks-part-1-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--40-closing-remarks-part-2-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--41-opening-remarks-autogen.sbv> -- [ ] <./subtitles/emacsconf-2020--42-closing-remarks-autogen.sbv> +- [X] sachac <./subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory-autogen.vtt> +- [X] sachac <./subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux-autogen.vtt> +- [X] sachac <./subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--questions--grant-shangreaux-autogen.vtt> +- [X] sachac <./subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.vtt> +- [X] sachac <./subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--09-orgmode-your-life-in-plain-text--rainer-koenig-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--11-the-org-gtd-package-opinions-about-getting-things-done--aldric-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--12-one-big-ass-org-file-or-multiple-tiny-ones-finally-the-end-of-the-debate--leo-vivier-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--13-experience-report-steps-to-emacs-hyper-notebooks--joseph-corneli-raymond-puzio-cameron-ray-smith-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--14-readme-driven-design--adam-ard-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--15-moving-from-jekyll-to-orgmode-an-experience-report--adolfo-villafiorita-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--16-org-roam-presentation-demonstration-and-whats-on-the-horizon--leo-vivier-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--17-org-mode-and-org-roam-for-scholars-and-researchers--noorah-alhasan-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--18-org-roam-technical-presentation--leo-vivier-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--19-sharing-blogs-and-more-with-org-webring--brett-gilio-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--20-omg-macros--corwin-brust-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--21-on-why-most-of-the-best-features-in-eev-look-like-5-minute-hacks--eduardo-ochs-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--22-powering-up-special-blocks--musa-al-hassy-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--questions--tuan-anh-nguyen-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--23-incremental-parsing-with-emacs-tree-sitter--tuan-anh-nguyen-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--25-traverse-complex-json-structures-with-live-feedback-counsel-jq--zen-monk-alain-m-lafon-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--26-emacs-as-a-highschooler-how-it-changed-my-life--pierce-wang-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--26-emacs-as-a-highschooler-how-it-changed-my-life--questions--pierce-wang-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--27-state-of-retro-gaming-in-emacs-chip8--vasilij-wasamasa-schneidermann-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--28-welcome-to-the-dungeon--erik-elmshauser-corwin-brust-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--30-a-tour-of-vterm--questions--gabriele-bozzola-sbozzolo-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--31-lakota-language-and-emacs--grant-shangreaux-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--31-lakota-language-and-emacs--questions--grant-shangreaux-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--32-object-oriented-code-in-the-gnus-newsreader--eric-abrahamsen-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--33-maxima-a-computer-algebra-system-in-emacs--fermin.vtt> +- [ ] <./subtitles/emacsconf-2020--34-extend-emacs-to-modern-gui-applications-with-eaf--matthew-zeng-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--35-waveing-at-repetitive-repetitive-repetitive-music-zmusic--questions--zachary-kanfer-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--38-emacs-development-update--john-wiegley-autogen.vtt> +- [ ] bhavin192 <./subtitles/emacsconf-2020--39-nongnu-elpa--questions--richard-stallman-autogen.vtt> +- [X] bhavin192 <./subtitles/emacsconf-2020--39-nongnu-elpa--richard-stallman-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--40-closing-remarks-part-1-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--40-closing-remarks-part-2-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--41-opening-remarks-autogen.vtt> +- [ ] <./subtitles/emacsconf-2020--42-closing-remarks-autogen.vtt> # Assumptions and settings diff --git a/2020/organizers-notebook.org b/2020/organizers-notebook.org index f207237a..40d24d2f 100644 --- a/2020/organizers-notebook.org +++ b/2020/organizers-notebook.org @@ -22,19 +22,20 @@ Either subtitles (with timestamps) or a text transcript (no timestamps) is perfe ** Edit automatic subtitles -No need to worry about end timestamps, since I'll set them to the -beginning timestamp. To reduce duplication of work, make sure you have the latest copy of organizers-notebook.org. Mark the one you +To reduce duplication of work, make sure you have the latest copy of organizers-notebook.org. Mark the one you want to do by prepending your name to the TODO title, and commit organizers-notebook.org back to the repo. +I modified the =subed= package to work with VTT files. The modified version is at https://github.com/sachac/subed/tree/subed-vtt , and I've submitted a pull request. It's pretty cool! If you copy the webm to the same directory and name it with the same filename (except ending in .webm instead of .vtt, of course), subed will automatically synchronize as you move through the subtitles. + - [ ] [[./subtitles/emacsconf-2020--00-opening-remarks-autogen.vtt]] - [X] sachac [[./subtitles/emacsconf-2020--03-idea-to-novel-superstructure-emacs-for-writing--bala-ramadurai-autogen.vtt]] See [[file:info/03/screenplay.fountain]] - [X] sachac [[./subtitles/emacsconf-2020--04-music-in-plain-text--jonathan-gregory-autogen.vtt]] - [X] sachac [[./subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--grant-shangreaux-autogen.vtt]] - [X] sachac [[./subtitles/emacsconf-2020--05-bard-bivoumacs-building-a-bandcamp-like-page-for-an-album-of-music--questions--grant-shangreaux-autogen.vtt]] -- [ ] sachac [[./subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.vtt]] -- [ ] [[./subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.vtt]] +- [X] sachac [[./subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.vtt]] +- [X] sachac [[./subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.vtt]] - [ ] [[./subtitles/emacsconf-2020--09-orgmode-your-life-in-plain-text--rainer-koenig-autogen.vtt]] - [ ] [[./subtitles/emacsconf-2020--11-the-org-gtd-package-opinions-about-getting-things-done--aldric-autogen.vtt]] - [ ] [[./subtitles/emacsconf-2020--12-one-big-ass-org-file-or-multiple-tiny-ones-finally-the-end-of-the-debate--leo-vivier-autogen.vtt]] 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 deleted file mode 100644 index 9cbec458..00000000 --- a/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula-autogen.vtt +++ /dev/null @@ -1,361 +0,0 @@ -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--questions--sid-kasivajhula.vtt b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula.vtt new file mode 100644 index 00000000..ebe18254 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--questions--sid-kasivajhula.vtt @@ -0,0 +1,353 @@ +WEBVTT + +00:00:00.080 --> 00:00:01.680 +(Amin: ... 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, + +00:00:06.160 --> 00:00:08.000 +probably symex-mode... + +00:00:08.000 --> 00:00:10.400 +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 +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 +I've 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 +england, I called it + +00:00:26.000 --> 00:00:28.560 +all kinds of things, but at the moment + +00:00:28.560 --> 00:00:31.439 +you can find it on my Github. There's a 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 +https://github.com/countvajhula, you'll see + +00:00:35.600 --> 00:00:38.879 +the package there. It's currently + +00:00:38.879 --> 00:00:39.840 +named Indra, but + +00:00:39.840 --> 00:00:42.879 +I'm not sure. (Organizer: Package is +called rigpa.) + +00:00:42.879 --> 00:00:46.800 +Actually, yes, the second one is + +00:00:46.800 --> 00:00:49.920 +correct. That was the name that I selected + +00:00:49.920 --> 00:00:53.280 +last night. That's because it... + +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 +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 Dvorak + +00:01:13.119 --> 00:01:15.759 +or however that's pronounced. + +00:01:15.759 --> 00:01:16.960 +This has always bugged me. + +00:01:16.960 --> 00:01:20.400 +Is there an Xmodmap 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 + +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 row, + +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 + +00:01:48.159 --> 00:01:51.040 +the power that Vim--or the + +00:01:51.040 --> 00:01:52.240 +flexibility, the + +00:01:52.240 --> 00:01:55.600 +spiral that Vim 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 Dvorak keyboard, + +00:01:58.719 --> 00:01:59.920 +even though 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 +"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 of mode" + +00:02:17.280 --> 00:02:20.840 +to do some interesting editing? + +00:02:20.840 --> 00:02:24.640 +Probably the main thing would be + +00:02:25.120 --> 00:02:27.920 +the keystrokes would be less + +00:02:27.920 --> 00:02:28.959 +contrived. + +00:02:28.959 --> 00:02:32.080 +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 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 the Emacs 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. 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, a set of keys. + +00:02:58.720 --> 00:03:02.840 +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. 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 +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 +(Amin: 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 +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 a simple way. + +00:03:56.159 --> 00:03:59.040 +You can also do it visually as we did. + +00:03:59.040 --> 00:04:02.720 +But 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 +(Amin: 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. (Amin: Feel free to 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 +(Amin: 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 +(Amin: 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 deleted file mode 100644 index e4508034..00000000 --- a/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula-autogen.vtt +++ /dev/null @@ -1,1336 +0,0 @@ -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--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt new file mode 100644 index 00000000..14913a32 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--07-beyond-vim-and-emacs-a-scalable-ui-paradigm--sid-kasivajhula.vtt @@ -0,0 +1,1285 @@ +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 +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 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: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. 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 +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. + +00:03:08.319 --> 00:03:11.120 +They compete for space on the + +00:03:11.120 --> 00:03:12.720 +keyboard. + +00:03:12.720 --> 00:03:15.760 +An alternative + +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 +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 +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 +It's the same keystrokes, different + +00:03:57.519 --> 00:03:59.120 +contexts. + +00:03:59.120 --> 00:04:01.360 +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:15.439 +mode 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 +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. 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... 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. 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 lines + +00:04:54.240 --> 00:04:57.520 +up and down left and right and so on. + +00:04:59.120 --> 00:05:00.880 +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. You can + +00:05:12.400 --> 00:05:15.759 +move spatially amongst the windows or + +00:05:15.759 --> 00:05:17.520 +do transformations on the windows + +00:05:17.520 --> 00:05:20.850 +using the same keystrokes. + +00:05:25.360 --> 00:05:28.720 +So let's go to... + +00:05:28.720 --> 00:05:32.800 +Right. One of the things, + +00:05:32.800 --> 00:05:35.280 +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. + +00:05:40.720 --> 00:05:42.320 +If you can name something, then + +00:05:43.759 --> 00:05:46.720 +you have power over it. 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:55.360 --> 00:05:56.960 +in your editing language. 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. 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. In fact, + +00:06:10.800 --> 00:06:14.240 +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 +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 + +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 +present in the buffer, + +00:06:40.960 --> 00:06:44.880 +which we knew about 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 to. + +00:06:53.039 --> 00:06:57.280 +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. 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 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:24.240 --> 00:07:27.360 +Lisp code (or code in general, but + +00:07:27.360 --> 00:07:30.880 +Lisp 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. For Lisp code in particular, + +00:07:37.599 --> 00:07:40.960 +we have a mode called symex-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: hjkl + +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 +You can run the code. + +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 +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 +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, symex-mode. + +00:08:28.960 --> 00:08:31.039 +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 symex + +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 +symex-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 symex-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. Now you find symex is + +00:09:03.760 --> 00:09:05.600 +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 symex. + +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:21.519 --> 00:09:23.839 +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 +symex, it 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 symex, escape to window. + +00:09:33.600 --> 00:09:37.600 +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, + +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 +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 hit Escape, it's still in line mode. + +00:10:05.120 --> 00:10:07.200 +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 +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 +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 +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 rows. 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:40.959 --> 00:10:44.160 +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 Lisp tower. + +00:10:53.680 --> 00:10:56.959 +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 +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 +The way we go to tower mode is + +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 +We see that there are many towers + +00:11:27.440 --> 00:11:29.279 +available. We're now... + +00:11:29.279 --> 00:11:32.640 +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 +to be available and for use in + +00:11:39.120 --> 00:11:41.440 +different buffers. 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:48.000 --> 00:11:49.920 +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 +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, and + +00:12:09.839 --> 00:12:13.040 +so on. 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 enter, + +00:12:29.440 --> 00:12:33.360 +that you alternate between. + +00:12:33.360 --> 00:12:36.639 +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 +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 +In any case, you can see that we're in + +00:13:00.959 --> 00:13:03.120 +buffer mode. 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 see where we're + +00:13:26.000 --> 00:13:26.320 +at. + +00:13:26.320 --> 00:13:28.240 +Rumpelstiltskin principle... We talked + +00:13:28.240 --> 00:13:30.160 +about mode mode. + +00:13:30.160 --> 00:13:32.240 +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:39.600 --> 00:13:42.240 +We saw the different towers, and + +00:13:42.240 --> 00:13:43.199 +in fact, + +00:13:43.199 --> 00:13:46.639 +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. 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 Emacs + +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:13.360 --> 00:14:15.360 +So there's... 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 direction is--and we'll + +00:14:25.120 --> 00:14:33.760 +visualize it 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 + +00:14:49.120 --> 00:14:51.680 +ground editing experience. + +00:14:51.680 --> 00:14:53.040 +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 +and so on. + +00:15:07.040 --> 00:15:10.800 +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 +That is the great power of + +00:15:52.000 --> 00:15:55.440 +this approach: that + +00:15:55.440 --> 00:15:58.720 +all of the different levels are the + +00:15:58.720 --> 00:16:00.880 +same. + +00:16:00.880 --> 00:16:03.839 +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: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 + +00:16:36.880 --> 00:16:40.079 +at this repo on github. + +00:16:40.079 --> 00:16:44.079 +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 +helpful. You can learn more about + +00:16:49.199 --> 00:16:50.560 +this at + +00:16:50.560 --> 00:16:53.920 +drym.org, which is where I house + +00:16:53.920 --> 00:16:55.920 +the research that I work on. 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 +You can follow me on + +00:17:22.799 --> 00:17:26.319 +Twitter at @countvajhula. + +00:17:26.319 --> 00:17:31.919 +That's it! Thank you. -- cgit v1.2.3