NoTube blog

Connecting Broadcast TV and the Web using a resolver

Posted in Code by libbymiller on August 26, 2010

This blogpost describes a service we have created in NoTube in collaboration with Project Baird: a resolver that goes from broadcast TV to a webpage describing what’s on. This post explains how we used the BBC RDF /programmes data and MythTV to create this service, and why we need it.

Background

NoTube is about TV and the Web, and one aspect of this is connecting broadcast TV and the Web. This connection need not (and, we often argue, should not) manifest itself on the TV screen. It’s much more useful in most cases for audiences to have access to the Web on a second screen, such as a laptop, phone or tablet, because this avoids problems of on-screen clutter, co-watcher irritation, and laborious text entry.

For this second screen to be able to do interesting things such as provide more information about the programme, provide interactive applications, or interesting EPG navigation, it needs to be able to receive information about what is happening on the TV device.

For example, if the second screen is running a voting application for ‘Kittens do the cutest things’, where you can vote for your favourite clip, then the second screen needs to know what programme is playing, and which clip is showing.

Or suppose you want to know who one of the actors is on a programme: then you need at least the title (and perhaps the episode and series number as well) in order to start your search.

Or perhaps you want to recommend the programme or see if any of your friends have watched it: so you need to both know its title, series, episode number, and ideally also a link to something that will tell them more about it.

For interesting second screen applications to work, we need ways to get at the information about what’s playing (part of a TV API), but we also need to be able to uniquely identify programmes, including programmes as they are broadcast.

Boxee has done some very interesting things in this area, as it allows you to connect a Twitter account to your Boxee account, and have it automatically tweet about what you are watching. When you do so, it provides a link to the programme you watched, and it tries to resolve it to something useful, for example an IMDB link or a BBC iPlayer link.

In one part of NoTube we are currently thinking about broadcast TV in particular, and how we might provide useful URLs for programmes as they are broadcast, such that they can function both as unique identifiers for programmes and also as resolvable sources of more information. Resolving is particularly important in the social web TV usecase, because when you share a link you want it both to uniquely identify the thing you want to talk about (so people can share it), and also provide more information about it (so people can find out more about it).

The BBC has URLs like these, created by the /programmes project, which aims to provide a unique URL for every BBC programme broadcast. Resolving one of these /programmes URLs gets you data about the programme available in various formats (html, RDF, YAML, json) such as when it’s on next, whether it’s available on iPlayer, a description of it, whether it was part of a series or not, what version it was (signed, shortened), and sometimes who was in it, what role they played, who the director and writer were, and so on.

However, in the world of broadcast (DVB is the case considered), these URLs are not broadcast along with the content, so there’s nothing explicitly connecting the URL and the programme being broadcast. There are other pieces of information though, and we can use these to determine the /programmes URL using a resolver.

Hopefully it’s clear why we want these URLs and why they are useful. Next I’ll go into some technical details about what we did to create the resolver and why we took this approach.


Screenshot of an iPad second screen demo using the resolver service to get more information about a broadcast

Screenshot of an iPad second screen demo using the resolver service to get more information about a broadcast by Mo McRoberts

Crids, dvb URIs, TV Anytime, specs and resolvable URIs

I am far, far, from expert about DVB, but here are a few things I’ve found out, with the help of people who are much more expert and / or have much more patience with specifications:

  • Crids are URIs, which can be used to identify various things, including series, and versions of programmes, which are the ones we are interested in. They are sent along with the broadcast stream. They consist of an authority part identifying the organisation that assigned the identifier (e.g. fp.bbc.co.uk), and an opaque string.
  • Dvb URIs also identify various things, from a single network or broadcast platform, all the way down to a single resource carried as part of a carousel for interactive programming. The two we are mainly interested in, however, are service and event ids, which together with datetime can enable us to identify broadcast versions of programmes. The ones we are interested in are a combination of identifiers for various aspects of the service, an event id and a datetime
  • Crids are resolvable in the TV Anytime (TVA) world, but this is principally about finding alternative sources for the same item of content and for delivering TVA metadata. The biggest limitation is that to resolve a crid, a special resolver service must be available, and in the UK at least, no broadcaster provides a publicly-accessible resolver (although they may be used internally as part of production workflows). Also, crids are not used universally – many broadcasters do not provide crids at all, or only do so for some programmes.
  • Dvb URIs are resolvable, but only in the context of a dvb receiver which has access to the relevant streams, and only for the content that the URIs refer to – there isn’t a standard way to relate a dvb event to a web page describing that event, for example. In other words, it is resolvable in the same way that an ftp: or nntp: URL typically is.
  • The TVAnytime specification ETSI TS 102 822 says how they might be resolved to each other or to external urls via the DNS system, but it appears that neither of these commonly happen in the UK.

Here’s an example of a crid (for Diagnosis Murder):

crid://fp.bbc.co.uk/4j5cxm

and the associated dvb URI for that broadcast event is:

dvb://233a.1041.10bf;a551~20100728T140000Z--PT00H45M00S

So what that means is:

  • Enough information is being sent with every broadcast to uniquely identify each channel
  • Enough information is being sent with every broadcast to uniquely identify each programme version
  • There is no obvious way of getting from either of these pieces of information to resolvable identifiers for either channels or programme versions

Collaboration with Project Baird: TVDNS and RadioDNS

