Check out
Andrew Horwitz’s
Shuffle