I spent some time doing my first non-humor program in Rust, rpick. It's still a simple program, but I find it useful because I have a very hard time making simple decisions such as which restaurant to go to, or which album to listen to next. rpick uses a Gaussian probability model to pick from an ordered list of candidates, ordered from least recently chosen to most recently chosen. It has a higher chance of picking the less recently chosen items, while still allowing some fun room for the roll of the dice to surprise you. It's coming soon to a Fedora release near you.

rpick keeps its lists in a YAML file in your home config directory called rpick.yml. For now, users must create this file by hand, and rpick will manage it from there. To get started with our restaurant example, create ~/.config/rpick.yml like this:


restaurant: model: gaussian choices: - Spirits - Lucky 32 - Centro - Sitti - Cookout ```

Then you can ask rpick to pick one for you:

$ rpick restaurant Choice is Lucky 32. Accept? (Y/n)

If you say yes, it will rewrite the yaml file like this:


restaurant: model: gaussian choices: - Spirits - Centro - Sitti - Cookout - Lucky 32 ```

Note that we passed restaurant as an argument to rpick - this told rpick to look for the restaurant object in rpick.yml to find out which model to use and which choices were available. This parameter is required, but its possible values are defined by you in your config file.

The model field in the config file is required, but at the time of writing only gaussian is a valid model. There are tentative plans to add other models later in the future.

This project is available on crates.io.