Originally Posted by MacDork
In the case of "Buy OmniFocus", it's appropriate and suitable to set it's context to either/both "@work/online" or "@home/online". If I could set it to both, I'd be reminded to buy it when I was both at home and at work.
You might be able to handle this by creating a "work" and "home" subcontext under your "online" context.
But I do it slightly differently. First off, I don't make a distinction between being online at work or online at home (i.e. based on a geographic location -- I can be on the Internet from just about anywhere).
Instead, I have a generic "Internet" context. This covers all generic Internet access, whether I be at home, the coffee shop, the library, or going through the proxy server from work (allowing me to get onto the Internet from behind our corporate firewall). And it can be from any device: MacBook, iPhone, or some other machine.
I also have an "Intranet" context for things that can only be done on my employer's network. So sitting at my Mac and connected to my company's network (whether that be remotely via VPN or on site in the office), I can select both my Internet and Intranet contexts from the sidebar (using Command-click) and I get a list of everything that can be done under the current conditions. If I leave the office or close my VPN connection, I can select just my Internet context for the appropriate list of actions.
You could go further and add subcontexts beneath the Internet or Intranet contexts (e.g. "web", "email", or some specific online tools or websites that might only be accessible from your Intranet or that you'd only want to outside of your employer's network).
I find this approach works very well for me.
Originally Posted by MacDork
As for your second example, I think most people just use nested contexts, maybe something like this:
General errands (e.g. "return library books") could go in the "Errands" context. General shopping actions (i.e. items that could be purchased at the grocery store, gas station, or walmart) go in the generic Shopping context. And items that can only be found in a specific store (perhaps you have a coupon for that store or they stock your preferred brand or whatever) go in the lowest level context for that particular location (e.g. Walmart).
Adding the ability to tag or use multiple contexts would certainly be another way to slice and dice your data, and I'm not against its inclusion in a future version. But OmniFocus as it is right now has already been designed to handle these situations. Which approach you favor really just depends on what you're used to and how you like to work.
Personally, I find making discrete, atomic actions like Ken mentioned along with nesting of projects, action groups, and contexts gives me immense flexibility and a very nice heiarchical perspective on my data that makes it very easy to visualize and assess at a glance. Of course, YMMV. :-)