From d4b7664d47a90eccde7ef483105eed3965e5c6db Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sat, 27 Nov 2021 14:06:25 -0500 Subject: Update --- ...rad-student-workflow--greg-coladonato--main.vtt | 775 +++++++++++++++++++++ 1 file changed, 775 insertions(+) create mode 100644 2021/captions/emacsconf-2021-cs--one-effective-cs-grad-student-workflow--greg-coladonato--main.vtt (limited to '2021/captions/emacsconf-2021-cs--one-effective-cs-grad-student-workflow--greg-coladonato--main.vtt') diff --git a/2021/captions/emacsconf-2021-cs--one-effective-cs-grad-student-workflow--greg-coladonato--main.vtt b/2021/captions/emacsconf-2021-cs--one-effective-cs-grad-student-workflow--greg-coladonato--main.vtt new file mode 100644 index 00000000..f6f39af7 --- /dev/null +++ b/2021/captions/emacsconf-2021-cs--one-effective-cs-grad-student-workflow--greg-coladonato--main.vtt @@ -0,0 +1,775 @@ +WEBVTT + +00:00.000 --> 00:00:01.520 +My name is Greg Coladonato, + +00:00:01.520 --> 00:00:03.199 +and this is my presentation named + +00:00:03.199 --> 00:00:04.560 +One Effective Computer Science + +00:00:04.560 --> 00:00:06.480 +Grad Student Workflow. + +00:06.480 --> 00:00:07.680 +For self-introduction, + +00:00:07.680 --> 00:00:09.599 +I've been an Emacs user since 1989 + +00:00:09.599 --> 00:00:11.599 +when I was an undergrad in computer science, + +00:00:11.599 --> 00:00:13.040 +and I'm still an Emacs user + +00:00:13.040 --> 00:00:15.280 +now I'm getting a master's of science + +00:00:15.280 --> 00:00:16.880 +in computer science. + +00:16.880 --> 00:00:17.760 +In my day job, + +00:00:17.760 --> 00:00:19.199 +I work in product management + +00:00:19.199 --> 00:00:20.640 +in a Silicon Valley + +00:00:20.640 --> 00:00:21.840 +computer vision startup, + +00:00:21.840 --> 00:00:22.880 +and I'm proud to say + +00:00:22.880 --> 00:00:25.039 +I've been submitting my first PRs + +00:00:25.039 --> 00:00:27.038 +to open source projects this year. + +00:27.039 --> 00:00:29.199 +The goals of my workflow are first + +00:00:29.199 --> 00:00:30.800 +to make my notes easily accessible + +00:00:30.800 --> 00:00:33.280 +and searchable. + +00:33.280 --> 00:00:34.800 +Second goal, provide a way for me + +00:00:34.800 --> 00:00:36.480 +to permanently remember what I learned, + +00:00:36.480 --> 00:00:38.879 +and thirdly, to enable conceptual linking + +00:38.879 --> 00:00:40.480 +between related topics and entities. + +00:00:40.480 --> 00:00:41.920 +I'll give examples of each of these + +00:00:41.920 --> 00:00:43.119 +as we go along. + +00:00:43.120 --> 00:00:45.120 +The requirements of my workflow: + +00:45.120 --> 00:00:47.920 +it needs to be tightly integrated with PDFs, + +00:00:47.920 --> 00:00:50.399 +as most of the documents I get from grad school + +00:00:50.399 --> 00:00:51.440 +are in PDF form, + +00:00:51.440 --> 00:00:53.760 +most of my submissions of work + +00:00:53.760 --> 00:00:54.719 +are in PDF form, + +00:00:54.719 --> 00:00:56.640 +and most research papers I have access to + +00:00:56.640 --> 00:00:58.399 +are in PDF form as well. + +00:58.399 --> 00:01:00.320 +I want my workflow to be subscription-free. + +00:01:00.320 --> 00:01:01.840 +I do not want to be locked into + +01:01.840 --> 00:01:03.120 +paying a subscription + +00:01:03.120 --> 00:01:04.799 +just to read my own notes. + +00:01:04.799 --> 00:01:06.720 +It must be future proof. + +00:01:06.720 --> 00:01:09.600 +I have used note-taking systems in the past + +01:09.600 --> 00:01:12.960 +that I now no longer have a way to decode, + +00:01:12.960 --> 00:01:14.640 +so they're locked into some format + +00:01:14.640 --> 00:01:17.200 +that I can no longer use. + +01:17.200 --> 00:01:19.119 +I want my notes to be version-controlled, + +01:19.119 --> 00:01:20.479 +so that if I make a big mistake, + +00:01:20.479 --> 00:01:22.080 +I can undo and revert + +00:01:22.080 --> 00:01:23.840 +to a prior good version, + +01:23.840 --> 00:01:27.680 +and I want my system to use spaced repetition, + +00:01:27.680 --> 00:01:29.520 +which is an advanced method + +00:01:29.520 --> 00:01:31.840 +of learning things over time + +00:01:31.840 --> 00:01:33.999 +so that you don't forget them. + +01:34.000 --> 00:01:36.799 +The package dependencies, in brief. + +00:01:36.799 --> 00:01:38.960 +org-mode, org-roam, org-roam-bibtex, + +00:01:38.960 --> 00:01:42.719 +pdf-tools, org-noter and org-ref. + +01:42.720 --> 00:01:45.119 +And now let's get on to some demos. + +01:45.119 --> 00:01:47.520 +Here in my browser window here + +00:01:47.520 --> 00:01:49.680 +is a lecture in the course + +00:01:49.680 --> 00:01:51.840 +I'm currently taking on deep learning. + +01:51.840 --> 00:01:54.240 +It's very nice that the professor + +01:54.240 --> 00:01:55.759 +provides slides. So this is + +00:01:55.759 --> 00:02:00.000 +the 54-page PDF file of the slides + +00:02:00.000 --> 00:02:02.079 +for the lecture. The problem is, + +00:02:02.079 --> 00:02:03.200 +it's hard to take notes on them. + +00:02:03.200 --> 00:02:04.560 +It's impossible to take notes on them + +00:02:04.560 --> 00:02:05.840 +here in this browser, + +00:02:05.840 --> 00:02:07.840 +as far as I know. So what I've done is + +00:02:07.840 --> 00:02:11.440 +I've incorporated these slides as a PDF + +02:11.440 --> 00:02:12.959 +in org-roam, which... + +00:02:12.959 --> 00:02:16.640 +I will now visit this file + +00:02:16.640 --> 00:02:19.120 +and you can bring it up alongside the PDF + +00:02:19.120 --> 00:02:20.560 +I was just looking at here. + +00:02:20.560 --> 00:02:23.200 +So what i like about this system is, + +02:23.200 --> 00:02:24.800 +as I'm going through and reading + +02:24.800 --> 00:02:26.720 +watching the video of the lecture, + +00:02:26.720 --> 00:02:29.599 +I'm following along in the PDF notes here, + +02:29.599 --> 00:02:31.680 +and I'm taking my notes alongside them. + +02:31.680 --> 00:02:34.400 +So here's the first part of that lecture. + +02:34.400 --> 00:02:36.319 +You can't see at the bottom right now, + +00:02:36.319 --> 00:02:38.800 +but this is one of the earlier pages. + +00:02:38.800 --> 00:02:42.400 +I go to the second section here + +00:02:42.400 --> 00:02:45.040 +and you see that my notes + +00:02:45.040 --> 00:02:46.640 +for this part of the lecture, + +02:46.640 --> 00:02:48.480 +here, my notes here... + +00:02:48.480 --> 00:02:49.599 +I love how the notes + +00:02:49.599 --> 00:02:50.959 +for different parts of the lecture + +00:02:50.959 --> 00:02:52.560 +are coordinated with the different parts + +02:52.560 --> 00:02:55.200 +of the PDF that go along with the lecture. + +02:55.200 --> 00:02:57.519 +Now let's go back to the top of this + +02:57.519 --> 00:03:01.840 +and you'll see... First, you'll see my notes + +03:01.840 --> 00:03:03.920 +down here. I'll go into these + +00:03:03.920 --> 00:03:06.319 +a little bit more shortly, + +00:03:06.319 --> 00:03:07.200 +but one of the things + +00:03:07.200 --> 00:03:08.959 +that goes along with a lecture + +00:03:08.959 --> 00:03:11.519 +in a grad school class is these days + +00:03:11.519 --> 00:03:13.680 +in computer science citations + +00:03:13.680 --> 00:03:14.640 +for research papers + +00:03:14.640 --> 00:03:16.480 +that were expected to read. + +03:16.480 --> 00:03:20.080 +So here's one entitled MixMatch. + +03:20.080 --> 00:03:22.319 +I haven't downloaded this paper yet, + +03:22.319 --> 00:03:24.238 +so let's go. Take a look at that. + +00:03:24.239 --> 00:03:26.319 +So I use a keystroke to select + +00:03:26.319 --> 00:03:28.480 +the title of the paper + +00:03:28.480 --> 00:03:30.239 +and another keybinding + +00:03:30.239 --> 00:03:31.440 +to search for that paper + +00:03:31.440 --> 00:03:33.519 +on a website called arXiv. + +03:33.519 --> 00:03:35.280 +arXiv, if you're not familiar-- + +00:03:35.280 --> 00:03:36.400 +and here's a match-- + +00:03:36.400 --> 00:03:37.680 +arXiv, if you're not familiar, + +00:03:37.680 --> 00:03:42.000 +is an open research server + +03:42.000 --> 00:03:43.760 +where researchers publish papers + +00:03:43.760 --> 00:03:45.040 +before they're published in journals + +00:03:45.040 --> 00:03:47.920 +or conferences, and they are copyright-free + +03:47.920 --> 00:03:50.159 +and open to anyone to read. + +00:03:50.159 --> 00:03:52.799 +So here is the paper I was looking for. + +03:52.799 --> 00:03:58.560 +I copy this link into an Org mode link, + +00:03:58.560 --> 00:03:59.840 +and I come back to Emacs, + +00:03:59.840 --> 00:04:02.400 +and now another keystroke + +04:02.400 --> 00:04:04.879 +will revisit that website, + +00:04:04.879 --> 00:04:06.400 +pull down the PDF, and pull down + +00:04:06.400 --> 00:04:08.400 +all the information in the bibliography + +00:04:08.400 --> 00:04:11.040 +and put it into a bibliography here, + +04:11.040 --> 00:04:13.599 +inside my local bibliography. + +00:04:13.599 --> 00:04:15.840 +So here's the paper I was just looking at. + +04:15.840 --> 00:04:17.840 +Another great thing about a lot of PDFs + +04:17.840 --> 00:04:20.320 +is that they have an embedded outline + +00:04:20.320 --> 00:04:24.160 +that you can extract via the pdf-tools package. + +04:24.160 --> 00:04:25.680 +So now you see on the right here: + +04:25.680 --> 00:04:27.360 +introduction, related work, MixMatch, + +04:27.360 --> 00:04:30.479 +experiments. I can go right to that section, + +04:30.479 --> 00:04:32.639 +and this outline knows exactly + +00:04:32.639 --> 00:04:33.759 +which part of the PDF + +00:04:33.759 --> 00:04:35.919 +corresponds to each of the parts + +00:04:35.919 --> 00:04:37.680 +of this outline in the paper. + +04:37.680 --> 00:04:40.240 +So then, when I go take notes in here, + +04:40.240 --> 00:04:41.280 +just like in my other notes, + +00:04:41.280 --> 00:04:43.040 +it'll be coordinated with the PDF + +00:04:43.040 --> 00:04:44.639 +that goes along with it. + +04:44.639 --> 00:04:48.080 +So let's quit out of here. + +00:04:48.080 --> 00:04:50.160 +So now that I've captured that... + +00:04:50.160 --> 00:04:53.199 +Uh oh, this is the same paper. + +04:53.199 --> 00:04:56.000 +So now here I am back in my notes. + +00:04:56.000 --> 00:04:58.000 +now that I've captured this paper. + +04:58.000 --> 00:05:02.400 +What I'm going to do is make it a link, + +05:02.400 --> 00:05:07.520 +so the org-roam node that I just took + +00:05:07.520 --> 00:05:09.600 +will be here at the top. MixMatch. + +05:09.600 --> 00:05:10.639 +There's a little difference. + +00:05:10.639 --> 00:05:13.120 +You'll see here, this m is a different case + +00:05:13.120 --> 00:05:16.240 +than this m, and that's one of my to-do list. + +00:05:16.240 --> 00:05:18.720 +I'd like to make it so that this search + +00:05:18.720 --> 00:05:20.320 +is a little less case-sensitive. + +00:05:20.320 --> 00:05:23.520 +So now I've linked this link to this paper + +00:05:23.520 --> 00:05:25.680 +into these notes, and now these are... + +00:05:25.680 --> 00:05:26.639 +you'll see a little bit later + +00:05:26.639 --> 00:05:29.360 +how these links can be graphed and followed + +00:05:29.360 --> 00:05:32.960 +and so forth. While I'm in this document, + +00:05:32.960 --> 00:05:33.680 +I'd like to show you + +00:05:33.680 --> 00:05:36.639 +that when I'm learning something + +05:36.639 --> 00:05:38.400 +and I learn a new fact, + +05:38.400 --> 00:05:40.320 +I write down what I learned + +00:05:40.320 --> 00:05:42.400 +in the form of a question and an answer. + +00:05:42.400 --> 00:05:45.039 +So you can see here, there's a question + +00:05:45.039 --> 00:05:46.800 +that begins with who, what, where. + +00:05:46.800 --> 00:05:49.360 +It begins with a w word, or how, + +05:49.360 --> 00:05:53.039 +or if or is, and it ends in a question mark, + +00:05:53.039 --> 00:05:54.960 +and then following that is another string + +00:05:54.960 --> 00:05:56.560 +that ends in a period. + +05:56.560 --> 00:05:58.240 +So I have a... I'd like to do this + +00:05:58.240 --> 00:05:59.280 +in Emacs as well, but I haven't + +00:05:59.280 --> 00:06:00.319 +worked that out yet. + +00:06:00.319 --> 00:06:04.639 +I have a script that will... + +06:04.639 --> 00:06:07.680 +Let's find a-n-k-i-f. + +06:07.680 --> 00:06:09.680 +Okay, I have a script that will go through + +00:06:09.680 --> 00:06:13.680 +all the notes in my org-roam directory + +06:13.680 --> 00:06:16.880 +and find all the questions. + +00:06:16.880 --> 00:06:20.720 +Now let's pull up the most... + +00:06:20.720 --> 00:06:24.319 +No, don't edit the buffer. + +06:24.319 --> 00:06:29.039 +Save that. Come back to here. + +06:29.039 --> 00:06:31.680 +So now you can see that all the questions + +00:06:31.680 --> 00:06:32.560 +that I've written in my notes + +06:32.560 --> 00:06:33.759 +have now been ANKIFIED. + +00:06:33.759 --> 00:06:34.880 +Now what's that mean? + +00:06:34.880 --> 00:06:40.960 +Anki is this program here + +06:40.960 --> 00:06:43.199 +which is a flashcard system + +00:06:43.199 --> 00:06:44.560 +based on the idea... + +00:06:44.560 --> 00:06:48.000 +No, let's not download that right now. + +00:06:48.000 --> 00:06:50.720 +This is a system that enables + +00:06:50.720 --> 00:06:53.120 +the easy creation of flash cards + +06:53.120 --> 00:06:54.479 +that show you the front, + +00:06:54.479 --> 00:06:55.360 +show you the back, + +00:06:55.360 --> 00:06:56.160 +and then you decide + +00:06:56.160 --> 00:07:00.000 +if you knew that question or not. + +07:00.000 --> 00:07:02.639 +So I don't want to spend much time on this, + +00:07:02.639 --> 00:07:04.639 +but everything I'm learning in a class, + +00:07:04.639 --> 00:07:06.800 +I write into my notes as a question + +00:07:06.800 --> 00:07:08.800 +that I load into this flashcard system + +00:07:08.800 --> 00:07:10.880 +that then I can review on a walk, + +00:07:10.880 --> 00:07:13.680 +or on a bus ride, or whatever, + +07:13.680 --> 00:07:16.400 +and stay on top of indefinitely. + +00:07:16.400 --> 00:07:17.440 +As long as I can continue + +07:17.440 --> 00:07:18.400 +to keep reviewing that, + +00:07:18.400 --> 00:07:20.639 +I will keep that information + +00:07:20.639 --> 00:07:22.319 +fresh in my mind. + +07:22.319 --> 00:07:24.479 +So now let's come out of these files + +07:24.479 --> 00:07:25.039 +back to here. + +00:07:25.039 --> 00:07:27.440 +So I've demoed class note PDFs, + +00:07:27.440 --> 00:07:29.440 +grabbing papers from arXiv, + +07:29.440 --> 00:07:31.199 +autogenerating the skeletons + +00:07:31.199 --> 00:07:32.720 +and the flashcards, + +00:07:32.720 --> 00:07:35.280 +and now let's see what it looks like. + +07:35.280 --> 00:07:40.160 +Let's visualize the connections + +07:40.160 --> 00:07:42.000 +between these nodes. + +07:42.000 --> 00:07:45.199 +So here is a graph for the file + +00:07:45.199 --> 00:07:46.319 +I'm reading right now: + +00:07:46.319 --> 00:07:49.520 +One Effective Grad Student Workflow. + +07:49.520 --> 00:07:53.599 +Here is the node I have a link to + +00:07:53.599 --> 00:07:54.639 +in my Org mode document + +07:54.639 --> 00:07:57.199 +on spaced repetition. We can open that + +00:07:57.199 --> 00:07:59.280 +and come right back to Emacs, + +07:59.280 --> 00:08:01.680 +and I just love that. + +08:01.680 --> 00:08:03.919 +For the more complicated topics, + +00:08:03.919 --> 00:08:05.520 +you can see connections between things + +00:08:05.520 --> 00:08:07.520 +that you maybe didn't realize you had, + +00:08:07.520 --> 00:08:10.240 +and some of the notes you've taken. + +00:08:10.240 --> 00:08:12.638 +And so I'm getting near the end. + +00:08:12.639 --> 00:08:15.120 +I just want to show some small customizations. + +08:15.120 --> 00:08:17.120 +I save my org mode files + +00:08:17.120 --> 00:08:18.479 +that are in org-roam + +00:08:18.479 --> 00:08:21.520 +with a year year month month date prefix, + +00:08:21.520 --> 00:08:24.639 +so that I can tell when the node was created + +00:08:24.639 --> 00:08:26.560 +I also truncate them at 30 characters, + +00:08:26.560 --> 00:08:27.919 +so that when I do an ls, + +00:08:27.919 --> 00:08:29.280 +they don't word wrap. + +00:08:29.280 --> 00:08:32.800 +Maybe that's OCD. + +08:32.800 --> 00:08:38.159 +I also use an ID format that is year month + +00:08:38.159 --> 00:08:40.479 +day hour month hour minute second + +08:40.479 --> 00:08:43.279 +rather than the full UUID format + +00:08:43.279 --> 00:08:44.720 +because that number up there, + +00:08:44.720 --> 00:08:46.160 +that ID makes sense to me + +00:08:46.160 --> 00:08:50.160 +and it gives me an idea of when that node-- + +08:50.160 --> 00:08:51.040 +which you can, by the way, + +00:08:51.040 --> 00:08:55.040 +you can have--even one of these subheadings + +00:08:55.040 --> 00:08:56.240 +can be a node in org-roam. + +00:08:56.240 --> 00:08:57.120 +So now that you can see + +08:57.120 --> 00:08:59.439 +that was created right now. + +08:59.440 --> 00:09:00.640 +Some of the TODOs I still have + +00:09:00.640 --> 00:09:02.720 +in this system... We don't have to go + +00:09:02.720 --> 00:09:04.000 +too much into them, but I mentioned + +00:09:04.000 --> 00:09:07.600 +case insensitivity, and I'd like + +00:09:07.600 --> 00:09:10.080 +to make some improvements to org-noter. + +00:09:10.080 --> 00:09:12.240 +At this point, I'd just like to... + +09:12.240 --> 00:09:14.959 +I have a list of people I'd like to thank. + +00:09:14.959 --> 00:09:16.240 +I'm not gonna read the whole list out, + +00:09:16.240 --> 00:09:17.680 +but they're a bunch of software engineers + +00:09:17.680 --> 00:09:20.399 +that created great free software + +00:09:20.399 --> 00:09:21.519 +that's very useful to me + +00:09:21.519 --> 00:09:23.839 +and I use every day, so thank you to them, + +00:09:23.839 --> 00:09:27.080 +and thank you all for listening to my talk. + +00:09:27.080 --> 00:09:28.080 +[captions by sachac] -- cgit v1.2.3