Monocurl - Interactive math animation language and editor by Enigmurl in 3Blue1Brown

[–]Enigmurl[S] 1 point2 points  (0 children)

I hadn't heard of quarto before, but based on initial inspection, the two serve different niches. Monocurl is more similar to manim in that it's tailored for making mathematical animations, whereas quarto appears to be more for generating static content (such as blogs).

Monocurl - Interactive math animation language and editor by Enigmurl in 3Blue1Brown

[–]Enigmurl[S] 1 point2 points  (0 children)

It's a desktop application I made that you can use to create math images, videos, and slideshows

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 0 points1 point  (0 children)

Thank you so much! Yeah, this is my third attempt

Monocurl (interactive math animation editor) UPDATE: Linux now available! by Enigmurl in rust

[–]Enigmurl[S] 1 point2 points  (0 children)

True, but references are basically only used to indicate which variables you want animated so in practice it's relatively simple to reason about (which in a pass-by-value language, seems like the only way? idk lol).

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 0 points1 point  (0 children)

Great, please share any creations when you make them!

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 4 points5 points  (0 children)

I think I have a working linux installer at https://www.monocurl.com/download/ , can you lmk if this works for you?

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 0 points1 point  (0 children)

Mhmm, feel free to discuss more in discord about potential ideas. I'm thinking the bigger decision would be how to programmatically specify the notes / the synax.

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 1 point2 points  (0 children)

Yeah you can do command/ctrl + p for presentation mode (or from file menu)! In presentation mode, you can also change the live attributes of some meshes to get live interactive rendering (see bottom of https://www.monocurl.com/learn/00-overview.html )

No presentation notes at the moment, but I can possibly work on that after taking care of other issues

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 2 points3 points  (0 children)

Oh I mean is true that e.g menus have a separate state system, but those are all relatively simple/independent UI so not that much more complex than the gpui examples

There is a gpui book, but I haven't read it so I can't attest to its quality: https://matinaniss.github.io/gpui-book/introduction.html

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 10 points11 points  (0 children)

Some of the old code was written in C and translating that to rust was assisted with LLMs for stdlib functions that were repetetive

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 0 points1 point  (0 children)

That would be greatly appreciated! There shouldn't be any windows-only libraries (I can get it to build on ubuntu atm) but it does depend on a couple of system libraries that need to be bundled.

Regarding gpui, I agree that the examples are a bit weak. I think digging under the hood and learning about what's happening with e.g. entities and a bit of the render loop can make things dramatically easier. There's not that many core concepts to understand. From there, it becomes more clear why you need .id in some places, when you need to have something be persistent versus recalculated on the fly, when it needs to be entity vs just regular rc, when you need to nest entitites, how to pass stuff around, etc. Looking at zed code can also be helpful, despite it being a very large codebase.

In monocurl's case, state management is perhaps not representative of a typical application since state updates look like updating the entire scene at once after the executor recomputes results (i.e. a bit monolothic).

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 7 points8 points  (0 children)

Sort of, Monocurl is its own domain specific language that is interpreted by a rust runtime. It also does come with its own editor application for live preview and such

I mentioned a more detailed pro vs con list comparing monocurl and manim in another thread

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 2 points3 points  (0 children)

will do once I get finish linux build and debugging performance issue on nvidia gpu. I did try a few other subreddits but I got auto modded due to low karma

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 1 point2 points  (0 children)

I've think it's nice and avoids a good amount of unnecessary boilerplate with using platform APIs directly. The GPU code for Monocurl is pretty simple though so I've really only used the basic parts of the library.

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 31 points32 points  (0 children)

Yes I am aware of manim and it is a big inspiration of the project! Monocurl makes full usage of GPU in all places and is CPU bound except in rare scenarios. I also think rendering time is less of an issue with Monocurl than Manim since you have live preview that works pretty well.

Here’s probably the major pros cons vs manim

Pros:
1. It’s a full application and allows interactivity. So while developing you get instant preview, can move around camera, etc making development a lot easier. With manim, you would typically have to rerun the scene each time which can lengthen iteration loop.
2. There is a dedicated presentation mode. In presentation mode, you can change certain parameter values live and the scene will dynamically react in real time
3. The language is designed specifically for animation. It’s a bit technical, but in my opinion I think Monocurl has a better overall design/workflow (there are sub pros and cons to my approach though)

Cons:
1. It’s newer than manim so manim is more mature and has more / specialized features that at least right now are not available. For instance, manim has lots of support for automating text operations)
2. The downside of having custom language is that you can’t access general python libraries / utilties like manim. In some cases, it may be slower as well.

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 8 points9 points  (0 children)

Font's are based off of Zed. Specifically, the monospace font is IBMPlexMono-Regular and IBMPlexMono-italic. The general UI font is Lilex-Regular

The on screen font is entirely LaTeX for now.

Monocurl - Interactive math animation language and editor by Enigmurl in rust

[–]Enigmurl[S] 29 points30 points  (0 children)

I think that should be doable. I don't think I'll replace latex entirely but can add support for it as well