Tuesday May 15, 2007

At JavaOne this year I went to a lot of talks, at least 30 of them.  After a few of them I started to notice some very bad patterns, antipatterns if you will, in many of the talks.  These are things one should never hear or see in a talk. JavaOne was filled with them, even from some very high profile speakers, from some very visible companies (and yes, many of them were from Sun).  If you are going to give a talk at JavaOne, please don't adopt these practices:

  • Give the same talk as last year.  Yep, I saw two very well attended talks (1,000+) attendees, where the subject matter (and even the slides) of the talk was the same as last year's talk.
  • Tell us about your broken demo - if you are not showing  a demo because it is broken, don't even bother telling us about it.  One talk had 4 demos in the slides, but 3 of them were missing, broken, or never written.
  • Tell us your demo is cool.  I'll be the judge of what I think is  cool.  One talk started with the speaker telling us he was going to 'knock our socks off', yawn.
  • Tell us you are skipping content because you ran out of time - If you are running out of time, adapt, but don't narrate the process.
  • Forget what was in your talk.  During one very high profile talk, the speaker got to a slide that said Demo. The speaker said ... hmmm I wrote these slides two months ago,  I'm not sure what I was thinking about when I wrote this slide. My advice - practice your talk, if you find a  slide for a demo that you can't remember, delete the slide (they let you delete slides right up until your talk).

Monday May 14, 2007

Tom Conrad of Pandora posted this on his blog yesterday:

On the night of May 22nd, Pandora will be making a series of announcements that are kind of game changers for us. At the very least it signals a new chapter in our story.

Well, I'm certainly curious. What would be a game changer for Pandora?  Some guesses:

  1. PandoraPod - Pandora figures out how you can take your favorite Pandora streams on the road - imagine a 4 hour long MP3 of your favorite Pandora Radio stations. 
  2. Pandorapedia- The Social Music Genome - Pandora opens up their music analysis to all - letting anyone contribute to the music analysis.  Think Pandora + Wikipedia  ==  Pandorapedia
  3. Classic Pandora  - Pandora adds classical music to its catalog
  4. iLikePandora - Pandora adds all of the social features found in the current crop of social music sites (friends, messaging, myspace plugins, tagging, youtube videos)  No! Please no!
  5. IndiependiePandora - Pandora becomes a label/venue/storefront for unsigned musicians (think Amie St.)
  6. Pandroid - Pandora replaces its musician analysists with computers trained to listen to music.
  7. PandoraPlatform - Pandora sets up shop in Sealand to avoid the compulsory licensing fees
  8. Radio Pandoradise - Pandora replaces their playlisting algorithm with Bill G of Radio Paradise.

 Well, I know lots of people who think about music discovery read this blog ... what do you think is this soon to be announced game changer?

During the intense week of JavaOne, I've built up a list of technologies that I want to explore after learning about them in Moscone.  Here are some of the things that are on my post-JavaOne To Do list:

  • Play with JFugue - its a simple api to use to create music.  Lots of fun.
  • Play with JavaFX Script - looks like lots of fun - but not fully baked yet.
  • Start using Netbeans 6.0 - there are lot's of really powerful features in NB 6 - including a whole bunch of new editing features.
  • Learn more about the Java Persistence API and JavaDB
  • Learn more about the Swing Application Framework 
  • Play with Sun Spots (I have a couple on my desk as I type this).
  • Work with enthusiastic interns that do amazing things.
  • Think about ways to use MPk20/Project Wonderland/Darkstar for building a shared music space
  • Internalize the best practices for wildcards, bounded types and bounded wildcards as put forward by Josh Bloch
  • Explore using the JMonkey Engine for the next generation of 3D visualizations.
Add this to the tasks that I delayed during the run-up to JavaOne, plus the inbox with 2,000 emails in it ... and it looks like it will be a while before I get caught up.  But it is all fun.

It was great to hear a little bit of FreeTTS during the technical keynote at JavaOne.  Tor Norbye gave a demo of JRuby integration into netbeans.  He showed how you can create a Rails application using JRuby and Netbeans.  In his app, he wrote a blog reader that would speak an article.  He used FreeTTS to to do the speech synthesis.  Tor's demo is online here on the JavaOne site. Tor's demo is about 25 minutes into the video. Unfortunately, the FreeTTS audio is barely audible in the online version of the demo. 