Project Baird have a proposal to extend RadioDNS to TV. RadioDNS is a way to use the DNS system to resolve some of the pieces of metadata that are already sent over FM and DAB to a URL where more information can be found about the service. For example, for BBC Radio 4, the BBC could have a DNS entry for 09250.c204.ce1.fm.radiodns.org that lets you get to the Radio 4 homepage, or that provides you with the information to go to a different page depending on what’s playing. This means that smart radios can show (for example) pictures or more information about what’s playing by using DNS and http, without anything changing in the way that programmes are broadcast over the air. If you want to know more I would suggest taking a look at the excellent video on the RadioDNS homepage.

TVDNS would essentially do the same thing but for information sent over DVB for TV. There are some slight complications because of local variations, but effectively using the TVDNS technique we can uniquely identify a channel based on network_id, service_id, transport_stream_id and original_network_id, and so we then have various options for finding the /programme resolvable URL. We can use a combination of pieces of information:

  • A hostname (included in the request to the resolver) which includes information to identify the individual channel
  • Any number of URIs, including crids and DVB event URIs
  • Information (from the over-the-air EPG) about the start time and duration of the programme
  • Any time within the programme (including, for example, the current time to indicate “whatever is airing right now”)

A client can send as little or as much information as it has. At a minimum, it might just be the hostname (identifying the channel, and used to locate the resolver in the first place) and a time, so this system can work even when EPG data is incomplete or limited to time period not covering the programme being queried for.

Because the BBC already publishes URLs in various formats for all programmes and versions of programmes, plus a schedule that links to programmes and from those to versions, we can do this resolution, and so we can create a new link for a programme between its crid, its programme url and its dvb uri.

Why bother with the TVDNS version of the channel when we can already use the dvb URI?

  • Because the TVDNS form is used to perform service location and find the appropriate resolver for the channel
  • Because RadioDNS/TVDNS can be used for other broadcast systems beyond DVB, many of which don’t have their own URI schemes (or if they do, they don’t encode the same kind of service information as DVB URIs, or simply don’t allow identification of individual events)

Basically the two techniques use the same information. At the level of the programme resolver it makes next to no difference, it’s just that in some cases the information is more readily available in one format than another. TVDNS addresses a prior step: allows a broadcaster to advertise it’s own authoritative services relating to a channel (although this doesn’t preclude others being used). Mo McRoberts has implemented this prior step within Project Baird, and you can see it working here.

Technology

This implementation has seven parts

  • Daily schedule crawler
  • MythTV + patch
  • Uploader
  • Matcher
  • Query and post servlet with Jena backend store
  • SameAs service
  • Query interface

The code is here.

How it works

Daily schedule crawler

A cron job (scheduled task) harvests schedule data from the BBC site early every morning for the current day. From that it can get all the programmes for that day, and from those, the version that was actually played. We delete everything from the previous day to keep queries fast for the usecase we have. Yves Raimond runs a full RDF version of /programmes if you are interested in a fuller dataset.

MythTV + patch

A slightly patched version of MythTV (currently 0.23) is on a box connected to a DVB-T card. The patch is because by default MythTV doesn’t store the event id, although it does store all the other pieces of information we need to construct the dvb uri or the channel id and it also stores the crid.

We could have (and will probably move to) Kamaelia rather than MythTV; it’s just that we had MythTV in use already.

Uploader

A simple Ruby script queries MythTV’s MySQL database and creates a list of dvb URIs, crids, schedule datetimes, channel callsigns, and titles, like this:

crid://fp.bbc.co.uk/1fh68i|dvb://233a.1041.1041;abb5~20100727T190000Z--PT01H00M00S|2010-07-27T20:00:00+01:00|2010-07-27T21:00:00+01:00|BBC ONE|Holby City

The callsigns and titles are not needed but are useful for cross checking.

This list is uploaded to the matcher.

Matcher

The matcher takes the channel and start time and identifies the programme from the existing crawled schedule, using a series of SPARQL queries, e.g.

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX po: <http://purl.org/ontology/po/>
PREFIX ev: <http://purl.org/NET/c4dm/event.owl#>
PREFIX tl: <http://purl.org/NET/c4dm/timeline.owl#>
select distinct ?pid ?prog ?title where {
?p po:schedule_date "2010-07-28"^^xsd:date .
?p po:broadcast_on ?service .
?service po:parent_service .
?p ev:time ?t .
?t tl:start ?s .
?t tl:end ?e .
?p po:broadcast_of ?pid .
?prog po:version ?pid .
?prog po:short_synopsis ?title .
FILTER( (?s = "2010-07-28T22:00+01:00"^^xsd:dateTime ) )
}

Which basically says “get me the details for the version of the programme starting at a particular time on a particular channel”. Note that for some channels with regional variations, we have to look for the parent channel rather than the channel itself. The start times used come from MythTV’s database and match up to the schedule that comes from the BBC site. In both cases they are not the actual transmission times but the scheduled times.

The matcher can then find a URI for the version of the programme and create ‘sameAs’ links between the dvb uri, the programmes url and the crid. Because the backend store only stores information about the current day, we also upload the sameas links to a separate store – in this case an instance of http://sameas.org.

Query and post servlet with Jena backend store

