Hi Jesús!
It’d be amazing to have your help, as a mentor or in any other capacity. Actually, you already helped me, since you resolved the issue I was having with GIF exports in your GSoC project, and your YouTube work is incredible too! I’m honored that you want to work with me on this.
I guess I should mention that after MATLAB and C, Python was my next language; I used it to build projects including an interactive 3D physics simulation. But, I don’t have direct experience with manim like you do, so your detailed insights are invaluable.
One of the great things about p5.js is that it provides an onramp for beginners to create increasingly sophisticated projects. I want to extend this to mathematical visualizations, so that basic tasks are not only possible, but also easy for beginners. I’ll elaborate a bit on the main points below.
Accessibility:
For those who are unfamiliar, I think it’s instructive to compare the manim quickstart page to the p5.js get-started page. Both pages show the user how to draw a circle. When comparing the complexity of the setup and the amount of knowledge assumed, it’s like night and day.
Interactivity:
As an example, I made a graphing calculator with p5.js. Zooming works great with a touchpad or mouse, a grab cursor indicates the user can pan by clicking and dragging, and more.
This required no extra setup and the app can run anywhere on the web without any special environment, since javascript is a core web technology. How would you say this compares with manim? I was under the impression that implementing interactivity with manim requires setup, and that it can be slow.
There’s another aspect of accessibility that I didn’t mention. Since math is permanent in many ways, we also have the opportunity to create applications that will be useful to future generations, as long as they’re able to access them. The tricky part is that web technology is impermanent (just ask the developers of all the Java web applets that no longer work). Fortunately, JS is backwards compatible, since breaking JS means breaking the web.
Also, since you mentioned the interactive videos from Grant Sanderson and Ben Eater, have you seen Liqvid? Andy Matuschak also maintains a list of what he calls narrated explorables. (Thanks so much for the other references as well. I added them to my internal planning document.)
Expressiveness:
It’s so cool that you created the custom aesthetic for Reducible, and that you managed to make it immediately identifiable.
To illustrate what I had in mind, let’s consider drawing an axis.
- How easy is it to create different types of arrows at the ends of an axis, of different sizes and shapes?
- How easy is it to make the axes look as if they’re in a graphing calculator, with no arrows, and tick labels at the ends?
- How easy is it to make the axes look as if they’re hand drawn? (Actually, this can be done in Python with Matplotlib.)
Questions like these arise with basically every graphical math object, and there are always many possible answers, which forces design choices at the library level. If we parameterize more options so that users can easily tweak them in different combinations, then we’ll increase the expressiveness.
Following up
If you have any other follow-up thoughts, even on considerations I haven’t addressed at all, I’d love to hear them.
Thanks again!!!
Greg
P.S. I linked to the various things I mentioned and also embedded a few pictures to illustrate the point about expressiveness, but I’m still not allowed to include more than one image or two links (Discourse is telling me I’m still a relatively new user).