My name is Greg Coladonato,
and this is my presentation named
One Effective Computer Science
Grad Student Workflow.
For self-introduction,
I've been an Emacs user since 1989
when I was an undergrad in computer science,
and I'm still an Emacs user
now I'm getting a master's of science
in computer science.
In my day job,
I work in product management
in a Silicon Valley
computer vision startup,
and I'm proud to say
I've been submitting my first PRs
to open source projects this year.
The goals of my workflow are first
to make my notes easily accessible
and searchable.
Second goal, provide a way for me
to permanently remember what I learned,
and thirdly, to enable conceptual linking
between related topics and entities.
I'll give examples of each of these
as we go along.
The requirements of my workflow:
it needs to be tightly integrated with PDFs,
as most of the documents I get from grad school
are in PDF form,
most of my submissions of work
are in PDF form,
and most research papers I have access to
are in PDF form as well.
I want my workflow to be subscription-free.
I do not want to be locked into
paying a subscription
just to read my own notes.
It must be future proof.
I have used note-taking systems in the past
that I now no longer have a way to decode,
so they're locked into some format
that I can no longer use.
I want my notes to be version-controlled,
so that if I make a big mistake,
I can undo and revert
to a prior good version,
and I want my system to use spaced repetition,
which is an advanced method
of learning things over time
so that you don't forget them.
The package dependencies, in brief.
org-mode, org-roam, org-roam-bibtex,
pdf-tools, org-noter and org-ref.
And now let's get on to some demos.
Here in my browser window here
is a lecture in the course
I'm currently taking on deep learning.
It's very nice that the professor
provides slides. So this is
the 54-page PDF file of the slides
for the lecture. The problem is,
it's hard to take notes on them.
It's impossible to take notes on them
here in this browser,
as far as I know. So what I've done is
I've incorporated these slides as a PDF
in org-roam, which...
I will now visit this file
and you can bring it up alongside the PDF
I was just looking at here.
So what i like about this system is,
as I'm going through and reading
watching the video of the lecture,
I'm following along in the PDF notes here,
and I'm taking my notes alongside them.
So here's the first part of that lecture.
You can't see at the bottom right now,
but this is one of the earlier pages.
I go to the second section here
and you see that my notes
for this part of the lecture,
here, my notes here...
I love how the notes
for different parts of the lecture
are coordinated with the different parts
of the PDF that go along with the lecture.
Now let's go back to the top of this
and you'll see... First, you'll see my notes
down here. I'll go into these
a little bit more shortly,
but one of the things
that goes along with a lecture
in a grad school class is these days
in computer science citations
for research papers
that were expected to read.
So here's one entitled MixMatch.
I haven't downloaded this paper yet,
so let's go. Take a look at that.
So I use a keystroke to select
the title of the paper
and another keybinding
to search for that paper
on a website called arXiv.
arXiv, if you're not familiar--
and here's a match--
arXiv, if you're not familiar,
is an open research server
where researchers publish papers
before they're published in journals
or conferences, and they are copyright-free
and open to anyone to read.
So here is the paper I was looking for.
I copy this link into an Org mode link,
and I come back to Emacs,
and now another keystroke
will revisit that website,
pull down the PDF, and pull down
all the information in the bibliography
and put it into a bibliography here,
inside my local bibliography.
So here's the paper I was just looking at.
Another great thing about a lot of PDFs
is that they have an embedded outline
that you can extract via the pdf-tools package.
So now you see on the right here:
introduction, related work, MixMatch,
experiments. I can go right to that section,
and this outline knows exactly
which part of the PDF
corresponds to each of the parts
of this outline in the paper.
So then, when I go take notes in here,
just like in my other notes,
it'll be coordinated with the PDF
that goes along with it.
So let's quit out of here.
So now that I've captured that...
Uh oh, this is the same paper.
So now here I am back in my notes.
now that I've captured this paper.
What I'm going to do is make it a link,
so the org-roam node that I just took
will be here at the top. MixMatch.
There's a little difference.
You'll see here, this m is a different case
than this m, and that's one of my to-do list.
I'd like to make it so that this search
is a little less case-sensitive.
So now I've linked this link to this paper
into these notes, and now these are...
you'll see a little bit later
how these links can be graphed and followed
and so forth. While I'm in this document,
I'd like to show you
that when I'm learning something
and I learn a new fact,
I write down what I learned
in the form of a question and an answer.
So you can see here, there's a question
that begins with who, what, where.
It begins with a w word, or how,
or if or is, and it ends in a question mark,
and then following that is another string
that ends in a period.
So I have a... I'd like to do this
in Emacs as well, but I haven't
worked that out yet.
I have a script that will...
Let's find a-n-k-i-f.
Okay, I have a script that will go through
all the notes in my org-roam directory
and find all the questions.
Now let's pull up the most...
No, don't edit the buffer.
Save that. Come back to here.
So now you can see that all the questions
that I've written in my notes
have now been ANKIFIED.
Now what's that mean?
Anki is this program here
which is a flashcard system
based on the idea...
No, let's not download that right now.
This is a system that enables
the easy creation of flash cards
that show you the front,
show you the back,
and then you decide
if you knew that question or not.
So I don't want to spend much time on this,
but everything I'm learning in a class,
I write into my notes as a question
that I load into this flashcard system
that then I can review on a walk,
or on a bus ride, or whatever,
and stay on top of indefinitely.
As long as I can continue
to keep reviewing that,
I will keep that information
fresh in my mind.
So now let's come out of these files
back to here.
So I've demoed class note PDFs,
grabbing papers from arXiv,
autogenerating the skeletons
and the flashcards,
and now let's see what it looks like.
Let's visualize the connections
between these nodes.
So here is a graph for the file
I'm reading right now:
One Effective Grad Student Workflow.
Here is the node I have a link to
in my Org mode document
on spaced repetition. We can open that
and come right back to Emacs,
and I just love that.
For the more complicated topics,
you can see connections between things
that you maybe didn't realize you had,
and some of the notes you've taken.
And so I'm getting near the end.
I just want to show some small customizations.
I save my org mode files
that are in org-roam
with a year year month month date prefix,
so that I can tell when the node was created
I also truncate them at 30 characters,
so that when I do an ls,
they don't word wrap.
Maybe that's OCD.
I also use an ID format that is year month
day hour month hour minute second
rather than the full UUID format
because that number up there,
that ID makes sense to me
and it gives me an idea of when that node--
which you can, by the way,
you can have--even one of these subheadings
can be a node in org-roam.
So now that you can see
that was created right now.
Some of the TODOs I still have
in this system... We don't have to go
too much into them, but I mentioned
case insensitivity, and I'd like
to make some improvements to org-noter.
At this point, I'd just like to...
I have a list of people I'd like to thank.
I'm not gonna read the whole list out,
but they're a bunch of software engineers
that created great free software
that's very useful to me
and I use every day, so thank you to them,
and thank you all for listening to my talk.
[captions by sachac]