Geeks sharing recipes

Security Briefs

Syndication

So I'm a divorced father who cares for his three sons 50% of the time. It's a challenging but tremendously fun task. Since the separation, I've been spending much more time with my kids than I ever did before, and I'm loving it. But I'm still a geek at heart, and I hate doing clerk-like work to figure out what to buy at the grocery store. I'd rather automate much of this menial work so that I have more time to spend with my kids or with my work.

My first step in my quest for automation was to find a program that helped me create shopping lists. I bought a copy of SimplyShopping, which has worked pretty well for what it does. What I like about this program is that it helps you print aisle-by-aisle shopping lists, which really speed grocery shopping up tremendously. What I dislike about it is that there's no end-to-end workflow where I can simply list the recipes I want to make for the week and have it print out a shopping list.

I thought of taking the concepts that I like in SimplyShopping and writing a new app that does everything I want it to do. I think I'll eventually do this. But the first thing I need to do is figure out a good data model for a recipe. And once I enter the recipe into my app, I'd like to be able to share it with other people. And what better way to do that then to start with a community-accepted XML format for recipes?

I searched for XML Schema Recipe and happened upon RecipeML, which, based on its copyright, appears to have been around since 1999. They have a DTD but no schema, and the last time the DTD was updated was Nov 2000. Their gallery of applications links to a single app, whose web page no longer exists.

Another search for Recipe Sharing XML lead me to the Recipe Sharing Protocol Specification, which talks a lot about exchanging data, but very little about how to model a recipe in XML. They refer to something called RSPML, but I can't find that documented anywhere.

Then there's RecipeBook XML, which has a DTD and several sample recipes. This format uses mixed content, which makes me wonder how easy it'd be to program against.

Beyond finding an acceptable data model for sharing recipes, the next problem would be to agree on a vocabulary for units of measure. I don't think it'll be possible to come up with a list of ingredient names that everyone would agree upon, so the software processing the recipes would have to deal with that.

What do you think? Is this an intractable problem? If not, does anyone want to work on this with me? I think it'd be a fun project.


Posted Jan 29 2008, 09:17 AM by keith-brown
Filed under:

Comments

Craig wrote re: Geeks sharing recipes
on 01-29-2008 9:29 AM
If you wind up defining a new recipe grammar, I highly recommend you consider coming up with an XHTML microformat rather than a custom XML grammar.
Doug wrote re: Geeks sharing recipes
on 01-29-2008 10:00 AM
I'm game. I have one child with a second on the way. My time is rapidly diminishing and I hate spending it on menial tasks like trips to the grocery store to get the stuff we should have got the last time.

If we could distill a weeks worth of meals down to a single trip to the store I'd be in heaven, and maybe even a little more willing to make the trip with or without kids.
Keith Brown wrote re: Geeks sharing recipes
on 01-29-2008 10:35 AM
I like Craig's idea of using a microformat.
Stephen wrote re: Geeks sharing recipes
on 01-29-2008 10:55 AM
I'd love to be involved
Buck wrote re: Geeks sharing recipes
on 01-29-2008 12:25 PM
maybe you want to check out

http://grecipe-manager.sourceforge.net/

and see if that's a decent basis for what you want to do.
it's python, so it shouldn't be too dreadful to poke it
and prod it and write yourself some XML codec adjunct
Gordon Weakliem wrote re: Geeks sharing recipes
on 01-29-2008 1:21 PM
Funny, I created an instance of the O'Reilly Ruby on Rails cookbook on my site, thinking I'd eventually expand it into something usable for family collaboration.
My intuition is that you'd settle on one measurement standard (English/Metric) in the interest of making the problem manageable, but make it open, because there's always the "pinch/dash/to taste" value, or a range of values (1/4 - 1/2 Tbsp). Also, high altitude exceptions - a lot of the time with baking you'll have to add flour when you normally wouldn't.
I think you'd just have to punt on ingredient names. That's basically dealing with semantics, in the simpler cases you could establish a simple mapping. In the end, paper cookbooks don't try to reconcile the ingredients either, so long as they're internally consistent.
Keith Brown wrote re: Geeks sharing recipes
on 01-29-2008 2:53 PM
Okay, I spent some time at microformats.org, and it does look as though there is some work going on to define a recipe microformat:

