Notebook Use Case for Mathematicians?

kapple
Wed, 07 Jul 2021 09:05:31 +0000
Tooling

TL; DR: Jupyter, Pluto, Neptune, Weave, and LaTeX, Julia via LuaLaTeX, or Julia via Minted or Listings in LaTeX, all don’t satisfy my use case as a mathematician: I’d like top-down cell evaluation with reactivity and interactivity applied to both Julia programming and LaTeX macros and expressions.

Having caught up with the discussions on the use cases and purposes of Jupyter, Pluto, and particularly Neptune, I thought I might throw my hat into the ring. Hopefully the length of this post is alone enough to demonstrate how big of a pain point my suggested solution addresses.

As an applied mathematician and programmer, I’m wondering if anyone else would benefit as I would from a notebook package/functionality with top-down linear evaluation order like LaTeX and Weave, which would allow reactive LaTeX macro updating for example.

This single but all-effecting feature allows complicated and long mathematical expressions come to life, with the Julia implementation following the mathematical expressions/derivation. Like lecture notes or documentation for a large mathematical software implementation.

Let’s face it: in the proliferation of tutorials and presentations using Jupyter or Pluto notebooks, they are all read and presented from the top of the notebook, downward. I see Pluto’s direction to be more towards being an Excel + GUI-producing service, more appropriate to be exported as an interactive web page than a mathematically detailed PDF document…

…which is actually what I make in my profession and free-time: applied mathematics documentation (lecture notes, study notes, mathematical reports, etc). When I use Pluto (which is the closest for my use cases) I feel like I’m using a screwdriver (Pluto) to drive a nail (my use case). It gets the job done more easily than, say, a wrench (Jupyter, Weave).

I am not presenting my thoughts to criticise Pluto - far from it, in fact. For what it is, I love Pluto. For the large majority of my use cases, it’s an awkward but only mostly doable fit and I’ve impressed multiple colleagues who use MATLAB or C++ with it.

What I’m trying to say is: if my documentation task is more mathematical than programmatical, I use LaTeX. If my doc task is more programmatical than mathematical, I use Weave or Pluto. If my doc task is more interactive visualisation then I definitely use Pluto. If I want Jupyter-like notebook presentation with the benefits of being a Julia script, I’ll use Neptune (which I still don’t fully understand the goal of). But if I want all of the above functionalities of interactive mathematical implementation? I’m stuck with the trade-offs each option gives.

Eventually when I’m confident enough with Julia programming and package development, I may fork Pluto into a variation that evaluates top-down linearly, modifying for LaTeX reactivity as well. (Hint-hint, I’d be keen to support someone else leading such a project, if it meets enough people’s use cases.) I might call it Zeus because variables and functions are defined once (like in Pluto), but can get called in multiple other places visually after it’s defined (unlike Pluto), like forked lightning.

I consider myself in the limbo between novice and professional programming, and am not too familiar with the internals of each of the notebook services mentioned above. I’d love to hear everyone’s opinions on what I’ve shared, and please feel free to let me know if I have any logical or other errors in my thoughts.

Edit: To add to the list of solutions, I also know that one can run Julia alongside LaTeX and get the output presented in the output doc (via any of the two options, one via Lua, and another via listings or minted I think it was), but again with the two(-or-more)-language problem: Pluto does math (weakly) and programming, and is easier to use.

Edit 2: @ess3sq explains that a top-down-evaluating version of Pluto may not provide LaTeX reactivity.

32 posts - 10 participants