Happenings

Spotify and the Queue Problem

I’m sure most people will have heard of it already but Spotify is probably the most interesting music service I’ve seen since the Napster days (the first version of Napster that is, not the current one).

You find an invite for it (there are plenty freely available just now), sign-up for free and you can then access a massive back catalogue of music to stream whenever you like. The streaming seems very reliable, and the selection is pretty good: this isn’t just small artists, all the major labels are represented. The cost? You either take it for free and listen to the occassional advert (all seem pretty unobtrusive so far), or pay £10 a month to stop the adverts.

It’s different from something like last.fm‘s streaming service, because you queue up a list of songs that you want to hear, rather than just starting somewhere and having new music pushed at you (which is not a bad thing in and of itself).

If Spotify is successful, then it’ll be a game-changer. I won’t be surprised if, within a few years, Spotify is the way to get music, just as YouTube is the way to get video and Google is the way to find information. You won’t buy new music when you want to hear that one song you’ve not heard in a while, you’ll Spotify it.

It’s fair to say I like it and I think it works incredibly, having tried it on Windows, Mac and on Linux (via WINE). It looks pretty slick across the board. It does, however, have some odd behaviour in places, which I’d like to detail.

The playback functionality is built around the idea of a “play queue”: a list that holds all the songs you’ve selected to play. When they’ve played, they leave the queue and appear in your history. That’s pretty straightforward, but the manner in which you add songs to the queue is, on occassion, counter-intuitive. This is going to take a little explanation.

There are two broad routes for finding music to add to the queue. You can either use a playlist (which, neatly, are shareable over the web), or you can use the fairly comprehensive search options. Once you’ve found the music you want with either route, you then have two actions you can take: play (the default action) and queue. The difference between the two, and how they interact with the two find methods causes some issues.

Problem #1: There are two different types of queue item. This is lengthy but keep with me, it’ll help you understand the rest. Let’s say you search for and find an album. You double-click the first track and start listening. As it finishes, Spotify automatically plays the next track as it has added the whole album to the play queue. Satisfied that it’ll keep going you make another selection and queue it i.e. not “play” it straight away as you want to hear all the items from the first album which, after all, you can see in your play queue. When the next song starts you might be surprised to learn that the next track to play is not the next track from the first album, it’s the first track from your second selection.

What happened? Well, it turns out Spotify has active and passive queue items. On any search, a play will actively queue the item you selected and passively queue everything else. The play queue is sorted so that passively queued items are always after actively queued items. Using the play action creates one active item and potentially many passive items. Using the queue action creates an active item for every item you have selected.

When you made your first album selection (using the play action), the first item was actively queued and the rest were passively queued. When you made your second selection (using the queue action), it jumped in front of all those other tracks. That’s pretty counter-intuitive, and is Problem #1.

You might think, “Ok, I understand that and can avoid it”. Well, slow down, there’s more.

Problem #2: You can’t play an entire selection. If you thought that the solution to the above problem was to select the entire first album and use the play action, you’d be mistaken. Although Spotify will let you make a selection and use the play action while on that selection, it really only plays one of the tracks i.e. it ignores the fact you have made a selection. You can make a selection, use the queue action, and then delete everything before it already in your play queue, but that’s a bit of a roundabout way of doing things. Better behaviour? Enable the play action to operate over a selection, or disable it when a selection has been made. Or, model intents by adding a “Queue album” action.

Problem #3: Queing passive queue items makes copies of them. So maybe you thought the solution is to use the play action on the first item, thus passively queueing the rest, going to the play queue and selecting queue on the remaining items? Well, that works. You’ll have the entire thing actively queued. The problem is that actively queuing something like that doesn’t remove the passive copy. As soon as the entire album finishes, you’ll probably be surprised to hear the second track onwards again. The passive items weren’t removed, they were just copied to the active part of the queue. Better behaviour? Making a passive item an active item (using the queue action) should jusy promote it, and not copy it.

Problem #4: Passive queue items can’t be removed easily. Maybe you thought the solution to problem #3 is to just remove the passive items from the queue, thus leaving one active copy. I’m afraid not. You cannot remove passively queued items, without wiping out your entire play queue. This is a massive cause of irritation. Better behaviour? Activate the delete option for all items, thus allowing the removal of passive items.

Problem #5: Search and passive queuing can interact too broadly. You’ve learned to jump through the hoops above and now know how to queue things properly. Good. Let’s say you want to hear one song, and do a search for it. The search results return 10 similarly titled tracks and the one you wanted. You play the one you wanted. Can you guess what happens? Those completely unrelated tracks by unrelated artists in unrelated genres all got passively queued and you’re now listening to them. Best of all, because of problem #4 you can’t remove them without wiping out your queue entirely. Better behaviour? Restrict the passive queueing of items such that only items from the same artist/album get passively queued when searching by artist or track. A special case here is when the track is from a compilation, where you might want to queue the whole thing.

Now, I know that comes across as negative, but let me reiterate that I really like Spotify (I’ve been listening to genre:britpop on it whilst writing this), and would just like to see some basic usability improvements.

