marimo and WigglyStuff: Python widget debugging tutorial

Learn how marimo widgets expose Python dependencies, trace async functions and chart logged variables, with experimental LiveEdit examples.

Player not loading? Watch on YouTube

The presenter demonstrates experimental widgets for marimo notebooks, with an emphasis on understanding Python code that an LLM might generate. A DAG widget arranges variables and their rendered outputs as a dependency graph. Drawing controls, rotation sliders and convolution kernels show how inputs affect images without repeated scrolling through cells. A second example models energy allocation across a tournament, while ScatterLog records slider values and win probabilities for comparison.

The walkthrough also covers JavaScript inside notebooks. EsmWidget accepts JavaScript as a string and connects notebook values to an animation using motion.dev. ManimWeb supports explanatory animations, though the presenter says it is not fully equivalent to the original Manim library. Observable Plot connects a Pandas data frame to a reactive chart. FramePlayer plays a sequence of Matplotlib images or Python image library objects and can loop them.

For debugging, AsyncFlow traces awaitable work and displays task timings, including child workers. The presenter notes that it provides only part of the debugging picture. LiveEdit inspects ordinary Python functions, shows variable changes and supports custom HTML representations. Clicking table columns creates charts after execution. The presenter calls this implementation version zero and points to WigglyStuff documentation, browser demos and Markdown API references for use with an LLM.