Voila – From notebooks to standalone web applications and dashboards
Note that there's also streamlit [1]. It uses regular python files, rather than notebooks, so they can be easily version controlled. And it has more UI tools.
Voila is quite nice but I find panel [1] is the best option these days. It has plenty of widgets, including those from Voila which can be used as a backend, a few different ways of defining callbacks and has added nice features lately like autoreload if you are using scripts instead of notebooks [2] and new fast HTML elements so it's super easy to define custom widgets straight from the web. They have a discussion page comparing the project to the standard alternatives (dash, streamlit, voila etc) [3]. The docs could do with improving but their discourse is very active [4].
[1] https://panel.holoviz.org/getting_started/index.html
[2] https://github.com/holoviz/panel/pull/1983
I really like Jupyter notebooks to build a simple concept and then move to .py files. But what I observe, especially at the entry level or junior level jobs in data science is that people spend huge amount of its work on jupyter, which did not focus on how to plan flow properly. What I meant is that there is very short path from usefullness to overkill.
I recently used this to do a POC at my day job. I was able to demo a machine learning tool quite smoothly to executives.
Later it was implemented in production with a regular stack (Flask + Vue).
Voila is really empowering for e.g. data scientists that are comfortable in a jupyter environment but aren't js wizards. Running locally, I just love the reactivity it provides: you don't worry about sync between front-end and back-end, everything is propagated through websockets I believe (Jupyter is Tornado-based).
However, for production you might want to use another tool, since it (currently) executes every session in isolation, so every time an user connects it re-runs everything from scratch. Moreover, the round-trips to the server can be slow if you are e.g. in a different continent so this degrades the UX.
Here is an example of a small ML app I built with Voilà (this will probably crash due to HN hug of death™), and JAX on the backend: http://grad-descent.herokuapp.com/
Can't wait to be asked to deploy 5gb Anaconda based blog articles using this.
I love jupyter notebooks but I think the way they have be to be used is in a "throw away" fashion. E.g. use it to explore data, develop some algorithm, then put it to PY files. It is there to develop something which is worth versioning. I think in this way this seems like a cool addition: To evaluate the worthiness of the algo you might need to show it some people, this is where this comes into play.
I have a question about hosting costs - not a SW.
Suppose I write some educational Jupyter notebooks, which are not particularly resource intensive, say 100 seconds of compute time per notebook. I host them on some cloud server, using something like OP, and get a 1000 people to learn from it. Maybe they end up using say,
1000 people x 5 notebooks x 100 seconds/run x 20 runs of each notebook = 10 million seconds of compute time.
How much would such a server cost to host, where "many" of these people are working on the notebooks together? Just need a rough estimate.
This is cool, looks very similar to Streamlit.
Tried their example link:
"Problem: package xeus-cling-0.12.0-h5a79028_0 requires xtl >=0.7.0,<0.8.0a0, but none of the providers can be installed"
sigh
I don't know when it started, but it seems to be a recent trend to add dependencies for anything and to package everything on demand. It's probably for security or something. But I do miss the days when people would link a static binary that "just works" even without internet and that'll keep working a week later, because it includes all of its dependencies as opposed to downloading and updating 500 packages on-demand.
It seems this is doing round trips to the server to do the calculations?
I often think that with the current state of Javascript in the browser, we could build an awesome, super fast, Jupyter style notebook software that runs completely in the browser. With the modules implemented as native Javascript modules which are dynamically loaded.
Is anybody working on this?
I have built a rough version of this idea for myself and been using it for my own statistic needs for a few months now. It is far from being polished/flexible enough to be useful as a general purpose notebook though.
Last time I checked, Voilà was very slow for anything but the simplest dashboards. This may or may not be a problem depending on the context as instant page load isn't always needed but it's a an aspect to take into account. So my friendly advice is to do your benchmarks with real-world use cases before investing time in this solution.
Deepnote recently introduced interactivity when you publish your notebook as well: https://docs.deepnote.com/collaboration/publishing-a-noteboo...
Would it be crazy to add Viola: to the title of this sub?
OP here. I'm sorry that I didn't put the name "Voilà " in the title. I was so very excited that I've mistyped myself.
undefined