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.