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.
To support my artistic work, research and open educational resources I freely publish on-line, donate using Wise, Liberapay, PayPal, or to the Brazilan PIX key 46c37783-5edb-4f1c-b3a8-1309db11488c.
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.
2026 | 2025 | 2024 | 2023 | 2022 | 2021 | 2020 | 2019 | 2018
sketch_2026_03_18

322 combinations of 3 segments from 3x3 grid of points, avoiding rotations.
sketch_2026_03_17

1300 combinations of 3 connected line segments from a 3x3 grid of points.
sketch_2026_03_16

228 pairs of segments from a 3x3 grid that share a point and don’t align or overlap.
sketch_2026_03_15

378 two-segment combinations from a 3x3 grid. Ordered and colored by segment length.
sketch_2026_03_14

1260 combinations of 3 line segments on a 3x3 grid of points. The segments must not have endings in common.
sketch_2026_03_13

Same 945 combinations of 4 lines from a 3x3 grid of points. Lines are now colored according to their angle.
sketch_2026_03_12


945 combinations of 4 lines on a 3x3 grid: the lines have no shared vertices
sketch_2026_03_11

100 of the 1890 combinations of 4 connected lines on a 3x3 grid… WIP.
sketch_2026_03_10

Inspired by https://internet-janitor.itch.io/wigglypaint
sketch_2026_03_09

Inpired by Wiggly Paint (https://internet-janitor.itch.io/wigglypaint)
- See also https://beyondloom.com/blog/onwigglypaint.html
sketch_2026_03_08

516 triangles on a 4x4 grid of points, avoiding duplicates with whole grid rotation, but not duplicates whit translations (& possible rotations) of the triangles inside the grid.
sketch_2026_03_07

sketch_2026_03_06

Based on the code written yesterday at the “drawing with code open atelier” at Sesc. Using images from Wikimedia Commons! :)
sketch_2026_03_05

Another #CellularAutomata experiment
sketch_2026_03_04

#CellularAutomata with a 16 cell neighborhood: (-1, -1), ( 0, -1), (1, -1), (-1, 0), ( 1, 0), (-1, 1), (0, 1), ( 1, 1), (-2, -2), ( 0, -4), (2, -2), (-4, 0), ( 4, 0), (-2, 2), (0, 4), ( 2, 2)
sketch_2026_03_03

Changing Conway’s neighborhood rules is a quick way to explore closely related #CellularAutomata … also circles!
sketch_2026_03_02

Calculation of #Conway’s #GameOfLife was already very fast with #Numpy, but drawing was slow (squares and text…) now this is so fast… with vectorized py5.points() getting arrays of points to draw as squares with py5.stroke_cap(py5.PROJECT). Check it out!
sketch_2026_03_01

sketch_2026_02_28

Preparing a bit for teaching my #CellularAutomata class a few times this semester.#WIP #ConwaysGameOfLife with #numpy
sketch_2026_02_27

Back to some #numpy + #OpenSimplexNoise studies…
sketch_2026_02_26

979 ways of dividing a square with a 3x3 grid of points (980 if you count not dividing the square at all as one!)
sketch_2026_02_25

979 ways of dividing a 3x3 grid of points into polygons. Did I miss any? I hope not. The polys are colored according to the number of vertices.
sketch_2026_02_24

WIP / debug view: #shapely union is generating some bad polygons maybe subdivided edges or badly behaving vertices?) I have to figure out how to fix them.
sketch_2026_02_23

197 ways of dividing a grid of 3x3 points into triangles. Removing rotations.
I have done this before, but it has been fun doing it again from scratch I like the strategy this time much better.
sketch_2026_02_22

270 pairs of non-overlapping triangles from a 3x3 grid of points. Removing rotations.
sketch_2026_02_21

WIP: A first attempt at rendering a dictionary that shows on each row, at the start on the left, one of the 76 triangles that can be drawn on a 3x3 grid, then all the other triangles that do not overlapp with it. Tweaked the next day…
sketch_2026_02_20

The 23 ways of dividing a 3x3 grid into 2, 3 and 4 triangles, excluding rotations.
sketch_2026_02_19

244 ways of dividing a 3 x 3 grid of points into 6 triangles.
sketch_2026_02_18

471 of 1703 triangulations of the 3 x 3 grid
sketch_2026_02_17

sketch_2026_02_16

sketch_2026_02_15

sketch_2026_02_14

sketch_2026_02_13

sketch_2026_02_12

This sketch was made during an activity at Sesc today :)
sketch_2026_02_11

sketch_2026_02_10

sketch_2026_02_09

sketch_2026_02_08

sketch_2026_02_07

sketch_2026_02_06

sketch_2026_02_05

sketch_2026_02_04

sketch_2026_02_03

sketch_2026_02_02

WIP…
sketch_2026_02_01

sketch_2026_01_31

I’m restarting my shape subdivision ideas, this time with simpler structures (maybe?) instead of an object oriented “Shape” class.
sketch_2026_01_30

sketch_2026_01_29

sketch_2026_01_28

A crude attempt at a noisy brush #PerlinNoise
sketch_2026_01_27

sketch_2026_01_26

sketch_2026_01_25

sketch_2026_01_24

py5.blend_mode(py5.MULTIPLY)
sketch_2026_01_23

sketch_2026_01_22

I enjoyed this one, randomizing the widths of rows and columns of a grid then applying a #TSP strategy. #genuary #genuary22 #genuary2026
sketch_2026_01_21

Ada meets Waldemar Cordeiro and Giorgio Moscati (Learn more about them at https://www.waldemarcordeiro.com/ & https://ekac.org/moscati.html)
sketch_2026_01_20

sketch_2026_01_19

sketch_2026_01_18

10000 steps of walker that turns 30° one way if the step is prime and 30° the other way. #genuary #genuary18 #genuary2026
sketch_2026_01_17

I’m not sure it would count as #genuary17 but I wanted to do this inspired by something I saw from @ranoya@vis.social
#genuary #genuary2026
sketch_2026_01_16

sketch_2026_01_15

sketch_2026_01_14

sketch_2026_01_13

sketch_2026_01_12

#genuary #genuary12 #genuary2026 #3D boxes only
sketch_2026_01_11

sketch_2026_01_10

#genuary #genuary10 #genurary2026
sketch_2026_01_09

Tweaking an old idea of coloring Wolfram’s Automata #genuary #genuary9 #genuary2026
sketch_2026_01_08

#genuary #genuary8 #genuary2026 Tweaking a sketch from 2022…
sketch_2026_01_07

The cool binary XOR based pattern I learned fron Ntsutae… now with #numpy #genuary #genuary7 #genuary2026
sketch_2026_01_06

#genuary6 #genuary #genurary2026
sketch_2026_01_05

In 2021 I was working on some older code for a silly glyph editor, I couldn’t resurrect the editor (yet) but I could still read some pickled glyphs data! I hope I get back to these studies again. Note: be careful about loading pickled data from untrusted sources, there is a nasty risk of “arbitrary code execution”.
sketch_2026_01_04

#genuary4 #genuary #genuary2026
sketch_2026_01_03

Once I made a nice Fibonacci based animation, but this time I couldn’t figure something I liked :( #genuary #genuary 3 #genuary2026
sketch_2026_01_02

#genuary2 #genuary #genuary2026
sketch_2026_01_01

#genuary #genuary1 #genuary2026
2026 | 2025 | 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.