Since he's a waiter, he should accept that some people tip more than others. He should have just let it go, instead of making a big deal out of it.
Surprised you didn't go inside and talk to a manager about him shoving you. He should have been fired. And you had witnesses.
It sounds like an honest mistake on your part by forgetting to carry a few extra bucks to tip this asshole.
Tipping is bullshit anyway, i hate doing that. Of course i do it, but restaurants should just pay these people more money an hour. I'll pay more for the food if that's the case, i just hate tipping.