Future Programming Workshop
Strange Loop Sep 24, 2015
BayesDB: Query the Probable Implications of Data
Richard Tibbetts (MIT)
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.
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:
- 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.
- 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.
The Gamma: Programming tools for data journalism
Tomas Petricek (University of Cambridge)
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.
Constraint Logic Propagation Conflict Spreadsheets
William Taysom (Innovative Auctions LLC)
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.
Chris Granger (Eve) [Invited Talk]
Apparatus: A Hybrid Graphics Editor / Programming
Environment for Creating Interactive Diagrams
Toby Schachman (Communications Design Group)
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
A Live Programming Experience
Sean McDirmid (Microsoft Research)
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.
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.