The One True Index

Posted on November 6, 2006 by psu

There is a great scene in the film High Fidelity where one of Jon Cusack’s buddies comes over to see if the wants to go clubbing, and finds Cusack on the floor of his apartment surrounded by piles of records. He asks how he is filing the albums, and after some discussion, Cusack spills the beans: “Autobiographical.”

I don’t think I own as many records as the character in High Fidelity, but in my few decades on this Earth, I have accumulated a small pile of albums and CDs. I don’t find storing the albums much of a problem. The records don’t take up that much horizontal space, and it’s easy to keep them in roughly alphabetical order.

However, I’ve never had any luck finding a nice filing system for CDs. Multiple factors play into this.

  1. I hate jewel boxes. They are ludicrously large for what they do. But without them it’s hard to browse the disks by the spine of the box.

  2. No good shelving.

  3. Internal fragmentation. I always find myself running out of one sort of room or another and needing to shuffle the disks around and constantly refile them.

The result of this is that for the last eight or nine years, I’ve just put my CDs in a big pile.

To make things worse, the advent of iTunes means that I now spend most of my time interacting with my CDs via their ripped representation in the computer. The computer makes it easy to find the music, you just type in the search box. But now I have a tendency to rip a disk and completely forget about it, and then it is lost forever. You really need to keep the disk around for the little liner book and other information that iTunes misses.

Then, one afternoon, I found the perfect solution. It is axiomatic that there is one true way to keep track of information in a computer. You store your database as a collection of items, each of which has various distinguishing attributes. Relational database technology teaches us that organizing the information by any given attribute is suicide, since it makes reorganizing based on other atttributes hard.

Therefore, take your item and give it a single unique immutable serial number. Then, on the side, build a bunch of indexes that map the various attribute values to the serial number.

We practice this method on this here weblog. Each article gets a number and then google maps keywords to article numbers which happen to be encoded in the URL.

For CDs, the logical way to apply this principle is:

  1. Give every CD a number as you rip it.

  2. Put the number in iTunes. Then you can find any CD you own just by searching iTunes the same way you always do.

  3. Store all the CDs in a box, ordered by serial number.

This system avoids most of the problems that used to annoy me. I never have to shuffle the disks to make room, because I’m only ever appending disks to the collection. I can store the disks in handy little plastic sleeves because I don’t need the jewel box spine to allow me to find them anymore. Finally, I can fit most of my CD collection into a relatively small space. A couple of dresser drawers.

There are only two disadvantages, one of which is inherent in CDs as a medium:

  1. You can’t spend an afternoon running your finger along the spines of your records and looking at the nice huge covers. This is because CDs only come with teeny little thumbnails.

  2. The index is stored in iTunes, so I have to be careful not to lose it.

These are minor annoyances at best. The new album view in iTunes is like a little virtual bookshelf that never runs out of room, and I still have my actual LPs to fondle when I get the urge. I also have to back up all those songs anyway, lest my iPod become as a brick.

So, there you have it. For better or worse, database engineering intrudes into yet another aspect of daily life. I’ve been slowly ripping, numbering, and filing my disks over the last few months whenever I have a few free minutes. At the current rate, I should be done in a few years.


I should note that this scheme was not entirely of my devising. A similar idea came over the chat system (thanks pdinda) one afternoon.. My only real contribution was buying the dresser drawers.