yip we have been through as well (with both kids at around this age). We are slowly coming out of it....but generally when we are in a group situation I have to stay pretty close to him and just watch him and whenever he gets a sort of look in his eye I praise him about how nicely he is behaving and remind him about 'gentle hands'. If he does hit/push etc he gets removed immediately and has to sit beside me on the side for 2 mins. Before we go anywhere I remind him about gentle play and talk about the sort of behaviours I expect. But sometimes it is just easier to go down to the beach and let him run around and play by himself and not have to worry about how he is going to behave.
Just be consistent, let him know what behaviour you expect and what behaviour is unacceptable and continue with the one-on-one time with him and eventually it will get easier.