WEBVTT captioned by abhinav 00:00:00.560 --> 00:00:02.560 Hello. My name is Abhinav, and I'm going 00:00:02.560 --> 00:00:04.880 to talk about unlocking linked data in Org 00:00:04.880 --> 00:00:07.120 Mode. So, like, a lot of you, I 00:00:07.120 --> 00:00:09.360 use Emacs and Org Mode for keeping a 00:00:09.360 --> 00:00:12.320 lot of my data, personal information. For example, 00:00:12.320 --> 00:00:14.775 if I'm trying to, you know, write journal 00:00:14.775 --> 00:00:16.535 entries, it's most likely going to be an 00:00:16.535 --> 00:00:18.615 Org Mode file. If I'm trying to save 00:00:18.615 --> 00:00:21.015 bookmarks or save links, again, they go into 00:00:21.015 --> 00:00:23.415 an Org Mode file. Now, I was doing 00:00:23.415 --> 00:00:26.375 that earlier, but, last year, I think I 00:00:26.695 --> 00:00:28.615 around last year, I started to use these 00:00:28.615 --> 00:00:31.390 specialized applications. So, you know, for example, if 00:00:31.390 --> 00:00:33.710 I'm trying to save bookmarks, I'm going to 00:00:33.710 --> 00:00:37.230 use a bookmark manager. I specifically was using 00:00:37.230 --> 00:00:39.870 Raindrop for it. What happened with that is 00:00:39.870 --> 00:00:42.590 that it allowed me to save bookmarks. Let's 00:00:42.590 --> 00:00:43.790 say, you know, when I'm on go, I'm 00:00:43.790 --> 00:00:45.470 on a mobile phone, I can just, 00:00:45.470 --> 00:00:47.594 you know, open my Android app and then 00:00:47.594 --> 00:00:50.235 save links there. I can also annotate and, 00:00:50.235 --> 00:00:51.355 you know, do other things that you can 00:00:51.355 --> 00:00:54.235 do on bookmarks. Similarly, you know, for reading, 00:00:54.235 --> 00:00:56.074 let's say, papers and PDFs, I would use 00:00:56.074 --> 00:01:00.074 Zotero. For, keeping notes about people, I'll use 00:01:00.074 --> 00:01:03.650 a tool called Monica CRM. Now all these 00:01:03.650 --> 00:01:05.650 tools, their aim is to kind of 00:01:05.650 --> 00:01:08.050 do one thing really well, but they kind 00:01:08.050 --> 00:01:09.730 of work in their own silos, and it's 00:01:09.730 --> 00:01:11.810 very hard to link data from one to 00:01:11.810 --> 00:01:13.730 another. For example, if you have a journal 00:01:13.730 --> 00:01:16.855 application, you can say things like, you know, 00:01:16.855 --> 00:01:18.795 "Hey today, I met this person, and then, 00:01:18.935 --> 00:01:20.855 you know, this person gave me this recipe," 00:01:20.855 --> 00:01:23.915 whatever. But you know that the person information 00:01:24.615 --> 00:01:26.375 is still kept in a different application, and 00:01:26.375 --> 00:01:27.895 the recipe information is still kept in a 00:01:27.895 --> 00:01:30.235 different application. You have to, like, you know, 00:01:30.720 --> 00:01:32.079 like, do a lot of work to kind 00:01:32.079 --> 00:01:35.920 of make them come together. So, one thing 00:01:35.920 --> 00:01:37.600 that happened also last year was that I 00:01:37.600 --> 00:01:39.840 started using Org Roam a lot. So Org 00:01:39.840 --> 00:01:41.920 Roam is a Zettelkasten system, you know, 00:01:41.920 --> 00:01:45.025 which allows you to have linked notes. I'll 00:01:45.025 --> 00:01:46.625 not go too much into that detail, but 00:01:46.625 --> 00:01:48.945 basically, with Org Roam, you can, you know, 00:01:48.945 --> 00:01:50.785 have a lot of these text based files 00:01:50.785 --> 00:01:53.025 that you make anyway and then keep them 00:01:53.025 --> 00:01:55.345 connected and then, you know, like, have this 00:01:55.345 --> 00:01:57.985 knowledge base that you can build, around your 00:01:57.985 --> 00:02:02.040 information, your data. While it's a good system, 00:02:02.040 --> 00:02:04.299 I still feel like it's not very pro 00:02:04.680 --> 00:02:07.080 on providing, you know, very good amount of 00:02:07.080 --> 00:02:10.520 tools for, working with links. I'll show two 00:02:10.520 --> 00:02:12.920 kind of things. First is that, I'll show 00:02:12.920 --> 00:02:16.885 how my current knowledge base looks like, what 00:02:16.885 --> 00:02:18.965 kind of, you know, workflow I kind of 00:02:18.965 --> 00:02:21.205 use to save, let's say, any information or 00:02:21.205 --> 00:02:22.644 how do I, like, you know, connect new 00:02:22.644 --> 00:02:25.924 notes. The other is that because while this 00:02:25.924 --> 00:02:28.084 information base is working out well for 00:02:28.084 --> 00:02:31.689 me, I still want all of my external 00:02:31.750 --> 00:02:34.470 usages to be, you know, to be reflected 00:02:34.470 --> 00:02:37.030 back into this database of text files. So 00:02:37.030 --> 00:02:38.950 if I'm browsing something, I still want that 00:02:38.950 --> 00:02:40.790 thing to be, you know, saved in my 00:02:40.790 --> 00:02:43.975 Org Mode files, whether I'm browsing on Android 00:02:43.975 --> 00:02:46.475 or I'm browsing on, let's say, Firefox 00:02:46.535 --> 00:02:49.015 somewhere on a laptop. So, I'll show you 00:02:49.015 --> 00:02:50.615 those two things here. It's going to be 00:02:50.615 --> 00:02:52.215 a short talk, and then, yeah, hope you 00:02:52.215 --> 00:02:54.855 like it. Okay. So we'll start with this 00:02:54.855 --> 00:02:57.830 thing. So this is a simple Org Roam 00:02:57.830 --> 00:02:59.990 node. It's, you know, it's a dummy node. 00:02:59.990 --> 00:03:01.190 I've made, like, a lot of dummy nodes 00:03:01.190 --> 00:03:03.110 here just to kind of show, so, you 00:03:03.110 --> 00:03:05.590 know, maybe some of those information will be 00:03:05.590 --> 00:03:08.470 sparse, but I hope I convey the 00:03:08.630 --> 00:03:12.555 meaning clearly. Okay. So here, if you usually, 00:03:12.635 --> 00:03:14.234 you know, if you're just using plain Org 00:03:14.234 --> 00:03:15.995 Mode, you just have this file. Right? There's 00:03:15.995 --> 00:03:19.114 nothing else. Now if you are using Org 00:03:19.114 --> 00:03:20.875 Roam, you can do something called org-roam- 00:03:20.875 --> 00:03:23.034 buffer-toggle, which will show you, you know, 00:03:23.034 --> 00:03:26.610 a few of those connected nodes. Now, usually, 00:03:26.750 --> 00:03:29.470 the connections are shown here, they only show 00:03:29.470 --> 00:03:32.190 you backlinks. So, basically, any other node that 00:03:32.190 --> 00:03:34.270 has linked to this node is going to 00:03:34.270 --> 00:03:36.910 be shown there. But in my extension, you 00:03:36.910 --> 00:03:40.485 can see more things. For example, here, in 00:03:40.485 --> 00:03:42.985 this case, you can see, first of all, 00:03:43.125 --> 00:03:45.364 we show both links. So any link from 00:03:45.364 --> 00:03:47.765 this node to something else, will also be 00:03:47.765 --> 00:03:49.285 shown there. Any link from that node to 00:03:49.285 --> 00:03:52.099 something else will also be shown there. So 00:03:52.099 --> 00:03:54.420 you can see, that is one thing. The 00:03:54.420 --> 00:03:56.099 other thing is that all these links are 00:03:56.099 --> 00:03:58.739 categorized in, you know, type of notes. For 00:03:58.739 --> 00:04:02.260 example, when this note specifically right now is 00:04:02.260 --> 00:04:05.005 of kind book. Tag is one identifier for 00:04:05.005 --> 00:04:06.045 it, but there are, like, other ways to 00:04:06.045 --> 00:04:09.165 identify, you know, a kind of note. But 00:04:09.165 --> 00:04:11.165 this is connected to another node, which is 00:04:11.165 --> 00:04:13.084 of a kind person. So as you 00:04:13.084 --> 00:04:15.165 can see, the, Person A asked me to 00:04:15.165 --> 00:04:16.685 read this book. So, you know, that link 00:04:16.685 --> 00:04:19.170 is shown there in a very, rich format. 00:04:19.170 --> 00:04:20.769 So we have, like, more information about the 00:04:20.769 --> 00:04:23.970 link, in this. The other thing that you 00:04:23.970 --> 00:04:26.610 can see there is that, there are also 00:04:26.610 --> 00:04:29.570 links which are not existing right now, but 00:04:29.570 --> 00:04:32.530 they could be, you know, possibly interesting for 00:04:32.530 --> 00:04:34.675 me. So these are similar nodes. So these 00:04:34.755 --> 00:04:36.514 you can see the scores of similarity and 00:04:36.514 --> 00:04:38.435 then, you know, other nodes like Book on 00:04:38.435 --> 00:04:40.354 Mathematics, which is another dummy node that 00:04:40.354 --> 00:04:42.995 I made for this demo. Now these are 00:04:42.995 --> 00:04:44.275 nodes which, you know, again, I can just 00:04:44.275 --> 00:04:45.474 go in there and I can see if 00:04:45.474 --> 00:04:47.389 maybe they make sense or if, you know, 00:04:47.710 --> 00:04:50.210 I can just, like, make those connections explicitly. 00:04:51.150 --> 00:04:53.229 So let's let's try some other node here. 00:04:53.229 --> 00:04:55.229 So let's say so this is a node 00:04:55.229 --> 00:04:57.389 of a recipe. It's Bombay 00:04:57.389 --> 00:04:59.550 Sandwich. It's the recipe I made. Now if 00:04:59.550 --> 00:05:01.389 you go here on the right, you can 00:05:01.389 --> 00:05:03.775 see, you know, there's, like, some things on, 00:05:04.095 --> 00:05:07.135 some person liking the sandwich. There are some 00:05:07.135 --> 00:05:09.775 related notes also, similar notes which I have 00:05:09.775 --> 00:05:12.575 not linked. Plus, there are some journal entries. 00:05:12.575 --> 00:05:15.855 Now I use Org-Roam daily to kind of, 00:05:15.855 --> 00:05:19.930 you know, write down journal entries. And then, 00:05:20.710 --> 00:05:22.150 you know, what I have to do there 00:05:22.150 --> 00:05:24.070 is basically just write whatever I want and 00:05:24.070 --> 00:05:25.590 then just, you know, make those links to 00:05:25.590 --> 00:05:28.630 this node. So for doing 00:05:28.630 --> 00:05:31.030 that, I can see, that there were two 00:05:31.030 --> 00:05:32.630 days where I made Bombay Sandwich, and I 00:05:32.630 --> 00:05:35.465 had some observations around it, which, you know, 00:05:35.465 --> 00:05:38.505 you can see here. Right. Same so same 00:05:38.505 --> 00:05:39.865 for person. Let's say if you go to 00:05:39.865 --> 00:05:41.705 Person B, you can see that, you know, 00:05:41.705 --> 00:05:43.385 this person has, again, link to Person A 00:05:43.385 --> 00:05:45.865 and there's, like, some information around it. Plus, 00:05:45.865 --> 00:05:50.050 there are some similar notes there. This works 00:05:50.050 --> 00:05:52.210 really well. The similarity function works really well 00:05:52.210 --> 00:05:54.530 if you are basically trying to go to, 00:05:54.530 --> 00:05:56.530 you know, bookmarks that I have saved. So 00:05:56.530 --> 00:05:58.470 for example, here's a bookmark that I saved, 00:05:58.610 --> 00:06:01.605 which is, Google at Interspeech 2023. Now 00:06:01.605 --> 00:06:03.845 this bookmark is a blog post from Google 00:06:03.845 --> 00:06:07.525 AI team. Basically, you know, tells what research 00:06:07.525 --> 00:06:09.785 publications they had in this conference. 00:06:10.005 --> 00:06:11.445 Now if you go to the Similar Nodes 00:06:11.445 --> 00:06:13.365 here, you can see a very similar blog 00:06:13.365 --> 00:06:15.925 post from Google's team for other conferences that 00:06:15.925 --> 00:06:17.840 they attended. Right? Now this is very helpful 00:06:17.840 --> 00:06:19.860 for me, especially when I'm, like, reading something, 00:06:20.240 --> 00:06:21.840 later. So I, like, save a lot of 00:06:21.840 --> 00:06:24.400 links together. And then when I'm deciding 00:06:24.400 --> 00:06:26.080 to read something, I just open this and 00:06:26.080 --> 00:06:28.319 then see, you know, how everything is connected, 00:06:28.319 --> 00:06:30.159 what what else I have saved. Should I 00:06:30.159 --> 00:06:32.625 read something else or not? One interesting feature 00:06:32.625 --> 00:06:34.784 I was realizing I should try out is 00:06:34.784 --> 00:06:37.425 that, you know, if I go to this 00:06:37.425 --> 00:06:39.985 node, which is Person B, you can see 00:06:39.985 --> 00:06:42.705 that while I'm linking this to Person A, 00:06:42.705 --> 00:06:45.040 I also have some context on that. So 00:06:45.040 --> 00:06:47.600 I've written specifically uncle of Person 00:06:47.600 --> 00:06:49.600 A. Now if you have a semantic wiki, 00:06:49.600 --> 00:06:52.240 you will have a typed link where you 00:06:52.240 --> 00:06:54.000 don't have a plain link. You also have 00:06:54.000 --> 00:06:55.840 a type of the link. So in this 00:06:55.840 --> 00:06:57.040 case, the type of the link could be, 00:06:57.040 --> 00:07:00.895 you know, it's like `uncle:` whatever 00:07:00.895 --> 00:07:03.335 that link is. But, you know, I don't 00:07:03.335 --> 00:07:05.175 want to, like, go into that much detail, 00:07:05.175 --> 00:07:07.335 and I don't want to, like, learn how 00:07:07.335 --> 00:07:09.175 to link things, learn what kind of types 00:07:09.175 --> 00:07:10.375 I can make. So I can just write 00:07:10.375 --> 00:07:12.294 things in plain text. So I've written this 00:07:12.294 --> 00:07:13.815 in plain text. What I can do now 00:07:13.815 --> 00:07:16.250 is I can just search for links like 00:07:16.250 --> 00:07:17.850 this. For example, I can just do something 00:07:17.850 --> 00:07:21.290 like family members. Now this will show me 00:07:21.290 --> 00:07:23.370 all the links which have a context which 00:07:23.370 --> 00:07:27.450 makes sense as family members. So basically, this 00:07:27.450 --> 00:07:29.610 is semantic search on links, on the context 00:07:29.610 --> 00:07:31.215 of the links, and then, you know, it 00:07:31.215 --> 00:07:33.134 kind of gives me what I want here. 00:07:33.134 --> 00:07:34.895 For example, here, in this demo, I just 00:07:34.895 --> 00:07:37.134 had, like, one node, one link, which had 00:07:37.134 --> 00:07:39.455 this uncle relationship. So that kind of works 00:07:39.455 --> 00:07:41.375 out. Now let's just try another search. For 00:07:41.375 --> 00:07:44.850 example, let's say if I'm just typing 'check 00:07:44.850 --> 00:07:47.410 before meeting'. So these are now again links 00:07:47.410 --> 00:07:49.410 where I have written something where I kind 00:07:49.410 --> 00:07:52.290 of should do something before meeting someone. So 00:07:52.290 --> 00:07:54.050 for example, the first one you can see, 00:07:54.850 --> 00:07:57.705 there's a person called Meeting Person. It's a 00:07:57.705 --> 00:08:00.745 demo node again. And, I've written one note 00:08:00.745 --> 00:08:05.085 about, one connection here is basically saying that, 00:08:05.145 --> 00:08:07.145 hey, you know, read this link before you 00:08:07.145 --> 00:08:09.720 go to meet them. Right? So it's also 00:08:09.720 --> 00:08:11.560 been very helpful for me. There are, like, 00:08:11.560 --> 00:08:13.800 few patterns where I kind of feel this 00:08:13.800 --> 00:08:17.319 works out well. As I keep making more 00:08:17.319 --> 00:08:20.120 of the links and keep writing more context 00:08:20.120 --> 00:08:21.800 around the link, this kind of works 00:08:21.800 --> 00:08:25.135 out really helpful. This becomes really helpful for 00:08:25.135 --> 00:08:27.935 me. Okay. So the other few things, you 00:08:27.935 --> 00:08:30.575 know, how do I, like, work with, systems 00:08:30.575 --> 00:08:32.735 outside Emacs. Right? So the first thing 00:08:32.735 --> 00:08:35.054 is that, you know, the I haven't found 00:08:35.054 --> 00:08:38.510 anything that works really well for saving bookmarks, 00:08:40.250 --> 00:08:42.250 when I'm on my Android phone. So I 00:08:42.250 --> 00:08:44.890 had to make a new applications, application, and 00:08:44.890 --> 00:08:47.930 it's called pile-android. Now this application basically, 00:08:47.930 --> 00:08:49.290 you know, lets me do whatever I was 00:08:49.290 --> 00:08:52.085 doing with Raindrop, which was a bookmark manager. 00:08:52.305 --> 00:08:53.825 So I can open links. I can read 00:08:53.825 --> 00:08:55.985 stuff in Firefox on my browser on my, 00:08:56.385 --> 00:08:58.065 Android phone, and then I can save all 00:08:58.065 --> 00:09:00.625 of that in my Org Roam database. Org 00:09:00.625 --> 00:09:02.465 roam database here means the Org Roam files 00:09:02.465 --> 00:09:03.905 that I have. Because, again, these are plain 00:09:03.905 --> 00:09:06.140 text file, I can sync them through mobile 00:09:06.140 --> 00:09:08.780 phone to my, you know, desktop and laptop 00:09:08.780 --> 00:09:11.340 and everything else. So that's one place where 00:09:11.340 --> 00:09:13.460 I kind of, you know, stop, going to 00:09:13.460 --> 00:09:16.860 a, new application. I just basically ingest everything 00:09:16.860 --> 00:09:19.625 in my Org Roam setup. The other thing 00:09:19.625 --> 00:09:22.444 is that, when I'm browsing on my laptop, 00:09:22.985 --> 00:09:25.785 I still want to, you know, collect all 00:09:25.785 --> 00:09:28.504 the data inside my Org Roam system. So 00:09:28.504 --> 00:09:30.504 so here's something which I call Org Roam 00:09:30.504 --> 00:09:33.380 Sidekick. Now what you can do here is 00:09:33.380 --> 00:09:34.740 that, let's say, if you want to search 00:09:34.740 --> 00:09:37.380 for something, so you can basically do a 00:09:37.380 --> 00:09:39.139 search normally, which is going to do a 00:09:39.139 --> 00:09:41.860 web search. But if you call Org Roam 00:09:41.860 --> 00:09:44.740 SK, which is Sidekick, it will do a 00:09:44.740 --> 00:09:48.025 search on all of your Org Roam notes. So 00:09:48.025 --> 00:09:50.905 now this search is basically using recoll. So 00:09:50.905 --> 00:09:53.145 recoll kind of indexes all the plain text 00:09:53.145 --> 00:09:54.925 and does a full text search for you. 00:09:55.385 --> 00:09:57.145 But this this is really helpful because when 00:09:57.145 --> 00:09:59.190 I'm searching for something and I still want 00:09:59.190 --> 00:10:00.550 to know that, hey, you know, hey, I 00:10:00.550 --> 00:10:03.510 have saved some of those links earlier. So, 00:10:03.830 --> 00:10:05.350 can I, like, you know, see them back 00:10:05.350 --> 00:10:07.590 and then, you know, it's a very 00:10:07.590 --> 00:10:09.990 good way to kind of not lose track 00:10:09.990 --> 00:10:12.665 of what you've already saved. The other 00:10:12.665 --> 00:10:13.625 thing I can do is, like, I can 00:10:13.625 --> 00:10:16.605 also, you know again, since I have saved 00:10:16.745 --> 00:10:20.185 a project, in my Org Roam, I can 00:10:20.185 --> 00:10:22.905 basically call, again, Sidekick again, and I can 00:10:22.905 --> 00:10:26.200 see a note for that. That note here 00:10:26.200 --> 00:10:28.780 specifically is tracking my tasks for this project. 00:10:29.240 --> 00:10:30.840 And other than tasks, you know, again, I 00:10:30.840 --> 00:10:32.920 can see other things like similar notes. I 00:10:32.920 --> 00:10:36.040 can see, you know, other links that are 00:10:36.040 --> 00:10:39.665 there. So yeah, so this, there's still some 00:10:39.665 --> 00:10:41.585 optimizations to be done. I think this, you 00:10:41.585 --> 00:10:44.385 know, the bookmark here is not very intuitive. 00:10:44.385 --> 00:10:46.385 I still want, I want this to be 00:10:46.385 --> 00:10:49.685 following the browser, as I switch tabs. 00:10:50.160 --> 00:10:51.839 But, again, those things are something I'll work 00:10:51.839 --> 00:10:55.519 on. Other optimizations include, you know, the way 00:10:55.519 --> 00:10:59.540 I'm doing the search using ML that needs 00:10:59.600 --> 00:11:02.735 a little bit of fine tuning because, every 00:11:02.735 --> 00:11:04.175 time I make a new link, I have 00:11:04.175 --> 00:11:07.375 to, like, rerun the, you know, re kind of 00:11:07.375 --> 00:11:09.855 build the features and everything else, which I, 00:11:10.335 --> 00:11:13.855 need it to be real time. Yeah. So 00:11:13.855 --> 00:11:16.334 that concludes my talk. Hope you enjoyed it. 00:11:16.734 --> 00:11:18.355 Let me know if there are any questions. 00:11:18.814 --> 00:11:19.554 Thank you.