ListenApp! SoundCloud integration

Sudara from alonetone (a non-commerical/open-source site for artists to upload and share their tunes) was kindly flown up to the hack day by SoundCloud to attempt to integrate soundcloud's music *with* alonetone's music in a in-browser music player.

This player, ListenApp! was build several months back as a prototype, and allows you to browse all artists on alonetone and their songs quickly. It's built with Sproutcore, which is just coming out of beta and into a final 1.0 version.

Technical Details

ListenApp! is built on sproutcore, which has a great MVC architecture for *client-side* browser apps. It allows you to suck down 100,000 records in json from somewhere, store them in the client, and then render them in the DOM as needed (this is the hard part with large data sets).

It also supports incremental loading and rendering. Meaning, knowing that the list of artists may be 100,000 long, it'll let you scroll through a list and pull records from the server and populate them into the DOM as required.

(Attempted to be) Built by

  • Sudara (sudara at alonetone dot com)
  • Design of the player done by Samo

    Status

    http://myfiles.typepad.com/filipino_nurses_2_us/images/failed_stamp.jpg

    There were a couple fundamental issues that prevented completion to any sort of desired or even demoable state with regards to soundcloud integration. My apologies to the other crew @ hackday for not standing up and showing you my FAIL. It would have been uninteresting, promise!

    Here were the issues I ran into:

    1) The soundcloud API was having some performance issues and requests that should have been quick were for some reason taking 3-10 seconds on average. This meant that a caching proxy would be needed (which usurped a bit of my time as I went down a rabbit hole and investigated doing this as a pre-req) to be able to do something like incremental loading of data.

    2) The fundamental idea turned out to be fairly flawed - alonetone is a small community of ~1500 artists and so people there are artist centric, enjoy keeping up with who in new, etc. ListenApp! (at least the prototype) basically only let you browse and search by artist. It would suck down all artists and let you scroll through them looking for name, checking out who's new, etc. On soundcloud, there are over 100k artists, so this is not really a desirable entry point.

    It would have been better to attack SoundCloud from the angle of "hottest tracks" or "latest tracks" on alonetone and sproutcore - the issue here was then that I'd have to reengineer the existing app AND integrate with the API, which was impossible in the timeframe available. (so I still tried to stick with the original plan and browse by artist)

    3) The Sproutcore framework is a combination of highly innovative and incredible ideas. However, the reality is that it can be fairly difficult to work with from a developer point of view due to obscure bugs, conflicting or lack of solid examples, etc. Part of this is the fact that it is not yet a 1.0 final product. Long story short, it historically has required of me (maybe it's just me repeatedly being slow?) a large investment of time to jump hurdles when encountered, or figure out bugs when the occur. And of course, at the hack day I invested more than a few hours just figuring out how to get the local proxying I needed to work working (required hacking sproutcore a bit) and how to get incremental loading to work in combination with incremental rendering.

    Conclusion

    To some degree I was able to get it technically "to work" with incrementally browsing soundcloud's artists, but between some problems with sproutcore, long delays with the soundcloud API, and what likely was my overoptimistic expectations, it was a FAIL :)

    Thanks

    Thanks again to the kind folks at SoundCloud who helped me out during the hack day. Also: The meatballs were delicious.