tommorris.org

Discussing software, the web, politics, sexuality and the unending supply of human stupidity.


Snowtape is a lovely app, but it is a data roach motel

Snowtape is a lovely Mac application. I got it either on special offer or as part of one of those Mac app bundles. My memory is a bit hazy on that front. Anyway, it is a really nice application - looks great, and it has really got me back into listening to streaming radio online. There's a lot of great stations playing a wide diversity of music. I never really liked listening to streaming radio in iTunes - I'm not one of these fanatical iTunes haters who complains about it, but it isn't nearly as nice as Snowtape for listening to radio.

But it has one primary problem: lack of data export.

You can get your data in:

But you'll notice there is no 'Export' in the file menu. But that's not the main concern. The main thing that one needs to be able to get out is the URL of the station stream. You can then hand that off to another person using another client and they can listen to it. I have two other clients I often want to use: the radio in the kitchen, which you can load new station stream URLs into over the web - and FStream, the streaming client for the iPhone and iPod touch. If I'm listening to something I like, I often want to tweet the URL too.

Snowtape does provide a facility for this, called RadioURL:

If I click on 'Copy' for BBC 6 Music, it gives me this URL: http://www.radiourl.com/fYd - a shortened URL, right? Just like bit.ly or is.gd or tinyurl. That's cool. Oh, but wait. Try opening that URL in your browser.

If you have Snowtape installed, it'll prompt you to open Snowtape and start playing. If you don't, you'll just get a big blue web page with a RadioURL logo and a sign saying "PLEASE WAIT while Snowtape is opening...". It'll then take you to a page telling you to download Snowtape. This, of course, won't work for most people because most people don't have a Macintosh. That's fun. I've sent you a cool radio station to listen to - a radio station broadcasting using a relatively open standard in a widely-implemented format, but you can't listen to it because you don't own a piece of commercial software for the Macintosh. And this is supposed to be an improvement over me just giving you the streaming audio URL.

I just want the actual streaming URL. RadioURL is fine if I know the other person has Snowtape. But what proportion of people is that? 0.1%? 0.01%? The vast majority of people I am going to share music with online aren't using Snowtape because they don't have a Mac.

No worries. There is a totally user-unfriendly way of getting the streaming URL from RadioURL. If you look at View Source again, you'll see in the HTML, there's some JavaScript. There's a function in the JavaScript called 'relocate'. In there, you'll see that it has a playlist URL encoded in there in the stream property. So for the BBC 6 Music link I have above, it points to http://www.radiourl.com/playlists/fYd.pls

And if you go to http://www.radiourl.com/playlists/fYd.pls and view source on that, you'll find that the PLS file actually contains the URL of the actual stream on bbc.co.uk. Huzzah.

But why the fuck do I have to copy something out of a JavaScript file in order to get the actual stream URL? That's bullshit. I'm on a Mac, using a piece of software I've paid money for. Why can't I just right-click and copy the actual stream URL out of the software?

So I dutifully send off a request to Vemedio, the creators of Snowtape.

There doesn't seem to be any way in the application of getting my list of radio stations and the streaming URLs out of Snowtape.

The only way I could get the URL of a stream out so I could give it to someone who isn't using Snowtape was to make a RadioURL, go to that, find the /playlists/whatever.pls in the JavaScript, go to that and copy the details from the .pls

This is unfortunate. Why can't I just copy the URL out of Snowtape of the actual stream? Not everyone has Snowtape - even if they wanted it, Windows and Linux users don't get it. I wanted to listen to the stream on my iPod touch using FStream (and, no, I'm not going to buy Snowtape for iPhone if the Mac version doesn't adequately allow me to get my data back out).

I'll be warning everyone not to get Snowtape because of this feature. Data portability is an essential feature of any software I use - if I can't get the data I put in (radio stations etc.) back out again, that is a dealbreaker. How do I explain to my father that he should use this piece of software on his Mac at home if, after he discovers a great radio station, he can't take the URL of that station and play it on his Windows machine at work?

