Welcome back everyone 👋 and a heartfelt thank you to all new subscribers who joined in the past week!
This is the 87th issue of the Gorilla Newsletter—a weekly online publication that sums up everything noteworthy from the past week in generative art, creative coding, tech, and AI.
If it's your first time here, we've also got a Discord server now, where we nerd out about all sorts of genart and tech things—if you want to connect with other readers of the newsletter, come and say hi: here's an invite link!
Let's kick things off with a quick recap of the third week of Genuary 2025 👇
Genuary Week 3 Recap
My favorite part about Genuary, and any of these month-long challenges for a matter of fact, is seeing how folks interpret the prompts in vastly different manners — I try to do my sketch before I explore what others have made, otherwise I will be too tempted to recreate some of them.
This year's prompt selection is particularly poised for that kind of creative interpretation — here's some of my favorites from the last week's batch of creations again:
- For the day 14 prompt "Pure black and white. No gray." Yann Le Gall created this cool optical illusion, where the line width of the rectangles is modulated in such a way that it creates an animated 3D shape. I tried my hand at a similar effect before, but with much less success.
- For the day 15 prompt "Design a rug" I'm impressed yet again by Roni's sketch, because he really nailed it with the pattern. I might be completely wrong on this, but it seems to me like a sort of cellular automaton that's tiled across a grid.
- Day 17 prompt "What if π = 4?" proved to be a bit of a challenge, because it kinda breaks everything when you can't make proper circles or loops, but Florian Berger's idea of slapping rectangular wheels on a car is in a league of its own.
One sketch that I missed in the first week, and that's too good to not include here, is Joshua Bagley's 42 lines of differential growth — the first time I tried my hand at it, I think I ended up with around 200 lines of code, hence if you want a sort-of-tsubuyakified version of the algo, here you go:
How's my Genuary going, you ask? Pretty decently, but could be better 😅. In the past week I only managed to do 4 prompts — technically I only made three sketches, but one of them combines two prompts. I'm really happy with the ideas that I had for the ones that I tackled though:
#12 Subdivision: This one was an interesting challenge, initially I wanted to subdivide the image simply with white rectangles that have black outlines, so that the subdivisions are clustered more densely around the prominent features of the image — the problem with that is extruding these prominent features in the first place. A simple edge detection filter doesn't really produce good results, is hard to tune, and overall isn't generalizable. The approach that you see here, subdivides rectangles on the image depending on the range of colors that they contains, and attempts to split regions so that range is reduced — you end up with rectangles clustered around the regions with larger color variation.
#16 Generative Palette: I've been thinking about making a color palette generator for the longest time, and it turned out that putting one together was easier than expected. I've recently been playing around with groq, a free LLM API that lets you query prompts and get back results. Obviously there's rate limits, but it's more than enough for hobby projects like this. Here I essentially ask the LLM to generate n hex codes for colors, that I then parse to isolate and store them in an array. The sliders simply modify aspects of that prompt.
#15 Design a Rug & #17 What if π = 4?: For my this generative rug I was playing with taxicab distances — a geometric space where where the familiar Euclidean distance is ignored, and the distance between two points is instead defined to be the sum of the absolute differences of their respective Cartesian coordinates. In that setting, the value of the analog of the circle constant π, the ratio of circumference to diameter, is equal to 4, and circles essentially become squares, which is how I produce the square shapes on the rug. The rug is then additionally deformed with a sine wave.
And that's a wrap on Genuary related things, we'll check back in next week with some new creative ideas — now let's cue the news 👇
All the Generative Things
1 — Honoring the Life and Legacy of Ruth Leavitt: Ruth Leavitt was among the pioneering figures in computer art, renowned for her contributions to early generative art during the 1960s and 1970s. She sadly passed away on the 17th of January 2025.
Dissatisfied with off-the-shelf interactive software, she turned to programming and developed her own computer art systems with her husband Jay Leavitt. By 1973, they had created a “stretching program” that could swivel, warp, and reshape lines, to transform rigid constructivist artworks into more fluid compositions. For those curious about that program, Ruth and Jay published a paper on the topic titled "Pictures Based on Computer Drawings Made by Deforming an Initial Design" that details how their method works.
Most notably Ruth is known for authoring her seminal book Artist and Computer, published in 1976. The book gathers 35 North American, European and Japanese artists that worked with computers for artistic purposes during that period of time, and gave them a space to talk about their work in the burgeoning field. Among them are Lillian Schwartz, Ben F. Lapowsky, Manfred Mohr, Hiroshi Kawano, Herbert W. Franke, among many others — the names on this list demonstrate just how important the book really is.
You can read the book in its entirety over in the Atari Archives. It's sad that many of the pioneers are leaving us now when we're just at the brink of really understanding and appreciating their contributions.
2 — Generating Mazes with Recursive Subdivision: Jamis Buck's "The Buckblog" is an incredible resource for programming related topics — particularly if you're looking to learn about programming maze generators: he's written about most of the popular graph algorithms that are generally used towards this end, such as Prim's, Kruskal's, Recursive Backtracking and many more, which you can all find over in the blog archive (scroll down to 2011).
Recently one of those tutorials resurface again while I was scouring Hacker News; it's one that I'd actually tried implementing before, where the maze is generated with recursive subdivision instead of using a traversal algorithm:
The algo works in quite a similar way to how you would subdivide a rectangle into smaller one, by successively inserting walls between them — with the difference that you insert openings into the walls to create connections between the individual rooms. As the rooms become smaller and smaller, you end up with maze like paths.
An observation here is that this recursive approach creates evident sector-like regions, that can only be accessed via a single opening — in certain scenarios this might be useful, but doesn't create a very challenging maze. Jamis published an update later on, revisiting the idea with a non-linear path to split up two regions and create a boundary between them, resulting in more organic looking maze patterns.
3 — Generating Nonsensical Math Papers: Sylvan Frankling made a Typst generator that creates deceivingly real looking math papers. If it's your first time hearing about Typst, it's an open-source typesetting language designed to create beautifully formatted documents — basically a friendlier, markdown-like alternative to LaTeX, that's technically also programmable.
Typst supports dynamic content through variables, loops and simple logic, which Sylvan leverages to create a simple PRNG that then populates template strings with randomly selected math terms and assembles them into a fake paper.
Maybe this is how we will make our last stand against our future neural overlords — by poisoning them with bogus data 😂 jokes aside though, this is quite fascinating, because I genuinely can't tell that the resulting papers are fake. I'm not entirely sure if even a very knowledgeable mathematician would be able to tell that these are fake by just glancing over them.
4 — Physical Fluid Simulation Pendant: Tim Alex Jacobs creates silly, little, and impressive gadgets under the alias of mitxela. Among his most popular creations: the world's tiniest MIDI synth, a stylophone business card, and now a tiny fluid simulation pendant — essentially a wearable amulet that digitally mimics the motion of a responsive fluid. Besides creating write-ups for his projects, mixtela also breaks them down over on YouTube:
He explains that the FLIP (Fluid-Implicit Particle) algorithm is at the core of what's powering the pendant — a hybrid method that combines particle-based and grid-based approaches to achieve a realistic and dynamic fluid behaviour. He points out Matthias Müller's Ten Minute Physics YouTube channel that provides arguably the most concise explanation of the non-trivial algorithm:
We don't usually talk much about hardware on here, but mixtela's YoutTube channel was a really fascinating rabbit hole to explore — it's basically size-coding, but with hardware. Also, funnily enough, the pendant itself turns out to be waterproof.
5 — Generative Grids with Three.js: Eduardo Fossas wrote a generative art tutorial for codrops, in which he shows how to create grid based artworks inspired by the Brazilian artist Lygia Clarke — the tutorial doubles as a great introduction to Three.js with React Three Fiber:
Tech & Web Dev
1 — DOOM in PDF: last week I shared Tetris in a PDF, and Art Galleries in DOOM — this week I present you with DOOM in a PDF; and it's exactly what you might think: a port of DOOM that runs inside of a PDF.
I don't have much more to share here 😆 it's also worth noting that this has previously been done by X user Reelix.
2 — Simple Masonry-like Composable Layouts: if you've been following the long masonry discussion that got quite heated during 2024, the fazit is that it's still going to take a long time before we're going to see CSS masonry become supported by all browsers ( grid-template-rows: masonry;
is now supported as an experimental feature in FireFox and Safari).
Using CSS properties that are currently supported by all browsers, Andy Bell shows us how to create a simple, masonry-like layout that's composable — a modular and reusable design where independent components are combined to create flexible and scalable layouts.
3 — Building Realtime Collaborative Apps with Yjs: At the core of collaborative apps, in which you can see updates from other users in realtime (like Notion or Figma), are CRDTs (Conflict-free Replicated Data Type). They’re a special kind of data structure that can take state stored on multiple different computers, and merge it all together without conflicts. What makes CRDTs special is that they don’t depend on centralized servers to merge the state — it can be done on any client! Throwback to this great article on CRDTs by Jake Lazaroff!
Yjs is a library by Jamsocket, that lets you create and manage CRDTs with ease. They recently kicked of a series of lessons to explain how the library works:
AI Corner
1 — Artificial Aesthetics Book Release: I mentioned Lev Manovich's book already in issue #69 of the newsletter, when he had just released the second chapter. In it he tackles the questions that arise around authorship in the advent of generate AI. Now the book's been completed and is freely accessible to everyone — skimming over the new chapters they strike me just as important:
2 — How I Program with LLMs: Before you roll your eyes and think to yourself "another one of those posts about using LLMs for programming", David Crawshaw presents a compelling perspective on how chat-oriented programming has improved his overall practice — while a big part of the productivity boost lies in LLMs being able to generate a lot of code very quickly, their potentiality also lies in making smart suggestions that would otherwise be difficult to come up with by yourself or through traditional search.
There is an allure to a technology that can (at least some of the time) craft sophisticated responses to challenging questions. [...] I followed this curiosity, to see if a tool that can generate something mostly not wrong most of the time could be a net benefit in my daily work. The answer appears to be yes, generative models are useful for me when I program.
For someone like me, this cutting edge approach to prototyping is invaluable; I often have more ideas than I have time to realistically spend time on, and when I really want to get an idea out of my system, just to validate if it's something that I actually want to flesh out later on, then why wouldn't I conjure a prototype at the snap of a finger? I would definitely be frustrated at this point if LLMs suddenly weren't a thing anymore.
Music for Coding
ODESZA is an electronic music duo from Seattle, that blend lush cinematic soundscapes, with upbeat percussive rhythmic layers. Their third studio album A Moment Apart was critically acclaimed and earned a nomination for the 60th Grammy awards, marking a career milestone for the duo. Throughout the tracks they explore ideas of space-travel, separation, and isolation — there's a big megathread over on Reddit back from when the album came out in 2017 in which people discuss these topics.
Hope you've enjoyed this week's curated assortment of genart and tech shenanigans!
Now that you find yourself at the end of this Newsletter, consider forwarding it to some of your friends, or sharing it on the world wide webs—more subscribers means that I get more internet points, which in turn allows me to do more internet things!
Otherwise come and say hi over on TwiX, Mastodon, or Bluesky and since we've also got a Discord now, let me shamelessly plug it here again. If you've read this far, thanks a million! And in case you're still hungry for more generative art things, you can check out last week's issue of the newsletter here:
You can also find a backlog of all previous issues here:
Cheers, happy coding, and again, hope that you have a fantastic week! See you in the next one!
~ Gorilla Sun 🌸