![](/assets/photo-74be9998.jpeg)
Sam Estep
Hi! 👋 I'm Sam (he/him). I'm a rising fourth-year PhD student in S3D at CMU, advised by Joshua Sunshine. I do research on differentiable programming, with a particular focus on performance for interactive visual applications. Here are some of my projects:
- Rose is the core engine for differentiable programming inside Penrose, engineered for performance in the interactive web setting. We use JavaScript as a host language for metaprogramming, and (similar to JAX) use just-in-time compilation to get good performance. Unlike existing tools, we drastically reduce compilation time by allowing explicit definition of composable functions. Paper upcoming in ECOOP 2024; check out my publications list below for a preprint!
- GradBench is a work-in-progress extensible benchmark suite for comparing the performance of differentiable programming tools across domains. Our goal is to use containerization and a shared communication protocol to simplify installation and usage of different tools, and to use our new shared differentiable programming language called Adroit to make it simplify addition of new benchmark examples by transpiling to all existing tools.
Outside of work, I love bouldering, performing improv comedy, and baking. I'm also always looking for music and book recommendations, and trying to get my friends to join Letterboxd because it lets us take the set intersection of the movies you want to watch with the movies I want to watch (how cool is that?)
Webapps
Here are a few toys I've made over the years.
Minkowski sum
2023
Look, some polygons! Drag them around to see their Minkowski sum. (Still a work in progress.)
Elliptic curves
2017
See how the elliptic curve group law is associative: click three points to get each of their pairwise sums, then click the magnifying glass to see that all the three-way sums converge at the same point. Hit escape to reset or use the box in the top-left to select alternative parameters for the curve.
Lambda calculus
2016
Type Lispy lambda calculus expressions like
((λ x x) 42)
to see their reduced form. Backslash
automatically becomes λ
, and parentheses are
automatched.
Publications
- Codifying Visual Representations, in DIAGRAMS 2024, by Wode Ni, Sam Estep, Hwei-Shin Harriman, Jiří Minarčík, and Joshua Sunshine (pre-print; accepted, pending publication).
- Rose: Composable Autodiff for the Interactive Web, in ECOOP 2024, by Sam Estep, Wode Ni, Raven Rothkopf, and Joshua Sunshine (pre-print; accepted, pending publication).
- Minkowski Penalties: Robust Differentiable Constraint Enforcement for Vector Graphics, in SIGGRAPH 2024, by Jiří Minarčík, Sam Estep, Wode Ni, and Keenan Crane.
- Edgeworth: Efficient and Scalable Authoring of Visual Thinking Activities, in L@S 2024, by Wode Ni, Sam Estep, Hwei-Shin Harriman, Ken Koedinger, and Joshua Sunshine.
- NaNofuzz: A Usable Tool for Automatic Test Generation, in ESEC/FSE 2023, by Matthew C. Davis, Sangheon Choi, Sam Estep, Brad A. Myers, and Joshua Sunshine.
- Gradual Program Analysis for Null Pointers, in ECOOP 2021, by Sam Estep, Jenna DiVincenzo, Jonathan Aldrich, Éric Tanter, Johannes Bader, and Joshua Sunshine.
Blog
I don't blog much.
- 2021-02-20 Parallelizing nvcc