John is a biblical name. Not naming your kid that because it’s also occasionally used as slang, is pants-on-head stupid. There’s also nothing wrong with Charlie.
Dick/Richard is the only one here I agree with. That is extremely commonly used slang, so it makes sense.