Alexandre B A Villares


sketch-a-day

coding a visual idea a day

Welcome! My name is Alexandre Villares and since January, 2018 I have been coding sketches everyday, publishing the source code in the same repository that stores this page, github.com/villares/sketch-a-day. You can follow this project on Mastodon at pynews.com.br/@villares.

The results are mostly tentative, exploratory, and I don’t feel like they need to be relevant or meaningful on any particular day. The everyday practice leads to the emergence of ideas that I consider interesting, worthy of further exploration. Some of those have been added to selected work, this collection itself became valuable for me, and it is my pleasure to share it with anyone willing to explore coding as a creative and expressive medium.

Please do not hesitate to contact me regarding licenses to use my work, teaching opportunities, consulting or other projects. Moreover, I kindly invite you to subscribe to my newsletter, [sketch-mail - on pause]. If you appreciate what I have been doing, you may support my artistic work, research and open educational resources I publish on-line using the Brazilan PIX key at 46c37783-5edb-4f1c-b3a8-1309db11488c, PayPal or gumroad.com/villares.

Here are listed some of the tools I have been using:


2024 | 2023 | 2022 | 2021 | 2020 | 2019 | 2018


sketch_2024_04_18

sketch_2024_04_18

sketch_2024_04_18 [py5]

40 hexágonos brancos a partir de uma grande de 3x3 pontos. Em branco em quadrados pretos, dispostos em uma grade de 8 colunas e 5 linhas em um fundo azul.


sketch_2024_04_17

sketch_2024_04_17

sketch_2024_04_17 [py5]

All the 125 possible not self-intersecting polygons form a 3 x 3 grid of points (without rotations and translations).


sketch_2024_04_16

sketch_2024_04_16

sketch_2024_04_16 [py5]

Success! All the possible simple quadrilaterals from a 3 x 3 grid of points. Yesterday I had broken my hashing function that made it possible to eliminate rotations (it is possible to eliminate reflections too, but I like to have them)


sketch_2024_04_15

sketch_2024_04_15

sketch_2024_04_15 [py5]

still WIP, my translation/rotation elimination strategy didn’t work (so turned it off on this output)


sketch_2024_04_14

sketch_2024_04_14

sketch_2024_04_14 [py5]

WIP … hard to debug


sketch_2024_04_13

sketch_2024_04_13

sketch_2024_04_13 [py5]


sketch_2024_04_12

sketch_2024_04_12

sketch_2024_04_12 [py5]


sketch_2024_04_11

sketch_2024_04_11

sketch_2024_04_11 [py5]


sketch_2024_04_10

sketch_2024_04_10

sketch_2024_04_10 [py5]


sketch_2024_04_09

sketch_2024_04_09

sketch_2024_04_09 [py5]


sketch_2024_04_08

sketch_2024_04_08

sketch_2024_04_08 [py5]

Fiddling with https://github.com/Botffy/polyskel/tree/master


sketch_2024_04_07

sketch_2024_04_07

sketch_2024_04_07 [py5]


sketch_2024_04_06

sketch_2024_04_06

sketch_2024_04_06 [py5]

#scikitgeometry #skgeom


sketch_2024_04_05

sketch_2024_04_05

sketch_2024_04_05 [py5]


sketch_2024_04_04

sketch_2024_04_04

sketch_2024_04_04 [py5]

#OpenSimplexNoise #Numpy


sketch_2024_04_03

sketch_2024_04_03

sketch_2024_04_03 [py5]


sketch_2024_04_02

sketch_2024_04_02

sketch_2024_04_02 [py5]


sketch_2024_04_01

sketch_2024_04_01

sketch_2024_04_01 [py5]


sketch_2024_03_31

sketch_2024_03_31

sketch_2024_03_31 [py5]


sketch_2024_03_30

sketch_2024_03_30

sketch_2024_03_30 [py5]


sketch_2024_03_29

sketch_2024_03_29

sketch_2024_03_29 [py5]


sketch_2024_03_28

sketch_2024_03_28

sketch_2024_03_28 [py5]


sketch_2024_03_27

sketch_2024_03_27

sketch_2024_03_27 [py5]


sketch_2024_03_26

sketch_2024_03_26

sketch_2024_03_26 [py5]


sketch_2024_03_25

sketch_2024_03_25

sketch_2024_03_25 [py5]


sketch_2024_03_24

sketch_2024_03_24

sketch_2024_03_24 [py5]


sketch_2024_03_23

sketch_2024_03_23

sketch_2024_03_23 [py5]


sketch_2024_03_22

sketch_2024_03_22

sketch_2024_03_22 [py5]


sketch_2024_03_21

sketch_2024_03_21

sketch_2024_03_21 [py5]


sketch_2024_03_20

sketch_2024_03_20

sketch_2024_03_20 [py5]


sketch_2024_03_19

sketch_2024_03_19

sketch_2024_03_19 [py5]


