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

Gorilla Newsletter 92

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

This is the 92nd 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 — Differentiable Logic Cellular Automata: new research from Google's Paradigms of Intelligence team demonstrates that hardware circuits can be trained in a neural network like manner to learn specific target Cellular Automata (CA) without having to define specific rules by hand.

They build on their work from 2020 "Growing Neural Cellular Automata", where they previously investigated the autonomous generation and re-generation of cellular patterns through training a neural type of CA.

Here they take this a step further and introduce a fully discrete CA framework that's powered by differentiable logic gates, modified to learn local update rules. In the article they explain how they actually make traditionally non-differentiable logic gates trainable, and demonstrate it through a number of interactive examples:

Differentiable Logic Cellular Automata: From Game of Life to pattern generation with learned recurrent circuits
We use Differentiable Logic Gate Networks to create end-to-end differentiable, self-organizing discrete cellular automata powered by recurrent circuits, capable of playing the Game of Life as well as producing patterns à la Neural Cellular Automata.

Interestingly, this idea of "programmable matter" (matter that is capable of computation) has already been floating around for a couple of decades, the article points out Norman Margolus and Tommaso Toffoli's paper "Speculating in Precious Computronium", where Computronium is this hypothetical kind of programmable matter.

Sadly I couldn't find a version of the paper that isn't locked behind a paywall; but there's a short Wikipedia entry on it however. Regardless, this research might well be a step towards turning this science-fiction kind of matter into something that can actually be tangibly investigated.

2 — Generative Plotter Vending Machine: by disguising a plotter in form of a coin-operated vending machine, Niklas Roy's project Generative Art 1€ lets visitors dispense a unique plot to take home with them. The project can be viewed as a commentary on the transience of digital art, where the device has the ability to transform viewers from passive consumer to active collectors:

A generative algorithm continuously draws an animated black line on a screen, offering an endless stream of potential artworks. Each piece exists in a transient digital state until someone intervenes by spending a coin.

The contraption is in itself technically interesting — over on his personal blog, Niklas posted a write-up that sheds some light on the internals of the machine, how he built it, as well as what's going on in the generative artwork:

Link to Article

If you want to experience it live in the flesh, the machine is currently part of the exhibition “Intelligence, it's automatic” at Zebrastraat in Gent/Belgium, and will be on display until the 8th of June, 2025. You can find more info about the exhibition and the other contraptions that are presented over on the exhibition page. It's also worth having a look at the creative net page covering the project.

3 — Tips & tricks for Tweet sized GLSL shaders: size coder Xor shared a cool thread containing a bunch of useful tricks that they frequently use for their creations — what's cool is that each post in the thread quotes a practicable example of a tiny shader that demonstrates the mentioned trick.

Link to Thread

Xor also has his own SubStack where they've shared a couple of insightful articles and tutorials on shader coding, recommend checking it out!

4 — How to tell when your art is bad: Daniel's back with the 56th issue of his newsletter, and as always, he shares some invaluable advice for making good art — this time he tells us about a distance-based test he's been using to quickly determine if he's got a potentially good artwork at hand. In brief, the art should be interesting and engaging at multiple different viewing distances, from across the room, all the way to standing in front of it up-close:

📙 #056 - How to tell when your art is bad
But also, how to tell when it’s good. A quick rule of thumb.

I believe this is also applicable in a digital setting, where the different viewing distances become different screen sizes. There's been many times where I made something that I thought looked great on my desktop screen, but once posted to Instagram, the smaller thumbnail image really didn't do it justice.

And vice-versa, sometimes some of my animations ended up looking much better on mobile than on desktop, which then also explained why those posts got more likes than I had have anticipated. Well, maybe... what do I know about art? 😆

5 — This page is under construction: Sophie Koonin wrote a beautiful love letter to the indie web — she urges us to create our own personal websites, to claim just a little patch of digital space, and leave our colorful personal marks in the increasingly bland and corporate mass that the internet has become today:

This page is under construction - localghost
If you take just one thing away from this article, I want it to be this: please build your own website.

6 — The Code Architecture of Animal Well: to cap off this section, I want to give a shout to the Wookash Pocast that's been hosting devs behind many of the popular indie games out there today. Here's the episode with Billy Basso, the dev behind Animal Well, which I've only heard/read/seen good things about so far, and had an overwhelmingly positive release when it came out:

Gorilla from the future here: while checking out the Steam page I discovered that just a few days ago a full documentary about the game was released — so you might also want to check that out 👇 Billy Basso recounts the 7 years he spent on developing the game:

and has been on my Steam wish-list for a while now Getting this behind the scenes on how it was programmed was the nudge I needed to finally get it!

Dev & Web Tech

1 — What is TypeScript? An overview for JavaScript programmers: you've likely heard of TypeScript at this point, it's essentially JavaScript's strongly typed big brother (that ultimately gets compiled back down to plain JavaScript).

If you've been meaning to learn more about the superset language, Dr. Axel Rauschmayer wrote a simple overview of how it works and demystifies the different ways in which TypeScript can actually be run:

What is TypeScript? An overview for JavaScript programmers
Read this blog post if you are a JavaScript programmer and want to get a rough idea of what using TypeScript is like (think first step before learning more details). You’ll get answers to the following questions: How is TypeScript code different from JavaScript code? How is TypeScript code run? How does TypeScript help during editing in an IDE? Etc. Note: This blog post does not explain why TypeScript is useful. If you want to know more about that, you can read my TypeScript sales pitch.

Here you might ask why you should use TypeScript, and how the strongly typed language improves on plain JavaScript? If you're curious about that, it's covered in chapter 2 of Dr. Rauschmayer's book Tackling TypeScript that's freely accessible in its entirety, and that you should definitely also read!

