This post is adapted from my answer to this Stack Overflow question. If you want to start from the beginning of the universe and build out, go read that one. If you prefer to start with something you can touch and work backwards, here we go.
Ruby likes ducks. Which is to say that when we're coding, and we have an
object, we don't particularly care what kind of object it is, so long as it
responds to the messages we send it. It might be a
Duck or a
Child or a