You have a lot going on. I would suggest a class with a focus on parenting toddlers, it would probably be very helpful.
In the meantime, limit outings while you work on the behavior. He is getting an Awesome reaction from you when he does something bed. Instead of raising your voice try this instead:
As you come into a situation remind him how to behave and what the consequence will be if he doesn't (CB, remember to use gentle hand. If you are mean we have to be all done). When he does test you (and he will - lots) say in a very calm, low tone, and disappointed voice "Oh, your forgot to use gentle hands. We are all done" (or similar for the given situation) Then pick him up and carry him to his crib (I assume he can't crawl out yet) as you put him in the crib tell him "We need to remember to use gentle hands." Then leave him in it for 2 minute - no matter how hard he cries or screams. Then come back and calmly say "You need to remember to use gentle hands." and remove him from the crib. He then can have a hug or similar to sooth him.
This is why you need to stay at home for a while, so you can easily remove him from the situation, and not give him any attention during the time he is removed from the situation. The most important things to remember are:
1. Remind him before the situation how to behave (if you see him coming near you, remind him "use gentle hands" that way he has been warned prior to hitting you or pulling your hair.
2. Stay calm, use a calm voice and calm body movements, it will be very hard but the less reaction he gets from you the less of a reason he will have to act out.
3. Act immediately, don't give him a second warning. Just remind him what he was supposed to do as you carry him to his crib.
4. When crib time is over, remind him of how he is supposed to act.
This should help to curb a lot of it over time, it will take a lot of work on your part and you will be exhausted. But after a week or two or so (I hope it will start working that quickly) you should see a decrease in behavior. Do note, you will probably see an increase in behavior at first as your son tests you to see if you will stay consistent.
And most importantly, when he is doing something positive - even just playing with a toy correctly, praise him a lot with a description "You are rolling the car on the floor" you are having so much fun!" This will help him to learn he can get attention for positive actions.
There may be more to it than attention seeking and getting a reaction out of you, so I do hope you will look into a local parenting class that can give you a large variety of techniques to use. I agree to stay away from spanking, research out there shows it does no good long term and can even be harmful.
And, you mentioned that some of the time he does it when he is tired or over stimulated. Start to become more aware of these times so you can do something about it, like find a calming activity or move to a more calming place until he can recenter himself and keep himself calm. Even though this reply focuses on a punishment model, the best way to help curb behaviors are to find positive outlets and alternatives and to set up the environment so the behavior doesn't occur in the first place. Again, a parenting class can teach you are variety of ways to positively interact with your child.
Here are more suggestions on positive interactions you can have with your child that should help with preventing behaviors. Look for the Newmom! Posts.
http://forums.parenting.com/showthre...light=positive
http://forums.parenting.com/showthre...owing-tantrums
http://forums.parenting.com/showthre...light=positive
I know I wrote a lot, I hope you find it helpful.
State Certified Early Childhood Special Education Teacher
New Mom as of March 2009!