1968 Demo - Douglas C. Engelbart, PhD et.al.

 

 

 

 

00.01.35

[Applause]

 

 

 

 

00.01.41

I hope you’ll go along with this rather unusual setting and the fact that I remain seated when I get introduced, and the fact that I’m going to come to you mostly through this medium here for the rest of the show, and I should tell you that I’m backed up by quite a staff of people between here and Menlo Park where Stanford Research is located some 30 miles south of here and if everyone of us does our job well, it’ll all go very interesting, I think.

 

 

 

 

 

[Laughter]

 

 

 

 

 

The research program that I’m going to describe to you is quickly characterizable by saying, if in your office, you as an intellectual worker were supplied with a computer display, backed up by a computer that was alive for you all day and was instantly responsible, responsive…

 

 

 

 

 

[Laughter]

 

 

 

 

00.02.32

 

 

 

 

 

 

 

 

 

 

00.03.10

Instantly responsive to every action you had, how much value could you derive from that? Well, this basically characterizes what we’ve been pursuing for many years in what we call the Augmented Human Intellect Research Center at Stanford Research Institute. Now the whole session is going to be devoted to trying to describe and present to you the nature of this program, but unfortunately or fortunately, the products of this program, the technology of it lends itself well to an interesting way to portray it for you, so we’re going to try our best to show you rather than tell you about this program.

 

A very essential part of what we have developed technologically, as what does come through as displayed to us, and I’m going to start out without telling you very much about the program and just run through a little bit of the action that this provides us. So in my office, I have a console like this and there’re 12 others at our computer supplies, and we try nowadays to do our daily work on here. So this characterizes the way I could sit here and look it up. Give me a blank piece of paper, that’s the way I start many projects. So with my system, that’s a good start. I’ll sit here and say I’d like to load that in.

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

So…sorry about that!

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.04.00

So I’m putting in an entity called a statement and that’s full of other entities called words.

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

And if I make some mistakes, I can back up a little bit.

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

So I have a statement with some entities words and I can do some operations on these and copy a word because that word likes to copy after itself. In fact there are a pair of words I’d like to copy after itself and I can just do this a few times and get a bit of a trail there and there are other entities like text, say after there I’d like to copy from that entity; point to that point, and it’ll copy it, right, so I could get myself some material on my blank piece of paper and then I’d say, well, this is going to be more important than it looks. So I’d like to set up a file. So I tell the machine, alright I’ll put through a file and it says, oh, I need a name. I’ll give it a name. I’ll say it’s a sample file.

 

 

 

 

 

[Clicking]

 

 

 

 

00.05.00

 

 

 

 

 

 

 

 

 

 

 

 

 

00.05.54

And I’ll say, please output it. It says it did and then it comes back automatically with an origin statement or header, telling me the name of the file and the date and the time and who established it, and thereafter I can always do something. I can ask for the status of a file and it’ll tell me that information. Very small file now, owned by me, last written by me, very shortly ago, that set another interesting data in there. So we’ve seen how we can start with a blank piece of paper and go to developing a file. This file is one statement with a few words in it. Let’s make more statements. I’ll say, copy that statement and lo and behold, I have another one, copy that one, another one, I can even copy groups of statements. I can say, after that one, copy the group from there to there, and it does. I can look at that and say hmm…probably goes off the screen.

It’ll be interesting if I could ask the computer to collapse that. Perhaps to show me just the first line of each of those statements. Alright, please do that. So it did. This is one aspect of what we’ll use over and over again through this presentation, what we call, view control where no matter where in a file we’re looking, we can ask it to use any amount of a large number of parameters for constructing a view at that point in the file that best suits our need at the time. This one wants us to give an overview of the thing. So I’ll say, well I have this, I don’t want them all to be statement ones, so I’ll just replace the word there…with a two and how about that one with a three.

 

 

 

 

 

[Clicking and beeping noise]

 

 

 

 

 

Just to place to forget how to count. So I can look and say alright, that statements one, two, three and four. If I’d like to make them a little prettier; I can now, hmmm…

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

I can go to work and neaten them up a little, which I don’t want, I always do. Oops…

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.07.03

You can tell that I have not warmed up yet.

 

 

 

 

 

[Laughter]

 

 

 

 

 

I hope you can tell…

 

 

 

 

 

[Laughter]

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00.07.52

Alright…alright, so I’m going to lean it up, line it up and I can say for instance, other entities like an invisible string. I don’t know whether that tabs or characters in there but I can say if I want to and place that invisible…replace that invisible string with just one character, not that character, that one, space and it’ll do it. So I can look at that and say, I have files; one, two, three, four, five, six and I’d name them that way but that’s usually a sort of a pain to do that, so I’ll ask it to number them themselves and one of the views is such that it’ll give you a list of numbering for each of those statements, and I can also open them all up or ask for them without numbers, however I wish, then I can output them.

So we’ve seen ways to work fairly fast with the entities of a statement in a file, create a file. I can delete that file or mess it up considerably. I can find…I was going to say I want to delete that word by accidentally hitting that entity instead, watch what happens. Sort of replaces just the whole thing, it's nothing. That occasionally happens where you say, alright, I’ll load that file.

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.08.18

It’ll come back in, as it was I last saved it, telling me the date that I wrote it, unfortunately I didn’t save enough. Well, I’m through with this example right now. Let me go to a file that I prepared just after my wife called me and said, on the way home, would you do a little shopping for me. So as soon as she said that, I got my system….

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

Organized….

 

 

 

 

 

[Long beep]

 

 

 

 

00.08.47

 

 

 

 

 

 

 

 

 

00.09.21

And made a shopping list, so…It’s got quite a few items on it and if want to, I can see that, yes, those are numbered statements and I can say there’re ways I can scan down it, like I can point to ten and say put it at the top and I scan up, I point to 23 and I got quite a few, and I remembered that’s about as far as it got when she said, well call me back when you’re ready to go shopping and I’ll tell you the rest of the things. So let me jump back ahead of the list and I can do things like, begin to reorganize a little bit.

 

Well, I say after bananas, it’s more likely that I’ll take the carrots there and so carrots move right up behind bananas, and aspirin doesn’t really belong there. I think aspirin goes after paper towels in the order. Well, pretty soon I would…I would begin to have a lot of trouble keeping that straight. So let me organize it by saying, um…

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

Just generally produce…

 

 

 

 

 

[Beep]

 

 

 

 

 

Alright, I’m going to try that again.

 

 

 

 

 

[Clicking]

 

 

 

 

 

I entered a statement that says, hey that’s fine.

 

 

 

 

 

[Beep]

 

 

 

 

 

Right there, I suspect that something is going wrong and I would call the programmer or the hardware man. And tell him; I made it.

 

 

 

 

 

[Laughter]

 

 

 

 

00.10.20

Produce, I really haven’t warmed up to this thing yet, so I’ll say what produce, I’ll categorize things. Let me look at it that way and I’ll say, let me move a statement, for produce, carrots and I’d like to sub-categorize in it. So it moved…

 

 

 

 

 

[Beep]

 

 

 

 

 

There it is. I got…hey, that’s what happened.

 

 

 

 

 

[Long beep]

 

 

 

 

00.10.48

Alright, produce I've got carrots and I’ll move under there also bananas.

 

 

 

 

 

[Long beep]

 

 

 

 

 

And in fact, I could move a whole group under there, saying oranges and apples also…

 

 

 

 

 

[Long beep]

 

 

 

 

00.11.00

So I can begin categorizing things like that and if I looked at the numbers now, I’d find that these…these items fit under there as a subset and I realize I can categorize quite extensively, I could introduce a new thing under there…..

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

That was…

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

Something I just invented; skinless banana but I….

 

 

 

 

 

[Laughter]

 

 

 

 

 

Have to go there…

 

 

 

 

 

[Laughter]

 

 

 

 

 

And look at it. So part of our view control besides this thing we’ve shown you, of showing numbers or not, as also whether we can show you some of these different levels or not. I can say all I want is C 2 levels or only one level deep in there. That makes it very nice for studying it or I can do something like; when I say, let’s put produce at the top. Let’s open up one level below it and only show me what’s below it. And then another level if I wish and then no numbers, so these moving around with jump to identities.

 

 

 

 

 

[Beep]

 

 

 

 

00.12.00

There’re many ways to move around and to make views and this…this is one of the basic features of this tool we have. Well, suppose I work for sometime at this and then call up my wife to get the rest of the list. I’d eventually end up…

 

 

 

 

 

[Clicking and beeping noise]

 

 

 

 

 

With…

 

 

 

 

 

[Beep]

 

 

 

 

 

