PyPharma: Modernising Clinical Data Transformation (PHUSE NJ 2026)

July 22, 2026

This is an annotated version of my talk “PyPharma: Modernising Clinical Data Transformation”, given at the PHUSE Single Day Event in West Windsor, NJ in July 2026. Last year at the same event I talked about building the pharmaverse in Python with polars. This year’s talk picks up from a very different 2026: the year AI shook up how tools get built—including for the people who built the Python data stack. ... Read more

The Curse of Documentation (posit::conf 2025)

September 17, 2025

This is an annotated version of my talk “The Curse of Documentation”, given at posit::conf(2025) in Atlanta in September 2025. You can watch the video or flip through the original slides. The talk is about why documentation sites so often have tons of information but not the information you need—and how a good user guide breaks that curse. The takeaway: docs become cursed when there’s nothing between one polished example and an API reference of 105 tiny functions—and a user guide is the thing that fills that middle layer. ... Read more

User Guides: engaging new users, delighting old ones (SciPy 2025)

July 9, 2025

This is an annotated version of a talk I gave at SciPy 2025 in Tacoma, WA, in July 2025. You can watch the video or view the original slides. The talk is about user guides—what they do that API references can’t, and the two key pieces to focus on for getting one right: onboarding and grazing. The takeaway: an API reference alone strands newcomers in a sea of 40+ functions, and a user guide fixes that by being concrete and right-sized. ... Read more

Plotting art with plotnine

July 14, 2024

Recently, I’ve been helping the plotting library plotnine—a port of ggplot2 to Python. plotnine normally is used to make plots for data analysis. But what if I told you there is another option: cobbling up generative art. In this post I’ll walk through the basics of using plotnine to create generative art. I’ll look at three pieces: plotting art data removing unecessary theme() elements (like axis ticks) examples of folks making generative art If you’re curious about plotnine and generative art, this is a great opportunity to submit something artsy to the 2024 Plotnine Contest (deadline is 26 July 2024). ... Read more

Two years at RStudio (now Posit)

June 1, 2024

Recently, I wrapped up two years working on the Open Source team at Posit. This last year was largely spent getting two open source tools—quartodoc and Great Tables—off the ground. The two packages have very different audiences. quartodoc feels developer focused. It creates API documentation for other packages, so its users are package developers. This audience is smaller, but willing to put in a lot of work to get what they need. ... Read more

Making Beautiful, Publication Quality Tables in Python is Possible in 2024 (PyCon US)

May 17, 2024

This is an annotated version of a talk I gave with Rich Iannone at PyCon US 2024 in Pittsburgh, about making beautiful, publication quality tables in Python with Great Tables. You can grab the original slides from Rich’s presentations repo. There are two recordings of the talk: a cleaner re-recording on the Posit YouTube channel (embedded below) and the live PyCon recording. The takeaway: a display table is a data visualization—it deserves the same design care as a chart, and it belongs in your reproducible code workflow rather than pasted together in Excel. ... Read more

The project questionnaire: from ideas to action

March 16, 2024

Over the past 5 years—while helping create projects at Code for Philly and sitting on organizing committees for events—I’ve often reached for the Code for Philly Project Questionnaire. In this post, I want to discuss what makes the questionnaire so useful, and the different situations I’ve ended up using it in. Here are some quick numbers on project questionnaires filled out over the years: Code for Philly projects: 25 questionnaires for projects related to bail funds, covid dashboards, etc… (See this article discussing the projects we focused on in 2020). ... Read more

One year on the open source team at RStudio (now Posit)

February 1, 2023

In early 2022 I joined RStudio’s open source group as its second full-time python developer. With one year under my belt, I wanted to look back on the things I’ve worked on, and what I’ve learned in the process. I started at RStudio with a concrete task—port the R library pins to python—along with the expectation that I’d work on my tool for data analysis, siuba. Along the way, I collaborated with the shiny team, and ended up developed a real enthusiasm for the value of good documentation. ... Read more

The Accidental Analytics Engineer (Coalesce 2022)

October 18, 2022

This is an annotated version of a talk I gave at dbt Coalesce 2022 in New Orleans on October 18, 2022 — you can watch the video or flip through the original slides. It’s about how data scientists accidentally fall into analytics engineering, and a few things that make the landing softer. The takeaway: there are two cultures of data science — the tidyverse worldview, focused on turning raw data into insight, and the modern data stack worldview, focused on serving clean data to end users — and data scientists fall into analytics engineering when their one-off analysis work quietly becomes a data-serving job. ... Read more

Pandas has a hard job (and does it well)

May 26, 2020

I’ve had to dive into pandas’ code base over the last year for a project (siuba), and my attitude has shifted dramatically from.. old attitude: why does pandas have to make things so hard? new attitude: pandas has a crazy difficult job. I think this is most apparent in the functions that decide what dtype a Block—the most basic thing that stores data in pandas—should be. For the ubiquitous Object dtype, it often figures out which of the many possible more specific types to cast it to. ... Read more

Follow on Twitter | Hucore theme & Hugo