Maarten Breddels
Maarten Breddels is an entrepreneur and freelance developer/consultant/data scientist working mostly with Python, C++ and Javascript in the Jupyter ecosystem. Creator of Solara, ipyvolume and Vaex, founder of Vaex.io and Widgetti. His expertise ranges from fast numerical computation, API design, to 3d visualization. He has a Bachelor in ICT, a Master and PhD in Astronomy, likes to code and solve problems.
Sessions
IPywidgets is the go-to library for building interactive interfaces in the Jupyter notebook. What may start as an experiment with a few sliders and buttons, may evolve into a company-wide data app that needs to be production-ready quality.
The biggest issue we see for applications is managing the complexity of the code.
In the JavaScript world, React is considered a library that helps conquer that problem. The main reasons for this are its declarative nature and its ability to define encapsulated components that can be composed to form larger components of applications.
Reacton is a pure Python implementation of the React library, that enables the same style of programming as React, but in Python using the ipywidgets libraries.
On top of that, Reacton adds type information, allowing type checkers such as mypy to find bugs before they occur in production.
The next problem is how to run your ipywidget application outside the Jupyter notebook or Jupyter Lab environment.
Voilà is the goto library for running notebooks as standalone web applications and has support for ipywidgets. However, each request requires a new kernel, which requires starting a new process. This requires a lot of resources, and different processes also make it hard to share memory between different users/requests.
Solara allows you to write ipywidget-based applications, using a server that is running “virtual kernels” in a single process, saving resources, and leading to faster page loads.
On top of that, Solara will come with many Reacton-based components, and support for multiple pages, making it the perfect framework for writing production-ready data apps.