The whole structure or I could say gee, there were a lot of things and market’s shoe store, I have to stop to. Let me see what I’m supposed to get in the market.

 

 

 

 

 

[Beep]

 

 

 

 

 

 

 

 

 

 

 

 

 

00.13.07

Whole produce, cans, cereals; what about cereals? Oh, cereals, bread, noodles, I like that, okay, back up there if I want to look at the numbers, that’s what I can. If I want to open up everything, see that or any lines. There are many ways in which I can look at that and…but one interesting thing here that I haven’t told you about, is that when the numbers are on, I can do something like say, sort of jump to identity and pointing to that and having it bring to the top or jumping return back.

 

 I can say jump to a name and say, got to 2 A 4. And it’ll do it or return, so I can jump to a location number just by giving it or if I wish, I can add it.

 

 

 

 

 

[Clicking]

 

 

 

 

 

Added as text in there, and say, jump to name or just point to that and it’ll go to A, did I say that, carrots alright.

 

 

 

 

 

[Clicking]

 

 

 

 

 

Alright carrots, 2 A 4, so I gave it the name of that, can go to it, I can give it the names of…I don’t want to do that…that…

 

 

 

 

 

[Clicking]

 

 

 

 

 

I can say, go to one, which is out of sight from here now. Say jump to that, number one…

 

 

 

 

 

[Beep]

 

 

 

 

 

Different views, so it’s very easy to jump around and make cross references. It turns out if I wish, I can also make a cross reference to something where I give it a label or a name such as you do in your programming. I can call this alpha.

 

 

 

 

 

[Clicking and beeping]

 

 

 

 

00.14.15

Aha…I can say jump to name and I can type it. I think I made a mistake when I type it. So what I should really do, say I’d like to re-conform my whole picture.

 

 

 

 

 

[Clicking and beeping]

 

 

 

 

 

So there…

 

 

 

 

 

[Clicking and beeping]

 

 

 

 

 

It’s willing to say, name.

 

 

 

 

 

[Clicking and beeping]

 

 

 

 

 

And I jumped to something named alpha there.

 

 

 

 

 

[Clicking and beeping]

 

 

 

 

 

Alright, so I can give names and I can say in here.

 

 

 

 

 

[Clicking and beeping]

 

 

 

 

 

A reference like that or I can say, jump to name or point to that, and lo and behold, output of this thing that was, I’d named alpha. So I can name it and if I want to…

 

 

 

 

 

[Clicking and beeping]

 

 

 

 

 

I can ask to see the name or I can ask not to see the names, depending on which, right now we have, not to be seeing the names.

 

 

 

 

 

[Clicking and beeping]

 

 

 

 

00.15.22

So look what else we can do in here. I've got this file that’s structured, if I want to see what’s in there I can walk down…

 

 

 

 

 

[Clicking and beeping]

 

 

 

 

 

The hierarchy levels, and see or return.

 

 

 

 

 

[Clicking and beeping]

 

 

 

 

 

But there is another thing I can do. There is a route I've said I have here.

 

 

 

 

 

[Long beep and clicking]

 

 

 

 

 

So here I’m afraid I’ll need a different picture of the view.

 

 

 

 

 

[Laughter]

 

 

 

 

 

So here’s what I drew with a picture drawing capability. Here is a slight map, if I start from work and here’s the route I seem to have to go to; to pick up all the materials. And that's my plan for getting home tonight but if I want to I can say, the library, what am I supposed to pick up there? I can just point to that and oh, I see, overdue books and all. Well, there was a statement there with that name on it. Go back, what if I, what am I supposed to pick up at the drug store. Mmm…I see, very interesting. Alright, market; well, I've already seen that. Why did it snow like that?

 

 

 

 

 

[Beep]

 

 

 

 

00.16.25

Gee, that’s too much. Anyway, so we have this feature of structuring our material hierarchically; being able to move around it very well; when we get a hierarchy…

 

 

 

 

 

[Long beep]

 

 

 

 

 

Such as I can show you here now…

 

 

 

 

 

[Long beep]

 

 

 

 

 

I can do things if I want to, just say, I’d like to interchange produce and canned materials, bingo and they’re all numbered rightly, if I cared to look. Interchanging them very quickly; cans are going to inter…inter…get interchanged with produce. They do it and all gets re-numbered. So I have ways of studying over, making different views, moving around, going to specified points and modifying the structure, at the same time I've seen that I have a repertoire of different entities; like character, knock off that character, replace the character, make that P. So I have entities of all sorts that I can say, I want to do operations on, and this basic structure that I can move over and study and get about very quickly. So that is the essence now.

 

 

 

 

 

[Beeps]

 

 

 

 

00.17.40

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00.18.50

 

 

 

 

 

 

 

 

 

00.19.20

 

 

 

 

 

 

That’s the essence of the tool we have. There’re a lot of details that I've left out for you. And now I’d like to stop a minute and just make sure you understand we’re shifting from illustrative material to the real working stuff. In case you wouldn’t recognize it otherwise. We’ve had…we’ve used this tool to do our daily work and it’s, our system has been build as time sharing system for about six months now, it’s been working. And in that time, we’ve gone from getting one console to getting about six working now with twelve…six more due with the rest of spring. This is our fourth computer, which we’ve had this kind of a system. So we’ve learned a lot about the user features we want and how to be fairly skillful, but this next step about learning how, when you’re faced with having this in your office all day as I now do, very exciting sense. How do you put that to work for yourself? How do you organize your files? What kind of things do you do? So, to get going on this, let’s switch away from the tool we have here and talk about some of the general features of the program, some of the ways it’s built, get back a little later to the nature of the…of our usage of it. Alright, let me get back, this material. Here’s just the outline I’m going to use. You can realize that it’s a file. These are statements and we’re probably looking at the top level of them and the first one, the introduction you can consider we’ve done and the next one, overall about program; it’s what I’m going to do now. Well, I’m doing to do something called, jump on a link and the link is something that’ll go between files.

 

So what it’s going to do, it says I’m going to go to your file name at CNRO and the link also says where in that file and just what view it wants. So I do it like that. I’m in the middle of that other file, looking at this particular material that’s been carved out by the specifications on that link, and this is telling me to make a preparation to start on our presentation but I should also remember…

 

 

 

 

 

[Background noise]

 

 

 

 

 

I’m going back to this other file because what I want to do is restore.

 

 

 

 

 

[Background noise]

 

 

 

 

 

Restore a different kind…

 

 

 

 

 

Alright!

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.20.22

I had to go to a different file on which…because I made a hitch in my rehearsing for this thing in which I have…have many types of format structures set up and numbered, and I just reset the kind that I want to use to show you this material. We’re very flexible, whether for instance I can say I’d like to restore…number seven is a horrible example. See, I can have many ways in which I can control all of the parameters; character size, spacing locations, everything else but I don’t usually go to this extreme, but just showing you that I can.

 

 

 

 

 

[Laughter]

 

 

 

 

00.20.57

What I want right now is the one that shows you a simple large view. We usually work with a view…

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

We usually work with something like this. But when we’re working with our close spaces, we can do quite well but it’s felt that…that would be a little hard for people to see. So we’re using it like this but we don’t see as much material but they’re larger and clear. So now let me back…go back to that file I came here from and say alright, now I’m ready. I’d like to jump and learn about the program. When I get in here, it looks different as it should. Here is the…

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.21.38

 

 

 

 

 

 

 

00.22.11

Here’s…this is another file and in this file, I’ve prepared a chain of views and I…using some of the tools, I have it all set; it’s like from one scene to the other. I could study them in the fashion I've shown you before, but it’s sort of fun to set up these changes and it represents to you the way in which we work too. So to do it, I’m going to freeze a statement, it’s named ‘A’ and I’m going to put on a certain parameter when I do it.

 

Then I’m going to jump to a link. Here is the link. It says you want to go to statement ‘A’ but after the colon, all this garbage tells a bunch of abbreviated ways in which you’d like to control the view when you get there. Many parameters as you’ll notice, so I’ll just say I’ll go to that one and I’m looking at statement ‘A’. Now it’s telling me, this presentation is devoted to the AHIRC, natural question is, what’s that?

 

 

 

 

 

[Pause]

 

 

 

 

00.22.47

 

 

 

 

 

 

 

 

 

 

 

00.23.38

 

 

 

 

 

 

 

00.24.02

