From 3d9ad5862f8643861543acb25aa6f97953ad4f0a Mon Sep 17 00:00:00 2001 From: Amin Bandali Date: Sun, 19 Jul 2020 14:54:42 -0400 Subject: 2019/talks/: import the remaining ones adding transcripts on-site when possible --- 2019/talks/21.md | 11 ++ 2019/talks/22.md | 90 +++++++++++ 2019/talks/22/discussion.md | 6 + 2019/talks/23.md | 12 ++ 2019/talks/24.md | 379 ++++++++++++++++++++++++++++++++++++++++++++ 2019/talks/25.md | 10 ++ 2019/talks/26.md | 12 ++ 2019/talks/27.md | 111 +++++++++++++ 2019/talks/28.md | 115 ++++++++++++++ 2019/talks/29.md | 50 ++++++ 2019/talks/30.md | 10 ++ 2019/talks/31.md | 121 ++++++++++++++ 2019/talks/32.md | 10 ++ 13 files changed, 937 insertions(+) create mode 100644 2019/talks/21.md create mode 100644 2019/talks/22.md create mode 100644 2019/talks/22/discussion.md create mode 100644 2019/talks/23.md create mode 100644 2019/talks/24.md create mode 100644 2019/talks/25.md create mode 100644 2019/talks/26.md create mode 100644 2019/talks/27.md create mode 100644 2019/talks/28.md create mode 100644 2019/talks/29.md create mode 100644 2019/talks/30.md create mode 100644 2019/talks/31.md create mode 100644 2019/talks/32.md (limited to '2019') 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 +** 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 + + +** 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 + + +** 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 + + +** 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 © 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 © 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&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 © 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 , +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 in these three lines - here - +16:03 this will set up a target buffer - here - running a shell, +16:08 and if I type 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 © 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 © 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 + . 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 © 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 © 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 © 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) -- cgit v1.2.3