Live data from Hacker News

Show HN: WASM-powered codespaces for Python notebooks on GitHub

docs.marimo.io

1–10 of 30 posts

Show HN: WASM-powered codespaces for Python notebooks on GitHub

#1
Hi HN!

Last year, we shared marimo [1], an open-source reactive notebook for Python with support for execution through WebAssembly [2].

We wanted to share something new: you can now run marimo and Jupyter notebooks directly from GitHub in a Wasm-powered, codespace-like environment. What makes this powerful is that we mount the GitHub repository's contents as a filesystem in the notebook, making it really easy to share notebooks with data.

All you need to do is prepend 'marimo.app' to any Python notebook on GitHub. Some examples:

- Jupyter Notebook: https://marimo.app/github.com/jakevdp/PythonDataScienceHandb...

- marimo notebook: https://marimo.app/github.com/marimo-team/marimo/blob/07e8d1...

Jupyter notebooks are automatically converted into marimo notebooks using basic static analysis and source code transformations. Our conversion logic assumes the notebook was meant to be run top-down, which is usually but not always true [3]. It can convert many notebooks, but there are still some edge cases.

We implemented the filesystem mount using our own FUSE-like adapter that links the GitHub repository’s contents to the Python filesystem, leveraging Emscripten’s filesystem API. The file tree is loaded on startup to avoid waterfall requests when reading many directories deep, but loading the file contents is lazy. For example, when you write Python that looks like

```python

with open("./data/cars.csv") as f: print(f.read())

# or

import pandas as pd pd.read_csv("./data/cars.csv")

```

behind the scenes, you make a request [4] to //main/data/cars.csv" rel="nofollow">https://raw.githubusercontent.com///main/data/car....

Docs: https://docs.marimo.io/guides/publishing/playground/#open-no...

[1] https://github.com/marimo-team/marimo

[2] https://news.ycombinator.com/item?id=39552882

[3] https://blog.jetbrains.com/datalore/2020/12/17/we-downloaded...

[4] We technically proxy it through the playground https://marimo.app to fix CORS issues and GitHub rate-limiting.

Show HN: WASM-powered codespaces for Python notebooks on GitHub
docs.marimo.io

Re: Show HN: WASM-powered codespaces for Python notebooks on GitHub

#7
I absolutely love that this can be hosted on Github Pages. Am I correct in understanding that these notebooks will run independently, and will not need to proxy through marimo.app (in case the app goes down), or is that what the CORS thing is about in note 4, and it will still need to go through this domain?

Re: Show HN: WASM-powered codespaces for Python notebooks on GitHub

#8

I absolutely love that this can be hosted on Github Pages. Am I correct in understanding that these notebooks will run independently, and will not need to proxy through marimo.app (in case the app goes down), or is that what the CORS thing is about in note 4, and it will still need to go through this domain?

Yea, this can be hosted on GitHub pages without any vendor infra (no marimo.app)

These are two separate features:

1) marimo.app + github.com/path/to/nb.ipynb does run on marimo.app infra. this is what the Show HN was about

2) separately, you can use the marimo CLI to export assets to deploy to GitHub page: `marimo export html-wasm notebook.py -o output_dir --mode run` which can then can be uploaded to GH pages. This does not find all the data in your repo, so you would need to stick any data you was to access in a /public folder for your site. More docs here: https://docs.marimo.io/guides/exporting/?h=marimo+export+htm...

Post reply on HN