I am a researcher, technologist, and designer living in San Francisco. I currently work at Khan Academy, a not-for-profit organization with the mission of providing a free, world-class education to anyone, anywhere. Previously, I was part of the Early Product Development group at Khan; Human Experience and Design at Microsoft Research Cambridge; and Design, Technology, and Research at Northwestern University.
My research interests span programming languages, human factors, learning sciences, and personal computing. I’m interested in programming languages as user interfaces and tools for thought: in short, how language design affects the way people think about and write programs. For instance, I ask questions about the usability of static and gradual type systems, the role of functional programming within computing education, and how provable guarantees might alleviate cognitive load while writing software.
I graduated with a BA in Computer Science from Northwestern University, where I researched CSS inspection with Haoqi Zhang and Nell O’Rourke and peer grading algorithms with Jason Hartline. My studies were generously supported by scholarships from Google, Microsoft, Palantir, Box, and Quip, among others.
I really like browser engines, type systems, public transit, WebAssembly, Rust, crossword puzzles, classical music, policy debate, document preparation, cognitive disability advocacy, the Nintendo Switch, hiking, and critical theory.
Most people call me Slim; you should feel free to do the same.
New CSS inspection features inspired by Ply are coming soon to a Firefox release near you!
I’m attending this year’s Oregon Programming Languages Summer School. Be my friend in Eugene please
Our paper Ply: A Visual Web Inspector for Learning from Professional Webpages received an Honorable Mention Award at UIST 2018! I presented this work in Berlin (see the recording and my slides).
Started an internship at MSR Cambridge. Here, arugula is “rocket,” which is kind of fun.
I graduated! I was honored to be named Outstanding Senior in Computer Science.
Spoke at the Northwestern Big Ideas Forum, “How We Learn About Learning,” with professors Nell O’Rourke and David Uttal, and fellow undergrad Gabby Ashenafi.
Ply wins the CHI 2017 Student Research Competition! Northwestern Engineering has a nice write-up about the whole thing.
Received a Microsoft Tuition Scholarship for 2017-18.
Ply: Visual Regression Pruning for Web Design Source Inspection is accepted to the CHI 2017 SRC.
Recent escapades in research, development, and coursework.
Ply: Visual Web Inspection
CSS is syntactically straightforward, but has a steep learning curve and complicated semantics. Inspecting the source of existing webpages can help illustrate concepts, but such webpages are typically too complex to serve as useful learning materials. Drawing inspiration from prior research in both software engineering and the learning sciences, we present a new web inspection tool and set of techniques for pruning irrelevant CSS and identifying implicit dependencies between properties. Supervised by Haoqi Zhang and Nell O’Rourke. Honorable Mention Paper at UIST 2018, Berlin.
Evaluating peer graders
Most of the literature on peer grading focuses on inferring a true grade from a set of noisy reports. We study a different problem: inferring the skill and effort of reviewers, from the same reports. Supervised by Jason Hartline.
Tracing WebAssembly function calls
EECS 396: Systems Programming in Rust
Classroom exercise reports
I developed new exercise reports to help teachers visualize student progress and work through problems in the classroom. Mentored by John Resig during my internship at Khan Academy.
Visual regression pruning
We introduce a visual significance heuristic for removing irrelevant CSS source code during web design reverse-engineering tasks. CHI 2017 Student Research Competition Winner, Denver, Colorado.
Guiding Web Inspection with Tutorial Keyword Frequency
In order to bridge the gap between web design tutorials and real-world examples, we extend a web inspector to highlight CSS properties frequently mentioned across a given set of tutorials. Google Scholars’ Retreat 2016, Mountain View, California.
SVG Charting Library
An opinionated Ember.js addon to replace Highcharts with native SVG and DOM APIs. Released addon as a company-wide multiproduct. I worked on this project during my internship at LinkedIn, under the mentorship of Cody Coats and Michail Yasonik.
Predicting the Popularity of User-Generated Discussion Questions
EECS 349: Machine Learning
Using Python with the Reddit API and NLTK library, we collect information about AskReddit posts over a two-week period to analyze what makes a question popular. Alternating decision trees achieve 72.9819 accuracy with 10-fold cross-validation, an improvement over the ZeroR baseline of 51.0708. Features related to the language of the question, time and day of posting, and initial commenting behavior prove most informative. With Sameer Srivastava, Jennie Werner, and Aiqi Liu.
Northwestern Debate Institute
End-to-end Google Apps Script-based pipeline for publishing practice debate comments to individual students’ feedback pages. Previously, instructors needed to manually edit the feedback pages for all four students in order to provide feedback from practice rounds. Deployed at the 2015 Northwestern Debate Institute and subsequently adopted for the entire program in 2016.
I was a teaching assistant every quarter beginning my sophomore year, sometimes for two courses at once. Terms marked with an asterisk (*) denote a head or sole teaching assistant role.
EECS 396: Software Construction
EECS 474: Probabilistic Graphical Models
Graduate-level Bayesian and Markov network representation, inference, and learning. With Doug Downey.
EECS 111: Fundamentals of Computer Programming I
Fall 2015, Winter 2016, Fall 2016*, Winter 2017*, Fall 2017*, Winter 2018*
EECS 214: Data Structures and Data Management
Spring 2016, Spring 2017, Spring 2018
Data structures and algorithms in C#. With Ian Horswill.