Hacker News new | ask | show | jobs
by likelybear 1966 days ago
I'm a big fan of Weave/knitr/Rmd style notebooks over Jupyter for reproducibility. I've had a great experience with parameterized Weave.jl reports.

My one complaint is that a streamlined dev workflow depends on good caching. knitr nailed that part, checking code hashes and checking dependencies between chunks. Weave.jl caching has been... finicky.

For a completely different style of notebook, folks should check out Pluto.jl https://github.com/fonsp/Pluto.jl

2 comments

Genuinely curious, what makes Weave and Pluto "completely different" styles of notebook? Is there some reason that Pluto features like interactivity and reactivity couldn't be incorporated in Weave, at least in theory? I get that they focus on different problems, but based on how R Markdown is often used in practice, it seems like there's a lot of overlap between the two problem spaces.
Plutos killer feature to me is that it is not mutable. It can be challenging to adjust initially, mainly because it forces you to write extremely DRY code. The benefit is it makes your code much more stable/reproducible than jupyter and interactivity stronger because anytime something changes in any cell, all the dependent cells, regardless of the order in the doc, are updated.
I completely agree! But I'm wondering whether those benefits are incompatible with the benefits of Weave.jl. E.g., can an arbitrary Pluto notebook be woven to a PDF? If so, why are they separate packages - and if not, is it because of a fundamental difference, or just a difference in conventions or currently supported features?
Why would one chose Pluto over say Weave or the other way around?