can anybody explain or point to explanations of how MVC, MVP, MVVM differ?

relevant wikipedia articles read, to my eyes, exactly the same. So how do I construct in my mind a mental model differentiating these, for both planning my projects and recognizing these patterns in other people’s work?

Also, a barely related question. I have been making a WinForms gui lately where I needed to do pretty thorough unit testing. So instead of just displaying strings in the widgets I used the notion of “screen model” (which is unit-testable without bothering about popup dialogs and the like) which then gets rendered onto the widgets as such. Of course, that is not in any sense the (domain) “model” of MVC which is a wholly different thingie. So did I just stumble upon some well-known pattern of whose name I am being woefully ignorant?

ok, here is a nice quote from here Overview of the ModelView – ViewModel (MVVM) pattern and data-binding – Russell East's blog

Yeah, nooooow I get it :-).

Are there code samples out there that would illustrate how the same thing is done “canonically” using each of the patterns and then compares/contrasts them? Or maybe, if all else fails, a cows-and-milk explanation?