starboard-notebook
py2many
starboard-notebook | py2many | |
---|---|---|
10 | 29 | |
1,180 | 599 | |
- | 2.5% | |
3.8 | 8.1 | |
2 months ago | about 1 month ago | |
TypeScript | Python | |
Mozilla Public License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
starboard-notebook
-
JupyterLite is a JupyterLab distribution that runs in the browser
The format is only partially invented, it follows Jupytext [0], but adds support for cell metadata. There is no obvious way to get that in fenced codeblocks, especially with the ability to spread it over multiple lines so it plays well with version control.
One more consideration is that it's not "Markdown with code blocks interspersed", one might as well use plaintext or AsciiDoc.
Of course there are tradeoffs.. I wish I had more time to work on it.
[0]: https://github.com/gzuidhof/starboard-notebook/blob/master/d...
[1]: https://github.com/mwouts/jupytext
-
A fast SQLite PWA notebook for CSV files
This is really wonderful! The discussion about lay people's knowledge of sql reminded me that the Pandas API is often useful for non-sql folk. Likewise there are some projects similar to dirtylittlesql to bring Python data manipulation to the browser.
https://github.com/jtpio/jupyterlite
https://github.com/gzuidhof/starboard-notebook
-
Turns Jupyter notebooks into standalone web applications and dashboards
You could consider an in browser notebook to get your cost down to near nothing - it depends a bit on what kind of tasks your students do whether they fit in the browser (one wouldn't train a large neural network in one for instance)
There's Starboard (which I'm building, it's built specifically for the browser and can integrate into a larger app deeply) and JupyterLite (the closest you will get to JupyterLab in the browser), either can be a good choice depending on your requirements. Both use Pyodide for the Python runtime.
[1]: https://github.com/gzuidhof/starboard-notebook, demo: https://starboard.gg
[2]: https://jupyterlite.readthedocs.io/en/latest/
-
Enabling COOP/COEP without touching the server
A few examples of web-applications that have this problem are in-browser video converters using ffmpeg.wasm, a web-based notebook that supports Python and multithreaded Emscripten applications.
-
I want to learn D3. I don’t want to learn Observable. Is that ok? (2019-2021)
As someone building an in-browser notebook I have a lot of opinions on notebook environments. Notebooks serve different purposes, sometimes the notebook itself is the end-goal because the author is creating an interactive tutorial or explaining a complex concept with a bunch of visualizations. Observable is a fantastic tool for that, and the kind-of-Javascript reactive programming system it is built on is a great fit for that.
Outside of that use-case, I think notebooks are great for the first 20% of the effort that gets 80% of the work done. If it turns out one also needs to do the other 80% of the effort to get the last 20%, it is time to "graduate" away from a notebook. For instance if I am participating in a Kaggle machine learning competition I may train my first models in a Jupyter notebook for quick iteration on ideas, but when I settle onto a more rigid pipeline and infra, I will move to plain Python files that I can test and collaborate on.
This "graduation" from notebook to the "production/serious" environment should be straightforward, which means there shouldn't be too much magic in the notebook without me opting into it. Documentation in my eyes is not so different, I should be able to copy the examples easily into my JS project without knowing specifics of Observable and adapt it to my problem. Saying "don't be lazy and just learn Observable", or "you must learn D3 itself properly to be able to use it anyway" is not helpful. Observable being a closed, walled garden doesn't help: not being able to author notebooks without using their closed source editor is a liability that I can totally understand makes it a non-starter for some companies and individuals.
I think it's ok to plug my own project: It's called Starboard [1] and is truly open source [2]. It's built on different principles: it's hackable, extendable, embeddable, shareable, and easy to check into git (i.e. I try to take what makes the web so great and put that in a notebook environment). You write vanilla JS/ES/Python/HTML/CSS, but you can also import your own more advanced cell types. Here's an example which actually introduces an Observable cell type [3] which is built upon the Observable runtime (which is open source) and an unofficial compiler package [4]. I would be happy for the D3 examples to be expressed in these really-close-to-vanilla JS notebooks, but I can convince the maintainers to do so.
[1]: https://starboard.gg
[2]: https://github.com/gzuidhof/starboard-notebook
[3]: https://starboard.gg/gz/open-source-observablehq-nfwK2VA
[4]: https://github.com/asg017/unofficial-observablehq-compiler
- Show HN: A simple JavaScript notebook in one file
-
Pyodide: Python for the Browser
If you want to play with Pyodide in a web notebook you can try Starboard [1][2].
A sibling comment introduces JupyterLite and Brython, which are Jupyer-but-in-the-browser, whereas with Starboard I'm trying to create what Jupyter would have been if it were designed for the browser first.
As it's all static and in-browser, you can embed a notebook (or multiple) in a blog post for instance to power interactive examples. The bundle size is a lot smaller than JupyerLite for the initial load - it's more geared towards fitting into existing websites than being a complete IDE like JupyerLab.
[1] https://github.com/gzuidhof/starboard-notebook
[2] https://starboard.gg
- Brython: Python in the Browser
- Ask HN: What personal tools are you the most proud of making?
py2many
-
Transpiler, a Meaningless Word
> Another problem is that there are hundreds of built-in library functions that need to be compiled from Python from C
An approach I've advocated as one of the main authors of py2many is that all of the python builtin functions be written in a subset of python[1] and then compiled into native code. This has the benefit of avoiding GIL, problems with C-API among other things.
Do checkout the examples here[2] which work out of the box for many of the 8-9 supported backends.
[1] https://github.com/py2many/py2many/blob/main/doc/langspec.md
-
py2many VS kithon - a user suggested alternative
2 projects | 17 Jun 2023
-
Why I'm still using Python
https://github.com/py2many/py2many/blob/main/doc/langspec.md
Reimplement a large enough, commonly used subset of python stdlib using this dialect and we may be in the business of writing cross platform apps (perhaps start with android and Ubuntu/Gnome)
-
Codon: A high-performance Python compiler
For py2many, there is an informal specification here:
https://github.com/py2many/py2many/blob/main/doc/langspec.md
Would be great if all the authors of "python-like" languages get together and come up with a couple of specs.
I say a couple, because there are ones that support the python runtime (such as cython) and the ones which don't (like py2many).
-
A Python-compatible statically typed language erg-lang/erg
It'd not fully solve your issue, but have you ever seen https://github.com/py2many/py2many ?
-
Omyyyy/pycom: A Python compiler, down to native code, using C++
Cython doesn't consume python3 type hints and needs special type hints of its own. But it's certainly more mature than other players in the field.
What we need is a rpython suitable for app programming and a stdlib written in that dialect.
https://github.com/py2many/py2many/blob/main/doc/langspec.md
- I made a Python compiler, that can compile Python source down to fast, standalone executables.
- PyTorch: Where we are headed and why it looks a lot like Julia (but not exactly)
-
Show HN: prometeo – a Python-to-C transpiler for high-performance computing
No intermediate AST. To understand the various stages of transpilation and separation of language specific and independent rewriters, this file is a good starting point:
https://github.com/adsharma/py2many/blob/main/py2many/cli.py...
-
Implicit Overflow Considered Harmful (and how to fix it)
Link to the test that's relevant for this discussion:
https://github.com/adsharma/py2many/blob/main/tests/cases/in...
This is an explicit deviation from python's bigint, which doesn't map very well to systemsey languages. The next logical step is to build on this to have dependent and refinement types.
Work in progress here:
https://github.com/adsharma/Typpete
What are some alternatives?
jupyterlite - Wasm powered Jupyter running in the browser 💡
pybind11 - Seamless operability between C++11 and Python
TiddlyWiki - A self-contained JavaScript wiki for the browser, Node.js, AWS Lambda etc.
PyO3 - Rust bindings for the Python interpreter
unofficial-observablehq-compiler - An unofficial compiler for Observable notebook syntax
PythonNet - Python for .NET is a package that gives Python programmers nearly seamless integration with the .NET Common Language Runtime (CLR) and provides a powerful application scripting tool for .NET developers.
hal9ai - Hal9 — Data apps powered by code and LLMs [Moved to: https://github.com/hal9ai/hal9]
PyCall.jl - Package to call Python functions from the Julia language
userscript-github-repository-categories - Categorize GitHub repositories by matching repository names with regular expressions
julia - The Julia Programming Language
dev - Development repository for the CodeMirror editor project
rust-numpy - PyO3-based Rust bindings of the NumPy C-API