6 ms·
New revamped version of the AnyMeal recipe management software
- bshipp 6y agoThanks for all your effort! I haven't tinkered with mealmaster files in ages but you've given me a reason to dig through my old CDs to find my archives. Unlike zip files of old code or software, recipes are likely just as useful today as they were 10 or 20 years ago. One thing I noticed when working with Sqlite3 recently is that they've implemented full text searching. https://www.sqlite.org/fts3.html https://www.sqlite.org/fts3.html I found the implementation simple to employ and incredibly fast and powerful. Perhaps it could be a helpful tool in a generic search? Just an idea!
- wedesoft 6y agoThanks for your suggestion. At the moment I am looking into bulk operations for categories. But I might give it a go later. Not sure how fast it will be. It would need to run on 400 MByte of text!
- bshipp 6y agoI ran it on a 67GB sqlite database with approximately 15 million rows in one table and 300 million in another and on an SSD it spit out a result in less than a second. On a mech drive its 5-10 seconds, but that's a factor of 10 faster than if I did a traditional WHERE clause with LIKE/GLOB. The drawback is that it increases the size of the database, almost exponentially depending on the number of columns you include in the FTS. But its fun to tinker with!
- jvilalta 6y agoI used to look up recipes online and never bothered collecting them, but now with all the ad laden and SEO optimized recipes sites, I think it's time for me to go back to collecting the ones worth keeping. Thanks for bringing this up and for the tool. I'll give it a try.
- wedesoft 6y agoThanks for your comment. Of course one can use a search engine for finding recipes. But using a recipe database one can perform ingredient searches and category searches more easily.
- JimmyRuska 6y agoThere's some interesting ideas in this space too With supercook app you can go through your fridge and say the ingredients that you have and the app will tell you what recipes you can cook https://www.supercook.com/#/recipes https://www.supercook.com/#/recipes There's another app that works in reverse, you pick what recipes you want then it gives you a shopping list. I think the app was Mealime
- wedesoft 6y agoBack then I tried to implement that, but if I tell it, that I have no water, it ruled out many recipes. If I told it, I had water, it suggested coffee or tea.
- JimmyRuska 6y agoStructured data can be imported to graph databases like Apache Jena or RDFox, and then recursive queries can be done with alternatives. Here is an example using RDFox: https://imgur.com/ziZdIzA https://imgur.com/ziZdIzA My fridge has "noodles, tomatos and butter", But I know only one recipe which calls for "noodles, sauce, oil, optionally cheese". However you put alternatives in the database, if you have tomatos, you can make sauce, if you have butter, you don't need oil. RDFox correctly says I can still make :spaghetti. Query: select DISTINCT ?recipe where { :fridge :item ?x. ?recipe a :recipe. ?recipe :requires ?y. OPTIONAL { ?y :alternative ?z }. FILTER(?x IN (?y, ?z)) }
- contingencies 6y agoCrazy early (1985!) example of a recipe markup system, RxOL: https://web.archive.org/web/20021105191447/http://anthus.com/Recipes/CompCook.html https://web.archive.org/web/20021105191447/http://anthus.com...
- wedesoft 6y agoThat's an interesting article. Thanks for sharing. Maybe something more structured than MealMaster is required when programming a kitchen robot in the future ;)
- contingencies 6y agoYes, that was our conclusion after reviewing numerous pre-existing systems, and we have now built one (the robot, and the more structured recipe markup system). RxOL was just one system we reviewed, which I appreciated for the article's explicit discussion of the rationale for its architecture.
- wedesoft 6y agoWow. Really? Do you have any videos of the robot to share?
- contingencies 6y agoAbsolutely not, for IP protection reasons. 4 years of R&D. Our strategy for commercialization is wholly owned network operation. Quite unlike the apparent de-facto strategy within the segment of "wow-factor novelty" we have designed for operation as an always-available urban utility. Examples of "wow-factor novelty robots": Foodom in Guangzhou, Ekim/Pazzi in France, Creator in SF, Spyce in Boston, etc. It seems the done thing, when that fails to commercialize, is that you spend marketing budget on expensive chefs to convince people the food is good, then you go back to your investors for more money, then you become a zombie startup... (Edit: Oh there are many more projects... it is quite an active area globally, despite a lack of significant successes. Most making the same mistakes. See https://www.youtube.com/watch?v=FmXLqImT1wE&feature=youtu.be https://www.youtube.com/watch?v=FmXLqImT1wE&feature=youtu.be and https://patents.google.com/?q=food&assignee=Amf+Incorporated&before=priority:19900101&num=100&oq=assignee:(Amf+Incorporated)+before:priority:19900101+food https://patents.google.com/?q=food&assignee=Amf+Incorporated... for an early example.)
- JimmyRuska 6y agoMany recipe sites now have metadata at the top of the page in json-ld or in embedded in the html based on schema.org structured data. https://developers.google.com/search/docs/guides/intro-structured-data https://developers.google.com/search/docs/guides/intro-struc... There are apps which can import from these sites. for example "recipe keeper", you can browse third party sites with schema.org recipes from inside the app and it will import them into the app management software. Structured data typically maps to RDF, which is for graph databases like apache Jena or RDFox, but since most recipe data does not have backlinks or cyclical links, any type of JSON or YAML store should be sufficient. If you are still updating your app, it would be cool if you could add support for recipes sites with json-ld!
- wedesoft 6y agoIt is difficult to support more recipe formats because they are more generic than MealMaster. But I can take a look.
- JimmyRuska 6y agoNice ! Here is an example Recipe: https://www.bbc.co.uk/food/recipes/tofu_peanut_stir-fry_62729 https://www.bbc.co.uk/food/recipes/tofu_peanut_stir-fry_6272... Google review tool: https://search.google.com/structured-data/testing-tool#url=https%3A%2F%2Fwww.bbc.co.uk%2Ffood%2Frecipes%2Ftofu_peanut_stir-fry_62729 https://search.google.com/structured-data/testing-tool#url=h... From command line: curl https://www.bbc.co.uk/food/recipes/tofu_peanut_stir-fry_62729 https://www.bbc.co.uk/food/recipes/tofu_peanut_stir-fry_6272... | grep -o -P '(?<="application/ld\+json">).*(</script)'
- jakear 6y agoCool project! One of my earlier projects for learning Scheme was a similar system whose selling point was automatic "smart" ingredient substitution. It's interesting that one of the key selling points of this is it's focus on quickness of search. I can't imagine having so many recipes that a computer would have a hard time searching through them, but then perhaps I'm just not the target audience :) Aside: I know everyone loves to hate electron/web tech, but being an electronician myself, I can't help but wonder how a web-tech version of this would look. For one, it would be nice to be able to try this out, but the current version is unavailable on my platform (MacOS). An Electron or web version wouldn't have this problem, and a web version would work with an iPad or similar, which is a nicer kitchen tool than any keyboarded-device in my experience. Potential hanging points would be in parsing the recipes, and search. I'd imagine that for search it wouldn't be all that difficult to build up a sufficient index programmatically without mySQL, but I could be wrong. As for parsing, the examples I've seen seem all quite simple, but of course the difficulty in parsing is always the long tail.
- wedesoft 6y agoNot sure about Electron. You would probably still need the parser to be Flex/C for performance. Even using Flex and C it takes about half an hour to import 250000 recipes. Sorry that I haven't done a build for MacOS. But I don't have a system for testing.
- wedesoft 6y agoAnother thing I forgot to mention in the article is that I set up a Debian Sid Docker container in order to build a package to submit to the Debian developers. Hopefully I will find a sponsor soon so that it will eventually be available as a package on Debian and Ubuntu ...