These topics are extremely hard to solve from scratch yet they are distilled pretty well in the above articles and they include a further reading section.
I would implore others to have a gander. I wish the same could be said for their documentation.