Bret Victor Pitches Live Behavior Interfaces to Replace Static Code

Bret Victor - Media for Thinking the Unthinkable — Colin McDonnell

Colin McDonnell

Modern computing remains trapped in paper-era text conventions that blind engineers to dynamic behavior, requiring interactive media that engage visual and physical cognition directly.

AI-assisted summary of Bret Victor - Media for Thinking the Unthinkable — original source. Check the original for full context.

Source published:

Key ideas

  • Human thought about systems remains trapped in the static paradigms of pencil and paper, leaving modern computer tools underutilized as cognitive media. (0:02)
  • Challenging Richard Hamming's concept of inherently 'unthinkable thoughts,' new computational media can act like cognitive prosthetics—akin to microscopes or mathematical notation—to translate complex dynamics into human sensory and mental channels. (8:09)
  • Effective thinking environments integrate Jerome Bruner's three cognitive modalities simultaneously: symbolic logic, visual pattern recognition, and interactive tactile manipulation. (12:50)
  • System comprehension requires interacting directly with live behavior—measuring, searching, and parameterizing output spaces across entire families of systems—rather than merely manipulating inert structural code. (19:19)

Detailed notes

## Background Published on YouTube by Colin McDonnell on June 17, 2015, this video captures Bret Victor's presentation delivered at the MIT Media Lab on April 4, 2013. The description outlines Victor's talk 'Media for Thinking the Unthinkable' and provides links to his essay outlines, notes, and interactive software demonstrations spanning scientific communication, dynamic circuit schematics, signal processing filters, and vector drawing tools.

## TL;DR Bret Victor argues that human comprehension of complex systems is severely constrained by legacy media like static text, formulas, and paper schematics, which force thinkers into mentally exhausting symbolic simulations. Drawing on cognitive models like Jerome Bruner's modes of representation and Richard Hamming's concept of 'unthinkable thoughts,' Victor demonstrates how computing can serve as an active cognitive prosthesis by engaging symbolic, visual, and interactive channels simultaneously. Through interactive prototypes—including live circuit networks, multi-perspective digital filters, linked pipeline code inspectors, and dynamic vector drawing tools—he shows how software can render hidden internal behavior visible and directly manipulable. The talk concludes with an urgent plea to move beyond paper-derived programming paradigms and discover a true computational medium for understanding dynamic systems.

## Atmosphere & style The lecture carries an intellectually electrifying yet understated and focused atmosphere, characteristic of a visionary masterclass. Victor speaks with quiet, deliberate conviction, effortlessly pairing rigorous historical reflections with dazzling, real-time software demonstrations that make standard industry tools look primitive by comparison. Watching the presentation feels like peering into an alternate future of human cognition, progressing from analytical critique to wonder and culminating in an inspiring, open-ended challenge to the audience to reinvent how minds reason about the universe.

## Bulletin - [00:02](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2s) Human thought about systems remains trapped in the static paradigms of pencil and paper, leaving modern computer tools underutilized as cognitive media. - [08:09](https://www.youtube.com/watch?v=oUaOucZRlmE&t=489s) Challenging Richard Hamming's concept of inherently 'unthinkable thoughts,' new computational media can act like cognitive prosthetics—akin to microscopes or mathematical notation—to translate complex dynamics into human sensory and mental channels. - [12:50](https://www.youtube.com/watch?v=oUaOucZRlmE&t=770s) Effective thinking environments integrate Jerome Bruner's three cognitive modalities simultaneously: symbolic logic, visual pattern recognition, and interactive tactile manipulation. - [19:19](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1159s) System comprehension requires interacting directly with live behavior—measuring, searching, and parameterizing output spaces across entire families of systems—rather than merely manipulating inert structural code.

## Key takeaways - [00:02](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2s) The representations we use to depict systems define how we think about them and set the boundaries of what we can understand in both science and engineering. - [02:24](https://www.youtube.com/watch?v=oUaOucZRlmE&t=144s) Traditional scientific communication compresses multidimensional mental models into low-bandwidth strings of text and equations, forcing readers to perform grueling internal simulations. - [02:24](https://www.youtube.com/watch?v=oUaOucZRlmE&t=144s) Dynamic, sequential visual representations externalize state transitions and mathematical scaling, allowing direct perception of algorithms instead of mental decompression. - [05:10](https://www.youtube.com/watch?v=oUaOucZRlmE&t=310s) Circuit design tools should replace inert symbols with coordinated, live waveforms and behavioral current blocks displayed across the entire system simultaneously. - [08:09](https://www.youtube.com/watch?v=oUaOucZRlmE&t=489s) While Richard Hamming posited biological limits create 'unthinkable thoughts,' humanity has consistently bypassed cognitive and sensory barriers by inventing external instruments and notations. - [09:35](https://www.youtube.com/watch?v=oUaOucZRlmE&t=575s) Representational leaps such as written literacy and symbolic mathematical notation were fundamentally user interface innovations that permanently altered human cognitive capabilities. - [12:50](https://www.youtube.com/watch?v=oUaOucZRlmE&t=770s) Human cognition operates across three channels—enactive (interactive), iconic (visual), and symbolic—and breakthroughs frequently occur by switching problems out of the symbolic channel into the other two. - [16:43](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1003s) Presenting synchronized, multi-perspective views of dynamic systems (equations, step responses, pole-zero plots, frequency spectra) enables holistic, intuitive system exploration. - [19:19](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1159s) Direct interaction should operate on behavioral outputs rather than just structural parameters, turning algebraic solving into dynamic search queries over time-series data. - [23:03](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1383s) Correlating parameters directly to measured behavioral features enables thinkers to abstract and reason across entire families of systems rather than individual instances. - [24:51](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1491s) Domain-specific stream languages like Nile can express complex rendering in minimal code, but require linked intermediate visualizations to reveal pipeline behavior. - [28:25](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1705s) Because visual thinking relies on spatial perception, authoring system visualizations must be done through direct visual manipulation rather than symbolic coding. - [31:17](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1877s) Dynamic drawing tools allow data-driven graphics to combine the directness and immediacy of drawing on paper with programmatic reusability. - [38:16](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2296s) Modern computing remains constrained by a legacy of paper-oriented thinking, epitomized by static handwritten code that prioritizes syntax over runtime behavior.

## Detailed walkthrough ### [00:02](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2s) Media for Thinking About Systems

Bret Victor opens his presentation at the MIT Media Lab by remarking that while it is natural to discuss media in a media lab, his focus is specifically on “media for thinking in,” applied toward a fundamental cognitive goal: understanding systems. Whether examining the natural world—such as observing the planets orbiting the Sun, taking measurements, discovering patterns, and constructing a theoretical model (science)—or starting from theory to engineer artificial systems like a spacecraft to reach those planets (engineering), the core challenge remains identical. Both disciplines, and everything between them, pivot entirely on comprehending how systems behave.

Victor argues that media serve as thinking tools. The representations humans invent to portray a system dictate how they can conceptualize it and govern what can be understood about it. To comprehend more complex systems and construct more ambitious ones, society requires entirely new representations, along with a powerful new medium in which to create and manipulate them. Most contemporary tools, even those running on modern computers, remain deeply chained to the paradigm of pencil and paper. Victor contends that computing presents an enormous, largely untapped opportunity to rethink how humans reason about systems. Across varied domains like programming, circuit design, and signal processing, the technical specifics matter less than the underlying representational principles. As Victor states: “The representations that we use of the system are how we think about it our representations are um how we understand this system and what we understand about it and so if we want powerful new ways of understanding complex systems if we want to build powerful new systems we need powerful new representations and we need a powerful new medium in which we can create and work with those representations.”

```mermaid flowchart LR accTitle: Science versus Engineering System Thinking accDescr: Science moves from physical systems to theoretical models, while engineering moves from theory to constructing systems.

subgraph ScienceFlow["Science"] S1["Observed System<br/>(e.g., Planetary Orbits)"] -->|"Measure & Model"| T1["Theoretical Model"] end

subgraph EngFlow["Engineering"] T2["Theory & Principles"] -->|"Design & Build"| S2["Constructed System<br/>(e.g., Spacecraft)"] end ```

- Understanding systems lies at the heart of both science (system to theory) and engineering (theory to system). - Current digital tools still force thinkers into static pencil-and-paper mental models. - The examples presented across diverse disciplines all share generalizable representational principles.

---

