Welcome back everyone 👋 and a heartfelt thank you to all new subscribers who joined in the past week!
This is the 86th 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 second week of Genuary 2025 👇
Genuary Week 2 Recap
Another week of Genuary has gone by, and we're now 12 prompts in! It definitely feels like the biggest edition of genuary thus far — it's all I've been seeing on my social feeds these past two weeks, and I ain't complaining! Wish it could be like that all year round 😄
There's no way for me to make an exhaustive list of what everyone's made, but at least I can point out my two favorites up till now — Roni Kaufman's day 6 "make a landscape using only primitive shapes" and Darien Brito's day 9 "the textile design patterns of public transport seating". Roni arguably has the best sense for consistently good aesthetics in the entire gen-art space, the 8-bit feel of his day 6 creation just really does it for me! As for Darien's textile pattern, it's hard for me to believe that this isn't actually a photo:
Beyond that, the standout prompt that everyone enjoyed enormously, was by far day 7 "use software that is not intended to create art or images" where you had to get inventive and come up with a way to repurpose some software for art-making purposes. I had a lot of fun reprogramming the same code I used for my isometric day 5 creation in Google Sheets!
Yes, you read that right: turns out Google Sheets actually has a scripting API, that's simply programmable with regular JavaScript, and lets you create custom extensions. It's limited in that you can't create animations (at least not that I know of), but essentially lets you treat the spreadsheet as a regular grid of pixels — meaning that you can pretty much make anything (naturally with some extra steps).
Day 11 was also quite fun: "Impossible day - Try to do something that feels impossible for you to do". I simply used the prompt as an excuse to attempt something I've been wanting to do for a long time: implementing a full-fledged neural network in vanilla JavaScript — and I somehow managed to make it work!
The programming part wasn't too difficult, but I struggled quite a bit to get the simple classifier to actually train and update its weights — I'm still not entirely sure that all parts are working as intended, but it seems to work decently well! I have a couple more ideas for it at this point — going the entirely custom route does open up quite a few interesting possibilities. Besides that, I think this has potential to be one of those viral tweets that could potentially explode (if I manage to figure out a good caption).
That said, while everyone's busy with Genuary, tutorials and articles have slowed down a little bit — but there's still been a bunch of interesting stuff I came across throughout the past week 👇
All the Generative Things
1 — Practical Pigment Mixing for Digital Painting: If you're familiar with the Mixbox library you might've heard about this paper already — it essentially details the algorithm that makes the realistic color mixing of the library possible.
Digital painting softwares do not actually mix colors in a way that is true to real life—for instance, if you blend blue and yellow paint IRL, you get shades of green; when doing so in digitally however, most programs produce gray-ish colors. This is due to how the mixing is done numerically in the underlying color space that's used by the software.
But it turns out that we actually have a model that mimics real-world color mixing, namely the Kubelka-Munk model... we're just not using it! Apparently this is due to it being relatively computationally expensive — and isn't "practical to implement" as the paper states.
The K-M model is a mathematical approach to predicting how light interacts with layered, scattering materials such as the pigments in paint: it defines color mixing in terms of absorption (K) and scattering (S) coefficients, describing how the pigments physically reflect and transmit light.
Mixbox leverages this model in a way that allows for fast RGB-in/RGB-out operations, and simultaneously integrates easily into existing digital painting software. They have two wonderfully accessible explainer videos up on Youtube to demonstrate how all of this works:
2 — Developing "The Big Forest" an Infinite Procedurally generated Game: Rune Skovbo Johansen is one of the creators that's been popping up on-and-off in my reddit feed, or whenever I check the r/proceduralgeneration subreddit. For the past couple of years he's been developing a game titled "The Big Forest", an infinitely procedurally generated game that primarily revolves around exploration.
His 2024 recap documents the development progress throughout the year and points out the two big milestones that he's achieved. I mentioned the Everything Procedural Conference (EPC2024) that took place in Breda in issue #70 of the newsletter — Rune actually gave a talk there where he explains the Layer-Based engine that he's developed for his game:
In another recent article, Rune writes about his progress, and struggles, in procedurally generating and animating creatures for the game, constituting the bigger task on which he spent the latter half of 2024. This involved creating a parametric system in which all randomly generated outputs create visually valid 3D creatures, as well as making a system that animates their movement in a seamless manner.
3 — Simple Fractal Rendering and the Deep Zoom Effect: Fractals are fascinating, endlessly self-repeating shapes governed by strikingly simple formulas. For instance, the formula for the Julia set simply is zₙ₊₁ = zₙ² + c, where z and c are complex numbers. We essentially compute this formula a set number of times over the complex plane (the pixels of the canvas in our case) until the computed value exceeds a certain threshold, or a given number of maximum iterations has elapsed.
To visualize the fractal, we assign each pixel's brightness based on how quickly that coordinate's calculations either exceed our threshold or reach the maximum iterations. This process then reveals an intricate pattern with spiraling structures:
The fascinating thing here is that many fractals actually share this same formula; simply by tweaking the starting conditions, or how we iteratively computed the z value yields very different fractal shapes.
YouTuber Pezzza breaks down how to do this in GLSL in just a few lines of code, in a really easy to understand way. He also explains how to create the mesmerizing deep zoom effect that makes it seem as if we're endlessly travelling into the fractal shape while it's expanding outwards:
I would be curious to see how an infinite zoom works — I'm assuming that this is only possible with specific types of fractals, and with some trick to line up the repeat?
4 — DOOM: The Gallery Experience: for all of you artists that have been looking for the optimal way to present your portfolios, I present you with a DOOM powered art gallery! Instead of shooting up mobs, you now traverse a gallery space, sipping on wine and collecting munchable hors d'oeuvres — you can play it in your browser here:
This DOOM variant made the rounds, warranting a feature on the Ars Technica that sheds some light on the motivations behind the remake and how it came into existence in the first place. The developers state that their student project somehow culminated in "a parody of art gallery culture" — and I think it's actually not so far from reality 🤣
5 — An Unreasonable Amount of Time: this short blog post by Allen Pike isn't directly related to generative art, but is solid advice for everyone that's aiming to get better at making art, writing, or acquiring a skill of any kind really — you simply need to invest an unreasonable amount of time until you get so good that it appears to others as if it were magic.
Tech & Web Dev
1 — Programming Tetris in a PDF: this one's a bit of a WTF inclusion — because I have no idea in which section this should go — it's too cool to leave out though. So, apparently it's possible to program an entire game of Tetris inside of a PDF file — Thomas Rinsma sheds some light on how he created the Tetris PDF in his Hacker News post, and also shares a Github repo with the code for it:
2 — Ahmad Shadeed on Balancing Text in CSS: Our favorite web designer is back with another deep-dive, this time tackling strategies for automatically balancing text with CSS. The article's a thorough and interactive explanation of how the text-wrap
rule in CSS works, in particular the balance
property, that distributes space evenly between lines. Ahmad also demonstrates this through a bunch of examples from websites he's found out in the wild.
3 — A Philosophy for Digital Longevity: in this article Rishikesh emphasizes the importance of creating lasting digital artifacts, that can be easily accessed in the future. He makes the cause for the long-term value of timeless file formats, and includes a personal recount of using local-first, and exportable note-taking tools like Obsidian, that directly endorse this philosophy, over apps like Notion.
4 — VLC Media Player AI Subtitling Feature + 24 Carat Gold GameBoy Competition: the VLC Media player team made an appearance at CES 2025 that took place last week. When asked why they were there, they simply stated that "we have nothing to sell, we just decided to show up"! I've personally been using VLC for a long time, not as much these days as some years ago, but it just has so many useful features that make it far superior to most of the default media players.
Their newest feature involves real-time AI subtitling and translation, that runs locally and offline in over 100 languages, using entirely open-source models — which I think is a super cool milestone, and super useful for those who rely on subtitles to consume popular media.
The VLC team also celebrates hitting 6 billion downloads by kicking off a competition that involves beating a GameBoy game they've developed. The first to beat the entire game gets a 24 carat gold plated GameBoy — find the game here!
Not sure if there's still time or if someone's already beat it.
AI Corner
1 — Things we learned about LLMs in 2024: If you want a big comprehensive review of the major LLM related developments throughout 2024, then Simon Willson's article is likely the only one that you'll need. He goes over the important points and provides commentary on them.
Probably the most interesting advancement in the latter half of 2024 is that of inference-scaling and “reasoning” models, where instead of allocating more resources to improve the capabilities of LLMs, we simply let them engage in self-reflective loops to achieve better responses:
This is that trick where, if you get a model to talk out loud about a problem it’s solving, you often get a result which the model would not have achieved otherwise.
2 — Orbit AI Summarizer: Orbit is basically a browser extension for firefox that runs an LLM directly in your browser for content summarization, and it does so completely locally! I tested it for a bit and it's pretty decent, obviously not as good as Claude or GPT 4, but good enough to get the job done. It also works on YouTube videos where it automatically looks at the transcript to generate the summarization!
If you FireFox is your default browser, I recommend taking the extension for a spin!
Music for Coding
Ólafur Arnalds is an Icelandic composer and musician that blends classical and electronic sounds into evocative ambient soundscapes. This last week I listened to his album Some Kind of Peace, and it took me a second to realize that I'd already heard the opening track "Loom", which is a collaboration with Bonobo, one of my favorite artists. If you need something captivating and introspective, this is the album you need.
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 🌸