Here’s hoping the service makes it.

Film Fight: January 2009

A film fight that’s on time? Why, it must be January. 4 films this month:

Che Part One is the new Ernesto “Che” Guevera biopic, by Steven Soderbergh, telling the story of the retaking of Cuba (up until the assault on the capital), interspersed with his much later stay visting the UN. It’s an odd film, lacking a conventional narrative and structure when there are several pretty obvious choices that could have been picked. Instead we see moments, snatches of time throughout the Cuban uprising. The real problem with Che Part One is that there is no depth to any of these fragments. We get a problem, and then someone explaining the solution, and rarely any decisive action. This is tell-not-show storytelling at it’s worst. The last act is it’s best, as it’s the most regular: showing an assault on a beleagured region, and the defining points throughout the siege. Had the rest of the film been like this, it would have been much better. (See my Che Part one Twitter review).

Danny Boyle’s Slumdog Millionaire deserves the praise its been getting recently. We get the reasonably compelling story of a young boy, raised in poverty and in devastating conditions, and how he grows into a young man. The story is let down somewhat by a weak final act, and an entirely unnecessary love interest. However, the film looks the part: we get shot after shot of beautiful scenery and top notch direction. The art team behind this (from the cinematographers to the sound team) have done a marvellous job. A feel good movie worthy of your time. (See my Slumdog Millionaire Twitter review).

Darren Aronofsky has another masterpiece on his hands with his  fantastic (and woefully under Oscar nominated) new move, The Wrestler. The story focusses on a former champion wrestler, and the toll he has paid physically and mentally for his glory. The pain and detrimental effects pervade throughout his life, scraping by at the bottom of the barrel with only an estranged daughter and a stripper to keep him sane. This is not a cheery film in the slightest, as you might guess, but it is stunning. Mickey Rourke puts in a near perfect performance as the title character, bringing both empathy and warmth to a man who has himself to blame for his self-destructive tendencies. Marisa Tomei and Evan Rachel Wood also put in fantastic shows as the stripper and daugher respectively. An excellent movie, and an early pick for film of the year. (See my The Wrestler Twitter review).

Finally, Milk is the story of Harvey Milk, the first openly homosexual US politician in a time when a witch hunt was being fought in the States. While the story is a good one and tragic in parts, it’s Sean Penn’s performance that really makes this film. He manages to convey a convincing multi-dimensional character on his rise to power with sympathy and dignity. Where the film falls down is in the editing and pacing. There are some pretty stunning shots, but it nearly gets blundered by being over long while lacking depth on many of the ancilliary characters. Again, we sometimes get told about progression a little too much, rather than seeing it. Still, it’s strengths outweight it’s weaknesses and we get left with an enjoyable and uplifting film. Worth seeing. (See my Milk Twitter review).

And the winner is… The Wrestler. Aronofsky has another masterpiece on his hands.

Copyright Extension

The other day I did something I’ve never done before: written to an MEP. Below follows my message to them, with regards my views on copyright extension and why the proposed Term Extension directive is a mistake.

Dear [My MEPs],

I am writing to you all today because you represent me in the European Parliament. As such, I would like to bring to your attention my concern (a concern shared by many others) over the proposed extensions to European Copyright law (the Term Extension Directive).

This new directive would mean that copyright for sound recordings would be increased from the current 50 years to 95 years. This runs counter to the purpose of copyright, which is to protect public interest (the creation of new materials) in the long term by protecting commercial interests (being able to generate revenue from new material created) in the short term. By extending the term, the public interest will not be served.

Recordings are already easily lost within the 50 year limit. By extending the terms, we risk losing many recordings where the originals simply won’t be archived; and we will not be able to retrieve them. We lose the advantages that come from having a society whose culture heritage we can take, reshape and rework.

Consider the musical works that do not live in copyright, those of the great composers like Mozart and Vivaldi. It would be a tragedy had their music been lost to short-sighted money making. It will be a tragedy if we lose the work of artists now.

The stated purpose of the extension (to increase revenues to smaller artists) can be shown to be a fallacy. Most artists will receive only a small amount of extra revenue (between 0.5 and 26 Euros), and the vast majority of money will go straight to record labels and larger recording artists whose interests do not need protected further.

Independent reviews (Gower, Hugenholtz) have shown that this directive is harmful to our heritage and is against the interests of the vast majority of the European community.

I urge you to do the right thing: register against this directive.

Yours sincerely,

Gary Fleming

Research Topics

I’m curious about something. Actually, I’m curious about a number of things and that, inadvertantly, is the topic of this post:  I’m curious as to whether or not other computing scientists/software engineers keep an active list of research topics that they want to delve into further.

For years now I’ve had a series of nagging questions on different topics that I want to answer. Sometimes they’ll be generally understood problems that I want to know more about (like recommendation systems, a topic I looked at a while back), sometimes they’ll be new problems that are just opening up and actually need people to move them along (like lifestreams, a topic I fully intend on coming back to). These, broadly, form “research topics”: things I want to know more about or explore in some way.

