Activity Prevention

Thursday, 2006-11-16; 23:37:00



Over the past year, I've noticed that I've begun to watch more and more videos on my computer: downloaded TV shows from iTunes, DVDs, videoclips on movie sites like YouTube or Google Video, etc. It's quite a dramatic increase from previous years, actually, probably because of the proliferation of downloadable content and user-created content. Video is entering its Golden Age on the internet, it seems.

But whatever. I have one big annoyance: video playback seems to take up a lot of CPU time. Not that that's really that bad of a thing in itself, since better video codecs require increased processing power. The problem is that sometimes there are regularly scheduled activities or processes that go on in the background, and when they attempt to run, they interfere with my video experience since they are also competing for CPU resources. I imagine that my problems are exacerbated by the fact that I'm using a single-core iMac G5, whereas all the new-fangled Macs have dual cores that negate a lot of this resource competition.

For example, I have a .mac account, and as such I have my information sync every hour in order to have everything updated as much as possible between my computers. However, this hourly sync is the one most frequent interruption that I encounter when viewing video -- if I'm watching an episode of the Daily Show or Colbert Report in Front Row and synching starts, I can immediately tell because video starts to become choppy. It's quite annoying.

But in a more general sense, there are lots of things that can interfere with a video experience: IMs or Skype phone calls can come in, making windows pop up over your video; sounds from new e-mails or new IMs or various other events can distract you; the aforementioned problem with resource competition can cause your video playback to stutter; your computer might decide to dim its display or go to sleep because you haven't "done anything" in the past hour or so; other applications might throw up alerts; there are so many interruptions possible it's kind of ridiculous. If you want to ensure that none of these things happen, it's kind of a chore to start playing video.

Furthermore, an individual video playing experience is also largely determined by how you view the video. For example, if I'm watching a long clip on YouTube or another video site, my display will often go to sleep 15 minutes through. This doesn't happen if I'm watching a video in Front Row, or full screen in VLC or Mplayer. iChat IM bubbles pop up over the video when watching in VLC or Mplayer (regardless of whether its in full screen or not), but not in Front Row. Sounds and screen flashes all happen even when viewing video in Front Row. Of all the video viewing experiences, Front Row, unsurprisingly, offers one of the best, but sometimes I just want to start something in VLC and have quick access to another application if I need to do something for a few seconds.

It would be cool if there was some utility that actively prevented distractions based on what you're doing, and provided a consistent user experience regardless of what application you're in. Video is just one example, but there are numerous other possibilities where this would be useful: if you're having a Skype phone conversation or a video iChat, you also might want to have something that prevents things from interfering with the conversation at hand. Presentations are another great example: I've personally experienced a couple times when my screen saver activated halfway through my presentation, which is jarring, and I've seen others give presentations when an Entourage notification pops up. Not something that you want to have happen.

And it's also something that you don't want to have to remember every single freakin' time you start a presentation, or start a video iChat or Skype phone call. You just want these things to go away as soon as you start doing something specific.

I imagine a preference pane that allows you to define certain primary activities. These primary activities would be active presentations, actively playing video in the frontmost application, things like that. You could also define specific properties of these primary activities: whether or not the activity obscures all other applications (e.g.: full-screen video playing), whether or not the activity is happening in the frontmost application, etc.

Then, you would define secondary activities that can also happen while the primary activities are still occurring, and you could define rules and actions to handle these secondary activities. One rule might be to simply prevent the secondary activity from occurring (i.e.: prevent a .mac sync or Vienna article refresh from happening and hogging your resources). If you define a secondary activity to be a new IM message, you might define an action to simply suppress the sound or screen flash that happens because of this secondary activity. You could also define actions like automatically closing the window of a newly popped-up IM. Or if you were watching video and a Skype phone call came in, you might define an action to simply automatically reject the phone call.

All of these things would simply happen automatically: you set all of your rules up, and then whenever a certain activity occurs, this preference pane/background app would automatically start following your rules based on the activity that's happening at the moment. If you start a presentation or a full-screen video, it would automatically start suppressing your IMs and e-mail sounds and Skype phone calls. You wouldn't need to press a start button, you wouldn't need to select an active prevention configuration from a menu, everything would just happen automatically.

The application would be like a secretary of sorts, filtering out things you don't want to handle until later. If you're a manager at a company, you might tell your secretary to hold all your phone calls (unless they're urgent), log them, and then inform you of them after the meeting. This application could even do the same thing -- it could present a window showing all the events that were suppressed since you started a certain activity.

Is there some system or utility out there that can already do something like this? I would personally find this immensely useful. Or, if someone wanted to take the idea and run with it, I would wholeheartedly support them if they stole my idea and started to develop it. (All I ask is that I get to be a beta tester. ;) ) I don't have the time nor the inclination nor the know-how to create something like this -- for example, would it even be possible to prevent alert sounds or alert screen flashes from happening, since these are activities that happen at a system level? I don't know.

The one thing that pops to mind at this point is the Growl notification framework. However, from what I understand, this is primarily a system that's designed to simply notify you of events. All applications that utilize the Growl framework can present notifications to you in a single, standardized manner. But, as far as I know, it's not a framework that's designed to act upon these notifications or alter the notifications based on what the user is currently doing.

The Growl framework is probably a good foundation on which to build the functionality that I'm talking about, precisely because it standardizes notifications from applications. It just doesn't have a feedback mechanism, which is the second half needed for the functionality that I want. I don't even know if Growl is designed to funnel notifications to another application -- it seems to be something that works in the opposite direction: notifications are funneled to Growl and that's where they stop.

Anyone have any ideas or suggestions?


Technological Supernova   Rants   Older   Newer   Post a Comment