Let's talk about the part where Sherlock starts insulting himself. I've never seen so many insults in one only phrase and, come on, no true reason to do so. I don't consider a man who does justice and helps the police to arrest murderes a ridiculous one, he does a lot of good to compesate for his flaws. IMO, the part of the speech where he says he's rude is acceptable, the part where he says he never expected to be somebody's best friend is understandable, but when he says he's a ridiculous man and he puts it all together seems too dramatic and exagerated to sound true to me. I just don't see Sherlock Holmes doing this, because he has no reason to (actually, I don't see anybody doing this).
Well, I'd be really touched if he simply said he never expected to be someone's best friend, John is the kindest and bla bla, after all, the speech was supposed to be about John, not him.
P.S.: "idiot and obnoxious ass"?? I've met people who deserve these words more than him.