Originally developed by Microsoft, TypeScript was created to address the challenges of building large-scale, complex JavaScript applications, where maintainability, tooling, and early error detection become increasingly important.

Hence, to answer the above question, enforcing types essentially creates clear contracts about what kind of data is passed around in a program, reducing the chances of unexpected behavior at runtime.

2 — TypeScript types can run DOOM: quite a big leap from an introductory article on TypeScript to running DOOM in TypeScript's type system, but just recently Dimitri Mitropoulos was able to achieve this Herculean feat.

For now there's only a short video providing a high-level overview of the scale of this personal challenge, but we're promised two upcoming in-depth videos that will dive into more details.

In this overview Dimitri shows us that he essentially built an entire virtual computer inside of TypeScript to run the game in. He also showcases the reactions from leading industry/community members to his creation — most of which were in shock, and who we'll likely see more of in the upcoming videos.

While writing this, I also saw that there were two more videos up on the channel already, a supplementary one where Dimitri talks about the hardest challenge of this entire project, besides another where we get a full reaction and commentary from Anders Hejlsberg, the creator of TypeScript, to DOOM running in its Type system.

3 — Bloom Filter: A Deep Dive: if you got excited to learn about the kind of Bloom effects that you would use in video games, I'm sad to disappoint — however you're still in for a treat information-wise.

Bloom filters are essentially the name of a smart probabilistic data structure, that let you efficiently check if something exists in a large (gigantic) list, without using tons of memory — the kirupa blog recently published a deep dive on how these data structures work:

Bloom Filter: A Deep Dive
Learn how to quickly check if a value exists in a ridiculously large collection of data by using the world’s favorite little probabilistic data structure, the Bloom filter.

4 — Reimagining Fluid Typography: it's been a minute since we talked about fluid typography on the newsletter, the first time we tackled the notion in issue #47, where we had a look at the original proposal from the Utopia group.

In a recent article Miriam Suzanne hones in on a specific detail, and challenges traditional fluid typography setups where fluid ranges are built on top of the assumption that 16px = 1em — she argues that we should avoid this “magic math” and instead let the user’s own browser default (and preferences) guide font sizing.

Reimagining Fluid Typography
Are we responding to the right inputs?

By not forcibly setting a root font-size and by using truly relative units (em, rem, viewport units)—sometimes in combination with clamp()—we can ensure our text scales properly for accessibility and varying device contexts.

The main takeaway here is that respecting user defaults and providing slight responsive tweaks (rather than overriding them with fixed assumptions) leads to better, more flexible, and more user-friendly typography on the web.

5 — In praise of off-screen menus: a new treat from one of my favorite web design blogs; Jason Bradburry explains why there's merit to hiding web menus off-screen from a UX point-of-view, and demonstrates a whole slew of different websites that do this brilliantly, each one of them in wholly unique way:

In praise of off-screen menus
Jason Bradberry challenges the ideals of displaying your entire navigation as a cluster of links and presents a case for exploring off-screen menus where the context is right for it.

AI Corner

1 — It's still worth blogging in the age of AI: writing on the internet has always been a way for me to discover, digest, and muse on my findings and consolidate some of my learnings — I think I've mentioned this before, but as much as I write these newsletters, and now infrequent blog posts, for the readership, I equally write them for myself.

But just like I turn off the AI auto-complete in my code editor, to actually do some proper non-vibe-coding and practice my programming skills, the same thing is true for writing these posts — you can only get better at something if you actively engage with it, and if AI is doing it for you, I don't think you're actually spending meaningful time on it.

Giles Thomas writes that blogging is still worth doing in the age of AI for exactly these reasons, besides many more thoughtful arguments:

It’s still worth blogging in the age of AI
Although it might seem that AI will make it pointless, I still think it’s worth blogging.

2 — Not I: Produced by the creative studio Unit Test, Not I is an essay film and installation that investigates, and essentially scrutinizes the use of machine learning in vocal forensics — where contemporarily Speech-2Face model are apparently used to infer a speaker's face from their voice. B

y adding imperceptible noise to audio samples, they demonstrate that the model produces blatantly incorrect facial outputs.

Not I - The voice, identity and the epistemic mirage of machine learning
Not I explores the problematics at the heart of contemporary vocal forensics’ use of statistical learning techniques. The work develops a form of investigative aesthetics which seeks to open up the epistemic assumptions that ground the development of these socio-technical objects through a ’counterc

On a more philosophical level, the essay film highlights an unsettling relationship between vocal perception and speaker identity, exposing the socio-technical complexities of contemporary vocal profiling, and the dubious epistemic assumptions underpinning the tech.

Music for Coding

I haven't listened to Nick Johnston in years — so I was super stoked to see that there's been a whole bunch of new albums since the last one I listened to! I will have to go on a binge this week and catch up on all of it 🤩

The most recent one Child of Bliss tells me that his style has evolved bounds and leaps since I last listened to him roughly 8 years ago — the tracks throughout the album are simply really thoughtful, emotive, melodic, and full of interesting harmonic twists and turns that you don't find many other artists do.

The album is also just short enough to be too short for my taste, but I'll let you give it a listen 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 91
Pong in 240 Favicons - Psychedelic Graphics - XOR Deep Dive - JesseSort: a New Sorting Algo - History of Algorithmic Composition - Size Coding Botto - Intricacies of a Calculator App - Bluesky’s Lossy Timelines - NASA’s 10 Rules for Software Development - Creativity and AI - LLM from Scratch

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 🌸