I build tools for
working with data.

I am a principal software engineer at Posit, building a new AI-native Jupyter notebook experience for the Positron IDE.

Nick Strayer

Software engineer & data scientist

Short notes on software, data, visualization, and things learned along the way.

Selected work

Software · Posit

Positron IDE

Positron IDE
Code, data, and plots in one workspace.

A next-generation, language-agnostic data science IDE and spiritual successor to RStudio, built by Posit to unify data exploration, analysis, and production workflows.

Serving as tech lead for the Jupyter notebooks experience, building a completely reimagined notebook editor from the ground up.

Implementing AI-native notebook interactions that integrate intelligent assistance directly into the data analysis workflow.

A graphical experiment of exponential spread

A graphical experiment of exponential spread

A real-time JavaScript simulation of epidemic spreading on a network.

Built to provide intuition for spreading in constrained environments.

All parameters related to spread are tunable.

DataDrivenCV package

DataDrivenCV package

An R package for building a CV or resume from a spreadsheet of information.

Built around the pagedown package in R.

The framework the package supplies is entirely self-sufficient, so users are not dependent on package version changes.

PheWAS-ME

PheWAS-ME

Shiny app for exploring results of Phenome-Wide Association Studies (PheWAS).

Allows users to look directly at individual data-generating results to identify spurious or novel associations.

Built as an R package framework, allowing modular construction of apps based on a project’s needs.

t-SNE explained in plain JavaScript

t-SNE explained in plain JavaScript

Full implementation and explanation of the t-SNE visualization algorithm.

Featured in the “Explorables” section of Observable.

JavaScript statistics snippets

JavaScript statistics snippets

A series of small, self-contained functions for doing statistical computation in JavaScript.

Functions are optimized for speed along with legibility.

More projects Fewer projects

Shinysense

Shinysense

A set of Shiny modules for letting Shiny sense the world around it.

Currently has touch, sound, motion, and vision “senses.”

Bundled into an R package.

What are p-values, really?

What are p-values, really?

A resource for explaining what statistical significance really means.

Storified to try and make it memorable.

Takes the form of a reproducible R Markdown document so others can recreate it.

Making nice-looking websites using R Markdown

Making nice-looking websites using R Markdown

A walkthrough from start to finish of making a website using R Markdown and hosting it on GitHub.

Made in collaboration with Lucy McGowan.

Presented at the statistical computing workshop for Vanderbilt Medical Center.

See a sample site here.

Conditional survival curves on truncated survival data

Conditional survival curves on truncated survival data

A visual exploration of Kaplan-Meier survival curves on left-truncated survival data.

Drag the conditional slider to see how the survival curve changes depending on the age of entry.

All logic for the K-M curve is written from scratch in JavaScript and is much more performant than the survival package in R.

For more on the algorithm that generates a K-M curve, see the Wikipedia page.

What’s in season?

What’s in season?

An interactive exploration of what produce is in season.

Data scraped from here using Python.

Allows the user to select different in-season ingredients and search for recipes containing them.

Notebooks for scraping are in the GitHub repo.

Data visualization in R

Data visualization in R

R Markdown document for a statistical computing workshop I gave at Vanderbilt.

A brief overview of some common visualization mistakes and code to fix them in ggplot.

Provides an overview of some newer visualization tools.

Binomially distributed fun!

Binomially distributed fun!

Demonstrates how a sequence of independent Bernoulli trials makes up the binomial distribution.

Allows the user to toggle the parameters of the Bernoulli and generate samples.

Calculates and displays a 95% confidence interval and Wilson hypothesis test based upon the generated data.

All statistics functions are written from scratch in vanilla JavaScript.

The likelihood function

The likelihood function

An interactive exploration of the likelihood function.

Visually explains the concepts of support intervals and likelihood ratios.

Allows the user to input their own data for creating figures for reports/presentations.

Confidence intervals explained

Confidence intervals explained

Allows the user to explore what a frequentist confidence interval truly is.

To many people, including the scientists who use them, the behavior of confidence intervals is confusing.

All statistics functions are written in base JavaScript. See the GitHub repo for code.

Probability integral transformations

Probability integral transformations

Made in an effort to visualize what happens when you transform a probability distribution with a function.

Uses the normal distribution transformed by the normal CDF, resulting in a uniform distribution. See here for more info.

Inspired by my course work in probability at Vanderbilt.

Where are wildfires burning?

Where are wildfires burning?

Uses open data from NASA satellites on global temperature anomalies.

Fresh data is downloaded every day and pushed to the static page via shell scripts, avoiding the need for servers.

Data source.

Interactive Manhattan plot R package

Interactive Manhattan plot R package

An R package to generate interactive and embeddable Manhattan plots for genome-wide association studies.

Binds R and JavaScript + D3 using the htmlwidgets package.

What do farmers markets sell?

What do farmers markets sell?

Select different good types (e.g. vegetables, fruit) and see which markets sell them.

Assemble different combinations of goods to explore regional trends.

Dynamic layout adjusts to mobile or desktop views.

Be patient with it: more than eight thousand points are being drawn to the screen, which will bog down older phones and computers.

Data courtesy of Data.gov.

Interactive Manhattan plot viewer

Interactive Manhattan plot viewer

Developed as an experiment in exploratory data visualization.

Select different controls for comparison, e.g. non-dominant arm growth, to see linked SNPs.

A Manhattan plot is a commonly used tool in assessing genetic roots for traits.

Uses data from the FAMuSS study (Thompson et al. 2004).

Learn ASL numbers with Leap Motion

Learn ASL numbers with Leap Motion

First-place project at the 2014 UVM CS Fair.

Teaches numbers 0–9 in American Sign Language.

Utilizes three.js and WebGL for rendering.

Built to exploit multiple HCI and cognitive psychology theories (e.g. object consistency and the generation effect) in order to maximize the learning experience.

Experimental Leap Motion + D3.js project

Experimental Leap Motion + D3.js project

Wave your hands around and watch D3.js mirror you!

Requires a Leap Motion device.

In the future I plan on implementing ways to interact with D3 visualizations by recognizing gestures using machine learning algorithms.

Video of it in action for if you don’t have a Leap.

Note: When using, start by waving your hands around above the Leap Motion device and watch it calibrate!

LabInTheWild interactive visualization

LabInTheWild interactive visualization

A visualization developed for LabInTheWild at the University of Michigan to help participants place themselves among differing demographics.

Alternative energy filling stations in the U.S.

Alternative energy filling stations in the U.S.

Using d3.hexbin, I took 18k+ data points and binned them to help explore geographic trends in alternative energy filling stations.

Where does California get its energy?

Where does California get its energy?

A visualization that explores how electricity is generated in the state of California. Data was cleaned using Python and then the visualization was generated using D3.js.

About me

At Posit, I lead development of a new Jupyter notebook experience in Positron—a next-generation data science IDE. My career spans multiple disciplines—from being a journalist at the New York Times to a data scientist at Johns Hopkins Data Science Lab and even a “data artist in residence” at a geospatial visualization startup.

My Ph.D. from Vanderbilt University focused on statistical methodologies for network data, deep learning, and data visualization. At the University of Vermont, I studied statistics, mathematics, and computer science.

CV & resume

CV

A comprehensive list of my career accomplishments, publications, and experience.

Resume

A concise single-page summary of my data science career.

Built with my own R package: github.com/nstrayer/cv

Get in touch

I am always interested in getting involved in new projects or connecting with others. Feel free to reach out!