Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Jupystar – Run any Jupyter notebook in the browser (starboard.gg)
79 points by protoduction 7 days ago | hide | past | favorite | 16 comments

I have found it surprising that there was no JavaScript no-backend notebook. Tools used either Python-based Jupyter (fine, but perverse: why JS -> Python -> JS), Node (e.g. RunKit), a complex superset of JS (e.g. ObservableHQ), were like JSFiddles (sandboxes, not notebooks), or are on-offs (e.g. in Eloquent JavaScript).

Thanks for creating StarBoard - it was, as is, needed!

I think one of the main reasons was the lack of dynamic import support until fairly recently [0], being able to import code dynamically without crazy <script> hacks is very useful in a notebook. The tools you mentioned all pre-date that I think.

Secondly notebooks have to run sandboxed. Most notebooks run the output/code in an iframe but the editor is in the main window (e.g. JSFiddle). The moment you do that you can no longer support notebook style output (cell-output-cell-output) without some serialization step as you can only embed the iframe in one place (so there would be a single output pane). This is also how Project Iodide worked [1].

Starboard's approach is to put the entire editor/runtime in the sandbox which I think is a superior approach for a notebook. It only talks to the outside frame over a thin API (for saving notebooks, refreshing, syncing the content).

[0]: https://caniuse.com/es6-module-dynamic-import [1]: https://alpha.iodide.io/

Mike Bostock, the creator of the visualization language D3, also created a javascript notebook product called Observable [1].

I like the idea of doing everything in the same language, but I can't give up the python scientific computing environment to switch to javascript.

[1] https://observablehq.com/product

So great to see folks utilizing Pyodide, the WASM scientific python stack my Mozilla colleagues put together. The creator, Mike Droettboom, wrote a Mozilla Hacks post about it a while back:


Nice work!

Upon closer inspection the title should probably read “Run some Jupyter notebooks in the browser” as your website confirms the many limitations.

I’m going to try this out because I can see JavaScript support! Jupyter Lab requires one of many extensions to enable JavaScript support and they all have their challenges.

I really got into computational notebooks coincidentally about 13 hours ago (when you posted this). furthermore, I want to use javascript.

I chose observablehq but this is a product that also fits my needs basically perfectly.

things I'd like to know:

* how do i know this project won't shut down in a few weeks and I have to transfer out

* i want private notebooks obviously

* features roadmap?

* I'm not planning on shutting it down at any point, the cost to operate it is very low (it's just a bunch of static files at its core). But I am personally also always weary to put stuff in online services, that's why I made it all open source: other than observable actually all the pieces are there (including editor and offline support), not just runtime/parser. You can download the files and check them into git, and edit them, and host them trivially. There's no "download all" button yet but if there's a demand for that why not :)

* Private notebooks make a lot of sense, and perhaps this is where it can be a viable product as well instead of just a useful open source tool? I have plenty of runway, but still it would be more sustainable if it could eventuallu pay my rent.. Similar to the (old) github model I mean (pay for team features / private notebooks you can share with some) with some reasonable limits? My main goal right now is to raise awareness for it. I think many many web developers especially would find the notebook paradigm really useful, but how do I show that?

* A lot of stuff.. auto save, I store every revision but currently you only can retrieve the latest, social features (e.g. recent notebooks, avatars), actual documentation (in notebooks of course).

If you have ideas or thoughts on where I should take this, do reach out! Email in my profile.

Why you need 3 hostname(starboard.gg starboard.host starboardapi.com) to run this? why not just use 1 hostname?

Well, you need at least two for something like this.

For sandboxing user content they need to be on their own origin, otherwise by opening the wrong notebook your account could be taken over. Ideally you also have a unique origin per user as well, as otherwise they would share LocalStorage and cookies. So here every user gets <username>.notebook.host for their notebooks (in the future I might completely randomly generate it instead). This is also the domain used for static embedding.

starboard.gg is used as the main entrypoint: it is just a static website (SPA-like). And the APIs are hosted on starboardapi.com. Those two could technically be combined.

And finally there's another one.. starboardproxy.com which acts as a CORS proxy for use in notebooks.

Can it run Pluto spiral-bound day planners?

How about Neptune legal pads?

I think a name change might be in order.

This project is called Jew Piss Star.

Sorry, but you can't unhear it.

There's only one s in the name thus it makes no sense as you pronounce it. Also probably everyone else will read it /jupi-star/.

No, people will read it as a variation on jupyter, as intended, and jupyter is pronounced (by pretty much everybody) as jupiter.

So Jupystar is pronounced like Jupistar.

Jupis, like lupis.

People try to be too clever with these portmanteaus, and end up with either something unfortunate or unpronouncable.

>So Jupystar is pronounced like Jupistar.

That's what I said. But differs to what you said before. /Jupi/ has only one stress; your previously mentioned pronunciation requires two, also two s rather one that exists in the word.

> Sorry, but you can't unhear it.

I'm sorry, but I can barely hear it in the first place. The lexical stress in Jupystar is entirely different to what you're claiming.

Jupyter is pronounced like Jupiter.

Jupystar must therefore be pronounced like Jupistar.

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