A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook...

75
A Brief History of Jupyter Notebooks William Horton

Transcript of A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook...

Page 1: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

A Brief History of Jupyter Notebooks

William Horton

Page 2: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Two different worlds of Python

Page 3: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 4: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 5: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 6: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

What is a Jupyter Notebook?

Page 8: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Why?

Page 9: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

My personal journey

Page 10: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 11: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Jupyter Notebooks go mainstream

Page 12: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

This talk:I. Past

II. PresentIII. Future

Page 13: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

What this talk is not about

Page 14: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

How to use Jupyter Notebooks

Page 15: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Introductory material for Jupyter notebooks

https://realpython.com/jupyter-notebook-introduction/

Page 16: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Loving or Hating Jupyter Notebooks

Page 17: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Joel Grus

Page 18: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

The First Notebook War

https://www.youtube.com/watch?v=QR7gR3njNWw

Page 19: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Past

Page 20: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

(Apologies to all the former science Ph.D’s out there)

Page 21: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 22: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 23: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Mathematica (1988)Created by Stephen Wolfram

Notebook interface designed by Theodore Gray

An all-in-one system: language (Wolfram), execution environment, scientific

libraries

Page 24: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 25: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 26: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 27: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 28: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Key architectural details of Mathematica NotebooksTwo parts to the system: kernel and front-end

The front-end sends the input to the kernel, which returns the result, which is

displayed

Mathematica notebooks are objects that can be manipulated by Mathematica

programs

Page 29: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

The Mathematica Notebook Interface

Page 30: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 31: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 32: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Going further back...

Page 33: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 34: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Literate ProgrammingDonald Knuth

Implemented the “WEB” system

Concepts of “tangled” and “woven”

Page 35: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

MapleScientific computing environment + programming language

First GUI for Maple released in 1989

1992 -- release of the “worksheet” interface:

“Beginning with the Macintosh user interface for Maple V, the new user interfaces will

all support the concept of a "worksheet" which integrates text, Maple input commands,

Maple output, and graphics into one document.”

Page 36: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 37: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

https://sites.math.rutgers.edu/courses/251/Maple/Help/errors2.html

Page 38: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Maple vs Mathematica

Page 39: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 40: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 41: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 42: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 43: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Rise of Open Source

Page 44: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

SciPy + IPython + MatplotlibSciPy (2001): Created by Travis Oliphant, Eric Jones, and Pearu Peterson, it was a

combination of scientific libraries for Python on top of the Numeric array type (later

replaced by NumPy)

IPython (2001): “The IPython project provides on enhanced interactive environment

that includes, among other features, support for data visualization and facilities for

distributed and parallel computation” (from “IPython: A System for Interactive

Scientific Computing”, 2007)

Page 45: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

SciPy + IPython + Matplotlib (cont.)Matplotlib (2003): “It was conceived by John Hunter in 2002, originally as a patch to

IPython to enable interactive MatLab-style plotting via gnuplot from the IPython

command-line. Fernando Perez was, at the time, scrambling to finish his PhD, and let

John know he wouldn’t have time to review the patch for several months. John took

this as a cue to set out on his own, and the matplotlib package was born, with version

0.1 released in 2003.” (https://jakevdp.github.io/blog/2013/03/23/matplotlib-and-the-future-of-visualization-in-python/)

Page 46: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Fernando PerezCreated IPython in 2001 as a graduate student

Currently: Associate Professor, Statistics, UC Berkeley

and Berkeley Institute for Data Science Senior Fellow

Recipient of the 2012 Award for the Advancement of

Free Software from the Free Software Foundation, and

the 2017 ACM Software System Award

Page 47: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Sage (2005)

Page 48: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Sage cont.Created by William Stein

Implemented in Python and Cython

Open Source license (GPLv3)

Page 49: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Sage Notebook/Worksheets

Screenshots from a tutorial circa 2012 (

http://doc.sagemath.org/html/en/prep/Intro-Tutorial.html#sagenbcommands)

Page 50: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 51: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 52: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

IPython Notebook (2011)

Page 53: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 54: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Project Jupyter (2014)

Page 55: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Jupyter

Ju(lia) + Pyt(hon) + R

Page 56: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Project Jupyter (2014)Spun off of IPython by Fernando Perez

Includes the Notebook interface and other language-agnostic parts of IPython

Page 57: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Present

Page 58: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Jupyter Notebook

Page 59: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

JupyterLab

Page 60: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 61: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Voilà

Page 62: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Binder

Page 63: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Broad language support

Page 64: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 65: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Google Colab

Page 66: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Github rendering

Page 67: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 68: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Future(?)

Page 69: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

More IDE-like Jupyter and more Jupyter in IDEsJupyterLab 2.0 -- released April 2020

Added JupyterLab Language Server Protocol + Debugger

VSCode shipping improved native support for Jupyter Notebooks

Page 70: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Hosted solutions/notebook as an interface to compute

Page 71: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Real-time collaboration

Page 72: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

How to review & work with git?

Page 73: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 74: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution
Page 75: A Brief History of Jupyter Notebooks...Mathematica (1988) Created by Stephen Wolfram Notebook interface designed by Theodore Gray An all-in-one system: language (Wolfram), execution

Conclusion@hortonhearsafoo