That was another boo-boo I made. I left several statements frozen. This statement I've asked to be frozen, that was a set-up operation. It’s just going to stay there above that dotted line as the viewing part of my screen from there down jumps around on the links I have setup. Okay, the first jump took me to this statement saying alright, Augmented Human Intellect Research Center is what AHIRC stands for, a hidden link will take me to the next one, telling me where it’s located but in SRI, it’s an explicit organization entity, what we call it group level. But also I’d like to point out there’re other manned computer work going on at SRI and ours is but one. So I jump on a link. Incidentally, I should just stop and reveal to you that the link is hidden under there. I was very clever to set the viewing parameters so they wouldn’t show the link, but when I say jump the link and mark it there, the computer goes looking from there on for that link and obeys it, and I’m not showing the statement names either but there’s a statement named P obviously. So that program involves about 17 people together with the special laboratory facilities we have.

 

It’s sponsored by government agencies exclusively ARPA, NASA, and RIDC now. And in the past, AFOSR and ESD and these were the people that first clubbed status many years ago. Alright, and there’s been a goal oriented pursuit for many years and I think we can just go off and get a quick little picturized sketch to show this is the staffing over the years from 1950 on and has had slightly bumpy history. During these years, there was only one of us.

 

 

 

 

 

[Laughter]

 

 

 

 

00.24.31

 

 

 

 

 

 

 

00.25.10

 

 

 

 

 

 

 

I go back to where I was and say, let’s continue on in this file. That link took me up to a different file, to a statement for that view and I jumped back to this file where I was and now within this file, I make a link to another to say, the AHIRC is pursuing these goals, basic goal improve the effectiveness with which individuals and organizations work at intellectual tasks or does their ineffectiveness involve them, better solutions, faster solutions, solutions to more complex problems, better use of human capabilities. We need thinking about that. But a corollary goal is besides improving effectiveness to develop a system oriented discipline for designing the means by which greater effectiveness is achieved. It’s very important to us. The approach for this shouldn’t result in a system oriented discipline. Let me just show you how I constructed this file; you'll notice underneath there was that and that. It was just a link hidden here…

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

That went back to this view with slightly different view parameters…

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

To give you that view.

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.25.50

 

 

 

 

 

 

 

 

 

 

 

00.26.35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00.27.33

Alright, there’s another one hidden here. It says the general approach for us, empirical but pursuing this monstrous goal, monstrously difficult to like building and trying empirically, and we’re approaching it evolutionary-wise because we feel that it’s a whole system problem, you need to get a person in that environment, working and looking at the many aspects of his working system that are involved in his effectiveness. That’s many more things than just these computerated tools. And in a large system like that, we need to do it evolutionary-wise because we can’t be analytic enough about it at any one point, to decide what best our next thing should be. We can only decide from here as well as we can analyze it, where we can invest our next resources to get the most return that will increase of the effectiveness of the system we have and this item down here is the term boot-strapping applied in a slightly loose sense. We’re applying that to our approach. What we’re saying, we need a research subject group to give them these tools, put them to work with them, study them and improve them. Ah…ha…we’ll do that by making ourselves be the subject group and studying ourselves, and making the tools so that they improve our ability to develop and study these kinds of systems, and to produce in the end, this kind of system discipline. So it’s going to…it’s a struggle doing it that way but it’s beginning to pay off. Alright, from there, sorry, I’m apologizing to my friend the computer. I said jump to link and hit it up here and it went and found these parenthesis starting here and so that’s not a link.

I should have hit it here and it didn’t find a real link and I’m back in this list here, and I've given you an overall picture about the program and that’s out of the way and I can just move my marker down. And say, let’s save that version.

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.27.48

So this tool in pursuing those goals, when our principle tool is this computer aid system. Let’s talk about it as a system. There’s a link sequence to jump in there too. When we talk about NLS, I mean the online system, a very general term. It’s going to be NLS for many…many years, an online system that will involve…evolve. Right now we consider it to be primarily an instrument and a vehicle for helping humans to operate within the domain of complex information structures. Well, we…

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.28.31

What do we mean by operate?

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

Well, composed study modifiers, a place we started now. We know there’re many other analytical things you could do but we want to get around, study and modify.

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

 

 

 

 

 

00.29.07

 

 

 

 

And then to further information about what does complex structure mean? We’re talking about complex structure, I’m emphasizing structure because we say although the content represents your concepts, there’s a structure relationship between that content entities that should represent the relationship between the concepts of human thought.

Alright, we know, we can’t do that very well with linear text, so inside the computer, we can represent that quite well, in fact we can represent information structures in a computer that will generally be far too complex for you to study directly. But nevertheless serves as a tool to roam over that.

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.29.30

 

 

 

 

 

 

 

 

 

00.30.12

Navigate through a complex structure, able to find your way in navigating, move about it rapidly and be able to see what you want to see at any given point. It's how we think in NLS as a tool. Alright, these are all very important concepts to us because these together with boot-strapping have told us where to start. We start by building an instrument that we can sit at and work during our day, to organize the kind of working information we need as a task force, developing systems. We need to write our specifications, our plans, our programs, our user’s guides, our documentation, our reports and even our proposals.

So we’ve been using these when we return back here and said I've finished that version and to help you keep track of where we are, and a little bit to help me too. We’ll move that down. So having gone through these items, I’d like to come and now begin to tell you something about the implementation.

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.30.35

So I’m going to open up under here and talk to you about the control techniques, control devices, control dialogue and control mother language that we’re using. Okay, to talk about control devices, we’ll use this overhead camera shot, where you can see the devices that I’m using. I use three and they’re not all standard. We have a plain device called a mouse, standard keyboard and a special key set we have here, and we’re going to go for a picture down in our laboratory and then we’ll park and pipe it up, it’ll show you from another point of view, more about how that mouse works. Come in Menlo Park.

 

 

 

 

 

[Pause]

 

 

 

 

00.31.23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00.32.44

 

 

 

 

 

 

 

 

 

 

 

 

 

00.33.35

Okay, there is Don Andrew’s hand in Menlo Park and in a second, we’ll see the screen that he’s working and the way the tracking spot moves in conjunction with movements of that mouse. I don’t know why we call it a mouse, sometimes I apologize. It started that way and we never did change it. Alright, as it moves up or down or sideways, so does the tracking spot and the…the principles for this operation is quite easy to see if you’ll turn it over, Don. Can you hear me Don, would you turn it over and we’ll see you, right. Its principle is that, there’re two wheels that roll on the surface. It’s inside right angles and kind of sharp edges, one’ll roll and the other slide in one direction. Each of it…each of these wheels controls through potentiometer, with a voltage output sampled by an ADD converter. The numbers taken in by the computer at sample times as to what the horizontal vertical…complements are to be, of where it should put the tracking spot and as the mouse moves over a surface, then you see those wheels either slide sideways without rolling or rolls in a motion that very closely duplicates the particular component of horizontal or vertical and the net motion it makes.

Alright, if you take a mouse and move it through some closed trajectory back to exactly the same point, usually the tracking spot won’t come back to exactly the same place it was on the screen, and for that sense it wouldn’t work well if you’re trying to trace maps or other figures and diagrams. But the way we use it continuously and exclusively as to watch the screen and to follow it around, and we use this merely as a device to move that tracking spot and you’re in the tracking spot, you really don’t care whether it follows exactly this or not. In fact, we’ve had it at times where our tracking device, you had to move in an arc like that to make the spot, the tracking spot go on a horizontal line and people adjusted to it and would go like that to go in a straight line and wouldn’t even know that they were doing it.

Other features in the mouse are that it stays put. I can lift it and replace it without having the spot changed, so I can adjust where I want it for my comfort, and these control buttons on the top are used by that mouse. Show you a little bit later how some of those were used. Now the keyboard in the middle is essentially a standard typewriter keyboard except for a few special keys out inside. The computer knows it instantly when you get one and makes an appropriate response. This device over here is unique to us and we always have to justify and explain it. We’ll do it in reverse order. We’ll explain it first.

 

 

 

 

00.34.12

It provides for you the one hand equivalent of what you can do with a keyboard. The five keys are normally each finger sits on a key and depressing any one key at a time produces a character. And any two keys at a time also. And in fact, any combination of depressing of which there are 31 combinations. So Don soon learns he can type a message…insert an I, C, select S, next…

 

 

 

 

 

[Pause]

 

 

 

 

00.35.00

It’ll offer you a character if I hit W, it’ll say delete word. The arrow moves back and forth to give me feedback. My tracking spot changes. That gives me feedback. Now, tells me since it’s an arrow that is armed, I can do something. We get a lot of feedback. Let me restore, a view like this to show you. This is more normally the way we work with feedback up here, or here I’m shown; not working. That’s an echo register that normally gives you the last six characters that you used.

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.35.40

Oops…not working alright, the last six characters and left shifts continuously so you can look up anytime and see what have I just struck, and that’s very good feedback. Here, the characters show me the different viewing parameters, few specks. They get large at times at which I can add, hit single strokes…

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

