Gonzalo Bilune

Two neural nets learned to write in Arrival's ink

2026-11-11•AI

I rewatched Arrival and ended up training two neural nets that send each other English sentences written in the film's ink. This is what I learned.

Two neural nets learned to write in Arrival's ink
Back

A few days ago I rewatched Arrival and got hooked on the logograms. Those rings of ink the heptapods throw against the glass, where a whole sentence shows up at once, with no beginning and no end. That night I asked ChatGPT whether something like that could be done with neural networks. Three days later I had two networks sending each other English sentences written in the film's ink.

The heptapod writing "Hello, earthling." with the ring the networks invented.

The idea is a game of telephone with drawings. One network, the writer, takes a short sentence and turns it into a ring of 36 ink marks, cut from the film's real logograms. The other, the reader, only gets the image and has to write the sentence back. I fixed the circle, the 36 slots and the alphabet of 81 marks. What each mark means was up to them, with one rule: the reader has to understand.

Both start from T5-small, a small Google model that already knows English. What they had to invent is how to write it in ink.

And it works pretty well. I gave it an exam of 2,000 real sentences it had never seen, built beforehand and run once at the end: 81% came back word for word. If you give the reader another sentence's ring, it gets it right 1.2% of the time. So the sentence really travels in the drawing.

A random sample from the exam: each ring is a sentence the reader read back.

A big part of that number comes from a trick. Before sending, the writer rereads its own ring with a copy of the reader and swaps marks until it reads right. Without that, the first try gets 33%. It's what we all do before sending a delicate message: we read it as if we were the other person.

The writer rereads its ring and swaps marks until "earthly" reads "earthling".

The part that blew my mind came later, when I started taking the ring apart the way Louise does in the film. You change one word and watch what moves.

I change "Tom" to "Mary" and four marks move, the ones in the area where the subject lives. I change "car" to "boat" and others move, the object ones. I add a question mark and three marks I hadn't touched change.

Tom to Mary, car to boat, period to question mark: each step moves a few marks.

And there's one mark, in slot 26, that means plural: change it and "the teacher is outside" becomes "the teachers are outside". I tried the same change on 30 other sentences with that shape and it worked on all 30.

The mark in slot 26: teacher becomes teachers.

Nobody designed any of that. The networks set up one area for who, another for what and another for how the sentence ends, on their own.

Nobody taught them grammar, and grammar showed up anyway, because it was the cheapest way to be understood.


Now, the awkward part. Claude Code wrote almost all the code, and Codex reviewed the designs like two engineers arguing in a PR. I directed, asked questions and stopped things when they didn't add up. And the question that stuck with me is kind of obvious: if I didn't write the code, what did I learn?

More than I expected, and almost none of it was syntax. I learned to distrust a 100%: the first prototype scored perfectly because the design already had the answer baked in. I learned that the reader can ignore the image and guess from memory, and that you have to force it to look. I learned that a regular network can't read a circle until you unroll it into a strip. And I learned that the Mac freezes if you ask too much of it, literally, so everything heavy ran on a rented GPU.

I wouldn't have learned any of that from a tutorial. I learned it by asking questions to something that worked, or didn't.


I also learned not to trust what comes out pretty. Before publishing, I asked Codex to check every number against the project's files and it found 27 things. Some were overstated and some were plain wrong: I was saying the mistakes were almost always a single word, and they weren't. I fixed all of it. I'd rather have an 81% that survives review than a 95% that doesn't.

It has clear limits, too. It stumbles on rare names (Krasnoyarsk came back as Krasnogsk), it doesn't work on nonsense, and accents get lost before the model even sees them. When it's wrong, it's often wrong in a reasonable way: heroically for bravely, thirteen for 13.


In the end I made a 3D heptapod with Fable 5.2 that writes the rings in the fog, because if you're doing something inspired by Arrival you have to overdo it a little. You can try it at heptapod.bilune.ar (you'll need a computer), there's a plain version that works on phones, and the code with all the numbers is on GitHub. It took three days and about 40 dollars of GPU time.

Louise doesn't learn the language by reading a dictionary. She learns it by showing a word, changing one thing and watching what moves.

The ink comes from the Arrival (2016) logograms by Martine Bertrand, released by Wolfram Research under CC BY-NC 4.0.