Thursday May 10, 2007

I was really looking forward to the GWT talk at JavaOne (and apparently so were many others, there seemed to be a thousand in the room during the talk).  The talk was presented by two of the core GWT team members.  They did a super job giving the talk - they were relaxed, were polished in their presentation, used humor, didn't get fazed by AV glitches.  They talked a bit about the philosophy behind GWT. They put some stakes in the ground - 'static typing  is good, dynamic typing is not so good', lots of sexy widgets not so important as user experience.   They want to bring software engineering to web development.  They claim (and I agree) that it is hard to engineer a pile of steaming javascript.  Java is much better for all its 'abilities' - maintability, adaptability, etc. 

They had some good metrics about how users react to load time.  If your app takes too long, your users will leave.  They have a 300ms goal for a load time of a rich GWT application - and they are working hard always to reduce load time.  They do this in a number of ways - they use the browser cache to help of course, they make the code they ship over the wire be very compressible, and they reduce the overall number of http requests (compare that to what is typically done with a traditional ajax app, where there may be many trips to the server just to get all of the javascript).  GWT build separage JS bundles for the different browsers, so if you are running in firefox, you don't have any IE specific JS.  One really neat optimization they are doing is called 'image bundles'.  Apps that have lots of static images can take a long time to load since each image is a separate HTTP request.  GWT can bundle all of these images into a single image. So your app only has to do a single HTTP request to get the images. They can then use windowing within this larger image to display the various images.  A very clever technique.  GWT also includes a timing framework so you can easily instrument your app so you can see how long it takes the app to load.

They showed some demos ... I was a bit disappointed here since they just showed the demos that are available on the GWT site. I was also disappointed that they didn't talk much about where they were going, what new features were on the roadmap.

During the Q/A one audience member asked about how to write a GWT app that could be crawled by search engines like google.  The GWT guys knew about this problem and they are indeed working hard on making GWT sites crawlable.

 All in all, a good session.


Wednesday May 09, 2007

JavaOne is just so much fun.  The days are filled to the brim with fun stuff. It's a programmers paradise.   One of the most amazing sites ever is walking into the general session and seeing it filled wall-to-wall with Java Programmers.  10s of thousands of them - it really is quite incredible.  I can't imagine how John Gage can appear so relaxed and at ease in front of so many people. I had the pleasure of sitting down and chatting with John for a few hours a couple of weeks ago - he seemed no different when on stage than he did sitting in a small room. 

One of the hardest things about JavaOne is that there are just too many different things going on.  It is hard to decide where to go.  I do server programming, web programming and desktop programming - I'm interested in tools, I'm interested in new language features, I'm interested in scripting languages.  There's just too much to chose from.  I had a chat brief chat with the woman who organizes all of the technical sessions. I suggested that they release the audio for all of the talks as a series of podcasts.  She thought that was a good idea.  That would keep me busy for a year, listening to all of the various talks.  I hope they do that.

 Some of the highlights for the day:  the afternoon tech session with demos of World Wind and IRIS.  The JavaPosse BOF and Neal Gafter's BOF on Closures. Neal did a good job convincing me that closures would be a good and simplifying addition to the language. I haven't heard any counter arguments yet.

 There's a whole lot of buzz around the JavaFX stuff.  I must admit I am a bit skeptical - perhaps the marketing folks have gotten ahead of themselves a bit.  F3 is totally cool and worthy of a second look, but I'm not sure if it is ready to be positioned next to Flash/Apollo and Silverlight as the next generation tool for developing hyper-rich web apps.

In the late afternoon, I gave my Search Inside the Music talk.  It was well attended, and was great fun to give.  The audience was totally engaged - they chuckled at the right spots, participated in the music similarity poll stayed awake even while I explained what a Mel Frequency Cepstral Coefficient was. They even interrupted the SITM demo several times with applause - that's never happened before. 

 At the end of the day we had an unofficial Java Music BOF - a bunch of us who do music and Java went out to dinner.  David Kolle  (JFugue) and Geertjann (I really did try to learn how to pronounce his name, but it is just not possible for my New England tongue to do so), Matt Warman (he makes a guitar tab program that uses JFugue),  and Michael Good (MusicXML) had some spicy Chinese food and good conversations about music and Java.

It is 8AM on Wednesday, time to head over for day 2 - lots of good sessions today too - Project Caroline, Effective Java Reloaded,  a GWT talk,  extreme gui makeover,  F3, darkstar, wonderland, java se media, take 2.  It will be a full day. Plus I really want to spend some time in the pavillion - I've only had a few moments to walk through - my biggest surprise there was seeing the Microsoft booth.


Sunday May 06, 2007

I arrived in SFO at around 1PM (after sitting 100 yards from the gate for a frustrating hour waiting for another plane to leave the gate). I checked into the hotel (the venerable Sir Francis Drake), and walked down to Moscone for the early registration and to see if anything was going on. There were lots of folks there ready to help. It took all of 2 minutes to register. I got my speaker badge, my nice J1 backpack (only a few goodies inside), and my lunch tickets. I was also able to register for CommunityOne - the combined NetBeans and Glassfish event.


I'm looking forward to a fun day tomorrow.  

Friday May 04, 2007

Lee Byron, a design/HCI student at CMU, has created this visualization of the listening history of a last.fm user. In this visualization, the x axis is time, and the y axis shows the number of plays associated with various artists. Lee calls this a 'layered histogram'. When plotted on paper, the visualization for 18 months of listening data is about 7 feet long.  The visualization is fascinating way to view how one's listening taste changes over time.  Lee's visualization reminds me of the Genealogy of Rock visualization that uses a similar (but hand drawn) layered histogram to represent the various artists and genres and how their popularities change over time.  Lee also has some other examples of visualizing last.fm listening data.  (Via Information Aesthetics)

Thursday May 03, 2007

Today is the third anniversary of 'Duke Listens!'.  On May 3, 2004, I posted my first blog entry.  At the time, I was still working on speech engines, and the blog name was "Duke Speaks!".  My first post that hinted about my interest in music information retrieval occurred a month later with this windshield wiper entry.    

Over the last 3 years, I've really benefited from this blog. First, by writing about this field, I actually remember things a whole lot better than I would otherwise.  The blog serves as my secondary storage, I may not remember all of the details about a subject or a company, but I may remember that I spent an hour writing about it, so I can look it up in the blog.  Second, the blog has opened many doors.  Many times I have blogged about a new music recommender startup only to receive an email from the CEO a day later.  I now have a virtual Rolodex filled with all of the movers and shakers in the digital music world (with one significant exception).

Three years and 576 posts later, I'd like to thank all of my reader for sending me emails, leaving comments and keeping things interesting here. I'd especially like to thank Sun Management for making this soapbox available without worrying that I'm going to say something stupid.

Everyone's favorite content-based music recommender radio, Pandora has gone silent for listeners outside of the USA.  Tim Westergren, CEO of Pandora writes:

Today we have some extremely disappointing news to share with you. Due to international licensing constraints, we are deeply, deeply sorry to say that we must begin proactively preventing access to Pandora's streaming service for most countries outside of the U.S.

It is difficult to convey just how disappointing this is for us. Our vision remains to eventually make Pandora a truly global service, but for the time being, we can no longer continue as we have been. As a small company, the best chance we have of realizing our dream of Pandora all around the world is to grow as the licensing landscape allows.

It is especially tough sledding lately for Pandora and other Internet Radio Stations as they struggle to survive in a world filled with copyright owners trying to extract every possible penny from every song play.

Wednesday May 02, 2007

 I've been busy preparing for my JavaOne talk.  I'll be talking about music recommendation, and content-based music recommendation in particular, as well as showing off the SITM demo.  I've added a few visualizations to the demo to spiff it up.   My boss calls the visualizations "gratuitous eye-candy" - which I translate to mean that he thinks that they are really cool.   I was particularly inspired by the latest Apple TV graphic to add some more interesting ways of grouping album art.  Here's the Apple TV image:


Here's a screen shot of SITM:


(Album artwork used courtesy of Magnatune.com) 

The SITM talk at JavaOne is on Tuesday May 8th at 4:40 PM - 5:40 PM.  I hope to see you there.

Tuesday May 01, 2007

Artist name matching can be a real pain in the neck.  First, there are all of those international spellings and affectations like KoЯn,  Die Ärzte,  宇多田ヒカ, and Spıal Tap. In addition, there are variations: "Emerson, Lake and Palmer" vs. "Emerson, Lake & Palmer", or "The Beatles" vs. "Beatles, The".  And finally, there are the many misspellings (500+ ways to spell Britney Spears).  A typical collection of MP3s has many such matching challenges infecting the artist, album and track names.   So what to do?  You can use DAn Ellis's method for artist name normalization, but this doesn't work too well for international names, nor does it handle misspellings.  You could use an audio fingerprinter like MusicDNS, that will extract an encoding-insensitive hash for an audio file that can be turned into a song ID, but if you have a million songs to process this can take quite a while.

An alternative is to use some of the algorithms specifically designed for name matching.  These algorithms can deal well with the typical errors found in names.  One matching algorithm, the Jaro-Winkler metric was designed by a couple of statisticians at the U.S. Census Bureau to explicitly deal with name matching. 

There's a good overview of the various name-matching algorithms in this paper, and there's a neat open source Java package that implements many of these algorithms called SecondString. 

Keeping with the tastemaker theme for the day, be sure to read Steve Krause's post: Is Predicting Hit Songs Futile?
Steve has been looking at the recent Duncan Watt's study on how social memes such as 'hits' spread through social networks.  Watts says that it is not tastemakers that influence how fast a new song spreads, it is how susceptible the audience is to a new idea. 

The principal requirement for what we call "global cascades"—the widespread propagation of influence through networks—is the presence not of a few influentials but, rather, of a critical mass of easily influenced people, each of whom adopts, say, a look or a brand after being exposed to a single adopting neighbor.




Most music recommendations are based on collaborative filtering algorithms.  Sites like last.fm, goombah, qloud and iLike use the 'wisdom of the crowds' to find related artists or songs.   Using these techniques yield pretty good recommendations, but they could be better.  For instance, in a collaborative filtering system, the opinion of a highly-engaged music listener, the 'super-fan' if you will, counts the same as the casual or indifferent listener.  A CF system can't tell the difference between a Pitchfork music critic, listening to the latest Deerhoof album over and over so they can write the review, and a jogger that listens to the latest Deerhoof album over and over because it is good music for running.  A music recommender should recognize that not all opinions are created equal, that some people really do know better than others.    

One attempt at focusing on taste makers is the site When Killed Like Roosters.  WKLR is a music recommendation site that, unlike a traditional social recommender, will give extra weight to the opinions of the highly-engaged music listener.  WKLR mines the taste data of music bloggers, those that care enough about music to write about it - and provides charts of the most highly rated music based upon these tastemaker ratings.   WKLR seems to have gone quiet over the last few months - so this is not an idea that is taking over the world by storm. Still, I think we will be seeing more CF systems that try to find the taste makers and the trend setters and give the opinions of these individuals more weight.

Sunday Apr 29, 2007

There are lots of news stories about our favorite social music recommender last.fm.  First, they acquired rights to stream all 800,000 tracks from the IODA catalog.   Second - the rumor mill is churning about Viacom trying to purchase last.fm with a target purchase price of $450 million.  But for the really big news, one has to read between the lines.  

If you are a regular reader of the MIR Research blog, you'll notice that Elias Pampalk has been talking about social tagging and the wisdom of the crowds vs. the algorithmic approaches used in academic research.  It seems that Elias has got the tag religion.   Combine that with this post Elias makes in his personal blog about his unnamed new job in London - and it is not hard to guess that Last.fm may be adding another top-notch MIR researcher to their staff.  That's great news for Last.fm - Elias is smart, very passionate about music and music discovery, and shares my love for interesting and engaging interfaces to music.  Last.fm would do well, to add Elias to the team.   Still, this is just a rumor ... waiting for Elias to confirm or deny.

Update:  Elias confirms.

This blog copyright 2010 by plamere