That change those view parameters.

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.36.10

And each of those means something to me, and their being large at particular times tells me I can hit very quick abbreviation for changing the view. So I can say, I’d like to go to produce but I’d like…

 

 

 

 

 

[Clicking noise]

 

 

 

 

 

Go to produce, they get big, I’d like to say, one branch only and let me look just that low and I see it. Oh, I can say, I’d like to see one line only. I can see it. So these ways I move around, the way I get feedback up here, the way I use both hands to coordinate to tell the computer what command and what sort of letters I want up, are all carefully designed to go together to make the repertoire.

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.37.00

 

 

 

 

 

 

 

 

 

 

00.37.54

We talk about the devices and now the nature of the dialogue with a kind of feedback we get from the computer for each of the discreet character strokes and actions that the user goes through when he’s making, when he’s executing a command. So that system is really represented to a user by the repertoire of commands he has, by the function of each of those commands and by the controlled dialogue he has for each of them. So they all together go in making a design and to do it well, you have to be very careful about the nature of the functions on that repertoire and the nature of the way they’re controlled. So we’ve developed a very special language for talking with extreme precision about these controls, both the command functions and the control dialogue for them, and little bit later when we tell you about the programming, Jeff Wilson will bring in some special examples to you of the languages we’ve used, actually the program at high level, these functions and the control feedback that we get and these control dialogues. But that’s why we’re going to call the control mother language in there. Let’s see how we’re doing here.

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.38.20

Okay, let’s move our little marker to say we’ve now gotten control techniques by us, and let’s talk about implementation of our online system. I put over here a reminder when I jump to here, I want the view on below it to unfold in a certain way so I just told myself, hit those parameter specks when this is large and then execute and yes, I see that underneath, I'm going to talk next about hardware design and then software design and that’s going to be done by Jeff Wilson from Menlo Park. Hardware design invited me to jump on a link here. Ah…ha…

 

 

 

 

 

[Clicking noise]

 

 

 

 

00.39.02

See, it told me there wasn’t such a thing as a link under there; bring me back to remembering how I should have gone through this, to go down another level. In hardware design, there’re two features we want to talk about here, to bring out to you the way in which we gotten the kind of responsiveness and flexibility we need in this instrumentation environment. So way often Bill ______ file, those responsible for the design of all of our hardware. There’s an outline he made of the way the controllers work for the aisle controlling. Now from this line to the right…

 

 

 

 

00.39.30

[Pause]

 

 

 

 

00.41.56

 

 

 

 

 

 

 

 

 

 

00.42.44

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00.43.49

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00.45.05

So that system [Inaudible] one time-sharing computer takes care of a lot of stations.  Let me talk to you about the display systems, the other aspect of the things that we’ve built on in here that are slightly unusual.  For that, I’d like to switch to Menlo Park, and get a view from the camera there and actually looking at the hardware.  So these are the units, it developed the displays, the computer constructs it right on a small high resolution CRT which you’re focusing on right now, and in fact that’s the CRT whose camera on the right looking at it, is generating the text view that’s being typed down here on my console. 

So as those are faded in and out between the two, you can just sort of compare them.  So that’s very nice.  There’s my mouse moving around in Menlo Park, my tracking spot.  So our displays work with those being watched by commercial cameras.  Look at my black bug.  Commercial TV cameras 875 lines scanning rates with a fairly high resolution; look at that, from now on to the display station a standard video microwave system.  Now if you back up the camera shot little bit, we’ll see that we have a whole rack full of equipment here serving 12 of them, but you'll notice quite a lack of cameras mounted on. We seem to have stolen them all for this show.  So we’re going to have several consoles at work right now because the cameras are mounted to give you these different special views.  I thought quite a few advantages; we use this particular display system, hard work technique, pretty much as expediency for an experimental system we had to build. 

We originally were going to build storage to displays under here but we couldn’t get them delivered a year and a half ago when we really had to firm up our design so we, as expediency wanted this. Ran has been developing some very nice video stuff.  They were kind enough to show us how these, these controllers now would work with videos.  So we went ahead with this very simple brute force way of having the video signal generated by looking at a small CRT.  Well, it turns out that that little CRT, its incremental cost, the video camera, the controller and a marcher total about $5500 which is cheaper than most fairly good resolution random defection display monitors would be, so we come out well on the price of the hardware.  It turns out that also that the cathode of the camera tube and in just black and white, you see it like this.  You can back off the scanning current, so that it's a sticky cathode, so it's actually, it doesn’t erase the image on it by each sweep, it may take three or four scans and so it’s something like a 15 cycle per second refresh rate on those CRTs, the camera, the one that’s generating this as well as the one that we looked at a few minutes ago have short-term storage in there. 

It’s quite different from long persistence but gives us the flicker-free display here, quite a flickery display there.  There’s lot of use on display generation hardware for 3 to 4 times as many display stations is otherwise.  You’ll notice if we just get the text alone that there's a small effect by that bug smearing, but it’s not that bad.  And that comes from the memory and the silicon tube.  Okay, so much for that.  I’d like now to have us bring in Jeffrey Wilson from Menlo Park, and we’ll switch to his console, he's sitting at one just like this and working independently. Hi Jeff!

 

 

 

 

 

Oh…

 

 

 

 

00.45.52

We’re not hearing you very well.

 

 

 

 

 

You’re not hearing me?  How about now?

 

 

 

 

 

That’s fine.  Okay.  I’m sorry you can’t see everybody here; well, I can't very well either, because of the lights.

 

 

 

 

 

Okay.

 

 

 

 

00.46.04

I’d like you to talk to them about the, the way the special languages have helped in making flexible design and study available for us of the user features, the functions and the repertoire of the commands as well as the control dialogue for them, and then also it’d be an interesting example here because programmers, you programmers are the ones who most intensely found use for working online as we’re building up.  Show them how you structured the…your system guide.  Okay?

 

 

 

 

00.46.40

 

 

 

 

 

 

 

 

 

 

00.47.32

 

 

 

 

 

 

 

 

00.48.16

 

Okay.  I think we can do that.  We can get sort of a good feeling for the way the whole system is put together by looking through the system guide.  The…the file is one that the system programmer sort of put together, help them get around.  You know, that’s right now is getting to be a fairly large program.  It’s not huge by a lot of standards, but it’s getting pretty big.  This picture on our system guide file is a picture of the overlaid structure.  Our overlays are page sizes, so they're not too big in the 940 but, but each, each label in this picture names the code file and each, each one is 3 to 20 pages long, I mean 20 text pages if you printed them out. 

Just to sort of show how user files like this can move around in the code and also how the code is put together.  As I said each, each label in the picture is the name of an overlay which is also the name of that file, but it also happens to be the name of a statement in this file.  By selecting one of these pictures and moving there, oh I was going to do something for you to let you see better.  What did I do?  Go back to the audience and start all over again. Bring it back, all the parameters.  There.  Now let me move up. 

From the picture, I can move to a little section in this file which is an area that system programmers leave around notes for each other.  It’s nothing much interesting here.  A little bit about the documentation and a fact space that’s left.  Right from this spot, I can actually move out to the file.  Suppose that I were going out in that control mother language that Doug was talking about just try to see, for example the routines used in the delete word, or move word, let’s go look at move word construct; I just select this link and here is the file.  This file is written in a, one of these many special languages that we’ve designed, so I’ve just moved down through it find the move commands, move…let's look here for move word….

 

 

 

 

 

You want to point out how you know it’s move word?

 

 

 

 

00.49.10

 

 

 

 

 

 

 

00.49.54

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00.51.38

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00.52.44

 

 

 

 

 

 

 

 

 

 

 

 

 

 

00.53.55

 

 

 

 

 

 

 

 

 

 

 

00.54.41

 

 

 

 

 

 

00.55.10

 

 

 

Yeah, I was just going to look at that, Doug. As I was stepping down through that, I was sort of not only moving to the file but the structure of that, of that code is raked in such a way that it’s a description of a finite state machine and so I was following the characters a person would type to execute that command.  Down here underneath it, I see that the routine is QMW over in the overlaid text letter.  So let's go back to that other file, move back to our picture again and find where overlaid text it is.

