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& #39;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 & #39;inspect element& #39; 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 & #39;flows through& #39; 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. & #39;Scribbling in the margins& #39; 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: