Brought to you by NumFOCUS Foundation and O’Reilly Media
The official Jupyter Conference
Aug 21-22, 2018: Training
Aug 22-24, 2018: Tutorials & Conference
New York, NY

Designing for interaction

Scott Sanderson (Quantopian)
5:00pm–5:40pm Friday, August 24, 2018
Average rating: ****.
(4.67, 3 ratings)

Who is this presentation for?

  • Software engineers and library authors

Prerequisite knowledge

  • Familiarity with at least one programming language usable from Jupyter
  • Knowledge of Python (useful but not required)

What you'll learn

  • Learn how to identify trade-offs related to interactive usage in software that you use or write
  • Understand how to structure your software to make it more usable for interactive computing


One of the defining features of Python is its flexibility: it can be used interactively, and it can also be used as the principal development language for large standalone applications. While this flexibility is a major reason for Python’s popularity, it also presents a unique challenge for library authors, because the wants and needs of interactive users often conflict with the wants and needs of application developers.

Scott Sanderson explores how interactivity can and should influence the design of software libraries, details how the needs of interactive users differ from the needs of application developers, and shares techniques for improving the usability of libraries in interactive environments without sacrificing robustness in noninteractive environments. Scott uses Python in his examples, but the general principles are applicable to any programming language that supports both interactive use and standalone application development.

Topics include:

  • How the needs of interactive users can diverge from the needs of application developers
    • Ease of typing versus clarity of behavior
    • Robustness versus error forgiveness
    • Tolerance for global state
  • How to make your library’s functions and classes work well with Jupyter
    • Interactive documentation
    • Completions
    • Custom display formats
    • IPython Magics
  • How to organize modules to be discoverable in interactive sessions
Photo of Scott Sanderson

Scott Sanderson


Scott Sanderson is a senior software engineer at Quantopian, where he is responsible for the design and implementation of Quantopian’s backtesting and research APIs. Within the Jupyter ecosystem, most of Scott’s work focuses on enhancing the extensibility of the Jupyter Notebook for use in large deployments.