There's also this[1] series of blog posts by Brett Beauregard that speaks of a few improvements for real-world implementations.
[1]: http://brettbeauregard.com/blog/2011/04/improving-the-beginn...
[1]: http://brettbeauregard.com/blog/2011/04/improving-the-beginn...