The post itself has a pretty good list of 10 sources of non-determinism:
1. timestamps
2. dates/times/authors etc. embedded in source files
3. timezone sensitive code
4. directory order/build order
5. non-sanitized data stored into files
6. symbolic links/paths
7. general tool inconsistencies
8. toolchain
9. build information / tunables / environment
10. making sure that the source tree has no local changes