It's right down here, so we’re going, sort of moved down through that one.  The, the text that is overlaid illustrates a lot of the different kinds of things that we’ve done.  This file has two major kinds of code in it.  First one is, many of these different special languages that we built up, see I’m trying to find QMW, that’s right.  So, down here some place.  There we go.  See, two kinds of code.  This is still the kind from the other file but the QMW routine, the first sub-routine, the second sub-routine that it calls which is sort of interesting is move word, the word ____ I'm sorry, this routine is written in, in our Console Analysis language and it takes the text string and finds the definition of a word, what's after punctuation and it finds any special blanks around it.  It finds pointers that describe that word.  Another interesting one is the next sub-routine here.  If we look at it, it’s in another special language that we built up.  It takes the pointers left over from the limited routine and the text and the file and reconstructs the statement after the edit’s been done.  Let’s see, where was I in this file?  The other portion of the file is, is written in a language that we call MOL, and that stands for Machine Oriented Language. 

The, the MOL is a…in essence, it's a high level language in that it has great structure and good control constructs like IF statements and WHILE statements, but it’s also very, very close to machine language, 940 machine language.  People talk about the actual registers of the machine and you talk about doing indirect addressing.  This language has helped us to write the kind of fast type code that we want, that we have to have to operate the time-sharing system, and at the same time it’s, it’s given us a lot of flexibility.  It’s also the phrase structure of the MOL designed to sort of match with the broad structure of NLS, so we’ve got a WHILE statement; to see what’s in that WHILE statement I can move down and see, it’s 3 statements which is an IF statement…the IF statement is two, is a single IF statement which has an IF and ELSE part that the whole block opens up to all of that. 

So by using the MOL like this, I’m able to move around very quickly in my MOL files, also able to sort of zoom in and out of things.  One of the, besides these sort of program organizational benefits that we get from designing all the special purpose languages, we’ve been able to design a syntax of these languages so that they shift with our linking structure in the conventions that we’ve set up in the _______ to help us in NLS itself to move around between them.  One of the ways we’d managed to implement all of these languages is by designing a compiler complier which we call trimeter. All of our compilers are written in trimeter. I’d like to add that we’re really thankful to some people at Systems Development Corporation for helping us get started on lot of notions in trimeter, Erwin Book and Val Shaurie have been just invaluable in helping us get started. 

By having all of our compliers written in a high level language themselves, we’ve been able to change them all the time so we’re not only able to quickly modify the syntax of the control language for NLS itself or the meaning itself of the commands by, by working on a high level language but we’re also able to go in and just change the compilers as quickly as we have to, to accommodate all sorts of new hardware features and experimenting that we do like that.  See in a system guide file, there’re three sections.  The first one serves as program structure in the picture and those fast links we looked at were sort of aids that the system programmers have built up.  They just move back and forth and leave note. 

Second section here is irretrievable, I think I’ll let that go for a while right now.  The third section, more notes the programmers leave around about bugs, things that are wrong with our system right now, I got my blank line, well, anyway, one of the interesting things that NLS does, just an advantage of being online here is it keeps track of who you are and what you’re doing all the time. 

So on these statements, on everything, every statement that you write, it keeps track of who you are and when you did it, so not only can people leave notes around for each other but sort of automate it into how they, automated aids here that tells us who did it, when they did it.  I can set up search patterns; I think these probably will be talked about later.  So that’s sort of summarizes what this thing look like and how it’s put together.  Is there anything that I haven’t talked about Doug that we’re supposed to bring up? Looking at my notes right here.

 

 

 

 

 

You’re doing very well, Jeff. 

 

 

 

 

 

Thank you.

 

 

 

 

 

You’ve got to see yourself with a 15 foot face.

 

 

 

 

 

I’d like to…

 

 

 

 

 

It’s great.

 

 

 

 

00.55.55

I guess I’ll just turn it back to you then…I might add that if people want to come up to our room sometime, we’re more than anxious to talk to people about languages and data compliers and all of the games the system programmers like to play.  So I think I’ll sort of turn it back with that.

 

 

 

 

 

Well Jack can you, how about going back to that place in the control mother language where you start down the dialogue protocol a person would use. 

 

 

 

 

00.56.26

Okay.  Right over here in main control…

 

 

 

 

 

Yeah.  And off to another file we’re looking at real code now and there’s a branch -------

 

 

 

 

 

Yeah.  These top branches are all sub-routines that are pretty meaningless, in that WSE means, what case and it's…what’s the person going to ask for?

 

 

 

 

 

So open up one level down now, right! Now all those things in parentheses that in NLS are the names of those statements, are actually in the programming language that works here, the way it’s identified that’s the character a user hits.  If he hits a D for instance…

 

 

 

 

00.57.03

A “D” here for delete…

 

 

 

 

 

Right there!  Here’s a D that line tells you what the response is supposed to be that the computer is supposed to display certain material on top of the screen and then it’s supposed to wait until the user does the next thing.  Why don’t you term it to one line? 

 

 

 

 

 

Yeah, I was going to do that.  Why doesn’t my branch work?  Oh that’s all that branch.  Okay.

 

 

 

 

 

EBT!

 

 

 

 

 

Well…

 

 

 

 

 

It’s easy…

 

 

 

 

 

Okay…

 

 

 

 

00.57.37

 

 

 

 

 

 

 

 

 

 

 

 

 

00.58.26

 

 

 

 

 

 

 

 

 

I don’t want to insult you by saying that it’s easy to get under view the…don’t ever say I, and if he hits a “D” and it sets up what it says there, you can now pop one level below it and that’s the next block down in this special language and you see, well if after the “D” he had something else like a “W” it goes on from there to say what it is the computer’s supposed to do in response. So this language here and its hierarchical structure resembling the branching tree of choices the user makes, specifying it at every point at what the computer does, the feedback and the optional choices and down on the end then specifying the actual function like leading a word, what’s a word and what do you mean by lead? And for what’s the word that specified off the subroutine he showed you and the special language to find in there what a word is. 

It doesn’t take a lot of programming skill to learn how to read these languages because they’re at the concept level almost where the user wants to work.  And so for us, in our experimental environment, our users are beginning to learn this so that we can look at that to find out how the system works and not at somebody’s English text translation on specific domain…. Well Jeff, you did a great presentation, especially the last part…

 

 

 

 

 

Thank you.

 

 

 

 

00.58.56

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01.00.11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01.00.22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01.02.39

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01.03.35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01.04.40

 

 

 

 

 

 

 

 

 

 

01.05.33

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01.06.43

 

 

 

 

 

Thanks very much.  Well I’m back now, I’ll get my prop with my text and we’ll go on to talk about some of the, oh no wrong text, right there, thank you very much.  Remember that we were talking about the hardware and software implementation, and if we go all the way back, we see that we’ve finished controlled implementations, controlled techniques and the implementations and let’s move out our little marker down here and keep track of where we are.  We’re ready now; I’d like to run through some of the ways in which we actually have used this.  The programming itself represents a very good example for me, where following from the basic philosophy that concepts come in structure and you’d like to structure your data base, or information base that way and have a tool of getting around it.  I think that the way we’ve got are records for programming organized and then the special languages using the hierarchy, using the names of places in there as labels of statements, so both NLS treats them as the name they can jump to, the complier that complies those files we’re looking at treats those as the labels for those sub-routines and procedures. 

It all makes a very nice way to study and integrate, and it’s a very powerful, exciting sort of thing to show.  I hope people do come up to our open house and look at that.  Let me go down here and open up under usage and say first some application examples, user documentation is a straight forward sort of use.  If you were user here and came and sat down early, you want to get familiar with this file, let’s go look.  Dave Kansas has written a user’s guide, so down the hall and Dave Kansas’ office in his drawer pulling out the file we go, and there you see it.  The top _____ was the sort of the outline.  Well I’m just interested in showing this very quickly.  You’re, you want to find out the definitions of lot of terms.  It’s sort of a glossary.  Well let’s do the thing called the freezer statement and then open and say put that at the top, nobody hold that statement now, it’s going to be frozen and our display scanning windows from the dotted line down and then we know about names and

jumping to name and so we can say, what’s a bug? 

Oh, down here tells you what a bug is.  I see.  Well.  Let’s see.  What’s a level?  Select level, tells you what level is.  What’s a mouse?  That’s fun to look out. There’s a mouse, you can just point.  So you can set your point to successive terms and it goes there, the scanning window goes there, the frozen glossary stays and you can see the definitions.  Right now you’re seeing some of the definitions you can recognize terms here.  That’s a ____, maybe that’s the name.  Let’s just see.  Oh, it’s showing off.  It’s the sketch showing the mouse, the mouse buttons.  Very nice to have documentation like this and you as a user could sit down and early find a way round and find the definitions, descriptions, procedures for commands like that.  So let me go back to my guide and say the next thing you want to study your modified papers. Alright, it happens to be that we wrote a paper for these proceedings that’s in the files.  There it is.  Top level.  It’s interesting to study something like that, what does it have to say about user systems.  Go to there, open up a level and I only want to see that branch.  Oh what about file studying?  Open that up.  Oh specifications of former view, what about that?  Let’s just open it all.  Now I can read it.  Gee, that’s an interesting way to study. 

 

