Sign in

trevor manz

@manzt.sh
528 followers 577 following 253 posts

middle child, creator of anywidget.dev building @marimo.io; prev @harvard.edu

PostsRepliesMedia
trevor manz @manzt.sh · 28/09/2026
Reworking our sandbox model brought improvements for both Pixi and uv users. The notebook’s manifest now drives setup and package changes, keeping the environment in sync. A new UI lets you edit requirements, track progress, and retry failed setup without restarting marimo.
010
trevor manz @manzt.sh · 28/09/2026
Scientific work often spans languages and tools. Pixi draws on Conda to bring in more than Python packages. For example, this notebook uses @marimo.io reactivity to filter a table interactively in R:
110
trevor manz @manzt.sh · 28/09/2026
Building bridges between open-source projects is a big part of why I joined @marimo.io. I got to know the @prefix.dev folks through @scipyconf.bsky.social, and worked together to make computational research easier to reproduce and share. Special thanks to @julianhofer.eu and Ruben Arts!
184
trevor manz @manzt.sh · 12/08/2026
my cats kill all the bugs it’s awesome
020
trevor manz @manzt.sh · 03/08/2026
github.com/prefix-dev/p...
github.com
feat: Support PEP 723 scripts with `--script` by manzt · Pull Request #6648 · prefix-dev/pixi
This PR follows the discussion in #6632 and reworks the earlier manzt/pep-723 prototype. Edited This PR originally added a pixi script command and conda-exec support. After review, it now uses --sc...
030
trevor manz @manzt.sh · 03/08/2026
pixi 0.76 can now run standalone python scripts in isolated, on-demand environments. dependencies live inline via PEP 723, like uv supports, but pixi can layer on conda and system dependencies too. fun to build this with @prefix.dev folks. coming to a @marimo.io notebook near you SOON.
Screenshot of a standalone Python script declaring Rich and the system package FFmpeg as inline dependencies, then running in an isolated environment with pixi run --script.
1216
trevor manz @manzt.sh · 20/07/2026
@marimo.io pair is now available in the Claude Codex and Codex CLI marketplaces, and today’s release of the @vscode.dev / cursor extension integrates directly with the native notebook editor. happy pairing
021
trevor manz @manzt.sh · 20/07/2026
blog: marimo.io/blog/noteboo...
marimo.io
Implementing marimo pair: letting agents use notebooks as a tool
Why we stopped wrapping the notebook with MCP tools and let the agent work inside the kernel.
120
trevor manz @manzt.sh · 20/07/2026
marimo.io/pair has a fresh landing page and some updates! for the launch, i wrote about why we moved beyond mcp and how we gave the agent @marimo.io itself as a tool through python.
marimo.io
marimo pair — a thinking canvas for you and your agent
Give your agent a marimo notebook. The ease of chat, the rigor of software.
131
trevor manz @manzt.sh · 16/05/2026
i’m @pycon.us with the rest of the @marimo.io team. come say hi!
040
trevor manz @manzt.sh · 12/05/2026
got to talk through more of the engineering behind marimo-pair, writing skills, and interactive visualization. thanks for having me on! www.youtube.com/watch?v=K791...
youtube.com
Pair Programming with AI in Your Python Notebook — with Dr. Trevor Manz
YouTube video by Super Data Science: ML & AI Podcast with Jon Krohn
071
trevor manz @manzt.sh · 04/05/2026
weeee
010
trevor manz @manzt.sh · 04/05/2026
Really enjoyed coming on Real Python and chatting about marimo-pair!
050
trevor manz @manzt.sh · 16/04/2026
need to rewire my brain
060
trevor manz @manzt.sh · 10/04/2026
on the orange website www.youtube.com/watch?v=6uaq...
650
trevor manz @manzt.sh · 08/04/2026
building marimo pair has been a new kind of engineering (for me). a lot changes when the consumer of your api is a model rather than another program. we’ve shipped “breaking” changes without upgrading or migrating the skill. the models just figure it out. hope you like it :)
190
trevor manz @manzt.sh · 30/03/2026
the latest release of the @marimo.io @vscode.dev extension adds LSP diagnostics for marimo rules multiple variable definitions and dependency cycles are flagged as you type:
010
trevor manz @manzt.sh · 25/03/2026
Snapshotting lets you just capture the full inferred type. I built up ~1000 lines of these quickly. Things subtly change and that's sometimes fine — snapshotting makes it visible and easy to update. You just review the diff and accept or fix.
000
trevor manz @manzt.sh · 25/03/2026
the biggest benefit is catching silent inference regressions or places where inference could be narrower (more precise). types can subtly change without a compile error you want to check the ~container~ type is correctly distributed, not just the leaves. that's hard to assert and harder to read
101
trevor manz @manzt.sh · 25/03/2026
I started quiver during my PhD but was stuck on the last mile — exhaustive tests that match inferred types to runtime behavior. The snapshot idea finally unblocked it and caught some edge cases and bugs. (Thanks for the help, Claude!). Give it a try and let me know what you think!
010
trevor manz @manzt.sh · 25/03/2026
One thing I'm most happy with is the testing setup. Wrote a utility that snapshots the inferred TS types _inline_ alongside runtime checks of the actual values. Change something in type inference (quiver) or runtime (flechette) and the snapshots break.
Code snippet showing a test for int32 columns. Three variables — col, arr, val — each have a twoslash type snapshot comment below them showing the inferred TypeScript type (Column, Int32Array, number). Below that, runtime assertions check that the actual values match: arr is an instance of Int32Array and val is typeof number.
110
trevor manz @manzt.sh · 25/03/2026
flechette columns have `toArray()` and `at()`. With quiver, you pick your level of strictness. The types propagate through `getChild`, `select`, `toArray`, iteration, even into nested structs and lists.
Code snippet showing three levels of schema strictness in quiver. q.js.number() returns a broad union of typed arrays from toArray(). q.int() narrows to integer typed arrays only. q.int32() narrows all the way to Int32Array. All three return number from at().
100
trevor manz @manzt.sh · 25/03/2026
flechette's `tableFromIPC` is to Arrow what `JSON.parse` is to JSON. quiver is like Zod or Pydantic for that — define your expected schema, check it at parse time, and get a flechette Table with the types overlaid
110
trevor manz @manzt.sh · 25/03/2026
Introducing quiver: a (type-safe) place to keep your arrows @arrow.apache.org quiver is a small schema library for Arrow, built on @idl.uw.edu flechette - Define table schemas in TS - Validate schemas at IPC parse time - Get back fully typed Tables (no type-casting) github.com/manzt/quiver
Code snippet showing quiver's API: import quiver, define a table schema with int32, nullable utf8, and float64 columns, then call parseIPC on bytes. Accessing row values returns fully typed results — name is string | null, score is number.
151
trevor manz @manzt.sh · 02/03/2026
spent some time last weekend getting higlass to play nicely inside @marimo.io molab.marimo.io/notebooks/nb...
193
trevor manz @manzt.sh · 02/03/2026
always fun to jump back into some interaction design work some details: - collapsible tree → progressive disclosure of full config - color → module type (i.e., the `nn` submodule) - opacity → trainability (e.g., frozen or no params)
010
trevor manz @manzt.sh · 02/03/2026
some of the first things new users notice and love in @marimo.io are our opinionated formatters (e.g., our table for dataframes) for v0.20.0 I worked on one aimed at AI engineers: a rich formatter for @pytorch.org `nn.Module`
A marimo notebook cell showing a TinyVGG model rendered as a collapsible tree. The header shows 8.5M params and 32.3 MB. Layers are color-coded: Conv2d and Linear in blue, BatchNorm2d in green, ReLU in orange, Dropout in red. Each layer shows its config and parameter count.
140
trevor manz @manzt.sh · 02/03/2026
always fun to jump back into some interaction design work. some design details: - collapsible tree → progressive disclosure of full config - color → module type (i.e., the `nn` submodule) - opacity → trainability (e.g., frozen or no params)
000
trevor manz @manzt.sh · 02/03/2026
some of the first things new users notice and love in @marimo.io are our opinionated formatters (e.g., our table for dataframes) for v0.20.0 I worked on one aimed at AI engineers: a rich formatter for @pytorch.org `nn.Module`
A marimo notebook cell showing a TinyVGG model rendered as a collapsible tree. The header shows 8.5M params and 32.3 MB. Layers are color-coded: Conv2d and Linear in blue, BatchNorm2d in green, ReLU in orange, Dropout in red. Each layer shows its config and parameter count.
100
trevor manz @manzt.sh · 22/01/2026
pals
030
trevor manz @manzt.sh · 22/01/2026
my new bug, minnow
130
trevor manz @manzt.sh · 29/12/2025
i'm sure there's some magic one could do with bundlers/ts config to configure imports from a bare "zod"... but not too bad
010
trevor manz @manzt.sh · 29/12/2025
notice the type-only export for UserId, so the only way to have a UserId instance is through `z.userid()`.
100
trevor manz @manzt.sh · 29/12/2025
i think i recall colin mentioning a pattern of BYOZ(od): ```ts import * as z from "zod"; export * from "zod"; export type { UserId }; class UserId {/* ... */} export function userid() { return z.uuid() .transform((v) => new UserId(v)); } ``` then, import * as z from "./zod.ts"
120
trevor manz @manzt.sh · 24/12/2025
breaking news: dads are learning @marimo.io
060
trevor manz @manzt.sh · 15/12/2025
thanks for having me!
020
trevor manz @manzt.sh · 19/11/2025
byoe (bring your own editor) for @marimo.io is here. built from scratch with LSP + uv marimo.io/blog/vscode
marimo.io
Announcing our VS Code and Cursor extension
Bringing a native marimo experience to your favorite IDE
073
trevor manz @manzt.sh · 07/11/2025
same… i went all in on effect.website for the @marimo.io VS Code extension. started with Schema, and then spread.. testing and error handling have been the biggest wins, but the cohesiveness of all the modules and strong patterns helps for collaboration. github.com/marimo-team/...
github.com
GitHub - marimo-team/marimo-lsp: A language server and VS Code extension for marimo
A language server and VS Code extension for marimo - marimo-team/marimo-lsp
020
trevor manz @manzt.sh · 16/10/2025
👀 preview: @marimo.io notebooks are Python first inside @vscode.dev. we're also integrating managed sandboxed environments for PEP 723 notebooks, powered by uv ofc. forget venvs
0185
trevor manz @manzt.sh · 03/10/2025
look ma, @marimo.io 🤝 cursor (w/ the upcoming @vscode.dev extension). things are starting to come together...
191
trevor manz @manzt.sh · 26/09/2025
the upcoming @marimo.io language server is fully astral stack. code base is small enough that i’m ok with some of the typing TODOs in preference for ergonomics… and astral team is shipping so fast!
210
trevor manz @manzt.sh · 24/09/2025
a new life for my 2019 macbook pro
030
trevor manz @manzt.sh · 22/09/2025
A play on Magritte’s painting: Python code df = df[df["a"] == 1] above the caption “Ceci n’est pas une pipe.”
031
trevor manz @manzt.sh · 22/09/2025
i’m used to hearing from strangers when my open-source "fails" them… this made my day
Screen shot of an email with text highlighted.

