Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This looks very cool. There's no overview of how it actually works. It seems to launch a goroutine for each Jupyter code cell but any variables defined are also available for use in later cells so I'm not sure how that works.

Just playing with the code in the mybinder.org it feels responsive enough. As well as for data analysis, this will be a great way to do those quick checks that I like to do in python to confirm how an api works. I've been meaning to start using golang more and this might be how I do it.



As someone who hasn't worked with Jupyter beyond a simple iPython shell, this comment sent me down a bit of a rabbit hole. If anyone's interested, here are some links.

Jupyter docs for making a kernel: http://jupyter-client.readthedocs.io/en/latest/kernels.html

List of jupyter kernels: https://github.com/jupyter/jupyter/wiki/Jupyter-kernels

Jupyter seems like a cleanly designed piece of software that is easy to integrate with. I like the use of ZeroMQ for the wire protocol.


Sorry it's my job to nitpick. IPython is upper case I and P. We don't want to upset the fruit giant.


It compiles a plugin for each Jupyter cell code with "go build -buildmode=plugin" then loads it.

It's easy to see with Linux "lsof -p LGO_PID": it lists, among others, the loaded shared libraries - there is one per Jupyter cell code.


This is super cool, but I’d like to know more. You can’t reload plugins without changing the plugin path and any shared references won’t get GC’d, from what I remember. I tried to do server handler hot reloading via plugins and ran into this a while ago.


My feeling is that the friction of learning a language has a large impact on the success and adoption of the language.

Something like this definitely reduces friction.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: