← Experiments A festival of squishy things Nº 05 · —

01 Dates

13–15 March 2027

Thu–Sat · doors 10:00
last squish 23:00

02 Venue

The Bouncy Hall

Pier 9, Rotterdam (fictional)
socks mandatory, shoes optional

03 Line-up

Jelly Ensemble · DJ Marshmallow · The Pneumatic Choir · Professor Pudding (keynote: “Is a bouncy castle architecture?”) · Mochi Mochi · Haribo Brutalism panel · Wobble & Daughters · the Inflatable Type Foundry · a very large beanbag

04 In numbers

  • 4 giant letters
  • — particles
  • 101 kPa inside
  • 0 sharp corners

DragThrowStackDouble-click to pop

02 The StackGame1 m = one letter

The
Stack

How tall can soft go? Drop letters, pile them onto the plinth, squish them into place. Height counts once the pile sits still for a second.

Height
0.00 m
Best
0.00 m
Letters
0
Plinth Nº 1please do not sit
03 ColophonHow soft is madeExperiment 05 · 2026

Every letter is a bag of particles that remembers its shape.

01 Marching squares

Each glyph is drawn once with Canvas2D in Bricolage Grotesque 800. Rust walks the alpha bitmap with marching squares, links crossings into closed loops, simplifies them with Douglas–Peucker and resamples to even spacing — outer rings and holes (the O keeps its O).

02 Shape matching

Müller et al. 2005. Every substep finds the best-fit rotation of the rest shape (a 2D polar decomposition is one atan2), blends in a volume-normalised linear transform, and pulls particles toward it. Stiffness is the “jelly ↔ rubber” slider.

03 Gas pressure

An area constraint on the signed area of all rings keeps letters puffy when squashed and lets you inflate them. Push the pressure to the top and they protest. Double-click and they deflate like party balloons, then re-inflate.

04 Collisions

Particles are tested against other glyphs with an even-odd inside test and nearest edge, pushed out with mass-split corrections and Coulomb friction. The poster’s info blocks are real rounded obstacles, sent to Rust as rects.

05 Rust → WebAssembly

Six substeps per frame, positions read zero-copy from linear memory.

06 Renderer

Rest-pose glyphs are ear-clipped once (holes bridged); the deforming mesh reads Rust positions each frame. WGSL draws a soft shadow, a thick ink outline as a miter strip, the fill with halftone and a squash-dependent gloss, then a lit rim.