Future Programming Workshop
Strange Loop Sep 24, 2015

9:00-9:10 Introduction

9:10-9:50 BayesDB: Query the Probable Implications of Data
Richard Tibbetts (MIT) [video]

Statistics and machine learning are part of many new systems, but have been described as the “high interest credit card of technical debt.” Is it possible to make statistical inference broadly accessible to non-statistician programmers without sacrificing mathematical rigor or inference quality? BayesDB is a system that enables users to query the probably implications of their data as directly as SQL enables them to query the data itself. This presentation focuses on BQL, an SQL-like query managed for Bayesian data analysis that answers queries by averaging over an implicit space of probabilistic models. The demonstration focuses on analysis of a public database of Earth satellites.

10:00-11:00 Probabilistic Programming Systems
Vikash K. Mansinghka (MIT) [Invited Talk]

Probabilistic inference is a widely-used, rigorous approach for processing ambiguous information based on models that are uncertain or incomplete. However, models and inference algorithms can be difficult to specify and implement, let alone design, validate, or optimize. Additionally, inference often appears to be intractable. Probabilistic programming is an emerging field that aims to address these challenges by formalizing modeling and inference using key ideas from probability theory, programming languages, and Turing-universal computation.

This talk will focus on real-world applications of two probabilistic programming tools:
  1. BayesDB, a Bayesian database that enables users to directly query the probable implications of data tables without training in statistics. It will be illustrated using two applications: cleaning and exploring a public database of Earth satellites, and assessing the evidence for microbial biomarkers of Kwashiorkor, a form of severe malnutrition.
  2. Picture, an imperative probabilistic language for 3D scene perception. Picture uses deep neural networks and statistical learning to invert generative models based on computer graphics. 50-line Picture programs can infer 3D models of human poses, faces, and other object classes from single images.
It will also briefly describe progress towards an integrated probabilistic computing stack, touching on both stochastic digital hardware and on Venture, a general-purpose probabilistic programming platform with programmable inference.

11:00-12:20 Lunch

12:20-1:00 The Gamma: Programming tools for data journalism
Tomas Petricek (University of Cambridge) [video]

Computer programming may not be the new literacy, but it is finding its way into many areas of modern society. In this submission, we look at data journalism, which is a discipline combining programming, data analysis and traditional journalism. In short, data journalism turns articles from a mix of text and images into something that is much closer to a computer program.

Most data journalists today use a wide range of tools that involve a number of manual steps. This makes the analysis error prone and hard to reproduce. In this video, we explore the idea of treating a data driven article as an executable program. We look how ideas from programming language research can be used to provide better tools for writing (or programming) such articles, but also to enable novel interactive experience for the reader.

The project also makes data journalism more accountable and reproducible. We let the reader verify how exactly are the visualizations generated, what are the data sources and how are they combined together.

1:10-1:50 Constraint Logic Propagation Conflict Spreadsheets
William Taysom (Power Auctions LLC) [video]

We present a live coding system that bridges constraint logic programming with data-centric reactivity. Relations are treated as tables. A module is a table (or sheet of tables) grouped by columns. We enable speculative what-if analysis by locally overriding facts.

Facts may be associated values and constraints. Aggregation operators, such as sums, specify a value by folding over unifying substitutions. Constraints propagate among related facts limiting satisfiable domains. When a domain becomes empty, provenance tracking provides conflict maintenance and resolution.

2:00-2:40 Eve
Chris Granger (Eve) [Invited Talk] [home page]

2:40-3:00 Break

3:00-3:40 Apparatus: A Hybrid Graphics Editor / Programming Environment for Creating Interactive Diagrams
Toby Schachman (Communications Design Group) [home page]

An interactive diagram can be an effective way to communicate a mental model, because it can convey a way of seeing a problem or system. Currently, to create an interactive diagram one must write code to procedurally draw the diagram and respond appropriately to user input. Writing this code can take hours or days. Apparatus aims to reduce the time to create an interactive diagram from hours to minutes.

Apparatus combines the direct manipulation capabilities of a vector graphics editor with the dataflow capabilities of a spreadsheet. Through this hybridization, Apparatus supports both spatial and symbolic ways of working in tandem. Dataflow defines the state space of a diagram, algebra driving geometry. Dragging shapes moves through this state space, geometry driving algebra. Instead of function calls or object-oriented inheritance, Apparatus uses a "call by copying" pattern for diagram reuse. Reused diagrams do not need to be explicitly parameterized. Instead of loops, Apparatus uses spreads which allow any value to exist in a "superposition". This allows shapes to be looped over implicitly. By decomposing shapes into paths of points, it also enables Apparatus to plot curves.

3:50-4:30 A Live Programming Experience
Sean McDirmid (Microsoft Research) [video]

Live programming provides live feedback about how code executes while it is being edited. Unfortunately, live programming and similar efforts are still not very well understood with many attempts limited to demo-ware, fancier LISP-like REPLs, or Smalltalk-like fix-and-continue IDEs, which while useful, lack true live feedback. This essay presents a new live programming experience called APX (A Programming eXperience, a play on Iverson's APL) that aims to overcome these challenges with a language, type system, rich code editor, and virtual time machine designed for useful live feedback. We frame our discussion of live programming design and technology challenges in a description of APX.

4:40-5:20 Ceptre: A Language for Modeling Generative Interactive Systems
Chris Martens (CMU) [Invited Talk]

The field of game development has, over the last decade, grown to enable more creators with a more diverse range of skills to design and distribute games with an impressive palette of common mechanics and techniques. However, the process of sketching a novel system of rules and translating that design into executable code remains burdensome in every framework, either overly-constrained by genre or platform, or imposing a significant burden of general programming education on the game designer.

Ceptre is a proposal, based on linear logic programming, for a language that can be used to sketch systems of rules that may represent games or story worlds. Authors define their worlds of terms, possible relationships among terms, and rules for evolving configurations, enabling a platform-agnostic, language-level understanding of an interactive system. This language can be used to model character-based interactive storytelling, combat and resource management mechanics, quest dependency structure, and more. Outside of games, it may also be used to specify distributed protocols (such as voting) and distributed algorithms.