This is a great document written by Kevin Keely, on his blog The Technium original source
This is in no way an attempt to plagiarize Kevin Keely's work (I could only wish I was so wise) but to provide a software friendly way to consume all of the great advice contained in this particular document