[02:24](https://www.youtube.com/watch?v=oUaOucZRlmE&t=144s) Redesigning the Scientific Paper as Sequential Art

To demonstrate how traditional media fail system comprehension, Victor examines an influential network theory paper published in *Nature* that helped launch modern network science. While written by talented authors, its dense algebraic exposition—packed with conditions like $n \gg k \gg \ln(n) \gg 1$ and variable behaviors where $L$ scales as $2k \gg 1$ and $C$ approaches $3/4$ as $p \to 0$—renders it essentially unreadable on first pass. Victor diagnoses this as an information-theory bottleneck: the researchers harbor a vibrant, multidimensional picture inside their heads, but are forced to pass it through a severely lossy, low-bandwidth channel composed of linear strings of static text, symbols, and isolated static figures. Readers are then left with the grueling, error-prone task of decompressing those abstract symbols back into an active mental model.

Victor presents his own redesign of the paper, using a format where explanatory prose and dynamic sequential diagrams are woven together step by step. Rather than forcing the reader to mentally simulate the paper's network-generation algorithm, the layout visually illustrates each discrete state change across time: starting with a ring of $n = 12$ vertices, connecting each to its $k = 4$ nearest neighbors, selecting an edge, and rewiring it at probability $p$ while iterating clockwise around the circle. Mathematical relationships are similarly externalized; when describing how characteristic path length $L$ scales linearly or logarithmically while clustering coefficient $C$ remains constant or drops reciprocally, the graphs sit right alongside the text. Readers immediately perceive the relationships rather than struggling to reconstruct mathematical curves from memory. As Victor explains: “So what I'm doing here it's it's really just a very simple trick it's to understand the picture that's in the author's head and just reproduce that so we're showing the state of the system we're showing the behavior of the system as it goes through this algorithm.”

- Traditional papers compress multidimensional mental models into a low-bandwidth stream of words and equations. - Victor's redesign depicts the discrete internal state of the graph algorithm at each step ($n=12$, $k=4$, rewiring with probability $p$). - Mathematical trends (linear versus logarithmic scaling of $L$ and reciprocal behavior of $C$) are shown directly in context rather than left to internal visualization.

---

[05:10](https://www.youtube.com/watch?v=oUaOucZRlmE&t=310s) Live Data Representations in Circuit Design

Victor applies this identical principle to electrical engineering. He shows an interactive circuit schematic tool where he finishes drawing a connection, making the circuit functional. However, because traditional schematics are inert line drawings, nothing visibly happens on screen. In a physical laboratory, an engineer would at least pick up an oscilloscope probe to inspect individual voltages node by node. Victor adds a simulated real-time oscilloscope trace to an active node, but points out that this still falls short of providing a systemic understanding. To truly grasp how a circuit operates, an engineer cannot inspect isolated variables in isolation; they must perceive all voltages across the network simultaneously.

```mermaid flowchart TD accTitle: Evolution of Circuit Schematic Representations accDescr: Progressing from dead schematics to single-node probes, multi-node voltage plots, and complete embedded voltage-current behavior.

A["Dead Schematic<br/>(Pencil & Paper Symbols)"] --> B["Single Node Scope<br/>(One Voltage Over Time)"] B --> C["Coordinated Voltage Traces<br/>(Interactive Scrubbing & Overlays)"] C --> D["Embedded Behavior Blocks<br/>(Live Voltage & Component Currents)"] ```

Victor spreads the schematic components apart, replacing static wires with synchronized, real-time voltage waveforms across every junction. Scrubbing over any trace casts a comparative shadow overlay across all other plots, and tweaking a parameter—like dialing a resistor up or down—instantly recalculates and renders the ripple effect through the entire network. Taking the concept further, Victor notes that voltage represents only half of an electronic system's behavior; the other half is current. He transforms the circuit elements themselves: instead of dead, paper-era schematic squiggles for resistors and capacitors, each component becomes an active blue block displaying the real-time current flowing through it, marked with a small identifying badge. The representation retains all classic topological connectivity, but trades inert symbols for live behavior. As Victor observes: “The difference is now instead of just being made out of these squiggly symbols that were designed for pencil and paper now it's made out of live data where you can see what the system's doing.”

- Traditional schematics conceal internal dynamics, forcing engineers to simulate states mentally. - Victor's tool displays coordinated waveforms at every node, complete with scrubbable timelines and comparative cursor shadows. - Static resistor and capacitor symbols are replaced with active behavioral blocks rendering live current waveforms. - Adjusting component values immediately propagates behavioral changes throughout every voltage and current visualization.

---

[08:09](https://www.youtube.com/watch?v=oUaOucZRlmE&t=489s) Unthinkable Thoughts and Cognitive Prosthetics

Zooming out to theoretical foundations, Victor frames his design philosophy through the writings of mathematician and Bell Labs computer pioneer Richard Hamming. In his famous essay, *The Unreasonable Effectiveness of Mathematics*, Hamming reflected on the biological constraints of human perception and cognition:

> “Just as there are odors that dogs can smell and we cannot, as well as sounds that dogs can hear and we cannot, so too there are wavelengths of light we cannot see and flavors we cannot taste. Why then, given our brains wired the way they are, does the remark ‘Perhaps there are thoughts we can't think’ surprise you? Evolution, so far, may have blocked us from being able to think in some directions; there could be unthinkable thoughts.”

Victor praises Hamming's brilliance, but points out a glaring blind spot in his fatalistic conclusion. While humans lack the biological organs to naturally perceive ultraviolet light, infrared radiation, or ultrasonic audio, civilization does not simply shrug and accept those limitations. Instead, people engineer scientific instruments—such as infrared sensors, radio receivers, and oscilloscopes—that translate phenomena occurring outside natural perceptual ranges into sensory inputs the human body can interpret. Victor suggests the exact same strategy applies to cognition: rather than accepting complex systems as fundamentally “unthinkable,” we can build cognitive tools that map previously inaccessible systemic behaviors directly into human perceptual channels.

- Richard Hamming proposed that human evolutionary wiring creates inherent cognitive blind spots, leading to “unthinkable thoughts.” - Victor argues that humanity has always overcome sensory limitations by inventing instruments that adapt imperceptible phenomena to human senses. - The true objective of new computational media is to act as an equivalent cognitive prosthesis, transforming abstract, unthinkable systems into visible, manipulable thinking tools.

[09:35](https://www.youtube.com/watch?v=oUaOucZRlmE&t=575s) Adapting Unthinkable Thoughts: Writing and Mathematical Notation

Humans are biologically constrained by their evolutionary sensory apparatus: people cannot hear ultrasound, nor can they directly see microscopic cellular machinery or distant galaxies. Yet humanity bypasses these physical limitations by constructing oscilloscopes, microscopes, and telescopes—instruments that translate invisible physical phenomena into signals that can be perceived with ordinary human eyes. Responding to Richard Hamming’s assertion that there may exist concepts that are fundamentally unthinkable to human minds, Bret Victor argues that tools can perform the exact same adaptation for cognition. By engineering external representations that align with the architecture of the human mind, we can render previously unthinkable thoughts fully comprehensible.

```mermaid flowchart TD accTitle: Tool Mediation for Human Perception and Cognition accDescr: Diagram contrasting sensory tools that adapt physical phenomena with cognitive representations that adapt unthinkable thoughts to the mind.

subgraph PhysicalWorld ["Sensory Adaptation"] P1["Physical Phenomena<br/>(Ultrasound, Cells, Galaxies)"] T1["Physical Tools<br/>(Oscilloscopes, Microscopes, Telescopes)"] S1["Human Senses<br/>('Plain Old Monkey Eyes')"] P1 --> T1 T1 --> S1 end

subgraph CognitiveWorld ["Cognitive Adaptation"] C1["Unthinkable Concepts<br/>(Complex Systems, Dynamic Equations)"] T2["Cognitive Media<br/>(Writing, Math Notation, Interactive UI)"] M1["Human Mind<br/>(Visual, Interactive, Symbolic Channels)"] C1 --> T2 T2 --> M1 end ```

The history of intellectual progress is marked by representational leaps. The most significant cognitive tool in human history was the invention of writing. Before literacy, human thought and speech were ephemeral, vanishing the moment they were uttered. Writing stabilized thought into an external, visible artifact that could be scrutinized, manipulated, and systematically refined—an advance widely viewed as the foundation of rational deliberation. As media theorist Marshall McLuhan argued, introducing a medium alters the cognitive habits of an entire culture: a literate person thinks differently even when not actively holding a pen.

Centuries later, mathematical notation triggered a comparable revolution. Around 900 AD, the mathematician Muhammad ibn Musa al-Khwarizmi described quadratic relationships purely through narrative prose recipes (e.g., asking what square combined with ten of its roots yields thirty-nine, followed by verbal steps to divide, multiply, and add). It took roughly eight hundred years to compress those cumbersome rhetorical instructions into symbolic notation ($x^2 + 10x = 39$). This concise visual syntax exposed deep structural symmetries that remained invisible in narrative prose, allowing mathematicians to manipulate equations algebraically and generalize variables beyond numbers into velocities, matrices, or elements of abstract algebraic groups.

- “So when Hamming says there could be unthinkable thoughts, we have to take that as: yes, but we build tools that adapt these unthinkable thoughts to the way that our minds work and allow us to think these thoughts that were previously unthinkable.” — Bret Victor - “I think it's really interesting that the birth of modern mathematics is considered to be not any particular mathematical concept, but a user interface.” — Bret Victor

---

[12:50](https://www.youtube.com/watch?v=oUaOucZRlmE&t=770s) Bruner’s Three Modes of Thinking and Cognitive Channel Switching

Just as designing an effective optical instrument requires understanding human visual perception, designing cognitive tools requires a clear model of human thought. Victor adopts the cognitive framework proposed by Jerome Bruner (synthesized from Jean Piaget), which categorizes human cognition into three distinct mentalities: 1. **Enactive (Interactive):** Thinking by doing, manipulating physical objects, physical performance, and spatial embodiment. 2. **Iconic (Visual):** Thinking by seeing, inspecting parallel arrangements, recognizing shapes, and drawing spatial analogies. 3. **Symbolic:** Thinking through language, formal symbols, and sequential, step-by-step logical deduction.

```mermaid flowchart LR accTitle: Bruner's Three Cognitive Channels accDescr: Three interconnected modes of thinking identified by Jerome Bruner: Interactive, Visual, and Symbolic.

I["Interactive (Enactive)<br/>• Physical manipulation<br/>• Thinking by doing<br/>• Embodied spatial action"] V["Visual (Iconic)<br/>• Parallel comparison<br/>• Pattern and shape recognition<br/>• Spatial analogies"] S["Symbolic<br/>• Sequential logic<br/>• Language and formulas<br/>• Step-by-step deduction"]

I <--> V V <--> S S <--> I ```

Major conceptual breakthroughs often occur when thinkers shift an intractable problem from the symbolic domain into the interactive or visual channels. A prime historical example of shifting into the interactive channel was the discovery of the molecular structure of DNA by James Watson and Francis Crick. Despite possessing Rosalind Franklin’s X-ray crystallography data and chemical formulas, they could not deduce the double helix purely through symbolic analysis. Instead, they retreated to the machine shop, fabricated mechanical parts out of brass and wire, and manually fitted pieces together in three dimensions. Though peers mocked them for playing with toys, physically manipulating the models enabled them to solve a structure that had eluded purely abstract contemplation.

A parallel shift into the visual channel took place in 1786 when political economist William Playfair authored a treatise on European commercial trade balances. Rather than forcing readers to parse dense pages of numerical tables tallying exports and imports between nations, Playfair conceived what he described as a "map of numbers." By plotting data along coordinates, he published the world's first statistical data graphics, establishing the foundation of modern data visualization by transforming abstract symbolic columns into immediate visual comparisons.

- “The structure of DNA was unthinkable—like, literally nobody could think of it; they were able to think this thought by moving it from the symbolic channel to the interactive channel where they could think with their hands.” — Bret Victor

---

[15:32](https://www.youtube.com/watch?v=oUaOucZRlmE&t=932s) Firing on All Three Cylinders: Multi-Modal Interfaces

Traditional technical media force practitioners to operate almost exclusively in the symbolic channel. In a standard electronics textbook or schematic editor, understanding an analog circuit requires an engineer to perform a grueling mental simulation: remembering the governing symbolic equations for a resistor or capacitor, tracking state changes step by step, and holding the sequential voltages in working memory.

Victor’s interactive circuit environment rebalances this cognitive load by activating all three of Bruner’s mental channels at once: - **Symbolic retention:** The structural diagram retains circuit symbols so the schematic remains recognizable. - **Visual augmentation:** The behavioral output is rendered visually through real-time waveforms displayed across the entire circuit in parallel. Users recognize patterns, compare phase shifts, and inspect wave shapes instantly without mental simulation. - **Interactive tactile loop:** Designers directly scrub and tweak component values, observing live behavioral changes as they drag sliders or adjust parameters.

This creates a tight feedback loop where users formulate a hypothesis, manipulate a control, and watch the visual system respond in real time. Rather than relying on static formulas, the medium allows human spatial intuition, visual pattern processing, and symbolic logic to reinforce one another simultaneously.

- “We're kind of firing on all three cylinders here: instead of this just being a big pile of symbols, we've got the symbolic, we've got the visual, and we've got the interactive, and they're all kind of working together and reinforcing each other.” — Bret Victor

---

[16:43](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1003s) Multiple Simultaneous Representations and Developing System Intuition

To show that interactive thinking media can scale beyond simple circuit diagrams, Victor presents a design environment for a digital filter in signal processing. Dynamic systems are typically defined by differential or difference equations whose operational reality is difficult to grasp from mathematical notation alone. In this interface, the filter is governed by two core parameters: the cutoff frequency and the quality factor ($Q$). Rather than typing numerical constants into code or static formulas, the user manipulates a single 2D control point, dragging horizontally to modulate the cutoff frequency and vertically to tune $Q$.

```mermaid flowchart TD accTitle: Coordinated Dynamic Perspectives in a Digital Filter Tool accDescr: Diagram showing how a single 2D control knob dynamically updates five simultaneous system representations.

Knob["2D Control Point<br/>(Horizontal: Cutoff Frequency | Vertical: Quality Factor Q)"]

subgraph Views ["Five Synchronized Behavioral Views"] V1["Concrete Algebraic Equations<br/>(Abstract variables like Kf become live numbers)"] V2["Time-Domain Step Response<br/>(Transient oscillations and damping)"] V3["z-Plane Pole-Zero Constellation<br/>(System stability and resonance)"] V4["Fourier Transform Spectrum<br/>(Frequency response peaks and roll-off)"] V5["Dynamic Transfer Function Graph<br/>(Direct amplitude/frequency curve)"] end

Knob ==>|"Real-time manipulation"| V1 Knob ==>|"Real-time manipulation"| V2 Knob ==>|"Real-time manipulation"| V3 Knob ==>|"Real-time manipulation"| V4 Knob ==>|"Real-time manipulation"| V5 ```

Static equations obscure magnitude; for example, an abstract gain coefficient like $k_f$ gives the reader no hint whether its practical value is near zero, one, one hundred, or negative. In Victor’s dynamic interface, interacting with the system replaces abstract variables with live, concrete numbers and updates intermediate mathematical expressions on the fly.

As the control point is dragged, the system updates five distinct analytical perspectives in real time: 1. **Concrete equations:** Equations with live numerical coefficients and expression values. 2. **Step response:** A time-domain plot showing the system’s physical transient reaction and settling time. 3. **Complex $z$-plane:** The pole-zero layout mapping frequency domain characteristics and stability. 4. **Fourier transform:** The frequency response spectrum illustrating harmonic attenuation. 5. **Interactive parameter response curve:** The primary transfer function showing bandwidth and resonance.

By seeing these five representations react and "dance together" in direct response to their touch, the user observes how shifting poles in the $z$-plane directly induces time-domain ringing and sharpens the spectral peak in the Fourier transform. This synchronized multi-perspective feedback replaces tedious, page-long manual algebraic derivations with genuine physical intuition, allowing the designer to feel how the system behaves and effortlessly steer it toward a target response.

- “These are five different ways of looking at the behavior of the system, and as I'm interacting, we're seeing all five of them responding at once; we're seeing these five different perspectives on the system, each with its own insights, and we're seeing how they all dance together as I change these parameters.” — Bret Victor - “You've seen the system from so many different angles that you kind of—you can feel your way around it. This is a very different way of thinking than traditional analytic, 'you write a whole bunch of pages of grungy equations and come out with the answer' way of thinking.” — Bret Victor

[19:19](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1159s) Interacting with Behavior: Difference Equations and Searching the Behavior Space

Bret Victor transitions from simply looking at the behavior of a system to actively manipulating and working with it directly. Previously, he explains, interactions were confined to altering system structure and parameters while passively observing output plots. To demonstrate working directly on behavior, he pulls up an interactive environment for exploring difference equations. He starts with a single variable, $A$, initialized as a constant, which produces a flat-line plot. By modifying the equation so that a small increment is subtracted on each time step, the output plot becomes a downward ramp whose slope shifts as the constant is adjusted. When he instead subtracts a quantity linked to a second variable $B$, while simultaneously adding $A$ into $B$ at each step, the two coupled variables oscillate into a sine wave. He adds further operations to demonstrate transformations: defining a variable $C$ that emits $1$ when $A$ is positive and $-1$ when negative produces a square wave; integrating that square wave yields a triangle wave.

```mermaid flowchart LR accTitle: Transformation of coupled difference equations into waveform families accDescr: Pipeline showing coupled difference equations generating a sine wave, transforming to a square wave, and integrating into a triangle wave. subgraph Dynamics["Coupled System"] A["Variable A: subtract B"] B["Variable B: add A"] A <--> B end subgraph Waves["Waveform Transformations"] Sine["Sine Wave"] Square["Square Wave (Sign of A)"] Triangle["Triangle Wave (Integral)"] end Dynamics --> Sine Sine --> Square Square --> Triangle ```

Rather than confining user agency to tweaking the code or parameters on the left, Victor demonstrates interacting with the behavioral plot on the right. To find the period of the sine wave, he clicks and drags over a single cycle, instantly measuring its width at roughly 68 samples. The interface computes live reductions over the selected range, showing a mean of zero, min, max, or user-defined metrics like root-mean-square. When changing the underlying equation coefficient causes the wave period to drift out of sync with a manual selection, Victor introduces an integrated search bar instead of forcing repetitive manual re-selection. A user can type search predicates such as finding all intervals where $A < 0$, where $A < B$, or where $A[n+1] > A[n]$ (locating all rising slopes). As Victor emphasizes: “So what I'm doing here is normally called solving—called solving an equation, solving a system—but here it's treated as searching, which is a very different way of thinking about it.”

- Dragging across behavioral plots surfaces statistical reductions (mean, min, max, RMS) over arbitrary sample intervals. - The behavioral search query treats mathematical equation-solving as an interactive filter over time-series data. - Selecting across consecutive rising-edge zero crossings locks the measurement to a full cycle (e.g., 82 samples), updating dynamically as parameters vary.

---

[23:03](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1383s) Abstracting Over Families of Systems

Victor argues that merely observing a changing number for wave period is insufficient; one needs to understand the relationship between parameter changes and behavioral outcomes. To explore this, he draws a visual connection line from the equation's coefficient directly to the measured sample width. The system automatically generates a scatter/line plot graphing the coefficient on one axis against the period on the other. Victor points out the conceptual leap: each individual point on this new plot corresponds to a specific parameter value and its resulting system behavior, meaning the plot as an aggregate does not describe a single system, but rather an entire family of systems abstracted over that parameter.

Observing that the resulting curve resembles a reciprocal $1/x$ function, Victor notes that one over the period represents frequency. He creates a new variable dividing an assumed sample rate of 48 kHz by the period $N$. Plotting the system's coefficient against this new frequency variable reveals an orderly, linear relationship. Victor reiterates the core design requirements for tools meant to support understanding dynamic behavior: thinkers must be able to view behaviors across all variables at once, interact with behaviors directly through measuring, reducing, and transforming them, search the behavior space, and abstract across entire families of systems.

- Drawing a connection between a parameter and a measured feature plots one against the other automatically. - “Every point on this plot corresponds to a particular system, every point on this plot corresponds to a particular set of coefficients here, which means that the plot as a whole is not about any particular system, but an entire family of systems.” - Reciprocal transformations (e.g., calculating frequency from period using a 48 kHz clock) allow non-linear parameter spaces to be linearized and intuitively inspected.

---

[24:51](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1491s) Linked Representations in Nile: Visualizing Pipeline Execution

Turning to programming systems, Victor demonstrates how multiple representations can be linked together interactively. He introduces a 2D vector graphics engine implemented by Dan Amelang, a researcher working with Alan Kay. While standard production vector graphic engines such as Quartz or Cairo require hundreds of thousands or millions of lines of code, Amelang's engine achieves equivalent functionality in roughly 500 lines of code. This radical concision is made possible by Nile, a domain-specific stream-processing language designed by Amelang to express vector rendering operations with extreme compactness. However, Victor notes a severe trade-off: despite the elegance and beauty of the algorithms, “you can read the code and have no idea what's going on because you can't see the behavior of the system.”

```mermaid flowchart TD accTitle: Data pipeline flow and linked inspection in Nile accDescr: Diagram tracing input points through Nile pipeline stages down to rendered pixels, with bidirectional hover inspection. subgraph Ingest["Input Stage"] Pts["5 Input Points (1st/last duplicated)"] end subgraph Pipeline["Nile Pipeline Stages"] Poly["make_polygon"] Bez["Bézier Generation"] Rast["Rasterize & Texture"] end subgraph Output["Rendered Result"] Pix["Output Pixels / Bar Charts"] end Ingest --> Poly Poly --> Bez Bez --> Rast Rast --> Pix

Hover["Hover Inspection"] -.->|"Traces origin backward"| Ingest Hover -.->|"Traces impact forward"| Pix ```

To solve this, Victor collaborated with Amelang to build an exploratory programming environment for Nile. Nile functions like a Unix pipeline: data streams in, a process executes transformations, and the output feeds the subsequent stage. In a toy polygon program, five input points are fed into a `make_polygon` process that yields four Bézier curves, which then pass down successive pipeline steps. Because Nile functions are so compact, the environment places each process's actual source code alongside its visual state like an explanatory caption. Hovering over an input point immediately highlights all downstream Béziers and intermediate data elements in black, showing exactly how that specific datum is transformed, rounded, or split. Hovering over intermediate data works bidirectionally, displaying both where that piece of data originated and where it goes.

- Dan Amelang's Nile graphics engine implements full 2D vector rendering in around 500 lines of code, compared to millions in Quartz or Cairo. - The pipeline architecture processes streams stage-by-stage, pairing each stage's visual intermediate output with its concise Nile source code. - Bidirectional linked inspection reveals the complete history of any data element, tracing both its past ancestry and future trajectory through the pipeline. - In production pipelines (such as Nile's full rasterizer and texturing engine), the environment automatically selects appropriate visual forms for data types, displaying continuous real-number streams as interactive bar charts rather than raw text.

---

[28:25](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1705s) The Requirement for Creating Visualizations Visually

Victor introduces the final section of his talk by raising a fundamental methodological challenge: if understanding dynamic systems requires rich, interconnected representations, how do thinkers actually build them? He argues that because visualizations are inherently visual and depend on human visual thinking (the brain's spatial and perceptual channel), forcing authors to create them through symbolic, text-only code creates a destructive cognitive barrier. A medium designed for thinking must allow its external representations to be constructed visually.

- “The thing about visualizations is that they're visual. We understand them visually that, you know, that second channel, the visual thinking channel, and so I think it's essential that they be created in the same way, created by [direct visual interaction].”

[28:53](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1733s) Direct Manipulation and the Lost Art of Drawing Data

Bret Victor reflects on the history of visual thought, pointing out that creating pictures directly by hand—what we simply call drawing—dates back to cave paintings. Fifty years ago, an engineer or scientist had a pad of graph paper and a pocket full of pens, plotting incoming experimental data by hand. If two variables seemed related, you sketched a scatter plot; if the sequence mattered, you drew a line connecting the dots; if valid ranges mattered, you drew error regions; and if sample coverage had gaps, you whipped out a highlighter to color vertical columns and identify blanks. This approach had immense immediacy: “and so there's this wonderful expressiveness and directness in drawing that when you want to see something you're like I want to see marginals I need to see my marginals you just go right and there are your marginals right”.

The severe limitation of paper was that everything was an unscalable, one-off artifact. When a new dataset came in, the old sketch had to be discarded and redrawn from scratch. Modern digital illustration tools like Adobe Illustrator suffer from the identical defect: they produce static, one-off pictures. Consequently, practitioners fled drawing altogether in favor of programming languages like Processing, trapping themselves in an indirect, symbolic, linguistic mode of image-making instead of a visual one.

```mermaid flowchart LR accTitle: Evolution of Data Graphics accDescr: Diagram contrasting paper drawing, static digital graphics, code generation, and Bret Victor's dynamic drawing.

subgraph Manual["Direct but Static"] Paper["Graph paper & pens<br/>(Immediate, one-off)"] Illustrator["Vector tools (Illustrator)<br/>(Direct manipulation, one-off)"] end

subgraph Symbolic["Indirect & Dynamic"] Code["Code / Processing<br/>(Linguistic, flexible, non-visual)"] end

subgraph Proposed["Direct & Dynamic"] DynamicDraw["Dynamic Drawing Tool<br/>(Direct canvas manipulation + live data)"] end

Paper --> Illustrator Illustrator -->|"frustration with static one-offs"| Code Code -.->|"reclaim directness"| DynamicDraw ```

[31:17](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1877s) Demo: A Drawing Tool for Dynamic, Data-Driven Pictures

To bridge this divide, Victor demonstrates an experimental vector drawing tool that combines Illustrator-style direct manipulation with data-driven behavior. As on an ordinary canvas, the user draws shapes, lines, scales them, and rotates them; however, the tool quietly records each graphical action as an explicit step. Those steps are then wired directly into a spreadsheet-like data environment. When data values shift, the recorded geometric transforms re-execute dynamically.

Victor reconstructs his earlier graph-paper sketch entirely on this live canvas: - He sweeps out a bounding rectangle across the canvas, scales its width and height to match two data variables, converts it into a guide, and drops a point at the corner. - He loops that operation over all data points to form a scatter plot. - With the line tool, he links the previous sample point to the next, tracing the sequential path, widens the stroke, and turns it orange. - To display sample validity ranges, he draws horizontal bars across the canvas scaled by a width parameter and adorns them with end wings. - To reveal coverage gaps, he draws vertical rectangles extending from canvas top to canvas bottom, rendering them in transparent orange to highlight overlap and holes. - Noticing that the direction of the path remains ambiguous, he freehands an arrowhead, rotates it to match the line segment's actual angle, and repeats it along the sequence. - He hides the original scatter points so they no longer clutter the view.

Because every graphic primitive is bound to the underlying spreadsheet, the picture updates instantly when a new dataset is dropped in. Victor demonstrates this by dragging entirely new datasets onto the canvas and by scrubbing an individual number with the cursor, causing the graphic to smoothly deform in real time. As Victor emphasizes, the goal is: “direct manipulation of the picture itself thinking geometrically instead of thinking algebraically thinking visually instead of thinking in language”.

[36:04](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2164s) Summary: Seeing and Interacting with System Behavior

Victor synthesizes the core principles of the talk, stating that an effective medium for understanding systems must let practitioners observe and manipulate behavior rather than merely editing structural code: - **Immediate behavior over time:** Seeing whole states across every variable simultaneously to enable visual comparison and pattern recognition. - **Immediate response to adjustment:** Tweaking parameters and observing behavioral changes instantaneously to establish mental cause-and-effect models. - **Multiple linked representations:** Viewing behavior through different simultaneous lenses (like time-domain versus frequency-domain) where selecting an element in one view highlights it in all others. - **Interacting directly with behavior:** Measuring, transforming, and querying the dynamic output itself, rather than working purely on static structural descriptions.

Victor underscores the pathology of modern software development: “this idea of being able to interact with the behavior of the system is super important we're normally over here interacting with the structure of the system and that becomes the system so for example when you're programming you're working in code you're thinking about code you're you're interacting with the code you're staring at the code all the time the code becomes the program but code doesn't matter what matters is what the program is doing”. To transcend this, representations must also abstract across families of systems and be authorable via dynamic drawing.

[38:16](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2296s) Escaping the Paper Legacy

Victor cautions that all the prototypes he presented are mere hints that nibble around the corners of a massive unsolved problem: discovering a genuine computational medium for thinking about systems. Even when people operate high-powered modern computers, their thought patterns remain shackled to paper-and-pencil traditions. Programming languages were conceived as linear written text meant for paper.

Pointing to a slide containing Edsger Dijkstra's handwritten notes, Victor notes that Dijkstra mathematically reasoned about everything on paper and that “the idea of visually and interactively exploring the behavior of system wasn't even on his radar he probably would have found it repugnant and that's the Legacy that we've inherited”. Victor concludes with an open invitation to the audience, stating that we have a rare historical chance to reinvent how humanity understands systems: “so I think we have this opportunity to reinvent how we think about systems to create this new medium and I don't know what that Medium is but if you like to help find it let me know thanks”.

## Notable quotes > [09:35](https://www.youtube.com/watch?v=oUaOucZRlmE&t=575s) I think it's really interesting that the birth of modern mathematics is considered to be not any particular mathematical concept, but a user interface. — Bret Victor

> [09:35](https://www.youtube.com/watch?v=oUaOucZRlmE&t=575s) So when Hamming says there could be unthinkable thoughts, we have to take that as: yes, but we build tools that adapt these unthinkable thoughts to the way that our minds work and allow us to think these thoughts that were previously unthinkable. — Bret Victor

## Mentioned Bret Victor, MIT Media Lab, Nature, Richard Hamming, Bell Labs, Marshall McLuhan, Muhammad ibn Musa al-Khwarizmi, Jerome Bruner, Jean Piaget, James Watson, Francis Crick, Rosalind Franklin, William Playfair, Dan Amelang, Alan Kay, Nile, Quartz, Cairo, Adobe Illustrator, Processing, Edsger Dijkstra

## Video description For cool updated about the future of computing, follow me at https://twitter.com/iamvriad.

Presented at the MIT Media Lab on April 4, 2013.

Talk outline: http://worrydream.com/MediaForThinkingTheUnthinkable/

Personal preface: http://worrydream.com/MediaForThinkingTheUnthinkable/note.html

For more information about the demos -- 1. Scientific paper. http://worrydream.com/ScientificCommunicationAsSequentialArt/ 2. Circuit. http://vimeo.com/36579366 3. Digital filter. http://worrydream.com/ExplorableExplanations/ 4. Multitrack signal processing. (first time presented) 5. Nile viewer. http://github.com/damelang/nile 6. Drawing tool. http://vimeo.com/66085662

-----------------------------------------------------------

Bret Victor -- http://worrydream.com

[Source](https://www.youtube.com/watch?v=oUaOucZRlmE)

中文简报

Bret Victor 倡导以动态行为界面取代静态代码 现代计算仍受困于纸质时代的文本惯例,导致工程师无法洞察动态行为,因而需要能够直接调动视觉与身体认知的交互媒介。 Bret Victor 认为,人类对复杂系统的理解受到静态文本、公式和纸质图表等传统媒介的严重制约,这些媒介迫使思考者进行耗费心智的符号模拟。借鉴杰罗姆·布鲁纳(Jerome Bruner)的表征模式认知模型以及理查德·汉明(Richard Hamming)关于“无法思考的思想”的概念,Victor 展示了计算如何通过同时调动符号、视觉和交互通道来充当主动认知假体。通过包括实时电路网络、多视角数字滤波器、联动流水线代码检查器以及动态矢量绘图工具在内的交互原型,他展示了软件如何使隐藏的内部行为变得可见且可直接操作。演讲最后发出迫切呼吁,敦促人们超越源自纸张的编程范式,探索用于理解动态系统的真正计算媒介。 人类对系统的思考仍受困于纸笔的静态范式,导致现代计算机工具作为认知媒介的潜力未能得到充分利用。 (0:02) 新型计算媒介对理查德·汉明所谓固有“无法思考的思想”这一概念提出挑战,它能像显微镜或数学符号一样充当认知假体,将复杂的动态特性转化为人类感官和心智通道可处理的形式。 (8:09) 高效的思维环境可同时整合杰罗姆·布鲁纳的三种认知模式:符号逻辑、视觉模式识别和交互式触觉操作。 (12:50) 理解系统需要直接与动态行为进行交互——在整个系统族中测量、搜索和参数化输出空间——而不仅仅是操作呆板的结构代码。 (19:19)

Reading summary

Bret Victor argues that human comprehension of complex systems is severely constrained by paper-era representations, asserting that computing should function as an interactive cognitive prosthesis that converts abstract dynamics into directly manipulable visual and physical forms. Overcoming Cognitive Limits Through Representational Tools (8:09) Mathematician Richard Hamming once posited that human evolutionary wiring creates inherent cognitive blind spots, resulting in "unthinkable thoughts." Victor challenges this fatalistic conclusion, arguing that just as microscopes, telescopes, and oscilloscopes translate imperceptible physical wavelengths into signals visible to human eyes, new computational media can adapt abstract systemic behaviors to human cognitive capacities. Historical advances support this view: the invention of writing stabilized ephemeral speech into inspectable artifacts, and modern mathematical notation condensed narrative prose recipes into concise visual structures that exposed structural symmetries and enabled symbolic manipulation. Victor grounds his design philosophy in Jerome Bruner's cognitive framework, which categorizes thinking into three modes: enactive (physical manipulation), iconic (visual pattern recognition), and symbolic (sequential logic). While traditional technical media force thinkers almost exclusively into the symbolic channel, major breakthroughs often occur by shifting problems into other modalities—such as James Watson and Francis Crick using physical wire models to discover the structure of DNA, or William Playfair inventing statistical data graphics to replace tables of numbers. Victor argues that computer interfaces must fire on all three cylinders simultaneously, combining symbolic diagrams with live visual waveforms and interactive controls. Replacing Static Symbols with Coordinated Dynamic Perspectives (5:10) Conventional technical media force thinkers to expend cognitive effort mentally simulating system states. In an influential Nature paper on network science, readers must decode dense algebraic notation to infer algorithmic behaviors. Victor's redesign externalizes this process by illustrating discrete state changes step by step alongside explanatory text, displaying network rewiring and scaling trends visually. He applies this same principle to electrical engineering schematics: replacing inert line drawings and symbolic squiggles with synchronized, real-time voltage and current waveforms across all nodes. Adjusting a component propagates live behavioral changes throughout the entire network, eliminating the need to isolate single probes or simulate dynamics in working memory. Scaling this concept to signal processing, Victor demonstrates a digital filter tool governed by cutoff frequency and quality factor parameters. Instead of manually deriving equations, a designer manipulates a 2D control point that simultaneously updates five synchronized analytical views in real time: concrete equations with live numerical coefficients, time-domain step response, complex z-plane poles and zeros, Fourier transform spectra, and dynamic parameter response curves. Similarly, in Dan Amelang's Nile vector graphics engine, linked bidirectional inspection highlights data elements across pipeline stages, allowing engineers to trace the history and downstream effects of continuous data streams rather than parsing obscure code. Direct Behavioral Manipulation and Abstracting System Families (19:19) Victor argues that software tools must move beyond merely adjusting input parameters to observe passive output plots; users must be able to interact directly with system behavior. Using an environment for coupled difference equations generating sinusoidal, square, and triangle waves, he demonstrates selecting dynamic waveforms to compute instantaneous statistical reductions like mean, min, max, and RMS. Rather than re-solving equations analytically, the interface introduces a search query bar where conditions such as rising slopes or zero crossings treat mathematical equation-solving as interactive temporal filtering. Connecting dynamic measurements directly back to parameter inputs allows thinkers to abstract across whole collections of behaviors. By drawing a line from an equation coefficient to a measured cycle width, the system generates a plot where every individual point represents a discrete system configuration, thereby portraying an entire family of systems. Applying reciprocal transformations—such as converting period measurements against a 48 kHz clock into frequency—linearizes complex behavior spaces and gives practitioners direct mathematical intuition without manual derivations. Authoring Dynamic Visualizations Through Direct Manipulation (28:53) Because visualizations rely fundamentally on human spatial perception, Victor maintains that creating them solely through abstract, symbolic code like Processing introduces an unnecessary cognitive barrier. While historical graph-paper drafting offered directness and immediacy—allowing scientists to freely draw scatter plots, connecting lines, error bounds, and highlighter margins—paper produced static, unscalable one-off artifacts that modern illustration tools like Adobe Illustrator replicate. To restore tactile immediacy without sacrificing data flexibility, Victor presents an experimental vector drawing tool that records graphical canvas actions—such as drawing bounding boxes, scaling coordinates, tracing sequential paths, and rendering error bars—and binds them directly to underlying spreadsheet data. As values change, or as entirely new datasets are dragged onto the canvas, the recorded geometric operations execute dynamically. This allows thinkers to author complex, data-driven system diagrams by directly manipulating shapes rather than writing symbolic code. Victor cautions that his working prototypes are merely preliminary hints aimed at escaping the paper-and-pencil traditions inherited from computer scientists like Edsger Dijkstra, whose work remained tethered to static written formulas. Discovering a genuine computational medium for reasoning about complex systems remains an open challenge.

精炼阅读摘要

Bret Victor 在麻省理工学院媒体实验室演讲中主张,人类当前的计算工具仍受限于纸笔范式的静态符号,社会需要建立能将系统动态行为直接转化为视觉与交互表征的新媒介,以此充当认知假体并突破思维盲区。 克服认知局限的外部表征演进 (8:09) Victor 针对 Richard Hamming 提出的“人类大脑可能因生理限制而无法思考某些思维”的观点提出修正。他指出,人类虽无法肉眼观察紫外线或超声波,却能通过示波器、显微镜等仪器将不可见物理现象转化为感官可感知的信号;同理,文字和数学符号等认知工具也是将抽象概念适配至人类思维架构的产物。例如,公元 900 年左右代数学家 Al-Khwarizmi 仅能用冗长文字叙述二次方程求解步骤,而历经约八百年演化出的现代符号语法(如 $x^2 + 10x = 39$)才让深层代数结构一览无余。 根据 Jerome Bruner 的认知理论,人类思维包含动作交互(Enactive)、图像视觉(Iconic)与符号语言(Symbolic)三种模式。历史上的重大突破往往依赖将抽象符号转移至交互或视觉通道,例如 Watson 和 Crick 借助黄铜与金属丝模型在三维物理操作中解开 DNA 双螺旋结构,William Playfair 于 1786 年创造“数字地图”确立统计图表雏形。然而,传统学术论文与电路图仍强迫思考者在符号通道进行高负荷的脑内状态模拟,Victor 认为新的计算媒介必须同时调动这三种认知模式协同工作。 动态呈现系统行为与多维视图联动 (2:24) 在重构学术论文与工程工具的演示中,Victor 展示了如何通过外化系统状态降低认知损耗。面对一篇充斥着复杂不等式(如 $n \gg k \gg \ln(n) \gg 1$)且初读极难理解的网络科学《Nature》论文,他将其改版为步骤式动态图示,在展示环形节点($n=12, k=4$)以概率 $p$ 逐步重连算法的同时,在正文旁直接绘制特征路径长度 $L$ 与集聚系数 $C$ 的缩放曲线,将作者脑内的多维模型直观传递给读者。 在电路与信号处理设计中,Victor 指出孤立观察单一节点电压不足以理解整体系统。他的原型工具将电阻、电容符号替换为显示实时电流的动态模块,并在所有节点同时渲染电压波形;在数字滤波器设计中,用户拖动一个控制截止频率与品质因数 $Q$ 的二维控制点,界面会即时同步联动更新具体方程系数、时域阶跃响应、复数 $z$ 平面极零点、傅里叶频谱及传递函数曲线这五种视角,使设计者无需在纸上手算长篇方程即可建立物理直觉。 直接操控行为与探索系统族 (19:19) Victor 主张思考工具不应局限于修改结构参数后被动查看输出,而必须支持直接在行为层面上进行测量、变换与搜索。在差分方程交互演示中,变量耦合产生的正弦波可通过在波形图上直接框选单周期来测量宽度(如 68 个采样点),并实时提取均值、极值与均方根等统计值。系统还将解方程的过程转化为针对时序数据的交互式搜索,例如通过输入谓词检索所有 $A < B$ 或上升沿区间。 通过将参数系数与测得的样本周期拉线关联,系统能自动生成参数对周期的关系图。Victor 强调,该散点图上的每一个点都对应着特定系数下的系统行为,整条曲线因而不再描述单一系统,而是抽象了整个“系统族”(Family of Systems)。在引入 48 kHz 采样率将周期转换为频率后,非线性曲线转为直观的线性关系,使研究者能够跨层级理解参数变化对行为特征的整体影响。 打通程序执行与数据驱动的视觉绘图 (24:51) 在软件工程领域,Victor 评价了 Dan Amelang 用 Nile 领域特定语言编写的高性能 2D 矢量图形引擎。尽管该引擎仅用约 500 行代码就实现了常规引擎需数十万甚至数百万行代码的功能,但其紧凑的流式算法仅凭纯代码文本极难理解。为此,Victor 与 Amelang 开发了交互式探索环境,将每个管道阶段的源代码与中间视觉形态并列,并支持双向悬停检查,使开发者能前后追溯任意数据点的生成与流向,连续流则自动呈现为交互式条形图。 针对“如何构建这些可视化图表”的难题,Victor 批评依赖纯文本代码编写视觉图形割裂了人类的视觉思维通道。他演示了一款将类似 Illustrator 的直接几何操作与数据表格绑定的绘图工具:用户通过画框、拉线、添加箭头标记直接绘制散点图、误差范围带与覆盖空隙矩形,这些绘图步骤会被底层实时记录,当切换或拖拽数据集数值时,图形几何结构会即时联动平滑重算,让创作者能够在不陷入抽象代数语法的情况下直接通过几何直觉操作数据。 Victor 总结道,当前软件开发过分关注静态代码结构而忽视程序实际运行的行为,行业仍深陷以 Edsger Dijkstra 纸笔推理为代表的历史遗产之中。他认为现有演示仅是触及问题边缘的原型尝试,并呼吁人们摆脱纸笔隐喻,共同探索一套能让系统行为可观察、可交互操纵的全新计算思维媒介。

Detailed notes — zh

## Background 本视频由 Colin McDonnell 于 2015 年 6 月 17 日发布在 YouTube 平台上。内容为 Bret Victor 于 2013 年 4 月 4 日在麻省理工学院媒体实验室(MIT Media Lab)发表的演讲,视频简介中提供了演讲大纲、个人前言以及演讲中涉及的科学论文、电路、数字滤波器、Nile 语言查看器和绘图工具等演示的详细链接。 ## TL;DR 演讲者 Bret Victor 指出,人类现有的系统思考工具仍深受传统“纸笔范式”的束缚,限制了对复杂动态系统的理解。他通过重构科学论文、实时电路设计、数字滤波器、Nile 语言管道以及数据驱动绘图等多个领域的创新交互原型,展示了如何将抽象的符号推演转化为直观的视觉与交互通道。Victor 提倡融合杰罗姆·布鲁纳的三重认知通道,构建一种能够实时呈现系统行为、联动多重表征并支持直接操纵的新型计算媒介,从而帮助人类跨越生物局限,去思考原本“不可思议”的系统规律。 ## Atmosphere & style 整个演讲散发着深邃的启发性与前瞻性,将宏大的哲学思辨与令人惊叹的实时交互演示完美融合。Bret Victor 的讲解冷静、条理清晰且极具批判性,他直言不讳地指出传统编程和纸笔思维的局限,却又用充满想象力的原型工具为观众描绘出未来的曙光。观看过程仿佛经历了一场认知洗礼,既有对技术现状的深刻反思,又洋溢着探索未知、重塑人类思维工具的激情与感召力。 ## Bulletin - [01:01](https://www.youtube.com/watch?v=oUaOucZRlmE&t=61s) 现代计算机环境并未真正解放人类心智,当下的编程与分析工具在本质上依然是传统纸笔媒介的电子化延续,严重限制了对动态复杂系统的理解。 - [08:09](https://www.youtube.com/watch?v=oUaOucZRlmE&t=489s) 人类认知需要外在工具作为认知义肢:正如显微镜扩展肉眼视觉,革命性的动态媒介能够将原本属于生物学局限上的“不可思议之思”转化为可感知的现实。 - [12:50](https://www.youtube.com/watch?v=oUaOucZRlmE&t=770s) 动态媒介的核心设计原则是将认知负载从单一低效的“符号通道”转移至“视觉通道”与动手操作的“交互通道”,通过行为多重视角的实时共振培养工程直觉。 - [31:17](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1877s) Bret Victor 展示了数据驱动的直接操纵绘图原型,弥合了一次性手工绘图与间接编程生成之间的鸿沟,倡导让“运行行为”而非“代码文本”成为系统设计的核心。 ## Key takeaways - [00:02](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2s) 科学与工程的核心都在于“理解系统”:科学从现实系统推演理论模型,工程从理论模型构建人造系统,二者都受限于所采用的表征媒介。 - [01:01](https://www.youtube.com/watch?v=oUaOucZRlmE&t=61s) 媒介即思考工具,人类对系统的理解边界完全由媒介提供的表征决定;当前的数字化工具多半只是静态纸笔范式的翻版。 - [02:24](https://www.youtube.com/watch?v=oUaOucZRlmE&t=144s) 传统学术论文依赖文字与静态公式,构成了极高损耗的通信瓶颈;动态媒介能直接映射作者脑中的心智图像,让连续变化与动态行为一目了然。 - [05:12](https://www.youtube.com/watch?v=oUaOucZRlmE&t=312s) 电路设计应从僵死的原理图符号演进为承载实时数据的动态图块,让思考者能同时审视全系统的电压波形与电流流动。 - [08:09](https://www.youtube.com/watch?v=oUaOucZRlmE&t=489s) 反思汉明关于“存在人类无法思考之思想”的悲观论断:人类的应对方式是制造工具,将超出感官与认知极限的事物适配到人脑机制中。 - [09:35](https://www.youtube.com/watch?v=oUaOucZRlmE&t=575s) 文字的诞生让思考本身得以被审视,现代数学记号的演进本质上是一次革命性的用户界面升级,极大地拓展了抽象推演的边界。 - [12:50](https://www.youtube.com/watch?v=oUaOucZRlmE&t=770s) 基于布鲁纳的心智模型,将思考模式从低速的符号通道(公式代码)切换到视觉通道(并行比对)与交互通道(动手操作),是实现认知突破的关键。 - [16:43](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1003s) 在数字滤波器设计中,通过单一交互控制柄联动时域、频域、Z 平面极点及数值公式等多重表征,能将枯燥的代数计算转化为具象的工程直觉。 - [19:19](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1159s) 在动态差分方程环境中,求解方程的过程被颠覆性地重塑为对波形特征的“交互式搜索”与动态度量。 - [22:06](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1326s) 通过将行为测量值直接与底层参数变量联动,思考者能够超越单一孤立系统的限制,直接在图表上抽象并洞察整个“系统家族”的演化规律。 - [25:01](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1501s) 在 Nile 2D 矢量图形管线中,紧凑的代码充当管道说明,系统自适应地将几何图元与数据流可视化,并支持双向数据足迹追踪。 - [28:53](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1733s) 传统手工绘图具备强大的直接操纵感,但受限于一次性复用能力;而现代代码绘图(如 Processing)虽具动态性,却退化为脱离视觉直觉的抽象符号思维。 - [31:17](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1877s) 将类似矢量绘图的直接操纵动作记录为参数化步骤并与数据环境绑定,即可在保持几何直觉的同时实现数据驱动的动态图画生成。 - [36:04](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2164s) 构建理解复杂系统的新媒介必须遵循五大原则:呈现行为、统揽全局、即时反馈、多重视角联动、直接与行为本身交互。 - [36:04](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2164s) 软件工程长期陷入了紧盯“代码文本”的误区;实际上代码并不重要,媒介应该聚焦于程序在运行时的行为作为。 - [38:16](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2296s) 现代计算机体系深受戴克斯特拉(Edsger W. Dijkstra)等纯符号逻辑与纸笔书写传统的影响,人类必须摆脱历史桎梏去探索真正的交互式思考媒介。 ## Detailed walkthrough ### [00:02](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2s) 理解系统:科学与工程的核心 演讲在麻省理工学院媒体实验室(MIT Media Lab)开场,Bret Victor 明确指出,既然身处媒体实验室,他就想谈谈媒体(Media)。但他要探讨的是一种非常特殊的媒体——“用于思考的媒体”(Media for thinking in),以及一种特殊的思考方式:“理解系统”(Understanding systems)。为了阐明何谓理解系统,他举了一个基础的例子:面对现实世界中的真实系统,比如环绕太阳运转的行星,如果想要弄清其中的机制,研究者会收集测量数据、寻找规律,并建立理论模型。这种从现实系统走向理论的思考路径被称为“科学”。 反过来,也可以沿着相反的方向思考:从抽象的理论出发,去构建属于自己的实体系统,比如制造一艘前往行星的航天器。这种从理论走向系统的思考路径则被称为“工程”。Bret Victor 指出,不论思考的方向是从系统到理论,还是从理论到系统,理解系统始终处于工作的绝对核心位置。科学与工程,以及这两者之间的一切领域,归根结底在很大程度上都依赖于对系统的透彻理解。 ```mermaid flowchart LR accTitle: Science versus Engineering in System Understanding accDescr: Science transitions from the physical system to theoretical models, whereas engineering transitions from theory to building systems. subgraph ScientificPath["科学路径 (Science)"] S1["现实系统<br>(如行星运转)"] -->|"测量数据 / 寻找规律"| S2["理论模型"] end subgraph EngineeringPath["工程路径 (Engineering)"] E1["理论概念"] -->|"设计与构建"| E2["人造系统<br>(如航天器)"] end ``` ### [01:01](https://www.youtube.com/watch?v=oUaOucZRlmE&t=61s) 媒介即思考工具与纸笔范式的桎梏 Bret Victor 强调媒介之所以至关重要,是因为媒介本身就是思考的工具。人类对系统采用何种表征(Representations),决定了人类如何去思考系统:表征不仅决定了我们能理解系统的什么,更决定了我们如何去理解它。如果人类想要获得理解复杂系统的全新强大方式,如果想要构建强有力的新系统,就必须拥有全新的表征形式,以及一个能够创造并操作这些表征的全新媒介。 然而残酷的现实是,当今人类处理系统的方式大多源自纸笔(Pencil and paper)媒介。即使人类如今坐在计算机面前工作,思维模式本质上依然被死死束缚在纸笔范式之中。Bret Victor 认为,现在存在着一个令人难以置信的契机,去彻底反思人类思考系统的方式。在接下来的演讲中,他打算展示跨越编程、电路设计、信号处理等不同领域的全新表征范例,以此提示未来的新媒介究竟可能是什么样。他安抚台下的听众,无需掌握这些专业领域的具体技术细节,因为“重要的唯有表征”(All that matters is the representations),在这些案例中展示的每一个思想,几乎都能直接迁移到任何其他领域。 - 人类思考系统的手段直接由媒介提供的表征决定:表征塑造理解的边界。 - 计算机并未真正解放思维:当前的大多数计算工具只是纸笔媒介的电子化延续。 - 演讲核心意图:借用不同技术领域的实验性界面,探索超越静态纸笔范式的新媒介原型。 ### [02:24](https://www.youtube.com/watch?v=oUaOucZRlmE&t=144s) 重新设计科学论文:让不可见的思维模型可视化 Bret Victor 挑选了一篇发表在《自然》(*Nature*)杂志上的经典网络理论(Network Theory)论文作为首个切入点。这篇论文开创了现代网络科学领域,具有极高的学术影响力。然而翻开它,映入眼帘的依然是传统学术出版的标准样貌:密密麻麻的文字、孤立的数字、偶尔穿插的图表与表格。随后,Bret Victor 读出了引言第二段中设定网络算法的一段话: > “The networks of interest to us have many vertices with sparse connections, but not so sparse that the graph is in danger of being disconnected. Specifically, we require that $n \gg k \gg \ln(n) \gg 1$, where $k \gg \ln(n)$ ensures that a random graph will be connected. In this regime, we find that $L$ goes as $\dots$ and $C$ goes as $\dots$” 读完这段充斥着层层不等式与数学缩写的段落后,Bret Victor 直言不讳地评价道:“这完全令人无法理解(incomprehensible)。”他强调这绝不是因为作者文笔糟糕,相反作者都是顶尖的撰写者。问题在于本质的通信瓶颈:作者脑海中拥有极其丰富具象的动态心智图像,但他们被迫将这幅心智图像进行极度有损的压缩(Lossy compression),以塞进低带宽的传输通道——即这一行行线性的符号与公式流之中。而在另一端的读者,必须吃力地试图在自己的脑中对这段文字进行解压并重建心智模型,这一过程往往痛苦且极易失败。 为了解决这个问题,Bret Victor 展示了他对这篇论文的重构方案。在重构的版面中,文字与动态图形紧密交织在一起。当论文描述“首先取一个包含 $n$ 个顶点的环形”时,旁边立即呈现出拥有 12 个顶点的环形图例;当提到“每个顶点与它最近的 $k$ 个邻居相连”时,画面直接展示 $k=4$ 时的连线状态;当提到“以概率 $p$ 随机重新连接该边”时,画面步进式地展示被选中的边如何被断开并重连,以及沿着环顺时针重复这一过程。当论文讨论特征路径长度 $L$ 和聚类系数 $C$ 在规则晶格中随 $n$ 线性增长、在随机网络中呈对数增长时,读者无需在脑内自行抽象重建数学曲线,图例直接呈现了其对应的动态行为。Bret Victor 概括这种方法的本质:“这其实是一个非常简单的诀窍,那就是去理解作者脑海中的画面,然后直接把它再现出来。” ```mermaid flowchart TD accTitle: Lossy Paper Transmission versus Direct Cognitive Mapping accDescr: Traditional text transmission is lossy, while interactive representations preserve mental models. subgraph TraditionalMethod["传统纸笔论文模式 (高损耗)"] A1["作者脑中的丰富系统图像"] -->|"极端压缩为文字/符号"| B1["低带宽通道: 符号流"] B1 -->|"读者吃力尝试解压缩"| C1["读者脑中模糊残缺的模型"] end subgraph RedesignMethod["Bret Victor 动态媒介模式 (高保真)"] A2["作者脑中的系统状态与动态过程"] -->|"直接视觉化映射"| B2["图文交织的连续态展示"] B2 -->|"直观感知并理解行为"| C2["读者即刻获得精准认知"] end ``` ### [05:12](https://www.youtube.com/watch?v=oUaOucZRlmE&t=312s) 重塑电路设计:从死板图纸到全系统行为的实时感知 随后,Bret Victor 转向了一个完全不同的领域:电子电路设计。在屏幕上,他正在画一个电路,并补齐了最后几笔连线。尽管从逻辑上讲电路已经完成并开始运行,但用户却什么都看不到。这与那篇科学论文面临着完全相同的困境:系统正在运行,但其动态行为对思考者而言是全然隐形的。在现实的实验室工作台上,工程师至少还能拿起示波器探针,逐个探测节点上的电压变化;因此在计算机软件中,至少也应当允许用户查看特定节点的实时波形。然而,Bret Victor 强调仅仅显示单一节点的波形远远不够理解整个系统,要彻底洞察系统,工程师必须同时掌握所有变量、所有节点的电位变化。 Bret Victor 随后将电路中的各个节点拉开,切换到了一个全新的表征模式:整个电路中所有节点的电压波形被直接并置在网格中,并随时间实时模拟。用户可以在时间轴上自由擦洗(Scrub)回放,将鼠标悬停在某个波形上时,该波形的阴影会实时投影叠加到其余所有图表上,以便进行精确对比;当调节某个可变电阻的阻值时,整个电路所有节点波形的改变瞬间响应并重绘。 但这依然不够,因为在电路物理学中,除了电压,还存在着电流。只有同时理解电压与电流,才能真正掌握系统行为。Bret Victor 进一步对表征进行了激进的重构:他将电路图中的电阻、电容等无源元件符号替换为流经该元件的实时电流波形图块。每个元件依然通过小徽标标明其身份(如电阻或电容),但它们不再是纸笔时代遗留下来的僵死原理图符号,而是直接演变为承载行为的动态图块。Bret Victor 拿着这种全新的电路视图总结道: > “The difference is now instead of just being made out of these squiggly symbols that were designed for pencil and paper, now it's made out of live data where you can see what the system's doing.” - 传统 EDA 原理图只是静态的结构蓝图,完全掩盖了系统的动态运行时状态。 - 新媒介设计一:在整个电路网格上并行展示全部节点的电压波形,并支持跨波形悬停阴影对比(Shadow overlay)。 - 新媒介设计二:用流经元件的电流曲线方块彻底取代传统的纸笔曲折符号,实现“元件即数据、结构即行为”。 ### [08:09](https://www.youtube.com/watch?v=oUaOucZRlmE&t=489s) 汉明之问与不可思议之思 在通过科学论文与电路设计这两个跨领域的原型展示了“呈现系统行为”这一核心手法后,Bret Victor 决定后退一步,从更高的抽象哲学层面来审视这项工作的深层意义。他借用了贝尔实验室(Bell Labs)传奇学者理查德·汉明(Richard Hamming)在其著名论文《数学无理的有效性》(*The Unreasonable Effectiveness of Mathematics*)中的一段深刻论述。汉明在文章中写道:正如狗能闻到人类闻不到的气味、听到人类听不到的声音,自然界中也存在人类肉眼不可见的光波和无法品尝的味道;既然我们的大脑受限于生物进化所塑造的固有布线方式,那么面对“或许存在着人类无法思考的想法”这一判断,我们为何还要感到吃惊呢?进化很可能阻碍了我们在某些方向上的思考能力,世界上完全可能存在着“不可思议之思”(Unthinkable thoughts)。 Bret Victor 指出,汉明是一位才华横溢的大师,对人类的思考机制有过深刻钻研。但在面对这一悲观的生物学局限命题时,汉明却意外地没有迈出那最关键、最显而易见的一步。面对那些人类耳朵听不到的声音和眼睛看不见的光线,人类最初究竟是如何获知它们存在的?答案绝非听天由命,而是制造工具:“我们制造工具,把这些超出我们感官范围的事物,适配到我们人类的身体与人类的感官上来。”由此,媒介的真正使命呼之欲出:为人类大脑打造外在的认知义肢,从而跨越生物进化的局限,去思考那些原本不可思议的想法。 ### [09:35](https://www.youtube.com/watch?v=oUaOucZRlmE&t=575s) 工具如何让我们思考“不可思议之物”:文字与数学记号 人类的生理感官极其有限:耳朵听不见超声波,肉眼看不到微观细胞与遥远星系。然而,一旦把麦克风连上示波器,就能用“寻常的灵长类双眼”看清超声波;制造出显微镜与望远镜,微观与宏观宇宙便尽收眼底。这些工具的本质,是让客观世界适配人类的身体与感官。针对理查德·汉明(Richard Hamming)提出的“可能存在人类不可思议之思想”的论断,应对策略不是坐以待毙,而是制造新的思维工具,将原本无法理解的事物适配到人类大脑的运作机制中。 人类历史上最伟大的认知适配工具莫过于“文字”。文字让思想实体化、可视化,使人类能够对“思考”本身进行再思考。在此之前,言语与思绪转瞬即逝;而文字的诞生将思维定格、供人解剖,这普遍被视作理性思维的起源。正如马歇尔·麦克卢汉(Marshall McLuhan)的核心论点所揭示:一种新媒介融入社会,必然会彻底重塑整个社会的思维模式。即便一个接受过读写训练的人在当下没有动笔,他的思维方式也早已被文字媒介永久改造。 另一个革命性的工具是“数学记号”。在公元 900 年左右,数学家阿尔·花剌子模(al-Khwarizmi)在求解一元二次方程时,只能用冗长繁琐的自然语言文字步骤记录:“何为正方形,当其加上十个根后总和为三十九?……取十的一半得五,五乘五得二十五……”直到大约 800 年后,现代代数符号体系才真正成型。写成紧凑的方程形式后,原本埋没在烹饪菜谱式纯文字叙述中的数学结构瞬间显露无遗。一旦概念变得直观可见,人们就能针对它进行推演、发明操作规则,甚至进一步抽象发问:如果 $x$ 不再是一个具体数字,而是速度、矩阵,或是抽象代数群中的一个元素呢?现代数学的诞生,其根本驱动力并非某个单一概念的顿悟,而是一次革命性的“用户界面”升级。 > “And I think it's really interesting that the birth of modern mathematics is considered to be not any particular mathematical concept, but a user interface.” —— Bret Victor - **感官延伸的类比**:超声波 $\rightarrow$ 示波器;细胞 $\rightarrow$ 显微镜;星系 $\rightarrow$ 望远镜;不可思议的思想 $\rightarrow$ 适配心智的思维媒介。 - **阿尔·花剌子模的算题**:解方程 $x^2 + 10x = 39$。古法用全文本推演,需要漫长的文字描述;现代符号仅用一行即可清晰表达其对称与代数结构。 - **媒介的核心价值**:将隐形、不可捉摸的概念转化为显形表征,拓展人类大脑的推理边界。 --- ### [12:50](https://www.youtube.com/watch?v=oUaOucZRlmE&t=770s) 思考的三大通道:操作、视觉与符号 制造显微镜需要了解光学和人眼构造;打造思考工具同样需要理解人类心智的运作机制。杰罗姆·布鲁纳(Jerome Bruner)借鉴让·皮亚杰(Jean Piaget)的理论,提出了人类心智的三种表征模式:动作表征(Enactive)、映象表征(Iconic)与符号表征(Symbolic)。映射到现代交互设计语境中,即为“交互通道(Interactive)”、“视觉通道(Visual)”与“符号通道(Symbolic)”: 1. **交互通道(思考源于行动)**:借助动手操作、物理空间交互以及躯体化体验(Embodied cognition)去探索和感知系统。 2. **视觉通道(思考源于看见)**:并行观察多种信息、辨别图像模式、进行横向对比与类比。 3. **符号通道(思考源于语言)**:依赖词汇、公式与逻辑链条进行严格的逐步推理。 历史上两次重大的科学跃迁完美诠释了“切换通道”的力量。其一是沃森(James Watson)与克里克(Francis Crick)发现 DNA 双螺旋结构。当时罗莎琳德·富兰克林(Rosalind Franklin)等人拥有 X 射线晶体衍射数据,化学界也掌握了成键规律,但分子结构依然如同谜团。沃森和克里克跑到机械车间,用黄铜片和铁丝加工零件,在办公室里用双手拼接物理模型。当时甚至有同事嘲讽他们“又在玩玩具”。但正是通过将问题从抽象的符号通道转移至用双手探索的交互通道,原本“不可思议”的 DNA 双螺旋结构才被拼装出来。其二是 1786 年威廉·普莱费尔(William Playfair)发明统计图表。在撰写欧洲贸易平衡专著时,普莱费尔面对的是密密麻麻的各国进出口数字表格。他突发奇想制作一张“数字的地图”,从而画出了人类历史上第一张数据折线图,将极度抽象的纯符号数据切换到了可以瞬间被宏观审视的视觉通道。 结合早先演示的动态电路工具,传统的电路图虽然有电阻和电容图形,但其运作机理全靠大脑在符号层面一步步苦力仿真。而在交互式电路工具中,系统结构依然保留了符号表征,行为模式被转移到了视觉通道(多路波形并行展示、形状特征一览无余),同时用户还能直接拨动旋钮、实时调整参数进入交互通道,在假设验证与因果探索中实现“三个汽缸全速协同运转”。 > “The structure of DNA was unthinkable—like, literally nobody could think of it. They were able to think this thought by moving it from the symbolic channel to the interactive channel where they could think with their hands.” —— Bret Victor ```mermaid flowchart TD accTitle: 三种认知通道与科学突破 accDescr: 展示布鲁纳的三种心智通道在现代界面中的映射及其历史应用案例 subgraph Channels["布鲁纳的三重心智通道 (现代 UI 映射)"] direction TB C1["交互通道 (Interactive / Enactive)<br/>动手操作、具身感知"] C2["视觉通道 (Visual / Iconic)<br/>并行观察、模式对比"] C3["符号通道 (Symbolic / Symbolic)<br/>符号语言、单步逻辑推理"] end subgraph Breakthroughs["跨通道思考的典型历史跃迁"] direction TB B1["DNA 结构发现 (1953)<br/>沃森 & 克里克制作金属模型<br/>从符号计算转入交互探索"] B2["统计图表诞生 (1786)<br/>威廉·普莱费尔绘制贸易地图<br/>从干燥数字表转入视觉洞察"] end C1 -.->|"驱动突破"| B1 C2 -.->|"驱动突破"| B2 ``` - **认知通道划分**: - **交互(Interactive)**:动手探究,空间知觉,假设尝试; - **视觉(Visual)**:并行对照,形状识别,空间隐喻; - **符号(Symbolic)**:代数公式,布尔逻辑,逐步推演。 - **多通道融合**:优秀的动态媒介不再强迫大脑死磕在低效的单步符号推演上,而是将行为转化为视觉流,并将参数转化为可即时互动的操纵杆。 --- ### [16:43](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1003s) 数字滤波器演示:在动态多重表征中培养工程直觉 为了进一步展示界面的威力,不仅要有多种通道,还必须对“同一种行为提供多重视角的互联表征”。以信号处理中的数字滤波器(Digital Filter)为例:传统教学与工程实践中充斥着复杂的差分方程和拉普拉斯/Z 变换代数式,工程师往往迷失在枯燥的数字推演里。 在演示的数字滤波器原型系统中,核心行为被拆解为五个同步联动的视角。系统包含截止频率(Cutoff)与品质因数(Q 值)两个核心参数,用户只需抓住一个交互控制柄(Knob),左右拖动调整截止频率,上下拖动调整 Q 值。在操作的瞬间,屏幕上原本抽象的代数符号(如增益系数 $K_F$)立即蜕变出具体的数值和动态范围,让人看清它究竟是接近 0、接近 1 还是会发生正负翻转。更关键的是,五个不同视角的响应界面在同一时间产生实时共振: 1. **时域阶跃响应(Step Response)**:直观展示系统在时间维度上的瞬态响应与振荡衰减。 2. **频域幅频响应(Frequency Response)**:实时绘制波形增益与通带/阻带边缘。 3. **Z 平面极点分布(Poles in Z-plane)**:动态显现复平面上极点位置的迁移过程。 4. **傅里叶变换响应(Fourier Transform)**:呈现频谱各分量的能量峰值变动。 5. **动态数值公式**:原方程中的参数表达式随拖拽实时刷新为具体计算系数。 当工程师拖拽控制柄时,极点的移动、时域振荡的加剧、傅里叶峰值的偏移全部“共舞”在眼前。这种实时反馈在人脑中建立起深度的神经关联:你不再需要写满数页纸去死算公式,而是能用手“感知”整个系统。正是这种多维度同屏联动的即时体验,构成了真正的工程“直觉”(Intuition)——在动手设计前,大脑就能感知到“如果我往这里调,极点会滑向那边,振荡便会随之平息”。这与传统逐页翻查方程、依靠死记硬背分析解题的旧路径有着天壤之别。 > “You see all these representations changing together, you build associations between them, and the idea is that that ultimately leads to what we call intuition.” —— Bret Victor - **数字滤波器的双参数控制**:一个二维控制点同时掌管横轴(Cutoff)与纵轴(Q 值)。 - **五大协同联动视角**: - 动态替换具体数值的差分方程与系数; - 实时频率响应曲线; - 时域阶跃响应波形; - Z 平面极点(Poles)轨迹; - 傅里叶变换频谱响应。 - **直觉的本质**:直觉并非玄学灵感,而是心智通过高频互动,将系统的多重视角关联内化为空间与触觉般的条件反射。 ### [19:19](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1159s) 与行为交互:差分方程环境与动态测量 Bret Victor 强调,理解一个系统绝不能只看孤立的几个数据,必须同时看到整个系统内所有变量在整个时间跨度上的行为表现,并能与系统交互、从多种视角和多重表征来观察它。然而,此前展示的各种 Demo 主要是针对“系统结构”进行调整(例如修改参数后观察被动呈现的波形)。他指出必须更进一步:“但你能做的不只是看着那些行为,你还可以直接对其进行操作与利用(work with the behavior)。” 为了演示如何直接“操控行为”,Bret Victor 展示了一个用于探索差分方程(difference equations)的动态交互环境。他首先定义了一个变量 `a` 并设为常量,界面上立刻出现一条平直的直线图(Flatline plot)。随后,他修改规则为每一步都减去一个数值,曲线瞬间变成一条向下的斜坡;调整该数值,斜坡的倾率也随之变化。更妙的是,他引入了第二个变量 `b`:在每一步中,让 `a` 减去一小部分 `b` 的值,同时让 `b` 加上一小部分 `a` 的值。当他把这两个参数关联起来后,系统产生了递归振荡,原本简单的差分方程自然演化成了平滑的正弦波(sine wave)。在此基础上,他又定义了变量 `c`(当 `a` 为正时输出 1,为负时输出 -1),瞬间将正弦波转化成了方波(square wave);接着再对方波进行积分运算,画面中随即生成了三角波(triangle wave)。这种对行为本身的连续转换,让隐藏在方程式底层的动态关系跃然纸上。 随后,Bret Victor 示范了如何直接在行为层面上进行探索。若想测量正弦波的一个周期有多宽,用户不需要去解算数学公式,直接用鼠标在波形图上框选出一个波峰到波谷的区域,界面右侧立刻动态显示出测量结果:宽度约为 68 个采样点(samples),同时自动计算出该区间的均值(mean)为 0,并支持查看最大值、最小值,甚至自定义均方根(RMS)等归约指标(reductions)。 - **多变量动态观察**:差分方程中的变量变化立刻以曲线形式呈现,展示多变量相互耦合的实时振荡。 - **波形实时转换流水线**:正弦波振荡 $\to$ 符号函数生成方波 $\to$ 积分生成三角波。 - **区域框选与统计**:支持在可视化行为上直接拖拽高亮,即时反馈采样宽度、均值与极值等指标。 --- ### [22:06](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1326s) 将方程求解视为搜索,从单一系统跃升至系统家族 直接手动框选测量的缺陷在于:当改变方程中的振荡系数时,波形的周期发生改变,之前的固定选区立刻失效,需要反复重新拖选,过程十分繁琐。为了捕捉“当系数改变时周期如何变化”,Bret Victor 演示了环境中的动态“搜索框(search field)”。用户可以在搜索框中输入任何判定条件,例如输入“查找所有 `a` 为负值的区域”,系统立刻高亮标出所有负半周;或者输入 `a[n+1] > a[n]`,系统便自动抓取出波形的所有上升沿。Bret Victor 特别强调了这种交互在认知模型上的颠覆: > “这里我所做的事情,在传统上通常被称为‘解方程’或‘求解系统’,但在这里它被当成了一种搜索,这是一种截然不同的思考方式。”(“what I'm doing here is normally called solving called solving an equation solving a systems but here it's treated as searching which is a very different way of thinking about it”) 借助搜索功能,他精确锁定了波形的一个完整周期(显示为 82 个采样点)。接着,他做出了更加惊人的操作:他想知道这个周期的宽度到底如何随着方程式系数的变化而改变。他没有去推导公式,而是直接从该测量数值处“拉出一条引线”,连接到底层的系数变量上,屏幕上瞬间绘制出一张全新的二维曲线图——横轴是方程式系数,纵轴是对应的采样周期宽度。 Bret Victor 深入阐述了这张图的深层意义:图上的每一个单独的点,都严格对应着一个特定系数下的具体系统;而整条连续的曲线,代表的不再是某个单一系统,而是一整个“系统家族”(an entire family of systems)。通过这种方式,思考者直接抽象掉了具体参数的束缚,在更高维度上对整个系统家族的行为规律进行对比和洞察。观察到该曲线呈现倒数关系($1/x$)后,他又定义了一个新变量代表频率(如 $48\text{ kHz} / n$),并将系数与频率绘制成图,立刻揭示出两条变量之间清晰的线性关系。 ```mermaid flowchart LR accTitle: 差分方程系统家族抽象过程 accDescr: 展示从具体差分方程参数,到系统动态行为,再通过特征搜索与参数联动,最终抽象出系统家族对比图的整个流程。 subgraph SpecificSystem["单一具体系统 (Specific System)"] Coeff["调节方程系数 (Coefficients)"] --> Waveform["生成正弦波行为 (Sine Wave)"] end subgraph BehaviorInteraction["行为层交互 (Behavior Layer)"] Waveform --> Search["条件搜索/求解<br/>(例如: 判定周期宽度)"] Search --> Measure["动态提取特征值<br/>(周期采样点宽度)"] end subgraph FamilyAbstraction["系统家族表征 (Family of Systems)"] Coeff -. 连线联动.-> FamilyPlot["系数 vs 周期/频率 关系曲线<br/>(抽象出全家族动态特征)"] Measure -. 连线联动.-> FamilyPlot end ``` - **从求解到搜索**:用直观的关系表达式(如 `a < b` 或差分不等式)直接在行为流上检索目标片段,替代手工推演求解。 - **系统家族的抽象(Abstracting over systems)**:通过建立行为测量指标与系统参数的联动图表,直观对比连续参数变化下的系统族群。 - **频率与周期的转化**:将采样宽度转化为音频采样率($48\text{ kHz}$)下的频率表现,直观验证线性响应规律。 --- ### [25:01](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1501s) 联动多重表征:Nile 语言与 2D 图形管线 接下来,Bret Victor 探讨了“联动多重表征(multiple representations linked together)”的概念,并用程序设计领域的实际案例进行说明。他展示了 Alan Kay 实验室的研究员 Dan Amelang 编写的 2D 矢量图形引擎。通常像 Quartz 或 Cairo 这样的工业级 2D 图形引擎代码量极其庞大,动辄数百万行代码,而 Dan Amelang 仅用了 500 行代码就实现了完整功能。其秘诀在于 Amelang 自创了一种名为 Nile 的流式处理语言(stream-processing language),该语言能够以极简的形式表达图形算法。然而,即便算法极为优雅、代码精炼如诗,任何人单读代码依旧会如坠五里雾中,因为传统的文本代码完全遮蔽了系统的行为。 为此,Bret Victor 与 Dan Amelang 合作构建了一个 Nile 语言探索环境。Nile 的架构类似于 Unix 管道(pipeline),数据按流推进,每个处理环节(process)计算完毕后将数据送往下游。在 Demo 中,左侧展示管道各阶段数据的图形化视觉呈现,右侧则直接贴着负责该阶段的 Nile 源代码。由于代码极短,源程序宛如一则简短的“旁注插图(caption)”。在包含 5 个顶点的示例管道中,用户将鼠标悬停在输入端的任意顶点上,下游所有步骤中由该点演化出的贝塞尔曲线(Bézier curves)、圆角切分及几何变换,全部瞬间以黑色高亮同步呈现。用户可以在时间与流水的任何节点停驻,不仅能追溯该数据未来流向了何处,还能逆向看清它来自何方——真正将数据的“前世今生”完整可视化。 随后,Bret Victor 切换到该引擎真正的光栅化(rasterization)与纹理贴图(texturing)工业管线中。输入的是贝塞尔曲线,终端吐出的是像素(pixels)。更强大的是,环境会根据管道中不同类型的数据形态智能挑选最佳可视化媒介:当某个处理过程输出的是一串实数流(stream of real numbers)时,系统自动为其绘制出动态柱状图(bar chart)。Bret Victor 强调,即使完全不读代码,仅凭眼睛顺着整套视觉管线向下浏览,思考者也能清晰领悟整个复杂系统的运行逻辑。在本段末尾,他抛出了一个核心问题:这些精妙的多重表征本身究竟从何而来?既然可视化依赖人类的视觉通道(visual thinking channel),那么创造可视化媒介的手段本身,也必须通过直观、可视的方式来构建。 - **极简的 Nile 矢量引擎**:Dan Amelang 用 500 行 Nile 语言重写了传统图形引擎数百万行(Quartz/Cairo 级别)的渲染逻辑。 - **代码与数据的管道对应**:Nile 紧凑的代码直接充当管道各级处理节点的说明标签,辅以直观的几何图形呈现。 - **双向数据足迹追踪**:鼠标悬停在管道任意中介点,均可双向高亮追溯输入源头与最终派生图像。 - **数据自适应表征**:系统根据几何图元、实数序列、像素点等不同数据类型,自动匹配贝塞尔线框、柱状图或像素图等直观视图。 ### [28:53](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1733s) 纸笔绘图的直接性与向间接编码的退化 Bret Victor 指出,以视觉方式进行思考并创造图像,自古以来就被称为“绘图”(drawing)。自从洞穴壁画时代开始,人类就是通过对画面本身的“直接操纵”(direct manipulation)来创作图画的。在计算机诞生之前,绘图几乎是唯一的表达途径。比如五十年前的一位科学家或工程师,手里拿着方格纸笔记本,口袋里插满各色笔,每当数据出现时,他们就直接动手将其画出来。 ```mermaid flowchart LR accTitle: 绘图方式的历史演变 accDescr: 从历史上手工绘图的直接操纵,到现代写代码生成图像的间接符号化过程对比。 subgraph HandDrawn["传统手工绘图"] A["方格纸与笔"] -->|"直观且富有表现力"| B["直接操纵图画本身"] B -->|"缺点"| C["一次性产物 / 无法适应新数据"] end subgraph Coding["现代程序绘图"] D["Processing / 编写代码"] -->|"间接、符号化、非视觉"| E["计算生成图像"] E -->|"优点"| F["数据驱动 / 动态复用"] end ``` Victor 现场演示了科学家探索数据的典型手工过程:假设进行了一次实验并测得一组数据,如果想理解其规律,科学家会先将两个相关的变量在方格纸上点成散点图;接着,因为采样顺序至关重要,再用线条把这些点依序串联起来;如果还测量了样本的有效范围(区域宽度),就顺手画上带有两翼的线段;若想确认采样是覆盖了全域还是留有空隙,便会拿出一支荧光笔把各列的覆盖区间涂亮,从而一目了然地看出哪些区域存在采样空白、哪些区域出现了重叠。Victor 强调,这种绘图方式拥有不可思议的表现力与直接性:“当你想要看边际分布时,心里想着‘我想看边际分布,我必须看我的边际分布’,直接一笔画上去,边际分布就出来了。” 然而,传统手工绘图的缺陷在于纯靠人工制作,这严格限制了图像的复杂度;更致命的是,它只针对某一组特定数据,是“一次性”(one-off)的创作——一旦有了新数据,整张图纸就只能作废重画。即使是现代计算机上的 Adobe Illustrator 等矢量绘图软件,本质上也仍停留在为特定数据集服务的一次性手工图画。正是为了摆脱这种一次性限制,现代人纷纷背离了“绘图”,转而投向 Processing 等工具去写代码生成图像。但这种转变却让人陷入了一种极其间接、依赖符号与语言、完全脱离视觉直觉的工作方式中。 - 传统手工绘图工具:方格纸笔记本与满口袋的笔。 - 探索式手工绘图流程:画出散点 -> 连线表示采样时序 -> 标出有效范围翼线 -> 用荧光笔填充覆盖柱状区域发现空白。 - 转向代码生成(如 Processing)的代价:失去了视觉与几何的直接操纵感,退化为非视觉的抽象符号思维。 --- ### [31:17](https://www.youtube.com/watch?v=oUaOucZRlmE&t=1877s) 动态数据驱动绘图工具演示 为了弥合直接操纵与数据驱动之间的鸿沟,Victor 展示了一款用于绘制“动态图画”(dynamic pictures)的原型工具。这款工具表面上类似于 Illustrator 这样的矢量绘图软件,用户可以在画布上直接画线、画几何图形、进行缩放和旋转。但它与传统软件的本质区别在于:用户的每一次交互动作都会被系统记录为一条执行步骤(例如画线、画图形、缩放、旋转),并且这些操作步骤可以完全被外部数据参数化。软件内置了一个类似电子表格的数据环境,当旋转或尺寸等几何步骤与数据参数绑定后,只要改变数据,整个图画就会立刻响应变形。正如 Victor 所言:“这就是这里唯一的魔法:我拥有这样一个类似电子表格的数据环境,我可以把数据连接到图像的生成步骤上。” ```mermaid flowchart TD accTitle: 数据驱动动态绘图架构 accDescr: 用户在画布上的直接操作被记录为步骤,并与电子表格数据参数绑定以生成动态图画。 subgraph UserAction["画布直接操纵"] U1["绘制矩形/线条/箭头"] --> S1["记录几何操作步骤"] end subgraph DataEngine["数据环境"] D1["表格参数 / 变量"] -->|"参数化绑定"| S1 D2["新数据集注入 / 手动拖动数值"] -->|"驱动重算"| S1 end subgraph Output["动态响应"] S1 --> O1["实时更新的动态图画"] O1 --> O2["直接在图上画线添加边际/度量"] end ``` Victor 演示了如何用该工具重建前面的科学图表: 1. **构建散点图与循环**:在整个画布上绘制一个参考矩形,将其宽度与高度分别绑定到数据的两个变量上作为辅助线(guide),并在末端放置一个圆点完成第一个数据点的绘制;接着将这个几何生成过程循环应用到所有数据行,瞬间形成完整的散点图。 2. **连接路径与着色**:使用划线工具连接“上一个点”与“当前点”,并移动标记以追踪上一个点的位置,形成一条环绕路径,将其线宽调粗并染成橙色。 3. **有效范围与高亮覆盖**:画一条横跨画布的线段,按数据中的宽度变量按比例缩小后放置在数据点上,并画出代表范围的两翼;随后使用矩形工具绘制顶天立地的色块,去除描边并填充橙色,立刻清晰暴露出采样的空白间隙以及两个样本重叠覆盖的区域。 4. **方向指示箭头**:为了分清数据采样的时序方向是顺时针还是逆时针,Victor 在画布上徒手画出一个箭头形状,吸附到数据点上,并将其旋转角度直接绑定到前后连线的几何夹角上,让箭头沿着路径整齐巡游;最后适当缩小箭头尺寸,并隐藏干扰视线的原始散点。 这幅图画虽然完全是通过类似 Illustrator 的直接操纵绘制出来的,但由于底层由数据驱动,当把另一组全然不同的新数据集拖放进来时,图画立刻自动重新布局呈现;若在表格中手动选中某个数字来回拖拽调节,画布上的图形也会实时蠕动变化。Victor 总结道,这种工具让人重拾“用几何代替代数、用视觉代替语言”的思考方式;它不仅能创造各种常规的数据可视化和动态形状,更关键的是让研究者能够追随自己的思维流,随时为复杂系统创造前所未有的动态表示媒介。 --- ### [36:04](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2164s) 思考复杂系统所需的新媒介原则 Victor 对全场演讲的核心思想进行了系统性梳理。他指出,人类如果要真正理解复杂的现代系统,就必须拥有一种全新的思考媒介,而这种媒介的核心必须建立在一系列对“系统行为”(behavior)的洞察原则之上: * **看见系统的行为**:必须把系统的动态行为直接暴露在眼前,这是纸笔时代无法做到的飞跃。 * **统揽全局状态**:必须能在同一时刻跨越所有变量看到系统的完整状态,从而能够进行瞬时比对与模式识别。 * **即时交互响应**:必须能够随时调节系统参数,并即刻看到行为的反馈,在“调整”与“响应”之间建立认知关联。 * **多视角与多重表征**:必须通过不同的透镜和表征方式审视行为,从不同维度挖掘深层见解,并在多种表征之间进行比对与联动。 * **与行为本身交互**:不仅要看到行为,还要能够测量行为、搜索行为、转换行为。 Victor 针对传统编程方式提出了深刻的批判。在传统的软件工程中,人们总是在与系统的“结构”(代码文本)打交道,日复一日地盯着代码,最终误以为代码就是程序本身。针对这一误区,Victor 坚定地指出: > “代码根本无所谓,真正重要的是程序在做什么;因此我们需要能够立足于‘运行作为’这一侧的表征,在那里我们专注于系统的行为,与系统的行为进行交互,注视着系统的行为,让系统的行为成为一切的核心。” 此外,这种媒介还必须支持对单个系统进行抽象以观察比对整个“系统家族”(families of systems),实现组件之间的双向联动(选中某一处,所有关联视图同步高亮),并针对不同类型的数据提供匹配的表征;而创造这些表征的方式,必须回归到通过直接操纵画布来进行“绘图”。 --- ### [38:16](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2296s) 摆脱纸笔思维的束缚与未来的召唤 Victor 坦言,当天展示的所有原型 Demo 都仅仅是“线索”(hints),不过是在一个宏大难题的边缘进行微小的啃噬,而这个宏大的核心问题正是:“用于理解系统的全新媒介究竟应该是什么样子?” ```mermaid flowchart TD accTitle: 媒介演进与认知模式转变 accDescr: 展现从戴克斯特拉时代的纸笔逻辑思维到未来交互式视觉媒介的范式转移。 subgraph Legacy["传统范式:纸笔遗产"] L1["手写文本 / 书面语言"] --> L2["逻辑符号推导(Edsger Dijkstra 传统)"] L2 --> L3["静态纸笔思维限制了对复杂动态系统的直觉"] end subgraph FutureMedium["未来范式:新计算媒介"] F1["直接操纵与视觉化思考"] --> F2["实时交互探索系统动态行为"] F2 --> F3["用于思考不可思议之物的新媒介"] end ``` 他强调,人类当今所有的思考工具和技术都深深烙印着纸笔时代的痕迹,哪怕坐在最先进的计算机前,人们的思维方式依然没有跳出纸笔的牢笼。编程本身就是最典型的例子:程序员至今仍在用书面语言(written language)打字,而书面语言从发明的第一天起就是为了纸上书写而设计的。 Victor 指着幻灯片右下角展示的手稿解释道,那是计算机科学家艾兹赫尔·戴克斯特拉(Edsger W. Dijkstra)的手迹。Dijkstra 生前坚持手写一切文稿,完全依靠严密的逻辑推理来推导程序。在 Dijkstra 的世界里,通过视觉和交互手段去探索系统动态行为的想法不仅从未进入过他的视野,甚至“他很可能会觉得这种做法令人厌恶”。然而,现代计算领域却全盘继承了这种完全排斥视觉直觉的纸笔思维遗产。 在演讲的尾声,Victor 呼吁大家跳出历史的桎梏:“我认为我们迎来了这样一个机会去重构我们思考系统的方式,去创造这种全新的媒介。”尽管他坦承自己目前也无法给出这一全新媒介的最终形态,但他向全场观众发出真诚的邀请:“我不知道那种媒介具体是什么,但如果你愿意一起去寻找它,请告诉我。”伴随着全场的掌声,演讲落下帷幕。 ## Notable quotes > [09:35](https://www.youtube.com/watch?v=oUaOucZRlmE&t=575s) And I think it's really interesting that the birth of modern mathematics is considered to be not any particular mathematical concept, but a user interface. — Bret Victor > [12:50](https://www.youtube.com/watch?v=oUaOucZRlmE&t=770s) The structure of DNA was unthinkable—like, literally nobody could think of it. They were able to think this thought by moving it from the symbolic channel to the interactive channel where they could think with their hands. — Bret Victor > [36:04](https://www.youtube.com/watch?v=oUaOucZRlmE&t=2164s) 代码根本无所谓,真正重要的是程序在做什么;因此我们需要能够立足于‘运行作为’这一侧的表征,在那里我们专注于系统的行为,与系统的行为进行交互,注视着系统的行为,让系统的行为成为一切的核心。 — Bret Victor > [08:09](https://www.youtube.com/watch?v=oUaOucZRlmE&t=489s) 我们制造工具,把这些超出我们感官范围的事物,适配到我们人类的身体与人类的感官上来。 — Bret Victor > [05:12](https://www.youtube.com/watch?v=oUaOucZRlmE&t=312s) The difference is now instead of just being made out of these squiggly symbols that were designed for pencil and paper, now it's made out of live data where you can see what the system's doing. — Bret Victor ## Mentioned Bret Victor, Colin McDonnell, MIT Media Lab, Nature, Richard Hamming, Marshall McLuhan, Jerome Bruner, Jean Piaget, James Watson, Francis Crick, Rosalind Franklin, William Playfair, al-Khwarizmi, Dan Amelang, Alan Kay, Nile, Cairo, Quartz, Processing, Adobe Illustrator, Edsger W. Dijkstra ## Video description For cool updated about the future of computing, follow me at https://twitter.com/iamvriad. Presented at the MIT Media Lab on April 4, 2013. Talk outline: http://worrydream.com/MediaForThinkingTheUnthinkable/ Personal preface: http://worrydream.com/MediaForThinkingTheUnthinkable/note.html For more information about the demos -- 1. Scientific paper. http://worrydream.com/ScientificCommunicationAsSequentialArt/ 2. Circuit. http://vimeo.com/36579366 3. Digital filter. http://worrydream.com/ExplorableExplanations/ 4. Multitrack signal processing. (first time presented) 5. Nile viewer. http://github.com/damelang/nile 6. Drawing tool. http://vimeo.com/66085662 ----------------------------------------------------------- Bret Victor -- http://worrydream.com [Source](https://www.youtube.com/watch?v=oUaOucZRlmE)

Source quotes

[9:35] Bret Victor: And I think it's really interesting that the birth of modern mathematics is considered to be not any particular mathematical concept, but a user interface. [12:50] Bret Victor: The structure of DNA was unthinkable—like, literally nobody could think of it. They were able to think this thought by moving it from the symbolic channel to the interactive channel where they could think with their hands. [36:04] Bret Victor: 代码根本无所谓,真正重要的是程序在做什么;因此我们需要能够立足于‘运行作为’这一侧的表征,在那里我们专注于系统的行为,与系统的行为进行交互,注视着系统的行为,让系统的行为成为一切的核心。 [8:09] Bret Victor: 我们制造工具,把这些超出我们感官范围的事物,适配到我们人类的身体与人类的感官上来。 [5:12] Bret Victor: The difference is now instead of just being made out of these squiggly symbols that were designed for pencil and paper, now it's made out of live data where you can see what the system's doing.

Source quotes

[9:35] Bret Victor: I think it's really interesting that the birth of modern mathematics is considered to be not any particular mathematical concept, but a user interface. [9:35] Bret Victor: So when Hamming says there could be unthinkable thoughts, we have to take that as: yes, but we build tools that adapt these unthinkable thoughts to the way that our minds work and allow us to think these thoughts that were previously unthinkable.

Original transcript

[0:02] well this is a media lab so I thought [0:03] I'd talk about media but um I'm going to [0:06] talk about a particular kind of media [0:08] which is media for thinking in and I'm [0:11] going to talk about a particular kind of [0:12] thinking which is understanding [0:15] systems so as an example of that um say [0:18] you've got some system out in the world [0:20] such as the planets going around the Sun [0:21] you want to understand what's going on [0:23] there so you take some measurements you [0:25] look for patterns you build a [0:26] theoretical model and that's a kind of [0:28] thinking that we call science it's uh [0:30] very important kind of thinking but you [0:32] can also go in the other direction [0:34] instead of going from the system to the [0:35] theory you can start from Theory and [0:37] build your own system like a spacecraft [0:40] to take you to a planet and that's the [0:42] kind of thinking that we call [0:43] engineering but either way that you're [0:45] going whether you're going from system [0:47] to a theory or from Theory to a system [0:50] understanding the system is really at [0:51] the heart of what you're doing so both [0:54] science and engineering or everywhere in [0:56] between a lot of it comes down to [0:58] understanding systems [1:01] and media matter because media are [1:04] Thinking Tools right the [1:07] representations that we use of the [1:08] system are how we think about it our [1:11] representations are um how we understand [1:15] this system and what we understand about [1:17] it and so if we want powerful new ways [1:21] of understanding complex systems if we [1:24] want to build powerful new systems we [1:25] need powerful new [1:26] representations and we need a powerful [1:28] new medium in which we can create and [1:31] work with those [1:32] representations so much of the way we [1:35] work with systems today is derived from [1:38] pencil and paper from pencil and paper [1:40] medium even when we're working on the [1:41] computer we're still thinking in pencil [1:43] and paper and I think there's a [1:45] incredible opportunity now to rethink [1:47] how we think about [1:50] systems so in this talk I'm going to um [1:53] show you a bunch of different examples [1:55] of different representations of [1:57] different systems and to try to kind of [1:59] give hints as to what this new medium [2:01] for working with systems might be these [2:04] examples are kind of from all over [2:05] there's like programming circuit design [2:07] and Signal processing and this and that [2:09] if you're not familiar with one of these [2:10] domains doesn't matter you don't need to [2:12] know any of the technical details all [2:14] that matters is the [2:16] representations every idea I show here [2:18] can be pretty much applied to pretty [2:19] much any any [2:21] domain so I'm going to start off with [2:24] taking a look at a scientific [2:26] paper this is a um paper on network [2:28] theory that was published in nature a [2:30] little while ago very influential paper [2:32] basically started an entire field of [2:33] network Theory and it kind of looks like [2:35] a paper right you got a lot of words and [2:38] numbers and here's a figure and here's a [2:40] table and there's another figure I'm [2:44] going to read a little bit to you from [2:45] this paper from the introduction second [2:47] paragraph where they're kind of setting [2:49] things up the networks of interest to us [2:51] have many vers with sparse connections [2:53] but not so sparse of the graph is in [2:54] danger of being disconnected [2:56] specifically we require that n much [2:58] greater than K much greater than log [2:59] much greater than one one or k much [3:00] greater than lular a ram graph will be [3:01] connected in this regime we find that L [3:03] goes as 2K much greater than one and C [3:05] goes as 3/4 as p goes as zero and this [3:07] is [3:09] incomprehensible um and this is a very [3:11] well-written paper this the authors are [3:13] excellent writers the what we have here [3:16] is the authors have a very rich picture [3:19] in their heads and they're trying to [3:21] compress that picture to transmit over a [3:23] very low bandwidth Channel which is this [3:26] stream of numbers and symbols right so [3:30] it's a very lossy compression and we've [3:32] got the reader on the other end trying [3:33] to decompress this picture into their [3:35] own head and it doesn't work very well [3:38] so I redesigned this paper and my [3:42] redesign looks a little bit like this so [3:44] you can see words and pictures very [3:47] tightly intertwined little bit of words [3:49] a little bit of pictures I'll read a [3:51] little bit to you from this part up here [3:53] where they're establishing the algorithm [3:54] that they used to generate these [3:55] networks that they study we start with a [3:57] ring of nend vertices and here we see a [4:00] ring of 12 vertices where each vertex is [4:02] connected to its K nearest neighbors [4:04] here we see k = 4 four connections like [4:07] so now they're all connected we choose a [4:09] vertex and the edge to its nearest [4:10] neighbor there's the vertex there's the [4:12] edge with probability P we reconnect the [4:14] edge at random there it is reconnected [4:16] we repeat this process moving clockwise [4:18] around the ring like [4:21] so so instead of just describing the [4:24] algorithm it's depicting the state of [4:27] the system at each step so this this is [4:29] what you normally would have to [4:30] construct in your head here the picture [4:32] on your head is just [4:34] Illustrated here they're um discussing [4:37] some relationships the regular lattice L [4:38] grows linearly with n we see L growing [4:40] linearly with n we see C is staying [4:42] constant the random Network L grows [4:44] logarithmically we see L logarithmically [4:46] we see C going as a reciprocal [4:48] relationship when we read the word [4:50] logarithmic we don't have to reconstruct [4:52] that relationship in our head you can [4:53] just see it [4:55] so what I'm doing here it's it's really [4:58] just a very simple trick it's to [5:00] understand the picture that's in the [5:02] author's head and just reproduce that so [5:05] we're showing the state of the system [5:07] we're showing the behavior of the system [5:08] as it goes through this [5:10] algorithm in my next example I'm going [5:12] to go to a completely different domain [5:13] but I'm going to use kind of the same [5:15] trick so this next example is um an [5:18] example from circuit design so here's a [5:21] circuit that I'm working on and I'm not [5:23] done drawing it so let me finish drawing [5:26] it and that and now the circuit Works [5:32] although you can't actually see it [5:33] working you can't actually see anything [5:35] so we kind of have the same problem is [5:37] with that original paper is that the [5:39] system is doing something and we can't [5:41] see it doing anything if you were to [5:43] build the circuit on a lab bench you [5:45] could at least take an aill scope and [5:47] probe around and see what's going on at [5:49] this node what's going on at that node [5:50] so you should at least be able to do [5:51] that so here I'm showing the voltage of [5:54] that particular node and it's simulating [5:56] real time and we can see what it's doing [5:58] but you still can't understand the [6:00] system in order to understand the system [6:02] it's not enough to just see one variable [6:04] one voltage you have to see all the [6:06] voltages you have to see all the [6:07] variables you have to understand what's [6:08] happening here and here and here and [6:10] here and here and here and normally you [6:12] have to reconstruct that in your head [6:14] but if I spread these out a little bit [6:18] and switch to this representation now [6:20] you can see all the voltages across the [6:22] entire circuit I can scrub over them I [6:24] can see what's going on in this region I [6:27] can compare any two the one that I'm [6:29] mousing over right now it Shadow is [6:30] overlaid on all the other plots so I can [6:32] compare them I can adjust anything in [6:35] the circuit such as this resistor turn [6:36] it up or down and I see immediately how [6:38] the behavior [6:39] changes so we're a little bit further [6:41] towards understanding the behavior of [6:43] the system but still not enough we're [6:46] really only seeing half of the Behavior [6:47] now because in electronics there's both [6:49] voltage and current in order to [6:52] understand what the system is doing you [6:53] have to understand both of these things [6:55] so what I'm going to do is I'm going to [6:58] um replace each of these components here [7:00] such as this resistor with a plot of the [7:04] current going through that resistor so [7:07] right now each of those blue blocks [7:08] represents a component this one right [7:11] here is a resistor this one's a [7:12] capacitor you can see what it is because [7:13] they have a little badge but instead of [7:15] just being a um dead schematic symbol [7:18] now it represents behavior and so I can [7:22] um now at a glance see the entire [7:24] Behavior across the entire system all [7:26] the voltages all the currents compare [7:28] all of them I can change anything about [7:29] the system and see immediately how the [7:32] behavior changes in [7:35] response now this representation here [7:38] has all the same structural information [7:41] as [7:42] this you still have the resistor hooked [7:45] up to the capacitor hooked up to the [7:47] transistor the difference is now instead [7:50] of just being made out of these squiggly [7:52] symbols that were designed for pencil [7:53] and paper now it's made out of live data [7:55] where you can see what the system's [7:58] doing so so this is a paper about [8:00] Network Theory this is a engineering [8:03] design using the same trick which is [8:05] just showing the behavior of the [8:07] system so with those two examples in [8:09] mind I want to step back a bit and kind [8:12] of talk a little more abstractly about [8:14] what's going on [8:15] here one way I like to frame this work [8:18] is with a quote by Richard Hamming [8:20] Hamming was one of the old Bell Labs [8:22] guys um did world class world class [8:24] research in all sorts of fields I [8:26] thought a lot about how people think and [8:27] how people do research and in his paper [8:30] um the unreasonable effectiveness of [8:32] mathematics he he said [8:35] this just as there are odors that dogs [8:37] can smell and we cannot as well as [8:39] sounds that dogs can hear and we cannot [8:41] so too there are wavelengths of light we [8:42] cannot see and flavors we cannot taste [8:45] why then given our brains wired the way [8:47] they are does the remark perhaps there [8:50] are thoughts we can't think surprise you [8:53] Evolution so far may have blocked us [8:54] from being able to think in some [8:55] directions there could be Unthinkable [8:58] thoughts [9:00] now Heming was a brilliant guy and he [9:02] thought a lot about thinking and so what [9:05] I think is really interesting about this [9:07] passage is that to me there's a really [9:10] obvious [9:11] response where Hamming didn't go which [9:14] is to say so [9:16] um these these sounds that we can't hear [9:19] and these this light that we can't see [9:21] how do we even know about these things [9:22] in the first place well we build tools [9:26] we build tools that adapt these things [9:28] that are outside of our senses to our [9:31] human bodies to our human senses so we [9:35] can't hear ultrasonic sound but you hook [9:37] a microphone up to an oscope and there [9:39] it is you're seeing that sound with your [9:41] plain old monkey eyes right we can't see [9:45] cells and we can't see galaxies but we [9:47] build microscopes and telescopes [9:50] and these tools adapt adapt the world to [9:55] our human bodies to our human senses [9:58] right so when Hamming says there could [10:00] be Unthinkable thoughts we have to take [10:02] that as yes but we build tools that [10:06] adapt these Unthinkable thoughts to the [10:10] way that our minds work and allow us to [10:12] think these thoughts that were [10:13] previously Unthinkable and I'll give you [10:16] a couple examples of these kind of um [10:18] adapting tools probably the greatest one [10:21] in the history of humanity is writing [10:25] writing made thought visible writing [10:27] allowed us to think about [10:29] thinking um you know thinking and speech [10:33] used to be this really fleeting thing [10:35] writing allowed us to capture it to [10:37] study it and um it's widely considered [10:40] that the invention of writing was the [10:41] invention of reason it was the invention [10:43] of rational thinking when we had this [10:47] new representation where we could [10:49] capture thought and think about it [10:52] explicitly and the thing about having a [10:55] literate culture is that [10:58] um e if you have if you've grown up with [11:01] literacy you're now able to think in [11:03] this much more powerful way even if [11:05] you're not writing at that very moment [11:07] you're still able to think literately [11:08] that was um that was Marshall mclin's [11:10] deal right you introduce a medium into [11:12] to society and it changes the thought [11:14] patterns of the society so writing was [11:17] this really powerful um tool for [11:19] allowing us to think thoughts that were [11:21] previously Unthinkable another really [11:23] great one was mathematical [11:25] notation so I'm going to show you a math [11:27] problem that was addressed by [11:29] the great mathematician alari in around [11:32] the year 900 he wrote what is the square [11:35] which when taken with 10 of its roots [11:36] will give us some total of 39 Now The [11:38] Roots before us in the problem are 10 [11:39] therefore take five which multiply [11:41] itself gives 25 and so on and so on and [11:43] it would be another 800 years before [11:45] we'd be able to write that same problem [11:48] in this [11:49] form so there's a a structure that's [11:52] visible in that bottom form that's [11:54] invisible that's hidden in the recipe [11:57] and once you take that concept and make [11:59] it visible now you're able to think [12:01] explicit about it you're able to develop [12:02] means of manipulating it and the [12:06] invention of this notation is widely [12:07] considered to be the birth of modern [12:09] mathematics one reason being that once [12:12] you have in that bottom form you can [12:13] start to think well what if x isn't a [12:15] number what if it's X is a velocity or a [12:18] matrix or a member of some abstract [12:21] group and I think it's really [12:23] interesting that the birth of modern [12:25] mathematics is considered to be not any [12:27] particular mathematical concept cep but [12:29] a user interface [12:31] right so when I'm talking about um [12:36] thinking Unthinkable thoughts this is [12:37] the sort of thing I have in mind these [12:39] representations that make Concepts [12:41] visible that used to be invisible and [12:43] allow us to think explicitly about them [12:45] allow our minds to go in directions that [12:46] couldn't go [12:50] before now in the same way that if [12:53] you're going to build a microscope it [12:54] probably helps to know a little bit [12:55] about Optics know how the eye works if [12:58] if you're going to build a thinking tool [12:59] it probably helps to have some idea of [13:01] how people think about things and one [13:04] simple framework that I like is um one I [13:07] got from Dron Bruner who adapted it from [13:09] p and he talked about these three [13:11] different mentalities these three [13:12] different ways that people have of [13:14] thinking about things um which he called [13:16] the inactive the iconic and the symbolic [13:18] and in modern UI terms they might be [13:19] called interactive Visual and symbolic [13:22] so interactive is um is thinking by [13:26] doing by actively exploring performing [13:29] thinking with your hands being a body [13:31] embodied in space all that that second [13:34] Channel visual channel is thinking by [13:35] seeing especially seeing many things in [13:38] parallel being able to make comparisons [13:40] being able to recognize thing shapes [13:43] being um thinking with analogies a third [13:45] Channel symbolic is thinking with [13:47] language step-by-step logical reasoning [13:49] all that one great example of that first [13:53] Channel interactive is the discovery of [13:55] the structure of DNA by Watson and Crick [13:58] so Watson Crick had some data data from [14:01] rosand Franklin's x-ray experiments and [14:02] other kind of chemical knowledge but the [14:04] way that they were able to figure out [14:05] the structure of that molecule is they [14:07] went down to the machine shop and they [14:09] built these physical models out of brass [14:12] and wire and they went up to their [14:14] office and you know tried to fit them [14:15] together and they were ridiculed by [14:17] their colleagues their colleagues are [14:19] like hey it's Watson and Crick playing [14:20] with their toys again and then you know [14:23] 10 years later Watson and Crick are like [14:24] yeah it's Watson and Crick playing with [14:25] our Nobel prizes again right so [14:29] this the structure of DNA was [14:32] Unthinkable like literally nobody could [14:34] think of it they were able to think this [14:36] thought by moving it from the symbolic [14:38] channel to the interactive Channel where [14:40] they could think with their [14:41] hands and nowadays of course all [14:43] chemistry students play with physical [14:45] models it's just totally standard a [14:47] great example of thinking that second [14:49] channel the visual Channel 1786 William [14:52] Playfair was writing a book about [14:54] economic trade balances in European [14:56] countries and his book was full of these [14:58] tables and numbers so many exports from [15:00] Finland next page so many exports from [15:02] Germany or whatever and he had a thought [15:05] which was you know what would make these [15:06] numbers each to understand is if I drew [15:08] a map of numbers and so he drew this [15:12] which was the first time anybody had [15:13] plotted data this was the first data [15:15] graphic he filled his book with these [15:17] things and invented the field of [15:19] statistical Graphics so again this was [15:21] this kind of Channel switch where he [15:23] took something that had been purely [15:24] symbolic the table of numbers is about [15:26] as symbolic as you can get and turned [15:29] into something that could be understood [15:30] in an entirely new [15:32] way so this sort of Channel switching is [15:36] basically what I'm trying to do here [15:39] this the behavior of this system can [15:41] only be understood symbolically you kind [15:43] of have to logically reason like here's [15:45] what a capacitor does here's what a [15:46] resistor does stepbystep simulate in [15:48] your head when we move to this [15:51] representation the structure of the [15:52] system is still symbolic we still have a [15:54] symbol for the capacitor symbol for the [15:56] resistor the behavior of the system [15:58] system can now be understood visually [16:01] and by visual I don't just mean like [16:03] seeing a plot but seeing many plots in [16:05] parallel being able to recognize shapes [16:07] being able to compare them that kind of [16:08] thing so we have the symbolic we have [16:11] the visual and then we also have this [16:12] interactive Channel where we can um [16:15] adjust the structure of the system and [16:17] see how the behavior responds so we can [16:20] have hypotheses and test them out play [16:21] out what if scenarios build associations [16:24] between how we're interactively probing [16:26] the system and how the behavior is [16:29] responding so we're kind of firing on [16:31] all three cylinders here instead of this [16:33] just being a big pile of symbols we've [16:35] got the symbolic we've got the visual [16:37] and we've got the interactive and [16:39] they're all kind of working together and [16:40] reinforcing each [16:43] other so in the next example I want to [16:46] show not just having multiple [16:48] representations but having different [16:50] representations for the same behavior [16:52] being able to look at the same behavior [16:54] in different [16:55] ways so this is an example from signal [16:57] processing this is a digital filter [16:59] again don't worry if you don't know what [17:00] that is this is just a system here are [17:02] some equations that describe how it [17:04] works and here is one way of [17:05] representing what the system is doing [17:07] it's frequency [17:09] response and the system has two [17:11] parameters the cut off in the que and I [17:14] can grab this knob and drag left and [17:16] right to adjust one drag up and down to [17:18] adjust the other you'll notice there's [17:20] something else happening when um when [17:22] I'm dragging this around so if you look [17:24] up here there's this coefficient KF [17:26] that's being multiplied and in this [17:29] representation I have no idea what KF is [17:31] like is it near zero is it near one is [17:33] it near 100 is it negative I have no [17:35] idea what the range of number is as I'm [17:38] interacting you'll see that number [17:40] changes to a concrete coefficient and [17:42] now I can get a sense of exactly what [17:44] coefficients I'm dealing with over here [17:47] we're seeing numbers appearing in the [17:49] equation where before there were [17:51] Expressions so we can get a sense of the [17:52] the coefficients there up here we're [17:54] seeing a step response a Time D main [17:57] response and below we're seeing the [17:59] poles in the zplane that's a frequency [18:01] domain thing like the Voss transform and [18:03] then over here we're seeing how the for [18:05] transform is responding so these are [18:08] five different ways of looking at the [18:10] behavior of the system and as I'm [18:12] interacting we're seeing all five of [18:15] them responding at once we're seeing [18:17] these five different perspectives on the [18:18] system each with its own insights and [18:20] we're seeing how they all dance together [18:22] as I change these parameters and what [18:25] this does is this allows you to build up [18:27] associations [18:28] in your mind so when you adjust the [18:31] parameter you see okay the poles are [18:33] moving this way which is making the [18:34] oscillation go in this way and making [18:36] the peak and the for8 transform go this [18:37] way you see all these representations [18:40] changing together you build associations [18:42] between them and the idea is that that [18:46] ultimately leads to what we call [18:48] intuition the idea that there's some [18:51] desired response I want and I kind of [18:53] know how to get there because I've seen [18:55] um when this happens that also happens [18:57] that also happens happens you've seen [18:59] the system from so many different angles [19:01] that you kind of you can feel your way [19:03] around [19:04] it this is a very different way of [19:07] thinking than traditional analytic um [19:11] you write a whole bunch of pages of [19:12] grungy equations and come out with the [19:14] answer way of [19:16] thinking [19:19] so we need to see the behavior of the [19:23] system we need to see the entire [19:26] Behavior across the entire system all [19:27] the variables some once we need to be [19:29] able to interact with the system see how [19:31] the behavior changes we need multiple [19:34] representations of the behavior see it [19:35] from different perspectives and [19:36] different [19:38] angles something else that we need is to [19:40] be able to interact with the behavior [19:43] all of done so far and what I'm doing [19:45] here is interacting with the structure [19:47] of the system I'm changing parameters [19:49] and then we're just looking at the [19:50] behavior but you can do more than look [19:51] at the behavior you can also work with [19:53] the behavior so in this next example um [19:57] what I have here is an environment for [19:58] working with difference equations and [20:01] again don't worry too much about what [20:02] that means but here I'm defining a [20:03] variable called a and I can set it to a [20:06] constant and as I move it up and down [20:08] you can see that we have this kind of [20:09] Flatline plot here because it's [20:11] constant but I can also say that at each [20:15] step we're going to subtract a little [20:17] bit off of [20:18] a and I'm going to set the initial value [20:20] here and then you can see that each step [20:23] of time we're subtracting a little bit [20:25] off and we get this ramp going down and [20:28] I can change that constant and get a [20:30] different slope [20:31] ramp but something else that's really [20:33] interesting to do is say on each step [20:34] instead of subtracting a constant I'm [20:36] going to subtract a little bit from some [20:38] other variable which I'm going to call B [20:40] and then B I'm H step I'm going to add a [20:43] little bit of that [20:45] a let me connect these two so they're [20:47] always the same and what we get is this [20:50] kind of recursive relationship where [20:52] they end up oscillating so here's two [20:54] variables I made called A and B and they [20:56] turn into this sign OC [20:59] mayble Define a variable C which when a [21:02] is positive give me a one if a is [21:03] negative give me a negative one and now [21:05] we've turned it into a square wave and [21:07] then integrate that square wave and when [21:09] you integrate a square wave you get a [21:11] triangle wave so taking this behavior [21:14] and then transforming it in different [21:15] ways maybe bring out relationships that [21:17] are [21:18] interesting so far I've mostly just been [21:20] working over here on the structure of [21:22] the system but I can also work over on [21:24] the behavior so let's say I want to know [21:27] how big this per period is what's the [21:29] period of the sine wave well I can just [21:30] click and drag over a region and measure [21:33] it so I dragged over that region I can [21:35] see that it's about 68 samples wide and [21:37] you're also seeing something over here [21:39] which is saying the mean is zero which [21:41] makes sense if it's a full period but I [21:43] can also look at the max or the Min or I [21:45] can like Define my own reductions if I [21:47] want to know root mean squ or whatever [21:48] so another way of looking at it [21:50] selecting regions and then running [21:51] reductions over them now this period is [21:55] 68 samples wide but then as I change [21:57] this the period is also changing and [22:00] this selection is kind of going out of [22:01] sync so I'd have to select it again and [22:03] then I want to know what it is for that [22:04] so I have to select it again and that [22:06] gets kind of tedious I'd like to know [22:08] how the period changes when I change [22:10] this coefficient here so what I can do [22:13] is over here have a search field and in [22:15] search field I can put in any condition [22:17] such as show me everywhere where a is [22:19] negative and now I've got these regions [22:21] I can click on where a is negative it [22:24] found all the places where a was [22:25] negative and I can search for anything I [22:28] can find where a is less than b or I can [22:30] find where a at time n + 1 is greater [22:33] than a at n now it's found all the [22:36] writing slopes right so what I'm doing [22:39] here is normally called solving called [22:42] solving an equation solving a systems [22:44] but here it's treated as searching which [22:46] is a very different way of thinking [22:47] about [22:48] it so I want that period so I can just [22:51] kind of Select from one to the other and [22:53] now it's selected over a full period And [22:55] I can see that as 82 samples wide [22:58] as I change this coefficient I see that [23:00] number is [23:03] changing but it's not really enough to [23:05] just look at that number the width of [23:07] that I want to see how that width [23:08] changes as I'm changing this coefficient [23:10] here so all I need to do is draw a line [23:13] from one to the [23:14] other and now it's plotting one against [23:17] the other so this is a plot of as we [23:19] vary that coefficient in the equations [23:22] it's measuring the width and plotting [23:25] it so every point on this plot [23:28] corresponds to a particular system every [23:30] point on this plot corresponds to a [23:32] particular set of coefficients here [23:34] which means that the plot as a whole is [23:36] not about any particular system but an [23:38] entire family of systems so we've [23:39] abstracted over that coefficient and [23:42] we're looking at entire family of [23:43] systems comparing [23:45] them in this case this kind of looks [23:47] like a reciprocal type relationship a 1 [23:48] overx type thing and so one over the [23:51] period is frequency so maybe we should [23:54] be looking at frequency instead so I'm [23:55] going to define a new variable here I [23:57] need some sample rate so say 48 khz [24:00] divided by n and so here's the sample [24:04] width and now here's the frequency of [24:06] the sine [24:08] wave and I can plot versus that and we [24:11] can see this has kind of a linear [24:18] relationship [24:21] so we need to see the behavior of the [24:23] system we need to see the entire [24:25] Behavior across the entire system all [24:27] variables once we need to interact with [24:28] the system see how the behavior changes [24:31] we need to be able to see multiple [24:32] representations of the behavior and we [24:34] need to not just see the behavior but be [24:36] able to interact with it to be able to [24:38] measure it reduce it transform it search [24:41] it whatever makes sense for this [24:43] particular system and we need to be able [24:45] to abstract over individual systems and [24:48] look at families of systems compare [24:50] between [24:51] them now the next example I'm going to [24:54] show you is about having multiple [24:56] representations linked together and this [24:58] is a um a programming example [25:01] actually so what I'm showing here is a [25:04] 2d vector graphics engine this was [25:07] written by Dan amling who's one of Alan [25:09] K's researchers and it's remarkable [25:11] because it does everything that a normal [25:14] 2D Graphics engine like quz Ciro does [25:16] except quz chiro are like Millions lines [25:18] of code and this is 500 lines of code [25:21] that's the entire code base right there [25:23] and Dan was able to do this because he [25:25] invented a language called Nile in which [25:27] which the sorts of operations he wanted [25:29] to do could be expressed very [25:31] compactly this is an example of n code [25:35] and the language is really beautiful the [25:38] algorithms are expressed very elegantly [25:39] in the language and they're very elegant [25:41] algorithms and you can read the code and [25:42] have no idea what's going on because you [25:44] can't see the behavior of the system so [25:48] working with Dan I made it an [25:50] environment for um exploring Nile code [25:53] and I'll give you a couple examples this [25:56] first one is kind of a toy program in NY [25:59] and NY is it's kind of like the Unix [26:01] pipeline it's a pipeline language you [26:03] put in data and then it a process runs [26:05] on it and feeds data to the next process [26:07] and next process and down the pipeline [26:09] um so what you see here we're putting [26:11] Five Points into the pipeline and you [26:13] see Four Points up there because the [26:15] first and the last one are duplicated [26:17] and then those Five Points go into this [26:19] process called make polygon that outputs [26:21] for beas which goes into this process [26:22] and that process and down the chain and [26:25] so over here you're seeing a picture A [26:28] visual representation of what's in that [26:30] pipe and then over here you're actually [26:32] seeing the source code of the process [26:33] because NY is so compact that the source [26:36] code for a process can normally just be [26:37] stuck on the side like a [26:39] caption so what you're seeing at each [26:41] stage is the data at that stage in the [26:43] pipeline and if I go up here to um the [26:46] initial input you'll notice that as I [26:48] point to any of these um initial points [26:50] you're seeing B's highlight in Black [26:53] down the pipeline so what you're seeing [26:55] is this point went into the next process [26:57] and out came this beer and then what [27:00] happened to that beer well it got [27:01] rounded it got transformed you're [27:03] chasing a particular piece of data all [27:05] the way through the pipeline and of [27:07] course I can grab the initial input and [27:09] adjust it and you can see how the data [27:10] is changing all the way through the [27:12] pipeline but I can also do this in the [27:14] middle so if I point to the speci path [27:16] it's showing not just where that data [27:18] went but where it came from as well so [27:20] you're seeing the entire history of that [27:22] particular um object both past and [27:26] future so so this is an example of um [27:29] representations that are linked together [27:31] where you point to part of one [27:32] representation and all the corresponding [27:33] parts of other representations are [27:35] highlighted bringing them all together [27:38] so that was kind of a toy program in [27:39] Nile what you see here is the actual [27:43] rasterization texturing pipeline that [27:44] they use in their system the rizer looks [27:47] like that and the texturing looks like [27:48] that you put in beas and outcome spel at [27:51] the end you don't have to follow this in [27:54] detail but what's really interesting is [27:55] that you can kind of tell what the [27:57] systems do doing just by going down and [27:58] looking at the pictures and kind of even [28:00] ignoring the code you can just see like [28:02] this data turned into that data that [28:03] turned into that data you notice that [28:05] there's different types of [28:06] representations for different types of [28:07] data so this process right here for [28:10] example outputs a stream of real numbers [28:13] so what's a good way of representing a [28:15] stream of real numbers well we'll just [28:17] try a bar chart so the environment tries [28:19] to pick a visualization that makes sense [28:22] for the particular type of [28:25] data so for the final example I'd like [28:29] to address the question of how all these [28:32] representations come to be in the first [28:34] place if you want a medium for working [28:36] with these representations the question [28:38] of how you create them is pretty [28:40] Central the thing about visualizations [28:43] is that they're visual we understand [28:45] them visually that you know that second [28:47] channel the visual thinking Channel and [28:49] so I think it's essential that they be [28:51] created in the same way created by [28:53] thinking visually and creating a picture [28:56] visually is is just called Drawing right [28:58] we've been drawing forever since the [29:00] time of cave paintings people have been [29:01] creating pictures by direct manipulation [29:04] of the picture itself and um [29:09] before before computers that was kind of [29:11] the only way to do it right so um if you [29:14] were a scientist or engineer you know 50 [29:16] years ago you had your pad of graph [29:19] paper you had your um your pocket full [29:21] of pens and when data came along you [29:24] would just draw it so [29:27] for example you know say I'm um a [29:30] scientist I run an experiment I get some [29:32] data I want to understand what's going [29:33] on so um I say well there's a couple of [29:37] variables I measured which seem to be [29:38] related so I'm going to plot one versus [29:40] the other as a um as a kind of scatter [29:43] plot here but the order that these [29:46] samples was taken also matters so I'm [29:48] going to connect them up with a line and [29:51] there's there's something else I [29:52] measured which was the the width like a [29:55] the region that these samples are valid [29:57] and I'm just going to draw that like so [30:01] and um it also matters whether these [30:04] samples cover the entire space or if [30:06] there's gaps I'm going to take a [30:07] highlighter and kind of fill in the [30:10] columns that these [30:12] samples cover and I can see that um [30:15] there's a gap right here that's not [30:17] covered by any sample and a gap over [30:18] here and so on and so there's this [30:22] wonderful um expressiveness and [30:25] directness in drawing that when you want [30:27] to see something you're like I want to [30:29] see marginals I need to see my marginals [30:30] you just [30:31] go right and there are your marginals [30:34] right and um the downside of this way of [30:38] working of course is that we're [30:39] producing this all by hand so that [30:41] limits um how complex it can be and it's [30:45] kind of a oneoff for the particular data [30:47] set so if we get new data we have to [30:49] like throw this away and draw a new [30:50] picture right and you have the same [30:53] problem with computer-based drawing [30:54] tools like illustrator they're one-offs [30:56] for predictive data set and so what [31:00] we've seen is that people have turned [31:01] away from drawing and have instead [31:03] turned to writing code that generates [31:06] pictures and processing or whatever and [31:09] working in this very um indirect [31:13] symbolic linguistic nonvisual way of [31:16] creating [31:17] pictures so instead what I'd like to [31:20] show you is a tool for drawing Dynamic [31:24] pictures a tool for creating datadriven [31:26] pictures pictures by direct manipulation [31:29] of the picture itself and I'm not going [31:31] to go into too much detail here because [31:32] this tool is kind of a talk in itself [31:34] the tool I have here it's like [31:36] illustrator it's a vector drawing tool I [31:37] can draw a line I can draw a shape and I [31:40] can scale it and I can rotate it and all [31:43] that the only thing that's different [31:45] from illustrator is that as I do these [31:47] things it's recording a series of steps [31:49] I drew a line drew a shape scaled it [31:51] rotated it and so on and these steps can [31:54] be parameterized by data that rotation [31:56] for example Le I can hook it up to a [31:58] parameter now when I change the data the [32:01] picture [32:03] changes so that's the only magic here I [32:05] have this spreadsheet like data [32:06] environment and I can hook it up to the [32:08] steps of the [32:10] picture so if I'm have that same [32:12] situation that I drew here I've got my [32:15] data I want to um understand what's [32:17] going on well maybe I'll start off [32:19] drawing it as a kind of scatter plot so [32:21] I'm going to draw a rectangle over the [32:23] entire canvas and scale the width by one [32:26] of the variables and scale the height by [32:28] the other variable and make that a guide [32:32] and draw a little dot at the end and now [32:35] I've plotted my first point I can Loop [32:37] that over all the points and now I've [32:39] got this kind of scatter plot now I want [32:42] to draw that line connecting all of the [32:44] points [32:46] so I'm going to draw a line using the [32:49] line tool from the previous point to the [32:51] next point and now I need to move my [32:53] little marker to keep track of where the [32:55] previous point was go goes around and [32:57] I've got this path and I'm going to make [33:00] it a little bit wider and make it [33:06] orange okay and now I um I want those [33:09] widths those regions that I was drawing [33:11] before so I'm going to draw a line [33:13] across the canvas scale it down by that [33:16] width variable and just kind of plop it [33:18] over here on the data point draw the [33:21] little wings that I had [33:23] before now I want that thing I did with [33:25] a highlighter I want to see the regions [33:27] that these are covering so I'm just [33:29] going to use a rectangle tool and draw a [33:30] rectangle whose top is at the top of the [33:33] canvas and whose bottom is at the bottom [33:35] of the [33:35] canvas and let me get rid of the stroke [33:38] there and make it [33:42] orange so now I can see there's a gap in [33:45] the samples here and there's this region [33:47] here that was overlapped by two samples [33:50] now I'm kind of losing track of what [33:51] direction this is going like whether [33:52] it's the samples were taken clockwise or [33:54] counterclockwise Direction so I think [33:56] instead of see lines between them I'd [33:58] rather see arrows so what I'm going to [34:00] do is I'm just going to draw an Arrow [34:02] Head just totally kind of freehanding it [34:04] here and plop it over here on the point [34:07] and rotate it by some amount which I [34:10] rotate by should rotate it by whatever [34:13] the angle that line [34:15] was and so now I've got my arrows kind [34:18] of chasing around the [34:21] path make it [34:25] Orange [34:29] let's scale it down so it's not so [34:32] ridiculous and now the scatter plot dots [34:34] are just kind of getting in the way so [34:35] I'm going to um select that and hide it [34:38] and so on and so I drew this picture the [34:43] same way I draw an illustrator by you [34:45] know directly manipulating the canvas [34:48] but this is driven by data so if I have [34:53] another data [34:55] set I drop it [34:58] in I get a new [35:01] picture I have a new data [35:03] set drop it in I get a new picture or if [35:07] I just go into the data by hand I can [35:09] just grab this number and kind of wiggle [35:11] it around and you see the picture [35:15] changing and um just as before if I [35:18] wanted to add anything I want marginals [35:20] I just use the line tool and draw a line [35:22] and now I've got marginals direct [35:24] manipulation of the picture itself [35:27] thinking geometrically instead of [35:28] thinking algebraically thinking visually [35:30] instead of thinking in language so this [35:33] tool can create all the graphics that [35:36] you kind of expect from a [35:45] visualization you can create Dynamic [35:47] shapes [35:49] yeah but what's important is that you [35:51] can kind of follow your own thought [35:53] process and create pictures that never [35:55] created before in their dynamic R by [35:57] data they can be used as representations [35:59] for systems in the same way of [36:01] everything I've been talking about so [36:04] far so to sum [36:08] up we need to see the behavior of the [36:10] system if we want a medium a new medium [36:13] for working with these systems for [36:15] understanding them in powerful new ways [36:17] we need to be able to see the behavior [36:18] of the system that's what we can do now [36:20] that we couldn't do on pencil and paper [36:22] we need to see the entire state of the [36:24] system across all the variables all at [36:27] once be able to make comparisons [36:29] recognize things we need to be able to [36:31] adjust the system see how the behavior [36:33] responds immediately see how the [36:35] behavior responds make those [36:36] associations between what we're changing [36:39] and how the behavior [36:40] responds we need multiple [36:43] representations of the system looking at [36:45] the behavior in different ways through [36:47] different lenses bringing out different [36:48] insights being able to compare them make [36:50] associations between these [36:53] representations we need to not just see [36:55] the behavior but also be able to inter [36:56] interact with it by measuring it [36:58] searching it transforming it whatever [37:00] makes sense this idea of being able to [37:03] interact with the behavior of the system [37:05] is super important we're normally over [37:07] here interacting with the structure of [37:08] the system and that becomes the system [37:10] so for example when you're programming [37:12] you're working in code you're thinking [37:15] about code you're you're interacting [37:17] with the code you're staring at the code [37:18] all the time the code becomes the [37:20] program but code doesn't matter what [37:23] matters is what the program is doing and [37:25] so we need representations where we're [37:28] over here on the doing side we're [37:30] focusing on the behavior of the system [37:32] we're interacting with the behavior [37:33] system we're staring at the behavior of [37:35] the system the behavior of the system [37:36] becomes what it's all [37:39] about we need um to be able to abstract [37:42] over individual systems see entire [37:44] families of systems and be able to [37:46] compare them we need multiple [37:48] representations that are linked together [37:50] point to one component and all the other [37:52] components are hooked up we need [37:54] different representations for different [37:56] types of data and most importantly we [37:59] need a way of creating these [38:00] representations that's in line with [38:03] everything else that I've been talking [38:04] about and I think that means drawing it [38:07] drawing these representations direct [38:08] manipulation of the picture [38:13] itself [38:16] so everything that I've shown you so far [38:20] are [38:22] hints these are nibbling at the corners [38:25] of a big problem the big problem being [38:28] what is this new medium for [38:30] understanding [38:32] systems we need to get away from pencil [38:35] and paper [38:36] thinking even when you're working on the [38:38] computer you're still thinking in pencil [38:40] and paper all the techniques we have for [38:41] working with systems are derived from [38:43] pencil and paper especially programming [38:46] um programming you're working in a [38:48] written language written languages were [38:49] designed for writing in the bottom right [38:52] corner here that's dyra handwriting he [38:54] handw wrote everything he led ically [38:56] reasoned about everything the idea of [38:59] visually and interactively exploring the [39:00] behavior of system wasn't even on his [39:02] radar he probably would have found it [39:03] repugnant and that's the Legacy that [39:06] we've [39:08] inherited so I think we have this [39:11] opportunity to reinvent how we think [39:12] about systems to create this new medium [39:16] and I don't know what that Medium is but [39:20] if you like to help find it let me know [39:25] thanks