`./+oshddmNmddyso+-``                                                                                                                                                                            ``.-:/++oo+/:-.``                          
                            `:ohNNMMMMNNmmmmNNMMMMMNms/-`                                                                                                                                                                    `-+ydmNNMMMMMMMMMNNNdyo-``                     
                         `/ymMMMNhyo+/:::::::::/+sydNMMNdo-                                                                                                                                                               -+ymNMNNmhyssoooooosyhdmNMNmh/-`                  
                       -omMMNhs/::-----------------::+ydNMNh/`                                                                                                                                                         `+ymMNmhs+:::-----------:::/ohmNMmh+.                
                     .oNMMms/:-------------------------:+hmMNd/`                                                                                                                                                     ./hNMmyo/:---------------------::/hmNMd+.              
                   `+mMMmo:------------------------------:/yNMNy:                                                                                                                                                   /hNMmy/:------::-----------::------:/odMNh/`            
                  `sNMNs:-----------:----------:-----------:+hNMm/`                                                                                                                                               .+NMNh/:-----://++:---------:++//:------:smMNo.           
                 .hMMm+------::://++++/------:/+++///::------:sNMm+`                                                                                                                                             -yNMdo:--::::/++++/:---------:/++++/::::--:+dNNh-          
                `hMMd/----::/+++++++///------://+++++++//:----:smMm+`                                                                                                                                           -yMMd+:://++++++//:-------------://++++++//::/yMMh-         
                sMMm/----:/++++/::::------------:::://++++/:---:sNMd:                                                                                                                                          `sMMm+-::/+////::------------------:::////+//:-/dMMy`        
               -NMMs-----/++/::::::---------------:::::/+++:----/hMMy.                                                                                                                                         :NMNs--------:/+++++/-----------:/++++/:--------+mMN:        
              `sMMN:------:::osyhhyso:---------/oyyhhys+:::------omMm:                                                                                                                                        `sMMd:------:+hmNMMMNmh/-------:ymNMMMNNm+:------:yNMy`       
              .dMMh-------:+dNNNNNNNNd+------:omNNNNNNNmy/-------/dMN+                                                                                                                                        -mMNs-------omdhyyyyyymm/-----:dNyoyyyyhdms:------+mMm.       
              .NMNs-------/hmo//////odh:-----/dh+//////sms:------/hMMo`                                                                                                                                       -NMmo-------//+oooooo:/+:-----:+/-:ooooooo/-------/mMN-       
              .NMNs------:/oo--------:/------:/:-------:+o/::----/hMMo`                                                                                                                                       -NMm+---------/oooooo:--::///::---:oooooo:--------/mMN-       
              .dMMy--::/++ooo---------------------------/oo++//::/dMN+                                                                                                                                        -mMms---------/oooooo::+hhyyyhho/-:oooooo:--------+mMm-       
              `yMMm:/+oooooosssoooooooooooooooooooooooso+oooooo++smMm/                                                                                                                                        .hMMh:--------/ooooooohy/.` `./ymo:oooooo:-------:sNMh`       
              `dMMh+ooooooooyNh//////////////////////odd+ooooooooyNMN+`                                                                                                                                       `/NMmo--------/oooooomms+++++++omm/oooooo:-------/dMN/        
              .mMNyoooooooooshd.`````````````````````+dy/oooooooosmMMo`                                                                                                                                        .yMMm/-------/ooooosNMMMMMMMMMMMNooooooo:------:hNMh.        
              `yMMmsoooooooo/+ddhhhhhhhhhhhhhhhhhhhhhdy/:+oooooosdMMm/                                                                                                                                          :dMMy/------/ooooosNMMMMMMMMMMMN+oooooo:-----:sNMd/         
               .yNMNhys+++/:-:/hNMMMMMMMNNmNNMMMMMMMNy/--://+oshmMMm+`                                                                                                                                          `:hMNh+:----/oooooohNMMMMMMMMMMh/oooooo:----/yNMd:`         
                `+hNNMNy/:-----:odNMMNdyysssyydNMMNh+:-----:+hNMNms:`                                                                                                                                             -yMMms:---/oooooo/smNMMMMMMNy/:oooooo:--:+dMMy:           
                  `-+dMMms/------:+ydmddhhhhhddmhs/:-----:/yNMNs/.                                                                                                                                                 `omMNho:-/oooooo:-/+syyyso/--:oooooo::+yNMms.            
                     .omMMms+:------:/+osyyyso+/:-----::+hmMNh/`                                                                                                                                                    `/dMMNh++oooooo:-----------::oooooooymMMm/`             
                       .+dNMNds+::----------------::/oymNMmy:`                                                                                                                                                      `+NMmhssooooooo++++++++++++++oooooosyhmMN/`             
                         `:sdNMNmdyso+/:::::://+oshmNNMmy+-`                                                                                                                                                        `oNMmyoooooooooooooooooooooooooooooosymMN+`             
                            .:oydNNMMNNmmmmmmmNNNMNmhs/-`                                                                                                                                                            .omMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNs.              
                                `.-+syyhhhdhhhys+:-.`                                                                                                                                                                  .osyhhhhhhhhhhhhhhhhhhhhhhhhhhhhhyso-                
                                         ``                                                                                                                                                                                `````````````````````````````                    


