summaryrefslogtreecommitdiffstats
path: root/2019/talks
diff options
context:
space:
mode:
Diffstat (limited to '2019/talks')
-rw-r--r--2019/talks/21.md11
-rw-r--r--2019/talks/22.md90
-rw-r--r--2019/talks/22/discussion.md6
-rw-r--r--2019/talks/23.md12
-rw-r--r--2019/talks/24.md379
-rw-r--r--2019/talks/25.md10
-rw-r--r--2019/talks/26.md12
-rw-r--r--2019/talks/27.md111
-rw-r--r--2019/talks/28.md115
-rw-r--r--2019/talks/29.md50
-rw-r--r--2019/talks/30.md10
-rw-r--r--2019/talks/31.md121
-rw-r--r--2019/talks/32.md10
13 files changed, 937 insertions, 0 deletions
diff --git a/2019/talks/21.md b/2019/talks/21.md
new file mode 100644
index 00000000..e33b93b5
--- /dev/null
+++ b/2019/talks/21.md
@@ -0,0 +1,11 @@
+[[!meta title="Porting org-shiftup/down as a separate module - MetroWind"]]
+[[!meta copyright="Copyright © 2019 MetroWind"]]
+
+[[!template id=vid
+src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-21-porting-org-shiftup-down-as-a-separate-module--tsmanip--MetroWind.webm"
+type="video/webm"]]
+
+### Download
+
+- [Video (Live)](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-21-porting-org-shiftup-down-as-a-separate-module--tsmanip--MetroWind.webm) (720p)
+- [Video (Prerecording)](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-21-porting-org-shiftup-down-as-a-separate-module--tsmanip--prerec--MetroWind.webm) (1080p)
diff --git a/2019/talks/22.md b/2019/talks/22.md
new file mode 100644
index 00000000..8099a3e3
--- /dev/null
+++ b/2019/talks/22.md
@@ -0,0 +1,90 @@
+[[!meta title="Packaging emacs packages for Debian - David Bremner"]]
+[[!meta copyright="Copyright © 2019 David Bremner"]]
+
+[[!template id=vid
+src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-22-packaging-emacs-packages-for-debian--bremner.webm"
+type="video/webm"]]
+
+### Download
+
+- [Video](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-22-packaging-emacs-packages-for-debian--bremner.webm) (1080p)
+
+### Notes
+
+```org
+#+TITLE: Packaging Emacs packages for Debian
+#+AUTHOR: David Bremner
+#+PROPERTY: header-args:sh :results output :session demo :output session
+* Why Debian Packages for Emacs addons?
+** For users
+- Extra layer of curation
+- Integration testing
+- Non-emacs dependencies are easy
+- Co-operates with other =package.el= sources, e.g. /Melpa stable/.
+** For admins
+- Familiar tools
+- Known trust model
+- Building VM images
+- Stable releases
+
+* Packaging demo
+** setup
+#+begin_src sh :var dir=(expand-file-name default-directory)
+export SUDO_ASKPASS=/usr/bin/ssh-askpass
+export DPKG_COLORS=never
+export DEBIAN_FRONTEND=noninteractive
+cd $dir
+rm -rf build
+mkdir build
+cd build
+#+end_src
+
+** grab the source
+#+begin_src sh
+git clone -q -o upstream https://github.com/takaxp/org-tree-slide.git
+#+end_src
+
+** generate the packaging
+#+begin_src sh
+cd org-tree-slide
+dh-make-elpa --pkg-emacsen
+#+end_src
+
+** inspecting the results
+#+begin_src elisp
+(dired "build/org-tree-slide/debian")
+(dired-hide-details-mode)
+#+end_src
+
+** building the package
+
+#+begin_src sh
+dpkg-buildpackage -uc -us -b
+#+end_src
+
+** install the package
+#+begin_src sh
+sudo -A env NEEDRESTART_SUSPEND=y DEBIAN_FRONTEND=noninteractive \
+ apt-get install --reinstall -q -y ../elpa-org-tree-slide*.deb </dev/null
+#+end_src
+
+** activate the package
+#+begin_src elisp
+(package-initialize)
+(locate-library "org-tree-slide")
+#+end_src
+
+#+begin_src sh
+dpkg -L elpa-org-tree-slide < /dev/null
+#+end_src
+
+* Cleanup this buffer
+#+begin_src elisp
+(org-babel-remove-result-one-or-many 't)
+#+end_src
+
+* Configuration
+# Local Variables:
+# org-confirm-babel-evaluate: nil
+# End:
+```
diff --git a/2019/talks/22/discussion.md b/2019/talks/22/discussion.md
new file mode 100644
index 00000000..81e55f73
--- /dev/null
+++ b/2019/talks/22/discussion.md
@@ -0,0 +1,6 @@
+Nice and clear.
+Good for teaching us the goog and best practice for a beginner. With that we what to to and in which sequence.
+This cas be the start for a good developper to automate a bit and virtualize for abstract packaging in a DevOps and DevSecOps, so thank you a lot. This is very usefull !
+kf
+
+-- kf_kiff_Packaging_e4d 2019-11-14 09:40 UTC
diff --git a/2019/talks/23.md b/2019/talks/23.md
new file mode 100644
index 00000000..4926c307
--- /dev/null
+++ b/2019/talks/23.md
@@ -0,0 +1,12 @@
+[[!meta title="Interactive Remote Debugging and Development with TRAMP Mode - Matt Ray"]]
+[[!meta copyright="Copyright &copy; 2019 Matt Ray"]]
+
+[[!template id=vid
+src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-23-interactive-remote-debugging-development-with-tramp-mode--mattray.webm"
+type="video/webm"]]
+
+### Download
+
+- [Video (Prerecording)](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-23-interactive-remote-debugging-development-with-tramp-mode--mattray.webm) (1080p)
+- [Video (Live Q&amp;A)](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-23-interactive-remote-debugging-development-with-tramp-mode--questions--mattray.webm) (720p)
+- [Slides and Notes](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-23-interactive-remote-debugging-development-with-tramp-mode--slides-notes--mattray.pdf)
diff --git a/2019/talks/24.md b/2019/talks/24.md
new file mode 100644
index 00000000..cc909e43
--- /dev/null
+++ b/2019/talks/24.md
@@ -0,0 +1,379 @@
+[[!meta title="GNU Emacs as software freedom in practice - Greg Farough"]]
+[[!meta copyright="Copyright &copy; 2019 Greg Farough"]]
+
+[[!template id=vid
+src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-24-gnu-emacs-as-software-freedom-in-practice--ggoes.webm"
+type="video/webm"]]
+
+### Download
+
+- [Video](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-24-gnu-emacs-as-software-freedom-in-practice--ggoes.webm) (720p)
+
+### Transcript
+
+```org
+* Transcript
+First of all, I should give an introduction to myself. I'm Greg
+Farough and my talk's going to be about GNU Emacs as an example of
+software freedom in practice. That's not practice in the sense of
+"training for something," but practice as in enacting the core values
+of GNU as a project.
+
+I'm the campaigns manager at the Free Software Foundation, but this is
+not an FSF talk. So all of my opinions are my own. I don't think I'll
+be saying anything especially controversial during this -- at least I
+hope not.
+
+I've been an Emacs user since about 2006, when I was age 12. That
+does not mean I'm especially good at Emacs. I'm not a programmer.
+Not at all, really. My college education was in Ancient Greek, not
+computer science. So while I know one or two things about one kind of
+lambda, I don't know much at all about the other kind of lambda. My
+use of Emacs has always been about cobbling together a lot of
+different things from various config files all over the place. It's
+been a little hodgepodge over the years.
+
+So even though I use Emacs for everything, and have used it for such a
+long time, it's not something I consider myself a big expert at. Some
+proofs I'm not a hacker: first of all, the delay in this presentation.
+[Story about breaking laptop shortly before presentation.] So, I
+clearly don't have the MIT AI Lab spirits behind me.
+
+I can't use Org-mode very well (as evidenced by this presentation),
+and I still can't record Emacs macros reliably. That's the whole
+"-mac" part, right? But I still can't do it. I can write Greek
+letters, though, thanks to its brilliant Unicode support.
+
+But there's a little bit of a catch to that, right? Some of the
+earliest Emacs users weren't much of programmers either.
+
+In his account of his days at the AI Lab and the development of GNU
+Emacs, RMS said that "programming new editing commands was so
+convenient that even the secretaries in [Bernie Greenberg]'s office
+started learning how to use it. They used a manual someone had
+written which showed how to extend Emacs, but didn't say it was a
+programming. So the secretaries, who believed they couldn't do
+programming, weren't scared off. They read the manual, discovered
+they could do useful things and they learned to program.
+
+That's always been an interesting quote to me because it highlights
+what I'll call that "mind expansion" moment that I was just talking to
+someone about the other day. If you used to typical programs, or
+nonfree programs like Microsoft Office, etc., and you go to Emacs, you
+think it's this weird, arcane thing and you don't understand why the
+"M" actually refers to the "Alt" key on your keyboard. You have to
+feel like you're an octopus to use it.
+
+But most everyone I know that has used Emacs for a long time can point
+to one moment where things seemed to "click" for them. They come to
+an understanding of Emacs' extensibility for the first time, and are
+empowered by all that they suddenly realize they're able to do. And I
+mean "empowered" in a very actual sense of empowerment. They're like:
+"Wow, I can suddenly do all this stuff! It's incredible that I can do
+this with a computer."
+
+Tangentially, that's something you don't get in [computer literacy]
+education that involves proprietary software, because you're learning
+to use one "office suite." You're not learning any general purpose
+computing concept. I think it's important to mention that when people
+come to Emacs they have a moment like: "Oh, my gosh, I'm not terrible
+at computers after all. I can actually adapt it to fit my needs!"
+
+But these people often suffer from impostor syndrome. Sometimes they
+never end up considering themselves "real" Emacs users. I'm guilty of
+that, even though most people in the FSF office consider me to be the
+quintessential Emacs user. I don't feel that way, personally. I've
+just slowly accumulated everything into Emacs. It's just taken over
+my life gradually. Maybe that's more owing to it than me. But it's
+something that's important, especially when you start to think about
+contributing to Emacs. You might say, "I can't do anything. My
+patches don't matter. They'll reject them," or whatever. That's
+something that I feel like we should be counteracting when we talk
+about contributing to Emacs.
+
+I've come up with my own criteria for being an Emacs hacker. If you
+have customized Emacs to any degree, to cleverly help it fit your
+needs, you are an Emacs hacker. I'm the FSF campaigns manager, and
+I'm telling you that right now. If you've had that "Emacs experience"
+that I mentioned earlier, you're an Emacs hacker as well. There's no
+high barrier of entry. If you enjoy the program, if you enjoy its
+incredibly bizarre, arcane, baroque complexity -- great. Hop on board
+the Emacs train, because we're happy to have you there.
+
+Emacs's ability to blow people's minds comes from more than its
+sitting on top of a Lisp interpreter. And I think it comes from more
+than just its being around for a long time. Software freedom itself
+plays a large part of it. I'd argue that its the most crucial reason
+for its success.
+
+How does software freedom help Emacs? Well, the whole "catch" of
+Emacs is that anyone and at any time can study and edit the code of
+Emacs. Without recompiling it, without doing anything difficult.
+That's software freedom #1 in a nutshell, right? The Free Software
+Definition calls it, "The freedom to study how the program works, and
+change it so it does your computing as you wish (freedom 1). Access
+to the source code is a precondition for this." And that says it.
+You could write that on the Emacs family crest. You can see all of
+the source code; you can edit it at any moment, and that's phenomenal.
+
+That's a lot of what makes Emacs accessible to people. Once they go
+beyond using it and learning certain key commands -- when they
+actually start doing that first cool C-x C-e -- and they evaluate
+something for the first time, that's a very good feeling. I think of
+Emacs being in some ways the "flagship" GNU program. It's not the one
+that's the most used by everybody, that's Coreutils or Bash, but it
+emphasizes the GNU philosophy in a special way. While it's so gnarly
+and crazy, every feature is welcome in it. Even M-x butterfly and the
+kitchen sink. The old Emacs logo used to literally be a kitchen sink.
+
+The only requirement placed on you is to be a good member of the Emacs
+community: to share your work back to the community, even if it's not
+something that's considered "useful" to the working world, like
+implementing a psychotherapist in an underused programming language,
+or writing a Tetris clone. That's something that I think could only
+happen in a free software environment. Nobody at Microsoft could go,
+"Hey! Why don't we add a Rogerian therapist to Microsoft Office
+instead of Clippy? That would be a great idea!" That would get shot
+down really quickly, I think.
+
+Another key part of Emacs are the other software freedoms. You can
+modify and distribute it. It's extremely difficult to imagine an
+Emacs that wasn't modifiable, or where modifiable versions couldn't be
+shared back to the community. If at the beginning Emacs had been
+licensed permissively, say under the MIT or BSD licenses, something
+like this might have happened. We could have had a less wonderful
+"core" Emacs. All the good bits like the psychotherapist, and Magit,
+and my favorite theme wouldn't have been there if the only free part
+of Emacs was its core. Copyleft is very integral to the success of
+Emacs, and why it's so unique and widely spread.
+
+So! Here's a quote about being divided and helpless.
+
+"This is a matter of the freedom to cooperate. We're used to thinking
+of freedom and cooperation with society as if they are opposites. But
+here they're on the same side. With free software you are free to
+cooperate with other people as well as free to help yourself. With
+non-free software, somebody is dominating you and keeping people
+divided. You're not allowed to share with them, you're not free to
+cooperate or help society, anymore than you're free to help yourself.
+Divided and helpless is the state of users using non-free software."
+
+We've heard multiple times about how that's what it's like to use
+nonfree productivity programs in general, and nonfree software in
+general. Everything you [would want to add] depends on your sending
+an email to a developer saying something like, "Oh, please, please add
+this feature for me! I'll give you so much money!" But in the free
+software community, just throw it in. It's likely to get included -
+if not in ELPA, then in the core Emacs. That's something that's
+really cool.
+
+So we have the GPL, cool. We have Emacs, cool. But what else is
+contributing to Emacs's success? There's one license that I haven't
+mentioned. I hope it's the most controversial thing I say today, but
+maybe it won't be.
+
+The GNU Free Documentation License has a clause for invariant
+sections. That's a section that you can't take out of the
+documentation. That pertains to a particular part of the Emacs
+documentation: the part describing the motivations describing the GNU
+Project, and the origin story of the GNU Project. Due to the GFDL,
+every version of Emacs, no matter what operating system it's running
+on, no matter whether it's free or nonfree, has included that. The
+political "splash screen" Emacs starts up with was many people's
+introductions to free software concepts. It was mine. I just saw
+this weird, cursive cow logo and said, "Oh, what's this link?" I
+clicked it and ended up reading a political manifesto without using
+it.
+
+To paraphrase another quote from RMS's Emacs origin story, "Emacs was
+part of an explicit political campaign to make software free." At its
+best, Emacs is exactly still that way.
+
+We need to keep things going. How can we ensure the Emacs spirit
+stays with us? I have one or two things that I can recommend.
+
+First, use copyleft wherever possible. If you write software, please
+consider releasing it under the GPL or another strong copyleft license
+to benefit the community. After all, this was a core part of Emacs's
+success. It doesn't bar you from selling the software. The FSF used
+to sell Emacs on reel-to-reel tape for $150 way back in the day.
+There are actually some behind me right now, but you can't see them.
+
+Insist on free software in other areas: in your operating system, in
+your phone, even in your GNU/Linux distribution, which may not be
+fully free. Nominally, it could be "free software," but don't be
+content with 50%, 60%, or even 80%. Always be pushing for the extra
+bit to be freed, even if that's a tiny bit at a time, and even if that
+seems impossible. With cell phones, right now it seems impossible that
+the mobile baseband could be freed. It seems inconceivable. But I
+think if we rally everyone together, we could get there. That's a
+core element of campaigning for software freedom and what has made
+Emacs so successful. It has always strongly pushed the copyleft
+philosophy.
+
+Second, do all that you can do to make the community welcoming. This
+includes tolerance of the "non-hacker hackers" like me and many
+others, who are not the most technical, but do genuinely love Emacs.
+Setting standards for good behavior are a necessary part of this, in
+the case of underrepresented groups, and people who feel like the
+audience that writes Emacs is not their own. Their contributions are
+also extremely valuable, because Emacs could get even more incredible
+and strange if it's being contributed to by people who don't share the
+same perspective as you or share the same background as you.
+
+Please support the Free Software Foundation. Not only do because they
+pay my salary, but because they write the GPL. They are also the
+copyright holder for Emacs, and take its legal protection extremely
+seriously.
+
+Contribute to Emacs, and every other free software project, even
+non-GNU projects, as much as you can. No matter what it is, and no
+matter how small you think your contribution may be. Chances are,
+there's someone that has that one nagging bug; that they're saying,
+"if only someone could fix this for me!" I've seen that happen with
+Emacs multiple times. It's happened to me. Most recently, Gnus was
+always marking my read emails as unread again, and there was nothing I
+could do. And then someone ended up fixing it with a single line
+commit a few weeks ago. So if you notice anything like that, please
+contribute. Every part benefits the community.
+
+Thanks very much.
+```
+
+### Slides
+
+```org
+* Slides
+** GNU Emacs as software freedom in practice
+*** Greg Farough <gregf@gnu.org>
+** What I do
+*** Campaigns Manager at Free Software Foundation
+*** (Opinions are my own)
+*** Emacs user since 2006 (age 12)
+** But I'm not really a programmer.
+*** My college education was in Ancient Greek, not CS.
+*** So while I know one or two things about one kind of lambda, I don't know anything about the real λ we care about.
+** Proofs I'm not a hacker
+*** I am giving this presentation form a 14 year-old laptop because I broke mine while trying to fix it.
+*** I can't use Org-mode well (as evidenced by this presentation).
+*** I still can't record Emacs macros reliably.
+*** But I can write Greek letters reliably! Έμάκς!
+** But there's a catch
+** Some of the earliest Emacs users weren't really "programmers" either.
+ "[P]rogramming new editing commands was so convenient that even the
+ secretaries in his office started learning how to use it. They
+ used a manual someone had written which showed how to extend Emacs,
+ but didn't say it was a programming. So the secretaries, who
+ believed they couldn't do programming, weren't scared off. They
+ read the manual, discovered they could do useful things and they
+ learned to program." - RMS, 'My Lisp Experiences and the
+ Development of GNU Emacs
+
+ <https://www.gnu.org/gnu/rms-lisp.html>
+** Mind-expansion
+ Most everyone who's been introduced to Emacs has that *one* moment
+ where things seemed to "click" for them. They come to an
+ understanding of Emacs' extensibility for the first time, and are
+ empowered by all that they suddenly realize they're able to do.
+** Note on impostor syndrome
+ But sometimes, these people don't ever consider themselves "real"
+ Emacs users. I'm guilty of that, even though most people consider
+ me to be a quintessential Emacs user, as I do everything in it.
+** Greg's criteria
+ If you have customized Emacs to any degree, to cleverly help it fit
+ your needs, you are an Emacs hacker.
+
+ If you've had that "Emacs experience," you're an Emacs hacker.
+** So what does that mean?
+ Emacs's ability to blow people's minds comes from more than just
+ Lisp, and more than just its being around for so long.
+
+ Software freedom plays a large part of it: maybe the most crucial
+ part.
+** How does it help Emacs?
+ The ability for anyone, at any time, to study and alter the code of
+ the Emacs text editor is software freedom 1.
+
+ "The freedom to study how the program works, and change it so it
+ does your computing as you wish (freedom 1). Access to the source
+ code is a precondition for this." - Free Software Definition
+
+ <https://www.gnu.org/philosophy/free-sw.html>
+** Study and share
+ Being in some ways the "flagship" GNU program, Emacs emphasizes its
+ core philosophy in a special way. While complex and baroque, every
+ feature is welcome: even M-x butterfly and the kitchen sink.
+
+ The only requirement placed on you is to be a good member of the
+ Emacs community: to share your work with us; even if it's the Emacs
+ psychotherapist, and even if it's M-x tetris.
+** Modify and distribute
+ It's extremely difficult to imagine an Emacs that wasn't
+ modifiable, or where modifiable versions couldn't be shared.
+
+ If at the beginning Emacs had been licensed permissively, something
+ like this might have happened. We could have had a less wonderful
+ "core" Emacs, and all the good bits (like the psychotherapist),
+ could have been made part of a proprietary distribution.
+** "Divided and helpless"
+ "This is a matter of the freedom to cooperate. We're used to
+ thinking of freedom and cooperation with society as if they are
+ opposites. But here they're on the same side. With free software
+ you are free to cooperate with other people as well as free to help
+ yourself. With non-free software, somebody is dominating you and
+ keeping people divided. You're not allowed to share with them,
+ you're not free to cooperate or help society, anymore than you're
+ free to help yourself. Divided and helpless is the state of users
+ using non-free software." RMS, 'My Lisp Experiences and the
+ Development of GNU Emacs
+
+ <https://www.gnu.org/gnu/rms-lisp.html>
+** Spreading the message
+ OK, great, we have the GPL and we have Emacs. What else has
+ contributed?
+
+ There's one more license we haven't mentioned.
+
+ And it should be the only controversial thing I bring up today.
+** The Manifesto
+ - The GNU Free Documentation License (GFDL) and its invariant
+ sections have ensured that the origin story and motivations for
+ GNU have been included with every version of Emacs -- no matter
+ what operating system it's running on.
+
+ The political "splash screen" Emacs starts up with was many
+ people's introductions to free software concepts. Mine, for
+ example.
+
+ "[Emacs] was part of an explicit political campaign to make
+ software free." [ED: This is also a quote from 'My Lisp
+ Experiences and the Development of GNU Emacs.']
+** Keeping things going
+ How can we ensure that the Emacs spirit stays with us?
+
+ We can recommend a few things.
+** Use copyleft wherever possible
+ If you write software, please consider releasing it under the GPL
+ or another strong copyleft license to benefit the community. After
+ all, this was a core part of Emacs's success.
+
+ Insist on free software in other areas: in your operating system,
+ in your phone, even in your GNU/Linux distribution, which may not
+ be fully free. Don't be content with 50%, 60%, or even 80%.
+** Do all that you can to make the community welcoming
+ This includes tolerance of the "non-hacker hackers" like me and
+ many others, who are not the most technical, but do genuinely love
+ Emacs.
+
+ Setting standards for good behavior -- codes of conduct -- are a
+ necessary part of this.
+** Support
+ Please support the Free Software Foundation. Not only do we write
+ the GPL: we are also the copyright holder for Emacs, and take its
+ legal protection very seriously.
+
+ Contribute to Emacs (and every other free software project!) as
+ much as you can. No matter what it is, and no matter how small you
+ think your contribution may be.
+** Thanks very much.
+```
diff --git a/2019/talks/25.md b/2019/talks/25.md
new file mode 100644
index 00000000..2c93daf8
--- /dev/null
+++ b/2019/talks/25.md
@@ -0,0 +1,10 @@
+[[!meta title="Closing remarks - Amin Bandali"]]
+[[!meta copyright="Copyright &copy; 2019 Amin Bandali"]]
+
+[[!template id=vid
+src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-25-closing-remarks--bandali.webm"
+type="video/webm"]]
+
+### Download
+
+- [Video](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-25-closing-remarks--bandali.webm) (720p)
diff --git a/2019/talks/26.md b/2019/talks/26.md
new file mode 100644
index 00000000..b72b0728
--- /dev/null
+++ b/2019/talks/26.md
@@ -0,0 +1,12 @@
+[[!meta title="Emacs: The Editor for the Next Forty Years - Perry E. Metzger"]]
+[[!meta copyright="Copyright &copy; 2019 Perry E. Metzger"]]
+
+[[!template id=vid
+src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-26-emacs-the-editor-for-the-next-forty-years--pmetzger.webm"
+type="video/webm"]]
+
+### Download
+
+- [Video (Prerecording)](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-26-emacs-the-editor-for-the-next-forty-years--pmetzger.webm)
+- [Video (Live Q&amp;A)](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-26-emacs-the-editor-for-the-next-forty-years--questions--pmetzger.webm) (720p)
+- [Slides](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-26-emacs-the-editor-for-the-next-forty-years--slides--pmetzger.pdf)
diff --git a/2019/talks/27.md b/2019/talks/27.md
new file mode 100644
index 00000000..a35d9a80
--- /dev/null
+++ b/2019/talks/27.md
@@ -0,0 +1,111 @@
+[[!meta title="How to record executable notes with eev - and how to play them back - Eduardo Ochs"]]
+[[!meta copyright="Copyright &copy; 2019 Eduardo Ochs"]]
+
+[[!template id=vid
+src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-27-how-to-record-executable-notes-with-eev-and-how-to-play-them-back--edrx.webm"
+type="video/webm"]]
+
+### Download
+
+- [Video](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-27-how-to-record-executable-notes-with-eev-and-how-to-play-them-back--edrx.webm)
+- [Eev @ EmacsConf 2019](http://angg.twu.net/emacsconf2019.html)
+- [Eev homepage](http://angg.twu.net/#eev)
+
+### Transcript
+
+```org
+Timestamps for some points of the video:
+0:00 Title page
+0:15 Prehistory 1: eev appeared by accident
+1:08 Prehistory 2: my notes started to have lots of elisp hyperlinks
+2:35 Prehistory 3: M-x eev
+3:04 Prehistory 4: several other kinds of elisp kyperlinks
+4:05 Prehistory 5: these elisp hyperlinks could be put in comments
+5:34 Prehistory 6: variants of M-x eev
+5:41 Prehistory 7: several megabytes of scripts and notes (here)
+6:41 Prehistory 8: I was sure that everybody was using Emacs like that
+7:52 Prehistory 9: "users should not be forced to see Lisp"
+9:22 Eev as an ELPA package
+10:51 Eev as an ELPA package (2)
+11:20 M-j - and how beginners should use it
+12:54 A demo
+13:10 Demo: patching xpdf (e-script)
+14:01 Demo: the `find-man' links
+14:45 Demo: the `find-apt-get-source-links'
+15:11 Demo: the eepitch block (in red star lines) (see this)
+15:48 Demo: eepitch on non-red star lines
+15:56 Demo: eepitch in action
+16:47 Demo: the `find-fline's to the source directory
+17:07 Demo: `code-c-d' (see this)
+17:22 Demo: `find-xpdffile'
+17:32 Demo: `find-xpdfsh'
+17:44 Demo: `find-xpdfgrep'
+18:32 Demo: the second `find-xpdfgrep'
+18:46 Demo: the relevant occurrence / direct link to it
+19:18 Links
+
+A transcription of what I say in the final part (i.e., in the demo):
+13:11 Let me show you an example of "executable notes and how to play them back".
+13:18 I will only be able to explain how to _record_ these executable notes in the longer video.
+13:25 Anyway: when I was recording this video I realized that xpdf was behaving in a very annoying way -
+13:34 it was changing the page in moments that I didn't want it to...
+13:39 and the problem was that when my finger was at the right side of the touchpad
+13:45 and I moved it up or down this would be interpreted as a _mousewheel scroll_,
+13:52 that would be interpreted as PageUp or PageDown,
+13:57 and I wanted to disable that - I wanted to disable the support for mousewheel scroll in xpdf.
+14:01 So I took a look at the man page for xpdf - here -
+14:06 I didn't find a simple way to change that by changing a configuration file
+14:11 but I found a section that described all the default mouse bindings - here -
+14:18 I found a line that seemed to be relevant - this one -
+14:21 I created a hyperlink that pointed directly to that line - this one -
+14:30 and I also found an explanation for what this function does
+14:35 and the explanation says that this function either scrolls up by some pixels
+14:41 or it moves to the previous page - which means PageUp.
+14:46 So the _quickest_ way to change xpdf - because I was in a hurry -
+14:51 was by downloading and recompiling the Debian source with some changes.
+14:56 I used this hyperlink here, that uses a template, to generate several links
+15:01 and several shell commands for downloading and recompiling a debian source package.
+15:08 I copied these lines to my notes with some small changes,
+15:15 and this part - here - uses the alternative to M-x eev...
+15:20 remember that I said that my old way of sending lines to the shell was by using M-x eev,
+15:27 that was very clumsy: it needed several keystrokes, and it was difficult to install
+15:34 because we would need to change an rcfile.
+15:38 So, the new alternative to it uses just <f8>,
+15:43 that behaves in one way in lines that start with a red star - like these ones -
+15:49 and in another way in lines that do not start with a red star.
+15:54 Let me change the font to a smaller one to show how it works.
+16:00 If I type <f8> in these three lines - here -
+16:03 this will set up a target buffer - here - running a shell,
+16:08 and if I type <f8> in these lines - here - this will send these commands to the shell.
+16:14 This command, in particular, it downloads - sorry, it _makes sure_ that I have
+16:20 all the Debian packages that I need to be able to compile the source for xpdf,
+16:27 and this command - here - downloads the source package for xpdf
+16:34 and unpacks it. It takes a few seconds - here.
+16:40 I do not want to execute this thing now - this thing would recompile the source.
+16:49 So, this hyperlink - here - opens this temporary directory,
+16:54 and it turns out that the source package was unpacked in this subdirectory - here -
+17:04 so this hyperlink points to the subdirectory,
+17:07 and this s-expression - here - defines several shorter hyperlinks with "find-xpdf" in their names
+17:17 that operate in this subdirectory - here.
+17:22 So, this hyperlink - here - opens that directory,
+17:30 this one - here - runs these shell commands in that directory
+17:37 to list all the files - remember that I haven't compiled anything yet,
+17:41 so all these files belong to the source package,
+17:46 and this one is much more interesting - it runs a grep in that directory.
+17:51 Remember that I discovered that the name of the mouse event that was bound to
+17:57 PageUp, or to the _bad_ PageUp in the bad PageDown,
+18:02 was MousePress4 (and MousePress5)...
+18:06 So this grep here searches for all the occurrences of MousePress4
+18:12 in the source... and it shows that there are only two occurrences,
+18:18 one of them in the source for the man page and the other one
+18:22 in the rendered version of that source, which is not good...
+18:27 Let me change to the bigger font again.
+18:31 So I decided to search for the function that was associated to that mouse event -
+18:39 this function here - and I found several occurrences of that string,
+18:45 and it turned out that _this_ is a relevant occurrence,
+18:49 so I created a direct link to that source file,
+18:53 and I discovered that if I commented out these lines by hand
+19:03 and recompiled everything and installed the new debian binary package
+19:09 then I would get an xpdf that does not have the annoying behavior. But...
+19:15 That's it.
+```
diff --git a/2019/talks/28.md b/2019/talks/28.md
new file mode 100644
index 00000000..742c5792
--- /dev/null
+++ b/2019/talks/28.md
@@ -0,0 +1,115 @@
+[[!meta title="Play and control your music with Emacs - Damien Cassou"]]
+[[!meta copyright="Copyright &copy; 2019 Damien Cassou"]]
+
+[[!template id=vid
+src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-28-play-and-control-your-music-with-emacs--mpdel--DamienCassou.ogv"
+type="video/ogg"]]
+
+### Download
+
+- [Video](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-28-play-and-control-your-music-with-emacs--mpdel--DamienCassou.ogv) (1080p)
+
+### Transcript
+
+- Hi everyone. In this lightening talk, I would like to present
+ MPDel, which is a user interface for MPD, the Music Player Daemon,
+ that's implemented in Emacs Lisp and runs entirely within Emacs. So
+ it relies on Music Player Daemon, which is quite old because it's a
+ sixteen years old project serving music with many different clients.
+ So if I look at clients of MPD you see there are all different kinds
+ so this ?android? projects or web projects or GTK projects and a
+ curses project, web projects, so yeah many different kinds of
+ clients. MPDel is implemented in Emacs Lisp, it's divided into
+ three parts. So there is a library libmpdel, which is it's own
+ project. That's doesn't propose any user interface, but instead it
+ proposes a set of primitive functions to build user interfaces on
+ top. Then you have the screenshot here on top of the MPDel, so it's
+ mostly tabulated lists based, and then you have another UI which is
+ based on ?IV?, and I will present ?the? two user interfaces in this
+ context of this project. So let's start the video by navigating the
+ music database. So it's a simple job to get the list of all your
+ artists. You can navigate with ?turned-out? shortcuts. And you
+ have isearch obviously ?for? imenu, and so I can go to ?pink? sites
+ with quick shortcuts. When you select your artists you can go to
+ which album by pressing return, and to go from an album to a
+ particular artist's songs, you also press return.
+
+- So that is going ?deep? from the album to the artist and from the
+ artist to the songs, and with carrots or shift-6 on my keyboard you
+ go up to the parent from the song to the albums, and from the albums
+ to the artists. So the next thing we can see is the playlists, so
+ on the left you have the database, and on the right I will put the
+ playlist. So for now there is nothing to listen to, and I will add
+ things in these lists, so we can add either artists, albums or
+ individual songs, so let's add one of my favorite songs, ?So equals?
+ from Pink Floyd. So you can add it to the playlist, or add it
+ immediately stop playing it, so this time I want to immediately play
+ it, so I press P for play.
+
+- And then I will press the carrot to go back to the artists and add
+ some more music, I will add an album by Dire Straits. So if I press
+ P now it will add all the album and also start with the first song,
+ but because I don't want to interrupt ?ecos? I will just press a to
+ add all the songs from this album. What we want to do now is
+ manipulate the playlists, so for now ?ecos? has started playing and
+ I can modify the playlist to decide what will be next, so by default
+ it's Sultans of Swing, but I can change that for prioritization for
+ example.
+
+- Like that, so I can move one song, I can also mark multiple songs
+ and move them around.
+
+- It's also possible to play the next song and the previous song so
+ you have M-n to play the next. And M-p to play the previous one. If
+ you wanted to delete a few songs from your album you can select them
+ and then press k for deletion, and then they are removed from the
+ database, not from the database, but only from the playlists. With
+ t you can toggle the mark, so if I want to select everything by
+ ?except ...? I can just press t. And t again to ??, if I want to
+ select everything I can always press t when nothing is marked, so I
+ can erase everything at once.
+
+- Something I can do now is display some information about the
+ currently played song, so I can press v wherever I am to get the
+ list of songs. It's very important to notice that whatever view you
+ are in the shortcuts are always the same, so if I go back to the
+ navigator with n, I can press ?? information about the current song,
+ so v here, which ?? about the current song. So you see that there
+ is the time, and the album and artist and ?? status, so if I pause
+ the music, it ?? pause. And backplaying. I can move forward and
+ move backward with M-s and M-v, I can do that slowly or fast with
+ different shortcuts, and from the current song you can press carrots
+ to go to the parents, so it's exactly the same shortcut as how we
+ were navigating from the songs to the albums and from the albums to
+ the artists, so it's carrots, and you go from the song to its album
+ and then from the album to the artist.
+
+- I tried when designing the shortcuts to make the keybindings do
+ always the same thing wherever you are, so if I press M-f now I will
+ fast-forward the current song, so the same shortcuts work the same
+ everywhere. And if I press ?....? Another way to control the
+ current playlists or stop playlists is to use the Ivy based
+ interface so it doesn't pop up any buffer, but you can still
+ navigate your database and select the songs to play. So if I start
+ the interface I get the list of all my artists in the minibuffer, so
+ I can choose for example MCC artists and the ?? ?king? and the song
+ I will pick this one for example, and there are many things I can do
+ from here, so I can add to the current playlist I can start playing
+ immediately, I can start and stop playlists, so let's see I just p
+ for playing it immediately.
+
+- So MPDel is mostly based on tabulated lists, which I really liked.
+ And after I implemented MPDel, I liked that kind of view so much I
+ decided to use the views for other kinds of packages, so I
+ implemented a database navigator, and also a network manager client
+ using tabulated lists, and I realized that all of those libraries
+ and tools they were sharing the same kind of code. So I decided to
+ abstract away from all of those and I created navigel which makes it
+ very easy to implement tabulated lists if you have a model of your
+ domain data that you want to navigate.
+
+- There is a lightening talk at EmacsConf about navigel so I encourage
+ you to have a look at it if you're interested in how I reimplemented
+ MPDel so that it's much simpler, and how I implemented all the other
+ packages. This is the end of my talk, I hope you liked it. And
+ happy EmacsConf.
diff --git a/2019/talks/29.md b/2019/talks/29.md
new file mode 100644
index 00000000..44b9c679
--- /dev/null
+++ b/2019/talks/29.md
@@ -0,0 +1,50 @@
+[[!meta title="Restclient and org-mode for Api Documentation and Testing - Mackenzie Bligh"]]
+[[!meta copyright="Copyright &copy; 2019 Mackenzie Bligh"]]
+
+[[!template id=vid
+src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-29-restclient-and-org-mode-for-api-documentation-and-testing--mackenziebligh.webm"
+type="video/webm"]]
+
+### Download
+
+- [Video](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-29-restclient-and-org-mode-for-api-documentation-and-testing--mackenziebligh.webm) (720p)
+
+### Transcript
+
+- Hi everyone, my name is Mack, I am a back-end software engineer with
+ ?Tarot? in San Francisco, and I'd like to talk to you today about
+ how I integrate Emacs with RestClient and Org-mode into my daily
+ workflow for documenting and testing APIs. All of the materials for
+ this talk can be found in EmacsConf 2019 repo with the url here
+ <https://github.com/mack1070101/emacs-conf-2019>. This example uses
+ restclient.el, which is a domain specific language for working with
+ restful APIs and OBRestClient to provide the wrappers for Org-mode,
+ however these are just the wrappers for what I use, the principles I
+ demo here can work with any set of programming languages that's
+ supported by Org-mode and has network calls.
+
+- So I find this way of writing documentation great because it helps
+ people get into using Emacs and provides a shallow learning curve
+ without being overwhelming of how to use Emacs. The second thing
+ that's great about it is it helps support maintenance of
+ documentation, because the documentation itself is actually used to
+ interact with APIs. Therefore it's providing utility to developers
+ and they can use it and maintain it all at the same time. As an
+ added benefit you have full Org-mode support for task management
+ doing things like exporting to other formats, building scripts via
+ tangling, as well as writing very complex API interactions by
+ feeding the output of one API into the input of another API.
+
+- I tend to favor using ELisp for simple things like building
+ requests, log in strings, things like that as you'll see. I do try
+ to avoid using languages or tooling that aren't integrated with
+ Emacs, however if it makes my life easier I'll use ubiquitous tools
+ like curl and jq as needed. I've included a mock server that I
+ already have running here, and you can find details about how to get
+ that set up if you're interested in the repo and link up above. So
+ let's jump right in.
+
+- Here is provided a sample document for a stock trading
+ application. We've got
+
+To be completed later.
diff --git a/2019/talks/30.md b/2019/talks/30.md
new file mode 100644
index 00000000..21209a34
--- /dev/null
+++ b/2019/talks/30.md
@@ -0,0 +1,10 @@
+[[!meta title="Equake mode - Ben Slade"]]
+[[!meta copyright="Copyright &copy; 2019 Ben Slade"]]
+
+[[!template id=vid
+src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-30-equake--emacsomancer.webm"
+type="video/webm"]]
+
+### Download
+
+- [Video](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-30-equake--emacsomancer.webm)
diff --git a/2019/talks/31.md b/2019/talks/31.md
new file mode 100644
index 00000000..8ff0be27
--- /dev/null
+++ b/2019/talks/31.md
@@ -0,0 +1,121 @@
+[[!meta title="Don't wait! Write your own (yas)snippet - Tony Aldon"]]
+[[!meta copyright="Copyright &copy; 2019 Tony Aldon"]]
+
+[[!template id=vid
+src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-31-dont-wait-write-your-own-yas-snippet--tony-aldon.webm"
+type="video/webm"]]
+
+### Download
+
+- [Video](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-31-dont-wait-write-your-own-yas-snippet--tony-aldon.webm) (1080p)
+
+### Transcript
+
+```org
+#+TITLE: Don't wait! Write your own (ya)snippets.
+#+AUTHOR: Tony Aldon
+LICENSE: CC BY-SA 4.0
+
+* Init
+Hey everybody, welcome to the emacsconf 2019, I'm TONY and I hope this
+video will help you to get started with the yasnippet package.
+
+* Table of content
+At first we'll have a look at some useful commands and variables
+provide by yasnippet: yas-expand, yas-describe-tables, and
+yas-snippet-dirs.
+
+Then we'll write a snippet for the js-mode using the command
+yas-new-snippet which pops a new buffer for writing a snippet.
+
+Ready, OK, let's go!!
+
+* (1) yas-expand
+In javascript, to consol.log some text we just type LOG and hit TAB to
+expand the snippet. It moves the cursor between the parentheses.
+
+We can do the same with a if statment, and we move through the snippet
+with the 'tab' key.
+
+* (2) yas-describe-tables
+To display the available snippets of the buffer's mode, we use the
+command yas-describe-tables. We scroll down. And we see that
+'function' is a snippet and 'f' is the key. If we type 'f' and hit
+'tab' it expands the snippet.
+
+* (3) snippet's description
+Let's go back to the describe table, we scroll down. And with the
+cursor on the snippet named 'function', we hit 'return'. Now in
+another window we can inspect the snippet definition.
+
+The first line would tell emacs this is a snippet. The second and
+third lines define the name and the key of the snippet. And after
+this line, the snippet's body starts.
+
+The dollar sign indicates where the cursor is going to be, and The
+numbers signify which order 'tab' is going to move you through the
+snippet.
+
+The cursor will move first, before the open parenthese to let you fill
+the function's name. Then, will move, after the open parenthese, to
+let you fill the function's arguments. And finally the cursor will
+end at 0.
+
+Now, we go back to the javascript file.
+
+* (4) yas-snippets-dirs
+To know where our snippets are defined, let's see the variable
+yas-snippet-dirs which lists the top-level snippet directories.
+
+We can see that some of my snippets are defined in this directory.
+Let's have a look on it.
+
+Well, for instance, the available snippets for the latex mode are
+defined in this directory 'latex dash mode' directory, and each file
+defines exactly one snippet.
+
+* (5) express snippet
+Now assume that you're using the framework 'express' to build APIs,
+and, you want that APP to be the key of the snippet that looks like
+this. For that, let's just call the command yas-new-snippet.
+
+It pops a new buffer for writing the snippet. We enter the name:
+express app The key, which is: app. And for the organization in the
+describe table, we add this snippet to the group: express.
+
+For testing, we enter: blabla. And we save it. And this will
+automatically load the snippet.
+
+Let's go back to the javascript file. We hit 'tab', and it expands
+it. Now we copy the text we want for the snippet. And we add the end
+position of the cursor.
+
+We save it and go back to the javascript file. Now we hit 'tab' and
+it expands it as this way. Ok, pretty cool.
+
+Now in the cycle of the cursor, we add two positions. First position
+and second position. This allows us to write on the fly the 'method'
+and the 'path' off the 'app' object.
+
+Let's back to the javascript file, we expand the snippet, and now we
+can write the method and the path.
+
+Ok, to be more readable, we add placeholders for the first two
+positions of the cursor. We add 'method' and we add 'path'. Let's
+have a look on it.
+
+We go back to the javascript file. Now we expand it, we see the
+placeholders. We replace it, the method and the path.
+
+Yeah!!! We did it. We've written the snippet 'express app', and it
+works.
+
+For the end, we check in the describe table if the snippet appears.
+We go back to the describe table, we scroll down, and there it is.
+
+Ok, now you can write your own snippets.
+
+* Thanks!
+I hope you've enjoyed the video. I'm tony, Thank you for watching,
+keep learning and stay alive.
+```
diff --git a/2019/talks/32.md b/2019/talks/32.md
new file mode 100644
index 00000000..7ecc32ae
--- /dev/null
+++ b/2019/talks/32.md
@@ -0,0 +1,10 @@
+[[!meta title="VSCode is Better than Emacs - Zaiste"]]
+[[!meta copyright="Copyright &copy; 2019 Zaiste"]]
+
+[[!template id=vid
+src="https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-32-vscode-is-better-than-emacs-making-emacs-more-approachable--zaiste.webm"
+type="video/webm"]]
+
+### Download
+
+- [Video](https://mirror.csclub.uwaterloo.ca/emacsconf/2019/emacsconf-2019-32-vscode-is-better-than-emacs-making-emacs-more-approachable--zaiste.webm) (1080p)