On Sunday I fixed the last bits of the Boolean expression parser for Protagonist, and started working on the command line interface. I stopped when I remembered the design issue in truenames.

There are three situations in which the entry in the truenames directory should be changed. The easy case is when a file is untagged, leaving it with no more tags. In this case, its entry ought to be removed. The process of discovering whether it has any tags is a linear search. That's not bad, and the trigger for when to look is obvious.

The less obvious problem is when the original file is moved. Moving a file in linux doesn't change its inode, so the hard link tags all stay, which is a nice property. However, the name in the tagsystem will not be updated. Similarly, if a tagged file is rm'ed from your filesystem, the fact that it is tagged prevents its actual removal, and truenames keeps its record.

I would like to write specific Protagonist functions such as protag mv and protag rm, but even if I do that, it might be nice to have some kind of repair function, than can search for hanging or broken references and fix them.

Fasting is going well. Being already ketogenic, it is actually really easy physically. Allowing fatty coffee takes the last edge off of that part of it. This doesn't feel like cheating, because I expect it will be physically beneficial anyway, since it should increase ketosis.

It's too bad I don't have any way to measure ketosis right now. I had been planning to splurge on a Ketonix breath meter, but they are not shipping right now. The meter is a bit expensive, but unlike the urine and blood strips, you can keep using it over and over with no marginal cost.

The challenge for me with Ramadan fasting is that I don't get to eat out of procrastination or social pressure, which seems like a good practice anyway. I did accompany someone to lunch yesterday, and didn't eat. I've done that before here when I wanted a break, and wasn't truly hungry, but it isn't my typical behaviour. I also overate last night when meal time finally arrived. I don't expect to do that much more; it was uncomfortable.