The first use I saw for this in my note system was to convert my book notes. I create a table of contents note with links to the chapter summaries. I do chapter summaries and then quotations and thoughts about contents of the chapters. A function to create a parent from an existing note (i.e. my table of contents notes) would be great for converting existing notes. I could write that myself but I think I could see a number of people wanting the same function. Thank you for all the great work you do!
@@protesilaos I think that my barrier to start using signed notes (as a zettelKasten) was the fact if at any time I find that my parent signature is derived of other knowledge, I should rename all the sequence. E.g. say that in my studies of thermodynamics I started the parent sequence "==2-thermodynamics" But a year later I realize that thermodynamics is part of Statistical Mechanics, so I'd like to create a new parent note "==2-statistical_mechanics" and rename the existing sequence by concatenating an "2=" to their signature, i.e. the new note on thermodynamics would be "==2=2--thermodynamics". That functionality would be a game changer!!!
@oscar8281 This will require extra functionality to operate on the entire tree. It can be done, but will need more work. For the future version, I guess, as there is a lot already.
Beside being a time stamp, it serves as a unique identifier. We then use this to establish links between files. Even if the file is renamed, the link will still work so long as the file is inside the 'denote-directory'. The manual explains this in further depth.
I'm not sure how I'd fix this (it's probably more a problem with how I'm using it) but it seems weird to me that for the first set of parents (==1, ==2, ==3, etc) a sibling is a completely unrelated topic. I guess it'd make sense to make new parents already a topic; but that seems contrary to just discovering topics from your notes. Maybe have an option to have new parents go ==1=1, ==2=1, ==3=1 etc...? Something like a parent-depth variable. That way adding a new parent starts a topic but doesn't say anything about the topic until a metanote is created later. Does the code work if there are notes sequenced ==1=1 and ==1=2 without an existing ==1?
You can always create a new note with an arbitrary signature. This has been the case ever since we added the optional signature file name component. All this optional extension does is streamline the work when you need to define a sequence. Instead of trying to figure out what is available, which is error-prone, you let the program do it.
@@protesilaos thanks for taking the time to reply! Maybe I didn't get across the main part of my question. Some people use Folgezettel such that the first note is 1.1, and notes that relate to it share the 1.X identifier. Then the first note unrelated to those would be 2.1. IDs 1, 2, etc... are left blank as they represent (emerging) topics. They may optionally be filled later to give the topic a description. For now, doing this in denote would work with a dummy note or manual signatures. But I just think it'd be cool to have an option (something like parent-depth?) for denote-sequence parents to have a "longer" starting signature. In my mind, the first parent would be ==1=1. Then the next parent would be ==2=1. And so on....
Hi! When creating a new file, Denote truncates the trailing = of the signature. Can you also disable this? Sometimes I'd prefer: 1=1=1= instead of 1=1=1
This is a general Denote convention, where the word separator is not allowed after a word. We can, in principle, change this though I wonder what the use-case is.
I don't think it was your goal at first, but I think Denote is becoming one of the most powerful tool to implement the Folgezettel methodology so far, I don't think I've ever seen such a feature before! I found Folgezettel hard to use it at first because of the naming and renaming work it required of me but this addition makes me reconsider my decision (though with hundreds of notes it would still take a lot of time!). I think not using letters may make Folgezettel more vertical as you have only 9 digits to choose from a each level, but this is not necessarily a bad thing either (except on Windows maybe, I wonder if the denote filenames will eventually become too long...).
Indeed, this was not my goal. Though it is a good use of the Denote signature file name component. Reparenting lots of notes will sure be difficult. Though you can script it. Here is the relevant part from the 'denote-sequence-reparent' doc string: When called from Lisp, CURRENT-FILE is a string pointing to a file. When called from Lisp, FILE-WITH-SEQUENCE is either a file with a sequence (per `denote-sequence-file-p') or the sequence string as such (per `denote-sequence-p'). In both cases, what matters is to know the target sequence. About the 9 digits you mention, note that it is totally fine to have something like 1=100=2. Each level of depth is a number of any length. Sure, this can make files names some characters longer, though I do not expect this to be a problem in practice. If anything, it is a good indication that something is needlessly detailed like too long of a title, too many keywords, or too deep of a nesting in the sequence.
@@protesilaos Thanks! I'll dive into it soon enough, I'm close to finishing reading the Introduction to Emacs Lisp and I feel like I can finally get into this kind of work. And thanks for the precision, it makes sense and it would also work with the traditional folgezettel signature too now that I think about it (12a23c for example).
This is great Prot. I am working on a major release of Denote Explorer and I have started to include a method to visualise trees of sequence notes, which I will release later this week. Should denote-sequence-reparent be called denote-sequence-adopt (giving a note up for adoption)?
Happy New Year Prot!. Why we need siblings?, are not they implicit when they come from the same parent?. In your example the sibling of ==1=1 is ==1=3, which is also the child of ==1. Do I missing something?. I really appreciate your minimalist style, so Is it necessary to have the sibling option?. Thank Prot.
Yes, this will work as well. Though it is a matter of preference once you get into deeper relationships because each subdirectory might be holding only a single file and another subdirectory with one file and so on. By the way, I have extended the code with more functionality than what I showed in this video, though the core idea is the same.
Γεια σου Προτεσίλαε. Am I missing something or all this functionality can be already represented by (sub)directories (which act as subtrees) that every modern filesystem has? In any case, thank you for your contributions! Φιλικά, Νίκος
The first use I saw for this in my note system was to convert my book notes. I create a table of contents note with links to the chapter summaries. I do chapter summaries and then quotations and thoughts about contents of the chapters. A function to create a parent from an existing note (i.e. my table of contents notes) would be great for converting existing notes. I could write that myself but I think I could see a number of people wanting the same function. Thank you for all the great work you do!
Sounds promising! What would this function expect to find in the note to generate the parent?
@@protesilaos I think that my barrier to start using signed notes (as a zettelKasten) was the fact if at any time I find that my parent signature is derived of other knowledge, I should rename all the sequence. E.g. say that in my studies of thermodynamics I started the parent sequence "==2-thermodynamics" But a year later I realize that thermodynamics is part of Statistical Mechanics, so I'd like to create a new parent note "==2-statistical_mechanics" and rename the existing sequence by concatenating an "2=" to their signature, i.e. the new note on thermodynamics would be "==2=2--thermodynamics". That functionality would be a game changer!!!
@oscar8281 This will require extra functionality to operate on the entire tree. It can be done, but will need more work. For the future version, I guess, as there is a lot already.
WOW ... Denote is really awesome and this new features are very useful !!! Thanks for all the work !
You are welcome!
I did not expect to see a reference to Inspector Rex (an Austrian TV show from the nineties) when I clicked play on this video. :D
Oh right, it was also airing on Greek television at around that time. The dog was amazing!
I use signatures extensively for my notes in Denote. This is going to be very, very useful for me. Thanks!
You are welcome! If you get the chance to test the code from the Git source, let me know if you have any issues or ideas on how to refine it.
An excellent addition, I think.
Thank you!
What is the use for the time part in the file names? I can understand why one would put a date there.
Beside being a time stamp, it serves as a unique identifier. We then use this to establish links between files. Even if the file is renamed, the link will still work so long as the file is inside the 'denote-directory'. The manual explains this in further depth.
I'm not sure how I'd fix this (it's probably more a problem with how I'm using it) but it seems weird to me that for the first set of parents (==1, ==2, ==3, etc) a sibling is a completely unrelated topic. I guess it'd make sense to make new parents already a topic; but that seems contrary to just discovering topics from your notes. Maybe have an option to have new parents go ==1=1, ==2=1, ==3=1 etc...? Something like a parent-depth variable. That way adding a new parent starts a topic but doesn't say anything about the topic until a metanote is created later. Does the code work if there are notes sequenced ==1=1 and ==1=2 without an existing ==1?
You can always create a new note with an arbitrary signature. This has been the case ever since we added the optional signature file name component. All this optional extension does is streamline the work when you need to define a sequence. Instead of trying to figure out what is available, which is error-prone, you let the program do it.
@@protesilaos thanks for taking the time to reply! Maybe I didn't get across the main part of my question. Some people use Folgezettel such that the first note is 1.1, and notes that relate to it share the 1.X identifier. Then the first note unrelated to those would be 2.1. IDs 1, 2, etc... are left blank as they represent (emerging) topics. They may optionally be filled later to give the topic a description. For now, doing this in denote would work with a dummy note or manual signatures. But I just think it'd be cool to have an option (something like parent-depth?) for denote-sequence parents to have a "longer" starting signature. In my mind, the first parent would be ==1=1. Then the next parent would be ==2=1. And so on....
@BLXXCH I see. Let me see how this would work in practice and decide accordingly. Worst case scenario, you define a placeholder parent.
Hi! When creating a new file, Denote truncates the trailing = of the signature. Can you also disable this?
Sometimes I'd prefer: 1=1=1= instead of 1=1=1
This is a general Denote convention, where the word separator is not allowed after a word. We can, in principle, change this though I wonder what the use-case is.
I don't think it was your goal at first, but I think Denote is becoming one of the most powerful tool to implement the Folgezettel methodology so far, I don't think I've ever seen such a feature before! I found Folgezettel hard to use it at first because of the naming and renaming work it required of me but this addition makes me reconsider my decision (though with hundreds of notes it would still take a lot of time!). I think not using letters may make Folgezettel more vertical as you have only 9 digits to choose from a each level, but this is not necessarily a bad thing either (except on Windows maybe, I wonder if the denote filenames will eventually become too long...).
Indeed, this was not my goal. Though it is a good use of the Denote signature file name component. Reparenting lots of notes will sure be difficult. Though you can script it. Here is the relevant part from the 'denote-sequence-reparent' doc string:
When called from Lisp, CURRENT-FILE is a string pointing to a file.
When called from Lisp, FILE-WITH-SEQUENCE is either a file with a
sequence (per `denote-sequence-file-p') or the sequence string as
such (per `denote-sequence-p'). In both cases, what matters is to know
the target sequence.
About the 9 digits you mention, note that it is totally fine to have something like 1=100=2. Each level of depth is a number of any length. Sure, this can make files names some characters longer, though I do not expect this to be a problem in practice. If anything, it is a good indication that something is needlessly detailed like too long of a title, too many keywords, or too deep of a nesting in the sequence.
@@protesilaos Thanks! I'll dive into it soon enough, I'm close to finishing reading the Introduction to Emacs Lisp and I feel like I can finally get into this kind of work.
And thanks for the precision, it makes sense and it would also work with the traditional folgezettel signature too now that I think about it (12a23c for example).
Interesting concept! I'm beginning to think that this simple format is better suited for my use case, and it sure does make parsing alot easier 🪿
Sure, it is a matter of workflow/perspective after all.
This is great Prot. I am working on a major release of Denote Explorer and I have started to include a method to visualise trees of sequence notes, which I will release later this week.
Should denote-sequence-reparent be called denote-sequence-adopt (giving a note up for adoption)?
Looking forward to your update then. About the "adopt" terminology, we can always define an alias.
Happy New Year Prot!. Why we need siblings?, are not they implicit when they come from the same parent?. In your example the sibling of ==1=1 is ==1=3, which is also the child of ==1. Do I missing something?. I really appreciate your minimalist style, so Is it necessary to have the sibling option?. Thank Prot.
I just did it because the user might find it easier to reason about a specific entry in those terms. Though you are right.
Oh, and I forgot to wish you a happy new year as well :)
@@protesilaos Thank you Prot!.
It seems like directories and sub-directories would be a simpler way to denote parent/(child|sibling) relationships
Yes, this will work as well. Though it is a matter of preference once you get into deeper relationships because each subdirectory might be holding only a single file and another subdirectory with one file and so on. By the way, I have extended the code with more functionality than what I showed in this video, though the core idea is the same.
Γεια σου Προτεσίλαε. Am I missing something or all this functionality can be already represented by (sub)directories (which act as subtrees) that every modern filesystem has? In any case, thank you for your contributions! Φιλικά, Νίκος
Καλημέρα! You can indeed do this with directories, though each will need to hold exactly one file. It ultimately is a matter of style, I guees.