Please see the blog post for more information.

All of the code here is available on GitHub.