Thursday, December 12, 2013

Cabinet Organization List Generator Program

Download Cabinet List Generator

Several months ago, I revamped my spice cabinet organization scheme to accommodate the specific cabinet I chose to use for spices. An innovation of this accommodation was the inclusion of a piece of graph paper taped to the door of the cabinet, divided into three sections. These sections served to generally represent the location of the ingredient in the cabinet, and had column and row headers to indicate the nature of the row/column respectively. For the columns, the designations were:
  • "Seeds, Pods, Roots and Mixes", meant for spice-like seasonings and mixes of herbs and spices
  • "Bulk", which served as the overflow for the left and right columns and held larger containers (e.g. quart-sized mason jars)
  • "Plant Matter and Crystals", meant for herbs and crystal compounds like salt or agar-agar.
While the row designations were:
  • "Miscellaneous", meant for ingredients that did not fit well into the lower two row categories
  • "Herbs and Spices", meant for typical spice cabinet fare
  • "Salt, Pepper and Allium", which removed pepper and onion-like spices from the above row for the sake of packaging size (which is often larger for all three) and because the group of three feels very "basic", being more common to recipes in general than most other seasonings that would fit cleanly into the second row.
I must confess that I feel the list poorly abstracted in retrospect, though its clearly prototypical nature is usually accompanied by a certain inexperience or naivete. Additionally, it's a strong improvement over its immediate ancestor, in which I glued a piece of resilient paper to the front face of the shelves in my cabinet and simply wrote on it what type of spice was placed into the row immediately above the label.

A first benefit is the removal of sheer arbitration in deciding what goes where. For example, I had a row for single herbs and a row for spice mixes, but herb mixes like herbes de provence and fines herbes fit poorly into either category, while herb mixes as a whole are not common enough that a separate row would be appropriate (i.e. utilized enough to justify its existence). Another improvement is that the individual listing of each item allows for quick reference to see if the item is present in the cabinet (and exactly where it should go), removing the need to search through rows of spices thinking, for example, "I can't remember if I have star anise," and, conversely, not purchasing spices from the store only to later learn that a bottle of that spice was already owned. This individual listing has the added benefit, due to the fact that few spices filled the whole description space, of providing the opportunity to record when the spice was purchased, allowing me to more easily replace herbs and spices that are out of date.

There are some issues with the graph paper approach, however. The main problem is that hand-drawing such a list takes time every time one is made, and if mistakes are made in drawing the permanent (pen drawn) lines, the mistakes must either be tolerated or the list restarted on a new sheet. Since the labor cost of creating a new list was so high, it passively discouraged any experimentation with the list to optimize the categorization, and prevented me from trying to extend the concept to the organization of any of my other storage spaces. Working around grid lines also meant compromising on the size of the fields, and I found that the few spices that did flow to the end of a line usually left me in the position of trying to squeeze the purchased date into a very small space.

To combat these issues, I tried making lists on the computer, but found the process too tedious to do more than once, though the fact that I could print out many copies of the same list was helpful. Finding issue with the spacing and column distribution on the single manually-created list made on a computer, I resolved to create a program to automatically generate customized lists according to specified parameters. Though the program lacks some graphical interface polish, it accomplishes the task for which it was designed adequately. Currently, it only creates the structure of a list, with lines arranged in list format, though it prints off on a standard letter-sized piece of paper all of the way to the borders. Below is an example list that has had text added to the headers and sub-headers using a graphics editing program.

In addition to the above release of a portable executable (requires .NET 3.5 or above, or potentially Mono), I have released the code for the project in a github repository in case anyone would like to use it for other projects.

I will likely add a static page for the program when I get a chance, and will add any questions I am able to answer about its use to that page at that time. One thing I feel I should note about the program is that, while it is creating the list, it will appear as if the program has frozen and stopped working. This is not the case, it is working behind the scenes and will save your picture to the specified file when it is done.