iTunes Rating Distribution

As an adjunct to another project I am working on (basically an extended version of the experimental writeup I did about iTunes Ratings), I had cause to wonder as to the distribution of ratings in my iTunes library, and in other peoples. I may be unusual in that when I import an album, I grab the whole lot. Even if I really only like one track. I just feel some day I may want to listen to the whole lot! Anyway, I came up with the following script to get the data. Mac only, I’m afraid. Possible to write a much slower version that scans the XML file manually, but I’ll leave that as an extension to the avid reader.

 1    #! /usr/bin/env python
 3    import Foundation # Required PyObjC installation.
 4    import os
 6    library =  os.path.expanduser('~/Music/iTunes/iTunes Music Library.xml')
 8    db = Foundation.NSDictionary.dictionaryWithContentsOfFile_(library)
 9    tracks = db[u'Tracks'].itervalues()
11    ratingcount = {}
12    for i in range(101):
13        ratingcount[i]=0
15    for track in tracks:
16        try:
17            ratingcount[int(track[u'Rating'])] += 1
18        except KeyError:
19            ratingcount[0] += 1
21    fp = open('RatingData.csv','w')
22    for i in range(101):
23        fp.write(str(i)+","+str(ratingcount[i])+'\n')
24    fp.close()

Plotting this data gives the following graph: Clearly, there are a couple of spikes, most likely from having rated tracks initially on a normal iTunes scale (0-5 stars). I’ve changed the plot scale so you don’t see the zero-rated tracks, as they skew the data totally, and most of them are in fact unrated, rather than zero rated. If I scale my ratings down to full stars (and discard all of the unrated tracks), then my data looks more like: Which is what I expected. And shows that I am probably pretty harsh on my music library - or I dislike most music a bit. • The final plot shows when rating as half-stars, that is, rounding down to the nearest 10, and discarding unrated tracks.

The Toilet Seat Problem


The toilet seat problem has been the subject of much controversey. In this paper we consider a simplified model of the toilet seat problem. We shall show that for this model there is an inherent conflict of interest which can be resolved by a equity solution.

We’ve found the ideal solution is that the Toilet Seat Lid is to be left down at all times: then everyone using the toilet incurs the same cost each time they “perform an operation”, be it a #1 operation or a #2 operation.

What is

Apparently, even some of the WoW boys who are on ADSL had some delays waiting for the update to download, and someone from my guild, who communicate regularly outside of WoW (we do all know one another in Real Life) posted a link to a website: This site begins with three puzzles requiring a little bit of knowledge to solve: the first one took me a matter of minutes, although I had to use Google to find who actually said the quote. Reorganising the puzzle pieces was pretty simple, and my first guess (of Einstein, who died in 1955) was incorrect. The second puzzle took a little longer, but only because I didn’t have access to a 1 dollar bill. Again, Google helped out in finding out the latin phrases on the back. I didn’t bother with the date, as there were only a couple of characters used in this simple substitution cipher that were from this section of the key. Then, as there were a finite number of possible answers to the puzzle, I just tried several of them before I lucked on the right answer. I can’t even remember what answer I put in… The third one took some thinking. Originally, I had tried one method, and for some reason got fixated on this. It wasn’t until I thought a little more about it, and expanded my ideas a little that I solved it. I had at this stage obtained a small audience of students, and they were very impressed with my solving of the puzzle. I can guarantee that in total, the three puzzles took me around 20 minutes to solve. And that was with some breaks as students needed assistance. If I’d been at a machine with a python interpreter installed, I probably would have done it in about 5. Finally, I was into the website proper. I read a little about what was from the about link, but then happened on the link just above it. This opened up a new page, with three symbols that can be drag-n-dropped into two spaces, which then activates a button. Depending on the combination of the symbols, a different page is loaded. Since there are three symbols, and there needs to be at least one symbol in a space to activate the button, there are twelve possible pages that can be loaded: - 1 1 - - 2 2 - - 3 3 - 1 2 2 1 1 3 3 1 2 3 3 2 Where - is no symbol, and 1,2,3 are the three different symbols. This however, just creates more confusion. Several of the pages have email messages, with the addresses suppressed, and rather cryptic content. One contains a list of images, of people (I assume previous members of cforce) with their faces blacked out. Another has a movie, which I didn’t watch, and yet another has a page filled with 1s and 0s. I may get around to decoding this, if I feel like it. There is also a page with a list of articles about games like iLoveBees, which was created by a company to help promote Halo 2 before it launched. Online games, which cross over into real life. Think of The Game with Michael Douglas, and take out the life threatening aspect of it, and that seems to sum it all up. These articles are referenced in one of the email messages I mentioned above. The other pages contained various images and text - one had a fancy JavaScript setup where hovering over a portion of the invisible image made another part visible. I’ll get into this with Firefox and make all of it visible if WoW doesn’t finish downloading soon. Yet another had a group of white and black boxes arranged into a grid. So, what’s it all about then? It seems to be a site run by a student club/association at a University somewhere, that pride themselves on being somewhat smarter than the general population. As usual, Uni students always think they are smarter than they actually are. I know, I used to be one…

Shell Calc

Whenever I need to do any calculations, I generally drop into python and do them from there. However, I came across a neat tip over on Mac Geekery: When You Need A Calculator. I’ve modified is ever so slightly so it goes into a .profile instead of a .bashrc:

1    function calc
2    {
3        awk "BEGIN {print $* ; }"
4    }



What a cool Mum! (from xkcd)

WorthlessDidoCafé Del Mar • Volume 8