Slide 1

Slide 1 text

Generative Animation with Elm f (by) ‘19
 Minsk, Belarus

Slide 2

Slide 2 text

the obsessed engineer @shaman_sir the obsessed designer Sergo Golovachev Anton Kotenko

Slide 3

Slide 3 text

1. The Problem hierarchy of needs from the designers’s point of view splashes, banners, screensavers… maybe sales something else bla-bla-bla

Slide 4

Slide 4 text

The Company needs 
 splash screens and banners 
 for every new 
 IDE version and product

Slide 5

Slide 5 text

~2000 graphical artifacts per release

Slide 6

Slide 6 text

Pressure with time, every release requires new style

Slide 7

Slide 7 text

It should be complex, not minimal

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

So the designer 
 comes to the idea 
 to generate this stuff (Company doesn’t care about the way it’s done)

Slide 10

Slide 10 text

It is better if it would be animated, so the designer 
 will be able to find and save 
 the nicest frame

Slide 11

Slide 11 text

It is better if it includes 
 time travel, so the designer would be able to return back in time to the frame they missed

Slide 12

Slide 12 text

Trying new ideas should be easy, 
 so it should be easy 
 to change the parts 
 of the generated Thing

Slide 13

Slide 13 text

1. The Problem The programmer’s point of view λ

Slide 14

Slide 14 text

Why functional programming?

Slide 15

Slide 15 text

We’ve tried 
 with p5.js and JavaScript and it’s error-prone

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

Haskell is fascinating

Slide 18

Slide 18 text

Algebraic Data Types save lives

Slide 19

Slide 19 text

We need the web output

Slide 20

Slide 20 text

Elm compiles to JS

Slide 21

Slide 21 text

Elm started with 
 the graphics 
 from the first point

Slide 22

Slide 22 text

Elm is OK 
 with both animation
 and time travel

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

2. The solution

Slide 25

Slide 25 text

We had no idea what we get as the result

Slide 26

Slide 26 text

Functional Programming Elm WebGL Shaders λ Precursors:

Slide 27

Slide 27 text

Combine different techniques Fractals Delaunay Voronoi FSS

Slide 28

Slide 28 text

Layers - to try 
 Canvas / WebGL / Text, to control their order Canvas WebGL SVG WebGL

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

MUV but for layers (triggered by animation ticks along with other events) Canvas WebGL SVG WebGL Tick

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

JS-to-Elm connection: random numbers 
 as side-effect

Slide 35

Slide 35 text

Canvas WebGL SVG WebGL FSS Start
 | Import
 | ChangeConfiguration (also Lucky) Tick

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

Elm-WebGL 
 is awesome https://github.com/elm-explorations/webgl

Slide 38

Slide 38 text

Type control 
 for shaders code

Slide 39

Slide 39 text

https://github.com/JetBrains/elmsfeuer https://www.jetbrains.com/goodies/code2art/#tron

Slide 40

Slide 40 text

Fin.