Gorilla Newsletter 93

Dithering in Colour - The Lost Art of Logarithms - Evolving Shaders with LLMs - Art with Sinusoids - IO Devices & Latency - Whimsical Web Animations - Deceptive Progress Bars - CSS Relative Colors - Understanding Embeddings

Gorilla Newsletter 93

Welcome back everyone 👋 and a heartfelt thank you to all new subscribers who joined in the past week!

This is the 93rd 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 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!

That said, cue the news 👇

All the Generative Things

1 — Dithering in Colour: traditionally, dithering's a technique to create the illusion of color depth with a limited color palette, tricking our eyes into seeing more colors than there actually are, the term is now generally used to refer to a bunch of algorithms that can reduce the number of colors in an input image.

Today, it's become a bit of a lost art, and broadly used for aesthetic and artistic purposes. While dithering is most commonly used in the monochrome setting, this past week Niklas Oberhuber shared a post in which he explains how multi-channel dithering works and some of the pitfalls to avoid while doing so.

Instead of converting an image to grayscale and using a simple threshold, color dithering involves comparing each pixel’s RGB values in a three-dimensional space to find the closest matching color in a chosen palette, then diffusing the quantization error across each channel separately.

A key point is the need to linearise the sRGB input before dithering because the gamma-encoded values do not represent brightness linearly, which can lead to overly bright or inaccurate outputs.

We have just committed a mortal sin of image processing. I didn’t notice it, you might not have noticed either, but colour space enthusiasts will be knocking on your door shortly.

Niklas also mentions a whole bunch of other interesting articles on the topic of dithering that I haven't previously come across, nor shared on the Newsletter:

Ditherpunk — The article I wish I had about monochrome image dithering — surma.dev
I always loved the visual aesthetic of dithering but never knew how it’s done. So I did some research. This article may contain traces of nostalgia and none of Lena.

To end this first segments, and to share something artful, I saw that Roni Kaufman has recently also been experimenting with color dithering, he made this beautiful dithered rendition of Anna Boch's "Falaise - Côte de Bretagne" — go and drop him a like 👇

Link to Instagram Post

2 — Evolving shader sketches with LLMs: Joel Simons came up with an interesting approach that leverages evolutionary principles for prompting LLMs, in an attempt to maximize the diversity of generated outputs.

Starting from an initial sample population generated by the LLM, the evolutionary step is guided by a "creative thinking" strategy, that are essentially different kinds of methods for combining and blending samples of the population. These strategies are inspired by the creative approaches from known theorists and creatives.

After a new batch of samples is generated, their similarity to previous samples is computed through an embedding, this provides a measurable score to grade how novel and different generated examples are. The cycle is then repeated until a certain stopping criteria is reached.

Here I'm just providing the big picture, so highly recommend reading through the page for yourself.

Although the final sketches might still not be aesthetically pleasing (imo), the results do seem to indicate that this approach nudges the LLM to explore a greater diversity of examples than it normally would — which is maybe also not so surprising, since we have already established that "step by step" reflection and thinking loops scale LLMs' capabilities to a great extent.

3 — The Lost Art of Logarithms: in an attempt to put down some of the prehistory of computing in writing, Charles Petzold is currently in the process of documenting everything related to Logarithms and how they are central to our perceptions and consequent understanding of the world, in form of a book.

Albeit still a work in progress, the resource currently is and will be freely accessible, with many of the first chapters already filled in:

Although the topic at hand is something profoundly technical, The Lost Art of Logarithms reads surprisingly easy, much like a normal book; at least that was my impression going through the first chapter over the weekend.

Charles writes in a really accessible way that simplifies much of the complexity — it's one of those resources I wish I would have had back in high-school to have more context around the notions we were being taught in math class.

4 — Art with Sinusoids: this week I'm excited for a collaboration between Rob Scalera and 0xbenj, two really talented generative artists that I've been following for a while now — their generative artwork what lingers within is releasing this coming week on fxhash, and it's a really gorgeous one.

Learn more about the project here

Their work is in part inspired by Masaru Fujii, an artist that doesn't claim to be a generative artist but still leverages trigonometric functions for the purpose of creating mesmerizing algorithmic compositions — I discovered a page where he has actually explained a little bit about his method and how it's simply based on combinations of sinusoids.

5 — Infinite Zoom Wikipedia: Orion Reed built a mind boggling Wikipedia-like website where, instead of hovering over hyperlinks to see their content, you can zoom in and out of them, to physically traverse the page into the links. I have no idea how it works, and it did induce a bit of motion-sickness, but it's the coolest thing I saw this past week.

0:00
/0:14

Link to Post

6 — Algorithmic Pattern 2025 call for talks/papers: to cap off this section, back in January I shared the Algorithmic Pattern conference that's taking place later this year in September, you can read about it in issue #85 of the newsletter, or directly check out their website — the important point is that they are now accepting submissions for talks & papers, with the submission deadline being June 2nd 2025.

Dev & Web Tech

1 — IO Devices and Latency: without a doubt the most fascinating tech article of the past week, Ben Dicken wrote about the evolution of non-volatile storage—from tape drives and hard disk drives (HDDs) to modern solid state drives (SSDs)—and how each technology’s physical design impacts input/output (IO) latency.