sketch_2024_03_18

sketch_2024_03_18

sketch_2024_03_18 [py5]


sketch_2024_03_17

sketch_2024_03_17

sketch_2024_03_17 [py5]


sketch_2024_03_16

sketch_2024_03_16

sketch_2024_03_16 [py5]


sketch_2024_03_15

sketch_2024_03_15

sketch_2024_03_15 [py5]


sketch_2024_03_14

sketch_2024_03_14

sketch_2024_03_14 [py5]


sketch_2024_03_13

sketch_2024_03_13

sketch_2024_03_13 [py5]


sketch_2024_03_12

sketch_2024_03_12

sketch_2024_03_12 [py5]


sketch_2024_03_11

sketch_2024_03_11

sketch_2024_03_11 [py5]


sketch_2024_03_10

sketch_2024_03_10

sketch_2024_03_10 [py5]


sketch_2024_03_09

sketch_2024_03_09

sketch_2024_03_09 [py5]

the red text encodes the neighbours state


sketch_2024_03_08

sketch_2024_03_08

sketch_2024_03_08 [py5]

WIP


sketch_2024_03_07

sketch_2024_03_07

sketch_2024_03_07 [py5]


sketch_2024_03_06

sketch_2024_03_06

sketch_2024_03_06 [py5]


sketch_2024_03_05

sketch_2024_03_05

sketch_2024_03_05 [py5]


sketch_2024_03_04

sketch_2024_03_04

sketch_2024_03_04 [py5]


sketch_2024_03_03

sketch_2024_03_03

sketch_2024_03_03 [py5]


sketch_2024_03_02

sketch_2024_03_02

sketch_2024_03_02 [py5]


sketch_2024_03_01

sketch_2024_03_01

sketch_2024_03_01 [py5]


sketch_2024_02_29

sketch_2024_02_29

sketch_2024_02_29 [py5]

    for facet in bs:
        with py5.begin_shape(py5.LINES):
            py5.vertices(vs[v] for v in itertools.chain(*facet))

sketch_2024_02_28

sketch_2024_02_28

sketch_2024_02_28 [py5]


sketch_2024_02_27

sketch_2024_02_27

sketch_2024_02_27 [py5]


sketch_2024_02_26

sketch_2024_02_26

sketch_2024_02_26 [py5]


sketch_2024_02_25

sketch_2024_02_25

sketch_2024_02_25 [py5]

Now using #shapely as suggested by @py5coding@fosstodon.org :)


sketch_2024_02_24

sketch_2024_02_24

sketch_2024_02_24 [py5]

circle and line segment collision, based on: http://www.jeffreythompson.org/collision-detection/line-circle.php point_circle


sketch_2024_02_23

sketch_2024_02_23

sketch_2024_02_23 [py5]

rect collisions


sketch_2024_02_22

sketch_2024_02_22

sketch_2024_02_22 [py5]


sketch_2024_02_21

sketch_2024_02_21

sketch_2024_02_21 [py5]


sketch_2024_02_20

sketch_2024_02_20

sketch_2024_02_20 [py5]


sketch_2024_02_19

sketch_2024_02_19

sketch_2024_02_19 [py5]


sketch_2024_02_18

sketch_2024_02_18

sketch_2024_02_18 [py5]


sketch_2024_02_17

sketch_2024_02_17

sketch_2024_02_17 [py5]


sketch_2024_02_16

sketch_2024_02_16

sketch_2024_02_16 [py5]


sketch_2024_02_15

sketch_2024_02_15

sketch_2024_02_15 [py5]


sketch_2024_02_14

sketch_2024_02_14

sketch_2024_02_14 [py5]


sketch_2024_02_13

sketch_2024_02_13

sketch_2024_02_13 [py5]


sketch_2024_02_12

sketch_2024_02_12

sketch_2024_02_12 [py5]


sketch_2024_02_11

sketch_2024_02_11

sketch_2024_02_11 [py5]


sketch_2024_02_10

sketch_2024_02_10

sketch_2024_02_10 [py5]


sketch_2024_02_09

sketch_2024_02_09

sketch_2024_02_09 [py5]


sketch_2024_02_08

sketch_2024_02_08

sketch_2024_02_08 [py5]

Still capture of anolher animated gesture experiment


sketch_2024_02_07

sketch_2024_02_07

sketch_2024_02_07 [py5]

Another animated mouse gesture experiment


sketch_2024_02_06

sketch_2024_02_06

sketch_2024_02_06 [py5]

Another animated mouse gesture experiment


sketch_2024_02_05

sketch_2024_02_05

sketch_2024_02_05 [py5]

Another animated mouse gesture experiment


sketch_2024_02_04

sketch_2024_02_04

sketch_2024_02_04 [py5]

Another animated mouse gesture experiment


sketch_2024_02_03

sketch_2024_02_03

sketch_2024_02_03 [py5]


