Excellent advice.
I'll add you need to take the fault upon your shoulders.
You see, this is real, he did not pick you guys as parents so it is not his fault it is yours and he needs to hear that so he will be less likely to repeat history.
Now, I know that is tough to swallow and even if your wife is a raging lunatic you picked her and you two gave birth to an innocent life.
Believe it or not if you squarely accept responsibility, (don't worry about ragging the mom, he gets that, and it will only hurt him and make you feel better) you may find a weight lifted from cross as well.
This in turn will help you focus on what it will take to "fix" problems with him, since they originate with you and your decisions of yesteryear.
Kinda goes like this:
We f..kup,,,, I f..kup I'm so sorry, however, I'm here now to correct my terrible decisions because I love you and you are my son.
Let him feel your remorse, let him give back to you what is yours, not his.
Don't let him hate woman, this will only lead him down the road you and your wife took, imagine that, should make you stomach turn thinking of your grandchild in the same position as you son, as you, as maybe your parents, ect.
Be a MAN and OWN IT! This will help him to be a better man then you.
I want my son to be a better man than I. He can learn from my mistakes only if I admit to failures as they occur, and then try again until I succeed.
I hope you understand me, it is a "dig", but only for the purpose of a brighter future of a Loving Father and his son! The past has to be reckoned with to walk confidently into the future.
Marriage can be tough, it makes it easier to pick a great woman if he knows what to look for. Casting dispersions on marriage or woman will only land him in crap ville, for he will not have the tools to find quality women, not spoiled girls. (there are alot of those running around now, too bad)