From 2ba7da1442ea8616fd099b96d3a37af7d2900ec2 Mon Sep 17 00:00:00 2001 From: EmacsConf Date: Sun, 3 Dec 2023 07:20:44 -0500 Subject: Automated commit --- ...eference-tracking--christopher-howard--main.vtt | 808 +++++++++++++++++++++ 1 file changed, 808 insertions(+) create mode 100644 2023/captions/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main.vtt (limited to '2023/captions/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main.vtt') diff --git a/2023/captions/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main.vtt b/2023/captions/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main.vtt new file mode 100644 index 00000000..f678c7ed --- /dev/null +++ b/2023/captions/emacsconf-2023-ref--orgmode-workflow-informal-reference-tracking--christopher-howard--main.vtt @@ -0,0 +1,808 @@ +WEBVTT captioned by bhavin192, checked by sachac + +NOTE Introduction + +00:00:00.000 --> 00:00:04.940 +Hello, this is Christopher Howard, + +00:00:04.940 --> 00:00:06.520 +and welcome to my talk, + +00:00:06.520 --> 00:00:08.800 +"Informal Reference Tracking." + +00:00:08.800 --> 00:00:10.574 +This is a workflow talk, + +00:00:10.574 --> 00:00:12.240 +so I need to explain a little bit about + +00:00:12.240 --> 00:00:14.840 +what my needs were. + +00:00:14.840 --> 00:00:18.760 +I am not a professional scholar or academic, + +00:00:18.760 --> 00:00:20.200 +but there are a number of subjects + +00:00:20.200 --> 00:00:21.607 +that I'm interested in, + +00:00:21.607 --> 00:00:23.240 +and I occasionally like to write + +00:00:23.240 --> 00:00:25.600 +gemlog posts about them. + +00:00:25.600 --> 00:00:28.680 +So I needed some way to keep track of references. + +00:00:28.680 --> 00:00:32.960 +References to webpage articles, references to books, + +00:00:32.960 --> 00:00:37.280 +pages in books, and notes about them. + +00:00:37.280 --> 00:00:39.480 +Something that was searchable, + +00:00:39.480 --> 00:00:42.440 +but also something that was quick and easy to use, + +00:00:42.440 --> 00:00:45.200 +and something that I could set up quickly. + +00:00:45.200 --> 00:00:47.360 +And the approach I took, it only took me + +00:00:47.360 --> 00:00:49.520 +about an hour or two to figure out + +00:00:49.520 --> 00:00:52.160 +how to put it together. + +00:00:52.160 --> 00:00:53.840 +I do want to emphasize + +00:00:53.840 --> 00:00:56.520 +that there are better ways to do this. + +00:00:56.520 --> 00:00:58.960 +I'm not recommending you use my code + +00:00:58.960 --> 00:01:02.120 +or follow my exact approach. + +00:01:02.120 --> 00:01:05.940 +In particular, what I'm doing was meant to be done + +00:01:05.940 --> 00:01:09.240 +with Org's built-in capture + +00:01:09.240 --> 00:01:11.800 +and templates functionality, + +00:01:11.800 --> 00:01:14.907 +so that's something that's more flexible, + +00:01:14.907 --> 00:01:21.440 +programmable, and there's also a lot of add-ins + +00:01:21.440 --> 00:01:23.960 +that can be tied into that. + +00:01:23.960 --> 00:01:31.320 +For example, tools that allow you to search for, + +00:01:31.320 --> 00:01:34.480 +you know, feed in a URL, and it automatically + +00:01:34.480 --> 00:01:38.240 +pulls all the reference data for you. + +00:01:38.240 --> 00:01:39.760 +And there's tools out there + +00:01:39.760 --> 00:01:43.120 +that are really meant for scientific writing, + +00:01:43.120 --> 00:01:46.760 +so if you do this professionally, + +00:01:46.760 --> 00:01:49.960 +you may need to keep track of dozens of details + +00:01:49.960 --> 00:01:51.080 +for each reference + +00:01:51.080 --> 00:01:55.320 +and then have some fancy system to generate that + +00:01:55.320 --> 00:02:00.800 +into your, or output that into your paper. + +00:02:00.800 --> 00:02:02.440 +So there are better systems, + +00:02:02.440 --> 00:02:06.040 +but this is what worked for me and what was easy. + +NOTE Tip about completion frameworks + +00:02:06.040 --> 00:02:11.320 +I do want to emphasize that if you haven't, + +00:02:11.320 --> 00:02:14.640 +you really want to learn how to use helm-mode + +00:02:14.640 --> 00:02:20.440 +H-E-L-M, or one of the similar systems in Emacs + +00:02:20.440 --> 00:02:26.440 +that does fuzzy search on Emacs commands. + +00:02:26.440 --> 00:02:29.340 +For example, in Helm here, + +00:02:29.340 --> 00:02:39.007 +I input one keychord, and then I just have to remember + +00:02:39.007 --> 00:02:40.720 +a few characters of some command, + +00:02:40.720 --> 00:02:43.479 +and they don't even have to be right next to each other, + +00:02:43.480 --> 00:02:47.640 +like H-O-C will bring up `helm-occur`. + +00:02:47.640 --> 00:02:51.360 +That's based on its algorithms + +00:02:51.360 --> 00:02:53.000 +of what I most likely meant + +00:02:53.000 --> 00:02:55.160 +and the ones that I've used in the past. + +00:02:55.160 --> 00:02:57.920 +So it usually brings up the command that I want, + +00:02:57.920 --> 00:02:59.579 +or the one that I want + +00:02:59.580 --> 00:03:03.080 +is one or two spots away in the entry. + +00:03:03.080 --> 00:03:05.074 +That just saves me a lot of time + +00:03:05.074 --> 00:03:06.960 +[and] a lot of memorization. + +00:03:06.960 --> 00:03:09.120 +So if you haven't learned Helm + +00:03:09.120 --> 00:03:14.919 +or a similar system for Emacs, you really want to. + +NOTE References file overview + +00:03:14.920 --> 00:03:18.240 +So what is my approach? + +00:03:18.240 --> 00:03:24.880 +Well, basically, what it comes down to is really + +00:03:24.880 --> 00:03:27.307 +fundamentally nothing more than just a list + +00:03:27.307 --> 00:03:30.640 +of Org entries in a file. + +00:03:30.640 --> 00:03:35.579 +And there's one entry per reference. + +00:03:35.580 --> 00:03:37.207 +Fundamentally, that's all it is. + +00:03:37.207 --> 00:03:39.207 +But I'll go over the parts. + +00:03:39.207 --> 00:03:43.080 +You can see there's the title for the entry, + +00:03:43.080 --> 00:03:44.800 +and that's not necessarily + +00:03:44.800 --> 00:03:47.400 +the title of the book or the article, + +00:03:47.400 --> 00:03:50.840 +but that's my perspective on it, + +00:03:50.840 --> 00:03:52.720 +that's what I want to remember about it, + +00:03:52.720 --> 00:03:54.560 +and what I'll be looking for later + +00:03:54.560 --> 00:03:56.560 +when I do a search on my references. + +00:03:56.560 --> 00:04:06.659 +There's also in here the use of Org's tags + +00:04:06.660 --> 00:04:08.274 +here to the right of the title, + +00:04:08.274 --> 00:04:12.040 +very handy for searching for entries later. + +00:04:12.040 --> 00:04:18.160 +I use some Org properties attached to each entry. + +00:04:18.160 --> 00:04:21.740 +I automatically add in here an ID + +00:04:21.740 --> 00:04:24.074 +that can be useful if you want to + +00:04:24.074 --> 00:04:27.800 +link entries together later. + +00:04:27.800 --> 00:04:30.400 +I automatically add in here the date + +00:04:30.400 --> 00:04:31.840 +that the entry was created, + +00:04:31.840 --> 00:04:35.699 +which can be useful to me if things + +00:04:35.700 --> 00:04:38.360 +got sorted in a different order at some point, + +00:04:38.360 --> 00:04:39.940 +I could still look through + +00:04:39.940 --> 00:04:42.507 +the most recent entries that I had made + +00:04:42.507 --> 00:04:45.040 +if I wanted to do that for some reason. + +00:04:45.040 --> 00:04:48.640 +And sometimes I add in this publication year field + +00:04:48.640 --> 00:04:52.720 +with the idea that one day I might want to do + +00:04:52.720 --> 00:04:55.840 +a search for entries based on the publication year + +00:04:55.840 --> 00:04:57.360 +of the book or the article, + +00:04:57.360 --> 00:05:00.774 +say, only to use recent references + +00:05:00.774 --> 00:05:03.080 +or something like that. + +00:05:03.080 --> 00:05:05.360 +And then down here below the properties + +00:05:05.360 --> 00:05:10.080 +is where I paste in the URL to the webpage, or + +00:05:10.080 --> 00:05:13.007 +type in the title and author of the book + +00:05:13.007 --> 00:05:16.959 +on the pages, maybe the pages that were relevant, + +00:05:16.960 --> 00:05:21.640 +the pages of the periodical, or something like that. + +00:05:21.640 --> 00:05:23.920 +And I could put anything that I want down here, + +00:05:23.920 --> 00:05:25.840 +some other notes about what's important + +00:05:25.840 --> 00:05:29.939 +about this article to me. + +00:05:29.940 --> 00:05:32.200 +So fundamentally, that's all it is. + +00:05:32.200 --> 00:05:35.240 +Of course, I've added in a bit of convenience code + +00:05:35.240 --> 00:05:37.080 +to make this go a lot faster + +00:05:37.080 --> 00:05:39.320 +rather than typing all this out. + +NOTE The Emacs Lisp code + +00:05:39.320 --> 00:05:45.879 +For that, I'll switch back to my init.el file. + +00:05:45.880 --> 00:05:49.480 +There's really just five functions. + +00:05:49.480 --> 00:05:52.840 +The first two here are ones + +00:05:52.840 --> 00:05:54.560 +that I've adapted off the Internet. + +00:05:54.560 --> 00:05:56.160 +Honestly, I can't remember + +00:05:56.160 --> 00:05:58.239 +exactly where that I got them from, + +00:05:58.240 --> 00:06:00.240 +but basically, they're just some functions + +00:06:00.240 --> 00:06:04.240 +for making a block of text writable or readable. + +00:06:04.240 --> 00:06:09.299 +Writable or not writable, I should say. + +00:06:09.300 --> 00:06:12.200 +The idea there is that + +00:06:12.200 --> 00:06:13.480 +when I'm creating a new entry, + +00:06:13.480 --> 00:06:16.307 +I don't want to accidentally delete + +00:06:16.307 --> 00:06:18.960 +or write over some earlier entries that I've made. + +00:06:18.960 --> 00:06:24.880 +So I use a little bit of Emacs functionality for that. + +00:06:24.880 --> 00:06:29.440 +And then here are the three reference functions + +00:06:29.440 --> 00:06:32.440 +that I've actually written. + +00:06:32.440 --> 00:06:35.040 +Really trivial, basic stuff here. + +00:06:35.040 --> 00:06:41.800 +The core of it is the `new-reference` function. + +00:06:41.800 --> 00:06:44.840 +Basically, what that does is + +00:06:44.840 --> 00:06:47.560 +it opens up the references file, + +00:06:47.560 --> 00:06:52.040 +jumps to the end of the reference file, + +00:06:52.040 --> 00:06:57.440 +starts a new entry, inserts the asterisk. + +00:06:57.440 --> 00:07:01.520 +It jumps back to the previous text, + +00:07:01.520 --> 00:07:03.474 +and whatever previous text there is, + +00:07:03.474 --> 00:07:04.880 +it makes that read-only. + +00:07:04.880 --> 00:07:08.120 +Again, so that I don't accidentally delete that, + +00:07:08.120 --> 00:07:10.800 +or cut, or type over it, or something + +00:07:10.800 --> 00:07:14.579 +when I'm making a new reference. + +00:07:14.580 --> 00:07:17.680 +Then it goes back to the new reference, + +00:07:17.680 --> 00:07:21.339 +automatically adds in a unique ID for that, + +00:07:21.340 --> 00:07:25.360 +and then automatically stamps it with + +00:07:25.360 --> 00:07:28.999 +the date the entry was created — today's date. + +00:07:29.000 --> 00:07:32.760 +Now, I've got two other functions here. + +00:07:32.760 --> 00:07:34.540 +One is `view-references`, + +00:07:34.540 --> 00:07:37.807 +which does nothing but open up the reference file + +00:07:37.807 --> 00:07:39.400 +and switch to that buffer + +00:07:39.400 --> 00:07:42.539 +if you're not already on it. + +00:07:42.540 --> 00:07:45.880 +And then there's one other here, `edit-references`, + +00:07:45.880 --> 00:07:50.159 +which does the exact same thing except for + +00:07:50.160 --> 00:07:53.560 +it also goes over all the text in the buffer + +00:07:53.560 --> 00:07:55.040 +and makes it writable. + +00:07:55.040 --> 00:07:58.120 +So if I really do want to edit those other references, + +00:07:58.120 --> 00:08:02.719 +I've got a function to quickly make that possible. + +NOTE Example reference to Elfeed article + +00:08:02.720 --> 00:08:07.499 +Let me give an example of this. + +00:08:07.500 --> 00:08:13.979 +I type in here, new reference. + +00:08:13.980 --> 00:08:16.440 +Now I've jumped to the end of my references file. + +00:08:16.440 --> 00:08:19.080 +See, it's ready to take the title. + +00:08:19.080 --> 00:08:21.720 +Well, I guess I need to have something, + +00:08:21.720 --> 00:08:23.659 +some content, to put in here. + +00:08:23.660 --> 00:08:28.879 +Let's say I was looking through Elfeed, + +00:08:28.880 --> 00:08:31.600 +and let's say I found this interesting article + +00:08:31.600 --> 00:08:38.219 +about Mars earthquakes. + +00:08:38.220 --> 00:08:40.007 +Let's say I open it up [and] + +00:08:40.007 --> 00:08:41.159 +I read through the article. + +00:08:41.160 --> 00:08:43.840 +First, I'd figure out what it is + +00:08:43.840 --> 00:08:47.259 +that I find interesting about this, what it is that + +00:08:47.260 --> 00:08:51.579 +I'm going to want to remember and look up later. + +00:08:51.580 --> 00:08:57.479 +So I come up with a quick title based on that. + +00:08:57.480 --> 00:09:01.899 +Let's go back to the references with `view-reference`. + +00:09:01.900 --> 00:09:05.674 +And, let's just call it + +00:09:05.674 --> 00:09:13.879 +"Study of Mars Earthquake." + +00:09:13.880 --> 00:09:18.199 +Now I'm going to also want to put in some tags. + +00:09:18.200 --> 00:09:21.107 +On my system, that's done with + +00:09:21.107 --> 00:09:23.639 +Control C, Control Q (`C-c C-q`). + +00:09:23.640 --> 00:09:25.520 +And I can put in some tags. + +00:09:25.520 --> 00:09:29.160 +I like to go ahead and insert the colons. + +00:09:29.160 --> 00:09:30.799 +You can leave those out, + +00:09:30.800 --> 00:09:32.560 +but they're going to get added anyway, + +00:09:32.560 --> 00:09:36.779 +so I'm in the habit of using them. + +00:09:36.780 --> 00:09:41.120 +Let's say we'll call this 'Astronomy' as one tag, + +00:09:41.120 --> 00:09:47.059 +and the next tag could be 'Planets'. + +00:09:47.060 --> 00:09:48.400 +If I wanted to use a tag + +00:09:48.400 --> 00:09:50.400 +that was more than one word in the tag, + +00:09:50.400 --> 00:09:53.540 +I'd need to use underscores or something like that. + +00:09:53.540 --> 00:10:00.499 +If I wanted a tag that was 'Mars Earthquakes', + +00:10:00.500 --> 00:10:05.059 +I could do it like that, but that's kind of silly. + +00:10:05.060 --> 00:10:08.659 +Now I try not to be too clever with the tags. + +00:10:08.660 --> 00:10:10.600 +I don't spend a lot of time thinking about them. + +00:10:10.600 --> 00:10:13.107 +I just come up with some general buckets + +00:10:13.107 --> 00:10:15.019 +to throw things in. + +00:10:15.020 --> 00:10:16.880 +You can see the tags were added there, + +00:10:16.880 --> 00:10:19.379 +to the right of the title. + +00:10:19.380 --> 00:10:23.399 +Now you can see down here under PROPERTIES, + +00:10:23.400 --> 00:10:25.320 +the ID has already been added, + +00:10:25.320 --> 00:10:27.040 +the Date_Created has been added. + +00:10:27.040 --> 00:10:30.200 +Sometimes, I'll like to put in the publication year, + +00:10:30.200 --> 00:10:38.139 +and for that, I use the `org-set-property` command. + +00:10:38.140 --> 00:10:43.439 +Publication_Year, this year in this case. + +00:10:43.440 --> 00:10:46.679 +And then I just need to paste in the URL. + +00:10:46.680 --> 00:10:48.080 +I do that manually. + +00:10:48.080 --> 00:10:53.480 +I use Org's bracket format for that. + +00:10:53.480 --> 00:10:57.639 +So I start that, go back to the article, + +00:10:57.640 --> 00:11:02.099 +copy the URL, paste that in. + +00:11:02.100 --> 00:11:04.480 +If I want, I can add it in the title + +00:11:04.480 --> 00:11:07.459 +with the second pair of brackets here. + +00:11:07.460 --> 00:11:14.200 +Don't have to, but often like to. + +00:11:14.200 --> 00:11:18.560 +Close that off, and there it is. + +00:11:18.560 --> 00:11:20.879 +That was really it. + +00:11:20.880 --> 00:11:22.120 +I add a return on the end here, + +00:11:22.120 --> 00:11:26.619 +just so the next entry comes out with the right spacing. + +00:11:26.620 --> 00:11:28.307 +But really, that's it, + +00:11:28.307 --> 00:11:31.000 +and typically, when I'm not explaining it, + +00:11:31.000 --> 00:11:37.499 +that only takes 20 seconds or so, or 30 seconds. + +00:11:37.500 --> 00:11:41.539 +Pretty quick. Pretty easy. + +NOTE Searching the references + +00:11:41.540 --> 00:11:45.539 +What about searching later? + +00:11:45.540 --> 00:11:50.474 +Well, often the easiest thing is just do a simple, + +00:11:50.474 --> 00:11:54.639 +boring incremental search. + +00:11:54.640 --> 00:11:55.880 +I usually know roughly + +00:11:55.880 --> 00:11:58.499 +what it is that I'm looking for already. + +00:11:58.500 --> 00:12:02.379 +If I was looking for that wildflower article, + +00:12:02.380 --> 00:12:06.000 +I could just do an incremental search for wildflowers + +00:12:06.000 --> 00:12:07.920 +and jump through that. It's pretty simple. + +00:12:07.920 --> 00:12:13.200 +Not very impressive, but honestly, most of the time + +00:12:13.200 --> 00:12:16.439 +that gets me there pretty quick. + +00:12:16.440 --> 00:12:20.360 +Sometimes I find it useful to do an Occur search, + +00:12:20.360 --> 00:12:23.240 +more specifically a Helm Occur search. + +00:12:23.240 --> 00:12:31.259 +If I use the `helm-occur` command, + +00:12:31.260 --> 00:12:34.680 +then I like to use this to search by tag. + +00:12:34.680 --> 00:12:36.760 +That's where it really becomes handy. + +00:12:36.760 --> 00:12:39.207 +Let's say I want to narrow it down + +00:12:39.207 --> 00:12:42.640 +to all my astronomy references + +00:12:42.640 --> 00:12:50.039 +and then narrow it down a little bit more to planets. + +00:12:50.040 --> 00:12:54.119 +I can put spaces in between and it still works. + +00:12:54.120 --> 00:12:57.199 +You can see here in one window, + +00:12:57.200 --> 00:13:00.239 +it gives me the bottom window there. + +00:13:00.240 --> 00:13:03.479 +It's giving…, just because of the way + +00:13:03.480 --> 00:13:06.440 +the tags are formatted with the title, it gives me + +00:13:06.440 --> 00:13:09.519 +a list of all the titles that have those tags. + +00:13:09.520 --> 00:13:11.520 +And I usually find what I want pretty quick + +00:13:11.520 --> 00:13:13.400 +by just tapping through here. + +00:13:13.400 --> 00:13:16.499 +Once I find the one that I think I want, + +00:13:16.500 --> 00:13:24.139 +I press enter, and now I'm focused on just that entry. + +00:13:24.140 --> 00:13:26.960 +There is some advanced functionality, I believe, + +00:13:26.960 --> 00:13:29.960 +that I used in the past where you could search + +00:13:29.960 --> 00:13:33.119 +based on the property fields. + +00:13:33.120 --> 00:13:37.880 +So do something like search for publication — + +00:13:37.880 --> 00:13:42.439 +the most recent publications in the last 10 years. + +00:13:42.440 --> 00:13:46.200 +There's some kind of advanced syntax for that, + +00:13:46.200 --> 00:13:48.219 +which I used once or twice. + +00:13:48.220 --> 00:13:51.400 +Honestly, I use that so infrequently + +00:13:51.400 --> 00:13:54.840 +that I have to go back to the Emacs manual + +00:13:54.840 --> 00:13:57.739 +and figure it out each time, and figure out again + +00:13:57.740 --> 00:13:59.880 +how I did that the last time. + +00:13:59.880 --> 00:14:02.000 +But since I do it only once + +00:14:02.000 --> 00:14:06.679 +every three or four months, it's not a problem. + +00:14:06.680 --> 00:14:11.519 +So I'm not going to go over that today. + +00:14:11.520 --> 00:14:16.479 +That's pretty much it in a nutshell. + +00:14:16.480 --> 00:14:19.974 +Again, the code that I wrote, this specific approach + +00:14:19.974 --> 00:14:24.279 +is not really what I'm recommending. + +00:14:24.280 --> 00:14:31.160 +But here it is if you really do want to use it. + +00:14:31.160 --> 00:14:36.239 +Maybe I can make a link to the URL + +00:14:36.240 --> 00:14:40.059 +and share that in the chat room or something. + +00:14:40.060 --> 00:14:46.759 +But I consider this to be trivial code. + +00:14:46.760 --> 00:14:49.799 +So just use that if you want to use it. + +00:14:49.800 --> 00:14:53.440 +I should be signing off here now. + +00:14:53.440 --> 00:14:58.259 +I should be in the chat room, in the IRC chat room, + +00:14:58.260 --> 00:15:01.920 +or you can reach out to me by email if you'd like. + +00:15:01.920 --> 00:15:04.320 +Thank you very much. -- cgit v1.2.3