19h31m (22 logs) from 3 Mǽdland 226 to 20 Ríp 226.
This project is a successor to Multi/Timer, a cooking timer tool I made several years ago. The primary motivation behind this remake was to aesthetically unify it with my other projects, while at the same time removing superfluous features and strengthening those that remained.
It is a tool that, primarily, allows you to time multiple cooking processes at once. This can be done with the UI, but a more expressive form of control has been implemented with a built in console.
The console can be used to add, start, stop and delete specific timers, using commands such as:
:add 00.30.00 Preferment Preferment [00.30.00] timer added :play 3 Timer 3 deleted :delete all All timers deleted
The console also contains a basic ingredient amount conversion tool, which converts (mainly) between cups and metric units, though I will add more conversions to it as I encounter them in my cooking:
:convert 3.5 cups flour to grams 3.5 cups flour :: 437.50 grams
The conversion rules are modelled as an undirected and unweighted graph, so that I can then use the Floyd-Warshall algorithm upon it order to find the shortest path between vertices. If I add a conversion rule for butter between grams and cups, and another between grams and sticks, the converter will automatically be able to convert between cups and sticks via the path cups ➡ grams ➡ sticks.
The console also implements a help functionality, aiming to explain what each function does and how to perform them:
:help Valid commands: help :: Shows this help add :: Add a new timer delete :: Delete an existing timer play :: Play an existing timer pause :: Pause an existing timer convert :: Convert ingredient measures between units For help about a specific command, type :: help [command] :help add add :: Add a new timer SIGNATURES :add [TIME] [NAME] play :add [TIME] [NAME] :add [NAME] :add HELP Adding a timer can be done in several ways. The most basic is with [add], which will add a new paused timer with the default text of "New Timer" and a time of 0.0.0. [add NAME] will add a paused timer with a time of 0.0.0, but with a defined name. e.g. :add My New Timer [add TIME NAME] will add a paused timer with a defined time and name. The time must be defined in the format [hours.minutes.seconds]. e.g. :add 2.15.30 My New Timer [add TIME NAME play] will add a timer with a defined time and name, which will immediately start playing. e.g. :add 2.15.30 My New Timer play
This console based method of controlling the timers is more in line with my day-to-day workflow, and it's design is general enough that I may re-use it in other projects.