Taking Notes on a Video: my YiNote to Roam Research Workflow
Listen to the audio version of this blog post here:
I was working on an article yesterday comparing the performance of k6 with JMeter, and I had a chat to Mihail, one of the devs of k6. He mentioned that a large part of why k6 is so performant compared to other tools (particularly Java-based ones) is that it’s written in Go. He talked a bit about Goroutines, and when I told him I was a Go noob, he recommended this very excellent video by Kavya Joshi, which explains a bit more about the Go Scheduler and how it manages to achieve performance for Go apps that exceeds the typical 1 Virtual User: 1 kernel thread paradigm that many load testing tools (like JMeter) use.
Anyway, I got around to watching the video today, and because it was a video I knew I’d learn from, I took notes - and ended up improving part of the workflow (more on that later). Other people have commented on my notes before, so I thought I’d share how I process videos into my personal wiki, currently held in Roam Research.
Install YiNote Chrome extension
I use a free app called YiNote to take video notes in particular. I use their Chrome extension.
Take Notes
I was pretty dubious about using an app just to take notes for video specifically, but there were a few things that sold me:
-
When you click on the text field to take notes in the extension, YiNote automatically pauses the video so that you can type without missing what’s being said.
-
YiNote also automatically saves the timestamps associated with notes you create, so that you can click on it afterwards to jump to the specific section that you wrote a note on.
-
YiNote has an export to Markdown option - great compatibility with Roam or Obsidian
-
You can also export your notes to a PDF, which is great for sharing. It saves screenshots of the presentation and puts your notes next to the relevant screenshot.
Here’s what it looks like while taking notes:
Export YiNote notes
After watching the video, I click the Settings wheel from the Chrome extension panel.
I click the Export as Markdown button.
That lets me save a .md
file to my local drive. I always save YiNote files in the same folder as the script below.
Run reformatter script
This is the part that I tweaked today. YiNote’s exported Markdown file is formatted in a way that doesn’t really play well with Roam. Here’s what it looks like, fresh from YiNote:
<!-- Generated by <a href="https://www.yinote.co/#installation">YiNote</a> -->
<!-- # [GopherCon 2018: Kavya Joshi - The Scheduler Saga](https://www.youtube.com/watch?v=YHRO5WQGh0k) -->
<!-- ## [1:19](https://www.youtube.com/watch?v=YHRO5WQGh0k&t=79) -->
The scheduler is what makes sure the Goroutines run concurrently.
<!-- ## [1:29](https://www.youtube.com/watch?v=YHRO5WQGh0k&t=89) -->
All the information is there, but importing that to Roam, with the comments, isn’t really useful. I want to see those timestamps as clickable links, and I want my notes to be nested underneath the corresponding timestamp so I know what belongs where.
So I dusted off my Python skills tonight and wrote up this little script to do just that. Warning: I am not a developer; I just occasionally code. So I’m sure that this isn’t the most concise way to do it (contact me and let me know how it could have been better if you have any ideas). But it’s functional. And, in the spirit of learning in public, here it is:
The script results in an output file that is better formatted for Roam.
Import resulting file to Roam
On Roam, I hit Options > Import Files, select the output file, hit OK, and that creates a new page in a way better format than the one directly from YiNote. After adding the date, author, and “Recommended By” fields, this is what it looks like in Roam:
That’s it!
I don’t do this for every video I watch, but I find this process useful for more technical videos that I really want to learn from. It’s really important to me to get all my notes from disparate sources into Roam, so that they then get processed like any other note into my Zettelkasten - but that’s a process for another day.