© Roy Tanck, code available on GitHub.