## Project idea: Side-by-side comparison module

Many decisions (important and frequent ones) come in the form of prioritization of several items (tasks, desiderata, problems, etc.). While we can do this in our head for most small decisions involving up to at most seven items, we usually resort to pen and paper for longer lists or the more important decisions.

Mathematically speaking, we impose a total order on a set.

Sometimes we get strange feelings doing this: of course A has a higher priority than B, and B has a higher priority than C - but somehow one should do C before A, so there's a circularity. Sometimes this happens without noticing. Most of the time, we inject some randomness in our decision-making to fix these problems.

Do you really need a total order? If you prioritize tasks, you might really only need to find the most important 3 tasks and then re-prioritize after that (because your constraints change anyway). Sometimes it's okay to explicitly state that 2 things have equal priority, so you don't write down any unnatural order that gives a false sense of priority where there isn't any (once it's written down ...).

How do you put a list of 3 things in total order? Well, by comparing one to the two others and then the two others to each other. How do you put a list of 20 things in total order? Maybe you compare some of them, but you certainly don't compare each item with each other - you infer that A > B and B > C implies A > C. You should just not be fooled to think that C > A is now impossible (preferences don't form a total order).

Tasks are probably not the best example, as we have the urgent/nonurgent and the important/nonimportant axes. Maybe one would want to allow for more than one ordering direction, and then extracts the diagonal urgent+important -> nonurgent+nonimportant as ordered list. Something like that is definitely already happening in several task-management apps (and it should!).

The last time I tried coding this quickly I encountered the problem that Python's data structures were not aligned very well to this kind of problem. I had to write a graph class on my own and time got consumed so quickly that I stopped (please don't ask for anything specific, I don't remember). Also, the UX component is crucial: you want minimal interference from the tool, it should only help you. So I think the next time I tackle this I want to think about UX first.