I recently tried to formulate some design principles and ideas for a computing and programming system.

Here they are:

1/9
Meaning over Mechanism

Computers are mechanisms that serve human needs and human values. Any distortion of expression of meaning required fit the mechanism is a shortcoming. (Note: Distortion is different from precision)

2/
Cognitive Sympathy

The mental models required to use the machine fit common cognitive abilities: not having to juggle too many things in your mind, mapping to common metaphors, transparency and visualizations to aid comprehension.

3/
Human Design, Machine Rigor

(Not the other way around)

Since the machine can simulate itself very well, we don't need to mentally simulate the machine. (What do we do when we read code?) We supply the ideas and queries (precise enough form) and the machine supplies rigor.

4/
Pervasive Provenance

I can 'inspect element' almost anywhere and follow the chain of provenance - how the thing was constructed - for anything I see. There are multiple aspects (version history, execution trace, ...) and I can follow any path.

5/
Permeable Layers

It is possible to see under/below any layer of abstraction, in a safe manner, and see how the inside/lower corresponds to the outside/upper.

6/
Seamless Composition

When I compose any object A with another object B in my system, the only thing that matters is the highest level meaning encoded in these objects. The lower level data formats are irrelevant, adapters materialize as necessary.

7/
Extensive Affordances

All objects expose (via API/visual features) their abilities via introspection/reflection. More like *labelled* knobs and buttons, less like blank pages. Compositions of objects 'flows through' the affordances.

8/
Universal Hypermedia

System-wide, objects have resolvable ids. Related objects hold resolvable references to each other so their visualization easily provides navigable links. 'Scribbling in the margins' works everywhere by attaching annotations to any object. No silos.

9/9
You can follow @chatur_shalabh.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: