1. One or more computer-readable storage memories embodying computer-readable instructions, which, when executed, implement a method comprising: obtaining musical preference information from a social network service for a user of the social network; determining criteria for shuffling a song list based on the musical preference information obtained from the social network; and generating a shuffled list of songs for the user by: selecting a first song from a current location in the song list; determining whether the first song satisfies the criteria that are based on the musical preference information; and if the first song satisfies the criteria that are based on the musical preference information then keeping the first song in the current location in the song list; and if the first song does not satisfy the criteria that are based on the musical preference information then, attempting to find a second song in the song list that satisfies the criteria by randomly selecting the second song from the song list and checking whether the second song satisfies the criteria, swapping the first song and the second song if the second song satisfies the criteria, and if a number of attempts to randomly select a song that satisfies the criteria exceeds a threshold number of attempts without randomly selecting a song satisfying the criteria, then keeping the first song at its current location in the song list, the threshold number of attempts corresponding to at least one of a fixed number of songs or a number of songs relative to a number of songs in the song list.