Replies: 8 comments 11 replies
-
|
@jph00 thanks for aplnb! Any thoughts/suggestions? What features would you like to see? |
Beta Was this translation helpful? Give feedback.
-
|
Oh cool! tbh aplnb is a extremely basic implementation -- I'd love to see an official Dyalog ipython magic to replace it. There are big benefits to using a magic instead of a kernel in many situations. I'd also love to see https://github.com/Dyalog/pynapl get some love again. It's been a long time since anyone at dyalog worked on it, and is currently in a broken state -- but it's critical infrastructure for the vast majority of the world that spends more time in Python than APL (but still loves APL!) |
Beta Was this translation helpful? Give feedback.
-
|
These are very nice projects 🔥! I am happy to volunteer as assistant mentor for one (or both, if needed) of them! 🚀 |
Beta Was this translation helpful? Give feedback.
-
|
I also like these project ideas and will be happy to mentor or co-mentor too. It would be nice to add more examples of notebooks using the Dyalog kernel. For example: And I have a few too: |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
|
Would it be possible to get a mentor to work on this? I am proficient in Python and familiar with APL, but I am new to open-source development. |
Beta Was this translation helpful? Give feedback.
-
|
Discord is easiest for me, if that's an option. I'm 'jeremyhoward'.
… Message ID: <Dyalog/OSS-Projects/repo-discussions/7/comments/13200852@
github.com>
|
Beta Was this translation helpful? Give feedback.
-
|
Oh sorry please add me again - I just deleted the invite since I didn't
recognize the name! :)
… Message ID: <Dyalog/OSS-Projects/repo-discussions/7/comments/13202383@
github.com>
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Dyalog Jupyter Projects
Introduction
Jupyter notebooks are interactive documents that combine live code, equations, visualisations, and narrative text in a single, shareable format. They allow users to create and share documents containing executable code, output results, explanatory text written in Markdown, and rich media elements - Jupyter notebooks have become the de facto standard for data science and AI development, enabling researchers and practitioners to document their work, share reproducible analyses, and combine code execution with rich explanations.
A Jupyter kernel is the computational engine that executes code contained in a Jupyter notebook. It acts as an independent process that interprets and runs code in a specific programming language (like Python, R, or Julia), manages the notebook's state and variables, and communicates results back to the notebook interface through a standardised protocol. This separation between the notebook interface and kernel allows for language-agnostic functionality while maintaining a consistent user experience.
The Dyalog Jupyter kernel implements a subset of the Jupyter protocol, enabling the creation of APL notebooks, and APL-driven Jupyter books.
Here are some examples of the kernel in use:
There are two tasks of medium difficulty that can be undertaken in this project:
Dyalog Magics
The Dyalog Kernel currently does not implement any of the Jupyter magics -- meta commands that don't get executed by the kernel itself, typically interfacing with the operating system, or with Jupyter extensions, "escaping" the Dyalog kernel in this case.
The Jupyter AI extension is an example of what can be done with magic commands. We would like to implement the magics protocol in the Dyalog Kernel, and implement some of the more commonly used magic commands on top of this. Hooking Dyalog up to the Jupyter AI magics would be a great stretch goal for this. There is a floating boundary on this -- the bulk of this will still be a Python job, but depending on how deep you go, you may want to pick up some Dyalog APL to let the backend drive some of the implementation. This is a good project for the Pythonista that has a burgeoning interest in array programming and APL.
Jeremy Howard has implemented Dyalog magics for the Python kernel -- the opposite direction: it makes it possible to execute Dyalog APL commands in a Python notebook.
Expected outcomes:
magics protocol implementation, + support for a set of magics
Skills required:
Python, interest in APL
Technologies involved:
Python, possibly JavaScript, possibly some APL
Dyalog Jupyter Widgets
Jupyter supports widgets -- simple in-cell interactive controls, such as sliders, buttons etc. The widget architecture is kernel-agnostic, and any kernel can implement access to such widgets. In this project, we'd like to implement the widget protocol for the Dyalog Jupyter kernel, so that we can show a slider that sets an APL value. This would greatly enhance exploratory programming in a Dyalog APL notebook: hook a slider up to a parameter in a model and see what the effects are without having to actually type and execute cells.
Implementing the widgets protocol needs to be done firstly in Python, to implement the callbacks, and secondly on the APL side to define ways to create the widgets.
Expected outcomes:
Widgets protocol in kernel, plus APL implementation of the widget classes
Skills required:
Python, interest in APL
Technologies involved:
Python, APL
Beta Was this translation helpful? Give feedback.
All reactions