* Using org-mode for recipes (i.e. cooking) @ 2011-03-24 11:47 Le Wang 2011-03-24 20:52 ` Christian Moe 2011-03-30 6:30 ` Erik Hetzner 0 siblings, 2 replies; 11+ messages in thread From: Le Wang @ 2011-03-24 11:47 UTC (permalink / raw) To: Orgmode Mailing List Hi all, I'm fairly new to org-mode, and I only use it as an outliner / note taking tool. It seems recipes, being a list of ingredients and a series of steps is a perfect match for org-mode. Out of the box, org already works pretty well for recipes, but I think there are some areas for improved integration around timers. I'm not familiar with all the facilities of org-mode, maybe someone who uses org-mode for scientific experiments or something similar will have some hints. Is it possible to inline count-down timers in a cooking step? For example "2. simmer sauce for 40 minutes on low heat. <start_timer_button>", so there is a button at the end of the line that starts a count-down timer. Many timers from different steps can be started simultaneously, and each timer should be able to be paused and restarted. And there should be an easy way to get an overview of of all ongoing timers from the current document. Is it possible to hack this together using existing org functionality? Thanks. -- Le ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Using org-mode for recipes (i.e. cooking) 2011-03-24 11:47 Using org-mode for recipes (i.e. cooking) Le Wang @ 2011-03-24 20:52 ` Christian Moe 2011-03-24 21:56 ` Christian Moe 2011-03-30 6:30 ` Erik Hetzner 1 sibling, 1 reply; 11+ messages in thread From: Christian Moe @ 2011-03-24 20:52 UTC (permalink / raw) To: Le Wang; +Cc: Orgmode Mailing List [-- Attachment #1: Type: text/plain, Size: 1276 bytes --] Hi, On 3/24/11 12:47 PM, Le Wang wrote: (...) > Is it possible to inline count-down timers in a cooking step? For > example "2. simmer sauce for 40 minutes on low heat. > <start_timer_button>", so there is a button at the end of the line > that starts a count-down timer. > > Many timers from different steps can be started simultaneously, and > each timer should be able to be paused and restarted. And there > should be an easy way to get an overview of of all ongoing timers from > the current document. > > Is it possible to hack this together using existing org > functionality? I don't think Org has built-in support for concurrent countdown timers. But you can fake this pretty well with org-timer, properties, column view, a dynamic block, and some lisp table formulas. A ready-to-run example is attached, hopefully self-explanatory, probably buggy, and WITH ABSOLUTELY NO WARRANTY. This is a learning exercise for me. Instead of using a start timer button (for which you could use an `elisp:' link, like the one I've put in to make it easy to stop the timer), you can write a hook to start countdowns when the TODO state changes. That rather hackish function is the only code here that's not out of the box. Yours, Christian [-- Attachment #2: recipe-timer.org --] [-- Type: text/plain, Size: 2558 bytes --] #+STARTUP: showeverything #+COLUMNS: %ITEM %For %Start %Elapsed %REMAINS %Message #+TODO: TODO RUNNING | DONE Recipe with timers * First evaluate this (or put in your .emacs) #+begin_src emacs-lisp (require 'org-timer) (defun my/recipe-timer-start () "When state is changed to `RUNNING', change the `Start' property of the entry to the current value of org-timer if this is a timed recipe entry, i.e. if it has a h:m:s-formatted duration in its `For' property. When state is changed to `DONE', reset `Start' to `-'." (when (string-match org-timer-re (or (org-entry-get (point) "For") "")) (cond ((string= state "RUNNING") (org-set-property "Start" (org-timer nil t))) ((string= state "DONE") (org-set-property "Start" "-"))))) (setq org-after-todo-state-change-hook 'my/recipe-timer-start) #+end_src #+results: : my/recipe-timer-start * Recipe Here's the dynamic block with the overview. - Refresh manually with `C-c C-c' on the `begin' line. - Note that this will start the timer if it's not running. - The countdown is in the "REMAINS" column. #+begin: columnview :id local | ITEM | For | Start | Elapsed | REMAINS | Message | |-----------------------+---------+-------+---------+---------+---------| | * Recipe | | | 0:00:00 | | | | ** TODO Let simmer | 0:40:00 | - | 0:00:00 | | | | ** TODO Let ferment | 2:00:00 | - | 0:00:00 | | | | ** TODO Leave in oven | 0:04:00 | - | 0:00:00 | | | #+tblfm: $4='(org-timer nil t)::$5='(if (string-match org-timer-re $3) (org-timer-secs-to-hms (- (org-timer-hms-to-secs $2) (org-timer-hms-to-secs $4))) "")::$6='(if (< (org-timer-hms-to-secs $5) 0) "STOP!" "") #+end: Below are a few tasks with durations in their `For' properties. - Start them by changing the task's state to `RUNNING' with `C-c C-t'. (If org-timer is not running, it will be started.) - When time's up for a task, it will message `STOP!'. Navigate to the task and change its state to `DONE' with `C-c C-t' (after taking stuff out of the oven, or whatever). - When you're done, you can [[elisp:org-timer-stop][stop the timer]] (click the link or press `C-u C-c C-x ,'). ** TODO Let simmer :PROPERTIES: :For: 0:40:00 :Start: - :END: ** TODO Let ferment :PROPERTIES: :For: 2:00:00 :Start: - :END: ** TODO Leave in oven :PROPERTIES: :For: 0:04:00 :Start: - :END: ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Using org-mode for recipes (i.e. cooking) 2011-03-24 20:52 ` Christian Moe @ 2011-03-24 21:56 ` Christian Moe 2011-03-25 19:25 ` brian powell 0 siblings, 1 reply; 11+ messages in thread From: Christian Moe @ 2011-03-24 21:56 UTC (permalink / raw) To: mail; +Cc: Orgmode Mailing List, Le Wang PS. Using Eric Schulte's new with-time macro (http://orgmode.org/worg/org-hacks.html#sec-1_2_6), part of the table formula in my above example can be written more compactly: $5 = '(if (string-match org-timer-re $3) (org-timer-secs-to-hms (- (org-timer-hms-to-secs $2) (org-timer-hms-to-secs $4))) "") becomes: $5='(if (string-match org-timer-re $3) (with-time t (- $2 $4)) "") ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Using org-mode for recipes (i.e. cooking) 2011-03-24 21:56 ` Christian Moe @ 2011-03-25 19:25 ` brian powell 0 siblings, 0 replies; 11+ messages in thread From: brian powell @ 2011-03-25 19:25 UTC (permalink / raw) To: mail; +Cc: Orgmode Mailing List, Le Wang * Could do a link like this in an OrgMode buffer: [[shell:google-chrome --enable-plugins ~/CountDownTimer.html &]] ** Where ~/CountDownTimer.html contains the below code and/or only contains the below code/markup: <embed width="800" height="600" quality="high" wmode="opaque" name="virtualchumby" type="application/x-shockwave-flash" src="http://www.chumby.com/virtualchumby_noskin.swf" FlashVars="_chumby_profile_url=http%3A%2F%2Fwww.chumby.com%2Fxml%2Fvirtualprofiles%2FC3BB9562-5713-11E0-8D7D-0021288E6F90&baseURL=http%3A%2F%2Fwww.chumby.com" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed> ** Tested this; worked for me. ** You may have to make a "VirtualChumby" which I believe is free from Chumby Industries. *** FWIW I am in no way connected to "Chumby Industries"--no way that I know of... ;-) On Thu, Mar 24, 2011 at 5:56 PM, Christian Moe <mail@christianmoe.com> wrote: > PS. Using Eric Schulte's new with-time macro > (http://orgmode.org/worg/org-hacks.html#sec-1_2_6), part of the table > formula in my above example can be written more compactly: > > $5 = '(if (string-match org-timer-re $3) (org-timer-secs-to-hms (- > (org-timer-hms-to-secs $2) (org-timer-hms-to-secs $4))) "") > > becomes: > > $5='(if (string-match org-timer-re $3) (with-time t (- $2 $4)) "") > > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Using org-mode for recipes (i.e. cooking) 2011-03-24 11:47 Using org-mode for recipes (i.e. cooking) Le Wang 2011-03-24 20:52 ` Christian Moe @ 2011-03-30 6:30 ` Erik Hetzner 2011-07-26 18:01 ` Eric Abrahamsen 1 sibling, 1 reply; 11+ messages in thread From: Erik Hetzner @ 2011-03-30 6:30 UTC (permalink / raw) To: Le Wang; +Cc: Orgmode Mailing List [-- Attachment #1: Type: text/plain, Size: 2782 bytes --] At Thu, 24 Mar 2011 19:47:46 +0800, Le Wang wrote: > > Hi all, > > I'm fairly new to org-mode, and I only use it as an outliner / note > taking tool. It seems recipes, being a list of ingredients and a > series of steps is a perfect match for org-mode. > > Out of the box, org already works pretty well for recipes, but I think > there are some areas for improved integration around timers. I'm not > familiar with all the facilities of org-mode, maybe someone who uses > org-mode for scientific experiments or something similar will have > some hints. > > Is it possible to inline count-down timers in a cooking step? For > example "2. simmer sauce for 40 minutes on low heat. > <start_timer_button>", so there is a button at the end of the line > that starts a count-down timer. > > Many timers from different steps can be started simultaneously, and > each timer should be able to be paused and restarted. And there > should be an easy way to get an overview of of all ongoing timers from > the current document. > > Is it possible to hack this together using existing org functionality? Hi, This is only tangentially related, but I will bring it up anyhow. First, I use org-mode to keep my recipes. Here is the format I use: * Molasses spice cookies :PROPERTIES: :source: Here in America’s test kitchen, p. 275. :END: Whisk together: - 2 1:4 cup ($11.25 oz$) flour - 1 tsp baking soda - 1.5 tsp ground cinnamon [...] Beat at med high until light and fluffy (~3 min): - 12 tbsp butter, softened - 1:2 cup sugar and so on. I have some methods to convert units back & forth from metric & narrow a recipe to ingredients only, though I think this is probably not really useful. I would be happy to provide this if you like. I also keep a log of my home beer brewing. In it I use the relative timer to keep track of what I actually do when brewing. For instance: 0:00:00 Add to 1 gal 150 degF water: - 4 oz Roast malt - 8 oz British chocolate - 8 oz British crystal 50-60 degL - 8 oz flaked oats, toasted @ 300 degF for 30 min. 0:56:18 Sparge w/ 1.5 gal @ 162 degF. Top off to 3 gal. 1:40:18 Add 3 lb light LME. 1:52:32 Boiling again, add 2 oz U.S. Goldings @ 4.5% 2:37:21 Add 2.5 lb light LME 2:47:10 Add whirlfloc, yeast nutrient 3:02:00 Start cooling. 3:57:20 Top off to 5.5 gal. Pitch 1 package S-04. Gravity: 1.040 @ 70 degF Although this would probably be overkill for (most) cooking, if you care enough about what you are cooking you can use a relative timer in this way to remember when it was you last did something. It’s not quite a timer, but setting up a countdown timer would be pretty easy, I think. best, Erik [-- Attachment #2: Type: text/plain, Size: 53 bytes --] Sent from my free software system <http://fsf.org/>. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Using org-mode for recipes (i.e. cooking) 2011-03-30 6:30 ` Erik Hetzner @ 2011-07-26 18:01 ` Eric Abrahamsen 2011-07-26 19:03 ` Eric Schulte 0 siblings, 1 reply; 11+ messages in thread From: Eric Abrahamsen @ 2011-07-26 18:01 UTC (permalink / raw) To: Erik Hetzner; +Cc: Orgmode Mailing List, Le Wang On Tue, Mar 29 2011, Erik Hetzner wrote: > At Thu, 24 Mar 2011 19:47:46 +0800, > Le Wang wrote: >> >> Hi all, >> >> I'm fairly new to org-mode, and I only use it as an outliner / note >> taking tool. It seems recipes, being a list of ingredients and a >> series of steps is a perfect match for org-mode. [...] > Hi, > > This is only tangentially related, but I will bring it up anyhow. > > First, I use org-mode to keep my recipes. Here is the format I use: [...] > and so on. I have some methods to convert units back & forth from > metric & narrow a recipe to ingredients only, though I think this is > probably not really useful. I would be happy to provide this if you > like. Sorry this is a little old, but if you're still willing to provide some functions, I'd like to see them! I'm using org mode to keep track of baking recipes, which are traditionally recorded as ratios of ingredient weights, which are then used to calculate an actual recipe based on how much dough you want. Any food for thought regarding programmatic manipulation of properties would be very welcome… Eric ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Using org-mode for recipes (i.e. cooking) 2011-07-26 18:01 ` Eric Abrahamsen @ 2011-07-26 19:03 ` Eric Schulte 2011-07-26 19:57 ` John Hendy 2011-07-27 2:30 ` Eric Abrahamsen 0 siblings, 2 replies; 11+ messages in thread From: Eric Schulte @ 2011-07-26 19:03 UTC (permalink / raw) To: Eric Abrahamsen; +Cc: Erik Hetzner, Orgmode Mailing List, Le Wang >> First, I use org-mode to keep my recipes. Here is the format I use: > > [...] > >> and so on. I have some methods to convert units back & forth from >> metric & narrow a recipe to ingredients only, though I think this is >> probably not really useful. I would be happy to provide this if you >> like. > > Sorry this is a little old, but if you're still willing to provide some > functions, I'd like to see them! I'm using org mode to keep track of > baking recipes, which are traditionally recorded as ratios of ingredient > weights, which are then used to calculate an actual recipe based on how > much dough you want. Any food for thought regarding programmatic > manipulation of properties would be very welcome… > +1 I also use Org-mode to hold recipes. Currently I just hold the ingredients in a standard list with informally specified amounts, but I would be interested to see other approaches and any functions for automatic recipe manipulation. Incidentally I also do some baking, and while I don't currently measure my ingredients by weight I would be interested to see (or help brainstorm) a mechanism for reifying percentages into actual weights. Cheers -- Eric -- Eric Schulte http://cs.unm.edu/~eschulte/ ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Using org-mode for recipes (i.e. cooking) 2011-07-26 19:03 ` Eric Schulte @ 2011-07-26 19:57 ` John Hendy 2011-07-27 5:00 ` Erik Hetzner 2011-07-27 2:30 ` Eric Abrahamsen 1 sibling, 1 reply; 11+ messages in thread From: John Hendy @ 2011-07-26 19:57 UTC (permalink / raw) To: Eric Schulte; +Cc: Eric Abrahamsen, Erik Hetzner, Orgmode Mailing List, Le Wang On Tue, Jul 26, 2011 at 2:03 PM, Eric Schulte <schulte.eric@gmail.com> wrote: >>> First, I use org-mode to keep my recipes. Here is the format I use: >> >> [...] >> >>> and so on. I have some methods to convert units back & forth from >>> metric & narrow a recipe to ingredients only, though I think this is >>> probably not really useful. I would be happy to provide this if you >>> like. >> >> Sorry this is a little old, but if you're still willing to provide some >> functions, I'd like to see them! I'm using org mode to keep track of >> baking recipes, which are traditionally recorded as ratios of ingredient >> weights, which are then used to calculate an actual recipe based on how >> much dough you want. Any food for thought regarding programmatic >> manipulation of properties would be very welcome… >> > > +1 > > I also use Org-mode to hold recipes. Currently I just hold the > ingredients in a standard list with informally specified amounts, but I > would be interested to see other approaches and any functions for > automatic recipe manipulation. > > Incidentally I also do some baking, and while I don't currently measure > my ingredients by weight I would be interested to see (or help > brainstorm) a mechanism for reifying percentages into actual weights. > I wouldn't mind seeing this, either. I've looked for a while at trying to input my wife's recipes into something for her that would be printable/exportable into perhaps a small binder or card box or something. I've played around with gourmet with varying success but not been entirely happy. It's been buggy for me when it comes to printing.[1] At the very least, someone can try it out for it's converting/unit suggestions, as they are fantastic. Most here may work directly from org, but if recipes *are* implemented, an exporter or two for half-page or index card sizes would be *phenomenal.* John --- [1] http://grecipe-manager.sourceforge.net/ > Cheers -- Eric > > -- > Eric Schulte > http://cs.unm.edu/~eschulte/ > > ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Using org-mode for recipes (i.e. cooking) 2011-07-26 19:57 ` John Hendy @ 2011-07-27 5:00 ` Erik Hetzner 2011-07-27 12:50 ` Bastien 0 siblings, 1 reply; 11+ messages in thread From: Erik Hetzner @ 2011-07-27 5:00 UTC (permalink / raw) To: John Hendy; +Cc: Eric Abrahamsen, Orgmode Mailing List, Le Wang [-- Attachment #1: Type: text/plain, Size: 1719 bytes --] At Tue, 26 Jul 2011 14:57:31 -0500, John Hendy wrote: > > On Tue, Jul 26, 2011 at 2:03 PM, Eric Schulte <schulte.eric@gmail.com> wrote: > > […] > > I wouldn't mind seeing this, either. I've looked for a while at trying > to input my wife's recipes into something for her that would be > printable/exportable into perhaps a small binder or card box or > something. I've played around with gourmet with varying success but > not been entirely happy. It's been buggy for me when it comes to > printing.[1] At the very least, someone can try it out for it's > converting/unit suggestions, as they are fantastic. > > Most here may work directly from org, but if recipes *are* > implemented, an exporter or two for half-page or index card sizes > would be *phenomenal.* Hi, I can’t help with printing (which would be nice). But I have put my code on gitorious: https://gitorious.org/org-cook/org-cook It currently does metric/english conversion, and a few other tricks. Basically I just use calc’s units code. I think scaling recipes, or turning percentages into weights would be pretty easy. There is also, for those interested: https://gitorious.org/org-brew/org-brew for brewing beer. This is again, mostly just calc functions, including hydrometer correction, abv calculation, priming sugar for a given CO_2 volume, etc. More integration with org-mode should be possible: for instance it would be nice to be able to use a lookup table (of ingredients) to calculate target original gravity, IBUs, etc. Any thoughts or pull requests on either are appreciated! (Please do continue to CC me, as I read the list via gmane and may miss messages.) best, Erik [-- Attachment #2: Type: text/plain, Size: 53 bytes --] Sent from my free software system <http://fsf.org/>. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Using org-mode for recipes (i.e. cooking) 2011-07-27 5:00 ` Erik Hetzner @ 2011-07-27 12:50 ` Bastien 0 siblings, 0 replies; 11+ messages in thread From: Bastien @ 2011-07-27 12:50 UTC (permalink / raw) To: Erik Hetzner; +Cc: Eric Abrahamsen, Orgmode Mailing List, Le Wang Hi Erik, Erik Hetzner <egh@e6h.org> writes: > https://gitorious.org/org-cook/org-cook > https://gitorious.org/org-brew/org-brew I'm a terrible cooker/brewer... but I love these ideas! I allowed myself to put this in Worg -- org-hacks.org, in a new "Musings" section. Thanks :) -- Bastien ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Using org-mode for recipes (i.e. cooking) 2011-07-26 19:03 ` Eric Schulte 2011-07-26 19:57 ` John Hendy @ 2011-07-27 2:30 ` Eric Abrahamsen 1 sibling, 0 replies; 11+ messages in thread From: Eric Abrahamsen @ 2011-07-27 2:30 UTC (permalink / raw) To: emacs-orgmode On Tue, Jul 26 2011, Eric Schulte wrote: >>> First, I use org-mode to keep my recipes. Here is the format I use: >> >> [...] >> >>> and so on. I have some methods to convert units back & forth from >>> metric & narrow a recipe to ingredients only, though I think this is >>> probably not really useful. I would be happy to provide this if you >>> like. >> >> Sorry this is a little old, but if you're still willing to provide some >> functions, I'd like to see them! I'm using org mode to keep track of >> baking recipes, which are traditionally recorded as ratios of ingredient >> weights, which are then used to calculate an actual recipe based on how >> much dough you want. Any food for thought regarding programmatic >> manipulation of properties would be very welcome… >> > > +1 > > I also use Org-mode to hold recipes. Currently I just hold the > ingredients in a standard list with informally specified amounts, but I > would be interested to see other approaches and any functions for > automatic recipe manipulation. > > Incidentally I also do some baking, and while I don't currently measure > my ingredients by weight I would be interested to see (or help > brainstorm) a mechanism for reifying percentages into actual weights. Baking by weights is definitely the way to go! Much more accurate. And since ounces don't lend themselves to arithmetic, I generally go with grams. The bakers' percentage[1] says that flour is 100%, and everything else is a relative percentage of that, so the total dough comes out something like 130%. So you have a recipe like this: ** Basic Sourdough :PROPERTIES: :starter: 0.494 :flour: 1 :salt: 0.025 :water: 0.642 :END: Then I suppose it wouldn't be too much work to write a function that you call on that headline, it asks you for a total dough weight, and then calculates specific gram weights for each ingredient. I'll look into doing something like this in the next few days. In the meantime, here's the guts of what I've been using to do a similar calculation, though it wants you to know weights of pure flour and starter (and hydration of the two) ahead of time, and has salt hardcoded at 2%. #+begin_src emacs-lisp (defun my-c-s-inner (flour starter hydration starter-hydration) (let* ((starter-flour (* starter (/ starter-hydration 2))) (full-flour (+ flour (starter-flour))) (water (- (* full-flour hydration) (- starter starter-flour))) (salt (* full-flour 0.02))) (values water salt))) #+end_src I don't know enough about custom exporting to make a 3x5 card out of these things, though I suppose LaTeX could do it fairly well… Eric Footnotes: [1] http://en.wikipedia.org/wiki/Baker_percentage ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2011-07-27 14:52 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-03-24 11:47 Using org-mode for recipes (i.e. cooking) Le Wang 2011-03-24 20:52 ` Christian Moe 2011-03-24 21:56 ` Christian Moe 2011-03-25 19:25 ` brian powell 2011-03-30 6:30 ` Erik Hetzner 2011-07-26 18:01 ` Eric Abrahamsen 2011-07-26 19:03 ` Eric Schulte 2011-07-26 19:57 ` John Hendy 2011-07-27 5:00 ` Erik Hetzner 2011-07-27 12:50 ` Bastien 2011-07-27 2:30 ` Eric Abrahamsen
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).