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.
The results here 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.
You can follow me on Mastodon @villares@ciberlandia.pt or at @villares@pynews.com.br, where I post most of my daily sketches. Please do not hesitate to contact me regarding licenses to use my work, teaching opportunities, consulting or other projects.
If you appreciate what I have been doing, you may also 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, where you can subscribe to my [sketch-mail] newsletter.
Here are listed some of the tools I have been using more recently:
- [py5] is my main too, combining a Processing Java infrastructure and Python 3;
- [pyp5js] is my browser based choice for creative coding, based on pyodide + p5.js;
- [shoebot] - great 2D vector graphics creative coding with Python;
- [pyscript] - another useful Python in the browser tool;
- [FreeCAD] - the wonderful 3D modeling tool, CAD & more, Python infused;
- [Blender] doesn’t need introductions, I guess, but it has a nice Python interface you might have missed.
2024 | 2023 | 2022 | 2021 | 2020 | 2019 | 2018
sketch_2024_11_20
sketch_2024_11_19
sketch_2024_11_18
sketch_2024_11_17
sketch_2024_11_16
sketch_2024_11_15
Ramalho @lr@ciberlandia.pt (e Feurzeig, , Solomon & Papert) tinham razão: andar e virar é mais fácil…
sketch_2024_11_14
sketch_2024_11_13
sketch_2024_11_12
sketch_2024_11_11
I love to play/create an #LSystem, check discussion at https://github.com/py5coding/py5generator/discussions/555
sketch_2024_11_10
sketch_2024_11_09
sketch_2024_11_08
sketch_2024_11_07
sketch_2024_11_06
sketch_2024_11_05
sketch_2024_11_04
more Slider tweaks
sketch_2024_11_03
I now can use the mouse wheel to control my naive sliders!
sketch_2024_11_02
sketch_2024_11_01
sketch_2024_10_31
Today I worked on this with a friend to whom I’m teaching Python classes: 336 configurations made from 4 truchet modules (diagonaly divided squares with black and white sides) plus black and white squares. Removing rotations!
sketch_2024_10_30
sketch_2024_10_29
1200 polykings of order 1, 2, 3, 4, 5 and 6 (https://en.wikipedia.org/wiki/Pseudo-polyomino)
sketch_2024_10_28
sketch_2024_10_27
704 one-sided octominoes, using code inspired by a great talk by Hamish Campbell https://pyvideo.org/kiwi-pycon-2013/polyominoes-an-exploration-in-problem-solving-w.html
sketch_2024_10_26
sketch_2024_10_25
Inspired by this post from Armchair Epistemologist: https://hostux.social/@rcriii/112406728834440508
sketch_2024_10_24
sketch_2024_10_23
sketch_2024_10_22
sketch_2024_10_21
sketch_2024_10_20
sketch_2024_10_19
sketch_2024_10_18
sketch_2024_10_17
sketch_2024_10_16
sketch_2024_10_15
2811 ways of coloring a grid of 3 x 3 squares removing rotations…
sketch_2024_10_14
31 ways of coloring a grid of 2 x 2 squares removing rotations? Is this correct?
sketch_2024_10_13
WIP, this is still including and excluding some rotated configs with same geometry and different painting :( I’d be happy if it included all or excluded all the painting variations. Working on it.
sketch_2024_10_12
1434 configurations of ways of dividing a square (using a grid of 9 subsquares) The colors now show the minimum number of colors you need to color the regions,
widhout adjacent areas having the same color.
sketch_2024_10_11
2810 ways of partitioning a square using 5 x 2 subsquares, shown on a 38 x 74 grid of 2812 positions.
sketch_2024_10_10
1200 ways to divide a square using only the squares and smaller diagonals from a grid of 3x3 points (edges, mid-side and center of the square).
sketch_2024_10_09
456 ways to subdivide a 4 x 2 rectangle (merging 1 x 1 sub-regions)
sketch_2024_10_08
1434 ways of subdividing a square merging areas from a grid of 9 subsquares.
sketch_2024_10_07
512 configurations, ways of “enclosing” elements from a 3 x 3 grid
sketch_2024_10_06
There are 1295 ways of making enclosed areas using the segments and shorter diagonals of a 3 x 3 grid of points. 1296 if you consider the “empty” case of not enlosing any area.
sketch_2024_10_05
sketch_2024_10_04
sketch_2024_10_03
animation shows some examples of black and white triangles in a 4 x 4 point grid being merged (with same color triangles)
sketch_2024_10_02
broken but fun! #debugaesthetics
sketch_2024_10_01
WIP
sketch_2024_09_30
WIP
sketch_2024_09_29
sketch_2024_09_28
sketch_2024_09_27
sketch_2024_09_26
sketch_2024_09_25
sketch_2024_09_24
sketch_2024_09_23
sketch_2024_09_22
sketch_2024_09_21
sketch_2024_09_20
sketch_2024_09_19
sketch_2024_09_18
sketch_2024_09_17
sketch_2024_09_16
sketch_2024_09_15
sketch_2024_09_14
sketch_2024_09_13
sketch_2024_09_12
based on Jim Bumgardner’s sketch https://openprocessing.org/sketch/41142 from 2011.
sketch_2024_09_11
sketch_2024_09_10
Trying to replicate the “Tecniquim tiling” idea from John
sketch_2024_09_09
Inspired by Rougier’s first example in From Python to Numpy
sketch_2024_09_08
sketch_2024_09_08 [faded-parsons-visual]
The daily sketch was a “Parsons Problems” puzzle, the code on the link produces both the “chequered image” and the YAML for the the puzzle page
sketch_2024_09_07
sketch_2024_09_06
sketch_2024_09_05
sketch_2024_09_04
sketch_2024_09_03
sketch_2024_09_02
sketch_2024_09_01
#shapely
sketch_2024_08_31
sketch_2024_08_30
#shapely
sketch_2024_08_29
#shapely experiment… not brilliant but fun.
sketch_2024_08_28
sketch_2024_08_27
sketch_2024_08_26
sketch_2024_08_25
Playing with Ziaplot
sketch_2024_08_24
sketch_2024_08_23
sketch_2024_08_22
sketch_2024_08_21
sketch_2024_08_20
sketch_2024_08_19
sketch_2024_08_18
sketch_2024_08_17
sketch_2024_08_16
sketch_2024_08_15
sketch_2024_08_14
#networkx #3d #graph
G = nx.balanced_tree(4, 5)
pos = nx.spring_layout(G, dim=3, seed=1)', margin, margin)
sketch_2024_08_13
#networkx #graphviz #pygraphviz
sketch_2024_08_12
I think this is my first attempt at combining py5 and networkx :) #networkx #graphviz
sketch_2024_08_11
sketch_2024_08_10
sketch_2024_08_09
sketch_2024_08_08
sketch_2024_08_07
sketch_2024_08_06
sketch_2024_08_05
sketch_2024_08_04
sketch_2024_08_03
#IslamicPatterns
sketch_2024_08_02
More #IslamicPatterns studies.
sketch_2024_08_01
#QuadraticBezier #CubicBezier #CatmullRom
sketch_2024_07_31
Working on the curves demo sketch. Now you can switch modes and it can print the code generated. You can still drag the handles but I didn’t record it. #CubicBezier #QuadraticBezier
sketch_2024_07_30
#QuadraticBezier curves have a single control point. I find them easier to work with, sometimes…
sketch_2024_07_29
Updating my #BezierCurve interactive example.
sketch_2024_07_28
#shapely buffers, subtractions and instersections
sketch_2024_07_27
More #IslamicPattterns studies.
sketch_2024_07_26
sketch_2024_07_25
Studying #IslamicPatterns with hexagons.
sketch_2024_07_24
Inspired by @JeanBaptisteEt4’s work: https://mathstodon.xyz/@JeanBaptisteEt4/112837724665792089 #tiling #tesselation
sketch_2024_07_23
Reproducing a pixel manipulation example from Guzdial & Ericson’s Media Computation with Python!
sketch_2024_07_22
sketch_2024_07_21
sketch_2024_07_20
Not at all what I wanted :( playing with layers (geodataframes) from#prettymaps, but getting confused because I’m terrible with #matplotlib data (c) OpenStreetMap contributors ttps://www.openstreetmap.org/copyright
sketch_2024_07_19
work in progress … #osmnx data (c) OpenStreetMap contributors https://www.openstreetmap.org/copyright
sketch_2024_07_18
sketch_2024_07_17
sketch_2024_07_16
sketch_2024_07_15
sketch_2024_07_14
Work in progress… tesselation studies
sketch_2024_07_13
sketch_2024_07_13 [cpy5]
sketch_2024_07_12
sketch_2024_07_11
130 rectangles on a 5 x 5 grid of points.
sketch_2024_07_10
100 rectangles on a 5 x 5 grid of points
sketch_2024_07_09
sketch_2024_07_08
A first baby step towards Tetris with py5. Python’s dicts are so cool!
sketch_2024_07_07
sketch_2024_07_06
sketch_2024_07_05
sketch_2024_07_04
Em colaboração com Nariz Coletivo d’aprés Warhol…
sketch_2024_07_03
sketch_2024_07_02
sketch_2024_07_01
sketch_2024_06_30
sketch_2024_06_29
sketch_2024_06_28
sketch_2024_06_27
sketch_2024_06_26
sketch_2024_06_25
sketch_2024_06_24
sketch_2024_06_23
sketch_2024_06_22
Kind of works… based on Stand-up Maths video abou rotation without rotation (3 skews) https://www.youtube.com/watch?v=1LCEiVDHJmc
sketch_2024_06_21
sketch_2024_06_20
sketch_2024_06_19
sketch_2024_06_18
sketch_2024_06_17
Back to drawing text with colors for highlights. I have an earlier sketch that uses Python’s tokenize to draw source with some basic syntax coloring https://github.com/villares/sketch-a-day/tree/main/2023/sketch_2023_08_14, this one is simpler (preparing for another idea).
sketch_2024_06_16
another nasty SVG + pymunk failure
sketch_2024_06_15
Not very good WIP :(
sketch_2024_06_14
sketch_2024_06_14 [blender geometry nodes]
sketch_2024_06_13
sketch_2024_06_12
sketch_2024_06_11
sketch_2024_06_10
sketch_2024_06_09
sketch_2024_06_08
sketch_2024_06_07
sketch_2024_06_06
sketch_2024_06_05
sketch_2024_06_04
sketch_2024_06_03
sketch_2024_06_02
sketch_2024_06_01
sketch_2024_05_31
sketch_2024_05_30
sketch_2024_05_29
sketch_2024_05_28
sketch_2024_05_27
sketch_2024_05_26
I’m happy with this, I converted yesterday’s sketch to an OO strategy and I could solve my “parent angle alignment” wishes.
sketch_2024_05_25
sketch_2024_05_24
sketch_2024_05_23
sketch_2024_05_22
sketch_2024_05_21
sketch_2024_05_20
sketch_2024_05_19
sketch_2024_05_18
sketch_2024_05_17
the true May 17th’s sketch
sketch_2024_05_16
#PyConUS I made this during my tutorial :)
sketch_2024_05_15b
sketch_2024_05_15
sketch_2024_05_14
sketch_2024_05_13
sketch_2024_05_12
sketch_2024_05_11
sketch_2024_05_10
sketch_2024_05_09
sketch_2024_05_08
sketch_2024_05_07
sketch_2024_05_06
40 different ways to divide a square using points from a 3x3 grid.
sketch_2024_05_05
WIP on “partitioning”
sketch_2024_05_04
WIP
sketch_2024_05_03
sketch_2024_05_02
Revisitando uma ideia de sketch de 2018 inspirado em um sketch de manoloide (Manuel Gamboa Naom)
sketch_2024_05_01
sketch_2024_04_30
Formas básicas, preenchimento, traço e interação usando draw(). Esse sketch do dia é bem bobo, mas o codigo anotado vira um quebra-cabeças de Parsons em https://abav.lugaralgum.com/faded-parsons-visual
sketch_2024_04_29
#pymunk
sketch_2024_04_28
#pymunk
sketch_2024_04_27
sketch_2024_04_26
#pymunk experiments… trying to extend pymunk.Body with a DrawableBody class (instead of monkeypatching pymunk.shape.Poly & etc.)
sketch_2024_04_25
#Numpy
sketch_2024_04_24
#pymunk
sketch_2024_04_23
sketch_2024_04_22
sketch_2024_04_21
sketch_2024_04_20
#DebugAesthetics
sketch_2024_04_19
sketch_2024_04_18
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
All the 125 possible not self-intersecting polygons form a 3 x 3 grid of points (without rotations and translations).
sketch_2024_04_16
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
still WIP, my translation/rotation elimination strategy didn’t work (so turned it off on this output)
sketch_2024_04_14
WIP … hard to debug
sketch_2024_04_13
sketch_2024_04_12
sketch_2024_04_11
sketch_2024_04_10
sketch_2024_04_09
sketch_2024_04_08
Fiddling with https://github.com/Botffy/polyskel/tree/master
sketch_2024_04_07
sketch_2024_04_06
#scikitgeometry #skgeom
sketch_2024_04_05
sketch_2024_04_04
#OpenSimplexNoise #Numpy
sketch_2024_04_03
sketch_2024_04_02
sketch_2024_04_01
sketch_2024_03_31
sketch_2024_03_30
sketch_2024_03_29
sketch_2024_03_28
sketch_2024_03_27
sketch_2024_03_26
sketch_2024_03_25
sketch_2024_03_24
sketch_2024_03_23
sketch_2024_03_22
sketch_2024_03_21
sketch_2024_03_20
sketch_2024_03_19
sketch_2024_03_18
sketch_2024_03_17
sketch_2024_03_16
sketch_2024_03_15
sketch_2024_03_14
sketch_2024_03_13
sketch_2024_03_12
sketch_2024_03_11
sketch_2024_03_10
sketch_2024_03_09
the red text encodes the neighbours state
sketch_2024_03_08
WIP
sketch_2024_03_07
sketch_2024_03_06
sketch_2024_03_05
sketch_2024_03_04
sketch_2024_03_03
sketch_2024_03_02
sketch_2024_03_01
sketch_2024_02_29
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_27
sketch_2024_02_26
sketch_2024_02_25
Now using #shapely as suggested by @py5coding@fosstodon.org :)
sketch_2024_02_24
circle and line segment collision, based on: http://www.jeffreythompson.org/collision-detection/line-circle.php point_circle
sketch_2024_02_23
rect collisions
sketch_2024_02_22
sketch_2024_02_21
sketch_2024_02_20
sketch_2024_02_19
sketch_2024_02_18
sketch_2024_02_17
sketch_2024_02_16
sketch_2024_02_15
sketch_2024_02_14
sketch_2024_02_13
sketch_2024_02_12
sketch_2024_02_11
sketch_2024_02_10
sketch_2024_02_09
sketch_2024_02_08
Still capture of anolher animated gesture experiment
sketch_2024_02_07
Another animated mouse gesture experiment
sketch_2024_02_06
Another animated mouse gesture experiment
sketch_2024_02_05
Another animated mouse gesture experiment
sketch_2024_02_04
Another animated mouse gesture experiment
sketch_2024_02_03
sketch_2024_02_02
sketch_2024_02_01
sketch_2024_01_31
Sorru, no music.
sketch_2024_01_30
#genuary30 just porting ad using a Processing shader example
sketch_2024_01_29
#genuary29 using a 3D sdf based mesh library
sketch_2024_01_28
sketch_2024_01_27
#genuary27 the gif degraded the color gradients :(
sketch_2024_01_26
#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
#genuary25
sketch_2024_01_24
not engough energy for #genuary24 :(
sketch_2024_01_23
#genuary23
sketch_2024_01_22
#genuary22
sketch_2024_01_21
#genuary21 #LibreTranslatePy #LibreTranslate
sketch_2024_01_20
#genuary20 with shapely
sketch_2024_01_19
#genuary19 Variation of an early flocking experiment
sketch_2024_01_18
#genuary18 Bauhaus (inspired by Albers)
sketch_2024_01_17
Badly done #genuray17
sketch_2024_01_16
#genuary16
sketch_2024_01_15
#genuary15 Physics (using pymunk)
sketch_2024_01_14
#genuary14
sketch_2024_01_13
#genuary13
sketch_2024_01_12
#genuary12 “lava lamp” OpenSimplexNoise
sketch_2024_01_11
#genuary11 inspired by Anni Albers
sketch_2024_01_10
#genuary10 ASCII
sketch_2024_01_09
#genuary9
sketch_2024_01_08
#genuary8 Double-pendulum simulation based on pygame code by Bryan Brickman
sketch_2024_01_07
#genuary7 progress bar
sketch_2024_01_06
#genuary6 screensaver (based on earlier Processing sketches for “tweetprocessing”)
sketch_2024_01_05
#genuary5 d’aprés Vera Molnar “interruptions” (https://collections.vam.ac.uk/item/O1193775/interruptions-drawing-vera-molnar/)
sketch_2024_01_04
#genuary4 pixels
sketch_2024_01_03
#genuary3 droste
sketch_2024_01_02
#genuary2 no palette
sketch_2024_01_01
#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.