Environment Technical and Social Environment Design toward Convivial - - PowerPoint PPT Presentation

environment
SMART_READER_LITE
LIVE PREVIEW

Environment Technical and Social Environment Design toward Convivial - - PowerPoint PPT Presentation

Rethinking Programming Environment Technical and Social Environment Design toward Convivial Computing Convivial Computing Salon, May 5, 4-5pm London (Zoom) Jun Kato *1 , Keisuke Shimakage *2 *1 National Institute of Advanced Industrial


slide-1
SLIDE 1

Rethinking Programming “Environment”

Technical and Social Environment Design toward Convivial Computing

Convivial Computing Salon, May 5, 4-5pm London (Zoom)

Jun Kato*1, Keisuke Shimakage*2

*1 National Institute of Advanced Industrial Science and Technology (AIST) *2 OTON GLASS, Inc.

5/5/2020 Rethinking Programming "Environments" 1

slide-2
SLIDE 2

Rethinking programming “environment”

5/5/2020 Rethinking Programming "Environments" 2

BACKGROUND

Programming environment design for development of programs that run in the real world

TOWARD CONVIVIAL COMPUTING

  • Technical environment design for collaborations
  • Social environment design for more inclusion

CONCLUSION

slide-3
SLIDE 3

A bit of self introduction...

Phybots

A toolkit (API and runtime debugger) for making “robotic things”

ACM DIS 2012

Songle Sync

APIs for controlling various devices in synchronization with music

ACM Multimedia 2018

DejaVu

IDE extensions for developing Interactive camera-based programs

ACM UIST 2012

5/5/2020 Rethinking Programming "Environments" 3

slide-4
SLIDE 4

Phybots (ACM DIS 2012) Jun Kato, Daisuke Sakamoto, Takeo Igarashi

5/5/2020 Rethinking Programming "Environments" 4

slide-5
SLIDE 5

Canvas Timeline DejaVu (ACM UIST 2012) Jun Kato, Sean McDirmid, Xiang Cao

5/5/2020 Rethinking Programming "Environments" 5

slide-6
SLIDE 6

Songle Sync (ACM Multimedia 2018) Jun Kato, Masa Ogata, Takahiro Inoue, Masataka Goto

6

https://api.songle.jp

slide-7
SLIDE 7

Code editor Programming language Toolkit (API) Domain-specific language IDE extensions Debugger Tutorial Integrated Development Environment (IDE) Visual programming

5/5/2020 Rethinking Programming "Environments" 7

slide-8
SLIDE 8

A bit of self introduction...

Phybots

A toolkit (API and runtime debugger) for making “robotic things”

ACM DIS 2012

Songle Sync

APIs for controlling various devices in synchronization with music

ACM Multimedia 2018

DejaVu

IDE extensions for developing interactive camera-based programs

ACM UIST 2012

PX for programs running in the real-world

slide-9
SLIDE 9

f3.js: A Parametric Design Tool for Physical Computing Devices for Both Interaction Designers and End-users

https://f3js.org

Jun Kato, Masataka Goto ACM DIS 2017

slide-10
SLIDE 10

Personal fabrication made easy

3D printers

Photo taken by Atsushi Tadokoro (CC BY 2.0) https://www.flickr.com/photos/tadokoro/5138646645

How about programming and device assembling?

Laser cutters Sensor and actuator modules

slide-11
SLIDE 11

Different tools and expertise needed for software and hardware design

  • Programmers need to imagine hardware while writing code
  • “new Button()” does not infer any hardware layout

Software Hardware

5/5/2020 Rethinking Programming "Environments" 11

slide-12
SLIDE 12

f3.js

Module repository for hardware metrics APIs for enclosure layout Live programming editor for microcontroller firmware and enclosure layout

IDE for creating laser-cut interfaces and microcontroller programs from single code base

slide-13
SLIDE 13

f3.js project page for programmers

slide-14
SLIDE 14

Code editor Programming language Toolkit (API) Domain-specific language IDE extensions Debugger Tutorial Integrated Development Environment (IDE) Visual programming

5/5/2020 Rethinking Programming "Environments" 14

Programing environments are designed for programmers

slide-15
SLIDE 15

Rethinking programming “environment”

5/5/2020 Rethinking Programming "Environments" 15

BACKGROUND

Programming experience design for development of programs that run in the real world

TOWARD CONVIVIAL COMPUTING

  • Technical environment design for collaborations
  • Social environment design for more inclusion

CONCLUSION

slide-16
SLIDE 16

Programming environments are (usually) different from runtime environments

5/5/2020 Rethinking Programming "Environments" 16

  • Programmers develop programs and publish them
  • Users install “apps” and use them
  • Once published, the programs cannot be edited
