Jupyter's Rich Display System
Madhumitha psg (~madhumitha) |
The Jupyter ecosystem of tools lets you interleave code and stories for a literate computing experience, where you can visualize your data as html, plain text, svg and images. You could also view the same rich displays in multiple environments - on the web, on your desktop, in your shell or even your IDE. But how is this possible without duplicating logic, re-inventing the wheel multiple times? How do visualization libraries like Bokeh, Plotly work across frontends - like jupyter notebook, jupyterlab and nteract?
This talk explores Jupyter's display system and how it handles multiple display formats in multiple environments. We will see how this idea is applied in some open visualization libraries.
After this talk, you will know how to integrate your python objects better with the notebook. You will also get an idea of how to create a visualization library that works across the Jupyter ecosystem of tools.
45 mins (Content can be modified to fit into 30-minute slot too)
- Setting some terminology for the rest of the talk (what is a frontend, kernel, displayhooks) (5 mins)
- How to use Jupyter's display hooks for your python objects with the notebook (10 mins)
- The Jupyter messaging protocol - specifically, the
update_data messages (5 mins)
- Custom mime-types (and this is the secret to Jupyter's display system!) - separating what to display from how to display it (10 mins)
- Examples of custom mime-types in the wild (a look at altair, vdom, plotly and more) (10 mins)
This proposal might seem to overlap with another - Jupyter Notebooks: Internals and Extension - which explores how jupyter works under the hood and how to create alternative frontends. My talk's focus will be different, and will dive into a very specific part of Jupyter - the display system - in depth.
Some experience using either the
jupyter notebook or
I am a software developer at D.E.Shaw, Hyderabad. I've occasionally contributed to projects in the jupyter ecosystem - the notebook, ipywidgets, hydrogen, nteract.