# [sketch-a-day](https://abav.lugaralgum.com/sketch-a-day) ## coding a visual idea a day Welcome! My name is [Alexandre Villares](https://abav.lugaralgum.com) 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](https://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](https://abav.lugaralgum.com/selected-work/index-EN.html), 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](https://wise.com/pay/me/alexandrev562), [Liberapay](https://liberapay.com/villares), [PayPal](https://www.paypal.com/donate/?hosted_button_id=5B4MZ78C9J724), or to the Brazilan PIX key `46c37783-5edb-4f1c-b3a8-1309db11488c`. You can follow me on Mastodon [@villares@ciberlandia.pt](https://ciberlandia.pt/@villares) or at @villares@pynews.com.br, where I post most of my daily sketches. Please do not hesitate to [contact me](http://contato.lugaralgum.com) regarding licenses to use my work, teaching opportunities, consulting or other projects. --- [2026](README.md) \| 2025 \| [2024](2024.md) \| [2023](2023.md) \| [2022](2022.md) \| [2021](2021.md) \| [2020](2020.md) \| [2019](2019.md) \| [2018](2018.md) --- ### sketch_2025_12_31  [sketch_2025_12_31](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_31) [[py5](https://py5coding.org/)] Happy new year! --- ### sketch_2025_12_30  [sketch_2025_12_30](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_30) [[py5](https://py5coding.org/)] Playing with the #numpy @ operator and a rotation matrix :) --- ### sketch_2025_12_29  [sketch_2025_12_29](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_29) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_28  [sketch_2025_12_28](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_28) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_27  [sketch_2025_12_27](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_27) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_26  [sketch_2025_12_26](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_26) [[py5](https://py5coding.org/)] WIP... --- ### sketch_2025_12_25  [sketch_2025_12_25](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_25) [[py5](https://py5coding.org/)] Merry Christmas! --- ### sketch_2025_12_24  [sketch_2025_12_24](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_24) [[py5](https://py5coding.org/)] Simpler neighbors (the 8 closest on a square grid), and the `ortho()` projection turning off perspective. --- ### sketch_2025_12_23  [sketch_2025_12_23](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_23) [[py5](https://py5coding.org/)] This is an easy evolution, with many starting points. The orbiting interaction is quite fun, but hard to capture on a video/gif. --- ### sketch_2025_12_22  [sketch_2025_12_22](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_22) [[py5](https://py5coding.org/)] I still have to work out what I want to do with the overlapping path edges... While I don't, moving a bit on Z gives a cool result and avoids the flickering superposition of edges. --- ### sketch_2025_12_21  [sketch_2025_12_21](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_21) [[py5](https://py5coding.org/)] Experimenting with multiple starting points (and the dark background). Maybe tomorrow I'll try to animate these a bit... --- ### sketch_2025_12_20  [sketch_2025_12_20](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_20) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_19  [sketch_2025_12_19](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_19) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_18  [sketch_2025_12_18](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_18) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_17  [sketch_2025_12_17](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_17) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_16  [sketch_2025_12_16](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_16) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_15  [sketch_2025_12_15](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_15) [[py5](https://py5coding.org/)] I'm back to this simple "graph" idea from 2021, re-doing it from scratch... it provides endless fun/explorations. In 2022 I think I did so much stuff with this... --- ### sketch_2025_12_14  [sketch_2025_12_14](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_14) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_13  [sketch_2025_12_13](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_13) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_12  [sketch_2025_12_12](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_12) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_11  [sketch_2025_12_11](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_11) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_10  [sketch_2025_12_10](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_10) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_09  [sketch_2025_12_09](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_09) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_08  [sketch_2025_12_08](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_08) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_07  [sketch_2025_12_07](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_07) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_06  [sketch_2025_12_06](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_06) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_05  [sketch_2025_12_05](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_05) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_04  [sketch_2025_12_04](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_04) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_03  [sketch_2025_12_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_03) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_02  [sketch_2025_12_02](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_02) [[py5](https://py5coding.org/)] --- ### sketch_2025_12_01  [sketch_2025_12_01](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_12_01) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_30  [sketch_2025_11_30](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_30) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_29  [sketch_2025_11_29](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_29) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_28  [sketch_2025_11_28](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_28) [[py5](https://py5coding.org/)] exploring and idea with #particles that started in class today... --- ### sketch_2025_11_27  [sketch_2025_11_27](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_27) [[py5](https://py5coding.org/)] #OpenSimplexNoise experiments. --- ### sketch_2025_11_26  [sketch_2025_11_26](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_26) [[py5](https://py5coding.org/)] A #PerlinNoise interactive example made during class today. Check an [animation from recording the screen](https://raw.githubusercontent.com/villares/sketch-a-day/main/2025/sketch_2025_11_26/sketch_2025_11_26.mp4) --- ### sketch_2025_11_25  [sketch_2025_11_25](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_25) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_24  [sketch_2025_11_24](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_24) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_23  [sketch_2025_11_23](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_23) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_22  [sketch_2025_11_22](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_22) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_21  [sketch_2025_11_21](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_21) [[py5](https://py5coding.org/)] #LSystem --- ### sketch_2025_11_20  [sketch_2025_11_20](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_20) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_19  [sketch_2025_11_19](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_19) [[py5](https://py5coding.org/)] A naïve spiral function made during class! --- ### sketch_2025_11_18  [sketch_2025_11_18](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_18) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_17  [sketch_2025_11_17](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_17) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_16  [sketch_2025_11_16](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_16) [[py5](https://py5coding.org/)] Checking "walk" and "all" networks on #osmnx using data from #OpenStreetMap for #SãoPaulo. --- ### sketch_2025_11_15  [sketch_2025_11_15](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_15) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_14  [sketch_2025_11_14](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_14) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_13  [sketch_2025_11_13](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_13) [[py5](https://py5coding.org/)] Made today during class at Sesc with data from #OpenStreetMap using #osmnx --- ### sketch_2025_11_12  [sketch_2025_11_12](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_12) [[py5](https://py5coding.org/)] We made this today in class, an example with elements inspired by #VeraMolnar --- ### sketch_2025_11_11  [sketch_2025_11_11](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_11) [[py5](https://py5coding.org/)] I'm back trying to make #ParticleLife run faster, this time with #scipy #cKDTree. --- ### sketch_2025_11_10  [sketch_2025_11_10](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_10) [[py5](https://py5coding.org/)] Converting to py5 some Processing Java code by @Introscopia@coletivos.org for drawing a "bezier egg". Thank you John! --- ### sketch_2025_11_09  [sketch_2025_11_09](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_09) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_08  [sketch_2025_11_08](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_08) [[py5](https://py5coding.org/)] #OpenStreetMap #osmnx #OSM #geopandas --- ### sketch_2025_11_07  [sketch_2025_11_07](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_07) [[py5](https://py5coding.org/)] #SãoPaulo --- ### sketch_2025_11_06  [sketch_2025_11_06](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_06) [[py5](https://py5coding.org/)] #São Paulo, "walk networks", dados do #OpenStreetMap --- ### sketch_2025_11_05  [sketch_2025_11_05](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_05) [[py5](https://py5coding.org/)] --- ### sketch_2025_11_04  [sketch_2025_11_04](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_04) [[py5](https://py5coding.org/)] #OpenStreetMap --- ### sketch_2025_11_03  [sketch_2025_11_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_03) [[py5](https://py5coding.org/)] Back to my map studies... Poly data (c) #OpenStreetMap contributors \nhttps://www.openstreetmap.org/copyright --- ### sketch_2025_11_02  [sketch_2025_11_02](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_02) [[py5](https://py5coding.org/)] failed #mediapipe experiment... --- ### sketch_2025_11_01  [sketch_2025_11_01](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_11_01) [[py5](https://py5coding.org/)] Feito a maior parte duarante a apresentação no Compoética 2025 --- ### sketch_2025_10_31  [sketch_2025_10_31](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_31) [[py5](https://py5coding.org/)] #LSystem & #shapely --- ### sketch_2025_10_30  [sketch_2025_10_30](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_30) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_29  [sketch_2025_10_29](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_29) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_28  [sketch_2025_10_28](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_28) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_27  [sketch_2025_10_27](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_27) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_26  [sketch_2025_10_26](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_26) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_25  [sketch_2025_10_25](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_25) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_24  [sketch_2025_10_24](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_24) [[py5](https://py5coding.org/)] WIP --- ### sketch_2025_10_23  [sketch_2025_10_23](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_23) [[py5](https://py5coding.org/)] Exemplo feito durante o tutorial apresentado na #PythoBrasil2025 sobre #shapely e #trimesh com o mantenedor no py5, Jim! --- ### sketch_2025_10_22  [sketch_2025_10_22](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_22) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_21  [sketch_2025_10_21](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_21) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_20  [sketch_2025_10_20](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_20) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_19  [sketch_2025_10_19](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_19) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_18  [sketch_2025_10_18](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_18) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_17  [sketch_2025_10_17](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_17) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_16  [sketch_2025_10_16](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_16) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_15  [sketch_2025_10_15](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_15) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_14  [sketch_2025_10_14](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_14) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_13  [sketch_2025_10_13](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_13) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_12  [sketch_2025_10_12](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_12) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_11  [sketch_2025_10_11](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_11) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_10  [sketch_2025_10_10](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_10) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_09  [sketch_2025_10_09](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_09) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_08  [sketch_2025_10_08](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_08) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_07  [sketch_2025_10_07](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_07) [[py5](https://py5coding.org/)] This was fun! Mutating L-System rules by randomly permutating symbols from "X" -> "F+[[X]-X]-F[-FX]+X". Note that invalid rules break things, like when you have ] before [... More about L-Systems: https://github.com/villares/python-in-a-visual-context/blob/main/Processing-Python-py5/LSystem.md See the rules in the the PNG names at the repo folder. --- ### sketch_2025_10_06  [sketch_2025_10_06](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_06) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_05  [sketch_2025_10_05](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_05) [[py5](https://py5coding.org/)] back to some nice polygons --- ### sketch_2025_10_04  [sketch_2025_10_04](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_04) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_03  [sketch_2025_10_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_03) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_02  [sketch_2025_10_02](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_02) [[py5](https://py5coding.org/)] --- ### sketch_2025_10_01  [sketch_2025_10_01](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_10_01) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_30  [sketch_2025_09_30](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_30) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_29  [sketch_2025_09_29](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_29) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_28  [sketch_2025_09_28](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_28) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_27  [sketch_2025_09_27](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_27) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_26  [sketch_2025_09_26](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_26) [[py5](https://py5coding.org/)] #shapely #viridis --- ### sketch_2025_09_25  [sketch_2025_09_25](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_25) [[py5](https://py5coding.org/)] #shapely #viridis --- ### sketch_2025_09_24  [sketch_2025_09_24](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_24) [[py5](https://py5coding.org/)] #shapely --- ### sketch_2025_09_23  [sketch_2025_09_23](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_23) [[py5](https://py5coding.org/)] WIP --- ### sketch_2025_09_22  [sketch_2025_09_22](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_22) [[py5](https://py5coding.org/)] #viridis --- ### sketch_2025_09_21  [sketch_2025_09_21](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_21) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_20  [sketch_2025_09_20](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_20) [[py5](https://py5coding.org/)] WIP --- ### sketch_2025_09_19  [sketch_2025_09_19](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_19) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_18  [sketch_2025_09_18](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_18) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_17  [sketch_2025_09_17](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_17) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_16  [sketch_2025_09_16](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_16) [[py5](https://py5coding.org/)] the cyclic #twilight #matplotlib #colormap https://matplotlib.org/stable/users/explain/colors/colormaps.html --- ### sketch_2025_09_15  [sketch_2025_09_15](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_15) [[py5](https://py5coding.org/)] more #viridis --- ### sketch_2025_09_14  [sketch_2025_09_14](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_14) [[py5](https://py5coding.org/)] I like the public domain AIGA pictogram for departures :) --- ### sketch_2025_09_13  [sketch_2025_09_13](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_13) [[py5](https://py5coding.org/)] #veridis --- ### sketch_2025_09_12  [sketch_2025_09_12](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_12) [[py5](https://py5coding.org/)] Using py5 #matplotlib #colormap integration: #viridis (https://www.youtube.com/watch?v=xAoljeRJ3lU) --- ### sketch_2025_09_11  [sketch_2025_09_11](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_11) [[py5](https://py5coding.org/)] #numpy #shapley #trimesh #stenci --- ### sketch_2025_09_10  [sketch_2025_09_10](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_10) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_09  [sketch_2025_09_09](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_09) [[py5](https://py5coding.org/)] WIP --- ### sketch_2025_09_08  [sketch_2025_09_08](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_08) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_07  [sketch_2025_09_07](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_07) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_06  [sketch_2025_09_06](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_06) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_05  [sketch_2025_09_05](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_05) [[py5](https://py5coding.org/)] 51 unique combinations of 3 triangles from a 3 x 3 grid, avoiding rotations. --- ### sketch_2025_09_04  [sketch_2025_09_04](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_04) [[py5](https://py5coding.org/)] All the 197 ways of dividing a 3 x 3 grid with triangles, avoiding rotated configurations. --- ### sketch_2025_09_03  WIP (broken rotation elimination implementation)  Fixed the next day! [sketch_2025_09_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_03) [[py5](https://py5coding.org/)] --- ### sketch_2025_09_02  [sketch_2025_09_02](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_02) [[py5](https://py5coding.org/)] Probably not very efficient, but a lot of fun! It took about 30min to calculate all the 23903 nonoverlapping combinations of triangles on the 3x3, which then I filtered to get the 747 combinations that fill the square. #shapely --- ### sketch_2025_09_01  [sketch_2025_09_01](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_09_01) [[py5](https://py5coding.org/)] All 76 possible triangles from connecting points of a 3x3 grid. --- ### sketch_2025_08_31  [sketch_2025_08_31](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_31) [[py5](https://py5coding.org/)] 225 ways of dividing a a 3x3 grid of points with 3, 4 and 5 triangles... #shapely --- ### sketch_2025_08_30  [sketch_2025_08_30](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_30) [[py5](https://py5coding.org/)] 7713 combinations of 4 triangles on a 3x3 grid. #shapely --- ### sketch_2025_08_29  [sketch_2025_08_29](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_29) [[py5](https://py5coding.org/)] 4304 non-overlapping triangle triplets form points on a 3x3 grid. #shapely --- ### sketch_2025_08_28  [sketch_2025_08_28](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_28) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_27  [sketch_2025_08_27](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_27) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_26  [sketch_2025_08_26](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_26) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_25  [sketch_2025_08_25](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_25) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_24  [sketch_2025_08_24](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_24) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_23  [sketch_2025_08_23](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_23) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_22  [sketch_2025_08_22](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_22) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_21  [sketch_2025_08_21](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_21) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_20  [sketch_2025_08_20](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_20) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_19  [sketch_2025_08_19](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_19) [[py5](https://py5coding.org/)] WIP: study for modeling Daniel Seda's Modorituk modules. --- ### sketch_2025_08_18  [sketch_2025_08_18](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_18) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_17  [sketch_2025_08_17](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_17) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_16  [sketch_2025_08_16](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_16) [[py5](https://py5coding.org/)] WIP --- ### sketch_2025_08_15  [sketch_2025_08_15](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_15) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_14  [sketch_2025_08_14](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_14) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_13  [sketch_2025_08_13](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_13) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_12  [sketch_2025_08_12](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_12) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_11  [sketch_2025_08_11](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_11) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_10  [sketch_2025_08_10](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_10) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_09  [sketch_2025_08_09](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_09) [[py5](https://py5coding.org/)] Revisiting a sketch from 2021... fiddling a bit. Maybe tomorrow I'll advance a bit. --- ### sketch_2025_08_08  [sketch_2025_08_08](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_08) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_07  [sketch_2025_08_07](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_07) [[py5](https://py5coding.org/)] Playing with an old sketch idea (also present in the Processing Video library examples) ... Frame to glyph grid. I'm using py5, #OpenCV & #NumPy --- ### sketch_2025_08_06  [sketch_2025_08_06](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_06) [[py5](https://py5coding.org/)] --- ### sketch_2025_08_05  [sketch_2025_08_05](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_05) [[py5](https://py5coding.org/)] #NumPy #OpenSimplexNoise #Loop "Noise walkers" --- ### sketch_2025_08_04  [sketch_2025_08_04](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_04) [[py5](https://py5coding.org/)] WIP "Noise walkers" #OpenSimplexNoise --- ### sketch_2025_08_03  [sketch_2025_08_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_03) [[py5](https://py5coding.org/)] More #trimesh studies... got back some missing edges, but also got one unwanted edge betweeen two co-planar faces. --- ### sketch_2025_08_02  [sketch_2025_08_02](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_02) [[py5](https://py5coding.org/)] I found a problem with my nice #trimesh mesh drawing helper :((( Single triangle "faces" dont have the edges listed on `mesh.facets_boundary`. So I miss drawing their edges. --- ### sketch_2025_08_01  [sketch_2025_08_01](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_08_01) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_31  [sketch_2025_07_31](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_31) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_30  [sketch_2025_07_30](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_30) [[py5](https://py5coding.org/)] A quick #shapely & #py5 demo! --- ### sketch_2025_07_29  [sketch_2025_07_29](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_29) [[py5](https://py5coding.org/)] #DebugAesthetic I think it worked... --- ### sketch_2025_07_28  [sketch_2025_07_28](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_28) [[py5](https://py5coding.org/)] WIP, I think I found some trouble with colinear vertices! Also, I'm updating my https://abav.lugaralgum.com/arc_tangents_and_bezier_studies/ repo... --- ### sketch_2025_07_27  [sketch_2025_07_27](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_27) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_26  [sketch_2025_07_26](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_26) [[py5](https://py5coding.org/)] A #py5 multi-page #PDF export example (with a side dish of #shapely). --- ### sketch_2025_07_25  [sketch_2025_07_25](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_25) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_24  [sketch_2025_07_24](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_24) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_23  [sketch_2025_07_23](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_23) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_22  [sketch_2025_07_22](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_22) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_21  [sketch_2025_07_21](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_21) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_20  [sketch_2025_07_20](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_20) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_19  [sketch_2025_07_19](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_19) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_18  [sketch_2025_07_18](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_18) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_17  [sketch_2025_07_17](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_17) [[py5](https://py5coding.org/)] #truchet --- ### sketch_2025_07_16  [sketch_2025_07_16](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_16) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_15  [sketch_2025_07_15](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_15) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_14  [sketch_2025_07_14](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_14) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_13  [sketch_2025_07_13](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_13) [Folium] A small #Folium example. --- ### sketch_2025_07_12  [sketch_2025_07_12](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_12) [[py5](https://py5coding.org/)] #QueasyCam --- ### sketch_2025_07_11  [sketch_2025_07_11](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_11) [[ursina](https://www.ursinaengine.org/)] Eperimenting with #UrsinaEngine --- ### sketch_2025_07_10  [sketch_2025_07_10](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_10) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_09  [sketch_2025_07_09](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_09) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_08  [sketch_2025_07_08](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_08) [[py5](https://py5coding.org/)] #trimesh #OpenSimplexNoise --- ### sketch_2025_07_07  [sketch_2025_07_07](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_07) [[py5](https://py5coding.org/)] #trimesh --- ### sketch_2025_07_06  [sketch_2025_07_06](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_06) [[py5](https://py5coding.org/)] Finally I made an arbitrary #trimesh "slab" I've been unsuccessfully thinking about doing for a while... --- ### sketch_2025_07_05  [sketch_2025_07_05](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_05) [[py5](https://py5coding.org/)] I hate to calculate the index of vertices on an array for constructiong faces. So I ended up trying a dictionary with the indices... let's see if this helps with my trimesh studies. --- ### sketch_2025_07_04  [sketch_2025_07_04](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_04) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_03  [sketch_2025_07_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_03) [[py5](https://py5coding.org/)] --- ### sketch_2025_07_02  [sketch_2025_07_02](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_02) [[py5](https://py5coding.org/)] Revisiting a 2018 sketch I like a lot... I should work on this a bit. --- ### sketch_2025_07_01  [sketch_2025_07_01](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_07_01) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_30  [sketch_2025_06_30](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_30) [[py5](https://py5coding.org/)] #AlanTuring #TuringPride #Pride --- ### sketch_2025_06_29  [sketch_2025_06_29](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_29) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_28  [sketch_2025_06_28](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_28) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_27  [sketch_2025_06_27](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_27) [Blender Geometry Nodes] --- ### sketch_2025_06_26  [sketch_2025_06_26](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_26) [[py5](https://py5coding.org/)] Back to the #numpy based #flocking experiment based on Nicolas Rougier example in "From Pytnon to Numpy" --- ### sketch_2025_06_25  [sketch_2025_06_25](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_25) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_24  [sketch_2025_06_24](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_24) [[FreeCAD](https://freecadweb.org)] #FreeCAD example made during a class --- ### sketch_2025_06_23  [sketch_2025_06_23](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_23) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_22  [sketch_2025_06_22](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_22) [[py5](https://py5coding.org/)] Not very good WIP... I always struggle to make #trimesh 3D meshes from scratch with #numpy --- ### sketch_2025_06_21  [sketch_2025_06_21](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_21) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_20  [sketch_2025_06_20](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_20) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_19  [sketch_2025_06_19](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_19) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_18  [sketch_2025_06_18](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_18) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_17  [sketch_2025_06_17](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_17) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_16  [sketch_2025_06_16](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_16) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_15  [sketch_2025_06_15](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_15) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_14  [sketch_2025_06_14](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_14) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_13  [sketch_2025_06_13](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_13) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_12  [sketch_2025_06_12](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_12) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_11  [sketch_2025_06_11](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_11) [[py5](https://py5coding.org/)] #shapely #trimesh --- ### sketch_2025_06_10  [sketch_2025_06_10](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_10) [[py5](https://py5coding.org/)] A #trimesh example used in class yesterday! --- ### sketch_2025_06_09  [sketch_2025_06_09](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_09) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_08  [sketch_2025_06_08](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_08) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_07  [sketch_2025_06_07](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_07) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_06  [sketch_2025_06_06](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_06) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_05  [sketch_2025_06_05](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_05) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_04  [sketch_2025_06_04](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_04) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_03  [sketch_2025_06_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_03) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_02  [sketch_2025_06_02](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_02) [[py5](https://py5coding.org/)] --- ### sketch_2025_06_01  [sketch_2025_06_01](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_06_01) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_31  [sketch_2025_05_31](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_31) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_30  [sketch_2025_05_30](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_30) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_29  [sketch_2025_05_29](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_29) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_28  [sketch_2025_05_28](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_28) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_27  [sketch_2025_05_27](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_27) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_26  [sketch_2025_05_26](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_26) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_25  [sketch_2025_05_25](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_25) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_24  [sketch_2025_05_24](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_24) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_23  [sketch_2025_05_23](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_23) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_22  [sketch_2025_05_22](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_22) [[py5](https://py5coding.org/)] WIP --- ### sketch_2025_05_21  [sketch_2025_05_21](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_21) [[py5](https://py5coding.org/)] WIP: reviewing my geometry helpers. Hatch polygon seems... broken. --- ### sketch_2025_05_20  [sketch_2025_05_20](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_20) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_19  [sketch_2025_05_19](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_19) [[py5](https://py5coding.org/)] Ome more PeasyCam + mouse selection --- ### sketch_2025_05_18  [sketch_2025_05_18](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_18) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_17  [sketch_2025_05_17](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_17) [[py5](https://py5coding.org/)] Zoom, pan and *slick* 3D orbit mouse interaction with insane ease, basically for free, with the PeasyCam library. --- ### sketch_2025_05_16  [sketch_2025_05_16](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_16) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_15  [sketch_2025_05_15](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_15) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_14  [sketch_2025_05_14](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_14) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_13  [sketch_2025_05_13](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_13) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_12  [sketch_2025_05_12](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_12) [[py5](https://py5coding.org/)] One more "snub square tiling" #loop #animation :) --- ### sketch_2025_05_11  [sketch_2025_05_11](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_11) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_10  [sketch_2025_05_10](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_10) [[py5](https://py5coding.org/)] "snub square tiling" --- ### sketch_2025_05_09  [sketch_2025_05_09](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_09) [[py5](https://py5coding.org/)] Work in progress on the "snub square tiling" --- ### sketch_2025_05_08  [sketch_2025_05_08](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_08) [[py5](https://py5coding.org/)] Another take at animating "Cairo tiles" which I tried not long ago (actually in 2023...). --- ### sketch_2025_05_07  [sketch_2025_05_07](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_07) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_06  [sketch_2025_05_06](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_06) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_05  [sketch_2025_05_05](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_05) [[py5](https://py5coding.org/)] Data from #geobr --- ### sketch_2025_05_04  [sketch_2025_05_04](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_04) [[py5](https://py5coding.org/)] Still the Marius Watz inspitation... [check the animated version](https://raw.githubusercontent.com/villares/sketch-a-day/main/2025/sketch_2025_05_04/out.gif) --- ### sketch_2025_05_03  [sketch_2025_05_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_03) [[py5](https://py5coding.org/)] heavily inspired by Marius Watz's work I posted recently, from the Processing examples... --- ### sketch_2025_05_02  [sketch_2025_05_02](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_02) [[py5](https://py5coding.org/)] --- ### sketch_2025_05_01  [sketch_2025_05_01](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_05_01) [[py5](https://py5coding.org/)] I needed to make the bodies KINEMATIC... It was a long time since I tried this I had forgoten all about the these. --- ### sketch_2025_04_30  [sketch_2025_04_30](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_30) [[py5](https://py5coding.org/)] Broken! Maybe something in pymunk changed, I have to investigate! (I rotated the box bodies, the shapes are drawn rotated, but the geometry for the collisions seems not to be rotated...) --- ### sketch_2025_04_29  [sketch_2025_04_29](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_29) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_28  [sketch_2025_04_28](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_28) [[py5](https://py5coding.org/)] A small Pymunk example for class. No interactive segment-wall drawing for this one. And I can't use pickle for this sketch in imported mode :( (see previous day for both features and the triangulated polys!) --- ### sketch_2025_04_27  [sketch_2025_04_27](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_27) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_26  [sketch_2025_04_26](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_26) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_25  [sketch_2025_04_25](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_25) [[py5](https://py5coding.org/)] WIP --- ### sketch_2025_04_24  [sketch_2025_04_24](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_24) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_23  [sketch_2025_04_23](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_23) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_22  [sketch_2025_04_22](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_22) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_21  [sketch_2025_04_21](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_21) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_20  [sketch_2025_04_20](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_20) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_19  [sketch_2025_04_19](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_19) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_18  [sketch_2025_04_18](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_18) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_17  [sketch_2025_04_17](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_17) [[py5](https://py5coding.org/)] Yet another GOL... --- ### sketch_2025_04_16  [sketch_2025_04_16](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_16) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_15  [sketch_2025_04_15](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_15) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_14  [sketch_2025_04_14](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_14) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_13  [sketch_2025_04_13](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_13) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_12  [sketch_2025_04_12](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_12) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_11  [sketch_2025_04_11](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_11) [[leafmap](https://leafmap.org/)] --- ### sketch_2025_04_10  [sketch_2025_04_10](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_10) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_09  [sketch_2025_04_09](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_09) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_08  [sketch_2025_04_08](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_08) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_07  [sketch_2025_04_07](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_07) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_06  [sketch_2025_04_06](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_06) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_05  [sketch_2025_04_05](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_05) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_04  [sketch_2025_04_04](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_04) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_03  [sketch_2025_04_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_03) [[py5](https://py5coding.org/)] --- ### sketch_2025_04_02  [sketch_2025_04_02](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_02) [[py5](https://py5coding.org/)] #LSystem --- ### sketch_2025_04_01  [sketch_2025_04_01](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_04_01) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_31  [sketch_2025_03_31](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_31) [[py5](https://py5coding.org/)] Done during class. --- ### sketch_2025_03_30  [sketch_2025_03_30](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_30) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_29  [sketch_2025_03_29](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_29) [[py5](https://py5coding.org/)] Trying to adapt an awesome zoom strategy from my dear friend @Introscopia@coletivos.org --- ### sketch_2025_03_28  [sketch_2025_03_28](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_28) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_27  [sketch_2025_03_27](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_27) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_26  [sketch_2025_03_26](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_26) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_25  [sketch_2025_03_25](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_25) [[py5](https://py5coding.org/)] Astronaut Eileen Collins --- ### sketch_2025_03_24  [sketch_2025_03_24](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_24) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_23  [sketch_2025_03_23](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_23) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_22  [sketch_2025_03_22](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_22) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_21  [sketch_2025_03_21](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_21) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_20  [sketch_2025_03_20](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_20) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_19  [sketch_2025_03_19](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_19) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_18  [sketch_2025_03_18](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_18) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_17  [sketch_2025_03_17](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_17) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_16  [sketch_2025_03_16](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_16) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_15  [sketch_2025_03_15](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_15) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_14  [sketch_2025_03_14](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_14) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_13  [sketch_2025_03_13](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_13) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_12  [sketch_2025_03_12](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_12) [[py5](https://py5coding.org/)] Work in progress... #OpenStreetMap data as usual #osmnx --- ### sketch_2025_03_11  [sketch_2025_03_11](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_11) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_10  [sketch_2025_03_10](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_10) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_09  [sketch_2025_03_09](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_09) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_08  [sketch_2025_03_08](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_08) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_07  [sketch_2025_03_07](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_07) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_06  [sketch_2025_03_06](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_06) [[py5](https://py5coding.org/)] Collage from "Mercado Municipal (São Paulo)" by Wilfredo Rafael Rodriguez Hernandez (Wilfredor) https://commons.wikimedia.org/wiki/File:Mercado_Municipal_(S%C3%A3o_Paulo)_16.jpg Creative Commons Attribution-Share Alike 4.0 International license. --- ### sketch_2025_03_05  [sketch_2025_03_05](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_05) [[py5](https://py5coding.org/)] Demo of raster clipping/masking with #py5 and #numpy. --- ### sketch_2025_03_04  [sketch_2025_03_04](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_04) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_03  [sketch_2025_03_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_03) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_02  [sketch_2025_03_02](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_02) [[py5](https://py5coding.org/)] --- ### sketch_2025_03_01  [sketch_2025_03_01](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_03_01) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_28  [sketch_2025_02_28](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_28) [[py5](https://py5coding.org/)] Domingo vai ter oficina de GIFs animados no Garoa... [versão maior da animação](sketch_2025_02_28_maior.gif) --- ### sketch_2025_02_27  [sketch_2025_02_27](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_27) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_26  [sketch_2025_02_26](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_26) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_25  [sketch_2025_02_25](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_25) [[py5](https://py5coding.org/)] Adding basic zoom and pan --- ### sketch_2025_02_24  [sketch_2025_02_24](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_24) [[py5](https://py5coding.org/)] Poly data (c) OpenStreetMap contributors https://www.openstreetmap.org/copyright --- ### sketch_2025_02_23  [sketch_2025_02_23](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_23) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_22  [sketch_2025_02_22](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_22) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_21  [sketch_2025_02_21](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_21) [matplotlib] --- ### sketch_2025_02_20  [sketch_2025_02_20](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_20) [[py5](https://py5coding.org/)] #ControlP5 example. This is a Processing Java library, but it can be used with py5 :) --- ### sketch_2025_02_19  [sketch_2025_02_19](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_19) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_18  [sketch_2025_02_18](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_18) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_17  [sketch_2025_02_17](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_17) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_16  [sketch_2025_02_16](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_16) [[py5](https://py5coding.org/)] #DelaunayTriangulations and #TravelingSalesmanProblem investigations with #SciPy can be in 3D too :) --- ### sketch_2025_02_15  [sketch_2025_02_15](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_15) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_14  [sketch_2025_02_14](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_14) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_13  [sketch_2025_02_13](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_13) [[py5](https://py5coding.org/)] #SciPy.spatial #ConvexHull and #MinimalSpanningTree --- ### sketch_2025_02_12  [sketch_2025_02_12](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_12) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_11  [sketch_2025_02_11](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_11) [[py5](https://py5coding.org/)] #TravellingSalesmanProblem #MinimalSpanningTree #SciPy #graphs --- ### sketch_2025_02_10  [sketch_2025_02_10](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_10) [[py5](https://py5coding.org/)] Naive "nearest neighbor" #TravelingSalesmanProblem aproximation with just #scipy, fast but crude. Maybe tomorrow I'll try to implement something from a scientific paper on the problem, or maybe a naive genetic algorithm just for fun. --- ### sketch_2025_02_09  [sketch_2025_02_09](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_09) [[py5](https://py5coding.org/)] #networkx #TSP approximation --- ### sketch_2025_02_08  [sketch_2025_02_08](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_08) [[py5](https://py5coding.org/)] #MinimalSpanningTree #networkx --- ### sketch_2025_02_07  [sketch_2025_02_07](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_07) [[py5](https://py5coding.org/)] #networkx #MinimumSpanningTree --- ### sketch_2025_02_06  [sketch_2025_02_06](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_06) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_05  [sketch_2025_02_05](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_05) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_04  [sketch_2025_02_04](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_04) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_03  [sketch_2025_02_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_03) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_02  [sketch_2025_02_02](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_02) [[py5](https://py5coding.org/)] --- ### sketch_2025_02_01  [sketch_2025_02_01](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_02_01) [[py5](https://py5coding.org/)] Another #PixelSorting experiment I didn't heve the energy to try yesterday, also from an earlier #OSNoise sketch idea + #NumPy. --- ### sketch_2025_01_31  [sketch_2025_01_31](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_31) [[py5](https://py5coding.org/)] Using #numpy.sort on a variation of the previous sketch, animating a few frames, but the color compression is brutal :( --- ### sketch_2025_01_30  [sketch_2025_01_30](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_30) [[py5](https://py5coding.org/)] --- ### sketch_2025_01_29  [sketch_2025_01_29](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_29) [[py5](https://py5coding.org/)] [animated screen capture](https://raw.githubusercontent.com/villares/sketch-a-day/main/2025/sketch_2025_01_29/sketch_2025_01_29.mp4) --- ### sketch_2025_01_28  [sketch_2025_01_28](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_28) [[py5](https://py5coding.org/)] [animated screen capture](https://raw.githubusercontent.com/villares/sketch-a-day/main/2025/sketch_2025_01_28/sketch_2025_01_28.mp4) Interactive OpenSimplexNoise based "infinite scroll" #genuary28 #genuary2025 ### sketch_2025_01_27  [sketch_2025_01_27](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_27) [[py5](https://py5coding.org/)] --- ### sketch_2025_01_26  [sketch_2025_01_26](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_26) [[py5](https://py5coding.org/)] --- ### sketch_2025_01_25  [sketch_2025_01_25](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_25) [[py5](https://py5coding.org/)] --- ### sketch_2025_01_24  [sketch_2025_01_24](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_24) [p5js] I'm too sad to make my own #genuary sketch because of news of [Vamoss](https://openprocessing.org/user/65884) passing away. I decided to just tweak one of his openprocessing sketches, he loved that people could work on top of his code. We will miss him so much. His inspiring energy will live on. --- ### sketch_2025_01_23  [sketch_2025_01_23](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_23) [[py5](https://py5coding.org/)] --- ### sketch_2025_01_22  [animation](https://raw.githubusercontent.com/villares/sketch-a-day/main/2025/sketch_2025_01_22/sketch_2025_01_22.mp4) [sketch_2025_01_22](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_22) [[py5](https://py5coding.org/)] --- ### sketch_2025_01_21  [sketch_2025_01_21](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_21) [[py5](https://py5coding.org/)] #genuary21 ### sketch_2025_01_20  [sketch_2025_01_20](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_20) [[py5](https://py5coding.org/)] #genuary20 ### sketch_2025_01_19  [sketch_2025_01_19](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_19) [[py5](https://py5coding.org/)] #genuary2025 #genuary19 Homage to Jesús Soto. --- ### sketch_2025_01_18  [sketch_2025_01_18](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_18) [[py5](https://py5coding.org/)] A lazy rehash of a PyMunk sketch --- ### sketch_2025_01_17  [sketch_2025_01_17](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_17) [[py5](https://py5coding.org/)] #genuary2025 #genuary17 --- ### sketch_2025_01_16  [sketch_2025_01_16](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_16) [[py5](https://py5coding.org/)] --- ### sketch_2025_01_15  [sketch_2025_01_15](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_15) [[py5](https://py5coding.org/)] #genuary2025 #genuary15 --- ### sketch_2025_01_14  [sketch_2025_01_14](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_14) [[py5](https://py5coding.org/)] #genuary2025 #genurary14 --- ### sketch_2025_01_13  [sketch_2025_01_13](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_13) [[py5](https://py5coding.org/)] --- ### sketch_2025_01_12  [sketch_2025_01_12](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_12) [[py5](https://py5coding.org/)] #genuary2025 #genuary12 --- ### sketch_2025_01_11  [sketch_2025_01_11](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_11) [[py5](https://py5coding.org/)] #Wolfram #genuary2025 #genuary11 I wanted to optimize with NumPy but couldn't do much, the drawing part needs more work... --- ### sketch_2025_01_10  [sketch_2025_01_10](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_10) [[py5](https://py5coding.org/)] #genuary2025 #genuary10 Tau is the only number contant... (based on genuary 8) --- ### sketch_2025_01_09  [sketch_2025_01_09](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_09) [[py5](https://py5coding.org/)] I'd love to see Wolfram's "rule 30" on my bus seats! #genuary9 #genuary2025 --- ### sketch_2025_01_08  [sketch_2025_01_08](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_08) [[py5](https://py5coding.org/)] 4000 white points randomly selected from the volume of a sphere, rotated over the Y axis and redrawn 250 times. #genuary2025 #genuary8 --- ### sketch_2025_01_07  [sketch_2025_01_07](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_07) [python] #pyautogui #LibreOffice --- ### sketch_2025_01_06  [sketch_2025_01_06](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_06) [[py5](https://py5coding.org/)] --- ### sketch_2025_01_05  [animation](https://raw.githubusercontent.com/villares/sketch-a-day/main/2025/sketch_2025_01_05/out.gif) [sketch_2025_01_05](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_05) [[py5](https://py5coding.org/)] --- ### sketch_2025_01_04  [sketch_2025_01_04](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_04) [[py5](https://py5coding.org/)] --- ### sketch_2025_01_03  The next day I think I improved it:  [sketch_2025_01_03](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_03) [[py5](https://py5coding.org/)] #genuary3 #genuary2025 "42 lines of code" --- ### sketch_2025_01_02  [sketch_2025_01_02](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_02) [[py5](https://py5coding.org/)] #genuary2 #genuary2025 layers and layers. --- ### sketch_2025_01_01  [sketch_2025_01_01](https://github.com/villares/sketch-a-day/tree/main/2025/sketch_2025_01_01) [[py5](https://py5coding.org/)] --- [2026](README.md) \| 2025 \| [2024](2024.md) \| [2023](2023.md) \| [2022](2022.md) \| [2021](2021.md) \| [2020](2020.md) \| [2019](2019.md) \| [2018](2018.md) ---
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.