This servlet is a very simple interface to a Jena native Java store (TDB), accepting GET requests and interpreting them as SPARQL queries, and POST requests accepting them as new data. This is the simplest way of interfacing with a Jena TDB from JRuby which I used because it was quick to prototype. The one slightly fancier thing is that when POSTing data you can supply a query to go with it on the data you just put in – which is useful for getting the version data when you post a programme RDF URL.

SameAs service

This is very kindly provided by Ian Millard and Hugh Glaser at Southampton University and consists of a NoTube-specific RDF store with a ‘sameas’ interface. The reason to use it is that the main store only has data for the current day to keep queries fast and maintenance easy.

Query interface

The web interface is designed to be accessed by various tools rather than with a browser. The simplest way is by using Curl on the commandline.

It provides as many options for resolution as possible, and we tried to stay as close to the Project Baird Ontology resolution specification as possible.

You can give it:

  • A crid, a dvb uri, or start datetime + host, or a transmission time + host, or Eventid + Serviceid and it will resolve (301) to /programmes url
  • A programmes url or pips uri and it’ll give you the crid and dvb uri
  • You can also tell it explicitly not to redirect

e.g.

curl -H "Host: 3098.1b00.1041.233a.dvb.tvdns.net" "http://services.notu.be/resolve?start=2010-07-05T10:45:00Z"

tells you what’s on on Radio4 at 10:45 on 5th July 2010 (as long as it is the 5th of July – you need to change that example to the current day to use it now).

Limitations:

  • Only today’s data is available
  • Regional variations are for the West only
  • BBC-related channels only
  • Resolves to programmes versions not episodes

The code is available here.

How it fits with TVDNS

Mo’s TVDNS example service shows how it fits. The client that wants to find out more about a channel (in this case a web service) resolves a given Host (like 09250.c204.ce1.fm.radiodns.org) using the DNS system. The SRV and TXT DNS records for that Host tell the client where to look to resolve that channel (more info here, and here).

The client then connects to that service (which would be a service like the programmes resolver described above) and returns the results – a unique resolvable URI for the programme.

RadioDNS (and TVDNS) is primarily aimed at channel resolution (plus, sometimes, transmission time, so you can get relevant content at the time); Project Baird goes further, specifing additional services, such as the resolver, which go beyond the three (RadioEPG, RadioTAG, RadioVIS) which the RadioDNS project has specified.

Working with the resolver

Without using DNS at all you can also use the resolver directly – as an example, see this very simple ‘nowplaying’ implementation for MythTV. Mo has an implementation of a schedule using the DNS aspect

Conclusions and thanks

I think that this is a small but important step for broadcast TV. It’s still very common to see the assumption that the Web will somehow be on the TV, controlled by a traditional remote control, but this kind of approach as part of a TV API takes a step towards much more interesting applications.

I’d like to thank Mo McRoberts for comments on an earlier draft of this post, and I recommend that if you are interested in this area that you get involved with Project Baird.

Thanks also to Michael Sparks, who supplied answers to some of the trickier questions, and Matt Hammond for helping me debug the service, and to Damian Steer for advice on using Jena with JRuby.

Strophe and Greasemonkey

Posted in Code by libbymiller on August 6, 2010

This week I’ve been looking at using Strophe and Greasemonkey to try to make an evocative but simple two-screen prototype for web-based on demand video. It was a bit fiddly in parts but it’s very useful once you get it going. Danbri has been building prototypes like these for some time, but it’s taken me this long to get round to having my own version working because you need your own XMPP server (that’s not strictly true, but more on that later). R&D Prototyping team have also recently been creating demonstrations with a similar setup. This is a technical blog post which should help you create a similar setup if you are interested in this technique.

Why are we doing this?

In the NoTube social web area we are experimenting with using XMPP for communication between devices, primarily because we want to look at social APIs for TV – and XMPP provides a lot of the infrastructure we need there (such as friends, groups, messaging). First we need some basic control of video, so before we start putting friends into the mixture we are implementing some of the usual remote commands such as play / pause, and also ‘nowp’ (now playing).

We’ve done this with an XMPP python bot talking to MythTV and an iPhone as a controller, but it was slow work to build the iPhone interface, and the client code isn’t usable on other non-Apple devices.

Danbri introduced me to Strophe, which is a Javascript API for XMPP, which uses BOSH or similar to interface with an XMPP server (such as eJabberd or OpenFire). The upshot of this is that you can control one webpage from another using XMPP, using no server-side Web code. This is great for quick prototyping, and for demonstrating control of web-based video. What’s even cooler for demos like these is to use Greasemonkey on the player side, in which case you can show demonstrations based on real video sites, as Greasemonkey gives you control over the behaviour and appearance of the video site (only on a machine with the script installed – see Greasemonkey – installing scripts – but that’s fine for demos).

Getting it working

The basic process is this:

  • Create a domain (because of javascript’s access control policy)
  • Install jabber server
  • Create two accounts and make them friends
  • Put an http rewrite file in the right place
  • Create ‘near’ and ‘far’ webpages to represent the remote and player
  • Create a Greasemonkey script and iFrame for the web based video player

A word of warning: this is fiddly. Things are changing in the APIs in browsers, in particular, cross-domain iframe loopholes are being closed and browsers are using the postmessage system instead, which is fine, as long we you realise what’s going on (and can control the iframe content, which is why we need Greasemonkey).

