Charming
Think of Charming as Lodash for graphics, or D3 for computational art.
Charming, short for Charming Computing, is a free, open-source data-driven language for creative coding and ASCII art with high performance. It has a declarative, concise, yet expressive API inspired by G2.js, D3.js and P5.js.
Links
- What is Charming? - A brief introduction to Charming
- Why Charming? - The inspiration and motivation behind Charming
- Get Started - Installation instructions and quick examples
- Examples - Explore a collection of Charming examples
- API Reference - Core API reference
- GitHub - Source code and issues
If you want to have a comprehensive understanding of Charming, such as design choice, discussion and future work, you can skip links above and read Charming: Charming Computing directly.
Features
Charming is built on the observation that both visualization and generative art are, to some extent, data-driven.
Therefore, it provides a novel flow-based API for processing data, appending and transforming shapes. Charming also supports batch rendering of 2D primitives using a WebGL renderer, and defining some GLSL functions to offload expensive computations to the GPU. Additionally, a terminal renderer for ASCII art, embedded in JavaScript, utilizes a software rasterizer written in Rust and compiled to WASM, aiming to achieve high performance. Charming also puts strong emphasis on extensible, composable, beginner-friendly and lightweight (29kb minified core bundle).
My hope with Charming is that you spend less time wrangling the machinery of programming and more time “using computing to tell stories”. Or put more simply: With Charming, you’ll express more, and more easily.
License
Charming is released under the ISC License.
