Here's a bit of explanation what is going on: there are 2 canvases, one for picking colours from and one for rendering.

Initially big circles are generated just to colour cover the canvas. After that, tiny dots of random size, opacity and location are continuously rendered on the canvas.

You may hit refresh to render it again and it will give a slightly different result each time.

If you are using Chrome, you can right-click on the canvas to save the image.

Take a peak into pointilism.js