[Motion Canvas](https://motioncanvas.io/) is a sort of visual programming environment somewhere near [[Processing.js]], [[Jupyter]], and some kind of animation studio software. Written in [[Typescript]], and the way animations are procedurally generated is with [[Typescript]] and [JSX](https://www.typescriptlang.org/docs/handbook/jsx.html). # Signals Motion Canvas's [Signals](https://motioncanvas.io/docs/signals) are very similar to spreadsheet cells. They are linked to each other and memoized so they only evalaute when it or any of its dependencies change. The example given in the open source [announcement video](https://www.youtube.com/watch?v=H5GETOP7ivs) is of a series of animations all dependent on the radius of a circle. Whenever the radius is static, no evaluation takes place because the result is memoized. When the radius changes, all animations which depend on that radius value are re-evaluated. This is useful for spreadsheets, but it is also valuable for real-time systems such as games where values will change less often than they're used.