IPython Notebook:

Development Lessons

Brian Forst

Not your typical intro

 

We won’t dive into:

  • Rich display
    • equations, images, sounds, movies, graphs, HTML
  • ZeroMQ architecture
  • Debugger
  • Parallel computing
  • Securely sharing a notebook server
  • Notebook Viewer
  • etc.

My History

PyCon 2012

Installing

Hyping

PyCon 2013

Learning

Learning

Requests

HTTP

Server idiosyncracies

It was amazing!

Let’s see why

Why did this succeed?

Reduced Cognitive Load

Intrinsic

Germane

Extraneous

Clear Code Interfaces

Interfaces above and below were well-specified

Internal interfaces were in flux

Easy Access to Levels of Abstraction

"Understand one level of abstraction below the one you normally work at."

Corollary

"Have ready access to the layer of abstraction below you."

Fast Iteration

"The power of successive refinement and iterative development. Impossible without continuous aggressive refactoring." - Uncle Bob Martin

Small Pieces, Well Factored

Screen-space constraints forced me to write smaller functions, classes, etc.

Fast iteration helped me mercilessly refactor.

Bonus

Final, working code was there at the end

Why did this succeed?

  • Reduced Cognitive Load
  • Clear Code Interfaces
  • Easy Access to Levels of Abstraction
  • Fast Iteration
  • Small Pieces, Well Factored

Questions?

Installation

  • Pip
    • pip install --use-wheel ipython pyzmq jinja2 tornado
  • Pre-built Python Distributions
    • Anaconda
    • Enthought

Resources