This is a post I have been wanting to write for a while. As of 2026, I have been working much more closely with my teammate Alexey Galda, and part of that has been one-on-one tutoring on the foundations of quantum computing. (To be able to learn from someone well-trained, in a one-on-one setting, is a real privilege!) Because I learn best by teaching, and because retrieval practice is the best way…
I've been sitting on a question since SciPy this year. Daniel Chen and I get together every conference to talk about education, it's our shared obsession, and this time the big one was: AI shortcuts everything now. How do we show people the patterns for learning deeply with it rather than letting it replace the learning? I didn't have a good answer. So I went and read the research. This post is…
I've spent the year on both ends of agent-written pull requests. I've opened them after a long coding session, half-hoping the reviewer catches what I only half-tracked. And I've reviewed them, eyes glazing over a forty-file diff, typing "looks good to me" while a quieter voice asks whether it actually does. (Reader, I've been the problem as often as the solution.) If you've used a coding agent,…
If you've ever spent an afternoon clicking through dose-response curves, flagging outliers by hand, there's a way to make the model do that automatically. People usually talk about Bayesian modeling in terms of richer uncertainty estimates, prior knowledge, and posterior distributions. All true, and all worth the switch on their own. But there's a benefit almost nobody talks about. Going Bayesian…
I took part in Round 2 of the alphaXiv x marimo competition . The task was to pick a recent ML paper, build a marimo notebook that teaches it, and submit a five-minute walkthrough. I had two papers I wanted to tackle, BitNet's 1.58-bit weights and JiT's "predict the clean image, not the noise," and a tool I've been enjoying: pair-programming marimo notebooks with a coding agent. The real surprise…
I just got back from SciPy 2026, my eleventh year at the conference. The loudest thread across the week was AI in open source, and what maintainers are supposed to do about it. The thread surfaced in a Scientific Python community session, run as a Birds of a Feather (BoF). Stefan van der Walt walked us through the project's work: the specification process (SPECS, the Python-community analog of…
One year ago at SciPy 2025 I wrote a post arguing that laboratory data should live in a single xarray Dataset , with sample IDs as the shared coordinate system. The spark for that post was Ian Hunt-Isaak's SciPy 2025 talk on xarray across biology. The hunch back then was this: store measurements, features, model outputs, and train/test splits in one labeled n-dimensional container, and the…
I had Qwen3.6 running on Ollama, hosted on Modal, and it worked. The model answered questions, the endpoint stayed up, and I wired it into my tools. I had a specific reason for running it: I am co-teaching a deep research agent tutorial at SciPy 2026, and I wanted every attendee to have a fast LLM endpoint for the hands-on sessions, including those who do not have access to a paid LLM provider.…
I gave a talk on 10 June at Data-Driven Pharma (East) 2026 where I built a Bayesian hierarchical model of protein melting points live, in front of an audience, in 27 minutes (including live questions). A coding agent, Cursor, wrote most of the code in a marimo notebook, paired using Marimo pair. I narrated, took questions while the model sampled, and we landed on a posterior over the melting…
I was debugging a transcript duplication bug in my voice-first gym coaching app. The coach's responses were being saved twice to the database, one turn apart. I traced it to a React 18 batching issue in the flush logic, refactored the state management into a hook, wrote a one-shot backfill to clean up the historical data, and committed everything. then I went to get a coffee. When I came back, the…
You are deep in a feature branch. Files are half-edited, tests are mid-run, your terminal is a graveyard of useful state. Then a teammate pings you: "can you review this PR?" Or a bug on main needs fixing right now. Your options feel lousy. You can stash your work and pray you remember the path back. You can commit a half-finished change just to park it. Or you can clone the repo into a second…
Voice-first AI means voice is the primary way you interact with the model. You talk, it talks back, it calls tools, things change on screen. In some of my projects, voice is the only way you interact with the model. There is no text box. That distinction changes everything about how you build, and I learned it through three projects. Yarnsmith is a voice-first game where an AI game master narrates…
My friend Sean Law asked me this question on LinkedIn recently, essentially, "Do you have a definition of the term agent harness?" I looked around and realized that nobody really has one. Simon Willison writes extensively about agents and defines the agent itself ("tools in a loop to achieve a goal") but leaves the harness unspecified. Andrej Karpathy calls "Claws" a new layer on top of agents and…
In my previous post , I compared three agent harnesses across workspaces, notifications, automations, and open-source status. Once you have picked a harness, the next question is: how do you actually use it? The framework I have landed on is three tiers: one foreground task, one or two background tasks, and however many automated tasks you want running in the shadows. Right now, as I write this…
I have used three coding agent harnesses extensively over the past few months: the Codex app, cmux , and Cursor . All three have been immense in amplifying my productivity. All three share a similar layout: workspaces on the left, a coding agent in the middle, and a terminal on the right. A terminal and a browser are really all you need. I decided to write up how they compare. The comparison…
My teammate Jackie Valeri and I recently co-taught a workshop at BioIT World 2026 on standardizing data science ways of working. Walking out of the room, I kept thinking about the same tension I have seen for years: most teams already feel the pain of missing standards. They have a harder time believing the effort pays off, and a harder time doing the people work required to make change stick.…
I have been thinking about what the core mission of a data scientist actually is in 2026, surrounded by AI coding assistants, LLM-powered applications, and the relentless buzz around adaptive software development. The answer keeps coming back the same: measurement. LLMs and AI coding tools are new instruments for that work, not replacements for it. And instruments do not decide what to measure.…
This year I ran a small experiment at ODSC East 2026. As I was speaking and catching up with old friends at the conference, I could only attend a slice of sessions. So I thought, rather than try to catch every last talk, what if I could figure out what the zeitgeist of the conference was using just the talk abstracts? If I scraped the schedule and abstracts across talks, workshops, and keynotes,…
This blog post is for anyone who is experiencing, or has witnessed people experiencing, AI-related burnout. I consider it a post-mortem of my own experience. For the first two weeks of April, I was experiencing a severe bout of anxiety. To those who know me, this is very much foreign and out of whack from my usual self -- which I describe by my spirit animal, a capybara that can calmly sit atop a…
Marimo Pair has been released! I've known about it since 11 March, when Trevor Manz did a demo over a Google Meet call, and I'm thrilled to see it being announced officially! I also had Trevor showcase it to the Agentic Data Science Workshop that I led on 3 April as a fundraiser for the SciPy Conference Financial Aid Program. Now, one thing I know about Trevor is that he almost exclusively…
Since the beginning of the year, as I've been really maxing out on agentic coding and trying to explore the patterns and figure out what's working and what's not, one particular thing has been sticking out: I'm paralleling so much of my work. I'm frequently doing five or six different open pull requests, and it's become frankly really exhausting. I've been trying to figure out why this feels so…
I want to tell you about canvas-chat, a project I built with heavy AI assistance. It's a visual, non-linear chat interface where conversations are nodes on an infinite canvas — think branching, merging, and exploring topics as a directed acyclic graph. The first commit landed on December 28, 2025. By December 30, it had sessions, matrix evaluation tables, web search, node tagging, and BM25 keyword…
The problem with lean times When the economy tightens, formal development opportunities are usually the first things to go. Co-ops get paused, training budgets shrink, and headcount freezes make it harder to bring in fresh talent. But the need to develop mentorship, coaching, and leadership skills doesn't disappear just because the budget did. So the question becomes: how do you get creative? How…
I owe this term to my colleague Wenhao Liu . He was the first one I saw at work who clearly articulated about air gaps and how they relate to building agents for work. So what exactly is an air gap? It is any point in a business or scientific process where a human has to intervene and perform manual work before a digital system can continue. The system cannot go end to end on its own; the human is…
Agent skills are great, but I've been thinking about this... skills alone aren't enough. I've been thinking about this while developing and using agent skills at home and at work. There's a distinction I've started to draw between two types of skills. Tool-specific skills document how to work with a particular tool or package. Those are fine, but really, pointing an agent at llms.txt often works…
This past weekend, I found myself revisiting a blog post from PyMC Labs titled "Running PyMC in the Browser with PyScript" . Published in 2022, it demonstrated something magical: running full Bayesian inference with PyMC entirely in the browser—no server, no installation, no data leaving your device. Users could define models, run NUTS sampling, and visualize posteriors, all client-side. I was…
Folks have asked me how I do personal knowledge management (PKM) at work. The question becomes more pressing when they learn how many projects and people I need to interact with on a weekly basis. At the time of writing, I manage twelve people across two teams, each handling 2-4 projects of their own. That's a lot of context to keep straight. I decided to document what I'm doing for PKM. Hopefully…
Speed without control is just chaos. I've seen teammates compress a week and a half of analysis work into half a day using coding agents. That's a 5-10x speedup. But here's the thing: that speed only matters if you stay in the driver's seat. Otherwise you're not doing data science, you're just generating artifacts. The real unlock isn't that agents write code fast. It's that they can be guided…
Having tasted what agentic coding could look like for software development, I wanted to know what it would look like for data science - this meant training machine learning models and answering scientific questions. So I started experimenting, at work, and on my own at home as well. Here are ten lessons I've learned from my experiments thus far. 1. Be prescriptive in your prompting Similar to…
Most of the conversation about AI coding models focuses on performance metrics. Benchmarks, evals, pass rates, latency. Useful stuff, but it misses the part that actually shapes my day-to-day: what it feels like to work with the model. Once you start using LLMs as coding agents, the qualitative experience becomes a throughput issue. It affects how often you intervene, how much you trust what is…
In part 1 , I covered AGENTS.md as repo memory. In part 2 , I covered skills as reusable playbooks. This post is about turning those two ideas into something you can run as a practice. The maturity model Once you have both repo memory and skills, you can think about how the practice evolves over time. Stage 0: Ad hoc prompting You keep re-explaining the same things in chat. It works, but it does…
In part 1 , I focused on repo memory with AGENTS.md . In this post, I am switching to the other lever: skills. Skills are prompt compression Skills are the other half of the system. When a task repeats, I do not want to keep re-explaining the workflow. I want a playbook I can invoke. What a skill is A skill is a folder with a SKILL.md file. The SKILL.md is the prompt. The bundled scripts and…
I want my coding agents to get better every week. Not in the abstract “the models are improving” sense. I mean it in the operational sense: if an agent makes a mistake, or takes a path I would not take, I want that feedback to stick. If I have to repeat the same preference every session, I am not using an agent. I am babysitting a very fast intern. The trick is that the model weights are not…
I ran into a frustrating bug this week in canvas-chat , my experimental canvas-based chat interface I built at the end of last year . The bug seemed simple on the surface: when users selected text from a rendered markdown table and clicked to highlight it, the highlighting would sometimes stop partway through, or highlight the wrong characters entirely. What started as a "quick fix" turned into a…
I've been mulling over this idea since last year January: A visual, nonlinear interface for LLM conversations—something like an infinite canvas where you could branch, merge, and see the shape of your thinking. It stayed in the "someday" pile because the implementation cost felt too high for a speculative side project; I wasn't skilled in browser technologies or anything UI-related. Then came the…
Tommy Tang asked me about my opinions on OpenCode, so here's what I've learned after spending significant time with OpenCode and Claude Opus 4.5. I don't code anymore, I build This is the punchline, so let me start with it. I've shifted from writing code to directing its creation. The change happened gradually, then all at once. I used to think about syntax, edge cases, and implementation details.…
I had a beautiful tmux status bar on my old laptop. Nord colors, powerline arrows, clean and minimal. The kind that makes you feel like a proper terminal power user. When I got a new machine back in April, I was too lazy to set up tmux properly. The sensible thing would have been to spend five minutes copying over my old config. Instead, eight months later, I finally spent an hour pair-programming…
Last year, I challenged myself to write one blog post per week, and I hit 53 posts by the end of 2024. This year, I doubled down on that commitment and wrote 50 posts in 2025. Including this one, it's 51, bringing me to 104 blog posts over two years. The year of coding agents Looking at my 2025 posts, one theme dominates: coding agents . I wrote extensively about how to work with AI coding…
I’ve been thinking a lot about career lately. This has been a pretty lean year for biotech; we've seen ups and downs at Moderna and across the industry. So, I want to offer a word of encouragement and a philosophy on work that I hope can be useful for you, regardless of where you are in your journey. It starts with a reframing of why we work. Do your best work for yourself I know there is a lot of…
I've been using coding agents for a while now, and I've learned a few patterns that make the experience much more productive. The thing is, a lot of these "productive patterns" aren't being shared enough—they're more like folk knowledge that you can only really pick up by watching someone else do their work live. I decided to write this blog post to kickstart conversations about the matter. Here's…
Within research organizations at most pharma and biotech companies, professionally-trained statisticians are often staffed at extremely low ratios relative to the number of lab scientists. By rough Fermi estimation, I'd hazard a guess that ratios anywhere from 1:10 to 1:100 are plausible, meaning most researchers have limited access to statistical expertise when they need it most, during…
I used to assume that coding agents like Cursor, GitHub Copilot, and Claude Code only work within a single workspace. This mental model led me to workarounds like copying files, creating complex multi-root workspace configurations, or constantly switching between projects. But coding agents can already read and write files from anywhere on your file system, not just the current workspace. The…
I recently discovered PocketFlow , a framework for building LLM-enabled programs created by Zachary Huang . The entire framework is tiny—only 100 lines of code. What caught my attention is that PocketFlow takes a fundamentally different approach to LLM-powered programs, including Anthropic's workflows and agents , by structuring them as graphs. As someone who used graphs in my thesis work, taught…
Coding agents promise to unlock significant productivity gains by working autonomously in the background—gathering context, running tests, searching documentation, and making progress on tasks without constant human intervention. The more autonomous they become, the more value they deliver. Yet this autonomy creates a fundamental tension: we need agents to act independently to realize their…
If you're like me, you might find coding with AI assistants somewhat addictive. And if you're like me, you might also like to write code in Marimo notebooks, the modern alternative to Jupyter that offers better reproducibility and cleaner Python development. Turns out there's a way to put these two together for automated Python development and data science workflows, creating a powerful…
I spent time digging through Anthropic's skills repository. These are my first impressions, organized for clarity and future reference. What the Anthropic Skills repository offers Creative & design workflows : algorithmic-art (generative art with p5.js), canvas-design (beautiful PNG/PDF outputs guided by design philosophies), theme-factory (pre-set or on-the-fly themes), and slack-gif-creator…
Like cars that lose value as soon as they roll off the lot, LLMs become outdated as soon as their training sets are fixed. Software documentation evolves constantly—new features, API changes, bug fixes, and best practices emerge daily. Yet AI agents are stuck with whatever knowledge was captured in their training data, creating a fundamental mismatch between what they know and what developers…
When Omar Khattabe presented DSPy 3.0 at PyData Boston Cambridge last week, I finally had the chance to dig into a framework that's been generating significant buzz in the LLM development community. As someone who's built structured LLM applications with LlamaBot , I was particularly curious about DSPy's core claim: that signatures represent the only abstraction you need for LLM-powered programs.…
This past week, I went on a building spree, a part of my ongoing ultralearning practice, and built multiple projects using AI coding assistants. After many months of working with AI coding assistants on real projects, I've learned that effective agent usage requires more than just good prompts. You need systematic workflows, external memory systems, and a willingness to let the agent fail fast so…
How to use multiple GitHub accounts on the same computer I recently ran into a frustrating situation where I couldn't push to a repository even though I had the right permissions. The problem? I was trying to use two different GitHub accounts on the same computer, and Git was getting confused about which account to use. If you're in a similar situation - maybe you have a personal account and also…