[ANN] Javis.jl v0.3

Javis Is Better Than Ever! :tada:

It is with great excitement that we announce the release of Javis v0.3.0! :tada: :tada:
This release was focused on adding in some much desired features as well as a rethink of its syntax.
Read on to see all the new features!

Revamped Syntax :100:

v0.3.0 introduces a new syntax that should feel more natural than our previous iterations.
Following user feedback, we revised the Action-SubAction relational syntax and instead adopted an Object-Action relational syntax.
One can now say, “an Object was acted upon by an Action” instead of “an Action was modified by a SubAction” with the latter being less clear.Furthermore, creating animations is now much simpler.
An example being:

using Javis, Animations

function ground(args...)

video = Video(600, 400)
Background(1:200, ground)

for start in 1:10:50
    star_obj = Object(start:(start + 149), (args...) -> star(O, 20, 5, 0.5, 0, :fill))
    act!(star_obj, Action(1:10, sineio(), appear(:scale)))
    act!(star_obj, Action(1:140, follow_path(star(O, 150))))
    act!(star_obj, Action(140:150, sineio(), disappear(:scale)))

render(video, pathname="follow_the_star.gif")

Which yields an animation like this:


Did Someone Say… Transposing a Matrix :eyes:

This new syntax opens up limitless opportunities in creating animated graphics!
Some of those new graphics are using!
Example code for: Fourier Transforms to outline images


or for explaining the Fourier series:

And, by popular demand from before our very first release, transposing a matrix:


(We will add a tutorial or at least put it in the examples section soon :wink: )

Future Development Paths for Javis :hourglass:

This will probably be our main release of Javis for a while as the new features we would like to implement will take time.
We want to move to supporting Jupyter and Pluto notebooks in the future as well as improving the current live viewer that Javis has.
Further, we want to continue doing backend optimizations for Javis to make it faster and less memory intensive.
And someday, maybe someday, write our own LaTeX parser to make transposing a matrix and others actually possible! (It’s currently more like a hack :smile: )
Finally, there are on-going explorations being done to see how Javis could be utilized for specific domains.

Our dream is to see creators making their own animations for their specific domains.

Wrap Up and Get Involved! :heart:

Want to learn how to use or contribute to Javis?
Check out our documentation to see our contributing guidelines - beginners welcome! - and in-depth tutorials.

And if you are just curious about the philosophy behind Javis, see our mission statement.

Do you have any questions, feedback, or ideas for us?
Feel free to join our community over on the Julia Zulip #javis stream!
If you find any issues or problems with the tool or Javis, feel free to open an issue on our project repo .
What are you waiting for?
Run ]add Javis in your Julia REPL and try it out!
We hope you enjoy this new release of Javis!

~ @Wikunia and @TheCedarPrince


At this point, are we just trying to make a robotic 3b1b?


Hey @Oscar_Smith!

What do you mean a “robotic 3b1b”? Although Javis is directly inspired by manim, 3b1b’s animation engine, Javis is distinct from it in that the library does not only function for creating math videos and is built to be more performant than its Python code base thanks to Julia. Plus, to borrow from @Zach_Christensen, Javis serves as a grammar for creating animated graphics for any domain (like I have been attempting with the neuroinformatics project, NeuriViz).

Could you explain a bit more by what you mean? Are you referring to Javis’s syntax?


I was mainly joking, but if anyone can hook together Javis, GPT-3, a speaker, and a Roomba I really want to see the result :slight_smile:


Ah, so you mean… DJ Roomba? That might be too soon for humanity - I am not sure if we are prepared for such magnificence.

Of course, Javis is fully capable of bringing this idea to bear. :wink:


There is now also a blog post about the new version with some more examples including how to make Fourier series animations: