Carlos is a Scientific software developer passionate about AI and its applications to robotics.
Prior to QuantStack, he worked as an intern at Instituto AI2, developing algorithms for 3-D printing with 6-axis robots.
His current work focuses on expanding the Jupyter ecosystem by contributing to JupyterLab and voila and developing new extensions to integrate ROS in JupyterLab.
In the past years, real-time collaboration has become a must for any editor, a feature that users expect as core functionality in their daily editor. Sharing and collaborating on the same document with your colleagues or teachers increases productivity by improving the teamwork experience.
The adoption of real-time collaboration in JupyterLab has been a challenge for many developers over the years. From the very beginning, RTC was in JupyterLab's roadmap. Still, it was only in v3.x that it became a reality, and in v4.0, that it shows its real power. We want to describe the feature in detail with everyone to give extension developers the knowledge to leverage it into their plugins.
This talk will go through the RTC implementation and describe the role of the packages used.. The various entry points to use and extend real-time collaboration on documents will be highlighted. And it will show the corner cases and the restrictions it enforces.
Finally, we will offer a glimpse into how real-time collaboration works in JupyterCAD and JupyterLite. JupyterCAD is a JupyterLab extension using a non-default document type for 3D geometry modeling that supports the FreeCAD format. JupyterLite is a lightweight serverless version of JupyterLab, which changes the paradigm of collaboration. It adds a new challenge by removing the central authority that's the server, requiring the use of peer-to-peer communication to synchronize clients. The document is leveraging the real-time collaboration API to allow collaborative editing.
Block-based programming offers the unique opportunity of teaching basic yet fundamental programming concepts without the challenge brought on by the specific syntax of text-based programming languages. Wishing to provide a smooth ramp of complexity for learners, we designed a JupyterLab extension for Blockly, such that Jupyter can now be used all throughout a student's learning journey, without the hassle of having to switch to a completely new environment at any point along the way.
In this talk, we will provide a more detailed look at the JupyterLab-Blockly extension, starting from the benefits of using it and our motivation when creating it, going through a well-documented journey of the UI, all towards a live demonstration with the kind of algorithms you can build using our standard blocks.
A relevant aspect of the extension is also its buildability. As such, we will also dive deeper into how JupyterLab-Blockly can be used as a base for other extensions, providing the perfect tools for simple robotics applications. We will go through each step a coder needs to take in order to make their own extension and the possibilities we offer in creating your own blocks, toolboxes and even programming language generators.
Finally, we will offer a glimpse into our very own cool robotics applications which were built on top of the JupyterLab-Blockly extension:
- jupyterlab-niryo, a plugin to control the Niryo One robot,
- jupyterlab-lego-boost, a plugin to communicate with the LEGO® Boost robot.
As a preview, you can read more in our blogpost: https://blog.jupyter.org/visual-programming-in-jupyterlab-with-blockly-7731ec3e113c