An Ivy Notebook
By
Roxy Light
I hacked out a Jupyter kernel for Rob Pike’s ivy language, an APL-like desk calculator. This allows using Ivy expressions inside a Jupyter notebook and inside Visual Studio Code’s notebooks feature. It’s got rough edges, but it’s good enough for me to quickly do calculations without leaving Visual Studio Code.
The source is up on GitHub.
(Installation is a little DIY if you’re not using Nix,
but it should go build
if you have libzmq installed locally.)
Some observations:
- Understanding and implementing the Jupyter kernel protocol took some effort. It’s not terribly hard, but the docs assume a familiarity with notebook interactions.
- The protocol uses ZeroMQ, which I had not used before,
and doesn’t have great support for Go.
I originally tried using
github.com/zeromq/goczmq
, but it didn’t lend itself to interrupting reads withcontext.Context
. So instead, I wrote a small wrapper aroundlibzmq
. I’m not 100% satisfied with the sleep/poll loops, but it works. - I continue to be pleased with using Nix as a distribution mechanism. It allows me to use whatever libraries or tools I want and I can drop the resulting programs into my dot files with ease. This is especially handy since this project needed CGo.