Abbey RoadAmerican IdiotOK ComputerAbsolutionSgt. PepperOrigin of SymmetryIn RainbowsCarnival RideA Rush of Blood to the HeadWhatever People Say I Am, That

iTunesRegistry.3.0

Welcome to the (newer) iTunes Registry. This site was first created in 2002 (the day before Thanksgiving, third week in November in the US) by me, mainstreetmark, when I wanted to know what album was being played the most. It seems iTunes doesn't do any sort of clustering of albums or artists in anything it does (back then), so I wrote a quick importer and parser of the iTunes XML file in the only language I was practiced in at the time: PHP (and MySQL).

I happily discovered that my most played tracks at that time weren't the depressing "girlfriend just dumped me" music I thought I had been listening to, but rather something a little more, um, angry. So, in an effort to prove this to some friends, I threw the program online, and in about 2 and a half seconds, they wanted to run it as well. I spent the next several days on the boat (I live on a boat) making the program work in combination with any iTunes XML file it happened to know about. The current logo reflects this time (plus a few version number stickers), being the button layout of a third-generation iPod, which I still own.

The website underwent near constant refinement and some of the original features were dropped entirely in favor of focusing on the really interesting stuff, the graphs and charts. Near Christmas of '04, much of it was rewritten to achieve much greater database efficiency (switching to numeric keys linking to another table to hold the human-readable text) and the practical limit of tracks stored in the database went from 3 million to over 20 million at it's peak.

In 2005, the site was featured on "Attack of the Show" (aka "Screensavers") without warning, and it totally sacked the database server. Being on the show was an amazing honor, but one I wasn't prepared for. Most people that visited that day were met with long delays or errors, until I managed to cram in a database throttle. If I had been farked, the server would have caught on fire.

In the spring of '06, the Xserve G5 that the site was using as a database server got so busy serving the Registry that it started to interfere with other sites on the box and so the Registry lost access to a fine database box, and began life as a non-databased database-driven website, living as just another <VirtualHost> using a shared database with other sites on the same box. Fun times! Pretty much, just the forum was running during these dark times.

In the summer of '06, the site underwent a near complete rewrite, this time with a bit more database-friendly design and definitely a more programmer-friendly design. Reports and Graphs can be written in as few as two lines of code. Additionally, as promised during the Pledge Drive, the source of the website is open to all, via svn, allowing the internet community itself to both run the site locally, or contribute code to the functioning website.

Finally, during the last half of '07, it became clear that no matter what, using SQL joins on tables as big as those used by the Registry was going to use more horsepower than I owned, so with the encouragement of one of my programming buddies, we began work on iTunesRegistry 3.0, which was to be a total rewrite, who's number one goal was to remove JOINs from the entire site. Well, scheduling and hardware issues screwed things up pretty quickly, but version 3.0 took shape, and does so with no joins. Of course, there are millions of smaller queries happening all the time, which may or may not cause trouble in the future. And, at this moment, the source isn't open, because precisely no one took interest in the open-sourcyness.

Goals and Ideals of the Registry

What's new in 3.0? (so far)

What's new in 2.0?

"A/A/T" means "Artist, Album or Track".

Tools used in the development on this site:

What can you do?

This is a community site, so it does rely on the community. Here's what you can do in order of importance.