I tend to track these topics in two ways: 1) I simply let them drift in and out of my head. If I find that they keep coming back, then I give them some thinking time and see what falls out. 2) I keep a list of active topics and questions at hand at all times (actually stored on my mobile as a draft text message), which I look over periodically. You’ll note that I’m not necessarily actively pursuing anything, just thinking over the topics and seeing if any new information I’ve come across in the time since I last looked at the topic has shed any new light on the matter.

By using my research topics as sieves for the huge swathes of information I’m exposed to, I passively manage to form a greater understanding of things that matter to me without wasting time on deadends. I’ve found that these methods help me find items that I’m interested in over the medium to long term, rather than picking up and following fads (I deal with current trends in a different way).

The problem is that I find this to be a little too passive at times. I’m painfully aware that my open source work (which I’ve mostly done anonymously, but you can find it if you really try) and privately posted projects have all but dried up in the last year or so. I don’t have a huge amount of free time, and the time I do have I use pursuing other interests. I think I should, however, get back into more active research and produce more product from it, whether that product is code or merely more concrete ideas.

I guess, in a shortened form, my questions are: do people have their own research topics and how do they pursue them? Relentlessly or passively? Soaking them in or furiously chasing them? I’m curious to know.

The New Console Experience

It’s been an interesting generation for gaming. For the first time in a few generations we’ve seen some big changes not just in the style of games we’re playing, but fundamental shifts in the platforms we’re gaming on. With their dashboards and updates, the modern console is a very different prospect from those gone before.

For no particular reason, I want to catalogue some of the big changes we’ve seen at a platform and hardware level, and mention at least one change I’d like to see in the future. (Some of these are rooted, in part, in the previous generation, but have really come into their own in this generation):

  • Achievements – I’ve talked about this before but I think achievements, when done well, are the most promising change in gaming for a long time. The best achievements extend the life of games by asking you to do something out of the ordinary, the worst are essentially free (think the Avatar game). Although I’m not a Gamerscore Whore, I often find myself pushing on a little longer and further to get something that’s just out of reach. A great idea.
  • Friend lists – The Wii/DS online experience shows us exactly how not to do online gaming. While it’s good to make sure that both parties know each other for safety reasons, do they really need to do it for every single game? The 360 model is effective, safe enough, and user friendly. You add each other, and that’s that. Knowing which of your friends is online and ready to play something is very handy. I’ve had some excellent Halo 3 and Burnout Paradise sessions that I wouldn’t have enjoyed as much with random strangers.
  • Avatars – Nintendo got this one very right: bring in the mass market by putting them in the games. While I’m sure Wii Sports would’ve been plenty of fun without them, the miis of your friends add a lot of extra charm. Who hasn’t moaned when they get someone useless on their baseball team? A very handy excuse for poor performance. I’d like to see their integration go further though. Most of the games that use the miis (or the new 360 avatars) are pretty lightweight, casual games. I think we can do better than that.
  • Control methods – Nintendo, again, have proven very handy here. The Wiimote and balance board have both brought in gamers way outside the traditional hardcore element. Long may it continue. I hope we see some better uses of other inputs, such as the cameras that can be bought for the 360 and PS3, and the plastic instruments from the various music games that are around (I’m a big fan of Guitar Hero).
  • Downloadable Content – While I think few games have yet to deliver on the promise of DLC, we’re on the threshold of delivering substantial new content for games that would otherwise be shelved. Burnout Paradise has really led the way here, with the bike pack etc, but we’re seeing some big updates coming for most of the A-class games (I am, in fact, writing this while I await the download of Fable 2’s Knothole Island — released today).

I fully expect that, while not all consoles today have all of those features, all of the next generation consoles will have them all.

What would I like to see for the next generation? Richer integration with the web. Now, I know that sounds a little odd, but hear me out. Right now, you can go and find my Xbox Live gamercard online (I won’t link to it just now, but it’s not hard to find). It’ll tell you my current score and some recently played games. A few other sites who happen to be part of the Xbox Community Developers Program can also get at a handful of my other stats as well, like recent achievements. I want more.

I want a decent REST API for everything that happens to my profile (which anyone can opt out of, of course): games played, time played per day, new achievements, and any game specific stats like my levelling up in Fallout 3, or a new high score in Wario Ware. I want everything opened up.

Why? Two reasons: 1) I’m becoming very interested in the concept of lifestreams (more on which at a later date), and 2) because there is information there that I bet is illuminating and can be used in interesting ways that the developers and I cannot foresee just now.

Maybe I could tie my playing time stats into a fitness website, which would start hassling me about getting out and about. Maybe I’d like to see the distance my virtual characters have walked in Fallout 3 or Fable 2 (or both of them combined), and have it project onto a Google Map.

In short, I don’t know exactly why I want that data, but I know I want it to be accessible.

Is it likely to happen? Probably not. While I see the platforms opening up slowly, there is a cost in making that volume of data available and I honestly don’t know if any of the platform holders or developers would be willing to foot the bill for potentially nothing.

I hope they do though, because the more information in our lives we can mash together and accumulate into a context, the more interesting and rich that data can become.