This material was extensively organized for printing and printed out and it’s from this file directly we print it out, printed it out on the form we sent to the, to the printers and these things up in here, these three letters and equals are special directors we embed on our text, so when the output processor does it, it puts in things like headers like this is make the head on every page ______ to abstract, that's prescribed form.  The number between lines, double-spacing, all these others have characteristics; you get line justification, page numbers, all kinds of control on there. 

 

Alright, so much for paper writing.  Well, print out directives, I’ll fill the rest of the time; I’m going to skip that.  That can show you a guide of all the directives for printing out.  If you were user, you’d want to go to that so you can have links to it. Joint file usage is something that is very powerful here.  I went off to a file that we were working on as we were getting ready in the early parts of this presentation.  And it was a message, it was something that three of us used a lot between us to coordinate the planning, task, contingency plans, the special needs and analysis for the fall joint and things like that, we developed a message technique so we could leave messages for each other under various user conventions and let me just tell you about that. Underneath here, we direct messages to each other that we can unfold and see, but many times you didn’t want direct messages as much as you just like to go through and leave a message for somebody. 

 

So we wrote down what  the conventions would be…where’s an example?  The convention that we’re going to use is that we would send a message to _____, if I want to send Bill WKE a message, I would put that in the file, WKE from DCE, with that pound sign in between.  So any statement that’s marked like that means that there’s a message to him from me.  If I want to, I can say it was also for Dave Evans like that.  So that’s from me to both of them.  I, we’ve this thing we call a content analyzer Jeff mentioned briefly, in which we can write expressions in the language, let’s just come down here and look. 

 

Here’s a little expression in a special language.  That means I’m going to look for Mr. XXX a message from him.  Alright, what if I say I want that XXX to be DCE that’s just some place in there I want to find a pound sign and a DCE, so we’ve got a little complier let me say from their complier comes back and says I did it okay and now I can say alright only show me the statements that passed the test that some place in them may have that string.  Here they are, so in every one of those that’s from DCE, DCE. Go down and look for others that we’re going to have here, this is to anybody from DCE.  Now I can say well turn off that filter, how about for so and so.  So can I say this is for WKE, a message for Bill?  The rest of this pattern here says that it’s got be followed by any number of commas and letter triplets but eventually by a pound sign or it doesn’t go.  Well, let’s compile and see.  Okay.  Passed the test.  Alright, there's WKE, WKE for him. 

And a dummy.  Okay, so it wasn’t through searching.  Thing about time-sharing computers is that once in a while it gets a, it gets being asked for business from other places and the response we want runs into a fair amount of computation, we run into other people who pump us off to do it, and so sometimes it’ll take a while to filter through all the patterns.  But that content analyzer, sometimes…

 

 

 

 

 

[Laughter]

 

 

 

 

01.07.38

 

 

 

 

 

 

 

 

 

 

 

01.08.27

 

 

 

 

 

 

 

 

 

 

 

01.09.12

 

 

 

 

 

 

 

 

 

 

 

 

 

01.10.19

 

 

 

 

 

 

 

 

 

 

 

01.11.06

 

 

 

 

Now I'm disabled slightly because it seems to be hung up in the wrong place.  I’ll have to run by the keyboard method, real _____ you know, I’m so used to working with one hand and thus I can hardly remember what to do on the keyboard.  Anyway, I want to go back to the file.  The other guy’s that are in the time-sharing system are going to go and see why and I hope some hardware guys are too.  I want to bring in that file.  And the categories that we have to set up for these people.  Well, that means roles they’re going to play and that they can play and what the open house duty or duty back in the Menlo Park during those two days are going to be. 

 

This is a terrible…So under here on the roles, we have quite a few roles, somebody play just coordinating that knows NLS software, then there’s time sharing software, then there’s display hardware, the transceiver hardware, user references we need to cover those at each session and we also say that these different sessions available.  Well let’s jump down…Jump down and look at this duty rooster again, where are we?  Look underneath each guy and we realize we put a bunch of these code terms under there to say okay, that’s Menlo Park Tuesday morning, open house Tuesday evening, Menlo Park Wednesday morning, he knows NLS and time-sharing system. 

 

So these are the categories.  Now I can go back in using that, using that content analyzer sort of thing.  I can set up myself up fairly nicely.  With special patterns, like I can say here’s a pattern all set up, so it’ll say I want to see those people that are open house Tuesday evening.  So I just can compile.  Hey, it’s working now.  I compile up successfully, I say, alright let’s see it.  So it does, it says open house Tuesday evenings, Andrews Evans, open head, you have to forgive me if I slightly rattle when this thing started giving me trouble.  These four people are on Tuesday evenings.  That's very handy. If I want to, I can go to a view that only shows me what category I was filtering out and I can use another thing I call markers.  I haven’t told you about that really before. 

 

You’ve noticed that many times when I’m doing something to operate on some entity, that I use this bug to point directly.  Well it so happens we have a feature called markers such that any place in the given file; I can place the marker on the character and give it up to a three-letter name. Then at any time and any command, where it’s appropriate to point and push this right hand button to say select, I can hold the button down and enter that name and let the button up and instead of it taking the character I'm pointing at with this bug, it takes the coined…it takes the character for an __ that I have named. Then I put that marker on a name.  So, __ at those markers, on patterns already set up for OTE - Open-house Tuesday Evening and such.

So I can set execute compiler from here and I can type in Open-house Wednesday Afternoon - OWA and say, “Execute it.” Says, “I did.”  Say, “Alright, let’s see what you’ve got.” “Oh, Open-house Wednesday Afternoon. These are the people that are going to be there.” “Oh, what about Open-house Tuesday Evening?” OTE, Execute. Open-house Tuesday Evening. So these kinds of pattern matchers and markers and freezing statements and jumping on things, give us a great deal of power jumping around and moving, something I'm studying.

 

 

 

 

 

[Pause]

 

 

 

 

 

Right, okay, the other things to show here….

 

 

 

 

 

[Pause]

 

 

 

 

01.12.03

I forgot that I need to freeze here. The design documentation for our hardware and system analysis record…I’ll just go very quickly through that. Just to show you that we use the same kind of structured stuff in the design of our hardware. We’ve here because of the design of the buffer register, and these are the different components labeled by comments and our language is going to digest this file and produce a wiring list. We can open up another level and see that underneath of these are all the logical equations. We can come in just as quickly as anything search, down, jump. Search for different patterns, jump on links, modify and put them out, recompile them and put them back.

 

 

 

 

01.12.47

Alright, I think I’ll skip the rest of these because time is crowding us and I’d like to go to a little sequence here that is really a very important one. We have seen most of the way through here how this serves as a very powerful tool for an individual to work when he’s studying, doing his planning, designing, debugging, documenting. We also saw through the medium of leaving messages for each other and filtering them that people can collaborate quite well over a period of time by working on joint files. In fact, you can have a joint file and go leave a message and get a response, in a matter of minutes, because they’re all available instantly by anybody from one of these terminals.

 

 

 

 

01.13.28

 

 

 

 

 

 

 

 

 

01.14.06

But there’s another degree of collaboration which is very important and which we’re just going to be setting up in the next few months, the hardware to do computer aid. But here we’re going to set it up with a little bit of people aid too. So, I’m going to establish a collaborative mode between me and another terminal. Bill Paxton’s had a terminal back at SRI and the first thing I do to do that, of course, would be to say, “Hey!” I’m going to…oops, to call this command, we have to go into the executive mode and set execute __ at a special level.

 

Oops. And then continue with NLS.  So that’s a free demonstration of some of the versatility. Alright, special command. I’d like to link to Bill and I don’t know what his terminal is right now. So I have to ask for somebody to connect me to him audibly, audially. So Bill, will you come in through this intercom?

 

 

 

 

01.14.37

Hello, Doug.

 

 

 

 

 

Hi! I need to know what terminal you’re on, Bill.

 

 

 

 

 

13.

 

 

 

 

01.14.45

Okay, I’d like to have him see my text and so, this special thing if I label 13 will switch over, so on his display he sees my text. So I’ll execute it and sure enough it does. But what’s that running around? Well, if he’s looking at my text, he’d like to have something to say about it, so we put on a marker, a tracking spot that he controls, so he is sitting in Menlo Park, looking at this text and he can point to it, but we’ve carefully reserved for me the right to control and operate on this. So my bug is more powerful than yours.

 

 

 

 

 

[Laughter]

 

 

 

 

 

 

