Skip to main content
Software Engineering Daily

Reinventing the Python Notebook with Akshay Agrawal

46 min episode · 2 min read
·
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.

Know someone who'd find this useful?

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.

Browse all Software Engineering Daily transcripts →

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 — Free

Keep Reading

Books, tools, and gear mentioned in this episode

SignalCast may earn commission on purchases via these links.

Tools

  • MarimoRecommendedBy guest
    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?

Similar Episodes

Related episodes from other podcasts

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 Digest

No credit card · Unsubscribe anytime