From http://interactivepython.org/