Here’s each step in a bit more detail.

Fix domains

By far the least confusing way of getting this working is to create a new domain, e.g. jabber.yourdomain.com. You’ll need to fix the DNS with your provider and then edit apache virtual hosts file (for me on ubuntu it’s /etc/apache2/sites-enabled/000-default), for example:

<VirtualHost *:80>
ServerName jabber.notu.be
DocumentRoot /var/www/jabber
<IfModule mod_proxy.c>
ProxyPreserveHost On
</IfModule>
<Directory /var/www/jabber>
DirectoryIndex index.html
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

and then restart apache

sudo /etc/init.d/apache2 restart

Install jabber server

In Ubuntu this is as straightforward as ‘sudo apt-get install ejabberd‘. OpenFire is also apparently easy.

Configure jabber server

pico /etc/ejabberd/ejabberd.cfg (yeah I use pico! got a problem? :-) )

edit this:

%% Hostname
{hosts, ["jabber.yourhostname.com"]}.

You need quite a recent version of ejabberd (later than 2.0), and then it includes BOSH.

Create two accounts and make them friends

On the commandline:

ejabberdctl register near jabber.yourhostname.com password
ejabberdctl register far jabber.yourhostname.com password
ejabberdctl add-rosteritem far jabber.notu.be near jabber.notu.be near buttons both
ejabberdctl add-rosteritem near jabber.notu.be far jabber.notu.be far buttons both

Put an http rewrite file in the right place

The simplest thing to do is this:

Create a new directory in the correct domain

For example

cd /var/www
mkdir jabber
cd jabber

The directory can be called anything, but it needs to match your apache vhost config above.

Create an .htaccess file in that directory

pico .htaccess

RewriteEngine On
RewriteBase /var/www/jabber
RewriteRule http-bind http://localhost:5280/http-bind/ [P]
RewriteRule http-bind/ http://localhost:5280/http-bind/ [P]
RewriteRule http-poll http://localhost:5280/http-poll/ [P]
RewriteRule http-poll/ http://localhost:5280/http-poll/ [P]
RewriteRule admin/ http://localhost:5280/admin/ [P]

This means that the http interface to ejabberd is in the correct domain. If you put your ‘near’ and ‘far’ files in this directory or a subdirectory, that should work.

You mght need to enable rewrite and proxy modules in apache.

Create ‘near’ and ‘far’ webpages to represent the remote and player

You can see examples here: near, far.

Each has an on_message function and also sends messages. It’s all pretty straightforward. Info/query (iq messages rather than chat messages) are what we should be using to pass messages and they are a little bit more fiddly, but I’ve put some examples here: near, far. You’ll need strophe.js in the same directory.

Near sends load and play messages, while far sends nowp (now playing).

At this stage you should be able to see these two pages communicating. Load ‘near’ into Safari or similar and far into Firefox (3). Click play or load in ‘near’ and you should see a response in ‘far’.

Create a Greasemonkey script and iframe for the web based video player

We want the ‘far’ strophe page to control a player from a different site. For this you can put the player site as an iframe into the ‘far’ page.

Diagram showing the components and how they communicate

iFrames are confusing and using Greasemonkey with iFrames is even more so. In modern browsers, iFrame-based hacks for communicating between cross-site iFrames are not allowed, so you need to use HTML5′s postMessage instead. This is much easier.

For the iFrame player Greasemonkey script to post to the enclosing ‘far’ page do this:

unsafeWindow.parent.postMessage(message, "http://jabber.yoursite.com/");

where message is a string.

The ‘far’ page checks for messages like this:
function receiveMessage(event){
alert(event.data);
}

The far page can also send messages like this:

var win = document.getElementById("frameid").contentWindow;
win.postMessage("pause", "http://playersite.com/");

and the Greasemonkey script uses receiveMessage as before.

The ‘unsafeWindow‘ is a way to get at the real window of the iFrame (to bypass Greasemonkey restrictions). Using this you can also call local javascript methods:

unsafeWindow.play();

Using near, far and test_greasemonkey.user.js, with test.html on a different server (all in this directory), you should be able to send messages from near that affect test.html. Then all you need to do is adapt it to the site you are interested in controlling.

CORS (Cross Origin Resource Sharing)

In suported browsers, CORS allows you to make cross-domain ajax calls using javascript. This means that you should be able to host ejabberd on a different domain to the files that use it. In general CORS is easy to implement, but I haven’t tried it in this application yet.

Links

The future will be watching not reading

Posted in Uncategorized by vickybuser on July 8, 2010

Following our EU project review in May, the most recent NoTube project meeting last month was a good time to reflect a little on what we’ve done so far and what we should do next, especially given the speed with which TV and the Web are converging outside the project.

Prior to the formal meeting, a group of us met informally in the inspiring surroundings of Istanbul for some interesting conversations about our predictions for the future of TV and challenges and ideas for the rest of the NoTube project.

View of Istanbul

View from the Garden Cafe by Libby

We talked about the seamless continuity of devices in future, made possible with new devices such as pico projectors – tiny portable projectors – that will “liberate the display from the device” and enable TV ‘on a big screen’ to be accessed anywhere. The future integration of embedded projectors in connected devices such as smartphones and tablet computers will enable any suitable surface to be turned into a second screen which groups of people can watch together.

