"What's new?" is an interesting and broadening eternal question, but one which, if pursued exclusively, results only in an endless parade of trivia and fashion, the silt of tomorrow. I would like, instead, to be concerned with the question "What is best?," a question which cuts deeply rather than broadly, a question whose answers tend to move the silt downstream.
—Robert M. Pirsig, "Zen and the Art of Motorcycle Maintenance"
I am a fifth year MS/PhD graduate student in the Computer Science department. I work with Prof. Emery Berger in the PLASMA research group. Previously, I worked with Prof. Mark Corner in the PRISMS lab.
I am interested in the design and implementation of programming languages. In my opinion, programming a computer is more difficult than it needs to be. My work has focused on designing simple abstractions for difficult problems, tools that assist end-users write complex programs, and debuggers for input errors.
Flare and FlashRelateFlare is a domain-specific language designed to extract data from spreadsheets entered with ad-hoc layouts into relational tables. Flare's normalized output allows users to harness powerful data-manipulation tools with ordinary spreadsheets. Since many users would prefer not to learn a new programming language, we also designed FlashRelate, a program synthesis engine, that generates the user's intended extraction from a small set of positive and negative examples. Behind the scenes, FlashRelate finds the appropriate Flare program to perform the extraction.
CheckCell: Data Debugging for SpreadsheetsCheckCell is a tool that combines dynamic program analysis with statistical analysis to find likely errors in inputs. Testing and static analysis tools can help root out bugs in programs, but not bugs in data. CheckCell is written as a plug-in for Microsoft Excel. CheckCell highlights values in shades proportional to the unusualness of their impact on the spreadsheet's computation, which includes charts and formulas. Data debugging is non-parametric and does not require ground truth.
AutoMan: A Platform for Integrating Human-Based and Digital ComputationAutoMan is a language and runtime for general-purpose crowdsourcing. Our system handles quality control, payment, and task scheduling automatically. The programmer interacts with the system using a domain-specific language embedded in Scala. We have initially targeted Amazon's Mechanical Turk, however the crowdsourcing backend is pluggable.
Programmatic search engine queries are annoyingly difficult in Java/Scala. Bingerator makes search engine queries simple by letting you treat them as if they were ordinary collections. Under the hood, Bingerator employs a number of tricks to keep your transactions efficient. Available via Maven!. See GitHub README for details.
I've found myself having to write code that interacts with spreadsheet applications on a number of occasions. NoSheet abstracts proprietary spreadsheet APIs from your code. NoSheet is also thread-safe, fast, and gives you access to spreadsheet formula syntax trees. Still a work-in-progress; contributions welcome!