Shawn Hargreaves Blog
My second example of a problem where "just do the right thing" turns out to be surprisingly complicated is a feature that does not exist, but ought to.
Being a luddite who has not yet cottoned on to this newfangled MP3 player fad, I like to listen to CDs in my car. My daily commute takes around half an hour. The average CD is longer than that, but luckily my car has a feature that remembers and automatically resumes from the previous play position. Without this I would get stuck listening to the first half of a CD over and over again!
The problem is that when I start the car, music blares out in mid phrase, which is not aesthetically pleasing. When near the start of a track, I would prefer it to rewind and start over. If near the end, it would be better to skip ahead to the next track, rather than irritate me by jumping into the last seconds of a fadeout.
To work well, such a system should take the length of the track into account. When playing three minute pop songs, I pretty much always want to rewind or skip ahead, and never resume in mid song. But I also enjoy classical symphonies and sprawling prog rock epics, and don't want to get stuck restarting the same 20 minute jam every time I get in the car. The longer a track is, the more willing the system should be to resume in the middle of it.
Another interesting factor is how long the car has been idle:
This would not require any visible user interface, and I suspect many users would never even notice it, but a smart implementation could vastly reduce how often I have to manually operate the forward or rewind buttons. Why should I have to bother pressing them, when my wishes are so predictable and easily automated?
Such a system better be disablable, because it would render the CD player useless for one of the primary markets of people still using actual discs - audiobook listeners. Those of us listening to audiobooks in the car want the tracks to start out exactly where we left off.
And FWIW, all of the ipods I had prior to the ipod touch I currently have had a "feature" like this, and it was incredibly annoying, but it took some specific circumstances to bring it about. If you were in the towards the end of a track, say an 8 hour one, and you stopped listening for long enough that the power was actually shut off rather than just suspended, when it came back on, if you were far enough along in the track it would do exactly that, start at the beginning of the next track. But I suspect it was percentage based and not absolute time based because sometimes it would literally be 20 or 30 minutes of reading time that was skipped. Knowing this was going to happen I could work around it by either just ensuring that it wasn't off long enough to actually shut off, or merely mentally noting my position so I could get back in the ballpark quickly. But it was annoying. Adding such a feature as a general rule would quickly result in a product being returned or replaced.
C'mon, the Zune is programmable, right? Can't you easily whip up this kind of system tailored to your every whim? :)
Sometimes I dream about similar systems that have all kinds of fancy logic to do just what I want, when I want, how I want. But in reality, the only way it ever happens is if I build it myself. For example, I created an audioconferencing app that automatically muted the mic for the brief moment I hit a shift paddle on my steering wheel, using DirectInput to listen for the event, and only doing it when I wasn't already in the middle of a talkburst. It sure can be a lot of work, though...
Manufacturers targeting the masses seem to have enough trouble just trying to cover the basics like providing a humane interface for turning the device on and off.
> But I suspect it was percentage based and not absolute time based because sometimes it would literally be 20 or 30 minutes of reading time that was skipped.
That just sounds like a crappy implementation, that failed to take into account the length of the track.
Of course automatic smarts are only useful if they really are smart and really do the right thing almost all the time - it's just annoying if something tries to be smart but actually consistently gets it wrong :-)
Well, yeah, but in this case the implementation I want, never, ever do anything except pick up exactly where you left off, doesn't require much smarts at all, and in fact any attempt to make it "smarter" will almost certainly be broken in some cases.
> but in this case the implementation I want, never, ever do anything except pick up exactly where you left off
Really? I'd rather my audiobook player rewind five or ten seconds, so I can pick up the context rather than starting in mid-word.
Even better would be if it could speech recognize and parse semantics well enough to rewind to the start of the previous paragraph!
Well, yeah, if I felt I could trust that - instead, when I'm listening to an audiobook I'm typically sitting in my garage after driving home, or in the parking lot at the office, waiting to pause at the end of a sentence. So the number of times I'd have left it in mid-word or even mid-sentence are basically approaching zero. But as a general rule, backng up some small amount of time (even 1 minute would be too much because with my commute at 20 minutes that cuts down my listening time by 5%), would be ok, if non-optimal. Optimal would be, 'start it where I left it off'. But skipping forward would never, ever be desired. And it sounds like with you skipping forward is a desired behavior at least some of the time. So the best case is give you what you want, and let me turn it off.
Of course, you should be using MP3 CDs and having many, many hours of music on them, where this is a non-issue, but that's a different story altogether, heh.
It is a very hard problem to solve, and please everyone. Instead of people simply operating the players, they would also have to learn about this system. Some might consider it a "flaw".
I think that for each advanced user who wants this feature there are thousands who don't care and just want the damn thing to play.
When I listen to audiobooks on my ipod, it backs up 10 seconds or so to give me context to what i was listening to just before i turned the car off. This works surprisingly well most of the time. With music, I find it incredibly easy to skip to the next track or hit "back" to go back to the beginning of the song in cases that I wanted that behavior. In your case, I would want to be able to get the "dumb" behavior in some cases. How would I invoke that? The back button? It isn't particularly intuitive, and I can imagine a lot of people being frustrated with it. I would probably just do the dumb but obvious thing and then allow for simple controls to do the thing I wanted. In your case, I would be doing the complex thing and then expecting complex controls to get the simple default.