Accelerated by the success of the iPad and its suitability for use in the home for leisure and entertainment, as demonstrated recently by the various dual screen experiences designed for the World Cup such as ITV Live , we expect second, or third, screens will continue to enhance the TV experience by pushing additional content to users and providing complimentary activities. This will leave the TV screen itself uncluttered. As MIT researcher Marie-Jose Montpetit said recently: “You’re going to interact with the content on your TV, but with another device.” However, with increased adoption of Web-connected TVs such as GoogleTV, we also wait to see whether the second screen will eventually be replaced by all-encompassing single-screen solutions.

We expect that, as well as there being lots more of it, video content will become more interactive and interfaces more playful, with games becoming the primary way that people will interact with devices. For example, MTV recently turned TV watching into a gaming experience by inviting viewers to participate in competitive chat during episodes of the reality show The Hills. As well as being more engaging, such interactive media is presumably harder to copy, so that “downloading a pirate copy later just won’t be the same as participating in the show as it goes out”.

Brainstorming!

Brainstorming!

Should I believe it?

One particularly interesting prediction is that the future will be ‘watching, not reading’; that with ubiquitous video content people will use video to explain things, instead of text. Following on from the central idea that ‘conversation is king’, this led to a discussion about danbri’s ideas for ‘smart’ conversations around video content that would instigate high-quality debate and encourage good communities to propagate alternative views by checking facts and pointing to deep-links to specific parts of video content as evidence. Sites such as Channel 4’s Factcheck with Cathy Newman which “goes behind the spin to dig out the truth and separate political fact from fiction” and Debatepedia, “the wikipedia of pros and cons to clarify public debates and improve decision-making globally”, are already leading the way here. Further, Debategraph, has been experimenting with various news organisations to create debate ‘maps’ – visualisations of domains of knowledge from multiple perspectives – such as The Independent’s map of the Crisis in Gaza, and CNN interviewer Christiane Amanpour’s agenda for a new global conversation.

We’ve also noticed the trend for arguing via YouTube comments (for example the journalist Peter Hadfield writes in The Guardian about how his YouTube channel is converting climate change sceptics), and that the ‘like’ button in Facebook can sometimes be problematic. For example, Facebook users who wanted to curb the rumours of a pub ban on England football shirts in May had no way of indicating that they disagreed with the statements being circulated. Similarly, Martin Belam notes how inappropriate the Facebook ‘like’ button is for certain types of news stories. Although Facebook also have the ‘recommend’ button, as danbri pointed out, the issue is quite a subtle one in the modelling; sometimes you’re talking about the thing the page is about (liking a movie) sometimes about the document but not the thing the document is about (recommending an article about some awful thing). The Facebook example suggests to us that there is clearly more work to be done around carefully structuring conversations.

So, one focus of work over the next year in NoTube is likely to be around useful, rich, link-centred data to specific points in a video, for example around news stories, political debates, or dramas (for discussing plot lines and characters). One technical challenge here will be addressing the problem of how the metadata stays attached to the specific piece of video content.

Given our prediction for the increased use of social media in TV, and that Twitter and other micro-blogging tools such as identi.ca are already often used as a mechanism for posing ideas and engaging and responding to them, we also expect to see social micro-blogging featuring in future NoTube demos. And with Twitter Annotations coming soon, enabling the addition of metadata about a tweet or the user who posted it, it should be easier to track threaded discussions around topics.

I, for one, left the discussion feeling heartened to think that the convergence of TV and the Web could evolve in such a way that it might improve standards of informed debate and truth-seeking for everyone.

How can we best measure how good people think our recommendations are?

Posted in Thinking Out Loud by vickybuser on May 13, 2010

Recently a friend was describing how her friend had persuaded her to watch a DVD that she thought she’d absolutely hate, but ended up loving. The DVD was the 2004 BBC TV series ‘Blackpool’ (described as “part musical, part thriller, part drama”) - and my friend was initially sceptical because, as a general rule, she really doesn’t like musicals. She is a big fan however of two of the main actors, David Morrissey and David Tennant, which slightly warmed her to the idea, but it was really the insistence of her friend that made her sit down and watch it – and thoroughly enjoy it!

I think this story highlights the problem with TV programme recommendations based solely on genre: given my friend’s dislike of the ‘musicals’ genre, she would never have been recommended the programme in the first place by a genre-based recommendation system, or watched it based on genre information alone.

With NoTube TV recommendations, it has always been our intention to generate personalised recommendations based on preferences that include genres, but are not limited to them. By using linked data techniques, preferences for specific programmes can theoretically be based on any metadata associated with a programme; such as directors, writers, actors, presenters, contributors, locations, and other people (both friends and/or experts) who are watching, or have watched, the programme. As danbri has suggested, we could also make quirky connections such as “you were recommended this programme because the star, Cary Grant, used to live in your street”.

Using this approach, my friend might have been recommended ‘Blackpool’ based on the fact that two of her favourite actors are in it, and that her friend (whose taste she admires) has watched it. We’ve always believed in the importance of explaining to users why a programme has been recommended to them, but would the evidence have been strong enough to persuade my friend to try watching it? I think this issue of persuasion is important: after all, one of the things we want from a good recommendation system is for it to help us broaden our horizons and discover new, enjoyable things that we would probably not have discovered on our own.

