protesilaos / denote

Simple notes for Emacs with an efficient file-naming scheme
https://protesilaos.com/emacs/denote
GNU General Public License v3.0
530 stars 55 forks source link

Is the following practice related to identifiers considered good or bad? #189

Closed jarofromel closed 11 months ago

jarofromel commented 11 months ago

I started to tweak the default format of the identifier for some of my notes --> to something like 00001000T000001.

Reasoning - I'd like to introduce some semantics into the identifier:

  1. The default identifier timestamp format corresponds the logic of most of my notes (95%) --> the note was created in the given time and changes infrequently.
  2. But some of my notes (5%) are the outlines to other notes or frequently updated wiki-like notes about some topics or common activities lists (buy-list, todo-list) --> the creation time of the note is not important.

add 2)

Questions: Now filenames starting with 00001000T000001 are recognized as the denote notes. Do you plan to introduce more strict validation of the identifier?

Now I do the tweaking mentioned above manually. I'd like to have something called "identifier scheme", e.g. when creating the note to have an option to choose between the standard timestamp identifier and the identifier for outlines *. I am not sure where to start, is #168 good starting point, please?

'* for me it starts with 0000, then follow x000 where x is theme, then T, then 00000x where x is the sequential order, together resulting to e.g. 00003000T000006, 00005000T000004. Of course I'd like to have something simpler (e.g. 0003T06, 000T04), this is only for the compatibility with the timestamp format.

jarofromel commented 11 months ago

In one sentence, I want to introduce the serial number as the identifier (with some simple numbering scheme) for the part of my notes instead of the default timestamp identifier.

protesilaos commented 11 months ago

This would technically work, though you would then lose the timestamp inherent to the identifier. This means that you cannot easily search for files that were done in "202311", for example.

For denote.el in particular, creating identifiers based on the current time is fairly easy. To implement serial numbers, we would need to maintain an index to know which one is next in the series. It is doable, but it will complicate things considerably.

jeanphilippegg commented 11 months ago

I also have notes that are more "important" than others (general notes, lists that I update frequently). In general, I don't organize my notes. They are added in my notes/ folder. However, these special notes are in a subdirectory of their own (core/ for example). Maybe this would fit your needs as well? A subdirectory is "kind of" part of the filename.

I see Denote's identifiers as just some technical object for Denote's functioning. (It allows notes to be identified by the filename without having to search for something INSIDE the file.) Instead of a random number, it was decided that this identifier would give some information instead (the creation time of the note). I would personally not try to manipulate it in any way, though your tweaks to it would work in the current state of Denote.

EFLS commented 11 months ago

I'm not sure I understand what you are after, but have you looked at what in Denote is called a 'signature'? It allows you to add things like '1a' to a filename, from which you might branch out to '1a1' or '1a2' etc., and such branching can resemble outlines.

jarofromel commented 11 months ago

TLDR: I continue with the signature approach described at the end of the comment. Thanks all for the response.


protesilaos

This would technically work, though you would then lose the timestamp inherent to the identifier. This means that you cannot easily search for files that were done in "202311", for example.

True, but in the case of these notes it is unlikely scenario. The usecase is: I know that somewhere in my notes-pile is the outline to the topic of current interest, so ideally I search to some kind of keyword/marking saying "this is the outline". Timestamps inside the content of these notes is good enough for me (maybe the time proves me wrong).

For denote.el in particular, creating identifiers based on the current time is fairly easy. To implement serial numbers, we would need to maintain an index to know which one is next in the series. It is doable, but it will complicate things considerably.

Yes, the overhead is definitely higher compared to the timestamp approach.


jeanphilippegg

I also have notes that are more "important" than others (general notes, lists that I update frequently). In general, I don't organize my notes. They are added in my notes/ folder. However, these special notes are in a subdirectory of their own (core/ for example). Maybe this would fit your needs as well? A subdirectory is "kind of" part of the filename.

Thanks, that's good idea. I use it but in a bit different way (for notes which I generate quite frequently and its mass would "pollute" the main folder , e.g. copied quotes or summary of interesting links)

I see Denote's identifiers as just some technical object for Denote's functioning. (It allows notes to be identified by the filename without having to search for something INSIDE the file.) Instead of a random number, it was decided that this identifier would give some information instead (the creation time of the note). I would personally not try to manipulate it in any way, though your tweaks to it would work in the current state of Denote.

Yeah, using the random number as the identifier is not an optimal strategy. In my experiment I tried to replace the timestamp identifier with the identifier carrying information (albeit, artificially created by me and giving sense only to me).


EFLS

I'm not sure I understand what you are after, but have you looked at what in Denote is called a 'signature'? It allows you to add things like '1a' to a filename, from which you might branch out to '1a1' or '1a2' etc., and such branching can resemble outlines.

Yes, you are right. I've already started to experiment with it. Its only requirement is to be alphanumeric, so I can use it like this, the keywords list, doc, outline say it is more important type of the note which I access frequently and help me to retrieve it easily: 202310112T084708==list--books-to-read.org - list of books I want to read 202310112T120810==doc--emacs-sources__tech.org - links to emacs documention sources 202310112T084801==outline--citation-management__pkm.org - outline to my notes related to citation management