Describe the concepts of threshold and ceiling in software tools and what tool designers should be striving to create
Explain the relative threshold and ceilings of visualization tools
Describe common visualization primitives like marks, axes, and scales
Implement simple visualizations with Vega-Lite
Explain the role of package managers in web development
Write code that follows OOP principles in TypeScript
Our discussion today is a very narrow slice of visualization. If you want more, consider taking INF 143
1
Mainframe Computing
Command-Line Interfaces
Let's return to the era of mainframe computing
Programs were 'sequential'
Program prompts for input, person waits on program
Sequential Programs
whiletrue {
print"Prompt for Input"
input = read_line_of_text()
output = do_work()
printoutput
}
Sequential programs literally modeled person as a file
2
Personal Computing
Event-driven Programming
As interaction increased in complexity...
Program waits for input
Input is queued, then acted on in order of entry
(e.g., mousedown, key press, etc)
Event-driven Programs
do {
e = read_event(); //<- input
displatch_event(e); //<- Processing
if (damage_exists()){
update_display(); //<- output
}
}while (e.type!= WM_QUIT);
Even today, all interactive software has this loop somewhere
Example: Button
What's behind a button click?
Set X and Y boundaries
Check if mousedown is within boundaries
Check if mouseup is also within boundaries
If so, then raise click event
What if you had to program this sequence (and all the others) every time you wanted to add a button to your website?
Understanding Tools
We build and use tools to reduce repetitive work
Identify common or important practices
Package those practices in a framework or toolkit
Make it easy to follow those practices
Put focus back on building the application
Understanding Tools
What is a user interface tool?
Bootstrap (make responsive design easier)
Angular, React, Svelte, and other web frameworks
Understanding Tools
The difficulty of tool design
Explored in seminal paper by Myers, Hudson, and Pausch
Need to understand the core practices and problems
Tools always evolving with technology and design
The tasks people use tools to solve change quickly, tools struggle to keep up
Brad Myers, Scott E. Hudson, and Randy Pausch. TOCHI, 2000. Past, present, and future of user interface software tools.
https://doi.org/10.1145/344949.344959
Understanding Tools
The difficulty of tool design
Myers, Hudson, and Pausch - Key terms:
Threshold: Difficulty to learn tool
Ceiling: How much can be achieved with tool
Path of least resistance: Tools influence what is created
Moving targets: Changing needs make tools obsolete
Understanding Tools
Threshold
Some tools are harder to learn
Depends on what a person knows already
Ex: A new programming language adds to threshold
Ex: Tools that leverage existing concepts, easier to pickup
Understanding Tools
Ceiling
Tools restrict what's possible
Ex: Your program could do much more if it had direct access to the bits on your computing device
Understanding Tools
Path of least resistance
"Linguistic Relativity"
Some thoughts in one language cannot be expressed or understood in another language (a.k.a., Sapir-Whorf Hypothesis)
In UI, our tools frame how we think about interaction and design (e.g., Bootstrap, Figma)
Understanding Tools
Moving targets
Codification eventually constrains design
Ex: Our understanding of how people interact with technology improves
Ex: New technology changes the needs of tools (e.g., AR/VR)
Understanding Tools
Threshold and ceiling
It's all relative; no absolute measure
In general:
Tools should be low threshold
Tools should also be high ceiling
The best tools are both
Threshold and Ceiling
Microsoft Paint
Adobe Photoshop
Threshold and ceiling form the basis of how we design user interfaces
Case Study
Visualization Tools
All visualization tools are governed by the same principles
Must render graphics on a display according to a set of rules