<a name="transcript"></a>
# Transcript
[[!template new="1" text="Hi, my name is Matthew Zeng," start="00:00:03.040" video="mainVideo" id=subtitle]]
[[!template text="aka MT or Mingde." start="00:00:05.206" video="mainVideo" id=subtitle]]
[[!template text="I am one of the maintainers" start="00:00:14.286" video="mainVideo" id=subtitle]]
[[!template text="I was also here last year during EmacsConf2020" start="00:00:18.566" video="mainVideo" id=subtitle]]
[[!template text="and did a 20 minute presentation" start="00:00:22.606" video="mainVideo" id=subtitle]]
[[!template text="as well as a small demo." start="00:00:26.606" video="mainVideo" id=subtitle]]
[[!template text="A lot of things had changed since 2020," start="00:00:28.486" video="mainVideo" id=subtitle]]
[[!template text="and that's why today I'm here to present:" start="00:00:31.966" video="mainVideo" id=subtitle]]
[[!template text="Emacs Application Framework, A 2021 Update." start="00:00:34.406" video="mainVideo" id=subtitle]]
[[!template new="1" text="So we all know Emacs," start="00:00:38.046" video="mainVideo" id=subtitle]]
[[!template text="and we definitely know that" start="00:00:41.086" video="mainVideo" id=subtitle]]
[[!template text="Emacs is not just a text editor," start="00:00:42.326" video="mainVideo" id=subtitle]]
[[!template text="but a text-centric work environment," start="00:00:44.486" video="mainVideo" id=subtitle]]
[[!template text="We all want that, right?" start="00:00:53.126" video="mainVideo" id=subtitle]]
[[!template text="Therefore the EAF project wants to" start="00:00:55.361" video="mainVideo" id=subtitle]]
[[!template text="solve this problem while also" start="00:00:58.366" video="mainVideo" id=subtitle]]
[[!template text="retaining the rich Emacs ecosystem" start="00:01:00.286" video="mainVideo" id=subtitle]]
[[!template text="and its customizability and extensibility." start="00:01:02.806" video="mainVideo" id=subtitle]]
[[!template text="The solution is to outsource the hard part" start="00:01:06.046" video="mainVideo" id=subtitle]]
[[!template text="to Python and NodeJS" start="00:01:10.726" video="mainVideo" id=subtitle]]
[[!template text="by bridging Elisp with them" start="00:01:12.486" video="mainVideo" id=subtitle]]
[[!template text="so that Python and JavaScript" start="00:01:14.366" video="mainVideo" id=subtitle]]
[[!template text="can do the hard work" start="00:01:16.126" video="mainVideo" id=subtitle]]
[[!template text="and minimize the Elisp workload," start="00:01:17.926" video="mainVideo" id=subtitle]]
[[!template text="Do note that Python and JavaScript" start="00:01:24.446" video="mainVideo" id=subtitle]]
[[!template text="already have a very mature ecosystem" start="00:01:27.646" video="mainVideo" id=subtitle]]
[[!template text="that provides a foundation" start="00:01:30.406" video="mainVideo" id=subtitle]]
[[!template text="to Python and JavaScript ecosystems," start="00:01:38.006" video="mainVideo" id=subtitle]]
[[!template text="modern multimedia apps too." start="00:01:42.286" video="mainVideo" id=subtitle]]
[[!template text="As we're on a tight schedule today," start="00:01:44.366" video="mainVideo" id=subtitle]]
[[!template text="I can't go into every detail" start="00:01:47.606" video="mainVideo" id=subtitle]]
[[!template text="about how EAF achieves this." start="00:01:49.726" video="mainVideo" id=subtitle]]
[[!template text="I did go through a lot of things" start="00:01:51.486" video="mainVideo" id=subtitle]]
[[!template text="during last year's presentation," start="00:01:53.606" video="mainVideo" id=subtitle]]
[[!template text="to check out that presentation," start="00:01:57.326" video="mainVideo" id=subtitle]]
[[!template text="Today we're focusing on *what changed*." start="00:02:01.686" video="mainVideo" id=subtitle]]
[[!template new="1" text="Now the first change" start="00:02:05.726" video="mainVideo" id=subtitle]]
[[!template text="that you'll definitely notice" start="00:02:09.606" video="mainVideo" id=subtitle]]
[[!template text="This logo uses gearwheels" start="00:02:12.686" video="mainVideo" id=subtitle]]
[[!template text="to web and multimedia applications" start="00:02:18.486" video="mainVideo" id=subtitle]]
[[!template new="1" text="Since last year, EAF has replaced" start="00:02:23.286" video="mainVideo" id=subtitle]]
[[!template text="the DBus communication technology" start="00:02:28.726" video="mainVideo" id=subtitle]]
[[!template text="with the cross-platform EPC," start="00:02:30.886" video="mainVideo" id=subtitle]]
[[!template text="This and some other changes" start="00:02:42.160" video="mainVideo" id=subtitle]]
[[!template text="enable EAF to support Windows," start="00:02:43.760" video="mainVideo" id=subtitle]]
[[!template text="Windows 10 and Windows Subsystem for Linux," start="00:02:46.080" video="mainVideo" id=subtitle]]
[[!template text="as well as all distros that support" start="00:02:49.519" video="mainVideo" id=subtitle]]
[[!template text="pacman, apt, dnf, pkg," start="00:02:51.840" video="mainVideo" id=subtitle]]
[[!template text="zypper package installer commands," start="00:02:54.319" video="mainVideo" id=subtitle]]
[[!template text="which includes Arch-based, Debian," start="00:02:56.959" video="mainVideo" id=subtitle]]
[[!template text="or Ubuntu-based, Fedora, etc." start="00:02:59.840" video="mainVideo" id=subtitle]]
[[!template text="However, do note that the maOS support" start="00:03:04.720" video="mainVideo" id=subtitle]]
[[!template text="works with some known issues." start="00:03:08.239" video="mainVideo" id=subtitle]]
[[!template text="Have a look if you want to try out." start="00:03:10.319" video="mainVideo" id=subtitle]]
[[!template new="1" text="Previously, EAF was able to make Elisp" start="00:03:15.360" video="mainVideo" id=subtitle]]
[[!template text="communicate with Python, as well as" start="00:03:18.400" video="mainVideo" id=subtitle]]
[[!template text="Python to communicate with JavaScript," start="00:03:20.720" video="mainVideo" id=subtitle]]
[[!template text="meaning that Elisp can call" start="00:03:23.280" video="mainVideo" id=subtitle]]
[[!template text="Python functions and vice versa," start="00:03:24.959" video="mainVideo" id=subtitle]]
[[!template text="and Python can call JavaScript functions" start="00:03:27.280" video="mainVideo" id=subtitle]]
[[!template text="and vice versa, but if you want Elisp" start="00:03:29.680" video="mainVideo" id=subtitle]]
[[!template text="to communicate with JavaScript," start="00:03:32.560" video="mainVideo" id=subtitle]]
[[!template text="you have to go through Python," start="00:03:34.720" video="mainVideo" id=subtitle]]
[[!template text="which is rather troublesome." start="00:03:36.239" video="mainVideo" id=subtitle]]
[[!template text="Now, thanks to the EPC," start="00:03:38.879" video="mainVideo" id=subtitle]]
[[!template text="Elisp can communicate" start="00:03:41.120" video="mainVideo" id=subtitle]]
[[!template text="with JavaScript directly" start="00:03:42.400" video="mainVideo" id=subtitle]]
[[!template text="using =eval_js= function" start="00:03:43.840" video="mainVideo" id=subtitle]]
[[!template text="and =eval_emacs_function=" start="00:03:45.519" video="mainVideo" id=subtitle]]
[[!template text="in Elisp and Python respectively." start="00:03:47.040" video="mainVideo" id=subtitle]]
[[!template text="This greatly simplifies the code" start="00:03:49.840" video="mainVideo" id=subtitle]]
[[!template text="that will be needed" start="00:03:51.840" video="mainVideo" id=subtitle]]
[[!template text="to write a web app in EAF." start="00:03:52.640" video="mainVideo" id=subtitle]]
[[!template new="1" text="Speaking of web applications," start="00:03:56.959" video="mainVideo" id=subtitle]]
[[!template text="VueJS is a web framework" start="00:03:59.120" video="mainVideo" id=subtitle]]
[[!template text="that's been gaining a lot of popularity" start="00:04:01.200" video="mainVideo" id=subtitle]]
[[!template text="in recent years" start="00:04:03.840" video="mainVideo" id=subtitle]]
[[!template text="for its simplicity and functionality." start="00:04:04.720" video="mainVideo" id=subtitle]]
[[!template text="In the past, you were only able to write" start="00:04:08.959" video="mainVideo" id=subtitle]]
[[!template text="simple JavaScript and HTML web apps" start="00:04:11.840" video="mainVideo" id=subtitle]]
[[!template text="for EAF. It was quite some work" start="00:04:14.319" video="mainVideo" id=subtitle]]
[[!template text="to create a full-featured web application." start="00:04:17.280" video="mainVideo" id=subtitle]]
[[!template text="Now you can write new apps using EAF" start="00:04:20.880" video="mainVideo" id=subtitle]]
[[!template text="that work seamlessly with Emacs and Elisp." start="00:04:23.360" video="mainVideo" id=subtitle]]
[[!template text="There are a few existing EAF apps" start="00:04:27.919" video="mainVideo" id=subtitle]]
[[!template text="written with Vue already" start="00:04:30.880" video="mainVideo" id=subtitle]]
[[!template text="to demonstrate the possibilities" start="00:04:32.800" video="mainVideo" id=subtitle]]
[[!template text="of Vue-based extensions in Emacs." start="00:04:34.639" video="mainVideo" id=subtitle]]
[[!template text="The first one is the EAF File Manager," start="00:04:38.720" video="mainVideo" id=subtitle]]
[[!template text="written by ManateeLazycat himself," start="00:04:41.520" video="mainVideo" id=subtitle]]
[[!template text="as an alternative option to dired," start="00:04:44.160" video="mainVideo" id=subtitle]]
[[!template text="as he found dired's performance" start="00:04:46.400" video="mainVideo" id=subtitle]]
[[!template text="to lag considerably" start="00:04:47.919" video="mainVideo" id=subtitle]]
[[!template text="when there are way too many files." start="00:04:49.280" video="mainVideo" id=subtitle]]
[[!template text="It supports wdired and fd functionality," start="00:04:52.240" video="mainVideo" id=subtitle]]
[[!template text="and let me demonstrate that to you." start="00:04:56.080" video="mainVideo" id=subtitle]]
[[!template text="See? And this is the app." start="00:05:01.600" video="mainVideo" id=subtitle]]
[[!template text="Go back here." start="00:05:06.160" video="mainVideo" id=subtitle]]
[[!template text="Another one is the EAF RSS Reader," start="00:05:08.639" video="mainVideo" id=subtitle]]
[[!template text="written by our Summer of Code 2021 student" start="00:05:12.240" video="mainVideo" id=subtitle]]
[[!template text="ShaoChenHeng. It is a fast RSS reader" start="00:05:15.039" video="mainVideo" id=subtitle]]
[[!template text="that uses the EAF browser for previews," start="00:05:18.240" video="mainVideo" id=subtitle]]
[[!template text="and let me demo that to you as well." start="00:05:21.600" video="mainVideo" id=subtitle]]
[[!template text="Pragmatic Emacs." start="00:05:32.479" video="mainVideo" id=subtitle]]
[[!template text="And you can view every site" start="00:05:35.039" video="mainVideo" id=subtitle]]
[[!template text="in the EAF Browser." start="00:05:37.199" video="mainVideo" id=subtitle]]
[[!template new="1" text="To ease the process" start="00:05:45.360" video="mainVideo" id=subtitle]]
[[!template text="of creating a new EAF application," start="00:05:46.880" video="mainVideo" id=subtitle]]
[[!template text="we've separated the EAF core and its apps," start="00:05:49.840" video="mainVideo" id=subtitle]]
[[!template text="so that EAF apps now have" start="00:05:52.880" video="mainVideo" id=subtitle]]
[[!template text="their individual repositories." start="00:05:54.479" video="mainVideo" id=subtitle]]
[[!template text="You can find them under" start="00:05:56.800" video="mainVideo" id=subtitle]]
[[!template text="the emacs-eaf GitHub organization." start="00:05:58.000" video="mainVideo" id=subtitle]]
[[!template text="Because of the number of EAF apps" start="00:06:02.000" video="mainVideo" id=subtitle]]
[[!template text="and their dependencies" start="00:06:04.560" video="mainVideo" id=subtitle]]
[[!template text="that vary from system to system," start="00:06:05.840" video="mainVideo" id=subtitle]]
[[!template text="we've also introduced a new" start="00:06:08.319" video="mainVideo" id=subtitle]]
[[!template text="=M-x eaf-install-and-update= command" start="00:06:10.080" video="mainVideo" id=subtitle]]
[[!template text="which is a wrapper around the new" start="00:06:12.639" video="mainVideo" id=subtitle]]
[[!template text="install-eaf python script" start="00:06:14.560" video="mainVideo" id=subtitle]]
[[!template text="dedicated to installing, updating," start="00:06:17.039" video="mainVideo" id=subtitle]]
[[!template text="and maintaining EAF apps" start="00:06:19.280" video="mainVideo" id=subtitle]]
[[!template text="and their dependencies" start="00:06:20.720" video="mainVideo" id=subtitle]]
[[!template text="for the end user." start="00:06:21.680" video="mainVideo" id=subtitle]]
[[!template text="Now it is very easy" start="00:06:24.160" video="mainVideo" id=subtitle]]
[[!template text="to create a new EAF app." start="00:06:25.600" video="mainVideo" id=subtitle]]
[[!template text="You just need to do it." start="00:06:27.440" video="mainVideo" id=subtitle]]
[[!template text="You can just do it in your own repository," start="00:06:29.039" video="mainVideo" id=subtitle]]
[[!template text="such as in GitHub, GitLab, or wherever." start="00:06:31.120" video="mainVideo" id=subtitle]]
[[!template text="The first thing to do is" start="00:06:34.720" video="mainVideo" id=subtitle]]
[[!template text="to fork the eaf-demo or the eaf-vue-demo" start="00:06:36.160" video="mainVideo" id=subtitle]]
[[!template text="as a starting template," start="00:06:39.520" video="mainVideo" id=subtitle]]
[[!template text="then update the dependencies.json file" start="00:06:41.280" video="mainVideo" id=subtitle]]
[[!template text="to list the new dependencies you introduced" start="00:06:43.520" video="mainVideo" id=subtitle]]
[[!template text="on various systems." start="00:06:46.400" video="mainVideo" id=subtitle]]
[[!template text="Afterwards, once your app is finished," start="00:06:48.560" video="mainVideo" id=subtitle]]
[[!template text="you simply need to submit a PR" start="00:06:51.199" video="mainVideo" id=subtitle]]
[[!template text="to the EAF core" start="00:06:53.039" video="mainVideo" id=subtitle]]
[[!template text="that modifies the applications.json list" start="00:06:54.000" video="mainVideo" id=subtitle]]
[[!template text="to include your new app. And that's it." start="00:06:56.720" video="mainVideo" id=subtitle]]
[[!template text="Come try it out and write your own" start="00:07:03.039" video="mainVideo" id=subtitle]]
[[!template text="EAF extensions today!" start="00:07:04.720" video="mainVideo" id=subtitle]]
[[!template new="1" text="There are many other new updates." start="00:07:09.599" video="mainVideo" id=subtitle]]
[[!template text="To list a few: we reached" start="00:07:11.840" video="mainVideo" id=subtitle]]
[[!template text="more than 60 contributors, hooray!" start="00:07:13.919" video="mainVideo" id=subtitle]]
[[!template text="And also, you can now use the familiar" start="00:07:17.199" video="mainVideo" id=subtitle]]
[[!template text="Control s and Control r isearch" start="00:07:19.759" video="mainVideo" id=subtitle]]
[[!template text="for real-time search," start="00:07:22.160" video="mainVideo" id=subtitle]]
[[!template text="functioning very similar" start="00:07:23.280" video="mainVideo" id=subtitle]]
[[!template text="to the Emacs isearch," start="00:07:24.560" video="mainVideo" id=subtitle]]
[[!template text="in the EAF Browser, PDF Viewer," start="00:07:27.039" video="mainVideo" id=subtitle]]
[[!template text="and many other applications." start="00:07:29.759" video="mainVideo" id=subtitle]]
[[!template text="Additionally, you can also create" start="00:07:32.080" video="mainVideo" id=subtitle]]
[[!template text="EAF PDF annotations" start="00:07:34.000" video="mainVideo" id=subtitle]]
[[!template text="either inline or as a pop-up, etc. etc. etc." start="00:07:35.680" video="mainVideo" id=subtitle]]
[[!template text="Finally, let's talk about Popweb." start="00:07:44.319" video="mainVideo" id=subtitle]]
[[!template text="Popweb is a very, very new project" start="00:07:47.680" video="mainVideo" id=subtitle]]
[[!template text="that started like exactly two weeks ago," start="00:07:50.080" video="mainVideo" id=subtitle]]
[[!template text="that focuses particularly on the" start="00:07:52.639" video="mainVideo" id=subtitle]]
[[!template text="multimedia pop-up functionality in Emacs." start="00:07:55.199" video="mainVideo" id=subtitle]]
[[!template text="Pop is considered to be a sister project" start="00:07:55.919" video="mainVideo" id=subtitle]]
[[!template text="and lightweight version of EAF." start="00:08:02.080" video="mainVideo" id=subtitle]]
[[!template text="They both share a very similar design" start="00:08:04.879" video="mainVideo" id=subtitle]]
[[!template text="and some code, and they are maintained" start="00:08:07.039" video="mainVideo" id=subtitle]]
[[!template text="by the same people," start="00:08:09.039" video="mainVideo" id=subtitle]]
[[!template text="which is me and ManateeLazycat." start="00:08:10.080" video="mainVideo" id=subtitle]]
[[!template text="Here's a quick demo to see the" start="00:08:13.680" video="mainVideo" id=subtitle]]
[[!template text="responsiveness of its preview." start="00:08:15.599" video="mainVideo" id=subtitle]]
[[!template text="Here we go. On the right, see..." start="00:08:23.840" video="mainVideo" id=subtitle]]
[[!template text="Oh, here we go. Yes." start="00:08:27.919" video="mainVideo" id=subtitle]]
[[!template text="And these are the LaTeX preview." start="00:08:30.720" video="mainVideo" id=subtitle]]
[[!template text="I can quickly show the next one." start="00:08:32.560" video="mainVideo" id=subtitle]]
[[!template text="So this is the end of my presentation." start="00:08:44.800" video="mainVideo" id=subtitle]]
[[!template text="Feel free to post questions" start="00:08:48.160" video="mainVideo" id=subtitle]]
[[!template text="on the collaborative pad, IRC," start="00:08:50.000" video="mainVideo" id=subtitle]]
[[!template text="or directly send me an email." start="00:08:52.160" video="mainVideo" id=subtitle]]
[[!template text="I'll be around all this," start="00:08:53.519" video="mainVideo" id=subtitle]]
[[!template text="at all these places," start="00:08:55.680" video="mainVideo" id=subtitle]]
[[!template text="and if you found any issue," start="00:08:57.839" video="mainVideo" id=subtitle]]
[[!template text="please submit an issue" start="00:08:59.519" video="mainVideo" id=subtitle]]
[[!template text="to the EAF official issues," start="00:09:01.200" video="mainVideo" id=subtitle]]
[[!template text="and don't forget to check out the wiki." start="00:09:04.160" video="mainVideo" id=subtitle]]
[[!template text="Thank you and enjoy" start="00:09:08.880" video="mainVideo" id=subtitle]]
[[!template text="the rest of EmacsConf 2021." start="00:09:10.160" video="mainVideo" id=subtitle]]
[[!template text="captions by sachac" start="00:09:13.680" video="mainVideo" id=subtitle]]