Building a team of internal R packages

On the jobs-to-be-done and design principles for internal tools

Generating SQL with {dbplyr} and sqlfluff

Using the tidyverse’s expressive data wrangling vocabulary as a preprocessor for elegant SQL scripts

Introducing the {convo} package

An R package for maintaining controlled vocabularies to encode contracts between data producers and consumers

Sticker-driven maintenance

Marketing maintenance work with irrational exuberance

crosstalk: Dynamic filtering for R Markdown

An introduction to browser-based interactivity of htmlwidgets – no Shiny server required!


Column Names as Contracts

Exploring the benefits of using controlled vocabularies to organize data and introducing the convo R package

oRganization: Design patterns for internal packages

An overview of the unique design challenges and opportunities when building R packages for use inside of a single organization

projmgr: Managing the human dependencies of your project

A lightning talk on key features of the projmgr package

RMarkdown Driven Development

How and why to refactor one time analyses in RMarkdown into sustainable data products

tidycf: Turning analysis on its head by turning cashflows on their side

An overview of how the tidycf R package led to process and cultural change at Capital One




R package for managing controlled vocabularies

satRday Chicago Conference Organizer

Speaker & Sponsor lead for 2019 and 2020


Hackathon-in-a-box templates for custom Rmd and ggplot2 themes


R package providing project management interface to GitHub


97 Things Every Data Engineer Should Know: Collective Wisdom from the Experts

Contributed chapter on use of controlled vocabularies to improve data communication, validation, and munging.

R Markdown Cookbook

This cookbook contains tips and tricks to help you get the most out of R Markdown. Topics include the automated generation of content (diagrams, text), customizing format (Pandoc, HTML, and LaTeX templates), workflow improvements (modularizing child documents, cross-referencing code chunks, chunk caching), modifying rendering behavior with hooks, and using alternative language engines.