Quite interesting and useful talk from Dave Thomas, back from 2009.
Self - if you understand "self", and if you can work out what "self" is, at any point in your running code, you basically understand all there is to know about metaprogramming.
If your doing metaprogramming, whenever you get stuck trying to work out "How come thats nil", I guarantee, if you track the value of self, you'll understand it"
- Instance variables: look up in "self"
- Methods: look up in self's class