Skip to content

Instantly share code, notes, and snippets.

@benchristel
Created April 22, 2020 16:33
Show Gist options
  • Save benchristel/fac9c76258fef222c824560a01b73fdb to your computer and use it in GitHub Desktop.
Save benchristel/fac9c76258fef222c824560a01b73fdb to your computer and use it in GitHub Desktop.
Computers: A Memory

COMPUTERS: A MEMORY

I have a lot to say and not much time to say it. I hope, therefore, that you'll forgive the somewhat rambling structure of this book. I have chosen not to hew to a particular structure or group topics around particular themes. This may be the only book I write on the subject of computing, so I want it to capture everything I have to say.

The most important thing is this: Computing should be joyful. Our interactions with computers should tempt us to test their limits and pursue absurd fascinations. A computer is a machine standing apart from the world. It has heft. It has edges and boundaries. Its action is to fold itself, over and over, in a virtuosic performance of hyperdimensional origami. It is surrounded by other things, its peers in the human sphere: desks and lamps and printers and paper. It is the minotaur at the center of a maze of connections. It is vulnerable: it can fail; it can be destroyed. It is like a library, or a symphony: strictly unnecessary, yet vital, full of life.

The idea of the computer, thus described, is under threat. The computer systems we have grown accustomed to have, in the name of efficiency and "ease of use", paved over this landscape of adventure. The modern way of computing partakes of a bland, stultifying opacity; only a sliver of its potential is granted to the people it most directly affects, its "users". More often than not, this dulling seems to come at the request of the users themselves. Yet the actual needs of these same users are not so easily simplified, and so the "simple" system is eventually deemed simplistic. The result is the SINKING PYRAMID effect, where each new layer of "simplifying" technology only adds to the complexity of the whole, without making permanent progress. Thus, the whole ecosystem oscillates between over-simplification and accidental complexity, and with every new layer the task faced by engineers—the number of systems that must be maintained and repaired to keep them working and secure—grows greater. The burden on users, too, is increased. Each new "simplifying" innovation obscures more layers, and thus more potential causes of failure, than the last, and thus it requires more knowledge to understand what is happening when the system inevitably misbehaves. Each new "capability" improvement must integrate more and more systems and use cases. The result is that we treat computer systems like disposable plastic forks: though we could go on using the same ones for centuries, they are so odious that we can't bring ourselves to do it. We must forever be throwing out the old and bringing in the new: not just because it is convenient, but because we are tempted by the perennial promise of greener grass. We never learn.

What hope is there that any of this will change? Not much, I think, if all we do is complain about the way things are. But I think I can do more than that. In this book, I want to present a vision for what computer systems of the future could look like. The changes I propose are not so radical. They can easily be achieved with present-day technology. All we have to do is reach for them, and keep the goal in mind.

Though I aim to make my maxims about computers and how to compute broadly relevant, I have no data to support them but my own experience. The most honest thing that I can do is to present my experiences, so you can see clearly how my conclusions unfold from them. If you have had similar experiences, I hope you will come to similar conclusions.


  • first memory: excel print dialog
  • layperson's view: a computer is the screen; software is the gui
  • the "smell" of programs
  • working around errors
  • the joy of manuals
  • first program: VB6 "it works" button
    • it produced something interactive
    • it looked like other programs, felt "official"
    • I did not follow any recipe exactly
    • I could not have produced it in any other way (unlike e.g. LOGO drawings)

On the eve of the year 2020, the general-purpose computer as a distinct, bounded entity has all but vanished, replaced by "ubiquitous computing". The shift has purported to empower computer-users, but in fact has harmed them. The solutions it provides treat symptoms, not causes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment