03 Feb 2020

Repeating yourself

History / Edit / PDF / EPUB / BIB / 2 min read (~279 words)
Questions Note taking

If you offload everything in your head into documents, how long does it take before you start repeating yourself?

How soon you repeat yourself will depend on how much diversity there is in your thoughts. If you always think about the same problems in the same ways, you're likely to repeat yourself a lot. However, if you try to explore the same problems through different lenses you'll have less chances to repeat yourself.

If you spend most of your time exploring new ideas, then you may only come back to ideas you had in the past from time to time.

If you work in a specialized field you may have to learn the basics multiple times in order to master them. Sometimes you will have acquired new knowledge that might challenge your existing assumptions. You will be mostly repeating yourself, but you will be making small adjustments at the same time.

When we offload everything that we have in our head into documents, our goal is to have more working memory space for our current work. We want to avoid having to come back to the same topics and having to start our exploration from scratch.

When we're exploring, we want to avoid exploring the same topics without noticing. As we explore a field, we may get a sense that the field is very large and that it may take a long time to get familiar with it. By mapping the field we can get a better sense of its size while at the same time discovering the important concepts. This lets us identify when we are making use of the same concepts over and over again.

24 Jan 2020

Writing everything down

History / Edit / PDF / EPUB / BIB / 2 min read (~395 words)
Questions Note taking

Is there value in writing everything down?

I had this question when I started my research journey towards AGI. At one point I realized I wouldn't be able to hold everything in my brain and that I needed to write down what I was thinking about so that I would be able to come back later, re-read what I wrote and continue making progress on what I was working on, whether it had been a day, a few weeks, or many months.

There is definite value in writing everything down. It frees your mind, letting you delegate the task of remembering to the computer. A thought I might have had more than five years ago can still be accessible to me if I wrote it down, but it's unlikely I'll remember exactly what I was thinking five years ago by "thinking really hard". Nowadays I have trouble even remembering what I was working on a few hours prior due to the high volume of interruption I face in my work. Writing things down allows me to keep a record of what I'm doing.

One of the main concerns of writing everything down is that it can be seen as a waste of time. We often write and never read what we wrote again. As I write more and more, it becomes less and less likely that I will read what I've written in the past because the volume of content increases requiring more time to read. For the same amount of time spent reading, I cover the same constant amount of content, but the amount of uncovered content keeps growing, assuming I review prior content more than once.

I don't view writing that is not read again to be wasteful. Sometimes writing down our thoughts allows us to figure out an issue that is blocking us. Sometimes expressing what we feel makes us realize that the feelings themselves are very hard to explain. Sometimes we just need a buffer where we can jot things down and get rid of it once we're done.

Writing (and sharing) has the benefit that your thoughts can be reused by others. They can also be reused by your future self if you end up facing the same situation again.

How often should I review my personal notes?

The simple answer is to do it as often as possible.

The more often you can go through your notes and review them, the more they will be fresh in your mind.

However, as you write more and more notes, it will be difficult to go through them all. At one point you will need to start prioritizing what you want to review and at what frequency. I see writing the same way I see programming: certain parts of the code work well and don't need to be touched for a while, so they are left alone. However, sometimes certain parts have become neglected with time and need to be looked at again.

All my notes on this blog, as well as my private project and personal notes are committed to git automatically every time I switch out of VS Code. This means that I have a very granular history of the last time a file was touched. This allows me to look back at the list of files I have and to find the files that haven't been touched in a while. Sometimes I'll read them again, think about them a bit, then close them if I have nothing to add. Other times I'll write about something that I've learned since then. Doing this feels a lot like improving some part of a codebase after you've learned how a piece of code would be used.

Another way you can schedule reviewing your notes would be with a spaced repetition system like Anki. It wouldn't be too much work to have a system that automatically creates an Anki note/card with a link to the file itself. You would click on the link, which would open the file in your text editor of choice, read the note, change it if needed, then close it. You would then go back to Anki and pick between hard/good/easy to decide when is the next time you would review the note.

I'd suggest dedicating a small amount of your week going through what you wrote and refreshing your memory. It is definitely useful to simply write things to get them out of your mind and to attempt to express your thoughts clearly. It's also useful to review what you thought about because your subconscious might have kept working on those thoughts well after you wrote them down and there might be more to contribute on a topic.

18 May 2018

Workstack

History / Edit / PDF / EPUB / BIB / 2 min read (~397 words)
Note taking

The workstack is a very simple idea I had while working. It is based on the concept of a stack as the name clearly implies. As you work, you, like a computer, process things one at a time and as new things need to be done, you either throw them in a todo list (a queue), or you start doing them right away (you stack them).

The workstack is a way to record notes about what you work on. As you work on something, you can either work on them to completion, or be interrupted by the necessity of working on another task. In the first case, tasks are simply written one after the other with their begin and end time. In the second case, items are also indented, such that it is possible to observe when a task forced you to "switch context".

An example of this note taking format is as follow.


2018-05-18
Task 1 10:00-10:30
Task 2 10:35-10:50
Task 3 11:00-...
    Task 4 11:05-11:15
    Task 6 11:17-...
        Task 7 11:20-...
Task 5 (not begun)

In this case, the person started working on tasks 1 and 2, then began working on task 3. As he began his work, he noticed that something else was necessary, which spawned task 4. While he was working on task 4, he observed something that could be done, but didn't have to be done right away, which spawned task 5. As he completed task 4, he returned to task 3, but noticed that something else also had to be done, which effectively spawned task 6. During task 6, something else also interrupted him, which forced him to work on task 7. In this case, it could have been a coworker asking you for help on something. Task 5 could be a coworker asking for help as soon as you're available, but not wanting to interrupt you.

Conceptually, you would want to always complete a stack of operations before moving to a new task. However, it is highly common in programming that a programmer will start going down such stack while working on code and then will not end up climbing back the stack, effectively not completing all he started working on.

This format thus allows a programmer (or anyone working on tasks that can spawn other tasks) to better track what they were doing and what they did and did not complete.