Friday 3:00 PM–3:45 PM in Room 2

Popping Kernels: An Exploration of Kernel Development for Jupyter Notebooks

Safia Abdalla

Audience level:
Novice

Description

This talk will give individuals with no kernel experience and some Python experience, a brief introduction to the concepts they need to understand in order to develop kernels. This talk will also be useful to individuals who are looking for fun projects that will allow them to strengthen their skills in a particular programming language.

Abstract

Jupyter Notebooks are web applications that allow users to create and share documents that contain live code, equations, visualizations and explanatory text. The live code portion of the notebook is particularly interesting, because the Notebooks give users the ability to execute live code in a variety of languages. When a user starts a Notebook, they connect to a kernel in the background that is responsible for executing the code and responding appropriately to the front-end. Kernels communicate to the front-end using the Jupyter Messaging Protocol and can be developed in their native language.

This talk will give individuals with no kernel experience and some Python experience, a brief introduction to the concepts they need to understand in order to develop kernels. This talk will also be useful to individuals who are looking for fun projects that will allow them to strengthen their skills in a particular programming language. Finally, for Jupyter Notebook users, this talk will demystify the process that powers the interactivity of the tool that they use.

This 45 minute talk will be (approximately) divided into the following segments.

• Introduction (10 to 12 minutes) - An brief demo of a Jupyter Notebook connected to a Python kernel
    • An explanation of the rational for building kernels for the Notebook
    • An overview of existing kernels for the Jupyter Notebook
• Introduction to the Jupyter Messaging Protocol (25 - 30 minutes)
    • An introduction to the ZeroMQ library and its importance in the development of kernels
    • An overview of the decoupling of the kernel backend from the (potentially multiple backends)
    • An overview of the channels (shell, iopub, stdin, and control) used when communicating with the kernel and the messaging spec associated with each channel
• Conclusion (3 minutes)

    • Presentation of additional resources for exploration
    • Overview of main takeaways from talk