I have been studying this for a while and there are other great HN posts on this subject:
https://news.ycombinator.com/item?id=18490437
https://news.ycombinator.com/item?id=15534034
https://news.ycombinator.com/item?id=14797284