Okay, perhaps I shouldn't have said "I'll be warning everyone not to get Snowtape". That's kinda nasty. But I'm not a very nice person, as you all know. I think this request is a very reasonable one. I think in the 21st century, being able to get data out of any application you put it into - without having to view source or hack around with XML files or whatever - is a reasonable request. Data lock-in is so pre-Flickr. And if you don't agree, I'll summon a horde of Microformateers, RDFers, Data Portability peeps, RSSers, Atomists, open sourcers and the rest to come and shout at you. Data export is not a feature, it ought to just be there.

What was the response?

Snowtape is a product for end users and with this in mind it's not necessary to deal a lot with urls.

It is a product for end users. I'm an end user. I'd love it if it wasn't necessary to deal with URLs. But URLs are how you identify resources on the Internet. Once you've identified them, you can share them with people by giving them this short string reference. And often they'll be able to click on that string reference and things will just work.

The fact is that there already is a URL that is created in Snowtape - it just takes you through a stupid redirection service that only works for other Snowtape users. If this is for usability, that's a very strange feature - a piece of software that makes your life easier by making it so you can only share your data with the small subset of people who use exactly the same software you do. What if e-mail clients only let you send e-mails to people using the same mail client? If you wanted to e-mail someone using Outlook, you'd have to have Outlook too.

How is it serving the end users to have a situation where if they find something interesting and they want to play it on their Windows machines, they can't because the URL they export from Snowtape on their Mac doesn't work on their Windows machine? Perhaps one can tell those end users that they are just culturally unsophisticated and that they should know better than to use a computer that doesn't run OS X.

How are the users being isolated from URLs when they can import from a URL in the menu I screenshotted above?

Martin from Vemedio has another solution though: Yes, well the PLS file contains the station URLs and you could also search in the Database.xml file of the Snowtape folder.

I can export a PLS file by dragging the station from Snowtape onto my desktop. That PLS will contain the stream. I can then send that PLS file to the person I want to share the station with, or I can open it in my text editor and extract the URL from there. Or I can open the Database.xml file in my ~/Documents/Snowtape/ directory. And, you know, get the stuff from there.

I'm a programmer - yes - and a geek. But I'm also an end user. Part of why I am willing to spend money on an application like Snowtape is it is supposed to make my life easier. All the GNU people are there going on about my freedom - but I'm a pragmatist. I'm on a Mac because I'm willing to trade a little freedom to make my life easier. Yes, yes, Jefferson quote here. Bla bla. I live in Britain, so I guess my forefathers decided that liberty from Her Maj over on the new continent might not be so important after all.

I spend enough of my life staring at monospaced text and blinking white cursors on a black background. I spend enough time faffing around on the command line and in Vim, grepping, catting, waiting around for cap deploy and git push. My screen is filled with Growl notifications telling me when my compiles have finished, unit tests, file uploads. Large chunks of my life are run by crappy little Ruby scripts being poked by the crontab and shitting out little bunches of XML that get pushed around on the Internet. Music is supposed to be the antidote to all that; a Dionysian yang to the endless grind of Apollonian yin - or something. I got home in the middle of the night and switched on Radio 3 and all the pain of commuting was dissipated by a Proms performance of Mendelssohn's Violin Concerto in E minor, Op. 64 (the video is of Perlman and Barenboim not the BBC performance).

I've paid some money to be able to have a pretty application sitting on my second monitor playing me some great music, precisely to be an antidote to the endless TextMates and Eclipses and Javadocs on my main monitor. And to be able to get data out of it, I have to grep through an XML file? Way to kill that ecstasy of the Mendelssohn. Talk about a busman's holiday! And why? So as to not confuse a user? The user will be more than confused by sending around URLs to a website that won't work unless you own a piece of Mac software.

Don't get me wrong. I can hack around this somehow. I'm sure Growl keeps logs, and I could write a script I could invoke which would go and poke through the Growl logs, find the last station I started playing in Snowtape, and then go and parse the XML file and get the stream and copy it into my pasteboard and pop up a growl notification telling me it's popped it in my pasteboard. But why? Why do I need to do that? So as not to confuse the mythical simpletons who live in user experience labs and pee their panties if there's an extra menu item?

I want to recommend Snowtape to people - it truly is a lovely piece of software and - as I said - it has prompted me to listen to more Internet radio more often, and discover lots of great music. But, as I said in the e-mail, I cannot recommend it until I can get my data out of it sensibly.

London Road, Sevenoaks, TN13 2