Problems encountered while building the iTunes Jukebox:

Bluetooth:
It makes sense from a functional perspective to separate the iTunes Jukebox as fully as possible from the computer. After all, it is intended to be a device to free you from using your computer to organize your playlists, and to hide your computer from boisterous party guests. So, naturally, we decided to try to use a wireless protocol to connect the jukebox to the computer. We used a bluetooth module from Sparkfun that includes a breadboard component and a bluetooth dongle for the computer. After some testing we found that we were able to make a reliable connection to the computer. Using ZTerm, we were able to control and read the tower very reliably.
When we used the perl script to run the tower, however, we found that there were timing problems. We tried a lot of variations of delays in reading the tower, but ultimately, we couldn't get the timing to work without dropping values, so we decided to stick with a serial cable for now.

Breadboard broke down:

After rewiring the breadboard to remove some of the extraneous wire in preparation of putting the breadboard on the back of the tower, we noticed that the jukebox was no longer working. After some troubleshooting, we found that some of the pins on the breadboard no longer provided solid connections. We suspected that either the backing on the breadboard or the springs in the pin slots were faulty, so we created a prototyping board instead. This solved the problem of faulty connections, and it also gave us a hardier, more streamlined board that fit into the jukebox casing better.

Connectors:

The difficulties involved with creating four solid electrical connections with our "enhanced" jewel cases caused the more trouble than anything else in the jukebox. We originally tried to create connections by putting four screws at the back of the tower that lined up with four metal tabs on the back of the jewel cases. This didn't work very well because there wasn't much force keeping the cases against the contacts.

For version 2.0 of the jukebox, we decided to look into alternative connection methods. We considered many, including spring-loaded clips that the cases could slide into, using phone jacks and power jacks, and using tabs on the side of the tower that would grab the case as it slid in. The method that eventually worked for us was to use metal tabs, bent at a 45-degree angle, to hold the case on its sides as it slid into the tower. This method presented two problems initially. First, we found that the aluminum was not as conductive as we thought it was; it appeared to be covered with a thin non-conductive coating. We were able to sand away this coating, and the aluminum proved very conductive. The second problem was that we still got intermittent connections. This was when we were using copper-braided solder wick along the edges of the cases to make the connections. We found that when we used solid metal tabs instead of the solder wick, the connection was pretty good. We used two metal tabs on each side of the interior of the tower, with two matching metal strips on the each side of the case, for a total of four connections per case. We still found that there were occasional connection failures, but read below for how we fixed these using software.

Intermittent connections:

Even after the many connector methods we tested, we still found that the connection method we chose was not always ideal. Sometimes the tower's microcontroller will miss a case that has been inserted into one of the slots. We noticed that although occasional reads gave faulty data, the faulty data was sporadic and not consistent. Thus, two or three reads in a row never gave the same faulty data. So every time we read the tower, we actually do three readings and compare them to each other. If there are discrepancies in the data, we take three more readings, and continue doing so until the data is consistent in all three reads. This smoothing algorithm works quite well and we rarely if ever see hiccups in the jukebox's function.