What makes the article really stand out are the many interactive examples throughout that let you play around with the different kinds of storage mediums, demonstrating their inner workings and shortcomings in a tangible manner.

Link to Post

Although the article is directly related to a new product release of Ben Dicken's company, but it's in of itself quite interesting, rather than separating storage from compute like many cloud solutions nowadays do — and in that manner introducing latency — PlanetScale proposes to go back to using storage that’s directly attached to compute using fast NVMe (Non-Volatile Memory Express) SSDs.

Link to Hacker News Item

2 — Programming Whimsical Web Animations: Josh Comeau's got a new course lined up that's all about creating playful, interactive effects using vanilla web tech. He's just launched the landing page for it, and it was an absolute joy to explore — I recommend playing around with the landing page by yourself before diving into the article. In the massive write-up Josh explains how he created many of the effects that are used throughout it.

If you've been wanting to add some character, or easter-eggs, to your own website, this one's for you.

3 — Truth, Lies and Progress Bars: I've read this on several occasions now, that progress bars only on rare occasion really accurately convey the progress that's being made by an application, and instead just serves as an indicator to convey a sense of progress to the user. Tyler Sticka wrote a short and sweet post about an early career experience where he worked on a project that implemented this kind of bogus progress bar, and explains that sometimes a small performance loss is worth a more accurate estimation of progress:

Truth, Lies and Progress Bars
An early encounter with a fabricated progress indicator inspired several more honest alternatives.

This also reminds me of a thread I came across not so long ago — apparently this "perception of progress" is also applicable in a physical setting:

Link to Post

4 — CSS Relative Colors: Ahmad Shadeed is back with another article, this time exploring CSS relative colors, a modern approach that lets you adjust colors directly in CSS without relying on tools like Sass; using functions like hsl() and oklch(), you can now easily change a color’s opacity or create lighter and darker shades on the fly, or even entirely hue shift to a different color.

CSS Relative Colors
An interactive guide to learn CSS Relative Colors.

5 — Colormaxxing with P3 Colors: in more color related news, turns out that using the modern Display-P3 color space allows for much brighter and vibrant colors in certain browsers, and on displays that support the color space — going through the examples Daniel Karuna provides in his post does indeed reveal much more vivid colors (on a MacBook using Brave — no luck with FireFox).

No idea if you'll be able to see it through the screenshot 😅 it's a different shade of red on the right — source: trust me bro

Not sure for what practical purposes this is useful for, if not all displays and/or browsers support the color space at this point, but it's pretty cool that it's possible to squeeze out a bit more color range in that manner!

AI Corner

1 — Understanding Embeddings: Embeddings are numerical representations of complex data — such as words, images, or sounds — that capture the underlying meaning and context in formats that are easy to work with. An embedding space is thus just a conversion of data items to high-dimensional vectors, where similar items are positioned close together, where algorithms can then recognize patterns and relationships.

They are the cornerstone of modern applications of AI, semantic search engines for example, that leverage embeddings to understand query context and retrieve relevant related information; but also recommendation systems, and various other natural language processing applications like sentiment analysis, machine translation, and chatbots.

If you're curious about this, Santiago Valdarrama published a video about how to train your own neural network that can generate image embeddings, from scratch — it's a beefy one but worth the watch:

2 — Tips for using cursor: I've used cursor quite a bit now, in fact it's my current coding editor of choice, the inbuilt AI functionalities are neat for all sorts of purposes — for vibe coding for instance 🤣 Nick Craux wrote an article on how to get the most out of it while also saving yourself from the crappy debugging.

Nick Craux
hello i’m nick

One key tip Patrick offers, that I haven't tried out yet, is using the .cursorrules or .mdc files to set guidelines for the LLM — clear, minimal rules, seem to work best and overall make the AI generate better code.

Music for Coding

Naxatras is a psychedelic rock band hailing from Greece, and have built a reputation for blending progressive, spacey elements with hard rock, blues, and expansive jam sections. Previously unaware of the band's track record, they seem to be THE big thing in the psychedelic rock space — reading through some reviews online to learn a bit more it seems we've got a very special album at hand:

Naxatras has come before us with what’s effortlessly the year’s biggest release of the genre so far with any bands with any to-be-announced albums having an exceedingly high bar to clear if they hope to top the overwhelming mastery of what’s been pulled off here ~ Head-Banger Reviews

But I'll leave you to savour it for yourself 🤤

And that's a wrap — 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:

Gorilla Newsletter 92
Logic Circuit Cellular Automata - Generative Plotter Vending Machine - Tweet Coding GLSL Shaders - Distance Test for Bad Art - Indie Web Love Letter - What is TypeScript? - Doom in TypeScripts’s Type System - Bloom Filter Data Structure - In Praise of Off-Screen Menus - Blogging in the Age of AI

You can also find a backlog of all previous issues here:

Newsletter - Gorilla Sun
Weekly recap of Gorilla Articles, Art and other interesting things from the world of generative art and creative coding.

Cheers, happy coding, and again, hope that you have a fantastic week! See you in the next one!

~ Gorilla Sun 🌸