Programming as Communication

2019-2020
Convivial Computing Salon '20

Summary

Computers have become ubiquitous in our life and work, and the way they are programmed needs fundamental improvements. The prior effort often aims at improving programming experience for people with specific technical backgrounds (e.g., programmers, end-users, data scientists), respectively.

In contrast, throughout this work, we investigate how to make programming activities more inclusive and collaborative, involving people with diverse technical backgrounds. "A programming environment" does not need to be only for programmers. We consider that it should instead be designed for users with diverse technical backgrounds.

Such inclusive design enables the users to communicate with each other through programming-related activities, delivers benefits of programming to all of them, and would give empowerment to them.

Presentation materials

CCS talk

CCS slides

YouTube version has calibrated volume and subtitles while the Vimeo version is more extended and has a critique by Philip Tchernavskij and Q&A session.
For more details on the salon, please refer to its website.
The paper can be downloaded in the Publications section at the bottom of this page.

Technical environment design

We can design a runtime environment that is the same as the programming environment except for its dedicated graphical user interfaces for people who might not have prior knowledge of programming.

The following projects are concrete examples of such technical programming environment-design that realize "Programming as Communication." To see them in action, f3.js implements both of them and is available at https://f3js.org.

User-Generated Variables
UGVs are variables generated by the end-users' requests and implemented (or discarded) by the programmers. The use of UGV helps both sending feature requests and their actual implementation.
Live Tuning
Live Tuning is the subset of Live Programming interaction that only involves changes in constant values through parameter tuning interfaces. It expands Live Programming benefits to non-programmers.
2016LIVE '16Communication Live IDE

Social environment design

We can design a programming environment consisting of an evangelist and computational artifacts.

In the ongoing OTON GLASS project, we have been implementing a programming environment centered on a visually impaired person, or a "maker," who wants to build customized smart glasses. The programming environment consists of not only computational artifacts (a toolkit consisting of hardware components and software APIs) but also an evangelist who serves as an organic aid to utilize the toolkit.

Publications

Cite this!2020Convivial Computing Salon '20

Rethinking Programming "Environment": Technical and Social Environment Design toward Convivial Computing (to appear)

Jun Kato, Keisuke Shimakage
Companion Proceedings of the 4th International Conference on the Art, Science, and Engineering of Programming, pp.95-103
Copy to the clipboard

Revision history

5/15/2020
Add preprint of the paper.
5/9/2020
Add presentation recording and slides.
4/1/2020
Upload the initial revision.