Mechanical empathy for machines

2 minutes read

Owen Owen

LLMs keep getting more capable, but humans stay in the loop, bottlenecking potential output. Moving us out of the loop is the implicit goal. But it’s hard when we target human-oriented outcomes – UIs, visual layouts, things humans spot-check. How do you close the iteration loop without a human squinting at the screen?

Enter intermediate representations. An IR (in this context) is a machine-readable representation between the human interface and the application. Two requirements: it must be data-only (serializable), and computing the human-visible layer from it must be a pure function. Fidelity through determinism.

I’ve been building something called FrameTape that applies this idea to TUI animations. It records a sequence of widget states, renders each into an off-screen buffer, and computes metrics: smoothness (coefficient of variation of frame-to-frame deltas), coverage (fraction of cells that changed), periodicity (distance between first and last frame for loop detection). Then it exposes assertions – WCAG contrast ratios, smoothness thresholds, coverage minimums – that agents can run autonomously.

The point isn’t the metrics themselves. It’s that the iteration loop becomes machine-native. An agent can tweak easing curves, re-record, measure, and converge – no human watching the animation and saying “that feels janky.” The IR makes the subjective objective.

There’s something after the coding agent. Cursor gave way to Claude. The pattern is always more autonomy, more decoupling. Separate intent from execution. The question is what the next layer of indirection looks like.