playlist about winter in a climate without real seasons

for Cloudy Days is a really good playlist that just appeared in the wild. Compare it to what you could do using any XSPF-based method like XSPF Musicplayer, JW player, and EasyListener, using any all-in-one solution like Muxtape, Mixwit, Playlist.com, Myspace Music, Rhapsody, or iMeem, or using an iTunes playlist.

Here is that page within an iframe for easy inspection:

There’s a big piece of artwork splashed across the top of the page, and this playlister takes advantage of that big expanse of pixels with a landscape photo. Imagine the 640 x 450 pixels of that peaceful open landscape crammed into the 64 x 64 square for album art in any Flash widget — it wouldn’t be on the same level.

Underneath the art is a long text annotation about the playlist, 265 words in all:

This past weekend reminded me why I love the winter months coming up ahead; however, here in California there’s not really a true winter season. To me winter is just a reminder of those calendars in elementary school with the image of the snowman and leaves being swirled up with a bunch of lines symbolizing the cold wind.

It’s only after that big piece of art and expansive explanation that the songs start. At that point the capabilities of all the other playlisting providers kick in. I bring this up because it a really great example of why it is that the HTML-based playlisting solution in goose (which he uses in that page) is better than any Flash-based one. This is a new and better generation of playlisting technology.

O’Reilly on goose

Over on the O’Reilly Digital Media site, David Battino has published a piece called Three Free & Easy Web Audio Players which covers Delicious Playtagger, Goose aka Yahoo Media Player, and a new player of his own design.

Want to play MP3s on your site? I did. The unpredictable behavior of audio links annoyed me so much that I finally broke down and wrote my own player. And then I wrote several more. An enterprising bloke in Australia even copied my code and started selling it as his own. But web audio is a treacherous world, and we both learned that what worked well on our own browsers often sputtered horribly on other people’s. … In this article, I’ll look at two free players you can add to your own site with a single line of code. … Inspired by Play Tagger and YMP, I revisited my JavaScript-based web audio player.

In David’s own Batmosphere Multiplayer player he introduces some cool new ideas. Media links that have been made playable launch the player when you click on them without affecting the link itself, so a user can still do right-click+save-as. Also, in the popout window for the player he scales the window to the size of any album art specified by the user, which is pretty damn slick.

A cool accident of the layout of this article is that it captures a sort of threaded conversation among developers of web audio players. Playtagger came first, goose came second, the Batmosphere player came third, and each was an iteration of shared ideas. They all add small play buttons to plain vanilla media links in HTML documents — that was a delicious innovation which goose copied and batmosphere picked up in turn. Goose extended the concept by allowing publishers to customize the player using various fields of the anchor; for example, you can set the song title by using the standard “title” attribute of an HTML anchor element. Batmosphere picks up on these features and adds to the pool by letting you use the “id” attribute to specify a caption.


One subtle, important, and usually overlooked aspect of the goose anchor syntax is that it doesn’t rely on file extensions. Playtagger, for example, requires you to have a URL that ends in “.mp3”, like this:

<a href="example.mp3">my song</a>

But what if your URL doesn’t end in “.mp3”?

<a href="getmp3.php">my song</a>

What if it ends in .mp3 but redirects to an HTML page?

<a href="getphp.mp3">my web page</a>

The design of the web explicitly rules out using the extension to tell the browser what kind of file is on the other end of a link. This is to allow tools designed specifically for the job to be used — MIME types and HTTP content negotiation. And goose supports both of them.

Goose allows you to set the MIME type by using the “type” attribute, so that this *will* get picked up:

<a href="getmp3.php" type="audio/mpeg">my song</a>

And this *won’t* get picked up:

<a href="getphp.mp3" type="text/html">my web page</a>

It allows you to use content negotiation by setting the link class to “htrack”:

<a href="getaudiofile.php" class="htrack">this might be AAC or WMA</a>

For a deeper explanation of the relationship between content negotiation, MIME types, and file extensions in URLs, check out Content Negotiation: why it is useful, and how to make it work. For more details on how goose interprets link syntax, see how to link in the goose wiki.

How to add Moon of Manakura to your web page

Go to Rhapsody.

Ignore annoying upsell to their download store.

Do a track search for “Moon of Manakoora.” You have to set the scope of the search in the dropdown next to the entry field.

In the search results, right click on the link to the song and do “copy link location.”

Go to your own web page.

Paste in the link location, like this:

<a href="http://www.rhapsody.com/goto?rcid=tra.723445&variant=play">Moon of Manakoora</a>.

Add goose to your page like this:

<script src="http://mediaplayer.yahoo.com"></script>

Save and load the page. There will be a working play button next to the link, and the song will play in the context of everything else in the page, e.g. MP3s, oggs, whatever you have in there.

1 YMP free in every box of FoxyTunes

FoxyTunes Blog:

FoxyTunes 3.0 for Firefox is finally here!

This version adds a very cool new functionality – it can turn any webpage into a playlist you can play right there on that page – without needing to launch any external media players or programs. How is this possible? With the new Yahoo! Media Player.