picture credit: http://www.flickr.com/photos/adambowie/2924076825/

If my friend hadn’t been persuaded to try the programme, she would never have discovered that she really loved it. And she would never have found out that it was actually a great recommendation for her, which could have led to other new and interesting programme suggestions.

This leads to the challenge of how you get people to subjectively evaluate the quality of the programme recommendations suggested to them by a recommendation system when:

  • Firstly, they need to be persuaded to try out some new things, which might at first seem rather too obscure or too far removed from their comfort zone.
  • They need to have the motivation to provide the system with some feedback, and the patience and commitment to give the system time to make adjustments.
  • Ideally, they also need to give reflective thought to the question of whether a programme recommendation really was ‘relevant’ or ‘useful’ – how would you really know unless you tried watching it?

In all, this requires a substantial amount of effort and dedication on behalf of the user – it’s not quite the same thing as asking people if a shopping cart transaction was confusing or not.

Further, evidence suggests that TV viewing is still commonly a social activity in which negotiation and compromise are inevitably part of the decision-making process of the group.  Group recommendations therefore have to take into account the preferences of multiple users, making these sorts of evaluations even more challenging.

In the next phase of the NoTube project we want to test the quality of our recommendations on users. To get really useful feedback we will need to tackle these various issues along the way.

Designing a touch-screen TV remote control on a smartphone

Posted in Thinking Out Loud by vickybuser on May 5, 2010

Our first demo for “Internet TV in the Social Web” includes an iPhone app that works as both a TV remote control and a ‘companion device’ for viewing programme recommendations and programme guides, managing programme playlists, and reading background information about a programme from the Web.

From a user experience perspective, there are two particularly interesting aspects to this:

  1. Usability issues relating to using a touch-screen remote for controlling a TV
  2. The idea that merging the Web with TV doesn’t have to mean showing the Web on a TV screen: instead, the Web can be integrated into the viewing experience using a ‘second screen’ companion device, leaving the TV screen free of clutter.

The second issue is worthy of a blog post of its own. In the meantime, we’re starting to explore the first issue in more detail.

Our iPhone app includes an interface for a basic TV remote that allows the user to select and browse their programme guide (EPG) on the TV screen, and to select and play programmes. Whilst anecdotal evidence suggests that people want to use their smartphones as TV remotes, the touch-screen interface poses a major design challenge. With traditional remotes we’ve all become used to changing channels or adjusting the volume without necessarily taking our eyes off the TV screen – by feeling for the desired buttons under our fingers. However, without these physical buttons, the touch-screen requires us to take our eyes off the TV screen and pay visual attention to the remote.

When we mocked-up the interfaces for our prototypes, we played around with various designs for the remote screen. However, none of these deviated much from standard remote designs, and we didn’t have time to try out anything new or to do any rigorous analysis of the usability effects of the screen layout and positioning of the controls.

We also wondered whether, and how, various input and output methods could be used to improve the user experience. These include:

  • Gesture control: for example, the Boxee Remote iPhone app offers a ‘gesture’ mode whereby users drag the Boxee logo around to the TV screen, and tap the logo to perform an action (select/play/pause). Similarly, Apple added swipe and tap finger gesture control functionality to its Remote app to control what’s seen on Apple TV. Via its Control’ interface, users can tap to select, play and pause, and flick left or right, or drag and hold, to rewind or fast-forward.
  • Sound effects, such as clicks or voiceover
  • Voice commands
  • ‘Haptics’ (tactile feedback such as vibration)
  • Accelerometer control (tilts and shakes)

Finally, could there be certain situations in which specific combinations of these ‘modes’ could be optimal, depending on the user’s individual preferences and needs? If so, how much would users want to control these modes?

We thought that this was an interesting area of research, and it also complements the work our colleagues in BBC Research and Development are doing in investigating how multi-touch software could support television viewing in the future.

The challenge of proposing some solutions to this design issue has been taken up by the some of the students attending Lora Aroyo’s HCI course at VU University Amsterdam. The students are currently mid-way through their assignment, and we’re really looking forward to seeing what they come up with.

NoTube to use BMF and TV-Anytime – Collaboration with EBU and egta for new metadata scheme for ads

Posted in Uncategorized by pjotrek078 on May 4, 2010

One of the tricky things in NoTube is that there are many different metadata formats that are both provided and consumed by the various services that will make up the NoTube system. To make sure that the metadata used is understood correctly by every service, the alignment and conversion of metadata is necessary. Regarding the metadata which concerns TV content, the WP2 team has achieved three major steps in the past months. First, we have tried to gather all the requirements of the three NoTube Use Cases. This has been achieved working together closely with the use case partners. Then, we took a comprehensive look around to see which existing metadata models appear as potential candidates. Last but not least, we checked the most promising models against the use case requirements to identify the most suitable candidates.

For the metadata that is provided together with TV content by content providers such as RAI, we decided to use the Broadcast Metadata Exchange Format (BMF) as the input interface format to the Service Provider side. BMF is a powerful metadata model which covers all metadata in the life-cycle of a TV production – from the initial planning and the pre-production all the way to distribution and archiving. It is intended to be used as an exchange model by systems that are interchanging metadata in different steps of the TV production process to increase the interoperability between the many systems involved in this process. Such a uniform interface which is able to handle various broadcast metadata formats will make NoTube future-proof and enable other broadcasters to connect to the system.

