TV on the radio

Not the most original title for a blog post but hey. As Yasser posted on the Radio Labs blog, this morning we launched a new visual radio player running alongside the Chris Moyles show this week and Annie and Nick on Sunday. This is the first stage trial in a new project and we are keen to find out what the audience thinks of it.

Visual radio player

The pop-up player presents a webcam feed of the studio so you can see Chris and the team as well as hear them alongside which we display images, now playing track information and incoming SMS messages. In addition to this you will also see barcharts and swingometers representing a public vote or poll.

I joined the project to develop the front-end which is an AS3 flash application built in Flex Builder 3. The components are made up of individual SWFs loaded as necessary and the client is driven through messages sent over the same infrastructure which powers the live text widgets on network pages and the Radio 1 tag cloud.

Early comments on the Radio Labs post and elsewhere have been really encouraging.

Radio Pop: social radio listening from BBC Radio Labs

Radio Pop homepage

Today we launched Radio Pop, a social network around BBC radio. Its a project which has been around for over a year now and its great to finally get it out for people to start playing with. Listening to BBC radio through Radio Pop gives you some (hopefully) interesting information and what you’ve been listening to and what your friends have been listening to. When you hear something you really like you can ‘pop’ it – that’s Radio Pop vernacular for bookmark ;)

The Radio Pop site is about displaying your listening, your friends’ listening and everyone’s listening. Your profile displays your recent activity along side your favourite stations and programmes (or brands to be more specific). Here’s my profile:

Radio Pop profile

It also displays what you’re currently listening to so anyone visiting the site can see what you’re up to.

Radio Pop listening to

At the moment, we’re not doing all that much with all this listening data but in the future we are looking to provide recommendations and personalisation (no self-respecting web app can be without them!) and perhaps more integration with other BBC services. In fact its a good point to make that Radio Pop would not be the service it is without our excellent BBC programmes catelogue which provides us with schedule data and unique IDs for every programme, series and brand. While we’re not using the data in interesting ways as yet, we set out to make Radio Pop accessible and extensible so you can use your data for your own apps and mash ups.

For example, here’s my profile (including what I’m currently listening to): http://www.radiopop.co.uk/users/fridayforward.xml.
And here’s my recent listening:
http://www.radiopop.co.uk/users/fridayforward/listens.xml.
Its also available as an RSS feed.

I built an example app using user profile data so you can tell your blog readers what you’re listening to:

Check out the API documentation for more information on our feeds. The blog badge is available from the extras page where you can find an OS X widget which allows you to listen to BBC radio through Radio Pop from the comfort of your desktop.

Radio Pop desktop widget

So that’s Radio Pop. But how does it all work?

Radio Pop is a Ruby on Rails application (because that’s where our experience lies) which runs on nginx with the fair proxy balancer module and memcached caching (because its needs to handle a large number of requests). We support OpenID for login (along side a standard username and password) as well as OAuth for communication between Radio Pop and any clients which post data to it (including the desktop widget). This means we have an input API as well as an output API, should you want to build an on-demand Radio Pop player… ;)

Tracking your listening is done quite simply, through a ‘pulse’ sent every 60 seconds. When you change the station you are listening to or listen over a programme boundary, the pulses are combined into a single ‘listen event’. Once this happens it will appear on the graphs on your profile and in your listening history. When you stop listening (and therefore stop sending pulses) a listen event is created after 5 minutes of inactivity.

I should point out that a lot of the initial development for this version of Radio Pop was done by Mint Digital, who worked from our initial internal prototype. Thomas from Mint also advanced my Rails and nginx knowledge ten-fold. At least.

Please check it out, sign up and start listening.

Scrobble your BBC Radio listening

Last year I wrote a Yahoo Widget which allows you to listen to BBC Radio and scrobble the tracks to your Last.fm profile.

BBC Radio Last.fm scrobbler

The Last.fm profiles for Radio 1, Radio 2, 6 Music and 1 Xtra are now public (they were originally created under pseudonyms), so I thought I should update my widget and also write a version for OS X Dashboard. So I did.

You can read more about them on the BBC Radio Labs blog which accompanies our new Radio Labs site.

Or you can download them here:

Download for OS X
Download for Yahoo! Widgets (version 4.5 or higher required)

These are still in beta (and may never be otherwise) so please let me know if/when you find any glaring bugs!

Radio Pop, Olinda prototypes… its all connected

A few months ago, BBC Audio & Music interactive commissioned a project investigating future forms of physical radio devices. The successful company was Shulze & Webb and now they have finished the feasibility study of their proposal, Matt has posted some information on the project.

The prototype, codenamed Olinda, is essentially a very simple, very social radio; simple in interaction, modular in design. Through the inclusion of a hardware API and additional module, S&W propose to allow users to connect with their friends as they listen to the radio.

You tap pulse buzz

