I have been thinking for sometime, why use pseudo random numbers as uids? This is actually not the truest way to create an unique number- although each digit is pseudo random, there is a small but not zero chance that in infinite time, there will be atleast 1 conflict.
Time is actually the best way to create unique ids - also as a bonus; it will also be automatically apparent when the node was made and is actually a very good way to merge with your physical notes.
To use time stamps as unique ids I use
(setq org-id-method 'ts ; use time stamps as uuids
org-id-ts-format "%Y/%m/%d.%H:%M:%S")
Those of you who use org-attach, it must have also occurred to you that the way it keeps those files - are in default- alien to common sense. But most importantly org-attach would create a problem in this situation because we are using / and we cannot have / in folder names - right ? So one can remove the “/” from the format and everything will be alright.
But I wish to keep it, because I want it to be better human readable, so I would also make some changes to org-attach, firstly, if we are even taking the pain to configure org-attach just dump the entire folder naming scheme; I have all my inputs to org files coming from a directory called resources, and I want to create two subdirectories; one with the file name and another with the heading to which it is attached (fits like hand in gloves with org-download ). We can use the following code to achieve this
;; Org Attach Configuration
;; Set the base directory for org-attach
(setq org-attach-id-dir "resources")
;; Define a custom function for generating attachment paths
(defun custom/org-attach-id-dir (id)
"Dynamically generate the org-attach-id-dir based on buffer.
This function constructs the directory structure for Org attachments
using the buffer name and heading string."
(let (
(headline-string (nth 4 (org-heading-components)))
)
(concat (buffer-name) "/" headline-string)))
;; use the above function to resolve attachment directory determination
(setq org-attach-id-to-path-function-list '(custom/org-attach-id-dir))
;; Maintain relative paths for portability
(setq org-attach-dir-relative t)
;; Automatically tag attachment headlines
(setq org-attach-auto-tag "attached")
Will use this and let know if I fall into other problems by doing this.