I’ve been using Jupyter, but I know there is also Pluto, and perhaps others. Does anyone have suggestions or preferences?
I have used both in the past, but recently I found the trick to disable the internal package manager of Pluto, and I think this my best notebook experience so far.
I use cell mode in my own branch of vscode extension which has saving of inline results to file to survive vscode window reloads. Since I don’ t need many plots and prefer more info density of inline results.
I used Jupyter in my Python days, but only use Pluto in Julia.
Pluto has the advantage of being internally consistent, which is a big bonus over Jupypter for integrated projects and reactivity.
The trick to avoid package conflicts, as mentioned above, is to use project Environments and install all your (non-Base) project packages there.
begin
using Pkg
# create new or open project Environment
Pkg.activate("some_project_environment")
# print the packages in the Environment for ease of check
Pkg.status()
end
Install the packages you need with
Pkg.install(["package1","package2", ...])
and then
begin
using SomeBasePackage
using Package1
using Package2
end
Pluto is satisfying. Another workaround you might need though is to save outputs of long calculations (e.g. using Serialization) and hide those cells from the reactivity somehow. I’ve used just an if-else switch that I change when ready to re-run.
My current preference is Quarto. It does support Jupyter notebooks, however, I like its cell mode best. If I need more static output I use Quarto’s HTML capabilities and in case of PDFs its support for Latex KOMA-Script (I have not tried Typst yet). Of course, I like Pluto as well.
There is also Neptune.jl, but I am not sure if it is still maintained. I have not used it, but I think Neptune was supposed to be somewhat of a feature comprise between Jupyter style cells and Pluto reactivity.
For fast prototyping I prefer Pluto.jl – together with the trick of using my local environment if I prototype on development branches. A nice thing is that a Pluto notebook is also just a Julia script file (with fancy comments)
For “final versions” I prefer Quarto, since that renders nicely into e.g. PDF or into examples/tutorials in a documentation and is itself a Markdown file. Note that Quarto by now also has a “pure Julia” way (without Jupyter in-between ) the QuartoNotebookRunner.jl
I dislike Jupyter is its format it is saved in, makes it really complicated in a git repo.
I also use both Jupyter and Pluto, depending on the use case, but for Jupyter, the Jupytext extension is absolutely essential and gets around pretty much all problems with the .ipynb
format.
Nice, I have to try that somewhen; every now and then I have to use notebooks when Teaching numerics, which is here in Python (I still advertise a bit of Julia for sure).
Pluto every time. To handle the long running problem, I tend to make lots of changes without pressing enter, then when all my inputs are ready, I press ctrl+s to save and it runs everything just once.
I love using Pluto and love how seamlessly I can place reactive widgets, but it’s not always possible in the world where everybody else uses Jupyter.
It’s easy for me to get my colleagues to install a Julia kernel in their Jupyter environment than it is for me to ask them to spin up Pluto. I wish Interact.jl was still maintained as it provides a good feature parity with ipywidgets
.
I honestly just use the VSCode extension and have mostly stopped using notebooks. It is very convenient, so I don’t miss notebooks at all for the most part.
I’ve used Jupyter in the past, and personally I think that is still the way to go as far as notebooks go. Pluto was something I just could not get used to.
Thank you all for the useful discussion!