I wish I had a video to show you how awesome this is. I just checked it in.

My lights can now fade between colors. The code is still in a partially hideous state, but It works! After a while of procrastinating, I finally decided to just do it.

I fought with it for an hour or so, and got it to work properly after a while.

I'm probably doing it poorly because of my decision to push fading onto the raspberry pi, but it works.

Anyways, my idea was to make them fade nonlinearly.

#fade in 64 steps. Convenient, since the arduino has 256 steps of pwm, and 64^(4/3) 
#is 256. 
exp = 4/3.0
for i in range(65): 
    current = list() 
    #fade each of the 3 colors
    for c in range(3): 
        if end[c] > start[c]: 
            current.append(int((end[c]-start[c])/256.0 * i ** exp + start[c]))
        else: 
            current.append(int(start[c] - (start[c]-end[c])/255.0 * i ** exp))
As usual, the code is on Github. I haven't implemented fading in the web interface yet, but that's on my to-do list.

Lights fading!