.//`+++++++++++++++++++++++++++++++++++++// s
-+/.h+..................................-os s
-+/.h/                                   ss s
-+/.h/                                   ss s
-+/.h/                                   ss s
-+/.h/                                   ss s
-+/.h/                                   ss s
-+/.h/                                   ss s
-+/.h/                                   ss s
-+/.h/                                   ss s
-+/.h/                                   ss s
-+/.h/                                   ss s
-+/.h/                                   ss s
-+/.h+                                   ss s
-+/                            :-.: +:oo-   s
  s                        .::::/osso::::. .+
`.y                        +yyyyhNNNmyyyy+ .+
 .o                    s s::::::::::::s.+ - +
-/y     .o             s ::::::::::::oss+::.+
`-y     .o             y            `+//:  .+


If you search a bit for hacking artists with your favorite search engine, you might come across Evan Roth.

Evan Roth is a US artist who applies a hacker philosophy to an art practice that visualizes transient moments in public space, online and in popular culture

Ok so let's take a look at his projects: http://www.evan-roth.com/project-index/


I was particularly interested in the work: Angry Boids. Because I immediately had the feeling that I had seen it somewhere before. The "Angry Birds" fly across the screen according to a very specific behavior.

Check it out for yourself at https://www.evan-roth.com/websites/angry-boids.com/ for full size. Also I've partly embedded the page below.

If we look at the source code of the page, we see that it uses the Processing programming language.

<script src="processing-1.4.1.min.js"></script>
<canvas data-processing-sources="boids.pde"></canvas>

Processing is a very good programming language to learn coding. It is specialized and designed mainly for visual and graphical applications. Therefore, it is very popular with many artists. Processing is based on Java and is compatible with Java. This makes it possible to program applications beyond purely graphical interfaces. Processing is especially suitable for quick visible results and prototyping. Even with the simplest programs very aesthetic and visually interesting experiments can be possible.

Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. There are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning and prototyping.


If you now consult your favorite search engine again and search for "processing boids example", you will most likely come to this page: https://processing.org/examples/flocking.html

Let's copy and paste the sourcecode into the processing IDE.

flock.pde example code in processing IDE

Does this look familiar?

On the Page it even says: Flocking by Daniel Shiffman. An implementation of Craig Reynold's Boids program to simulate the flocking behavior of birds. Each boid steers itself based on rules of avoidance, alignment, and coherence.

So let's take a closer look at Roth's code. The code in the boids.pde file says:

// Angry Boids, by Evan Roth, 2013 // Built from code written by Casey Reas and Ben Fry

That doesn't sound quite right somehow, but whatever. Who am I to make judgment.


To analyze it in detail, we can use a program that shows exactly which parts of the code have been changed. There are many different tools for this. I have used meld in this case.

Diff of the two codes

diff between the two codes

As you can see, there are definitely some differences. First of all, Roth uses a class called "Vector3D", which does not appear in the example Sketch. Therefore many variables are changed. Also, he does not use the original processing, but a JavaScript version for the web.

But you can browse the Internet a little more in search of Processing flocking examples. And may sooner or later come across this page: https://johnresig.com/apps/processing.js/examples/topics/flocking.html Which looks compared to Roth's code in meld like this:

diff again

So the triangular shape was replaced with the bird image and some changes were made to use the sketch in a webbrowser.

Nevertheless, Evan Roth's "Angry Boids" inspired me to come up with an idea of my own, where I copypasted various sample codes myself and used small images instead of geometric shapes.


😂 is a digital artwork about laughing away all the negative emojis. Of course, this never succeeds, because the negative emojis always break through. So it becomes a Sisyphean task, instead of accepting the feelings and changing them, to cover them up again and again superficially.

Which programming language I used and which code I took from where, I leave as homework to the interested reader.

Try it below. Refresh page if nothing moves, or too slow.