A lot of problems faced by beginning Rubyists are caused by not understanding `self`. In this post we'll take a deep dive into `self` under conditions both common and uncommon.