slide-17
SLIDE 17

Some environments allow “remix”

5/5/2020 Rethinking Programming "Environments" 17

“See inside”

to read and edit source code

“Remixes”

to play with edited programs

Scratch – Imagine, Program, Share. https://scratch.mit.edu/

slide-18
SLIDE 18

Some environments allow “remix”

5/5/2020 Rethinking Programming "Environments" 18

“See inside”

to read and edit source code

“Remixes”

to play with edited programs

Still, programing environments are designed for programmers

slide-19
SLIDE 19

What if we design it for “both”

  • Instead of compiled programs, source code is shared
  • Furthermore, users benefit from a respective UI design
  • Users can safely edit the programs without breaking them

5/5/2020 Rethinking Programming "Environments" 19

slide-20
SLIDE 20

f3.js project page for end-users

Live Tuning: Users can get a customized variation of the device

[LIVE 2016] Jun Kato, Masataka Goto

slide-21
SLIDE 21

f3.js variable declaration dialog for end-users

User-Generated Variables: Users can propose parameters for the device spec

[PX 2017] Jun Kato, Masataka Goto

slide-22
SLIDE 22

5/5/2020 Rethinking Programming "Environments" 22

Summary of our technical environment design

Meta-design framework

  • Programmers as meta-designers
  • Users as designers
  • Programming environments become socio-technical systems

Fischer et al. Revisiting and broadening the meta-design framework for end-user development. 2017.

A multi-layered UI design approach

  • Base layer for programmers
  • Another layer for users
  • Shneiderman. Promoting universal usability with multi-layer interface design. 2002.
slide-23
SLIDE 23

Rethinking programming “environment”

5/5/2020 Rethinking Programming "Environments" 23

BACKGROUND

Programming experience design for development of programs that run in the real world

TOWARD CONVIVIAL COMPUTING

  • Technical environment design for collaborations
  • Social environment design for more inclusion

CONCLUSION

slide-24
SLIDE 24

f3.js

Module repository for hardware metrics APIs for enclosure layout Multi-layered user interfaces for programmers and users

A programming environment is usually designed to consist of (merely) computational artifact

slide-25
SLIDE 25

A merely technical approach is “scalable” but sometimes in short of “social inclusion”

  • Computational support X is available for many people but for

some people with characteristics Y

  • For instance, f3.js can be used by a variety of people but is

not designed for people with visual impairment

5/5/2020 Rethinking Programming "Environments" 25

slide-26
SLIDE 26

Do-It-Yourself Empowerment as Experienced by Novice Makers with Disabilities Meissner et al., ACM DIS 2017

5/5/2020 Rethinking Programming "Environments" 26

slide-27
SLIDE 27

5/5/2020 Rethinking Programming "Environments" 27

A smart glasses built with a 3D printer and Raspberry Pi to help the father of one of the authors (Keisuke) who acquired dyslexia

slide-28
SLIDE 28

as a toolkit

5/5/2020 Rethinking Programming "Environments" 28

slide-29
SLIDE 29

People with visual impairments teamed up with evangelists to develop smart glasses

5/5/2020 Rethinking Programming "Environments" 29

slide-30
SLIDE 30

5/5/2020 Rethinking Programming "Environments" 30

OTON GLASS case studies

slide-31
SLIDE 31

An evangelist as part of a programming environment

  • Social inclusion is a hybrid of technical and social implementations
  • Programming environment design can be community design
  • Programming as communication between diverse kinds of people

5/5/2020 Rethinking Programming "Environments" 31

slide-32
SLIDE 32

5/5/2020 Rethinking Programming "Environments" 32

Summary of our social environment design

Programming as communication

  • Unlike tailor-made model, “the programmer” with visual

impairment produces ideas and decides what to build

  • The programming activity inherently involves communication

and enables empowerment

Programming by a community of people

  • A programing environment consists of not only computational

artifacts but also a community of people to collaborate

  • “People are message-passing objects” [Salon 2020 Day 1]
slide-33
SLIDE 33

Rethinking programming “environment”

5/5/2020 Rethinking Programming "Environments" 33

BACKGROUND

Programming experience design for development of programs that run in the real world

TOWARD CONVIVIAL COMPUTING

  • Technical environment design for collaborations
  • Social environment design for more inclusion

CONCLUSION

slide-34
SLIDE 34

Programming Experience (PX) research for convivial computing

Programming environments are usually designed exclusively for programmers but should be more inclusive!

They can be shared among programmers and users They can be hybrid of people and computational artifacts

5/5/2020 Rethinking Programming "Environments" 34