This is an implementation of the Axelrod model of "cultural dissemination". It simulations the spreading and clustering of opinions in a society. You can read more about it in my blog post.
The simulation runs in the browser and you can check out a live demo to play with here.
For the implementation I used React.js. The one direction data flow and the self-updating view components enabled me to have to think less about modifying and keeping up to date the view state and instead focus more on the underlying data and the simulation algorithm.