I found an intriguing discussion here on stack overflow.
Part one of discussion
Part two of discussion
Part two of discussion continued
Part two of d