Skip to content

Commit 7d802c1

Browse files
committed
reflections
1 parent d3a45fe commit 7d802c1

File tree

3 files changed

+62
-1
lines changed

3 files changed

+62
-1
lines changed

public/assets/play/mathjs.png

37.2 KB
Loading

src/data/play/04_mathjs.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ title: Mathjs
44
publishDate: 01 Dec 2016
55
description: a simple js library for performing basic math like statistical and set theory based operations
66
year: 2021
7-
thumbnail:
7+
thumbnail: mathjs.png
88
tags: coding, javascript
99
direct_link: https://www.npmjs.com/package/simplemathjs
1010
---
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
title: Thoughts on Don Norman’s Early Report - The Trouble with Unix
3+
publishDate: 10 Dec 2023
4+
description: My thoughts on Don Norman's Unix report & designing an interface without a GUI
5+
---
6+
7+
8+
## Focus Areas & Key Takeaways
9+
10+
The core argument is that while the Unix command line is elegant in its underlying system design, its user interface is not. Norman points out several inconsistencies
11+
12+
* Syntax rules in the command language vary
13+
* Function names often don’t align with their intended purpose
14+
* Behaviors are hidden from the user, making the system’s model difficult to grasp
15+
16+
For example, when a user first opens the command line, they’re greeted with nothing but a blank screen. It assumes prior knowledge of what to do. Even typing help often overwhelms users with exhaustive listings rather than guiding them toward possibilities
17+
18+
Unix is undeniably powerful, but Norman argues that its **interface was neglected**, leaving users struggling to bridge the gap between capability and usability.
19+
20+
21+
## Case in point: the `cat` command
22+
23+
One well-known inconsistency is with the `cat` command. Designed for concat*enating two files, its side effect—printing the contents of a single file—led users to adopt it as a file viewer (`cat <filename>`). While efficient from a systems perspective (no need to create a new command), this introduces confusion. The intention of the command doesn’t match its usage, raising the cognitive load for users.
24+
25+
This illustrates Norman’s broader point: Unix prioritizes optimal use of primitives over user comprehension, resulting in a steeper learning curve and a less friendly experience.
26+
27+
28+
## Feedback (or the lack thereof)
29+
30+
Another critical flaw is the command line’s limited interactive feedback. Unlike a human conversation, it rarely acknowledges context or warns users about irreversible actions. For example
31+
32+
* Quitting an editor without saving may delete work, yet no warning appears
33+
* Running destructive commands offers no safety net unless explicitly coded
34+
35+
These design decisions might benefit scripting and automation but often punish interactive users
36+
37+
38+
## Aliases as a design hack
39+
40+
A partial solution emerged in the form of aliases, which allow users to customize command names and workflows to suit their mental models. While useful, this is essentially a workaround—shifting the burden of good design from system architects to the end user.
41+
42+
Norman’s Three Principles for System Design
43+
44+
## Norman emphasizes three timeless principles:
45+
46+
* **Be Consistent:** A coherent set of rules should be applied across all commands and contexts.
47+
48+
* **Provide an Explicit Model:** Users build mental models of systems. If none is provided, they’ll invent their own—often incorrectly.
49+
50+
* **Provide Mnemonic Aids:** Use familiar, memorable terms to help users retain commands more easily.
51+
52+
## Broader Reflections
53+
54+
Norman’s short paper feels less like a critique of software and more like an exploration of designing a language. Communicating with the command line is akin to conversing in a protocol, which in turn recalls the movie Arrival, where the structure of language itself becomes a tool for thought
55+
56+
And here’s a fascinating thought: with the rise of large language models like ChatGPT, the way we communicate with computers is shifting dramatically. Perhaps these systems can finally deliver the conversational feedback loops Unix lacked
57+
58+
## Links
59+
60+
- [🔗 How to design for the commandline (Youtube)](https://www.youtube.com/watch?v=zsjeZZVAk1E)
61+
- [🔗 The paper (PDF file)](https://people.computing.clemson.edu/~jmarty/courses/LinuxStuff/NormanTheTroublewithUnix.ScanofDatamation1981.pdf)

0 commit comments

Comments
 (0)