Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
Jupyter notebooks
Last updated at 3:37 am UTC on 29 August 2018
A Jupyter Notebook is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text.[1]

In this sense the notebooks are similar to Active Essays kept in a Smalltalk based Dynabook.

Notebook documents contain the inputs and outputs of a interactive session as well as additional text that accompanies the code but is not meant for execution. In this way, notebook files can serve as a complete computational record of a session, interleaving executable code with explanatory text, mathematics, and rich representations of resulting objects.


The notebook documents are saved in JSON files (examples).

The file extension is .ipynb. As JSON is a plain text format (https://jupyterlab.readthedocs.io/en/latest/ed) the file can be version-controlled and shared with colleagues. [2], [3], [4].

JupyterNotebookWithPythonKernel.png

Jupyter notebooks were originally only Python based but now the Project Jupyter exists to develop open-source software, open-standards, and services for interactive computing across dozens of programming languages.[5], [6]

The execution of scripts in a particular programming languages is done in a 'kernel'. There is a project to implement a Pharo Smalltalk kernel (JupyterTalk [7]). A kernel needs to implement the Jupyter messaging protocol.

The notebook is read and the code executed through a web client based front-end. "nteract" [9],[10] is a front-end based on the electron framework (HTML,CSS,JS). It is a stand-alone client which also includes a JavaScript kernel, thus the notebooks may contain text and JavaScript code.

JupyterLab is a browser based solution which needs a server.[11]
The client communicates with the server using a JSON based protocol [12].
A survey [13] shows how Jupyter notebooks are used in courses.




Examples of notebooks:
https://github.com/jupyter/jupyter/wiki/A-gallery-of-interesting-Jupyter-Notebooks#mathematics-physics-chemistry-biology

[1] http://jupyter.org/
[2] http://jupyter-notebook.readthedocs.io/en/latest/notebook.html
[3] Jupyter Notebooks – a publishing format for reproducible computational workflows
[4] Details of the notebook document format https://nbformat.readthedocs.io/en/latest/format_description.html#notebook-file-format
[5] http://jupyter.org/
[6] https://github.com/jupyter/jupyter/wiki/Jupyter-kernels
[7] JupyterTalk = Pharo kernel for Jupyter notebooks; repository: https://github.com/jmari/JupyterTalk
[8] http://jupyter-client.readthedocs.io/en/latest/messaging.html
[9] https://nteract.io/, standalone app (client) plus server ("kernel"), JavaScript (nodejs) preinstalled.
[10] https://moderndata.plot.ly/nteract-revolutionizing-notebook-experience/
[11] https://jupyterlab.readthedocs.io/en/latest/
[12] https://blog.nteract.io/nteract-building-on-top-of-jupyter-9cfbccdd4c1d - has introduction to protocol used.
[13] https://zenodo.org/record/51701#.W3Er3ta-lE4 2016 Jupyter Education Survey
[14] http://opiateforthemass.es/articles/why-i-dont-like-jupyter-fka-ipython-notebook/
[15] https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2, https://awards.acm.org/software-system
ACM Software System Award for Project Jupyter, a broad collaboration that develops open source tools
for interactive computing, with a language-agnostic design.
These tools, which include IPython, the Jupyter Notebook and JupyterHub, have become a de facto standard for data analysis in research, education, journalism and industry. Jupyter has broad impact across domains and use cases. Today more than 2,000,000 Jupyter notebooks are on GitHub, each a distinct instance of a Jupyter application—covering a range of uses from technical documentation to course materials, books and academic publications.
[16] Colaboratory https://colab.research.google.com/notebooks/welcome.ipynb (in the cloud, Python only)
 $$.html('div id="myBox"><strong>strong</strong> regular</div>');



Jupyter notebook document examples

Wolfram notebooks are similar in aim but not open source and not directly compatible.