[Updated 11/17/2020]For the past 2 years since I first posted this article, I've been updating it and resharing. It...