2026-07-17 –, Johnson Great Room
You're staring at a plot in a notebook. A subset of points doesn't look right. You want to select them, inspect them, understand why. In a traditional notebook, that means stopping to write more code and re-run cells. The exploration becomes an exercise in programming, not insight.
This talk comes in two parts. First, I introduce two primitives: reactive cell execution (marimo) and widgets (anywidget) that bridge Python and the browser. A brush stroke on a scatter plot becomes a Python selection. A slider flows through your analysis.
Second, I build intuition for composing these primitives—from quick explorations to reusable, domain-specific instruments that let you craft the interaction to match your scientific question.
Interactive widgets connect Python objects to browser-based UIs, letting you explore and manipulate data beyond static output. Composing widgets in traditional notebooks, however, means writing callback-based code (event handlers, state management, update coordination), a style that is error-prone and differs from the cell-based, REPL-like style most familiar to notebook users.
Reactive execution offers a simpler model. marimo (https://marimo.io) models a notebook as a dataflow graph. When a value changes, dependent cells re-execute automatically. The system ensures consistency. anywidget (https://anywidget.dev) provides a specification for creating custom widgets with Python and JavaScript, giving you access to any browser API from within a notebook. In a reactive notebook environment, these widgets participate in the dataflow graph like any other value.
This talk introduces these two primitives and builds up a mental model for working with them. I start with how existing widgets compose in a reactive environment: a slider updates a parameter, dependent cells react, a chart selection filters a dataframe. These are patterns that work out of the box.
From there, I show how to compose off-the-shelf widgets with custom ones to build domain-specific interactions, such as inspecting outliers or comparing experimental conditions. These don't need to be polished applications; they can live in a notebook and be shared with collaborators when useful.
Attendees will leave with a working understanding of these primitives and practical patterns for building interactive tools that help them and their collaborators make their data feel more tangible.
Trevor is a researcher and software engineer working on interactive computing tools in Python. He completed his PhD in the HIDIVE Lab at Harvard Medical School, where he developed interactive visualization and analysis tools for biological and AI applications. He created anywidget and contributes to open-source data tooling. Trevor now works at marimo, building a reactive notebook environment for Python. He lives in Brooklyn, NY with his two cats, Laird and Minnow, whom he’s very fond of.