FoxyTunes and Yahoo! Media Player

What’s Yahoo! Media Player?

Yahoo! Media Player is a really cool music player that lives on the web and can play music found on web pages as a playlist. The player floats ‘above’ the page content, so even if you scroll up and down the page, the player stays at the same position right in front of you.

Yahoo! Media Player

Up until now, in order to add this player to a web page, you had to be the owner of that page. But what about sites that still haven’t added this to their pages? FoxyTunes to the resque!

Yahoo! Media Player + FoxyTunes = Play any page

The latest version of FoxyTunes enhances any page that has music on it by automatically adding the Yahoo! Media Player to that page. Then, you can conveniently play any track on that page or even the whole page as one big playlist!

The deal is basically that FoxyTunes can now act like a Greasemonkey plugin which auto-inserts Yahoo Media Player into any page you visit. This is totally handy.

hit, git and split

In Rolling Stone’s current piece on the best music blogs of 2008 (update: link corrected), three out of the four winners which do MP3s are using Yahoo! Media Player. That’s a pretty good score, and it shows that the media player has found a place in the world. I feel great. It’s like seeing your kid graduate from college and get a decent job. To see that the software has grown up, or at least reached its decadent 20s, means the completion of a long project.

Early work on the software now known as Yahoo! Media Player began in fall of 2004 as version 2.0 of Webjay. My vision was to move outwards from Webjay’s centralized form, and rather than have a site for authoring playlists have any old web authoring tool on any old site be able to create playlists using HTML. The difference would be ease of use — rather than go to Webjay, it would come to you. When Webjay got acquired by Yahoo! this unreleased software was picked up and began a new life as a project codenamed “goose.” During my first year at Yahoo!, while Webjay proper was going down, the new version was coming up, and right around the same time that we officially shuttered webjay.org we also bootstrapped a good development team for goose.

The first goose release went live on July 31, 2007 in the most modest way I could arrange — as a player for 30 second samples in an easter egg page within Yahoo!’s massively trafficked music site. The power of an AJAX-based player was evident in a subtle way, though, in that it supported Yahoo’s subscription service in off-the-shelf Internet Explorer on Windows. The subscription service wasn’t an impressive product, but the underlying code was truly hair-raising and couldn’t have been done with a traditional Flash MP3 player.

The next major iteration was in January of 2008, when we released a version of the player which could handle third-party content and run in third-party pages. It was a dramatically more open piece of work and we got great buzz right out of the gate, with articles all over blogdom and a warm reception from users. From there we picked up the pace on the release schedule quite a lot, turning the crank on a new rev a month later. Along with user interface changes based on feedback, we introduced the ability to open XSPF playlists that weren’t available to straight AJAX or Flash apps, as well as an integrated screen scraper that could turn almost any page on the web into a playlist just by linking to it. A month later we did the last rev of the first version of the player. This had many fit and finish improvements, auto-attribution for MP3 hosts being deep-linked, a buy button with an affiliate program for web publishers, and a “Find in page” button to help you associate a track with the place in the page that it came from. The first major version was complete. We went into quiet mode to work on version 2.0, which will be out in alpha form very soon and will have significant improvements.

And with that, my part in this is done. There is an excellent team to run the show, the product has good support on the business side of Yahoo!, there is a healthy user and developer community, and the software has good market share. It’s time for me to let go and move on, and so today is my last official day at Yahoo!

I don’t know exactly what I’ll do next, though I do have general ideas about areas to explore. What I do know is that tomorrow morning I’ll sit down to start work on whatever comes next.

Thanks for everything, y’all. See you on the flip side.

Checking in

I suppose I ought to blog once in a while, so this post is to check in. Since last time I posted here the big news is that the software I have been working on in stealth mode for the last three years finally went public under the name of Yahoo! Media Player. It has gotten great reactions, been picked up on a bunch of notable pages, and been covered by well known sites like Tech Crunch. This software was originally going to be Webjay 2.0, but wasn’t released before the Yahoo! acquisition and ended up becoming the nucleus of a new Yahoo! project.

It’s not much like Webjay the site, which was a combination playlist editor, portal, generator, and social networking site. But philosophically it is still about media with URLs, openness, sharing, and interoperability.

It is also still about playlists. But it is a major twist on the concept. The player accepts all sorts of traditional playlists, like XSPF and M3U, as well as feed formats like RSS and Atom; it even has an integrated screen scraper which can use a remote web page as a playlist. But primarily the web page in which the player is embedded is the playlist.

Web pages are a very good playlist format. They are visually customizable, semantically rich, standardized, documented, open, flexible, decentralized and implemented world-wide. To the extent that they didn’t have syntax for everything playlist-oriented, we were able to use semantic HTML with a light sprinkling of extensions.

However I can’t use the player on my blog here, which is the reason why I haven’t been writing on this blog. This blog is hosted by wordpress.com, which blocks out Javascript. I need to move my blog to another host.

The code name for the player project, by the way, was “goose.”