I love giving presents, and I love receiving them, but present-giving isn't what it was.
Take, for instance, this practice of giving to charity instead of giving a present. I'm all for giving to charity - I give to charity, of course I do - but when a friend gave me a water buffalo for an African village as a birthday present, I was seriously annoyed. I never got to meet the water buffalo; I don't even know what a water buffalo is (a buffalo that swims, presumably). I might, if consulted, have chosen a goat, or a pig, or a camel. But no. It was the water buffalo. I've no idea how this animal is, whether its recipients were more pleased with it than I was, even whether it has a name. Add to that the fact that my friend* presumably felt all warm and fuzzy, because she considered that she had given me a present, and she'd also given the Africans a water buffalo. This is cheating. If you want to give a present, give a present. If you want to give to charity, then do that. But don't try to combine the two, because it just doesn't work.
I was reminded of this because at my one of my grandchildren's schools there is a growing custom for the invitation to have this little addendum: "Michael (Josh/Paul/whoever) doesn't want you to bring him a present this year. Instead he would like you to give a donation to a leper colony (or whatever)". Like hell, he would. Poor little kid. The parents are trading their son's happiness for the warm fuzzy feeling.
* She's not a friend any more, but not because of the water buffalo.