Over the past few weeks I've been trying to put together a small drawing
library that will behave in a way that suits my typical workflow. An
important feature is that I want to be able to use the library
independently of programming language. The current (fairly unstable)
version of the library is available at Github.

A generative drawing

I've written about the way I usually draw things in Grains of Sand. But the brief version is that
I use randomly sampled numbers to draw primitives (boxes, lines, splines,
…). In order to make high resolution prints I need to do this relatively
fast. And I want to be able to see the image as it is being drawn. I'm not really aware of
any existing libraries or tools that will let me do this, so here I am
...

I've decided to try a model where I have a message queue, and a worker
that draws whatever commands (JSON objects) are sent to the queue (Redis). The tool is written in Python, but
because of this architecture you will be able to use it from from any
environment. As long as you are able to construct JSON, and post the
objects to the queue.

The library consists of two parts. The drawing library is called
"Desert". Desert handles the drawing, displaying and saving. It uses CUDA to speed up the crucial
bits. It's not blazing fast yet, but it seems promising.

The second part is called "Erosion". Erosion consists of the Erosion
client and the Erosion worker. You can use the erosion client to send
Desert primitives to the message queue. And more importantly, you can use
the Erosion worker to process the queue. If you want to use this from your
favorite programming language, you will only need to build your own JSON
objects and send to the queue.

To give you an idea of what it looks like, here is the Python code used
to draw the above image :