So it occurs to me that one of the interesting problems in personal productivity and to-do lists and the like is the problem of programmatically determining free time. I will tell you my thought process here:
I have been been working with a couple new email clients that aim to make use of more productivity features like todos and review lists than a standard client, like Apple Mail.
One of the interesting things that these clients tend to do is deprioritize reading, or marking as read, as the required action of an email. So you can read something a dozen times and it will stick around until you mark it 'complete' (in Mail Pilot's parlance)—and by the same token, once you mark it complete it leaves your inbox and requires a few more steps to revisit. Alternately you can mark something for review—general review, review in a certain topic list, review associated with a certain person, or a certain date.
So far I've been having pretty good results with this system. It's helpful to keep the inbox clear of detritus and trust that things that need action are still waiting, when I'm ready for them.
But of course one of issues that arises naturally is remembering to review outstanding emails. If you decide not to have everything that needs some kind of addressing sticking out in your face at all times, then you also have to create a time for yourself to revisit things that you have allowed yourself to forget.
My first thought was simply to pick a time or a couple times every day to have a reminder pop up to do email review. But I've been around the personal productivity barn long enough to know what happens most of the time that I get an alert or reminder on my phone: I'm in the middle of something else, so I dismiss it and it goes away. End loop.
Now one solution to this problem is to refuse to be dismissed so easily—cf. the alarm clock that runs away from you when you try to turn it off.
But another solution is to set a window and write an application that's clever enough to know when I'm not doing anything else within that window.
Two possible methods:
I already use a time-tracking application of some kind and thus am in the habit of telling my computer when I'm working—and by implication when I'm not working on anything in particular.
I don't use a time-tracking application, but I have an application that has certain triggers that tell it I'm in the middle of leisure. For instance, if I've spent more than 30 seconds on facebook.com. Or the computer's been idle for more than 10 minutes—and my phone reports that I'm still at home.