Subject: Zarrita application

The last few months I've been participating in ECMWFs code for earth program. In this project I've been building a CAMS dataset visualization heavily based on your work on Zarrita.

(highlighted text) I really enjoyed working with Zarrita and would not have been able to complete the project without your great work. Thank you!
090
trevor manz @manzt.sh · 20/08/2025
i like how the thumbnail is neither of us and instead one of the AV folks setting up the recording
010
trevor manz @manzt.sh · 13/08/2025
still lots to do... but we're cooking on a native @vscode.dev extension for @marimo.io notebooks
170
trevor manz @manzt.sh · 10/08/2025
not actively developed, just a small helper i made for a deno blog post. fine to use as-is, but recommend rolling your own utils like this (~100loc and mostly comments) github.com/manzt/deno-j...
github.com
GitHub - manzt/deno-jupyter-blog
Contribute to manzt/deno-jupyter-blog development by creating an account on GitHub.
100
trevor manz @manzt.sh · 07/08/2025
i know... emailed the organizers a few times a while ago and then just magically appeared the other day
000
trevor manz @manzt.sh · 07/08/2025
materials github.com/manzt/scipy-...
github.com
GitHub - manzt/scipy-2024-anywidget
Contribute to manzt/scipy-2024-anywidget development by creating an account on GitHub.
010
trevor manz @manzt.sh · 07/08/2025
if interested in creating anywidgets of your own, our tutorial was finally shared to youtube: www.youtube.com/watch?v=frEo...
youtube.com
Abdennur, Lekschas, & Manz - Bring your __repr__’s to life with anywidget | SciPy 2024
YouTube video by SciPy
273