A photograph of a dozen attendees mingling and chatting after the workshop.
Several of the attendees chatting long after the workshop had ended.

PLATEAU 2019 trip report: building community around human aspects of programming languages

Amy J. Ko
Bits and Behavior

--

For several years, a small community of researchers at the intersection of the fields of human-computer interaction (HCI) and programming languages (PL) have come together at a workshop called PLATEAU. The workshop exists for some very academic reasons: the HCI community tends not to care about programming very much, and the PL community tends not to care about people. The small community of academics that care about both of these have desperately needed places to share their work, or at the very least, commiserate about not being able to share their work in HCI and PL venues.

Of course, the workshop has accomplished for more than just comisseration. For many years it was colocated with the ACM SPLASH conference, which has always been a bit “people curious” for a PL conference. PLATEAU gave SPLASH attendees a safe space to express their curiosities about people, without being oppressed by the dominant logical positivist epistemologies of PL researchers. I’ve attended a few times in the past date, sharing some provocative thoughts about programming languages and otherwise networking with people with shared interests.

This year, however, the excellent organizers Joshua Sunshine, Elena Glassman, and Sarah Chasins tried something different. For the first time, they collocated it with an HCI conference, the ACM Symposium on User Interface Software and Technology. This brought an entirely different community and different perspectives to the workshop. Additionally, they treated the workshop much more like a workshop, intermingling short talks from presenters, and small group work to develop perspectives and ideas about how to plan and evaluate meaningful work at the intersection of HCI and PL. They also invited several more senior people to serve as mentors (including me, Titus Barik from Microsoft Research, and Thomas LaToza from George Mason), rounding out the typically more student-heavy population of attendees. The end result was a highly inclusive, richly interactive, and for of the students, deeply inspiring day of connecting, sharing, and reflection.

Attendees were from many different places. Rebecca Hao, an undergraduate from Harvard, presented work on people using multiple programming languages in one project. Jasper O’Leary, a PhD student from UW, talked about designing domain-specific languages for fabrication. Gauri Kambhatla, an undergrad from CMU, spoke about a study of a blockchain programming language. Eunice Jun, a PhD student at UW, spoke about how to support smarter sampling in data science contexts. Justin Lubin, an undergraduate from the University of Chicago, spoke about interfaces for type-directed program transformations. PhD student Wode Ni (Carnegie Mellon) and undergraduate Anael Kuperwajs Cohen (Macalester College) spoke about trying to teach math notations. Max Krieger, an undergrad from CMU, talked about applying visual narrative ideas from comic strips to explaining proofs. Will Chricton, a PhD student from Stanford talked about program synthesis as human augmentation. Yifan Wu from Berkely talked about the need for clearer definitions of tables and data frames in databases and data science. And finally, Chungqi Zhao (University of Tokyo) talked about live programming of deep learning, and Soya Park, a PhD student from MIT, talked about adapting machine learned classifiers with rule-based notations.

In addition to the presentations, the organizers facilitated three discussion sessions around the topic of designing and evaluating meaningful research contributions at the intersection of PL and HCI. The goal was to converge towards some representation of evidence standards, structured abstracts, or at least contribution types for the space, both to help inform reviewers at PL and HCI conferences about appropriate review criteria, but also to help shape future venues for such work, such as a new journal at the intersection. The group made some good progress on defining evidence expectations for theoretical contributions, new programming languages, investigations into programming language expressivity, and evaluating the utility of programming languages against programmers’ needs. For example, we brainstormed 5 types of programming language study designs that would go beyond less meaningful studies of time on task:

  1. Author-led case study of language expressiveness, enumerating existence proofs (e.g., look how easy it is to write a program to do X).
  2. Comparative analysis of expressiveness between notations (e.g., look how much easier it is to do X).
  3. Case study of independent, longitudinal evaluations of a language (e.g., we asked some people to use this language for long periods of time and found many strengths and weaknesses).
  4. Task-based evaluation (e.g., we asked people to try to do X with our new language and they were faster and made fewer mistakes than with a baseline language).
  5. Corpus study of expressive range (e.g., we analyzed all of the things people have done with X and found this range of artifacts).

The talks and the discussions led me to leave the workshop with a few big reflections:

  • There is a large and fundamental epistemological tension between the fields that is hard to resolve. PL is really only interested in ideas that are completely knowable, which doesn’t leave room for ideas that can only be partly known (i.e., human behavior and experience). HCI is really only interested in ideas that are valuable to people, which doesn’t leave a lot of room for provocative visions of new computational paradigms that require entirely reshaping the world (e.g., functional programming languages). PLATEAU isn’t often about this tension, but the tension is at play in all of it’s work, and it mirrors the tension between human behavior and computer behavior.
  • There is a major difference in epistemic stances about design. PL often starts with the assumption that there are “right” designs “better” designs. HCI begins with the premise that “there is a right tool for the job”, expressed by frameworks like cognitive dimensions of notations, which assume that all designs have tradeoffs. These are hard to reconcile, because PL people often refuse to acknowledge the utility of something if it offends some long held design principle (e.g., soundness), and HCI people often refuse to acknowledge the power of something that meets these long held design principle. Some have long called for an epistemological pluralism in computing, and PLATEAU is trying to make space for it, but it’s hard to create a lot of space when the dominant communities have no interest in making space.
  • It’s striking how despite both HCI and PL being disciplines that are about designing programming languages, how little both talks about methods for designing languages. This came up a lot at a Dagstuhl workshop I blogged about a few years ago, but we’ve made little progress since. We need way more people passionate about these methodological problems before the community really has the tools it needs to make progress.
  • The three big problems above are a lot for doctoral students, and even junior faculty, to take on without falling through the cracks between the two disciplines. It’s up to more senior people (like me) to try to fix some of these things to make space for more junior people to thrive.

Despite some of these challenges, I’m reassured by the passion that was in the room, the clear desire for community and support to solve these problems, and the exciting opportunities to design programming languages that empower everyone to make with computing if we can solve them. Thanks to Josh, Elena, and Sarah for organizing, and to the attendees for giving so much to an inspiring day!

--

--

Amy J. Ko
Bits and Behavior

Professor, University of Washington iSchool (she/her). Code, learning, design, justice. Trans, queer, parent, and lover of learning.