Find the best task etc. based criteria

Overview

PyPi module N/A
git repository https://bitbucket.org/arrizza-public/find-the-best
git command git clone git@bitbucket.org:arrizza-public/find-the-best.git
Verification Report https://arrizza.com/web-ver/find-the-best-report.html
Version Info
  • macOS 14.5, Python 3.10
  • Ubuntu 22.04 jammy, Python 3.10
  • Ubuntu 24.04 noble, Python 3.10

Summary

This is a GUI app to sort a set of choices by a set of criteria.

For example, you can add a set of tasks that you want to do. Then you can add a few criteria to help you sort those tasks in the ones you want to do first.

The tasks can be anything. For example a product to buy, a variety of food to eat, etc.

The criteria can be anything as well. The key is to make them relevant to you and to the choices you need to make.

How to use

The instructions below use "tasks" but they can be any choices you want.

Download the app

Go to CPIP Packages download the app for your OS (Ubuntu, macOS).

Move the downloaded app to a directory where it's okay for the app to create files and an "out" directory. The app saves some status information in the "out" directory.

Setup for Ubuntu

cd the-directory # where you moved find-the-best to
# give execute permissions to the file
chmod +x find-the-best
# to start the executable
./find-the-best

Setup for macOS

cd the-directory # where you moved find-the-best to
# give execute permissions to the file
chmod +x find-the-best
# to start the executable
./find-the-best

The first time you start the app:

  • You will get a warning from macOS indicating it can't be opened because "cannot check it for malicious software".
  • Click OK.
  • Go to Apple Settings | Privacy & Security, scroll down. There will be a message there indicating find-the-best was blocked
  • click on "Allow Anyway"
  • You will get a message box asking for your password, enter it to enable the app to be started
  • re-run the app
cd the-directory # where you moved find-the-best to
./find-the-best
  • You will get another warning indicating that can't be opened.
  • There should be an "Open" button. Click it to start the app
  • From here on you can start the app without any of these warnings.

Note: you can use Finder to start the app as well.

  • There will be a separate console window.
  • Don't close it, otherwise it will close the app.
  • Minimize the console window, if you want.

Create some tasks

Start the app. Click File | New to create a new data.

The "Current" shows "*untitled.json". The star indicates the data file has not been saved yet. The "#Criteria" shows the number of criteria you've entered. The "#Tasks" shows the number of tasks you've entered.

Click the "Add" button 3 times to create 3 tasks. There should be 3 rows with tasks named "new1", etc.

Click inside the "new1" and change it to "tv". Change "new2" to "computer". Change "new3" to "phone".

Save the data

Click File | Save. You should get a dlgbox (dialog box) saying you can't save an untitled file. Click Ok, to clear it.

Click File | Save As. You should get a dlgbox showing the directory that you moved find-the-best to. Enter a file name "my_choice1". Click "Save".

The "Current" should now show "my_choice1.json". Note there is no asterisk since you saved the file. Check the directory and should see a file "my_choice1.json" in there.

Click File | Close or the [x] on the menu to close the find-the-best app.

Start the app up again. Click on File | Recent. You should see "my_choice1.json" as an entry. Click on it. The data should be loaded and the tasks you entered should be visible.

Enter criteria

Click Other | Criteria...

The Criteria screen should show up. Click on Add 3 times.

There should be 3 criteria rows named "new1" etc. Each of the criteria, should have a "Raw Rank" of 1 and therefore a "Rank" of 33 each. Note the rank is out of 100. Internally it is many decimal places, but it is rounded for display. The total for all criteria many not sum to 100 because of the rounding.

Change "new1" to "is fun", "new2" to "is cool", and "new3" to "is useful". Note that a criteria name can't be shorter than 1 character or longer than 35 characters.

Rank the criteria

The criteria "Raw Rank" allows you to choose which of the criteria are more important to you. The "Raw Rank" can be from 1 to 5.

For "is fun" click on the "Raw Rank" up arrow until it hits 5. Note the Rank field does not yet change.

For "is cool" click on the "Raw Rank" up arrow until it hits 4. Note the Rank field does not yet change.

Leave "is useful" at 1.

Click "Update" button. The Ranks should have changed to 50, 40, 10 for fun, cool and useful respectively.

If you wish, you can add a phrase in "Context". These are meant to help to decide what that criterion means to you. For example, what does "is fun" mean when you are comparing a set of products to buy or comparing a set of tasks to do? The differences can be subtle and so you can the Context to help you figure that out.

Add "context1" for "is fun".

Click Done.

The task screen should appear. There should be 3 in "#Criteria" and the 3 criteria should be columns for each task.

Click File | Save to save the data.

Compare your tasks using your criteria.

Each task vs criteria should all be 0's. The criteria columns should be "is fun", "is cool" and "is useful". The red border on the criteria indicates the all choices for each criterion have not yet been completed.

Click on the "is fun" button (first criteria column)

You should see the Comparisons screen. The context area should say "context1" to help you choose correctly. There should be a list of choices and a "~" button in between each one.

For "tv" vs "phone", click on the "~" button. It should change to a "<--" button indicating that you've chosen the left side, in this case "tv". The box around that should be green.

For "tv" vs "computer", click on the "~" button twice. It should change to "-->" button indicating that you've chosen the right side, in this case "computer".

Click Sort. Note that the chosen ones (the green ones), should have sorted to the bottom and the unsorted ones should be at the top. When there are many tasks, this is useful.

For "computer" vs "phone", click on the "~" button three times. It should have changed back to "~". Click it once more to indicate "computer".

At this point all the comparisons have been complete. Click Done.

Ranks are updated

You should be back on the task screen.

The ranks for each of the tasks for the criteria "is fun" should be set and the border should now be green. The ranks for the is_fun column should be 33 for "computer", 0 for "phone" and 17 for "tv".

Repeat the above for each of the remaining criteria. For "is cool" choose all the right sides and click "Done". The ranks for "is cool" should be 13, 27, and 0 for "computer", "phone" and "tv" respectively.

For "is useful" choose all left sides and click "Done". The ranks for "is useful" should be 3, 0, and 7 for "computer", "phone" and "tv" respectively.

On the task screen, all the borders should be green, and all the ranks should be filled.

Note that the tasks are now sorted by that Overall Rank value. Those should be:

  • computer: 50
  • phone: 27
  • tv: 23

These, again, should sum to 100.

This shows that your best choice based on your criteria and ranking should be to buy a "computer". It is the most fun and cool thing to buy, but not so useful.

Click File | Save to save the data.

Make it your choices

Go back to Other | Criteria and set them to criteria you truly care about. Add a context for each on so it is clear what you mean by that criterion. Add more criteria if you need to e.g. "is expensive".

On the task screen, go back in to the comparison screens for each of these and set them to what you actually think they are.

  • Is a computer truly better than a phone with respect to "is fun" (or whatever your criterion actually is)?
  • Add contexts in the Criteria screen to indicate what does "is fun" and other criteria mean to you.
  • Is a phone better than a computer with respect to "is useful"?
  • And so on.

Now you can see what your best choice really is based on the full set of criteria.

- John Arrizza