01.15.18

 

 

 

 

 

 

 

 

 

 

 

01.16.00

But we can have an argument, yeah. Actually, it's called a bug fight. So, alright, in case you haven’t been listening Bill, we’ve been going through lots of examples and setting up a collaboration here, so that we can go on into information retrieval. And we set up now audio coupling and we’re both looking at the same display, and that will be very handy to work with. We can talk to each other and point and maybe later, I can hand you the chalk on this black board like saying, “Here, you control it.” But let’s stay in this mode now and add another feature that hardware-wise is available to the kind of display we have.

 

I’d like to see you when I’m working on it. So, before I can do that, I have to set up my display in a certain way. Set it up, so I see it over like that. It leaves a corner up there and I say, “Now computer, do the automatic switching and it will bring in a camera picture from the camera mounted on his console such as the camera mounted on mine is.  Hi, Bill. That’s great. Now we’re connected audio, you can see my work, you can point out at it and I can see your face, we can talk. So let’s do some collaborating. You’re silent.

 

 

 

What do you want me to say?

 

 

 

There’s nobody here but a large audience, Bill.

 

 

 

Alright!

 

 

01.16.40

So, let’s go talk about information retrieval and there are a lot of things I’ve been showing them, jumping around and finding your way, relating back to the portrayal I gave about NLS as an instrument on complex data structures. It shows them how we can get around and find things. I showed them the content analyzers, to help locate things locally. Okay, let’s…you had a file kind of classifying retrieval stuff. Why don’t we switch to it? Yeah. Good. Hey, I can’t point.

 

 

 

Okay. You’re on 13 or 12?

 

 

 

12!

 

 

 

On 12, okay!

 

 

 

You had executive…

 

 

 

There you go.

 

 

 

Where am I?

 

 

 

There you are.

 

 

01.17.27

Alright, now, talking about half retrieval, that’s…, you’re going to have to defend that.

 

 

 

Ha, ha, ha. Can you give it to me?

 

 

 

Yup!

 

 

01.17.43

Okay.  We’ve been talking about retrieval all afternoon, really, that’s one of the main things you’re involved in doing. Every time you’re changing a view here, you’re doing retrieval really. I’ve broken it up here into two main categories, the first where you have a known destination, and the second where the destination is unknown. These really present two different problems and there’re different commands in the system naturally to take care of these two different things. Let’s open this up. Take a look at what we have under here. Oops.

 

 

 

Good.

 

 

01.18.26

 

 

 

 

 

 

 

 

 

01.19.09

Good, both direct and indirect, the first where you’re making an explicit specification and the second with an implicit. To explain what I mean by this, in the first case you’re actually able to point at what you want, at the information you’re trying to retrieve and move it into view. With the jump to identity command, you’re able to point out at either by the cursor or by using a pointer as you’ve shown. Jump to name, jump to link, again here you’re explicitly specifying by giving the name or having the name occur in the text.

 

For implicit specification, by this I mean, using information that’s been stored by the system in order to specify where you want to go. In the first case, the information has been stored in the form of a memory of what you’ve been doing recently, so that you’re able to say, “Jump to the view that I previously had.” So I can say, “Jump, return.” And it will take me back to the view, or “jump, return” and I will go to the view that I had just before that. Or I can say, “Jump Ahead.”  And move back down again. Jumps referring to the structure, by this I mean the structure of the files, so that you’re able to say, take me to the successor of this statement I’m pointing at or to the head of this branch, things like that. Content analysis, we’ve covered quite thoroughly.

 

 

01.20.05

Let’s go on to the other main branch of retrieval that we’re talking about. Here again, I’ve broken it into direct and indirect. This is the case where the destination is unknown and by this I mean, you don’t know where the information is, but you’re able to describe it or you know enough about it, and you can find it either in a hierarchy or by describing it with key words. By the use of a hierarchy here, I mean, working down through the hierarchical structure of the file, making use of the categorization that’s built into the file. This, we’ve seen several times.

 

 

01.20.54

 

 

 

 

 

 

 

 

01.21.31

 

 

 

 

 

 

 

 

 

 

01.22.22

Let’s… just as another example, to really make this clear, we’ve talked about the desire to get a hard copy of a file, wanting to get something printed out. There's quite a large system that takes care of making a file for hard copy. You’re able to specify, how you want the hard copy to look like by giving various directives. One of the things you might want may be Roman numeral page numbers, so let’s go off to a directive file, see what the directive is to get Roman numeral page numbers.

 

I’m into the file now, here’s the first level of the hierarchy. Let’s open up page formatting, we look; we want page numbering, so we’ll open that up. We find, yes, here it is - Roman numerals.  We find out the directive, yeah, your bugs right on it already, Doug. Here’s the directive we want. So we work down quite a way into a hierarchy, as you can see. This is quite a nice way to be able to very quickly find what you’re after. Let’s go back to the previous file now. Look at this last type. By keywords and associative re-ordering, I mean, the use of terms from a specified vocabulary to describe what it is that you’re after.

 

Perhaps the best way to show this would be just to draw a little picture. The key words can be selected from a list…put the list over here. You can have any number of key words. I'll just put down that to give us an idea of what it is. Then we also - oops, spelt that one wrong.

 

 

 

Need any help?

 

 

 

Yeah, how do you spell catalogue? There it is. Isn’t that close enough? There’ll be several items in the catalogue, but what we want to do then, is select things out of this catalogue.

 

 

01.23.13

What does the R stand for?

 

 

 

Those are the numbers that are used just like serial numbers. That’s my own dual decimal system.

 

 

 

Oh! Any reference three, reference __ or something?

 

 

 

Alright!  And then the K, I guess would be keyword, uh? How’s that?

 

 

 

Ha, ha, ha. That’s fine.

 

 

01.23.33

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01.24.36

 

 

Each keyword then will point to various items in the catalogue. So the first keyword they point to those and then the nth keyword will point to other ones, and there’ll be cases where they both point to the same one. When I select a keyword, I’m specifying that all of the items in the catalogue that it refers to, will be pulled out and given to me and in the cases where I’ve selected several keywords that refer to one particular item, that item will be given special preference and will be put at the head of a list. And then with that list items from the catalogue, we’ll be able to use the other forms of retrieval and jump off and look at the items and then continue the exploration. Okay, let’s actually go ahead and do that. I’ll go back to the systems guide file. We mentioned earlier that there is a large part of that, that’s concerned with finding things.

 

This is our documentation index for the NLS system. It’s broken into the two parts, the catalogue and the list of keywords. The catalogue is just a long list that goes off the screen that contains links of to the various items in the documentation. There is actually an entry here for each procedure in the system.

 

 

 

This is the same file that Jeff was looking at, isn’t it?

 

 

 

Right!

 

 

 

System guide for programmers to find things in!

 

 

01.25.10

Here’s your same picture. Let me get it down here. There we are. See, the first part is the catalogue; the second part contains the list of keywords. Let’s open that up. They’re again categorized into the various categories that you would want to use to describe what you’re after. Let’s look at file handling and open that up. Here we have the list of keywords that we can use to describe things that have to do with file handling.

 

 

 

The things in parentheses, the names of those are the keywords?

 

 

 

This is just the name that’s used to keep track of it. The keyword can be referenced from any place in the text by this name. Then there’s a phrase following that - it’s a little more descriptive. It tells what it’s about. Then following that, there’s a list of the items in the catalogue that are referred to by that keyword.

 

 

 

You’re only looking at one line for each statement, so you only see the first few.

 

 

 

Right!

 

 

 

Right!

 

 

01.26.20

So now, I’m able to actually select the keywords that I want to use to describe what I’m interested in. I can do that just by pointing at it, and then it writes the word up here and another command to accept it. I can accept file control; I’ve already accepted file referencing. I’m able to…I’m also …we’re still on?

 

 

 

Yes, we hear you.

 

 

 

So who…somebody hung up on us.

 

 

 

How do you say ‘go ahead’ with a mouse?

 

 

 

We’re on?

 

 

 

Yes.

 

 

 

 

 

 

 

 

 

 

 

01.27.41

Doug, you back? Doug, I can’t hear you, oh okay.  So I selected several keywords here. I can go ahead and give particular keywords greater weight.  The weighting refers to how important that key word is in describing what I’m after. So, I can give this one a weight of two. Whereas this one, previously will also, will just have a weight of one. That means that the items that are referred to by this keyword will occur earlier in the selection when we’re finished.

 

Okay, let’s go ahead now and say, “Keyword execute.” This will go off and get the items out of the catalogue and re-order them. And there we have the results. Now I have…I can use these to jump to various places in the file. I’m still in the systems file. The item here is the name of the utility. So I can jump and get the information about that utility in the file, to find out various things about it. Go back to the previous view.

 

 

