Thursday November 4, 2021; 1:24 AM EDT
- Now that I've had a chance to think about it, let's slice away the parts that aren't there.#
- To tag a post#
- Add something like this to the bottom of the post#
- Tags#
- Drummer#
- Drumkit#
- Metadata#
- Select a tag node (e.g. "Drummer")#
- Click an icon to add the tag#
- Traverse tags.opml looking for the match#
- Ensure a reference to this post#
- Make the node into a link node#
- Click an icon to remove the tag#
- Traverse tags.opml looking for the match#
- Remove any reference to this post#
- Turn the node back into a regular text node#
- Why is it a pair of add/remove buttons now, when before it was just click one button to update tags? Well, I forgot about removing tags. And as soon as you can add and remove things from one place and expect the right things to happen somewhere else, you are deep in the land of syncing, which is pronounced exactly like "sinking" because there is where you will spend the rest of your days. Synchronization of collections across any sort of boundary is just going to drive you insane, this is a well-known fact.#
- Instead, we take advantage of the fact that I'm building this machine just for me, so I know when a tag should be added or removed, and I'll make my own pair of buttons to do it. (Or keystrokes or menu items or whatever, I forget all the choices I have.)#
- Also, now I don't have to do any outline traversal to find nodes that ought to be turned into tags. In fact, I think I may not even need to set any special attributes on the node when I turn it into a link node. Which means really I'm just adding and removing terms from an index, manually. Which, hey, that's what a tagging system is.#
- I also may not need to set any special attributes on the tags.opml nodes, but it'll probably be easier to work with if I do.#