On the Home Ambient side, we will be using TV-Anytime which has been identified to meet the requirements of the NoTube use cases. TV-Anytime is an internationally agreed and accepted metadata schema in the TV consumer domain already widely used in consumer devices like PVRs etc. After evaluating the requirements for the Service Provider side, we figured that TV-Anytime will suffice for these needs as well.

However, a bit more difficult, for advertisement metadata there is currently no common format around used for TV ads. Thanks to IRT’s involvement in the European Broadcasting Union (EBU), we learned about the collaboration between EBU and egta, the trade association of television and radio sales houses. Together, they are working out a unified metadata scheme for ads which we will be using for adaptive advertising in NoTube. We already discussed the preliminary schema with the EBU and provided feedback from NoTube’s ads experts back to EBU and egta.

To allow an exchange of information and thus the interoperability between the Service Provider and the Home Ambient side, a metadata transformation is required. The internal transformations as well as the transformation of external sources into the NoTube metadata formats will be tackled in WP2 in the coming months.

Filming our NoTube demo: Hollywood here we come

Posted in Demos by vickybuser on April 30, 2010

Within the NoTube project, the BBC together with colleagues from VU University Amsterdam, Pro-netics and other project partners are exploring the theme of “Internet TV in the Social Web”. Over the past few months we have been planning and building our first prototypes in preparation for the first NoTube Project Review.

Watching TV in a traditional setting is core to these initial prototypes. In the project’s spirit of reusing and adapting existing TV software, Libby installed the Open Source media centre MythTV on her TV at home. She also did various other things with bits of hardware and software to set up the demo. It works in Libby’s front room (and you don’t get a more realistic setting than that), but the set-up doesn’t transport very well to Amsterdam, where the Review will take place. This is mostly because it depends on Freeview (DVB-T) – and the selection of free-to-air DVB-T channels in The Netherlands doesn’t include BBC channels, which our initial demo requires.

For this reason (and because BBC’s iPlayer content is not available outside the UK) we decided to make a video of this part of our demo to include in the Review presentation – and to share with our NoTube and BBC colleagues.

NoTube demo

Using the NoTube iPhone app to control the TV: interactions on the iPhone translate into Jabber requests to the MythTV backend using the XMPP 'buttons' protocol

Libby and I did a trial run a few weeks ago: we used Libby’s digital camera for filming, iMovie for editing and our own voices for the narration. We decided to make two versions of the video using the same content but different voice-overs: one describing the end-user experience and the other explaining the back-end processes. We showed the results to our NoTube colleagues at the last Project Meeting in Turin.

NoTube iPhone app

Using a smart phone to see more information about a programme from the Linked Open Data cloud

This was our first attempt at making a video and we learnt a number of things:

  • We shouldn’t underestimate how long it takes to make a good video
  • Pacing is crucial – some of the processes we explain are quite complex, and viewers can’t be expected to concentrate on both what they’re seeing and hearing at the same time
  • Our DIY narration was too fast for people to follow: we needed a professional to record the voice-over for us
  • There were too many freeze frames in places where we were describing the back-end processes: we needed to include some diagrams to help explain what’s going on and link it to the underlying architecture
  • Showing the same film twice with different voice-overs didn’t work: it was too hard for the audience to distinguish the difference between them

We came back from the Turin meeting with useful feedback and set to work on organising our ‘production’. We liked the suggestion from our NoTube colleague, Lora Aroyo, that we video a selection of our various planning diagrams, drawings and wireframes to illustrate the end user story. Lora helped us write a script for this and I gathered the relevant materials and made a trial video to see if the idea could work. We also re-visited the script for the demo video trying to make it more concise, and we made some simple box and arrow diagrams to show how the various NoTube services are interacting behind the scenes.

Filming day arrived. Our cameraman did a great job with lights and camera angles, and making sure that we had plenty of footage at different ranges to choose from. Editing proved more challenging: some of the bits of filming that we really liked just didn’t work with our script and our initial edits were too long. We soon realised that we had to be really ruthless with our script editing and we cut it by half. We also discovered that what read well on paper didn’t sound so good when it was read out loud. And, again, we underestimated how long the editing process would take…

In the end we just had to be pragmatic and do the best we could in the time we had (one day) before the voice recording was scheduled. For editing purposes we used our own voice-overs, but it wasn’t until we heard the voice of our professional narrator that we really appreciated how much better it sounded!

You can see the videos on Vimeo here – please do let us know what you think:

http://vimeo.com/11232681

http://vimeo.com/11231965

Brokering EPG & enrichment services

Posted in Demos, Thinking Out Loud by Stefan on April 22, 2010

Libby’s post already mentioned some of the current activities in NoTube related to EPG metadata, particularly EPG harvesting, enrichment and filtering. While the Semantic Web Services (SWS) broker, one of the central components in NoTube, aims at brokering distributed services, scenarios involving EPG-related services serve as a perfect use case for showcasing the role of the broker. This is, because from an application point of view, EPG processing usually involves orchestrating a set of services which (1) harvest EPG metadata, (2) enrich it with additional information (i.e. harvested from the Linked Data cloud), and (3) filter it according to specific preferences of a user. Each of these steps requires the application developer to know where the actual services are (i.e. the invocation endpoints), how to invoke them and process the responses, and in particular, how to mediate mismatches which inevitably occur during orchestration of such distributed services. As an example, during step (1), an application needs to be aware of each available EPG service, its particular capabilities and the kind of EPG – e.g., for which channel and in which language – it provides. SWS aim at taking that strain away from the application (developer) by providing an abstract interface – the broker’s API – which allows to request application-oriented goals from a single endpoint. The broker allows to expose much more complex functionalities to the application interfaces and to provide a response in a structure and format which is desired by the specific requester. This is usually achieved on the basis of formal semantic descriptions of services which allow for automated discovery, orchestration and execution of Web services.


