Jupyter for React.js developers
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Title of Series | ||
Number of Parts | 287 | |
Author | ||
Contributors | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/57056 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSDEM 2022277 / 287
2
4
6
8
12
17
21
23
31
35
37
41
44
45
46
47
50
62
65
66
67
68
71
73
81
84
85
86
90
92
94
100
102
105
111
114
115
116
117
118
121
122
124
127
131
133
135
137
139
140
141
142
145
149
150
156
164
165
167
169
170
171
172
174
176
178
180
183
184
189
190
192
194
198
205
206
207
208
210
218
220
224
225
229
230
232
235
236
238
239
240
242
243
244
245
246
249
250
253
260
262
264
267
273
274
277
282
283
287
00:00
DiagramEngineering drawing
00:52
Product (business)Higher-order logicDivision (mathematics)Library (computing)Imperative programmingMach's principleKernel (computing)String (computer science)Programmable logic arrayMIDIRippingFingerprintSoftware developerExtension (kinesiology)Electronic visual displayMaxima and minimaDisintegrationLaptopTelecommunicationArchitectureCartesian coordinate systemServer (computing)Computer fileLaptopPlotterContext awarenessComputing platformLibrary (computing)Goodness of fitConnectivity (graph theory)CodeWeb browserCellular automatonReverse engineeringSoftware testingSoftware developerPhysical systemExtension (kinesiology)CollaborationismElectronic visual displayReal-time operating systemSource codeSocial classTelecommunicationType theoryElectric generatorComputer animation
05:27
LaptopHigher-order logicFunction (mathematics)Mountain passString (computer science)outputElectronic visual displayMaxima and minimaDivision (mathematics)RippingCellular automatonComa BerenicesNichtlineares GleichungssystemComputer wormMaß <Mathematik>Computer fileSummierbarkeitAtomic nucleusKernel (computing)Video game consoleData typeLibrary (computing)State of matterGamma functionText editor1 (number)CodeContent (media)VideoconferencingHypermediaComputer-generated imagerySource codePole (complex analysis)Software developerReal-time operating systemPlug-in (computing)Sample (statistics)Hydraulic jumpCellular automatonBitText editorGUI widgetFunction (mathematics)CodeTablet computerRepository (publishing)Web browserSource codeCollaborationismLetterpress printingLaptopKernel (computing)AreaSingle-precision floating-point formatTelecommunicationWeb pageCartesian coordinate systemSoftware developerMultiplication signPlug-in (computing)State observerFeedbackRadical (chemistry)WebsiteComputer animation
10:34
Function (mathematics)Computer animationMeeting/Interview
11:59
Meeting/Interview
12:38
Meeting/Interview
15:31
Server (computing)GeometryView (database)Kernel (computing)Arithmetic meanContent (media)VolumenvisualisierungProcess (computing)Set (mathematics)Field (computer science)Link (knot theory)Type theoryPhysical systemPlotterVisualization (computer graphics)Graph (mathematics)Frame problemLevel (video gaming)CodeElectronic data processingMeeting/Interview
19:29
Engineering drawing
20:05
Computer animation
Transcript: English(auto-generated)
00:53
Hello, I am Eric Charles and I'm happy to be here at Fuzzdam to discuss with you about Jupyter for ReactJS developer.
01:02
I am the founder of Data Layer, a data science platform and I am a committer for Jupyter Lab and Jupyter Server. First of all let me show you what Jupyter is. So what you see here is Jupyter Lab UI which is a next generation UI for the notebook
01:24
and a notebook is a collection of cells and you can type some code in a cell and you can run code from your browser. So for example I'm going to say x equals six, good.
01:40
And what you can do also is display some plots just to represent what your data is. Now I'm going to move to the source code of that UI which is developed in TypeScript. Here we have a class which is a notebook panel which extends another class and we
02:04
have a constructor, very object oriented programming, very imperative way to do what you have to do. And it's not typical React and actually you cannot embed or wrap what I've just
02:22
showed you, the notebook panel, into a React application because the notebook panel is not a component. So there is an issue there and to be very complete, Jupyter Lab is built on top of the Lumino toolkit and a Lumino toolkit can wrap ReactJS components.
02:44
So for example this component here is a React component which is wrapped into Lumino and exposed by Jupyter Lab to the user or to the extension developer but not as a React
03:00
once again component. So we are blocked, we cannot do what we would like to do which is upgrading our UI with data feature and when you want to display plots, run code, you don't want to reinvent the wheel, you just like to reuse what exists in Jupyter but you cannot.
03:25
And if you want to show that on the same page, you will have two different applications. One for Jupyter, Lumino which is different from the React and what you could do is show that Jupyter application into an iframe but they will remain different.
03:46
So first issue, second issue, if you want to modify Jupyter and let's say add a side panel to the cell widget, you're going to have to learn Lumino toolkit which is
04:01
very imperative. So we bridged the gap with Jupyter React, we developed a library which allows any ReactJS application to communicate and display those Jupyter Lab components. So there is a React to Jupyter communication to send command and there is a reverse where
04:26
Jupyter is going to emit signals that we will convert to React to reduce observable streams and we're going to manage a global state. Coming back to the previous picture, we add Jupyter React on top of Jupyter Lab and
04:48
your application can now use Jupyter React to communicate to Jupyter Lab and as a developer you have just some well-known components and context, so this is a Jupyter context
05:05
with some props, I want some terminals, I want my Jupyter to be collaborative with real-time collaboration and I'm going to ask the system to show me a notebook from that path, so for example the test ipynb file.
05:26
Now let me show you a few examples, this is an ipy widget, a well-known widget in the Jupyter ecosystem which communicates with the server, so this is an output time
05:44
component, so I just have a text area or a code mirror editor and I just ship here an output content, I'm going to say 3x3 is 9, so this is the output that I show or I can
06:10
just rely on a full cell which is a code editor plus the output and I can pilot that code cell from the outside, well from a React button, right, so this
06:26
is communication from React to Jupyter, I can display a full notebook and in this
06:44
I can show you a console, I choose a kernel and I say print hello again or I have my browser widget, so 2x03 which is a full React or the classical one
07:08
from JupyterLab and I have also terminal and I can change the theme of the terminal just with dark or light mode, cool, so we have a bunch of widgets, with those widgets I can
07:35
develop my own application or I can embed that into existing system, so here we have a cell
07:47
into a docuseries website and this gives you those kind of UI which allows you to run code directly from the docuseries website, another example where I can integrate the Jupyter
08:05
widget into a slate editor to be like more a single page editor notebook, so very very
08:22
flexible way to use and expose some data feature into your React application, good, so what are the next steps, we support real-time collaboration but this is at the notebook level, we want also to ship that at the cell level, just a single cell and for that
08:46
we may use other global store, for now we use Redux but we can go to Mobix or other syncable stores, I showed you the slate.js editor but we are working now on ProseMirror
09:04
editor and we're going to do that in two steps, so the first step would be Vania JavaScript plugins and then we're going to add the React layer, we want some more reactivity a bit like observable HQ, so if you know a bit D3 observable and so on, we're going to add that
09:22
to the classical way of working of Jupyter which does not really support those feature and we want to do that in the open with the Jupyter community with developer and user giving us feedback and so on, that's it, thank you very much, you have my details
09:44
so eric at datalayer.io, you can connect on twitter.com slash echarts and these are the three repository you can go on GitHub, so github.com datalayer Jupyter react which is a main
10:02
repository with the source here, you have the Jupyter example repository where you can try out those two examples, the docuseries and the slate one and this is a Jupyter docuseries plugin we
10:20
have developed also, so once again thank you and I am available for any questions, feedback, looking forward to discuss with you, bye-bye.
11:47
I want to ask question, as I see the mathematical functions supports your tool
12:12
in future for the analyzing tools for the Jupyter will support your tool
15:30
okay so I'm not sure if someone can hear me but okay thank you so the question is sorry no I can hear you thank you so the question is can you support
15:45
big data okay so I'm not sure if someone can and because we have a kernel system with Jupyter, so Jupyter is a server which provide UI, as I explained this is a UI
16:05
built with react what we propose and the UI just connects the server behind the server there is a code execution engine which is called a kernel and yes we do support with Jupyter
16:21
react big data like Spark, like Dask because well it is just a server which gonna delegate what is doing to the kernel and you can have a python kernel or you can have any kernel you want so absolutely big data processing is supported now probably the interesting question is
16:46
what type of UI or plots or charts or graphs you can give with this system because with big data you may be interested to display in a more clever way your content
17:05
so the answer to the way you're gonna show the the data sets a big data set is well we support with Jupyter react all the renderer of Jupyter lab meaning that you can have like some some
17:22
geo map or some data frame visualization which exists on the field like Plotly, like iCharts, like echarts or whatever so yeah big data is supported and and for sure this
17:42
we can do a better job if using react because you're going to build some dashboard so let's say you you want just a view for your business stakeholder you can easily create that kind of view in react and you can expose the data sets a big data set
18:05
in a in a nice way to see end user react and you can expose the data sets a big data set in a in a nice way to see end user
18:32
react and you can expose the data sets a big data set in a in a nice way to see end user
18:54
so i think we are nearly close so i'm gonna just paste the link to to the repository
19:02
and if you want to to ask question just open some shoes over there