To fully achieve this, Olinda requires a web site to connect friends and devices. This is where a once-separate prototype comes in. Radio Pop.

Radio Pop

Radio Pop is the result of our latest six week semi-rapid prototyping project in the R&D team. At its core is a database which stores radio listening, upon which we can build various views. By introducing friends lists, schedule information and the ability to simply bookmark, or ‘pop’, a particular point in time, Radio Pop generates a great deal of information about listening habits. We purposefully kept the database very simple and specified an input and output API so that the repository could be accessed using web and desktop widgets as well as through the Radio Pop web site.

This is only my second Ruby on Rails application (my first will be going live in a couple of weeks for a trial, more on that very soon) and as such it is a little slow. However, the flash graphs we created demonstrate the sort of information a service like this could provide, both historical and live, as demonstrated by my Radio Pop live blog badge:

It is this ability to get live listening information which makes Radio Pop a perfect extension of the Olinda prototype (and vice versa). Olinda will provide a very simple way of listening to what your friends are listening to using Radio Pop as the method of communication. While you listen (using Olinda, through a desktop widgets or through Radio Player), a pulse event is sent to Radio Pop every minute, discretely tracking your activity.

Tristan has much more about the background to Radio Pop and our thinking around it.

BBC Radio Player + Last.fm Yahoo! widget

UPDATE: I’ve updated the Yahoo! Widget and built one for OS X. Read all about it.

We all love Last.fm. But you can’t update your profile with songs as you listen to the radio.. until now. We have built a Yahoo! Widget which does just that. Sign in to your Last.fm account and choose a BBC Radio station – Radio 1, Radio 2, 6 Music or 1Xtra – and the widget will display the current track along with some similar / recommended artists. The current track will be uploaded to your Last.fm profile automatically (but you can always opt-out), or you can manually add each track.

BBC Radio Last.fm widget

This is still an experiment / prototype / beta so I can’t guarantee that it will behave itself or that the service will continue, but please have a play and let me know what you think.

As the widget requires communication with multiple sources asynchronously I created an Ajax class which allocates an XMLHttpRequest object for each request and releases it once the call has returned. Feel free to unwrap the widget and dissect the code…

BBC Radio Player + Last.fm Yahoo! widget

BBC Content API

I haven’t written anything for a while because I have been busy getting into the swing of things at BBC Radio & Music. But it is now appropriate to talk about the last project I was involved in at BBC R&D.

The navigation team are concerned with all things to do with finding content and navigating in and around it. A lot of work over the last few years has involved the standardisation of TV-Anytime, a rich method for describing content. Through this we produce a fairly stable stream of live programme data. It seemed a logical progression to make this data available to the public to play with through BBC backstage.

I thought it would be another logical step to build a service around out data, to allow more developers to get their hands on it and to make it as accessible as we possibly could. The BBC Web API (beta) was born.

Before I continue to should point out the scope of this project. We set out to build a simple web API, borrowing the package structure of Flickr and built on a solid foundation of TV-Anytime data. The current offering is very much beta and no guarantees are made as to its stability or accuracy but the core is there to build on. It has been noted that TV listings are possibly the next data feeds to make their way in to the mash-up mainstream and I believe the BBC should be the first to offer a suitable API.

The API offers a handful of methods which return channel, programme, genre and grouping information. You can also retrieve programme and channel stream locations where available. Methods return XML but all results have been wrapped up in XSLT to make them more human-readable. Have a look at this example for getting what’s on now and next. You can also get the full-blown TV-Anytime response if you would like even more information.

As part of the project I set about creating some demo applications to show off the API functionality. I tried to write the documentation in such a way as to offer help to bedroom developers unsure about using the API and these demos are a good place to start. These are not polished applications and I’m sure the team will be keen to see what people can do with the data (good, wholesome non-commercial use only of course).

With the BBC iPlayer currently in development and the creative archive being made publicly available, access to BBC content will become wider and deeper. This API is another step in the right direction.

ProgrammableWeb.com have since catelogued and written up the API

Overall, it’s a good looking, straightforward API. Will be interesting to see what sorts of mashups folks build with this.

I couldn’t put it better myself.

Annotatable Audio project

I have been part of a very exciting project in BBC Radio & Music interactive. The project was lead by Tom Coates and the team was made up of myself, Tristan Ferne, Helen Crowe, Paul Clifford and Bronwyn Van Der Merwe. The project is best summed up by Tom at plasticbag.

I am resposible for the Flash interface part of the project and am very pleased with the feedback it has got from fellow Flash developers and the wider web community. I learned a great deal in the short amount of time I spent developing the app and there isn’t a significant amount of work which needs to be done before it is a fully usable interface. Helen’s JavaScript skills allowed us to use Flash only where necessary and provides communication from the database, through Flash, to the page. As a team we recognised the power of Flash but also that it should not be over-used.

Twitter