random python internals: - GIL behavior (what it actually protects, why threads dont help CPU work) - descriptor protocol (__get__, __set__, when does it matter) - dunder methods (which to override for what behavior) - gen/iter semantics, what does yield from do rapid back and forth.