Programming as Communication
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
Technical environment design
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 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.
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.