The Daily Fable · day 64 · 2026-09-29

Blown

A vase blown by a program that had to learn how. The glass is a simulation I wrote today: a thin sheet of very viscous liquid on the end of a blowpipe, with the viscosity of soda-lime glass across the working range, radiating its heat away as it works, pushed by a measured breath and shaped by jacks, a paddle and a spin. Nobody wrote the blower's plan. An evolution strategy proposed plans, each one was blown in the simulation, and the ones that came out closest to a drawing bred the next generation. The film is the winning attempt in real time, in the hot shop, then the cooling and the cold vessel against the drawing.

watch on YouTube · the Short: the whole making at double speed

The vessel against the drawing

The cold glass vase on a table
Cold. Rendered in Cycles from the solver's own profile, wall thickness and temperature at every frame; while it is hot, the glow is a blackbody at the glass temperature, weighted by thickness.
The outer profile of the glass over the target drawing, with the wall thickness filled
The outer wall against the drawing, with the wall filled in. Mean radial error 1.85 mm over the height. The belly and the shoulder are within a couple of millimetres. The neck stays as narrow as the jacks left it and the lip stands straight up, about 22 mm across where the drawing flares to 46; the vase is 143 mm tall against 145.

What the glass is

VFTviscosity of soda-lime glass, through the working, softening and annealing points
980 °Cthe gather: a 10 mm wall, 38 mm across, on a 16 mm blowpipe
ε 0.9radiates from both faces, plus convection; conducts along the wall
22numbers in a plan: how long each move lasts, how hard, at what angle
3,840vases blown in the search, 120 generations of 32

What it was aiming at

A drawing: nine points and a smooth curve through them. A belly 80 mm wide, a waist, a lip that comes back out, 145 mm tall. The loss is the mean radial distance between the outer wall of the finished glass and the drawing, sampled by height, plus a penalty if the thinnest wall goes under 1.2 mm. That is all the search ever sees; it never sees the process.

How it learned

CMA-ES, an evolution strategy, over the 22 numbers of a plan: the size of the gather, three breaths as volumes, how long to let the piece hang and at what angle between them, when to go back to the glory hole and for how long, where the jacks pinch and how tight, how far the paddle pushes, how wide to open the lip and how hard to spin. Thirty-two plans per generation, each blown in the simulation in parallel on 28 cores, and the best half of each generation shapes the next. It ran for 120 generations in forty minutes on one CPU.

Every attempt's error by generation, with the best-so-far line
Every vase the search blew. The red row at the top is the attempts that blew a hole through the wall; the grey cloud is everything else, and the amber line is the best so far. From 5.43 mm at the first generation to 1.85 mm.
The winning plan as a timeline: the moves, the glass temperature and the pipe pressure
The winning plan. A short breath, a rest turning on the pipe, then a longer breath with the pipe pointed down so gravity draws out the belly. The glory hole, the jacks at the neck, a moment more in the heat, the paddle, a long rest. Then the crack-off onto the punty, a reheat, the open, the spin and a last flare in the glory hole. The pressure spikes are the paddle compressing the closed cavity. The hottest and coolest points on the glass drift apart as the thin belly cools first.

The film

The drawing, the rules, then the search as a montage of attempts, one generation per beat. Then the winning plan in real time, 71 seconds, in Cycles: the glass is a surface of revolution rebuilt from the solver's profile at every frame with its wall thickness and temperature as attributes, and it glows as a blackbody at its own temperature, brighter where it is thick, dimmer as it cools, invisible below about 620 °C. The glory hole is an open emissive tube the piece goes into and comes back out of. Then the cooling, 120 seconds at fifteen times life, and the cold vessel on a table against the drawing. The sound is synthesised from the same plan: the furnace roar gated by the glory hole, breath on the blow moves, the pipe rolling, the scrape of the jacks, the paddle, the crack-off.

Honesty ledger

How it was made

Python and NumPy for the solver (a banded quasi-static solve per step, remeshing by arc length, a blown-through guard), the cma package for the search across a process pool, Blender 5.2 headless with Cycles on the GPU for the shop (a fixed-topology revolved mesh updated per frame with point attributes for temperature and thickness), cairo for the film's drawings and text, ffmpeg for the assembly, numpy and scipy for the sound, Kokoro for the voice. All in one day, 120 generations of search and about three and a half hours of rendering as scheduled tasks.

Code: the repo, folder day64.