sketch_2024_02_02

sketch_2024_02_02

sketch_2024_02_02 [py5]


sketch_2024_02_01

sketch_2024_02_01

sketch_2024_02_01 [py5]


sketch_2024_01_31

sketch_2024_01_31

sketch_2024_01_31 [py5]

Sorru, no music.


sketch_2024_01_30

sketch_2024_01_30

sketch_2024_01_30 [py5]

#genuary30 just porting ad using a Processing shader example


sketch_2024_01_29

sketch_2024_01_29

sketch_2024_01_29 [py5]

#genuary29 using a 3D sdf based mesh library


sketch_2024_01_28

sketch_2024_01_28

sketch_2024_01_28 [py5]


sketch_2024_01_27

sketch_2024_01_27

sketch_2024_01_27 [py5]

#genuary27 the gif degraded the color gradients :(


sketch_2024_01_26

sketch_2024_01_26

sketch_2024_01_26 [py5]

#genuary26 Inspired by deconbatch’s “Poor man’s Diffusion Limited Aggregation” Istead of calculantig costly distance, I’m reading a pixel from the canvas and seeing if it falls in the “black halo”. I started not showing the halo, but changed my mind.


sketch_2024_01_25

sketch_2024_01_25

sketch_2024_01_25 [py5]

#genuary25


sketch_2024_01_24

sketch_2024_01_24

sketch_2024_01_24 [py5]

not engough energy for #genuary24 :(


sketch_2024_01_23

sketch_2024_01_23

sketch_2024_01_23 [py5]

#genuary23


sketch_2024_01_22

sketch_2024_01_22

sketch_2024_01_22 [py5]

#genuary22


sketch_2024_01_21

sketch_2024_01_21

sketch_2024_01_21 [py5]

#genuary21 #LibreTranslatePy #LibreTranslate


sketch_2024_01_20

sketch_2024_01_20

sketch_2024_01_20 [py5]

#genuary20 with shapely


sketch_2024_01_19

sketch_2024_01_19

sketch_2024_01_19 [py5]

#genuary19 Variation of an early flocking experiment


sketch_2024_01_18

sketch_2024_01_18

sketch_2024_01_18 [py5]

#genuary18 Bauhaus (inspired by Albers)


sketch_2024_01_17

sketch_2024_01_17

sketch_2024_01_17 [py5]

Badly done #genuray17


sketch_2024_01_16

sketch_2024_01_16

sketch_2024_01_16 [py5]

#genuary16


sketch_2024_01_15

sketch_2024_01_15

sketch_2024_01_15 [py5]

#genuary15 Physics (using pymunk)


sketch_2024_01_14

sketch_2024_01_14

sketch_2024_01_14 [py5]

#genuary14


sketch_2024_01_13

sketch_2024_01_13

sketch_2024_01_13 [py5]

#genuary13


sketch_2024_01_12

sketch_2024_01_12

sketch_2024_01_12 [py5]

#genuary12 “lava lamp” OpenSimplexNoise


sketch_2024_01_11

sketch_2024_01_11

sketch_2024_01_11 [py5]

#genuary11 inspired by Anni Albers


sketch_2024_01_10

sketch_2024_01_10

sketch_2024_01_10 [py5]

#genuary10 ASCII


sketch_2024_01_09

sketch_2024_01_09

sketch_2024_01_09 [py5]

#genuary9


sketch_2024_01_08

sketch_2024_01_08

sketch_2024_01_08 [py5]

#genuary8 Double-pendulum simulation based on pygame code by Bryan Brickman


sketch_2024_01_07

sketch_2024_01_07

sketch_2024_01_07 [py5]

#genuary7 progress bar


sketch_2024_01_06

sketch_2024_01_06

sketch_2024_01_06 [py5]

#genuary6 screensaver (based on earlier Processing sketches for “tweetprocessing”)


sketch_2024_01_05

sketch_2024_01_05

sketch_2024_01_05 [py5]

#genuary5 d’aprés Vera Molnar “interruptions” (https://collections.vam.ac.uk/item/O1193775/interruptions-drawing-vera-molnar/)


sketch_2024_01_04

sketch_2024_01_04

sketch_2024_01_04 [py5]

#genuary4 pixels


sketch_2024_01_03

sketch_2024_01_03

sketch_2024_01_03 [py5]

#genuary3 droste


sketch_2024_01_02

sketch_2024_01_02

sketch_2024_01_02 [py5]

#genuary2 no palette


sketch_2024_01_01

sketch_2024_01_01

sketch_2024_01_01 [py5]

#genuary1 #genuary2024 lots of particles


2024 | 2023 | 2022 | 2021 | 2020 | 2019 | 2018


The sketch-a-day project, images and code repository, by Alexandre B A Villares are licensed under Attribution-NonCommercial-NoDerivatives 4.0 International , except if marked/attributed otherwise in a file or code section. Please contact for licensing questions.