01.28.16

Now, if I want to go up and get the information, I just got to jump the link on this. And here I have the documentation on that particular procedure. After looking at that, I can go back again. And now, I’m set up again to go and continue looking. I can look at the next item. And here, I’ve got the results on that. So I can continue to proceed in this way, looking at the various documentations and going back and continuing to explore or you can re-specify the search parameters, and look at new keywords.  Doug, I don’t know if you survived through that. We had the operator of the telephone company hung up on us I think, halfway through. You still back on?

 

 

01.29.19

No, I guess we’d better come back and I’m sorry I can’t say goodbye to Bill.

 

 

 

Oh, I can hear you now.

 

 

 

Oh great!

 

 

 

There you go. You’ve been talking all this time?

 

 

 

 

 

 

 

 

 

 

01.30.09

I saw when you leaned over and hung up the phone for a while, so I couldn’t interrupt you.  Well, thanks, I’m sorry that we’re pushed by - pushed when we were trying to describe each of the features in this system. This particular one, the keyword, is very powerful and could very well warrant a whole paper on itself, because it gives us the power of keyword descriptive kind of organization but with the added feature of giving weights to the keyword, so the results of the search as you see right here are ordered, so that this one ended up meeting the most requirements and adding the most weight. And down here, could be one that only associated with one of the descriptors and the lowest weight one at that. So you have an order in this that's probably in relevance.  And then right with us are all the links, use that as a link to go off to the file to find it. This is a directory of the set of procedures. So here’s a procedure, here's a list of procedures for those keywords he chose that all describe certain things about file handling and this will take you off on the actual source code. It’s like Don Andrews wrote them all in his files, the name of the place in his files and the views that you should open up so that when you follow this and I jump the link, you just see bingo - the overall view of that procedure. And then, as he pointed out, instead of saying, “Jump the link.” you can jump to a name within this file where these things have descriptive material about that too. So, I think for the software guide, it’s very powerful. And thanks very much, Bill. 

 

 

 

Very good, Doug!

 

 

01.31.15

 

 

 

 

 

 

 

 

 

 

 

01.32.14

 

 

 

 

 

 

 

 

 

 

 

 

01.33.05

 

 

 

 

 

 

 

 

 

01.33.36

 

 

 

 

 

 

 

 

 

 

01.34.18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01.35.30

 

 

And the combination of techniques for getting around inside of the structured software files and the way in which it is organized, the way in which a special purpose language as we've developed fit with the structure reviews, really give a very powerful set of techniques and I really enjoin all of you who are software people and interested, to come up and work your way through these. To have some of the software people there in our open house, really show you what’s what by taking you through that. Let me see my text and I’ll see what I can skip so we can get through in the time we were supposed to - like 10 minutes ago. Let me go back to that view. And…they’re purposely making that dim, so that I’ll hurry.

Other things we’re going to talk about very quickly are the range of activities underneath in our program and I will just go very quickly through these then. A service system development and user system development would…to talk about those a bit only requires me to establish a distinction between those two kinds of systems.  Really, we’ve taken to splitting the overall main computer system into this dichotomy of these two systems, where the service system is what appears at the terminal - when I push button, this button, I get that response. When I do this, I get that. It’s the repertoire of commands and the services that, that organization of software and hardware and sometimes people gives to me.

 

The user system is what’s beyond that. Given all that, what do I do with it? What kinds of conventions for leaving messages, for using the content analyzer and for organizing our files? How do we use the links and the keyword thing, user system there? And this is something that is kind of  a new element in systems research that we’re trying to establish whilst we can integrate that kind of user system more with the people’s methods, the concepts that they use, the procedures, the skills - all are developed in coordination with the kinds of tools that they have.

 

Within our __, we also have an explicit activity they call management system where we’re taking some project money and developing our own set of management tools to help us manage the 17 people and all these diverse activities in this complex system. So we are beginning to develop some of those and we’d be happy to talk to you about those during open house. And our forthcoming involvement is this __ computer network, the experimental network that’s going to come into being in its first form in about a year and end up sometime later with some 20 experimental computers in the network. 

 

And they hope to be able to transmit across the country, with bandwidths of something like 20 kbps, till 8 times of less than a tenth of a second, which will be enough so that I could be running a system in Cambridge over the network and getting the same kind of response on a CRT, and it may be that the people there, the next time they have a conference in Boston, are going to try this from there. The…and in that network, we’re going to try to develop a special service to provide network information - relevant network information for people. For the kind of information it takes to operate such a network - who’s got what services, what protocol I used to get there, who’s up today, what’s the user’s guide, where can I find the paper that describes the system that so-and-so offers. That’s going to be a very interesting challenge for us to utilize our tools for organizing and retrieving information. And last thing here is - just a little comment about - after all of this, what’s the product that we’re providing in this research?

 

Well, it’s a…we’re providing a sample augmentation system, the one we use, and not only that, it’s an augmentation system that’s provided to augment computer system development and beyond that, we’re also hoping that we’re developing quite a few design principles for developing our augmentation systems. And these, I hope are transferable things. Let me …

 

 

 

[Pause]

 

 

01.36.07

 

 

 

 

 

 

 

 

 

 

 

 

01.36.52

 

 

 

 

 

 

 

 

 

 

 

01.37.40

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01.38.33

 

 

 

 

 

 

 

 

 

 

 

 

 

 

01.39.31

 

 

 

 

 

 

 

 

 

 

01.40.10

 

I’d like to close and give you some description of the support we’ve gotten from the different people that produced this and to acknowledge that. And back in Menlo Park, we’ve got quite a team of people, surrounded by better equipment, that have been busy listening to us and trying to control and switch these monitors up here, where all the displays went, the cameras went for what’s on use, the displays go here, so they can monitor the different signals and switches and send us, what when we want. Alright? And I particularly want to give appreciation of __, not only designed all of the hardware or even been responsible for all of the hardware and software development that gives us our service system over these years.

 

But in the last few months put together the considerable network of intercoms and video switching and controls and mixers, begged, borrowed, stolen, that would provide the show to make it come off like that. To the supporting staff at __, Martin Hardy, Roger Bates, John __, Steve __, who just worked very, very hard to make all of this work out. Technically, Dave Evans in coordinating this and in managing the open house we’re going to have. Don Andrews, Jeff Lewis and Bill Paxton for preparing and presenting the material there. And beyond those two, we’ve gotten a great deal of support from SRI, general preparation support, Stuart Grant from __ Institute has volunteered a good amount of time to help us. He was in that picture of people there. John Dusterberry of Ames Research Lab was very kind, saving our life by offering us the loan of this IDEFO projector - that’s the machine that’s projecting this video on the screen. We were just bowled over when we found out what sort of a display we could provide of what we're doing, and we very much appreciate the loan of that. And Gene Warren, from TNT Communications who handled this, we retained him to come and help us __ at work and he’s just been a tremendous spark plug, running around fixing paging system for us and fantastic instruments, has done a lot of extra work lately. The telephone company has done a great deal, beyond what they needed to do too to fix this up, once they found out what kind of a wild thing we’re trying. And their video man yesterday was trying to help us out with phone circuits and all kinds of extra links.

 

A very interesting credit to bring up next is from another research company. This is an affiliate of Herman Miller Furniture Company.  And why are they connected with a computer show? Well, they’ve been bringing out some new office furnishings and we’ve been very much interested in developing the whole environment for people working in a different way and that means walls, desks, surfaces, console and everything.  We got so attracted to their line that they’ve started working to help us equip offices and study it like that. And one of their designers, Jack Kelly, came one day, spent a day working with us about our ideas about our control consoles as being separated from display consoles and ended up making this - on a chair that I can get up, move around, sit down and swivel and rock and lean back and work very relaxed.

 

So, I think this is a very exciting stage we have just gotten and in the Open House, we have a full office which is equipped like this with this type of a console that we’re very excited about. We invite you to come too. And without being formal, I’d like to really say that I’m backed up by a really very tremendous team of these 17 guys who’ve caught the spirit of putting on this show tremendously and just done an overwhelming job of putting it all together. And by backing me all these years, in this wild dream of doing this sort of thing and they’re all catching fire and I just want to tell them all right now, I owe them a lot.

 

And a very final credit goes to my wife and daughters, who are out here, to whom I’d like to dedicate this whole presentation because of what they’ve put up with over these years, with a husband that’s dedicated in a mono-maniacal way to something very wild. And so this whole presentation is dedicated to you four people there. And I thank all of the rest of you very much for coming to the dedication ceremonies. Good day!

 

 

 

[Applause]

 

END