(A higher resolution version of the video is available here. )

In our current prototype, we provided an implementation of the broker component based on the IRS-III SWS environment. The brief demo video below illustrates, how the broker automatically selects suitable sets of EPG-harvesting services by reasoning on semantic annotations of EPG services and their underlying channels to identify services/channels which match a specific user language. These are then orchestrated in one go together with some enrichment (mainly DBPedia) and filtering functionalities allowing to pre-select suitable metadata records.

That’s just to give one of the first examples of SWS brokerage used within NoTube, while we are constantly working on exposing further functionalities as added-value SWS goals. On a sidenote, as it turned out that more human-oriented structured service annotations are required within NoTube as well, we are currently implementing a more light-weight service annotation store on the basis of the iServe repository, which might be introduced in anther post soonish.

In praise of swimlane diagrams

Posted in Meetings, Thinking Out Loud by vickybuser on January 20, 2010

As an Information Architect (IA) I often make diagrams of various kinds – usually user flow diagrams, sitemaps and wireframes. However, I’d never made use of swimlane diagrams until the most recent NoTube project meeting.

Commonly used for diagramming business processes (sometimes in a humourous vein!), I found this visualisation technique to be an extremely useful, simple and versatile tool for helping us to show how all the various components within Notube need to fit together and influence each other to support our scenarios.

The scenarios (descriptive stories about a user’s overall experience) supplied the context and background – the next step was to map these stories to a sequence of discrete ‘activities’ grouped by component to show what happens and when (as others have suggested, a more accurate name for this type of diagram might be a Scenario Description Swimlane). During the script writing activity described by Libby the ‘actors’ and their ‘lines’ were mapped to a swimlane diagram drawn on a flipchart by Chris van Aart from VU helping to clarify various issues along the way.

As the name suggests, the diagram looks like a swimming pool with lanes. Each NoTube component (service, tool or system) was assigned to a lane – we started with a lane for the user interactions implied by the scenario. The activities performed by each component were represented as boxes within the relevant column and connected by arrows to show the interconnections. Our lanes were arranged vertically so that time flowed forward as you moved down the page (but they could also be laid out horizontally). So – really quick and simple to do once you have the right information: the main challenge was not to make the diagram look too messy when drawing arrows across several lanes.

Swimlane diagram detail

The resulting diagrams provide a set of documents that show everything going on at once – at a glance – helping us to understand:

  • the tools and systems involved
  • how the user interacts with the various components
  • which components are responsible for which activities and the flow between them

An extra bonus for me as IA was that I could use the diagrams to quickly identify the screens that now need wireframing.

As Yvonne Shek says: “The goal or differentiating factor of this diagram is to tell a story from multiple perspective, in a comprehensive and holistic way.” I’m sure I’ll be using this handy technique again in future, in particular to promote common understanding between participants of a large and distributed project such as NoTube.

Writing scripts for teasing out requirements

Posted in Meetings, Thinking Out Loud by libbymiller on January 15, 2010

The Problem

We were looking for ways to bring out the full implications of our ideas for scenarios to check that they were implementable and work out how we would implement them.

This is a very common problem, and we have looked at it using various tools including writing scenarios, storyboarding and so on. We had a rough idea of the technical components we needed and what we wanted to demonstrate. But for me there was a lack of clarity about precisely how the scenarios would play out, and so we started to look at ‘swimlane’ diagrams like these, to illustrate where in the architecture the action moves as the scenario plays out.

“Like a rather boring play”

These diagrams are actually pretty hard to write, but useful if you can do them, as you start to understand what components needs to talk to what and what they need to say. Danbri had an idea that we thought might help for writing them – to create a script – like a script for a rather boring play – with the technical components as well as the users as characters, to see if this would engage our storytelling faculties to help bring out the nuances.

“But the set top box just woudn’t do that”

This made for an entertaining meeting where different meeting participants took the roles of different technical components, and I played script editor, making choices where there were disputes. I think there were several benefits of using this process

  • better mutual understanding of the scenario itself, including discovering more about what could and ought to happen
  • better participation as different project members became champions for different components (‘yes I’m the recommender!’)
  • you didn’t need to be technical to join in and the result was something that everyone can understand
  • quite a fun (by EU project standards) meeting

however -

  • this is a time-consuming thing to do and we didn’t really have enough time set aside
  • it needs participants to be interested and care enough to join in
  • it needs more careful planning than I did for it (such as a draft script written ahead of time), and a dedicated person to take notes, as Chris van Aart very kindly did in our session

It would be very interesting to talk to people creating real plays to see what we could learn from their processes.

You can read our ‘rather boring plays’ here, and I hope that Vicky will do a post shortly about the swimlanes she has created as a result of this process.