An exploration into what Jupyer notebooks can do, and if they are a good proxy for “conversation as a canvas”
Implementation via jupyter core https://github.com/microsoft/jupyter-core
Demo:
- Install JupyterLab
- Install IEcho Sample
Set up server for public access https://jupyter-notebook.readthedocs.io/en/stable/public_server.html#running-a-public-notebook-server
Kernels documentation
- https://docs.jupyter.org/en/latest/projects/kernels.html
- https://jupyter-client.readthedocs.io/en/stable/ - messaging protocol
- https://jupyter-client.readthedocs.io/en/stable/messaging.html#wire-protocol
Tutorial
- https://github.com/microsoft/jupyter-core/blob/master/tutorial.md
Base Engine class
- https://github.com/microsoft/jupyter-core/blob/master/src/Engines/BaseEngine.cs
There is an implementation of a Jupyter kernel with DotNetInteractive
- https://github.com/dotnet/interactive/blob/main/src/Microsoft.DotNet.Interactive.Jupyter/JupyterKernel.cs
Frontends:
- https://jupyterlab.readthedocs.io/en/latest/user/documents_kernels.html#kernel-backed-documents https://docs.servicestack.net/jupyter-notebooks-csharp
Capabilities that a jupyter kernel has
- Share variables (content) between cells in a notebook
- Connect different kernels to different cells
- Is a kernel like an “app”, a set of capabilities? Just an OpenAI web plugin
Overall Jupyter project structure
- https://docs.jupyter.org/en/latest/_images/repos_map.png
What are Polyglot notebooks