Time passes, films get watched

For 1.5, I’m adding a feature to One to Watch which allows you to flag a film as Watched. It’s a classic example of a feature where the technical implementation is significantly simpler than how to present the feature in the app’s interface.

Keeping watched and unwatched films in the same list is problematic: watched films might start to crowd out unwatched ones. Until now, the only way to avoid that problem was to delete films you’ve seen. However, it’s useful to know which films you’ve watched. For example, when asked to recommend a film, it’s good to be able to review the ones you’ve seen rather than trying to pull them from memory.

The point of the feature is to be able to differentiate these films in the interface, rather than the distinction only existing in your head, outside the application. In particular, while I may know what films I’ve seen, my list is just as often viewed by others when we’re trying to decide what to watch. So there’s got to be a way to separate watched and unwatched films. The difficulty came in how to present the browsing interface for films, now you’re able to mark films as watched.

My first implementation was a simple filter for the main list of saved films. I wasn’t sure this felt right appropriate given the use case. My testers agreed. Conceptually, marking a film as watched feels like you’re putting it to one side — as when you move a book from nightstand to bookshelf once you’ve read it. A filter-based interface doesn’t match this model.

When hitting a dead end, it’s often useful to look at how others have solved similar problems. Looking around iOS for inspiration, Jason pointed me towards the Reminders application. Here, completed tasks are moved into a “Completed” list, which is visually separate from a user’s main list of tasks. Internally it’s probably just a “completed” flag on a task, but from a user’s point of view a checked off item should disappear somewhere else rather than be maintained in the original list. This felt like a good fit for One to Watch so it’s the model I’ve chosen to follow.

One interesting fallout from the change was that the initial filtering implementation had entries for Unwatched (the default), Watched and All. The new version doesn’t have an equivalent of All. On first reflection, this might seem a loss, but really, All stemmed from the filtering mindset rather than user-need: if you’re viewing the problem as a filtering one, All feels mandatory. The interface really feels much better without.

The original filter-based model was the easiest to implement, and it’s taken significantly more time to write the version which takes inspiration from Reminders. Much of the work has been in taking the view which lists films and removing the assumptions it made about there only ever being one version of it loaded by the application. However, I now have a basic version working which I’ve sent to testers. If the general workflow is validated by my testers I’ll start polishing the UI and squashing the final bugs.

It’s a great feature, and I’m looking forward to being able to release it.