Idea by Attila Kosir (TheMad), he wrote a similar app cca. 25-30 years ago.
Each dot of 32 total has a relationship to 4 of other ones: +/-100%. When the relation factor is love (0..100%), the dot will follow the other one with the speed of the factor. When the relation factor is hate (0..-100%) the dot will run away as fast as the factor is. The dot's position in the next frame is changed by the sum of these relations. When a dot stops (e.g. lovers stick together) or hit the wall (e.g. wants to escape from the world), minor change applies to its feelings in order to keep it in the arena.
This little app is written in C++, using SDL2 framework. You can download native i386 and amd64 Debian packages, or launch the Emscripten-compiled version in the browser. Some browsers have poor WebGL implementation, so don't be surprised, if it is extremly slow. Source code is available on GitHub.