Building Blocks for Interactive Computing

What are the building blocks for interactive computing?


In [1]:
%load_ext load_style
%load_style images.css
from IPython.display import display, Image


File browser


In [2]:
Image('images/lego-filebrowser.png', width='80%')


Out[2]:

Terminal


In [3]:
Image('images/lego-terminal.png', width='80%')


Out[3]:

Text editor (a place to type code)


In [4]:
Image('images/lego-texteditor.png', width='80%')


Out[4]:

Output


In [5]:
Image('images/lego-output.png', width='80%')


Out[5]:

Other building blocks

  • Kernels (processe for running code)
    • Python
    • R
    • Julia
    • Scala
  • Document formats for storing code and results
    • Notebook document format
    • Text files
  • Narrative text
  • Debugger
  • Profiler
  • Variable inspector

Notebooks

The Jupyter Notebook is one way of assembling these building blocks as a linear sequence of input and output. There are other ways of assembling these building blocks:


  • Text editor hooked up to a kernel and output area
  • More traditional REPL
  • Dashboard with only output

Recently, we worked with collaborators from IBM to perform a UX survey of Jupyter users. The executive summary can be read here.

This survey, along with many years of talking to users has lead us to the following vision:

Jupyter needs to provide flexible building blocks for interactive computing that can be assembled and applied to different workflows

JupyterLab

JupyterLab in the next generation user interface for project Jupyter that will provide this frame work for assembling these building blocks in different ways. It will ship alongside the existing notebook in version 5.0.

JupyterLab is an IDE = Interactive Development Environment