The Suvius.Flamingo project is not quite dead although it is, to go with the motif of the National Geograhic show playing behind me, about ninety percent down the python's gullet. But let's see what we can't glean from the carcass.

I haven't linked to the application because I'm scared to even check to see if it still works. Last I checked, Windows Media Player 11 had made the application all but useless so I kind of abandoned it. Now, in a fit of PD, I'm going to see if we can't all learn something from resurrecting the app and re-doing it in a TDD way. So with that, I shall carefully document its development from start to finish. Or at least until something else shiny catches my eye.

For those that want to play along, I have a Subversion repository and will post the details for it in the near future once I have created a read-only user. If you *really* want to gain my undying gratitude, roll up your sleeves and ping me to become a developer on the project.

The primary goal is learning. If we end up with a working application at the end, all the better.

First, the boring part: defining what the application is supposed to do. This will be a moving target but in a good way. Mostly because I'm reserving the right to change the requirements to make development (and blog topics) more interesting.

At a high level, I'm looking at building a front-end to my online music library. It currently resides at as a directory list of about 300 songs. The other 2500 have yet to be migrated to the new server.

If I were to free associate some features, they would include:

  • Ability to search for music based on one or more criteria, including title, artist, and genre
  • Ability to chain search filters together to form a playlist
  • Ability to play the playlist in at least one popular media player in a user-friendly way
  • Ability to save a playlist
  • Ability for an administrator to upload additional songs to the database and glean the metadata from it (as opposed to keying it in manually)
  • Ability to update metadata and have it persisted not only in the database but in the underlying file as well
  • Ability for users to rate a song

Woman, I'd better stop there or I'll be here all night. Suffice it to say, there is a lot more I could throw in....ah, what the hell:

  • Ability for any user to tag a song with keywords
  • Ability to search based on tags
  • Ability to apply more than one genre, artist, album, etc to a song. This might be combined with the tagging feature. E.g. Wish You Were Here would be tagged with Pink Floyd, Roger Waters, David Gilmour, Rick Wright, Nick Mason, Wish You Were Here (album), A Collection of Great Dance Songs (album), classic rock, acoustic
  • Ability for users to add comments about a song (possibly in a wiki-like fashion)
  • Ability to share playlists
  • Ability to link songs (i.e. link to other versions of a song). This would also be user-driven

Let the music begin.