I used Manim for one of my class presentations, absolutely a delight to use and as expected many people recognized the style and overall the presentation was well received. Incredibly, I had the opportunity to meet Grant as well a few years back. I told him I have used Manim and he was genuinely excited. Such a cool person with so much contribution to human knowledge and understanding.
Well, to me it seems like he just shared the original so that others could benefit from the work he had already done, but that since his main priority is to continue making new videos, he may not have the time resources to:
- Avoid breaking changes
- Keep APIs stable
- Test and document everything, etc.
I personally think there's nothing wrong with that. We wouldn't say that a musician is *obligated* to put out a second album or a remaster. We wouldn't say that an author *must* make a sequel to their popular book. But when it comes to code sometimes we feel like the original author has an obligation to keep working on it just because it would convenience us.
I agree, but want to add that while we may perceive other creative works as 'finished' (to an extent), code often is not. It unfortunately, needs perpetual work.
It's pretty wild to me (I do hardware) that data goods like code can rot the way they do. If my electronics designs sit for a couple years, they'll need changes to deal with parts obsolescence etc. if you want to make new units.
If you did want your software project to run the same as today when compiled/interpreted 10 years from now, what would you have to reach for to make it 'rot-resistant'?
Write it in a specific version of a language with a strong history of backwards compatibility, like Fortran90. Maybe c99? And just use very famous libraries, like BLAS, that are never going away.
It's the same sort of thing, parts obsolescence. The world around you changes and the interfaces you used to interact with the world may not exist anymore. Your dependencies may have been abandoned and have gone through their own bitrot.
I think the best defence is to choose a platform that has longevity, like x86 Linux, and then seriously limit dependencies beyond the platform to the point of maybe not having any extra dependencies.
The problem is eventually platforms change too. The longest lasting platform for software ever created is x86 + BIOS which lasted from 1981 to 2020 when Intel officially deprecated BIOS.
The biggest factor is dependencies' changes, so a good defense against bitrot is to reduce the dependencies as much as possible and try to limit dependencies to those which are exceptionally stable.
This greatly limits velocity, though, and still doesn't help against security issues that need patching.. or if any of the stable dependencies made certain assumptions about hardware that has since changed. But, with the right selection of dependencies and some attention to good design, it is possible to write code durable against bitrot. It's just very uncommon.
There is also the coopling issue: when your code depend of another part of your own code, it may be broken by this inner dependecy.
If the code is not intégration tested enough, then rarely used features may be broken without you noticing, thus the roting expression.
Modern standards help protect against this with the test pyramid.
> If you did want your software project to run the same as today when compiled/interpreted 10 years from now, what would you have to reach for to make it 'rot-resistant'?
ABI compatibility is one of several components involved. The OS the software runs out plays a small role in this problem.
There is a relevant point about OSes though, and it has a different conclusion from yours: Write our software (And OSes) in a way that doesn't create barriers and friction between systems.
And it shouldn't need to. Making (relatively) simple changes like checking-in fixed versions of dependencies in the code base and abstracting away core logic from the platform layer goes a long way. This works well for video games
That’s actually a really good point! I wonder if one day there will be analogues for music and writing?
I suppose you have gumroad / serialized novels or webcomics but I’m not sure if there’s any albums where the musician is putting out one song at a time
And more common nowadays, to re-release/master the recording as 'the artist intended'. But once you are familiarised with an original work and its (unintended) artefacts, a re-do is likely to lose some of the initial magic that drew you to the work in the first place.
Yeah for sure! Listing that kind of thing would probably be helpful. I think this is one of those “you’ve gotta already be on the inside and already know” things as the fork’s read me doesn’t seem to explain it.
> While Grant Sanderson continues to maintain his own repository, we recommend this version for its continued development, improved features, enhanced documentation, and more active community-driven maintenance. If you would like to study how Grant makes his videos, head over to his repository
3b1b is truly a wonder of the internet world. Such beautiful animations, such well thought out explanations.
What I don't quite understand is how one library can animate so many different concepts. To me they seem like they'd all be a custom job, but I guess he works on a higher plane of mathematical existence.
> "Ask HN: What's the state of the art for drawing math diagrams online?" (2023) https://news.ycombinator.com/item?id=38355444 ; generative-manim, manimGPT, BlenderGPT, ipyblender [ Blender MCP, ]
Generate Manim Python code, to visually demonstrate and visually explain,
Generate Manim Python code With reactive pattern like reactive-manim and components like MathTex and MathString, to visually demonstrate and visually explain,
Grant's work with 3blue1brown and Manim is simply amazing. The quality of the videos is so high, not the least thanks to the visualizations. Not an easy task given the abstract nature of the topic.
It's linked in the readme, but I want to highlight the demo video [0], where Grant explains how he works with Manim.
> I like math but showing someone a giant graph isn’t always the best approach. :)
Agreed. 3Blue1Brown has, by making their videos, publishing Manim, and critically by fostering a broader community of math YouTubers instead of trying to hoard the audience for themselves (through SoME), moved mathematics pedagogy forward immensely. (Sal Khan also deserves credit here.) He's created a genre that makes math feel like an exciting and approachable journey, rather than a process of memorization and symbol manipulation.
I don't think base manim support interactive 3D env. But Grant & Ben Eater built "an interactive video" back then about quaternion which you can interact with.
I have been using this with cursor to make videos to explain papers and math concepts to myself.
Some of the results are not perfect (AI sometimes misaligns some shapes), but it's quite helpful and with a couple of iterations you get to a really good explainer video.
I used Manim for one of my class presentations, absolutely a delight to use and as expected many people recognized the style and overall the presentation was well received. Incredibly, I had the opportunity to meet Grant as well a few years back. I told him I have used Manim and he was genuinely excited. Such a cool person with so much contribution to human knowledge and understanding.
It seems like the community fork would be the better link for most people.
https://github.com/ManimCommunity/manim/
For good reasons or for drama reasons? I read the blurb about the fork and can’t tell why exactly if Grant is continuing to maintain the original.
Well, to me it seems like he just shared the original so that others could benefit from the work he had already done, but that since his main priority is to continue making new videos, he may not have the time resources to:
- Avoid breaking changes
- Keep APIs stable
- Test and document everything, etc.
I personally think there's nothing wrong with that. We wouldn't say that a musician is *obligated* to put out a second album or a remaster. We wouldn't say that an author *must* make a sequel to their popular book. But when it comes to code sometimes we feel like the original author has an obligation to keep working on it just because it would convenience us.
(edited for formatting)
I agree, but want to add that while we may perceive other creative works as 'finished' (to an extent), code often is not. It unfortunately, needs perpetual work.
It's pretty wild to me (I do hardware) that data goods like code can rot the way they do. If my electronics designs sit for a couple years, they'll need changes to deal with parts obsolescence etc. if you want to make new units.
If you did want your software project to run the same as today when compiled/interpreted 10 years from now, what would you have to reach for to make it 'rot-resistant'?
Write it in a specific version of a language with a strong history of backwards compatibility, like Fortran90. Maybe c99? And just use very famous libraries, like BLAS, that are never going away.
No idea what to do if it needs a gui, though.
It's the same sort of thing, parts obsolescence. The world around you changes and the interfaces you used to interact with the world may not exist anymore. Your dependencies may have been abandoned and have gone through their own bitrot.
I think the best defence is to choose a platform that has longevity, like x86 Linux, and then seriously limit dependencies beyond the platform to the point of maybe not having any extra dependencies.
The problem is eventually platforms change too. The longest lasting platform for software ever created is x86 + BIOS which lasted from 1981 to 2020 when Intel officially deprecated BIOS.
The biggest factor is dependencies' changes, so a good defense against bitrot is to reduce the dependencies as much as possible and try to limit dependencies to those which are exceptionally stable.
This greatly limits velocity, though, and still doesn't help against security issues that need patching.. or if any of the stable dependencies made certain assumptions about hardware that has since changed. But, with the right selection of dependencies and some attention to good design, it is possible to write code durable against bitrot. It's just very uncommon.
One big thing is just losing knowledge of why things were done a certain way and how they actually work.
Documentation helps and keeping code simple helps.
But what really what rots away is human memory.
There is also the coopling issue: when your code depend of another part of your own code, it may be broken by this inner dependecy. If the code is not intégration tested enough, then rarely used features may be broken without you noticing, thus the roting expression. Modern standards help protect against this with the test pyramid.
> If you did want your software project to run the same as today when compiled/interpreted 10 years from now, what would you have to reach for to make it 'rot-resistant'?
Target Windows, avoid Linux.
ABI compatibility is one of several components involved. The OS the software runs out plays a small role in this problem.
There is a relevant point about OSes though, and it has a different conclusion from yours: Write our software (And OSes) in a way that doesn't create barriers and friction between systems.
And it shouldn't need to. Making (relatively) simple changes like checking-in fixed versions of dependencies in the code base and abstracting away core logic from the platform layer goes a long way. This works well for video games
That’s actually a really good point! I wonder if one day there will be analogues for music and writing?
I suppose you have gumroad / serialized novels or webcomics but I’m not sure if there’s any albums where the musician is putting out one song at a time
It's fairly common for artists to release a single or two from an upcoming album. Some artists release more singles than they do albums.
And more common nowadays, to re-release/master the recording as 'the artist intended'. But once you are familiarised with an original work and its (unintended) artefacts, a re-do is likely to lose some of the initial magic that drew you to the work in the first place.
Yeah for sure! Listing that kind of thing would probably be helpful. I think this is one of those “you’ve gotta already be on the inside and already know” things as the fork’s read me doesn’t seem to explain it.
This is pretty clear from the readme though?
> While Grant Sanderson continues to maintain his own repository, we recommend this version for its continued development, improved features, enhanced documentation, and more active community-driven maintenance. If you would like to study how Grant makes his videos, head over to his repository
Hm, yeah. And I read that. But I still didn’t feel equipped to know which I ought to focus on. Maybe it’s just too early on a Saturday for me.
https://www.youtube.com/watch?v=rbu7Zu5X1zI&t=19s&pp=ygUFbWF...
Looks like the projects have slightly different goals.
Grant developed the software originally as a personal tool for his YouTube videos. The software is optimized for his personal needs.
The community version tries to make the tool useful for more people. They’ve built out the docs and apparently improved testing.
3b1b is truly a wonder of the internet world. Such beautiful animations, such well thought out explanations.
What I don't quite understand is how one library can animate so many different concepts. To me they seem like they'd all be a custom job, but I guess he works on a higher plane of mathematical existence.
> What I don't quite understand is how one library can animate so many different concepts.
It's because there are a _lot_ of community objects built from the core primitives that are good starting points that you can customize from there:
https://docs.manim.community/en/stable/reference_index/mobje...
This gets submitted quite regularly to HN with many good discussions- so instead of posting the discussions I'll just link the search.
https://hn.algolia.com/?q=manim
Is there an awesome list for manim the software?
Manim: Math Animation
Src: ManimCommunity/manim: https://github.com/ManimCommunity/manim
Docs: https://docs.manim.community/en/stable/
GH topic: manim: https://github.com/topics/manim :
manimML, manim-physics, chanim, manim-web (dart), JAnim (java), ranim (rust), manim-voiceover, git-sim, TheoremExplainAgent, reactive-manim, jupyter-manim, manim-sideview (vscode), manim-studio (Qt, Cairo)
ManimCommunity/awesome-manim has a list of creators that create with manim: https://github.com/ManimCommunity/awesome-manim
/?youtube manim: https://www.youtube.com/results?sp=mAEA&search_query=Manim+
Manim and LLMs; LLMs are great for first drafts but fix this sentence, almost working API examples, and links to manim API docs for manim
From https://news.ycombinator.com/item?id=39296310 re: StageCraft / UE:
> "Ask HN: What's the state of the art for drawing math diagrams online?" (2023) https://news.ycombinator.com/item?id=38355444 ; generative-manim, manimGPT, BlenderGPT, ipyblender [ Blender MCP, ]
generative-manim: https://github.com/marcelo-earth/generative-manim
manimGPT: https://chatgpt.com/g/g-dtA3t9WRW-manimgpt
What are some of the similarities and differences between Subagents to dev on Manim the software, and Subagents to teach with manim?
AGENTS.md, awesome-claude-code-subagents > Language specialists, :https://github.com/VoltAgent/awesome-claude-code-subagents#0...
A prompt prefix for Manim with really any LLM:
Generate Manim Python code, to visually demonstrate and visually explain,
Generate Manim Python code With reactive pattern like reactive-manim and components like MathTex and MathString, to visually demonstrate and visually explain,
aren't HN supposed to deduplicate links? I thought duplicate URL submissions not allowed..
HN allows duplicate submissions after a certain amount of time has passed
Grant's work with 3blue1brown and Manim is simply amazing. The quality of the videos is so high, not the least thanks to the visualizations. Not an easy task given the abstract nature of the topic.
It's linked in the readme, but I want to highlight the demo video [0], where Grant explains how he works with Manim.
[0] https://www.youtube.com/watch?v=rbu7Zu5X1zI
This is cool. I immediately clicked because I thought of this awesome video from a couple years ago, Animation vs Math:
https://youtu.be/B1J6Ou4q8vE
I like math but showing someone a giant graph isn’t always the best approach. :)
> I like math but showing someone a giant graph isn’t always the best approach. :)
Agreed. 3Blue1Brown has, by making their videos, publishing Manim, and critically by fostering a broader community of math YouTubers instead of trying to hoard the audience for themselves (through SoME), moved mathematics pedagogy forward immensely. (Sal Khan also deserves credit here.) He's created a genre that makes math feel like an exciting and approachable journey, rather than a process of memorization and symbol manipulation.
Made math like building blocks vs a foreign language.
another youtuber-math-video-library: https://github.com/2swap/swaptube
from what i can tell they render their whole videos start to finish using it?
As we are in HN:
https://github.com/vydd/sketch
Math animaton package for Common Lisp.
Can in it do interactive 3d diagrams.
I don't think base manim support interactive 3D env. But Grant & Ben Eater built "an interactive video" back then about quaternion which you can interact with.
Links:
- https://eater.net/quaternions
- https://eater.net/quaternions/video/intro
In some of grant’s video, it sort of do 3d, not’interacively though: https://youtu.be/KTzGBJPuJwM
Wanted to look for this a while back. Thank you for sharing the link.
See also :
https://github.com/ManimCommunity/manim
I have been using this with cursor to make videos to explain papers and math concepts to myself.
Some of the results are not perfect (AI sometimes misaligns some shapes), but it's quite helpful and with a couple of iterations you get to a really good explainer video.