TAPAS 2016

I’m happy to announce that I’ll be the organizing chair for TAPAS 2016, the Seventh Workshop on Tools for Automatic Program Analysis. As always, TAPAS is co-located with SAS, which itself is co-located with PPDP and LOPSTR this year. The events will take place in the wonderful city of Edinburgh in September. At TAPAS, we (myself and the rest of the organizing committee) are aiming for an exciting set of talks on designing and implementing practical program analyses and putting them to use in real-world scenarios.

Paper Bidding With pdfgrep

I have a bunch of paper bidding to do for POPL, and in discussing with others I got a great tip from Eran Yahav on using pdfgrep to find papers of interest. I thought I’d quickly write up how I’m using it. First, I downloaded all the submissions. If your conference is using HotCRP, you can conveniently do a search for -conflict:me to get a list of all papers for which you do not have a conflict, and then download them using the links at the bottom.

Mold at OOPSLA'14

In a couple of weeks, Cosmin Rădoi will be presenting our work Translating Imperative Code to MapReduce at OOPSLA 2014. (Cosmin led this project, and the key ideas and system implementation are due to him.) The paper describes a tool Mold that can automatically translate small, sequential, imperative Java programs manipulating array-like data structures into efficient, parallel MapReduce programs. For example, consider the following sequential implementation of the “word count” program (the “Hello world!” of MapReduce): Map<String,Integer> wordCount(List<String> docs) { Map<String,Integer> m = new HashMap<>(); for (int i = 0; i < docs.size(); i++) { String[] split = docs.get(i).split(" "); for (int j = 0; j < split.length; j++) { String w = split[j]; Integer prev = m.get(w); if (prev == null) prev = 0; m.put(w, prev + 1); } } return m; } Mold can automatically translate the above to the following Scala code: docs .flatMap({ case (i, v9) => v9.split(" ") }) .map({ case (j, v8) => (v8, 1) }) .reduceByKey({ case (v2, v3) => v2 + v3 }) This looks a lot like the word count program for Apache Spark (scroll down to “Word Count”).

JS Delta Walkthrough

JS Delta is a delta debugger for JavaScript-processing tools, primarily written by Max Schäfer. Delta debugging helps when your tool is failing on a large input, by finding a smaller input that causes the same kind of failure. It has been widely used since it was first described by Andreas Zeller, e.g., to find small programs that cause failures in C compilers (see Delta and C-Reduce). The JS Delta documentation actually covers its usage options pretty well, but I thought it would be helpful to see a full walkthrough of the tool in action.

About this blog

I plan to use this space to write about various research-y topics: my own (typically collaborative) work, other work I find cool, and useful open-source tools. Inspired by blogs like Embedded in Academia, Existential Type, Inside 206-105, and The PL Enthusiast, I hope to write posts that help disseminate research results more broadly or perhaps generate an interesting discussion. I plan to tinker a bit more with the blog formatting and features as time allows.