corrected a misspelling 

Good article. Another approach I've seen (though not with JavaScript) is to the let the canvas itself represent the state of the particles. It might make sense here sense you are not redrawing the entire canvas. I suspect it would be slow though.