Experimental, unsafe, interactive Jupyter Kernel-like things in your browser. Try the demo.
- [PhosphorJS](./notebooks/Phosphor Playground.ipynb)
- [d3](./notebooks/d3 Playground.ipynb)
These kernels create their own widget next to a Notebook (or Console). Restarting the kernel is equivalent to refreshing the page.
The Big Security Hole
For extra danger, these kernels also make the root
instance available. In particular, this allows you to do things like:
...to create a new notebook, though you can do [just about anything](./notebooks/JupyterLab API.ipynb).
# the core manager, required but doesn't do anything by itself jupyter labextension install @deathbeds/jyve # the base kernel jupyter labextension install @deathbeds/jyve-kyrnel-js-unsafe # specific compile-to-js kernels (needs the js kernel) jupyter labextension install @deathbeds/jyve-kyrnel-brython-unsafe jupyter labextension install @deathbeds/jyve-kyrnel-coffee-unsafe jupyter labextension install @deathbeds/jyve-kyrnel-p5-unsafe jupyter labextension install @deathbeds/jyve-kyrnel-typescript-unsafe # extra packages, wrapped for convenience in jyve kernels jupyter labextension install @deathbeds/jyve-lyb-d3 jupyter labextension install @deathbeds/jyve-lyb-phosphor
Or, since hey, This is Jyve:
jupyter labextension install \ @deathbeds/jyve \ @deathbeds/jyve-kyrnel-brython-unsafe \ @deathbeds/jyve-kyrnel-coffee-unsafe \ @deathbeds/jyve-kyrnel-js-unsafe \ @deathbeds/jyve-kyrnel-p5-unsafe \ @deathbeds/jyve-kyrnel-typescript-unsafe \ @deathbeds/jyve-lyb-d3 \ @deathbeds/jyve-lyb-phosphor \ && jupyter labextension list
However, one of the beautiful elements of the Classic Notebook was the
ability to "build the ship while you are sailing it," e.g. writing the Python
extensions. The IPython
nasty warning in JupyterLab. However, this immediately exposed you to a
relatively high likelihood of breaking other extensions, or even core behavior
Jyve fits somewhere between the two.
A Jyve Kyrnel runs in JupyterLab and has full, unsafe access to the many of the capabilities of your browser, including:
- its own dedicated DOM in an
- the JupyterLab
- the application shell
- so much more...
- debugging with in-browser (or remote) tools
IndexedDBand other storage mechanisms
Because it's almost a real Jupyter Kernel, a Jyve Kyrnel can be used by tools like the JupyterLab Notebook and the JupyterLab Console. But, because of its relationship to JupyterLab and the browser, it can:
- load arbitrary code and data from anywhere on the internet
- integrate with the excellent local browser debugger tools
- run JupyterLab commands
- add new phosphor Widgets to the application shell
JupyterLab, while very customizable, is still delivered as a series of intentionally-unpredictable files which bundle many megabytes of JS, CSS, JSON and other artifacts.
To make it easier to learn about key libraries inside JupyterLab (or even external to it), a Jyve Lyb wraps up a library and makes it usable directly inside every kyrnel.
conda env update source activate jyve-dev ./postBuild
jlpm build jupyter lab build
Always Be Building
jlpm watch # and in another terminal jupyter lab --watch