Some of the most interesting and useful technologies in the past few years have involved the large-scale coordination of people and machines. Programming languages, however, tend to focus on the machines.
Traditional programming language design assumes that people are either programmers or end-users, not members of a decentralized computing system. As a result, programming -- or even thinking about -- such human-machine systems is awkward and laborious.
In this talk, I will discuss the challenges in developing a language that is intended to be executed by both computers and people. I'll present Dog, an instance of such a language, and Jabberwocky, the development stack in which it resides. And finally, I'll show some applications that are written simply in Dog, but would be difficult to write in other existing languages.