http://microformats.org/wiki/recipe-brainstorming

I'm thinking that a combination of grecipe-manager and this emerging microformat might be just what the doctor ordered.

Thanks to all who responded - I think my next step will be to spend some time using grecipe-manager to see if it'll work for me. I'll also see if there's any way I can help contribute to the development of the recipe microformat.
Norman Diamond wrote re: Geeks sharing recipes
on 01-29-2008 3:40 PM
> cares for his three sons 50% of the time

Yikes, how dangerous!

I just finished advising a priest a few weeks ago that he needs to get some girlfriends, because he has a lower chance of catching virus infections by sharing girlfriends than by sharing USB keys. And here what are you doing, you're sharing sons! I hope your protection is up to date.

(P.S., I really gave that advice, though obviously only half-seriously. In the old days when the internet was mostly Unix, PCs shared viruses by booting and/or executing programs on shared floppy disks. In the modern world it's easier, because shared USB keys contain files called "autorun.inf" to execute the infectors automatically. There are an awful lot of people now who can't afford their own PC but can afford their own USB key, so they borrow whatever PC they can get their hands on, and this is one of the results.)

> next problem would be to agree on a
> vocabulary for units of measure

That will never happen. In countries that are 90% metric, and even though it's trivial to move a decimal point to convert between ml and cl, common practices vary. Also even though ml and cc are close enough for cooking purposes (not even moving a decimal point), some countries still designate some volumes in cc. In countries that are 50% metric it's much tougher; does one cup mean 294 ml or 283 ml or 200 ml?
Vuemme wrote re: Geeks sharing recipes
on 01-31-2008 5:54 AM
I thought about such a system myself because I'm the one who cook in my home and I also hate to waste time going to a shop just to buy a single item.
The problems I see in this kind of solution are:
- creating (or, better, converting) a recipe database that is good enough to provide a good choice of food.
- sometimes you can find fresh food (fish, season vegetables etc.) at a good price, and changing you menu "on the move" could be a good way to eat more fresh and healthy things, so a mobile version of your app is mandatory :)
- Here in Italy we use "spoons", "pinches" and "teaspoons" as "measurement units" but usually no "cups"... this may require some smart units conversion to fit the recipes to the users preferences.
- Sometimes the number of people eating with you may vary, we usually are two people, but sometimes I'm out for work or to play basketball and other times we got friends dining with US... the application should calculate amounts with a default number of people (2 in my case, 4 in yours) but also allow you to change that number for some things.
- Some ingrediends may be skipped or may be replaced by alternative ones, keep that in mind when designing your XML format.
- Many edible things are packaged! And you may need to overbuy something to cook a particular recipe. A "empty that fridge" function that allows you to cook something with things that you have at home would be great. A feature that reminds you about things that you will risk to trow away and suggest some recipes using them would be wonderful :)
My personal solution is to cook pasta or a "risotto" (rice) with anything I find in my fridge... you can use cheese, meat, vegetables, even fruit with a lot of tasty combinations. But not everyone may like it :P

I'm mostly a low-level Windows CE programmer, so I can't help you much with XML and high-level releated issues...
But I may provide some very good Italian recipes for your database!

ryan kilkenny wrote re: Geeks sharing recipes
on 03-09-2008 11:15 PM
This is great. I'm working on a very similar idea, but going even further into the grammar of the english recipe structure.

I've just started to break down each ingredient into its grammatical components: Quantitative Adjective, Adjective, Noun, Adverb.

The trick is writing an app that will convert each line item into these components. For example: 4 cups thinly sliced green onions becomes:
* Quantitative Adjective: 4 cups
* Adjective: green
* Noun: onions
* Adverb: thinly sliced

The reason behind this is to give ourselves the ability to do more complex joins with other food databases. Thus linking more information to each ingredient. I don't want to give too much away, but this something I'm in the middle of right now. Glad to see other peoples working on the same. I'd love to help out wherever possible, let me know how your ventures go with grecipe-manager. I'm gonna go check that out right now.