Reinventing the Python Notebook with Akshay Agrawal
Episode
46 min
Read time
2 min
Topics
Leadership, Design & UX, Artificial Intelligence
AI-Generated Summary
Key Takeaways
- ✓Reactive execution model: Marimo builds a static dependency graph by analyzing variable definitions and references in each cell using Python's built-in AST module. When a cell runs, all downstream cells automatically re-execute or are marked stale. This eliminates hidden state bugs that plague Jupyter users, where deleted cells leave ghost variables in memory for hours.
- ✓Pure Python file format: Marimo stores notebooks as standard `.py` files where each cell is a decorated function. This enables direct Git versioning without base64-encoded binary blobs, running notebooks as CLI scripts with `python mynotebook.py`, and importing functions directly from notebooks into other Python modules using standard import syntax.
- ✓Reproducible environments via UV and PEP 723: Marimo integrates with the UV package manager to auto-detect imports, prompt installation, and record dependencies in a PEP 723-compliant comment block at the file's top. On next run, UV creates an isolated virtual environment with exactly those packages, making environment reproduction a zero-configuration operation.
- ✓Notebook-to-web-app pipeline: Any Marimo notebook converts to a read-only interactive web app using `marimo run mynotebook.py` from the CLI, hiding code cells for non-technical stakeholders. UI elements like sliders, dropdowns, and selectable scatter charts bind directly to Python variables through the same reactive graph, requiring no callbacks or separate frontend framework.
- ✓LLM-friendly architecture: Because Marimo notebooks are plain Python files, Claude and other LLMs generate them reliably and can run them as scripts to verify correctness. Marimo's built-in AI assistant also accepts tagged variable references — like a DataFrame — and automatically injects schema and sample values as context, producing data-specific code generation rather than generic outputs.
What It Covers
Akshay Agrawal, creator of Marimo and former Google Brain researcher, explains how his open-source reactive Python notebook solves core Jupyter limitations — hidden state, poor version control, and the research-to-production gap — by storing notebooks as pure Python files with a static dependency graph.
Key Questions Answered
- •Reactive execution model: Marimo builds a static dependency graph by analyzing variable definitions and references in each cell using Python's built-in AST module. When a cell runs, all downstream cells automatically re-execute or are marked stale. This eliminates hidden state bugs that plague Jupyter users, where deleted cells leave ghost variables in memory for hours.
- •Pure Python file format: Marimo stores notebooks as standard `.py` files where each cell is a decorated function. This enables direct Git versioning without base64-encoded binary blobs, running notebooks as CLI scripts with `python mynotebook.py`, and importing functions directly from notebooks into other Python modules using standard import syntax.
- •Reproducible environments via UV and PEP 723: Marimo integrates with the UV package manager to auto-detect imports, prompt installation, and record dependencies in a PEP 723-compliant comment block at the file's top. On next run, UV creates an isolated virtual environment with exactly those packages, making environment reproduction a zero-configuration operation.
- •Notebook-to-web-app pipeline: Any Marimo notebook converts to a read-only interactive web app using `marimo run mynotebook.py` from the CLI, hiding code cells for non-technical stakeholders. UI elements like sliders, dropdowns, and selectable scatter charts bind directly to Python variables through the same reactive graph, requiring no callbacks or separate frontend framework.
- •LLM-friendly architecture: Because Marimo notebooks are plain Python files, Claude and other LLMs generate them reliably and can run them as scripts to verify correctness. Marimo's built-in AI assistant also accepts tagged variable references — like a DataFrame — and automatically injects schema and sample values as context, producing data-specific code generation rather than generic outputs.
Notable Moment
Agrawal revealed that a well-known professional sports team runs multiple Marimo apps internally, where staff type a player's name and retrieve full analytics dashboards — a use case he never anticipated when building the tool, illustrating how the notebook-to-web-app pipeline attracted non-research users organically.
Episode Transcript
Interactive notebooks were popularized by the Jupyter Project and have since become a core tool for data science, research, and data exploration. However, traditional, imperative notebooks often break down as projects grow more complex. Hidden state, non reproducible execution, poor version control ergonomics, and difficulty reusing notebook code in real software systems make it hard to move from exploration to production. At the same time, sharing results often requires collaborators to recreate entire environments, limiting interactivity and slowing feedback. MARIMO is an open source, next generation Python notebook designed to address these problems directly. Akshay Agrawal is the creator of MARIMO, and he previously worked at Google Brain. He joins the show with Kevin Ball to discuss the limitations of traditional notebooks, the design of reactive notebooks in Python, how MARIMO bridges research and production, and where notebooks fit in an increasingly agentic AI assisted development world. Kevin Ball or Kate Ball is the vice president of engineering at Mento and an independent coach for engineers and engineering leaders. He cofounded and served as CTO for two companies, founded the San Diego JavaScript meetup, and organizes the AI in action discussion group through Latent Space. Check out the show notes to follow Kbal on Twitter or LinkedIn or visit his website, kbal.llc. Akshay, welcome to the show. Thanks, Kevin. It's great to be here. Yeah. I'm excited to get to talk to you. Let's start out with a little bit about you. So can you give a quick background of who you are and how you got to our topic today, where you got to with Marimo? Sure. Happy to. So my name is Akshay. I've got a background in computer systems, but also machine learning research. I spent a little bit of time at Google Brain. This was a while ago back when Google Brain existed before it was taken over by DeepMind. So this was twenty seventeen to eighteen. I worked on the TensorFlow team. And then after that, I went back to Stanford to do a PhD in machine learning research. And through that experience and my time at Google, I realized what I really enjoy doing is building open source developer tools for people who work with data. So after my PhD in 2022, I started working on Marimo. And Marimo is it feels like a next generation open source Python notebook, and it is a notebook. But as we'll talk about in this episode, it's different than traditional notebooks in many ways. It's reproducible. It's stored as pure Python, so you can version it with a git, execute it as a Python script, and share it as an interactive web app too, if you want to. So let's maybe look into that. Right? I feel like notebooks have been a part of the Python ecosystem for a while. And when they came out, like, there was this big breakthrough of, like, oh my gosh. I can do this kind of interactive exploration of data and …
Get the full transcript (9,376 words) + summary by email — free
One-time email with the complete transcript and AI summary of this episode. No account needed.
One email, no spam. We’ll also show you what SignalCast does.
You just read a 3-minute summary of a 43-minute episode.
Get Software Engineering Daily summarized like this every Monday — plus up to 2 more podcasts, free.
Pick Your Podcasts — FreeKeep Reading
More from Software Engineering Daily
SED News: The NVIDIA-Hugging Face Deal, China’s Proxy Economy, the Open Weight Surge
Sep 8 · 52 min
Eye on AI
#321 Nick Frosst: Why Cohere Is Betting on Enterprise AI, Not AGI
Feb 17
More from Software Engineering Daily
Moving Beyond RAG with Precomputed Context
Sep 3 · 55 min
The TWIML AI Podcast
How AI Learns to Smell with Alex Wiltschko - #771
Jul 8
Books, tools, and gear mentioned in this episode
SignalCast may earn commission on purchases via these links.
Tools
“Akshay Agrawal, creator of Marimo and former Google Brain researcher, explains how his open-source reactive Python notebook solves core Jupyter limitations”
- UVRecommended
“Marimo integrates with the UV package manager to auto-detect imports, prompt installation, and record dependencies in a PEP 723-compliant comment block”
More from Software Engineering Daily
We summarize every new episode. Want them in your inbox?
SED News: The NVIDIA-Hugging Face Deal, China’s Proxy Economy, the Open Weight Surge
Moving Beyond RAG with Precomputed Context
The Death of Online Anonymity
TypeScript 7 and What Comes Next
The Gap Between AI Spending and AI Value
Similar Episodes
Related episodes from other podcasts
Eye on AI
Feb 17
#321 Nick Frosst: Why Cohere Is Betting on Enterprise AI, Not AGI
The TWIML AI Podcast
Jul 8
How AI Learns to Smell with Alex Wiltschko - #771
Dwarkesh Podcast
May 15
Eric Jang – Building AlphaGo from scratch
Equity
Feb 10
This Sequoia-backed lab thinks the brain is 'the floor, not the ceiling' for AI
Machine Learning Street Talk
Oct 4
AI Agents Can Code 10,000 Lines of Hacking Tools In Seconds - Dr. Ilia Shumailov (ex-GDM)
Explore Related Topics
This podcast is featured in Best Cybersecurity Podcasts (2026) — ranked and reviewed with AI summaries.
Read this week's AI & Machine Learning Podcast Insights — cross-podcast analysis updated weekly.
You're clearly into Software Engineering Daily.
Every Monday, we deliver AI summaries of the latest episodes from Software Engineering Daily and 192+ other podcasts. Free for one show.
Start My Monday DigestNo credit card · Unsubscribe anytime