Check this recent similar topic for the intro. Then ask related questions here to keep the discussions readable.