Jess's Lab Notebook

A pattern language for a new computing environment

For an alternate take, see Computing in 50 years.

Alternative titles:

  • Principles for real-time collaborative operating system
  • Principles for an end-user programming system

These principles are written in the form of Pattern Languages.

Programs should be composable

  • Unix command line - pipe input to output
  • Implies that the data should be exposed (see Data is always explorable)
  • Simple interfaces for connecting inputs and outputs
    • Wire diagrams?
  • What's the model?
    • Events?
    • pub-sub?

Collaborative

  • multi-user by default
  • users can:
    • control their own view and interactions
    • see other people's interactions in real-time
    • "broadcast" their view easily to others
  • bring your data to a friend's computer easily, take your data or your work back with you to your own computer

Everything is editable / customizable (moldable code)

  • "Inspect Source" for every program as it's running
  • Modify the program as it's running
    • Modify the code
    • Local "state" is always available and visible
  • Operating system and programs
    • How do you protect programs from piracy?
      • Different conception of "piracy"
  • "Work with the hood up"
  • Authorship-first environment

Time as a first-class citizen

  • Our experience of the world intrinsically occurs in time.
  • All of our lives consist of various experiences, only some of which have an accompanying digital form. This includes documents written, photographs taken, movies watched, tweets tweeted, source code written, books read, conversations had over coffee, sketches drawn, notes taken on a whiteboard, lectures attended, even chance meetings on the street.
  • Experiences that occur near to one another in time are inherently related, though often not in ways we are able to reflect on or discover.
  • Our memory is oriented naturally around events that happen near one another on our own personal timeline.
  • Streams of experiences embedded in time eases the burden of organization because categorization can happen automatically

Direct, tactile interaction with the computer across multiple displays

  • Spread out the work across multiple displays
  • Type of display should fit the use case
    • Reading while you go on a walk? book-sized tablet interface
    • Sketching out some ideas? table-mounted display
    • Spreading out ideas and sharing with a small group? wall-sized display
    • Working alone on an essay? smaller, traditional window to work in
      • minimize head movement for focused, output-based work
  • Think like a chef - kitchen work triangle
    • mise en place
    • atelier
  • Displays are directly tactile
    • fingers, pencils, multi-touch
  • Easily move things around to different displays

Always on by default

  • the computing environment never "shuts down"
  • whenever you come back to it, it's like a room that you just left, everything still in the place where you left it
  • because there are a potentially infinite number of spaces, this creates An Infinite Room for Thought
  • Because it's "always on", programs can execute in "development mode" and continually run
    • breaks down the distinction between development, staging, production
  • "always on" allows the Environment to span many devices
  • See Stop Writing Dead Programs

Environments span many devices

  • just as an environment will span many screens, so will it span many devices
  • perhaps most importantly, parts of the environment will execute on machines that have no display
    • GPUs for special purpose programs
    • other computers in the cloud, so to speak
  • the resources needed to run the environment will be shared across many devices

Heirloom - travels with you throughout your life

  • the computing environment will be something you begin creating and customizing at an early age
  • over time, the environment will morph and change in response to your changing needs, just like any good built environment (see Specifications for an organic and human building system)

Everything is addressable

  • every screen, every situation is easily reference-able, shareable, easy to get someone to "this spot"

Data is always explorable

  • The underlying data for every program is stored in such a way that it can be accessed, viewed, manipulated, ported
  • bring your own client to edit the data
  • richer data representations?
  • Study Specifications for an organic and human building system by CA and see what applies here

E7116325-9B8A-4F6E-9D5C-86070D6C7EAA.png

A pattern language for a new computing environment
Interactive graph
On this page
A pattern language for a new computing environment
Programs should be composable
Collaborative
Everything is editable / customizable (moldable code)
Time as a first-class citizen
Direct, tactile interaction with the computer across multiple displays
Always on by default
Environments span many devices
Heirloom - travels with you throughout your life
Everything is addressable
Data is always explorable