Archive for September, 2013


Preface: I am taking a class on recommendation systems. One of our assignments was to analyze some recommendation system. I chose Spotify!

Link to Recommender:

On this page, if you have Spotify and have listened to some music before, you will find a list of music and concert recommendations. The music recommendations come in variety of forms and will be the focus of this analysis.

Related Artist/Album/Song Recommendations

The first type of recommender that you will see on Spotify is one that recommends music based on what you have previously listened to. This includes similar artists and new songs/albums by the same artists. Other times it recommends that you listen to something you haven’t played in a while as well. All of these types of recommendations seem to operate in some similar manor using a combination of aggregation and categorization based filtering.

Domain: Music, Songs, Albums
Purpose: Education, learn about new content
Recommendation context: Users looking for something to listen to either during a listen or before a listen
Whose opinion: Experts, most of these recommendations seem to be based on time period and genre groupings. For example if you listen to 80s rock it won’t recommend 2000s rock or vice versa unless you listen to rock from both time periods. These recommendations are either due to some automated categorization algorithm or perhaps curated by a team who manually dissects the genome of songs and artists.
Personalization level: Persistent, based on previous usage. In fact, they are so persistent that if you haven’t listened to something in a while it will recommend that you give that song or artists another listen.
Privacy and Trustworthiness: Low risk. Your discover page is not automatically shared and other people’s opinions/tastes do not appear with this particular recommendation type. It also seems that there are not many business rules involved. There does not seem to be a motive beyond discovery for this recommender.
Interfaces: Input: previous listens (implicit), favorites (explicit); Output: Recommendations about similiar artists.
Recommendation algorithms: Content based filtering

Friend recommendations

The second type of recommendation that appears is caused by a user’s influencers’ implicit or explicit shares. Influencers include Facebook friends, musicians and artists that a user subscribes to on Spotify. Within this category there are a few recommendation types. One of these types is a pure aggregation of music that your influencers have publicly shared. A share can be an actual “share” behavior, or can be the result of a more subtle action like adding music to a public playlist. A second type of recommendation that is more implicit comes from influencers describing their own artist influencers. For instance, Spotify will tell me when a friend subscribes to some artist and tells me that maybe I’d be interested in subscribing to them as well.

Domain: Music, Songs, Albums
Purpose: Community
Recommendation context: Users looking for something to listen to either during a listen or before a listen
Whose opinion: Ordinary “Phoaks” (people helping one another know stuff), like minded listeners that you opt’d in to following.
Personalization level: Persistent and Ephemeral. Your friends stay persistent, but what they are interested in from week to week changes. The recommendations here also change as a result.
Privacy and Trustworthiness: Medium risk. Spotify has often been criticized for revealing too much data about what people listen to and are interested in. They do allow you to be more private about listening habits; however, it is very easy to publicize more information than intended on the platform.
Interfaces: Inputs: Opt-in following of a friend, musician or playlist (explicit); Outputs: Recommendations about what people are interested in. There may also be some filtering done here or at least sorted by best match.
Recommendation algorithms: Aggregation and personalized collaborative filtering


Spotify has a number of other features that funnel into the discover page. While listening to music on their desktop app they expose music that your friends are listening to (when they are publicly listening). This mechanism allows you to follow your friends immediately and listen to what they are listening to. At other times Spotify notifies you when you have a new follower and asks if you would like to reciprocate and follow back. Spotify also has a radio feature that performs operates in a similar manor to Pandora. All of these features seem to feed off of one another continually increasing the amount of data they are able to collect about a given listener.


You remember that really awesome conditional in HTML that you used to prevent content from showing up in outlook’s desktop client. Yea, that doesn’t work anymore.

If you use:

<!--[if !gte mso 9 ]><!-->
content here

You’ll feel great… but only for half a second. Only until all the hotmail, and icloud users complain that their emails aren’t rendering properly. Oh and trust me those people exist. The above code actually breaks the page really magnificently in those webmail clients and various parts of your email will go missing.

So what can you do? Well, I found this neat css property:

<div style='mso-hide: all;'>

It works similarly, but there are caveats of course. This property hides the internal content, but things like height, padding and margin may still exist so you need to zero those out as well. This, of course seems to not always work on all elements.

When is html email going to start sucking less? Why can’t we get all this information in one place. This is why we can’t have nice things people!