Difference between revisions of "Rethinking Design, Risk, and Software (2012)"

From Viewpoints Intelligent Archive
Jump to: navigation, search
 
(38 intermediate revisions by the same user not shown)
Line 3: Line 3:
 
|id=QboI_1WJUlM
 
|id=QboI_1WJUlM
 
|alignment=left
 
|alignment=left
|autoresize=false
+
|autoresize=true
 
}}
 
}}
 +
<slideview/>
  
 
== Introduction by Joel Orr ==
 
== Introduction by Joel Orr ==
 
<note for="0:06">
 
<note for="0:06">
 +
<slide for="0:00" name="COFES2012-Title.png"/>
 
Joel Orr was Chief Visionary (Emeritus) at Cyon Research.
 
Joel Orr was Chief Visionary (Emeritus) at Cyon Research.
 
</note>
 
</note>
<subtitle id="0:06">I'm Joel Orr.</subtitle>
+
<subtitle id="0:06">I'm Joel Orr. I'm welcoming you to COFES.  I'm very glad that you're all here, and I have the impossible task of introducing Alan Kay this morning. Alan has been an idol of mine for many many years. And, when I asked him how to introduce him, he said, like a woman's skirt.  And I said, huh, and he said short enough to be interesting. And really, I could spend the whole hour talking about Alan's contributions to the worlds of computing, education, and so much more. Please do look them up on the web.</subtitle>
  
<subtitle id="0:1:35">this title the topic central topic of  this symposium and I'm</subtitle>
+
<subtitle id="0:0:59"> There is no lack of adequate places to learn about the inventor of the laptop, the guy responsible for all kinds of wonderful networking things and language things.</subtitle>
  
<subtitle id="0:1:38"> also using the  words engineering and science and</subtitle>
+
<subtitle id="0:1:14">So, with that let me not take any more time away from his keynote, and let me welcome my friend Alan Kay.</subtitle>
  
<subtitle id="0:1:41"> I'm taking the</subtitle>
+
== Opening ==
  
<subtitle id="0:1:44"> larger sense of those terms larger</subtitle>
+
<subtitle id="0:1:29"> I tried to incorporate in this title the topic, central topic, of this symposium. And, I'm also using the words engineering and science.</subtitle>
  
<subtitle id="0:1:47"> sense of engineering and the larger sense</subtitle>
+
<subtitle id="0:1:41"> I'm  taking the larger sense of those terms. Larger sense of engineering, and larger sense of what science is. And, I want to apply it to our thoughts and needs about software.</subtitle>
  
<subtitle id="0:1:50"> of what science is and I want to apply</subtitle>
+
<subtitle id="0:1:59"> Viewpoints Research Institute is a 501c3 nonprofit public benefit
 
 
<subtitle id="0:1:53"> it to our thoughts</subtitle>
 
 
 
<subtitle id="0:1:56"> and needs about software</subtitle>
 
 
 
<subtitle id="0:1:59"> viewpoints Research Institute is a 501c3 nonprofit public benefit
 
 
organization so so we don't have a product, we're not trying to sell you anything.</subtitle>
 
organization so so we don't have a product, we're not trying to sell you anything.</subtitle>
  
Line 37: Line 33:
 
<subtitle id="0:2:47"> I love it better than almost any other form of communication because I can decide when not to use it.</subtitle>
 
<subtitle id="0:2:47"> I love it better than almost any other form of communication because I can decide when not to use it.</subtitle>
  
 +
== What is Engineering? ==
 +
 +
<note for="0:2:56">
 +
<slide for="2:56" name="COFES2012-WhatIsEngineering1.png"/>
 +
<slide for="3:20" name="COFES2012-WhatIsEngineering2.png"/>
 +
<slide for="3:26" name="COFES2012-WhatIsEngineering3.png"/>
 +
<slide for="3:32" name="COFES2012-WhatIsEngineering4.png"/>
 +
<slide for="3:50" name="COFES2012-WhatIsEngineering5.png"/>
 +
<slide for="3:59" name="COFES2012-WhatIsEngineering6.png"/>
 +
<slide for="4:08" name="COFES2012-WhatIsEngineering7.png"/>
 +
<slide for="4:14" name="COFES2012-WhatIsEngineering8.png"/>
 +
<slide for="4:23" name="COFES2012-WhatIsEngineering9.png"/>
 +
<slide for="4:24" name="COFES2012-WhatIsEngineering10.png"/>
 +
</note>
 
<subtitle id="0:2:56"> You all know what I mean. Okay, let's tackle engineering first.</subtitle>
 
<subtitle id="0:2:56"> You all know what I mean. Okay, let's tackle engineering first.</subtitle>
  
 
<subtitle id="0:2:59"> One way of thinking about engineering is that in the world we're presented with situations. Here's a really nice beautiful one but it has a couple of drawbacks from practical human need that gives rise to an idea.</subtitle>
 
<subtitle id="0:2:59"> One way of thinking about engineering is that in the world we're presented with situations. Here's a really nice beautiful one but it has a couple of drawbacks from practical human need that gives rise to an idea.</subtitle>
  
<subtitle id="0:3:20"> We design something we make a thing that caters to that</subtitle>
+
<subtitle id="0:3:20"> We design something we make a thing that caters to that.</subtitle>
  
 
<subtitle id="0:3:26"> And, if we don't extract principles from this thing, then we're not doing engineering yet we're just tinkering.</subtitle>
 
<subtitle id="0:3:26"> And, if we don't extract principles from this thing, then we're not doing engineering yet we're just tinkering.</subtitle>
  
<subtitle id="0:3:32"> tinkering is kind of the thing that is built</subtitle>
+
<subtitle id="0:3:32"> Tinkering is kind of the thing that is built in to many mammals.  If you have a cat, imagine what a cat would be like if it had hands it would be basically a monkey. If you'd come home from vacation your house would be dismantled.</subtitle>
  
<subtitle id="0:3:35"> in to many mammals if you have</subtitle>
+
<subtitle id="0:3:50"> We want to extract principles we want to push them back into the things, so we start doing principles building of things.</subtitle>
  
<subtitle id="0:3:38"> a at imagine what a cat would be like</subtitle>
+
<subtitle id="0:3:59"> Those principles leak back into how we design things, and they even leak back into how we have ideas.</subtitle>
  
<subtitle id="0:3:41"> if it had hands it would be basically</subtitle>
+
<subtitle id="0:4:8"> This has been going along on a lot longer than mathematics and science.</subtitle>
  
<subtitle id="0:3:44"> a monkey it would you'd come home from</subtitle>
+
<subtitle id="0:4:14"> In the twentieth century one of the ideas that gave rise to was a really really tall building done very quickly.</subtitle>
  
<subtitle id="0:3:47">vacation in your house would be dismantled</subtitle>
+
<subtitle id="0:4:23"> Here's what it looked like when they got done with it. And, I'm not going to spend a lot of time with this but when you talk about engineering, this is one of the three or four things that comes up, the Empire State Building.</subtitle>
  
<subtitle id="0:3:50"> so we want to extract principles we</subtitle>
+
== How Empire State Building was designed and architected ==
  
<subtitle id="0:3:53"> want to push them back into the things</subtitle>
+
<note for="0:4:38">
 +
Paul Starrett oversaw and managed the construction of the Empire State Building.  See [[Wikipedia:Paul_Starrett|Paul Starrett on Wikipedia]]
 +
<slide for="0:4:38" name="COFES2012-EmpireState1.png"/>
 +
<slide for="0:4:53" name="COFES2012-EmpireState2.png"/>
 +
<slide for="0:4:54" name="COFES2012-EmpireState3.png"/>
 +
<slide for="0:4:55" name="COFES2012-EmpireState4.png"/>
 +
<slide for="0:4:56" name="COFES2012-EmpireState5.png"/>
 +
<slide for="0:4:57" name="COFES2012-EmpireState6.png"/>
 +
<slide for="0:4:58" name="COFES2012-EmpireState7.png"/>
 +
</note>
 +
<subtitle id="0:4:38"> here's an article in one of the engineering magazines that says planning control permit erection of 85 stories of steel in six months. It wasn't just 85 stories of steel, it was 85 stories of steel and granite.</subtitle>
  
<subtitle id="0:3:56"> so we start doing principles building of things</subtitle>
+
<subtitle id="0:4:53"> Here's what it looked like. Here's the site after they demolished the old Waldorf Astoria Hotel, and then, Bing, Bing, Bing, Bing, Bing.</subtitle>
  
<subtitle id="0:3:59"> those principles leak back into how we design things</subtitle>
+
<subtitle id="0:5:5"> So they clad the thing as they went up and the entire building of the Empire State Building took less than 12 months and was done by about 3,000 people.</subtitle>
  
<subtitle id="0:4:2"> and they even leak back into</subtitle>
+
<subtitle id="0:5:17"> We could not muster 3,000 people to do something major in less than a year in computing.  So, whatever we mean when we say software engineering, we don't mean real engineering.</subtitle>
  
<subtitle id="0:4:5"> how we have ideas and so</subtitle>
+
<subtitle id="0:5:29"> We mean something that we're aspiring to. This is the way the term software engineering was intended back in the 60s at the Garmisch conference in 1968 where it was coined as an aspiration.</subtitle>
  
<subtitle id="0:4:8"> this has been going along on a lot longer than</subtitle>
+
<subtitle id="0:5:44"> Today, if you go to a university or many companies and ask them what is software engineering, they'll say it's what we're doing. That is manifestly not the case.</subtitle>
  
<subtitle id="0:4:11"> mathematics and and science and</subtitle>
+
<subtitle id="0:5:56"> There's some really interesting things. Anybody who aspires to being an engineer of any kind should be intimately familiar with how this was done.</subtitle>
  
<subtitle id="0:4:14"> in the twentieth century one of the ideas that gave</subtitle>
+
== A book on the Empire State Building ==
  
<subtitle id="0:4:17"> rise to was a really really tall</subtitle>
+
<note for="0:6:8">
 +
<slide for="0:6:8" name="COFES2012-Starrett1.png"/>
 +
<slide for="0:6:10" name="COFES2012-Starrett2.png"/>
 +
<slide for="0:6:12" name="COFES2012-Starrett3.png"/>
 +
<slide for="0:6:14" name="COFES2012-Starrett4.png"/>
 +
<slide for="0:6:16" name="COFES2012-Starrett5.png"/>
 +
</note>
 +
<subtitle id="0:6:8"> What's wonderful that there are many good books about it, including this facsimile of the Foreman's, notebook. One of the foremen, every night, typed on his pica typewriter, and took a picture and pasted it in there.</subtitle>
  
<subtitle id="0:4:20"> building done very</subtitle>
+
<subtitle id="0:6:26"> This has come down to us but we don't know who the foreman was. And, a few years ago it was a facsimile into a book that you can buy and are many interesting things are in there.</subtitle>
  
<subtitle id="0:4:23"> quickly here's what it looked like when</subtitle>
+
<subtitle id="0:6:41"> One of the questions that was asked the aspiring contractors was what tools do you have for this job.</subtitle>
  
<subtitle id="0:4:26"> they got done with it and I'm not going to spend a</subtitle>
+
<subtitle id="0:6:50"> One of them was Paul Starret who was one of two Starret brothers. They had built some very large buildings in Manhattan previously but they were one of three big companies bidding for this job.</subtitle>
  
<subtitle id="0:4:29"> lot of time with this but when</subtitle>
+
<subtitle id="0:7:2"> They'd all said to this question, "well, we have all the tools we need in blah blah blah blah."</subtitle>
  
<subtitle id="0:4:32"> you talk about engineering this is one of the three</subtitle>
+
<subtitle id="0:7:8"> What Starrett said is not a blankety-blank thing, not even a pick and shovel.</subtitle>
  
<subtitle id="0:4:35">that comes up is the Empire State Building</subtitle>
+
<subtitle id="0:7:14"> "Gentlemen, this building of yours is going to present unusual problems. Ordinary building equipment won't be built worth a damn on. it will buy and make new stuff fitted for the job that's what we do on every big job. It costs less than renting secondhand stuff, and it's more efficient." Okay.</subtitle>
  
<subtitle id="0:4:38"> so here's an article in one</subtitle>
+
<subtitle id="0:7:32"> Now in software, a first order theory that's obtained as long as I've been in the field, which is 50 years, is that you should never build your own tools. It's a black hole. Don't build your own operating system. Don't build your own computer for god sakes .</subtitle>
  
<subtitle id="0:4:41">the engineering magazines that says planning</subtitle>
+
<subtitle id="0:7:47"> Don't build your own programming languages. Get all this stuff from the vendors.</subtitle>
  
<subtitle id="0:4:44"> control permit erection of 85 stories of steel</subtitle>
+
<subtitle id="0:7:53"> That way, you're actually going to speed up your ability to produce the thing that you want to do. It turns out this isn't true. Or, it's true, if you can't, if you don't know how to build your own tools.</subtitle>
  
<subtitle id="0:4:47"> in six months and wasn't just 85 stories of steel</subtitle>
+
<subtitle id="0:8:8"> You can certainly get into a black hole. We all know of them. But in fact the second-order theory is also true, which is, if you know how to build your own tools then you better, because you can bypass not just workarounds that you have to do but you bypass an entire set of perspectives that may have nothing whatsoever to do with what you're trying to do.</subtitle>
  
<subtitle id="0:4:50"> it was 85 stories of steel and and granite</subtitle>
+
<subtitle id="0:8:32"> And, they might even be antagonistic to it.</subtitle>
  
<subtitle id="0:4:53"> and here's what it looked like here's the site</subtitle>
+
<subtitle id="0:8:35"> So, these guys did a lot of wonderful things. This is a narrow gauge railway that was on every floor of the Empire State Building.</subtitle>
  
<subtitle id="0:4:56"> after they demolished the old Waldorf Astoria Hotel and</subtitle>
+
<subtitle id="0:8:41"> They also built twice as many elevators than there they are now just as temporary elevators, but going up 85 stories in order to move equipment around, and when they got the building up they took down these elevators.</subtitle>
  
<subtitle id="0:4:59"> then Bing Bing Bing Bing</subtitle>
+
<subtitle id="0:9:2"> Sounds ridiculous, right? Not really.</subtitle>
  
<subtitle id="0:5:2"> Bing and</subtitle>
+
== Engineering Bridges ==
  
<subtitle id="0:5:5"> so they clad the thing as they went up</subtitle>
+
<note for="0:9:5">
 +
<slide for="0:9:5" name="COFES2012-Bridge1.png"/>
 +
<slide for="0:9:26" name="COFES2012-Bridge2.png"/>
 +
<slide for="0:9:59" name="COFES2012-Bridge3.png"/>
 +
<slide for="0:10:14" name="COFES2012-Bridge4.png"/>
 +
<slide for="0:10:17" name="COFES2012-Bridge5.png"/>
 +
<slide for="0:13:23" name="COFES2012-Bridge6.png"/>
 +
<slide for="0:14:14" name="COFES2012-Bridge7.png"/>
 +
</note>
 +
<subtitle id="0:9:5"> Now, the other thing about engineering, real engineering that makes it rather different still from what we attempt to do in software is this problem.</subtitle>
  
<subtitle id="0:5:8"> and the entire</subtitle>
+
<subtitle id="0:9:17"> This is the Tacoma Narrows Bridge. We have much of our infrastructure is crumbling.</subtitle>
  
<subtitle id="0:5:11"> building of the Empire State</subtitle>
+
<subtitle id="0:9:26"> Here's one that wasn't as funny as the Tacoma Narrows Bridge was funny because nobody got hurt.</subtitle>
  
<subtitle id="0:5:14"> Building took less than 12 months and was done by about 3,000</subtitle>
+
<subtitle id="0:9:32"> It was predicted by a University of Washington professor.</subtitle>
  
<subtitle id="0:5:17"> people so we could not muster</subtitle>
+
<subtitle id="0:9:38"> The reason they got good movies of it is he said when a wind comes up that's over 55 miles an hour, this bridge is going down. So, when that wind came up, they went down to a now-famous camera store in Seattle, famous for supplying the movie cameras, which they then took out to the bridge, set them up.</subtitle>
  
<subtitle id="0:5:20"> 3,000 people to do something major in less than</subtitle>
+
<note for="0:9:56">
 +
You can see the movie on the Internet, for example, like this one: [https://www.youtube.com/watch?v=j-zczJXSxnw|Tacoma Narrows Bridge Collapse.].
 +
</note>
 +
<subtitle id="0:9:56"> And, watch the thing shake itself apart.</subtitle>
  
<subtitle id="0:5:23"> a year in computing so whatever we mean</subtitle>
+
<subtitle id="0:9:59"> this one though, in Minneapolis, was not so funny because many people got killed and a whole school bus full of children just missed getting demolished.</subtitle>
  
<subtitle id="0:5:26"> when we say software engineering we don't mean real</subtitle>
+
<subtitle id="0:10:14"> So there are many casualties on this.</subtitle>
  
<subtitle id="0:5:29"> engineering we mean something that we're aspiring</subtitle>
+
<subtitle id="0:10:17"> The trace back on this one was: first they thought the rivets were substandard but they turned out to be right. They finally found out that those gusset plates, those square things that the rivets are joining those beams with.</subtitle>
  
<subtitle id="0:5:32"> to and this is the way the</subtitle>
+
<subtitle id="0:10:35"> By a clerical error where about .. 3/16 of an inch too thin. 20 years later that defect in the structural engineering plus the clerical error brought down the entire bridge.</subtitle>
  
<subtitle id="0:5:35"> term software engineering was intended back</subtitle>
+
<subtitle id="0:10:56"> The point here is that one of the reasons you can fly in a jet plane and not feel upset, if you knew what was going on in the jet engine that's right outside there,</subtitle>
  
<subtitle id="0:5:38"> in the 60s at the Garmisch conference in 1968</subtitle>
+
<subtitle id="0:11:8"> and you should if you're aspire to be an engineer, you will know that inside that jet engine, there are temperatures that are higher than the melting point of any of the materials in the jet engine.</subtitle>
  
<subtitle id="0:5:41"> where it was coined was an aspiration</subtitle>
+
<subtitle id="0:11:23"> It's just one of those great things.</subtitle>
  
<subtitle id="0:5:44"> today if you go to a university</subtitle>
+
<subtitle id="0:11:26"> But jet engines run for thousands and thousands and thousands of hours. They're one of the most perfect engineering creations especially given the difficulties that they labor under.</subtitle>
  
<subtitle id="0:5:47"> or many companies and ask them what is software engineering that</subtitle>
+
<subtitle id="0:11:44"> They have to spin at 30,000 rpm. They have these temperature problems. They have enormous shear forces and everything else going on. they're just fantastic.</subtitle>
  
<subtitle id="0:5:50">hey'll say it's what we're doing that is</subtitle>
+
<subtitle id="0:11:53"> The thing that has allowed engineering to advance is that people get really pissed off when their friends and relatives wind up dying on some engineering failure.</subtitle>
  
<subtitle id="0:5:53"> manifestly not the case</subtitle>
+
<subtitle id="0:12:8"> So the forces of nature plus the social forces have conspired to make engineers rather careful.</subtitle>
  
<subtitle id="0:5:56"> and there's some really interesting things</subtitle>
+
<subtitle id="0:12:17"> Of course if you think about the parallel situation inside of a computer, the forces and the masses are slight.</subtitle>
  
<subtitle id="0:5:59"> so anybody who aspires to being an engineer</subtitle>
+
<subtitle id="0:12:26"> Many software systems are starting a crash that will take 10 years to happen from this instant they are actually deployed.</subtitle>
  
<subtitle id="0:6:2"> of any kind should be intimately familiar with</subtitle>
+
<subtitle id="0:12:35"> They're completely buggy but the gusset plate is going to take a long time to gradually come apart as it gets more and more complicated.</subtitle>
  
<subtitle id="0:6:5"> how this was done</subtitle>
+
<subtitle id="0:12:47"> When you move from something where doing something out in the world of forces and masses into a world where you don't have these, you have to have an artificial sense of discipline.</subtitle>
  
<subtitle id="0:6:8"> and what's wonderful</subtitle>
+
<subtitle id="0:13:2"> This is omething we are still learning how to do.</subtitle>
  
<subtitle id="0:6:11"> if there are many good books about</subtitle>
+
<subtitle id="0:13:5"> Now we don't know what happened to the Roman engineers who failed.</subtitle>
  
<subtitle id="0:6:14"> it including this facsimile of the Foreman's</subtitle>
+
<subtitle id="0:13:11">I've suspected, because their engineering was so good for its time, I've suspected that they actually wound up in the Colosseum for failures.</subtitle>
  
<subtitle id="0:6:17"> notebook one of the foremen every</subtitle>
+
<subtitle id="0:13:23">But consider this.  This is the longest extant, it's not the longest Roman bridge ever made, but it's the longest one that we still have.  With those light poles on it.</subtitle>
  
<subtitle id="0:6:20"> night typed on his pike a</subtitle>
+
<subtitle id="0:13:32"> Becasue it's been continuous use for over 2,000 years, and has had cars running on it for the last century.</subtitle>
  
<subtitle id="0:6:23"> typewriter and took a picture and pasted</subtitle>
+
<subtitle id="0:13:44">Now, if go look at this bridge it's in Merida, Spain, near the Portuguese border, it looks like it was built yesterday.</subtitle>
  
<subtitle id="0:6:26"> it in there and this has come down to us but we don't</subtitle>
+
<subtitle id="0:13:53"> This is partly because the Romans created the best cement the world has ever known. It took a long time for us to find out, just really about 10-15 years ago, to find out exactly what the secrets were of the Roman cement.</subtitle>
  
<subtitle id="0:6:29"> know who the foreman was and a few years</subtitle>
+
<note for="0:14:14">
 +
Alcántara Bridge, also in Extremadura, Spain, [https://en.wikipedia.org/wiki/Alc%C3%A1ntara_Bridge].
 +
</note>
  
<subtitle id="0:6:32"> ago it was a facsimile into</subtitle>
+
<subtitle id="0:14:14"> How about this one. Same age.  Again, if you walk right up to it, looks, holy smokes. This thing looks like it was built yesterday.</subtitle>
  
<subtitle id="0:6:35"> a book that you can buy and are many interesting things</subtitle>
+
<subtitle id="0:14:23"> If ever been to, how many people have ever been to the Pantheon in Rome. She's been to Rome you've been to the Pantheon.</subtitle>
  
<subtitle id="0:6:38"> in there one of</subtitle>
+
<subtitle id="0:14:29"> First time I went, I thought wow!  You know, it looked like it was made out of granite, and then I found that it was made out of reinforced concrete. How many people, most people here might have found that out. Do you realize?</subtitle>
  
<subtitle id="0:6:41"> the questions that was asked</subtitle>
+
<subtitle id="0:14:41"> How many people realize it was made out of reinforced concrete?</subtitle>
  
<subtitle id="0:6:44"> the aspiring contractors was</subtitle>
+
<subtitle id="0:14:44">It looks like it was made yesterday. You go around. It's just every, nothing is crumbled.  Just Incredible.</subtitle>
  
<subtitle id="0:6:47"> what tools do you have for this job one of</subtitle>
+
<subtitle id="0:14:53">If you really care about it, engineering goes from beyond a set of these principles to a true art form.</subtitle>
  
<subtitle id="0:6:50"> them was Paul Starret who was one of two</subtitle>
+
<subtitle id="0:15:0"> And, you could even go so far to say the big art form of the 20th century were science and engineering.</subtitle>
  
<subtitle id="0:6:53"> Starret brothers they had built some very</subtitle>
+
<subtitle id="0:15:8"> That's a lot to live up to for something that wants to call itself a science like computer science, and that wants to call itself an engineering discipline like software engineering.</subtitle>
  
<subtitle id="0:6:56"> large buildings in Manhattan previously</subtitle>
+
<subtitle id="0:15:20">Yeah, so the answer to this question is, "no".  Software Engineering cannot do anything like this today.</subtitle>
  
<subtitle id="0:6:59">they were one of three big companies bidding for this job</subtitle>
+
== "Can Software Engineering do anything like this?": Complexity of Software and Software Engineering ==
 +
<note for="0:15:32">
 +
<slide for="0:15:32" name="COFES2012-SoftwareEngineering1.png"/>
 +
<slide for="0:15:35" name="COFES2012-SoftwareEngineering2.png"/>
 +
<slide for="0:15:48" name="COFES2012-SoftwareEngineering3.png"/>
 +
<slide for="0:15:57" name="COFES2012-SoftwareEngineering4.png"/>
 +
<slide for="0:16:17" name="COFES2012-SoftwareEngineering5.png"/>
 +
<slide for="0:16:48" name="COFES2012-SoftwareEngineering6.png"/>
 +
<slide for="0:17:18" name="COFES2012-SoftwareEngineering7.png"/>
 +
<slide for="0:17:24" name="COFES2012-SoftwareEngineering8.png"/>
 +
<slide for="0:17:41" name="COFES2012-SoftwareEngineering8.png"/>
 +
</note>
 +
<subtitle id="0:15:32">To make some comparisons here, I just note that a 400 page book has 20,000 lines of text in it.</subtitle>
 +
<subtitle id="0:15:35"> Each one of those could be a line of code so 20,000 line program is one 400 page book.</subtitle>
  
<subtitle id="0:7:2"> in Paul Starr and they'd all said to</subtitle>
+
<subtitle id="0:15:48"> And a foot of books is about 300,000 lines. Million lines of code per meter: there's an easy one to remember.</subtitle>
  
<subtitle id="0:7:5"> this question well we have all the tools we need in blah blah blah</subtitle>
+
<subtitle id="0:15:57"> The Empire State Building is about 441 million lines of code high, as stacked books is 20,000 lines, 50 lines of code at a time stacked up.</subtitle>
  
<subtitle id="0:7:8"> blah what Starrett said is not a blankety-blank</subtitle>
+
<subtitle id="0:16:11"> That sounds like a lot. But in fact a lot of companies are wrestling with about this much code.</subtitle>
  
<subtitle id="0:7:11"> thing not even a pick and shovel gentlemen</subtitle>
+
<subtitle id="0:16:17"> Personal computing, which I had something to do with a long time ago. Microsoft's essays into it provide operating systems over a hundred million lines of code and application suites is well over a hundred million lines of code.</subtitle>
  
<subtitle id="0:7:14"> this building of yours is going to present unusual problems</subtitle>
+
<subtitle id="0:16:35"> You look at that, you think, "Are we really getting that much bang for a couple hundred million lines of code?"</subtitle>
  
<subtitle id="0:7:17"> ordinary building equipment won't be built</subtitle>
+
<subtitle id="0:16:45"> I hope you're saying no. I hope you haven't gotten complacent about this.</subtitle>
  
<subtitle id="0:7:20"> worth a damn on it will buy and make new stuff fitted</subtitle>
+
<subtitle id="0:16:48"> So personal computing, 250, say 200 million lines of code. But of course it's not really that much. The problem is that when you make a lot of code, there's a point, where their dependencies are so intertwined, the engineering has been done so poorly, that people start becoming afraid to remove things.</subtitle>
  
<subtitle id="0:7:23"> for the job that's what we do on every big job it</subtitle>
+
<subtitle id="0:17:11"> So they just let it stay there and they start layering over it.</subtitle>
  
<subtitle id="0:7:26"> costs less than renting secondhand stuff and it's</subtitle>
+
<subtitle id="0:17:18"> This big software company has now gone over 400 million lines of code.</subtitle>
  
<subtitle id="0:7:29"> more efficient okay now in software</subtitle>
+
<subtitle id="0:17:24"> I haven't changed the slide. Yeah, I used to use this analogy, because, I mean, a pyramid is kind of a garbage dump plastered over with limestone so it looks nice.</subtitle>
  
<subtitle id="0:7:32"> a first order theory that's obtained</subtitle>
+
<subtitle id="0:17:32"> Just a big accretion. But when I look at this picture, I think I can't use that metaphor anymore because, look at how modular these pyramids are.</subtitle>
  
<subtitle id="0:7:35">long as I've been in the field which is 50 years is</subtitle>
+
<subtitle id="0:17:41"> We would love to have that modularity in the code that we write. so I think the picture that fits our code better is a slum.</subtitle>
  
<subtitle id="0:7:38"> that you should never build your own</subtitle>
+
<subtitle id="0:17:51"> Particularly the web. But basically it's all rather slum like.</subtitle>
  
<subtitle id="0:7:41"> tools it's a black hole don't</subtitle>
+
<subtitle id="0:17:53">There is no large sense of architecture of any kind. Things are tacked in there.</subtitle>
  
<subtitle id="0:7:44">build your own operating system don't build your own computer</subtitle>
+
<subtitle id="0:18:5">Urban renewal bulldozers out some stuff but just leaves the stuff lying around, never carts it off and and so forth.</subtitle>
  
<subtitle id="0:7:47"> for god sakes don't build your own programming</subtitle>
+
<subtitle id="0:18:11"> The real question is not whether we can improve on this. </subtitle>
  
<subtitle id="0:7:50">languages get all this stuff from the vendors and that</subtitle>
+
<subtitle id="0:18:17"> But what is the actual level of improvement, which is tantamount to asking, how complex is the actual problems we're trying to solve compared to the complexity we're creating by just bumbling around.</subtitle>
  
<subtitle id="0:7:53"> way you're actually going to and speed</subtitle>
+
== What is Science: With a hair ball standing in for Complexity ==
 +
<note for="0:18:35">
 +
<slide for="0:18:35" name="COFES2012-WhatIsScience1.png"/>
 +
<slide for="0:19:2" name="COFES2012-WhatIsScience2.png"/>
 +
<slide for="0:19:8" name="COFES2012-WhatIsScience3.png"/>
 +
<slide for="0:19:17" name="COFES2012-WhatIsScience4.png"/>
 +
<slide for="0:19:26" name="COFES2012-WhatIsScience5.png"/>
 +
<slide for="0:19:29" name="COFES2012-WhatIsScience6.png"/>
 +
<slide for="0:19:29" name="COFES2012-WhatIsScience7.png"/>
 +
<slide for="0:20:41" name="COFES2012-WhatIsScience8.png"/>
 +
<slide for="0:20:47" name="COFES2012-WhatIsScience9.png"/>
 +
<slide for="0:20:53" name="COFES2012-WhatIsScience10.png"/>
 +
<slide for="0:21:44" name="COFES2012-WhatIsScience11.png"/>
 +
<slide for="0:21:50" name="COFES2012-WhatIsScience12.png"/>
 +
</note>
  
<subtitle id="0:7:56"> up your ability to</subtitle>
+
<subtitle id="0:18:35"> Let's ask a question about what science is. Now that we've talked about engineering.</subtitle>
  
<subtitle id="0:7:59"> produce the thing that you want to do it turns</subtitle>
+
<subtitle id="0:18:44"> Real science looks at hairballs. This is my favorite hairball. It's about this big, recovered from the stomach of a woolly mammoth found in a glacier.</subtitle>
  
<subtitle id="0:8:2"> out this isn't true or it's true</subtitle>
+
<subtitle id="0:18:53"> But because hair balls are ugly to look at but it got your attention, especially when I say how big it is.</subtitle>
  
<subtitle id="0:8:5">if you can't if you don't know how to build your own tools</subtitle>
+
<subtitle id="0:19:2"> It represents complications. But, you know, the universe is good enough.</subtitle>
  
<subtitle id="0:8:8"> you can certainly get into a black hole we all</subtitle>
+
<subtitle id="0:19:8"> The starry night it's pretty air but it's still complicated. People spent thousand of years misunderstanding it in a bunch of ways.</subtitle>
  
<subtitle id="0:8:11"> know of them but in fact the second-order</subtitle>
+
<note for="0:19:17">
 +
Scheffer Stroke is a logical operation of NAND, from which you can build any other operations, and logical structure. [https://en.wikipedia.org/wiki/Sheffer_stroke|Scheffer Stroke on Wikipedia].
 +
</note>
 +
<subtitle id="0:19:17"> We little creatures with our brains have languages. We can make all of our languages out of the Scheffer's stroke. Here, this is the NAND operator.</subtitle>
  
<subtitle id="0:8:14"> theory is also true which is if you know how to build</subtitle>
+
<note for="0:19:29">
 +
Oliver Heavyside cleaned up the formula to concisely describe Maxwell original idea. [https://en.wikipedia.org/wiki/Oliver_Heaviside]
 +
</note>
 +
<subtitle id="0:19:29"> Because we have tiny little brains, we invented mathematics, and we come up with something like Maxwell's equations, or Heavyside's version of Maxwell's equation, and put a large part of the phenomena that we're looking at out there on a T-shirt.</subtitle>
  
<subtitle id="0:8:17"> your own tools then you better because</subtitle>
+
<subtitle id="0:19:47"> This represents complexity, so the complexity of the electromagnetic field, in large amounts of it, enough to invent a radio and radar and etc. etc., can be represented by a couple of these equations.</subtitle>
  
<subtitle id="0:8:20"> you can bypass the not just</subtitle>
+
<subtitle id="0:20:5"> These equations should be symmetrical because the magnetic field and the electric field are trade off against each other but aren't.</subtitle>
  
<subtitle id="0:8:23">workarounds that you have to do but you bypass</subtitle>
+
<subtitle id="0:20:17"> So, if you worry about that and you happen to be named Einstein, you will come up with the special theory of relativity which will put symmetry into the whole thing and you get down to two equations, just like you should have. One for the electric field and one for the magnetic field.</subtitle>
  
<subtitle id="0:8:26"> an entire set of perspectives that may have</subtitle>
+
<note for="0:20:35">
 +
The notation is not science.
 +
</note>
 +
<subtitle id="0:20:35"> Now science is not this. The problem is when most people take science courses they're taught the T-shirt.</subtitle>
  
<subtitle id="0:8:29"> nothing whatsoever to do with what you're trying to do</subtitle>
+
<subtitle id="0:20:41"> But science is actually that. Science is the realm of the relationship between the phenomena that we can't get to.</subtitle>
  
<subtitle id="0:8:32"> and they might even be antagonistic to it so</subtitle>
+
== Science with Engineering by making an artifact and observing it ==
  
<subtitle id="0:8:35">these guys did a lot of wonderful things like this is</subtitle>
+
<subtitle id="0:20:53"> Similarly, we can do science with engineering, because it's an artifact that has phenomena so we can actually look at that bridge that we built there. Scientists can look at what engineers do and make a T-shirt of it.</subtitle>
  
<subtitle id="0:8:38"> a narrow gauge railway that was on every floor</subtitle>
+
<subtitle id="0:21:11"> We have T-shirts of what bridges are, their theories of bridges. Then, the cool thing, this is why it's great to be alive today, the cool thing is you can take that T-shirt and make one hell of a bridge.</subtitle>
  
<subtitle id="0:8:41">Building they also built</subtitle>
+
<subtitle id="0:21:29">Engineering was around for a long time but it didn't hit its stride until it had this beginning the yang here, event of making things and looking at them the special way that science does.</subtitle>
  
<subtitle id="0:8:44"> twice as many elevators that are then are there</subtitle>
+
<subtitle id="0:21:44"> How big is this bridge? Well, See those little boats down there? Those are super tankers.</subtitle>
  
<subtitle id="0:8:47"> now just as temporary</subtitle>
+
<subtitle id="0:21:50"> Just for comparison, there is our Empire State Building. So the pylons on this bridge are the height of the Empire Building. And, there's the Great Pyramid of Egypt.</subtitle>
  
<subtitle id="0:8:50"> elevators but going up 85</subtitle>
+
<note for="0:22:0">
 +
Akashi Kaikyō Bridge.  The longest suspension bridge in the world.  [https://en.wikipedia.org/wiki/Akashi_Kaiky%C5%8D_Bridge| Wikipedia].
 +
</note>
 +
<subtitle id="0:22:0"> This is the Asahi [Akashi] bridge in Japan.  Just can't beat it. So lovely.</subtitle>
  
<subtitle id="0:8:53"> stories in order to move equipment</subtitle>
+
<subtitle id="0:22:8"> So, this is what we want to think about. We want to think about real engineering. We want to think about real science.</subtitle>
  
<subtitle id="0:8:56"> around and when they got the building up they</subtitle>
+
== Computer Science, contrasted with Real Science and Engineering ==
  
<subtitle id="0:8:59"> took down these elevators sounds</subtitle>
+
<note for="0:22:14">
 +
<slide for="0:22:14" name="COFES2012-ComputerScience1.png"/>
 +
<slide for="0:22:29" name="COFES2012-ComputerScience2.png"/>
 +
<slide for="0:22:41" name="COFES2012-ComputerScience3.png"/>
 +
<slide for="0:23:5" name="COFES2012-ComputerScience4.png"/>
 +
<slide for="0:23:20" name="COFES2012-ComputerScience5.png"/>
 +
</note>
 +
<subtitle id="0:22:14"> Computer science is not real science. Ask anybody to give you a definition, and they will give you an engineering definition.</subtitle>
  
<subtitle id="0:9:2">ridiculous right not really</subtitle>
+
<subtitle id="0:22:20"> Part of it is because computer science persists in only building things. It doesn't spend a lot of time trying to understand them.</subtitle>
  
<subtitle id="0:9:5"> now the other thing about engineering</subtitle>
+
<subtitle id="0:22:29"> So, you can look, you know, computers We have built. There, you have their complicated artifacts. Programming languages is a complicated artifacts you can do the same thing.</subtitle>
  
<subtitle id="0:9:8"> real engineering that makes it</subtitle>
+
<note for="0:22:41">
 +
What is on the T-shirt is Lisp semantics written in the form of an interpreter written in Lisp. The core of a language can fit on a T-Shirt.
 +
</note>
 +
<subtitle id="0:22:41"> John McCarthy looked at them, and being a mathematician, you want a G-shirt ["T-shirt"]. This is the programming language Lisp on the T-shirt.</subtitle>
  
<subtitle id="0:9:11"> rather different still from what we attempt to do in software</subtitle>
+
<subtitle id="0:22:50"> Once you look at that you realize, whoops, programming is not as complicated as I thought. All the semantics I really care about are not in these in humongous Fortran or Java compilers but they are actually very small.</subtitle>
  
<subtitle id="0:9:14"> is this problem this</subtitle>
+
<subtitle id="0:23:5"> When I make them small enough for my tiny little brain I can actually think about to manipulate them.</subtitle>
  
<subtitle id="0:9:17"> is the Tacoma Narrows Bridge</subtitle>
+
<subtitle id="0:23:8"> Whereas trying to go over on the other side and mess around with Fortran directly to make it better, it just never happen.</subtitle>
  
<subtitle id="0:9:20"> we have much</subtitle>
+
<note for="0:23:20">
 +
Alan is showing the cell biology he studied and the Internet that inspired [[Smalltalk]] design.
 +
</note>
 +
<subtitle id="0:23:20"> So, John came up with a mathematical theory of computation. And, those of us who came in the next generation after McCarthy got to do some really fun things with this idea. I should mention that what I'm talking to you about actually happened in the 60s. </subtitle>
  
<subtitle id="0:9:23"> of our infrastructure is crumbling here's one</subtitle>
+
<subtitle id="0:23:41"> And, it bore some real fruits. But, in fact, it never made it into the world of the 60s which was dominated by IBM. Or, the world of the 80s and 90s which is dominated by Microsoft.</subtitle>
  
<subtitle id="0:9:26">that wasn't as funny as the two Acoma net Tacoma Narrows Bridge was</subtitle>
+
<subtitle id="0:23:53">It just didn't happen. So most people program in a way that is strikingly similar to the way programming was done around 1965.</subtitle>
  
<subtitle id="0:9:29"> funny because nobody got hurt</subtitle>
+
== Tactics vs. Strategies ==
  
<subtitle id="0:9:32"> it was predicted by a University</subtitle>
+
<note for="0:24:5">
 +
<slide for="0:24:5" name="COFES2012-TacticsStrategies1.png"/>
 +
<slide for="0:24:14" name="COFES2012-TacticsStrategies2.png"/>
 +
<slide for="0:24:20" name="COFES2012-TacticsStrategies3.png"/>
 +
<slide for="0:24:35" name="COFES2012-TacticsStrategies4.png"/>
 +
<slide for="0:24:47" name="COFES2012-TacticsStrategies5.png"/>
 +
<slide for="0:25:11" name="COFES2012-TacticsStrategies6.png"/>
 +
<slide for="0:25:17" name="COFES2012-TacticsStrategies7.png"/>
 +
<slide for="0:25:35" name="COFES2012-TacticsStrategies8.png"/>
 +
<slide for="0:26:5" name="COFES2012-TacticsStrategies9.png"/>
 +
<slide for="0:26:29" name="COFES2012-TacticsStrategies10.png"/>
 +
<slide for="0:26:47" name="COFES2012-TacticsStrategies11.png"/>
 +
<slide for="0:27:2" name="COFES2012-TacticsStrategies12.png"/>
 +
<slide for="0:27:5" name="COFES2012-TacticsStrategies13.png"/>
 +
<slide for="0:27:8" name="COFES2012-TacticsStrategies14.png"/>
 +
<slide for="0:27:14" name="COFES2012-TacticsStrategies15.png"/>
 +
<slide for="0:27:38" name="COFES2012-TacticsStrategies16.png"/>
 +
<slide for="0:27:59" name="COFES2012-TacticsStrategies17.png"/>
 +
<slide for="0:28:11" name="COFES2012-TacticsStrategies18.png"/>
 +
<slide for="0:28:20" name="COFES2012-TacticsStrategies19.png"/>
 +
<slide for="0:30:32" name="COFES2012-TacticsStrategies20.png"/>
 +
<slide for="0:30:35" name="COFES2012-TacticsStrategies21.png"/>
 +
</note>
 +
<subtitle id="0:24:5"> Let's take a look at the idea of tactics versus strategies.</subtitle>
  
<subtitle id="0:9:35"> of Washington professor and the</subtitle>
+
<subtitle id="0:24:11"> The simplest thing when we have materials is to think tactically.</subtitle>
  
<subtitle id="0:9:38"> reason they got good movies of it is he said when a wind comes</subtitle>
+
<subtitle id="0:24:14"> Have a bunch of these materials piles and stacks.</subtitle>
  
<subtitle id="0:9:41"> up that's over 55 miles an hour this bridge is</subtitle>
+
<subtitle id="0:24:20"> Simplest things we can get out of those hardly any design effort at all as pyramids and walls.</subtitle>
  
<subtitle id="0:9:44"> going down and so when that wind came up they went down</subtitle>
+
<subtitle id="0:24:26"> People did this with bricks for thousands of years before somebody had a strategic thought which is,</subtitle>
  
<subtitle id="0:9:47"> to a now-famous camera</subtitle>
+
<subtitle id="0:24:35">"hey, let's make something out of the bricks before we make the thing."</subtitle>
  
<subtitle id="0:9:50"> store in Seattle famous for supplying the</subtitle>
+
<subtitle id="0:24:38"> Let's make a new kind of building component a different kind of structural integrity than a pyramid does, and all of a sudden, we can kick ass.</subtitle>
  
<subtitle id="0:9:53"> movie cameras which they then took out to the bridge set them</subtitle>
+
<note for="0:24:47">
 +
With an arch, one can build as tall structure as a pyramid with much less material.
 +
</note>
 +
<subtitle id="0:24:47"> Took thousands of years to get beyond what the brick forced into our minds by being in front of us to this very odd thing that requires more building materials to make than when you're done.  This is one of the hard things about an arch.</subtitle>
  
<subtitle id="0:9:56"> up and watch the thing shake</subtitle>
+
<subtitle id="0:25:5"> It's hard to imagine it because it doesn't work until it works: so people just ignored it.</subtitle>
  
<subtitle id="0:9:59"> itself apart this one though</subtitle>
+
<subtitle id="0:25:11"> The same thing happened in computing, where we build things out of NAND's.</subtitle>
  
<subtitle id="0:10:2"> in Minneapolis was not so</subtitle>
+
<subtitle id="0:25:17"> Basically computing is all about comparing things. So you can take materials, like even two rulers, this is something that first graders love is they can do any fractional arithmetic problem their ten-year-old brother can't do.</subtitle>
  
<subtitle id="0:10:5"> funny because many people got killed and</subtitle>
+
<subtitle id="0:25:35"> They can do it in two seconds with two rulers. All right, because the ruler is an addition slide rule. You show this to a kid they'll love you for life</subtitle>
  
<subtitle id="0:10:8"> a whole school bus full of children</subtitle>
+
<subtitle id="0:25:44"> Just compute the whole thing out ahead of time, and say here's what it is, and by the way, you're teaching them vectors at the same time.</subtitle>
  
<subtitle id="0:10:11"> just missed getting demolished and</subtitle>
+
<subtitle id="0:25:53"> It beats regular fractions in many many ways. Of course the Romans and the Greeks. Romans had a socially accepted QWERTY form of numbers called Roman numerals.</subtitle>
  
<subtitle id="0:10:14"> so there are many casualties on this</subtitle>
+
<subtitle id="0:26:5"> But they didn't use them. most people use this in the wrong way. The Romans and the Greeks had abacuses to compute with. This is a Roman abacus and those stones are called calculi.</subtitle>
  
<subtitle id="0:10:17">the trace back on this</subtitle>
+
<subtitle id="0:26:17"> The calculus came from this notion of what they pull out of your teeth, also. When they you go to the dentist to get the plaque removed they call them calculi.</subtitle>
  
<subtitle id="0:10:20"> one was first they thought the</subtitle>
+
<note for="0:26:29">
 +
The couple of British are William Eccles and F. W. Jordan. Origin of Flip Flop on [https://en.wikipedia.org/wiki/Flip-flop_(electronics)|Wikipedia].
 +
</note>
 +
<subtitle id="0:26:29"> Flip-flops didn't come people wanted to do computers but because a couple of Brits wanted to see if they could make a memory that could do some of the things human memory could do out of materials.</subtitle>
  
<subtitle id="0:10:23"> rivets were substandard but they turned out</subtitle>
+
<subtitle id="0:26:44"> Remember, vitalism was a big deal back then.</subtitle>
  
<subtitle id="0:10:26"> to be right and they finally found out that those gusset</subtitle>
+
<subtitle id="0:26:47"> And ENIAC.</subtitle>
  
<subtitle id="0:10:29"> plates those square things that the rivets are</subtitle>
+
<subtitle id="0:26:50"> But the problem is matter is inconvenient for this. It's just, you know, basically the scaling problems overwhelm you very little return.</subtitle>
  
<subtitle id="0:10:32"> joining those beams with</subtitle>
+
<subtitle id="0:27:2"> You need to go strategically.</subtitle>
  
<subtitle id="0:10:35"> by a clerical error were</subtitle>
+
<note for="0:27:5">
 +
Jacquard Loom was a powered device that was controlled by punch cards and produced textiles with complex patterns. [https://en.wikipedia.org/wiki/Jacquard_loom|Jacuard Loom on Wikipedia].  Alan refers to the fact that von Neumann style languages are following what the low-level machine instructions dictates, including ALGOL and Java shown on the slide.
 +
</note>
 +
<subtitle id="0:27:5"> Of course this was done a long time before with a Jacquard loom, von Neumann architectures, von Neumann style programming languages.</subtitle>
  
<subtitle id="0:10:38"> about 3/8 of an inch not</subtitle>
+
<subtitle id="0:27:14"> Even the programming languages of today like Java, which is also a von Neumann style language in spite of a few trappings it has on it.</subtitle>
  
<subtitle id="0:10:41"> 3 3/16 of an inch too</subtitle>
+
<subtitle id="0:27:23"> Basically, the programming that we're doing today has not stirred from this in 50 years.</subtitle>
  
<subtitle id="0:10:44"> thin and 20 years</subtitle>
+
<subtitle id="0:27:32"> There have been about 3,000 different programming languages invented and some of them really useful.</subtitle>
  
<subtitle id="0:10:47"> later that defect</subtitle>
+
<subtitle id="0:27:38"> But style of programming that is used today is almost entirely this style. It's style where the programming language is rather similar to the underlying storage mechanisms and control structures of the machine.</subtitle>
  
<subtitle id="0:10:50"> in the structural engineering plus the clerical Arab</subtitle>
+
<subtitle id="0:27:53"> There are few convenience is there, but not a lot and not enough.</subtitle>
  
<subtitle id="0:10:53"> brought down the entire bridge</subtitle>
+
<note for="0:27:59">
 +
Sketchpad is the black and white picture with the light pen interface on the bottom row. [https://en.wikipedia.org/wiki/Sketchpad|Wikipedia].
 +
</note>
 +
<subtitle id="0:27:59"> But, of course there are always weird people out on the fringes, who, like Turing himself, who did things are completely different. For instance, Sketchpad, which is having its 50th anniversary this year, computed by, you programmed it by, putting in  constraints that Sketchpad had to figure out.</subtitle>
  
<subtitle id="0:10:56"> so the point here is that</subtitle>
+
<subtitle id="0:28:20"> So, instead of writing solutions to problems, you just gave Sketchpad what the problem, what the nature of the problem was, what the nature that would characterize a solution. Sketchpad had three problem solvers.</subtitle>
  
<subtitle id="0:10:59"> one of the reasons you can fly in a jet plane and</subtitle>
+
<subtitle id="0:28:32"> In 1962, it would solve those problems for you.</subtitle>
  
<subtitle id="0:11:2"> not feel upset and if you</subtitle>
+
<subtitle id="0:28:38"> By the way, he also invented computer graphics while doing it, and also this is the first object-oriented system I know of. </subtitle>
  
<subtitle id="0:11:5"> knew what was going on in the jet engine that's right outside there</subtitle>
+
<subtitle id="0:28:44"> Those three things were done by Ivan Sutherland as a thesis project in one year, one person. I once asked Ivan: "how could you do these three things in one year?"  He says well I didn't know it was hard.</subtitle>
  
<subtitle id="0:11:8"> and you should if your aspire</subtitle>
+
<subtitle id="0:28:59"> Ivan was a genius, but he had also had the advantage of just aiming for what we really needed.</subtitle>
  
<subtitle id="0:11:11"> to be an engineer you will know that inside</subtitle>
+
<subtitle id="0:29:8"> He didn't worry about whether it was hard, because nobody knew what was easy and hard in 1962. He just went for what we needed, which is an interactive system, that, you could show sort of what you wanted then tell it what the criteria were to the job up and it finished the job up. Great.</subtitle>
  
<subtitle id="0:11:14"> that jet engine there are temperatures that</subtitle>
+
<subtitle id="0:29:26"> Too bad we don't have it today.</subtitle>
  
<subtitle id="0:11:17"> are higher than the melting point of any of the materials in</subtitle>
+
<subtitle id="0:29:29"> The Internet, another thing which is almost completely ignored by computer people.  Why?</subtitle>
  
<subtitle id="0:11:20"> the jet engine it's</subtitle>
+
<subtitle id="0:29:35"> Because it works too well. Most computer people, certainly most people in the world, but most computer people even don't think of this as technology.</subtitle>
  
<subtitle id="0:11:23"> just one of those great things and</subtitle>
+
<subtitle id="0:29:44"> It's completely different from the technology they're used to. The internet has never gone down started running in '69 but continuously, since then to replace all of its atoms and it's bits without ever being shut down.</subtitle>
  
<subtitle id="0:11:26"> but jet engines run</subtitle>
+
<subtitle id="0:29:59"> People are shutting down their software systems all the time. They shut down individual servers, even though a server is just a name. You never have to do that.</subtitle>
  
<subtitle id="0:11:29"> for thousands and thousands and thousands of hours</subtitle>
+
<subtitle id="0:30:8"> What we've got is two cultures here. We got culture that was able to make something get scaled successfully by eveven orders of magnitude. We've got another culture, who, who can't even appreciate the feat of engineering and science that took it to do.</subtitle>
  
<subtitle id="0:11:32"> they're one of the most</subtitle>
+
<subtitle id="0:30:26"> The Internet is really the only extant true object-oriented system in the world right now.</subtitle>
 +
<note for="0:30:32">
 +
The brain image used to denote AI.  In other talks the same image is used to explain how brain interprets the incoming signal and how itself synthesizes information.
 +
</note>
 +
<subtitle id="0:30:32"> Then, there's, of course, AI, which people have lost interest in, just as it was starting to get really well work done. We should be spending more time thinking about this. </subtitle>
  
<subtitle id="0:11:35"> perfect engineering creations</subtitle>
+
== Xerox ALTO in 1973 ==
  
<subtitle id="0:11:38"> especially given the the</subtitle>
+
<subtitle id="0:30:40"> Now, one little blast from the past, 1973, we showed this machine and this system.</subtitle>
  
<subtitle id="0:11:41"> difficulties that they labor under they</subtitle>
+
<note for="0:30:56">
 +
Alan refers to the idea that each graphical object on screen can be considered as a self-contained entity like an application, and the window border around them is optional.  A document in DTP can be organized as an assortment of such graphical objects.
 +
<slide for="0:30:40" name="COFES2012-Alto1.png"/>
 +
<slide for="0:10:14" name="COFES2012-Alto2.png"/>
 +
<slide for="0:31:23" name="COFES2012-Alto6.png"/>
 +
<slide for="0:31:38" name="COFES2012-Alto7.png"/>
 +
<slide for="0:32:5" name="COFES2012-Alto8.png"/>
 +
<slide for="0:32:20" name="COFES2012-Alto9.png"/>
 +
<slide for="0:32:35" name="COFES2012-Alto10.png"/>
 +
</note>
 +
<subtitle id="0:30:56"> Notice, overlapping windows there, it was a view oriented object-oriented system, desktop publishing was essentially the views without the borders on them.</subtitle>
  
<subtitle id="0:11:44"> have to spin at 30,000 rpm they have</subtitle>
+
<subtitle id="0:31:14"> These got split up when they came out into the real world, but it's, in Xerox theory, one thing. There was no operating system, because you don't need one.</subtitle>
  
<subtitle id="0:11:47"> these temperature problems they have enormous shear</subtitle>
+
<subtitle id="0:31:23"> When Xerox asked us what we were we're doing, we gave them our own version of Paul Starrett's speech, not even a pick and shovel.</subtitle>
  
<subtitle id="0:11:50">everything else going on they're just fan fantastic</subtitle>
+
<subtitle id="0:31:38"> Part of the deal at Xerox PARC was we built every bit of the hardware and software ourselves from scratch.</subtitle>
  
<subtitle id="0:11:53"> so the the thing that has</subtitle>
+
<subtitle id="0:31:44"> We did not go out and buy commercial computers. We did not go out and buy commercial software.</subtitle>
  
<subtitle id="0:11:56"> allowed engineering to advance is that people</subtitle>
+
<subtitle id="0:31:53"> The reason is this stuff was so different that we would have spent all of our time running into walls that were simply irrelevant to what we were trying to do.</subtitle>
  
<subtitle id="0:11:59"> get really pissed off when</subtitle>
+
<subtitle id="0:32:5"> The cool thing was this was a tiny machine: 128 K RAM, and we used half of it for the display. So, it had a display about 800 by 600.</subtitle>
  
<subtitle id="0:12:2"> their friends and relatives wind</subtitle>
+
<subtitle id="0:32:20"> all the software from the end-user down to the non-existent operating system, down to the metal of the machine, was only about 10,000 lines of code. It was done in a language we invented specifically for the purpose.</subtitle>
  
<subtitle id="0:12:5"> up dying on some engineering failure and</subtitle>
+
<subtitle id="0:32:35"> One way of thinking about this is, in the end, no matter what it is you think you're doing, math wins.</subtitle>
  
<subtitle id="0:12:8"> so the forces of</subtitle>
+
<subtitle id="0:32:44"> The thing that is math, the mathematization of an idea dominates all other things once you've done the spadework around the edges. At some point, you have to sit down and do something like mathematical thinking in order to collapse all the things that seem to be artificially dissimilar into things that are similar.</subtitle>
  
<subtitle id="0:12:11"> nature plus the social forces have</subtitle>
+
<subtitle id="0:33:8"> This is called making an algebra. This was a technique that we use pretty generally at PARC.</subtitle>
  
<subtitle id="0:12:14"> conspired to make engineers rather careful</subtitle>
+
== 8 and half Inventions at Xerox PARC ==
  
<subtitle id="0:12:17"> and of course if you think about the parallel</subtitle>
+
<note for="0:33:14">
 +
Half of the Internet means that Xerox PARC had its own packet switching protocol called PUP, which influenced the design of TCP/IP.
 +
<slide for="0:33:14" name="COFES2012-Parc1.png"/>
 +
<slide for="0:33:15" name="COFES2012-Parc2.png"/>
 +
<slide for="0:33:16" name="COFES2012-Parc3.png"/>
 +
<slide for="0:33:17" name="COFES2012-Parc4.png"/>
 +
<slide for="0:33:18" name="COFES2012-Parc5.png"/>
 +
<slide for="0:33:19" name="COFES2012-Parc6.png"/>
 +
<slide for="0:33:20" name="COFES2012-Parc7.png"/>
 +
<slide for="0:33:21" name="COFES2012-Parc8.png"/>
 +
<slide for="0:33:22" name="COFES2012-Parc9.png"/>
 +
<slide for="0:33:23" name="COFES2012-Parc10.png"/>
 +
<slide for="0:33:24" name="COFES2012-Parc11.png"/>
 +
<slide for="0:33:25" name="COFES2012-Parc12.png"/>
 +
</note>
 +
<subtitle id="0:33:14"> In a few years, we did this: the bitmap screen, the GUI, WYSIWYG in desktop publishing, real objects, laser printers, Ethernet, peer-to-peer and client-server, and about a half of the Internet.</subtitle>
  
<subtitle id="0:12:20"> situation inside of a computer the forces</subtitle>
+
<subtitle id="0:33:35"> Now, what was interesting about that, perhaps, is it was only two dozen people.</subtitle>
  
<subtitle id="0:12:23"> and the masses are slight so</subtitle>
+
<subtitle id="0:33:41"> Any company here could have afforded to do this. Two dozen people, just ten million dollars a year in today's dollars, you could do it right now.</subtitle>
  
<subtitle id="0:12:26"> many software systems are starting a crash</subtitle>
+
<subtitle id="0:33:53"> You won't do it though. Nobody is doing it. you won't do it in spite of the fact that it returned 30 plus trillion bucks, returning about a trillion dollars a year still.</subtitle>
  
<subtitle id="0:12:29"> that will take 10 years to happen</subtitle>
+
<subtitle id="0:34:8"> So, this is a huge win, but in fact, it is against what most people think is good practice.</subtitle>
  
<subtitle id="0:12:32">from this instant they are actually deployed they're</subtitle>
+
<subtitle id="0:34:17"> I don't mean in computing only. I mean in management.</subtitle>
  
<subtitle id="0:12:35"> completely buggy but the gusset plate is</subtitle>
+
<subtitle id="0:34:23"> We'll leave that because we don't want to talk about the past too much.</subtitle>
  
<subtitle id="0:12:38"> going to take a long time</subtitle>
+
<subtitle id="0:34:26"> Most people do not realize it was only two dozen people. That is only four to five years to do all this stuff, and doing it all from scratch.</subtitle>
  
<subtitle id="0:12:41"> to gradually come apart as</subtitle>
+
== Introduction to the STEPS project background ==
  
<subtitle id="0:12:44"> it gets more and more complicated and so</subtitle>
+
<note for="0:34:38">
 +
The picture, with two children (two of triplets) using the XO laptop, is a recreation of the drawing in the [http://www.vpri.org/pdf/hc_pers_comp_for_children.pdf|"Personal Computer for Children of All Ages"] paper.
 +
<slide for="0:34:38" name="COFES2012-ScienceProject1.png"/>
 +
<slide for="0:34:59" name="COFES2012-ScienceProject2.png"/>
 +
<slide for="0:35:8" name="COFES2012-ScienceProject3.png"/>
 +
</note>
 +
<subtitle id="0:34:38"> Now let's take a look at a science project in the present. Same idea here, so all of these ideas I've been talking about here.</subtitle>
  
<subtitle id="0:12:47"> when you move from something where</subtitle>
+
<subtitle id="0:34:50"> We're going to apply them to this big thing called personal computing. It's got all kinds of stuff in it.</subtitle>
  
<subtitle id="0:12:50">doing something out in the world of forces</subtitle>
+
<subtitle id="0:34:59"> Again, we're interested in this area that goes from the end-user all the way down to the metal. so, there's a lot of stuff.</subtitle>
  
<subtitle id="0:12:53"> and masses</subtitle>
+
<subtitle id="0:35:8"> We want to know how many T-shirts does it take, right?</subtitle>
  
<subtitle id="0:12:56"> into a world where you don't have</subtitle>
+
<subtitle id="0:35:14"> This is a completely different thing here. We are not interested.. we're doing science here.</subtitle>
  
<subtitle id="0:12:59"> these you have to have an artificial sense of discipline this</subtitle>
+
<subtitle id="0:35:20"> We're going to have to do a little bit of engineering because the only way we can validate this science is by making it run.</subtitle>
  
<subtitle id="0:13:2">omething we are still learning how to do</subtitle>
+
<subtitle id="0:35:29"> But this is a science project.  We want those T-shirts.</subtitle>
  
<subtitle id="0:13:5"> now we don't know what happened</subtitle>
+
== Principles of STEPS ==
  
<subtitle id="0:13:8"> to the Roman engineers who failed</subtitle>
+
<note for="0:35:32">
 +
Refer to some of the STEPS proposals and reports available at the VPRI site: [http://vpri.org/html/writings.php|VPRI Writings], including [http://www.vpri.org/pdf/tr2012001_steps.pdf|the first year report].
 +
<slide for="0:35:32" name="COFES2012-RealComputerScience1.png"/>
 +
<slide for="0:35:53" name="COFES2012-RealComputerScience2.png"/>
 +
<slide for="0:36:11" name="COFES2012-RealComputerScience3.png"/>
 +
<slide for="0:36:34" name="COFES2012-RealComputerScience4.png"/>
 +
<slide for="0:36:17" name="COFES2012-RealComputerScience5.png"/>
 +
<slide for="0:38:20" name="COFES2012-RealComputerScience6.png"/>
 +
</note>
 +
<subtitle id="0:35:32"> So, let's take a look. Let's say half of what Microsoft, or Moore, has in there is just code they can't get rid of. But still, most of these, you know, Linux and OpenOffice and stuff: it's like a hundred million lines of code. </subtitle>
  
<subtitle id="0:13:11"> I</subtitle>
+
<subtitle id="0:35:53"> So, it's a lot of a lot of stuff of different kinds.</subtitle>
  
<subtitle id="0:13:14"></subtitle>
+
<subtitle id="0:36:2"> Now, here here we have, we're kind of behind the eight-ball of having a brief talk. This part, to do this part in a reasonable way, would take a couple of days.</subtitle>
  
<subtitle id="0:13:17"></subtitle>
+
<subtitle id="0:36:17"> I hate bullets. So please do not regard these as bullets. just look. They're ten blobs, out of twelve or thirteen blobs, that we used.</subtitle>
  
<subtitle id="0:13:20"></subtitle>
+
<subtitle id="0:36:29"> What they are are things, a couple of those we invented but, most of them were things that have been around for 50 years that didn't make it into the particulars design culture that computing is.</subtitle>
  
<subtitle id="0:13:23"></subtitle>
+
<subtitle id="0:36:44"> See, the difference here is nature helps physicists be honest, because in the end you're supposed to submit your theories back to nature. But the problem is we're a design field: so our trade is bullshit.</subtitle>
  
<subtitle id="0:13:26"></subtitle>
+
<subtitle id="0:36:56"> That's what design is. There's good and there's bad and there's different. A lot, a lot of stuff in between.</subtitle>
  
<subtitle id="0:13:29"></subtitle>
+
<subtitle id="0:37:5"> We can have a fad like, for instance, semaphores. Semaphores were known to be a bad idea when they were first invented by Dykstra and Hoare. But, in fact, in that culture, they took on, and for a variety of different reasons, they are still being taught today and they're still being used today.</subtitle>
  
<subtitle id="0:13:32"></subtitle>
+
<subtitle id="0:37:26"> Why are they a bad idea? anybody know? What's wrong with a semaphores?</subtitle>
  
<subtitle id="0:13:35"></subtitle>
+
<subtitle id="0:37:32"> A system lock up. there is no way to do something ahead of time that will tell you you won't get system lock up.</subtitle>
  
<subtitle id="0:13:38"></subtitle>
+
<note for="0:37:44">
 +
Simulation of Time is one of the principles.  Alan refers to John McCarthy's Situation Calculus and the concept of fluents [https://en.wikipedia.org/wiki/Situation_calculus|Situation Calculus on Wikipedia] and David Reed's work on distributed decision making [http://publications.csail.mit.edu/lcs/specpub.php?id=773].
 +
</note>
 +
<subtitle id="0:37:44"> So, this is like the world's worst idea to let the CPU control the time base of your computations. you're screwed.</subtitle>
  
<subtitle id="0:13:41"></subtitle>
+
<subtitle id="0:37:53"> May take a while, may happen quickly, but it's just basically a bad idea. There was already a good idea also thought up by John McCarthy in the early 60s that actually works and works much better.</subtitle>
  
<subtitle id="0:13:44"></subtitle>
+
<subtitle id="0:38:8"> But it's just not generally used, and it won't be used for a while, because these things take decades to get rid of things that are, you know, de facto religions.</subtitle>
  
<subtitle id="0:13:47"></subtitle>
+
== The graphics engine of the STEPS project: Dan Amelang's Nile and Gezira ==
  
<subtitle id="0:13:50"></subtitle>
+
<note for="0:38:20">
 +
<slide for="0:38:41" name="COFES2012-DanMom1.png"/>
 +
<slide for="0:39:23" name="COFES2012-DanMom2.png"/>
 +
<slide for="0:40:11" name="COFES2012-DanMom3.png"/>
 +
<slide for="0:40:44" name="COFES2012-DanMom4.png"/>
 +
<slide for="0:40:44" name="COFES2012-DanMom6.png"/>
 +
<slide for="0:43:11" name="COFES2012-FrankPopout1.png"/>
 +
<slide for="0:43:29" name="COFES2012-NileFeatures1.png"/>
 +
<slide for="0:43:30" name="COFES2012-NileFeatures2.png"/>
 +
<slide for="0:43:38" name="COFES2012-NileFeatures3.png"/>
 +
<slide for="0:43:53" name="COFES2012-NileFeatures4.png"/>
 +
<slide for="0:43:39" name="COFES2012-NileFeatures5.png"/>
 +
<slide for="0:43:40" name="COFES2012-NileFeatures6.png"/>
 +
<slide for="0:43:41" name="COFES2012-NileFeatures7.png"/>
 +
<slide for="0:43:59" name="COFES2012-NileFeatures8.png"/>
 +
<slide for="0:44:01" name="COFES2012-NileFeatures9.png"/>
 +
<slide for="0:44:03" name="COFES2012-NileFeatures10.png"/>
 +
<slide for="0:44:05" name="COFES2012-NileFeatures11.png"/>
 +
<slide for="0:44:07" name="COFES2012-NileFeatures12.png"/>
 +
</note>
 +
<subtitle id="0:38:20"> I'm just going to pick on a couple of these. I already talked about math wins, and I want to talk about this now in this area, up around in here, because one of the things we have to do in personal computing today is make anti-alias, 2 and 1/2 D computer graphics.</subtitle>
  
<subtitle id="0:13:53"></subtitle>
+
<subtitle id="0:38:41"> We have to make it look really good. If we didn't have it look really good, then we will be sloughing off part of making something that is like computer graphics that we can recognize today.</subtitle>
  
<subtitle id="0:13:56"></subtitle>
+
<subtitle id="0:38:59"> Of course whenever you have a hard problem you get a graduate student to do it, because they are just so much smarter than we are.</subtitle>
  
<subtitle id="0:13:59"></subtitle>
+
<subtitle id="0:39:8">This is Dan Amelang, who's a graduate student at UC San Diego.  A very good mathematician and computer guy. And even better, he has a mom.</subtitle>
  
<subtitle id="0:14:2">cement the world has ever known took a long time for us to find out just</subtitle>
+
<subtitle id="0:39:23"> Of course we all do, but his mom happens to be a high school geometry teacher of that special kind that actually understands math.</subtitle>
  
<subtitle id="0:14:5"> really about 10-15 years ago to find</subtitle>
+
<subtitle id="0:39:32"> So, they do exist. He went home Thanksgiving three four years ago, and his mom said: "well, son, what are you doing at Viewpoints?" He said: "well, I need to reduce the amount of code to do computer graphics on a personal computer by a factor of a thousand.</subtitle>
  
<subtitle id="0:14:8">exactly what the secrets were of the Roman</subtitle>
+
<subtitle id="0:39:53"> She said: "Oh, that sounds interesting. What are you going to do?" In fact her expertise was in projective geometry. so, Dan did not come back from Thanksgiving. He stayed working with his mom.</subtitle>
  
<subtitle id="0:14:11"> cement and how about</subtitle>
+
<subtitle id="0:40:11"> he and his mom worked together on this thing through January, finally showed up in January with this formula.</subtitle>
  
<subtitle id="0:14:14"> this one same age again</subtitle>
+
<note for="0:40:17">
 +
To see more about Dan's work, check out the talk by him [http://tinlizzie.org/IA/index.php/How_Complex_is_%22Personal_Computing%22%3F_(2009)|A talk at UIUC by Dan (starts around 17:00 mark)].
 +
</note>
 +
<subtitle id="0:40:17"> This is one of these serendipitous things that you can't completely supply by method. But this stuff has been kicked around by the best people in the world for forty five years. But in fact, they found a new way of thinking about the involvement of an arbitrary polygon with a pixel that computes exactly the right shade of the pixel to give you perfect anti-aliasing.</subtitle>
  
<subtitle id="0:14:17"> if you walk right up to it looks holy smokes</subtitle>
+
<subtitle id="0:40:44"> It's only that big. The next thing Dan did was to make a math a language out of the mathematics that looked like the mathematics, but could run on a computer.</subtitle>
  
<subtitle id="0:14:20"> this thing looks like it was built yesterday if</subtitle>
+
<subtitle id="0:40:57"> When you tell these 45 lines of code to do it, they can do things like this. They can render anti-alias text and anti-aliased graphic objects. That was a great start.</subtitle>
  
<subtitle id="0:14:23">ever been to how many people have ever been to the Pantheon in Rome she's</subtitle>
+
<subtitle id="0:41:11"> This language that he devised, he decided to make it a dataflow language with kind of functional engines at the nodes. Because of that, it is highly amenable to automatic use of parallel resources.</subtitle>
  
<subtitle id="0:14:26"> been to Rome you've been to the Pantheon</subtitle>
+
<note for="0:41:29">
 +
Refer to some other talks for the live demo, until we manage to put the movie, or a real working system here.
 +
<slide for="0:43:5" name="COFES2012-DanMom6.png"/>
 +
</note>
 +
<subtitle id="0:41:29"> Here's one of our benchmarks. This is 5000 anti-aliased translucent characters being re-rendered every time by these 45 lines of code.</subtitle>
  
<subtitle id="0:14:29"> first time I went I thought wow</subtitle>
+
<subtitle id="0:41:47"> So, there's no caching or anything here. We can take a look at the CPU usage. We can see that it's basically using..</subtitle>
  
<subtitle id="0:14:32"> you know looked like it was made out of granite and then I found</subtitle>
+
<subtitle id="0:41:59"> This is a four-core Mac but the cores can handle two highly interleaved threads at once.</subtitle>
  
<subtitle id="0:14:35"> it was made out of reinforced concrete how many people Rios</subtitle>
+
<subtitle id="0:42:8"> So you're seeing that one of those is being devoted to this task, and the fan has come on.</subtitle>
  
<subtitle id="0:14:38">people here might have found Atta do you realize how</subtitle>
+
<subtitle id="0:42:14"> As I say go faster, it says "okay, give me another thread." There it is. What it's doing here is when I say up to four here, it's spacing them out, so they're each in different cores.</subtitle>
  
<subtitle id="0:14:41"> many people realize it was made out of reinforced concrete</subtitle>
+
<subtitle id="0:42:35"> As I go faster and faster, it starts interleaving them. I can start zooming in. here so you can sort of see what's going on a little better.</subtitle>
  
<subtitle id="0:14:44"></subtitle>
+
<subtitle id="0:42:47"> You got enough monkeys.</subtitle>
  
<subtitle id="0:14:47"></subtitle>
+
<subtitle id="0:42:53"> We're actually quite surprised that... this is a lot of computing, but we're getting a lot of a lot out of it. </subtitle>
  
<subtitle id="0:14:50"></subtitle>
+
<subtitle id="0:43:5"> What I thought was, "wow, we should be able to make a whole system just out of this math."</subtitle>
  
<subtitle id="0:14:53"></subtitle>
+
<subtitle id="0:43:11"> This is in fact what I'm using.  I'm not using PowerPoint here.</subtitle>
  
<subtitle id="0:14:56"></subtitle>
+
<subtitle id="0:43:17"> It's probably obvious by now, but. Here is this system that is this replacement for personal computing.</subtitle>
  
<subtitle id="0:15:0"></subtitle>
+
<subtitle id="0:43:29"> Here's my next slide.</subtitle>
  
<subtitle id="0:15:2"></subtitle>
+
<note for="0:43:38">
 +
The CompositeOver rule, which does the normal blending, is shown in the first oval, and compositing the star with gradient over the Frank character is shown as a result.
 +
</note>
 +
<subtitle id="0:43:38">Here's Dan's brother, and here's all the compositing rules.</subtitle>
  
<subtitle id="0:15:5">far to say that the big art forms of the 20th century were science</subtitle>
+
<note for="0:43:41">
 +
Likewise, there are three more examples of using different composition rules.
 +
</note>
 +
<subtitle id="0:43:41"> So for instance, this one is invert. Here's another combination rule here.</subtitle>
  
<subtitle id="0:15:8"> and engineering that's a lot to</subtitle>
+
<subtitle id="0:43:53">It's 95 lines to do all of the compositing rules that you use.</subtitle>
  
<subtitle id="0:15:11"> live up to for something that wants to call itself</subtitle>
+
<subtitle id="0:43:59"> Now that you've seen. Of course there are those 45 lines. There's gradients, so I should actually... </subtitle>
  
<subtitle id="0:15:14">a science like computer science and wants to call itself</subtitle>
+
<note for="0:44:08">
 +
The document editor is called Frank.  Refer to the STEPS project reports and also a paper: [http://www.vpri.org/pdf/tr2013002_KSonward.pdf|KScript and KSWorld: A Time-Aware and Mostly Declarative Language and Interactivev GUI Framework].
 +
</note>
 +
<subtitle id="0:44:08"> This user interface here is made out of the system also, because it's all one sort of one big desktop publishing document.</subtitle>
  
<subtitle id="0:15:17"> an engineering discipline like software engineering</subtitle>
+
<subtitle id="0:44:17"> I'm going to.. The system is also live. This has not been compiled away into C code down there. </subtitle>
  
<subtitle id="0:15:20"></subtitle>
+
<note for="0:44:26">
 +
Alan pops out from the full screen mode by clicking the top right button, select a button widget for editing in the document editor, and change the gradient by manipulating mutli-stop gradient editor.
 +
<slide for="0:44:26" name="COFES2012-Frank1.png"/>
 +
<slide for="0:44:32" name="COFES2012-Frank2.png"/>
 +
<slide for="0:44:40" name="COFES2012-Frank3.png"/>
 +
<slide for="0:44:50" name="COFES2012-Frank4.png"/>
 +
<slide for="0:44:55" name="COFES2012-Frank5.png"/>
 +
</note>
 +
<subtitle id="0:44:26"> I'm actually going to pick an object here like this.</subtitle>
  
<subtitle id="0:15:23"></subtitle>
+
<subtitle id="0:44:32"> This menu here, and I'm going to say, "okay, let's change the gradient fill on this.</subtitle>
  
<subtitle id="0:15:27"></subtitle>
+
<subtitle id="0:44:53">Yeah, something like that maybe. Or maybe we don't want as hard an edge so we'll zoom this out. Okay, get the idea?</subtitle>
  
<subtitle id="0:15:30"></subtitle>
+
<subtitle id="0:45:00"> So the whole system is live. It's using its own stuff here. We keep on chugging along.</subtitle>
  
<subtitle id="0:15:32">some comparisons here I just note that a 400 page book has</subtitle>
+
<subtitle id="0:45:11"> We can see here's pen stroking, filtering.</subtitle>
  
<subtitle id="0:15:36"> 20,000 lines of text in</subtitle>
+
<subtitle id="0:45:17"> All of the graphics for personal computing in this little science exercise came out to be four hundred and fifty seven lines of code.</subtitle>
  
<subtitle id="0:15:39"> it each one of those could be a line of</subtitle>
+
<subtitle id="0:45:23"> How do we know it is 457? Because you can count 457 things, right?.</subtitle>
  
<subtitle id="0:15:41"> code so 20,000 line program</subtitle>
+
<subtitle id="0:45:29"> It's hard to count 400 thousands or 440 million or so on.</subtitle>
  
<subtitle id="0:15:44"> is 1 400 page book and foot</subtitle>
+
<subtitle id="0:45:35"> This is about a thousand times smaller than the way it is done, say, in Firefox. right?</subtitle>
  
<subtitle id="0:15:48"> of books is about 300 thousand</subtitle>
+
<subtitle id="0:45:41"> So a thousand should get your attention, right? You have to learn a new language. On the other hand, here it is. The whole thing is just a few pages of code, and it's live, and you can run and use it. Okay.</subtitle>
  
<subtitle id="0:15:51"> lines million lines of code per meter there's</subtitle>
+
== OMeta, Language Transformation Language ==
  
<subtitle id="0:15:53"> an easy one to remember and</subtitle>
+
<note for="0:45:56">
 +
The language Nothing was an experiment at VPRI to provide an intermediate system language.  (This demo was not using Nothing.)
 +
<slide for="0:45:56" name="COFES2012-CodeTansformation1.png"/>
 +
<slide for="0:46:5" name="COFES2012-CodeTansformation2.png"/>
 +
<slide for="0:46:14" name="COFES2012-CodeTansformation3.png"/>
 +
<slide for="0:46:16" name="COFES2012-CodeTansformation4.png"/>
 +
<slide for="0:46:18" name="COFES2012-CodeTansformation5.png"/>
 +
<slide for="0:46:20" name="COFES2012-CodeTansformation6.png"/>
 +
<slide for="0:45:21" name="COFES2012-CodeTansformation7.png"/>
 +
<slide for="0:46:23" name="COFES2012-CodeTansformation8.png"/>
 +
<slide for="0:45:24" name="COFES2012-CodeTansformation9.png"/>
 +
<slide for="0:45:25" name="COFES2012-CodeTansformation10.png"/>
 +
<slide for="0:45:26" name="COFES2012-CodeTansformation11.png"/>
 +
<slide for="0:45:27" name="COFES2012-CodeTansformation12.png"/>
 +
<slide for="0:46:29" name="COFES2012-CodeTansformation13.png"/>
 +
<slide for="0:46:33" name="COFES2012-CodeTansformation14.png"/>
 +
<slide for="0:46:38" name="COFES2012-CodeTansformation15.png"/>
 +
<slide for="0:46:44" name="COFES2012-CodeTansformation16.png"/>
 +
<slide for="0:46:48" name="COFES2012-CodeTansformation17.png"/>
 +
<slide for="0:46:53" name="COFES2012-CodeTansformation18.png"/>
 +
<slide for="0:46:56" name="COFES2012-CodeTansformation19.png"/>
 +
<slide for="0:47:5" name="COFES2012-CodeTansformation20.png"/>
 +
<slide for="0:47:41" name="COFES2012-Ometa1.png"/>
 +
<slide for="0:47:47" name="COFES2012-Ometa2.png"/>
 +
<slide for="0:47:53" name="COFES2012-Ometa3.png"/>
 +
<slide for="0:48:26" name="COFES2012-Ometa4.png"/>
 +
<slide for="0:48:56" name="COFES2012-Ometa5.png"/>
 +
</note>
 +
<subtitle id="0:45:56"> Where did this language come from? I have to build that.</subtitle>
  
<subtitle id="0:15:57"> the Empire State Building is about 441</subtitle>
+
<subtitle id="0:46:5">So there's actually quite a distance between one of these compositing rules, a one-liner of code, and getting the result at the other end.</subtitle>
  
<subtitle id="0:16:0"> million lines of code high as stacked</subtitle>
+
<subtitle id="0:46:14"> So I might need to remove the hood and show you what's there. This looks a little more daunting, because I have to translate this language into a standard form.</subtitle>
  
<subtitle id="0:16:3"> books is 20,000</subtitle>
+
<subtitle id="0:46:23">I have to translate this into another language that is sort of like C.</subtitle>
  
<subtitle id="0:16:5"> 5050 lines of code at a time stacked</subtitle>
+
<subtitle id="0:46:29"> I have to translate to something that eventually will run on the x86 architecture that's on this machine.</subtitle>
  
<subtitle id="0:16:8"> up that</subtitle>
+
<subtitle id="0:46:38"> That looks like a lot of work. And, of course, I run the system on multiple processors so I have to do that.</subtitle>
  
<subtitle id="0:16:11"> sounds like a lot but in fact a</subtitle>
+
<subtitle id="0:46:44"> One way of thinking about it is, gee, it looks like there's a lot of work in these square boxes here and all.</subtitle>
  
<subtitle id="0:16:15">companies are wrestling with about this much code</subtitle>
+
<subtitle id="0:46:50"> We need another special language. We've just showed you a domain-specific language.</subtitle>
  
<subtitle id="0:16:17"> personal computing</subtitle>
+
<subtitle id="0:46:59"> In the old days, they are called problem-oriented languages. I like old terminology because I'm old.</subtitle>
  
<subtitle id="0:16:21"> which I had something to do with a long time ago Microsoft's</subtitle>
+
<subtitle id="0:47:5"> We need another problem-oriented language here, whose problem domain is transforming languages.</subtitle>
  
<subtitle id="0:16:23"> essays into it provide</subtitle>
+
<subtitle id="0:47:11"> Of course, there are tools around for doing this.</subtitle>
  
<subtitle id="0:16:27">operating systems over a hundred million lines of code and</subtitle>
+
<subtitle id="0:47:17"> But this is one of the big stoppers for people doing this themselves because making a language the way it is taught in school is a daunting procedures usually taught through some set of tools like Yacc.</subtitle>
  
<subtitle id="0:16:30"> application Suites of well</subtitle>
+
<subtitle id="0:47:29"> This is not the way to do it. But the poor student comes out either not understanding it all, or convinced that it's too hard.</subtitle>
  
<subtitle id="0:16:32"> over a hundred million lines of code you</subtitle>
+
<subtitle id="0:47:38"> But in fact, you can make a much better language.</subtitle>
  
<subtitle id="0:16:35"> look at that you think good that are</subtitle>
+
<note for="0:47:41">
 +
OMeta by Alex Warth is described in detail in his Ph.D thesis: [http://www.vpri.org/pdf/tr2008003_experimenting.pdf|Experimenting with Programming Languages].
 +
</note>
 +
<subtitle id="0:47:41"> Here's one we did called OMeta. and here's a simple arithmetic expression, and here's the program. If I say do it, it transforms that expression into a tree.</subtitle>
  
<subtitle id="0:16:38"> we really getting that much bang for a</subtitle>
+
<subtitle id="0:47:53"> If I come down here, and pick this more complicated expression up, and paste it in here and say do it.</subtitle>
  
<subtitle id="0:16:41"> couple hundred billion lines of code I hope</subtitle>
+
<subtitle id="0:48:8"> I get that.</subtitle>
  
<subtitle id="0:16:45"> you're saying no I hope you haven't</subtitle>
+
<subtitle id="0:48:10"> This translation system isn't just for translating things that have strings. It translates any kind of objects into any other kind of objects. So, You want to do it in that generality, because you're going to use this everywhere.</subtitle>
  
<subtitle id="0:16:47"> gotten complacent about this so personal</subtitle>
+
<subtitle id="0:48:26"> So, this graphical language winds up being 130 lines of code to make the trees, and another 700 lines of code to make the lower-level stuff that is actually run on the machine.</subtitle>
  
<subtitle id="0:16:51"> computing 250 say 200 million</subtitle>
+
<subtitle id="0:48:38"> You could say a thousand lines of code, 900 lines of code to make that graphical language.</subtitle>
  
<subtitle id="0:16:54"> lines of code but of course it's not really</subtitle>
+
<subtitle id="0:48:44"> But, this is like a shaggy dog story, right? Because, well, now I have to make the language transforming language.</subtitle>
  
<subtitle id="0:16:56"> that much the problem is that when you make a lot of code</subtitle>
+
<subtitle id="0:48:53"> But of course, it can make itself.</subtitle>
  
<subtitle id="0:17:0">there's a point where people their dependencies</subtitle>
+
<subtitle id="0:48:56"> Alex Warth did it particularly nicely, so it can make itself in 100 lines of code.</subtitle>
  
<subtitle id="0:17:2"> are so intertwined the engineering has been done</subtitle>
+
<subtitle id="0:49:2"> As you get closer and closer down to the bottom of the system, you start using these base things over and over again.</subtitle>
  
<subtitle id="0:17:6"> so poorly that people start becoming</subtitle>
+
<subtitle id="0:49:11"> The problem-oriented language is staying on the top.</subtitle>
  
<subtitle id="0:17:8"> afraid to remove things so</subtitle>
+
== The working model of TCP/IP by Ian Piumarta ==
  
<subtitle id="0:17:11"> they just let it stay there and they start layering over</subtitle>
+
<note for="0:49:14">
 +
Refer to the [http://www.vpri.org/pdf/tr2007008_steps.pdf|first year STEPS annual report].
 +
<slide for="0:49:14" name="COFES2012-DesignWins1.png"/>
 +
<slide for="0:49:32" name="COFES2012-DesignWins2.png"/>
 +
<slide for="0:49:35" name="COFES2012-DesignWins3.png"/>
 +
<slide for="0:49:41" name="COFES2012-DesignWins4.png"/>
 +
<slide for="0:49:47" name="COFES2012-DesignWins5.png"/>
  
<subtitle id="0:17:14"> it</subtitle>
+
</note>
 +
<subtitle id="0:49:14"> Okay, but we have to do the internet. So, TCP/IP, 20,000 lines of C for that. So, one book, one of those books. This C code and most computers is a good nice job.</subtitle>
  
<subtitle id="0:17:18"> big this big software</subtitle>
+
<subtitle id="0:49:32"> TCP/IP was invented by experts so we didn't expect to get a factor of thousand on this.</subtitle>
  
<subtitle id="0:17:21"> company has now gone over 400 million lines of</subtitle>
+
<subtitle id="0:49:41"> Ian Piumarta only got a little more than a factor of a hundred.</subtitle>
  
<subtitle id="0:17:24"> code I haven't changed the slide yeah I used to use this</subtitle>
+
<subtitle id="0:49:47"> TCP/IP is about 160 lines of code using these techniques. If you're interested, I can explain...</subtitle>
  
<subtitle id="0:17:27"> analogy because I mean a pyramid is kind</subtitle>
+
<subtitle id="0:49:53"> This is particularly elegant the way he did it I'll explain it later for people who are interested.</subtitle>
  
<subtitle id="0:17:30"> of a garbage dump plastered over with limestone so it looks</subtitle>
+
<subtitle id="0:49:59"> This represents taking something it was done by very good people, but in the wrong language, and done essentially in a way that generated unnecessary code.</subtitle>
  
<subtitle id="0:17:32"> nice just a big accretion but</subtitle>
+
<subtitle id="0:50:11"> The big key here was not so much the language as the method.</subtitle>
  
<subtitle id="0:17:36"> when I look at this picture I think I can't use that metaphor</subtitle>
+
<subtitle id="0:50:17"> The method came first, and then we did the language to do it so the whole thing collapses down.</subtitle>
  
<subtitle id="0:17:38"> anymore because look at how modular these pyramids are</subtitle>
+
<subtitle id="0:50:23"> Okay.</subtitle>
  
<subtitle id="0:17:41"> we would love to have that modularity in the</subtitle>
+
== Particles and Fields Abstraction ==
  
<subtitle id="0:17:44"> code that we write so I think the picture</subtitle>
+
<note for="0:50:26">
 +
The dynamic content here is to be filled in.
 +
<slide for="0:50:26" name="COFES2012-ComputingAsPhenomena2.png"/>
 +
</note>
 +
<subtitle id="0:50:26"> Let's take another one of these metaphors: particles and fields. Everybody understands this as a kind of a metaphor for iron filings in a magnetic field. The iron filings seem to know what to do. They're feeling this field and they're doing individual things that look like they're somewhat coordinated.</subtitle>
  
<subtitle id="0:17:47"> that fits our code better is a slum</subtitle>
+
<subtitle id="0:50:44"> In fact, there are animals that do this also like ants.</subtitle>
  
<subtitle id="0:17:51"></subtitle>
+
<subtitle id="0:50:50"> Here's a little ant simulation. This is their nest. These guys are the food. And, if we start this thing going, then we see that the ants are finding the food, going to the nest and they're leaving this pheromone trail. </subtitle>
  
<subtitle id="0:17:53"></subtitle>
+
<subtitle id="0:51:8"> This is using about eleven thousand parallel processes, because each little cell is being used to diffuse the perfume the ants lay down. You see, right now, all of the ants have been captured by the field even they're not communicating directly with each other they're communicating indirectly with each other.</subtitle>
  
<subtitle id="0:17:57"></subtitle>
+
<subtitle id="0:51:29"> We would call this loose coupling.</subtitle>
  
<subtitle id="0:17:59"></subtitle>
+
== Paragraph Justification with Rules ==
  
<subtitle id="0:18:2"></subtitle>
+
<subtitle id="0:51:32"> Well, if you have crazy brains, you could imagine that a paragraph of text is one of those things.</subtitle>
  
<subtitle id="0:18:5">bulldozers out some stuff but just leaves the stuff lying</subtitle>
+
<subtitle id="0:51:41"> Who said you could do the encyclopedia over here?</subtitle>
  
<subtitle id="0:18:8"> around never carts it off and and so forth</subtitle>
+
<subtitle id="0:51:47">We're not going to do the encyclopedia but we're just going to say: "hey, we should be able to organizae these little ants to do a paragraph.</subtitle>
  
<subtitle id="0:18:11"> so the real question is not whether we</subtitle>
+
<subtitle id="0:51:59">The simplest thing that you can get fifth graders to figure out is.. Well, when you have to do something, follow the guy who is in front of you, and if there's nobody in front of you go to the upper left-hand corner.</subtitle>
  
<subtitle id="0:18:14"> can improve on this but</subtitle>
+
<subtitle id="0:52:8"> If you find yourself over the the right-hand margin, tell the guy in front of you, and eventually somebody will know what to do, like go to the next line, right?</subtitle>
  
<subtitle id="0:18:17"> what is the actual level</subtitle>
+
<subtitle id="0:52:17"> Let's just say go do this.</subtitle>
  
<subtitle id="0:18:20"> of improvement which is</subtitle>
+
<subtitle id="0:52:23"> I just gave you like a three  line formatter, right?</subtitle>
  
<subtitle id="0:18:23"> tantamount to asking how</subtitle>
+
<subtitle id="0:52:29"> So, this is math. I'm going to set it off again.</subtitle>
  
<subtitle id="0:18:26"> complex is the</subtitle>
+
<subtitle id="0:52:35"> And, I'm going to point out that I can edit this. Let's let it.</subtitle>
  
<subtitle id="0:18:29"> actual problems were trying to solve compared</subtitle>
+
<subtitle id="0:52:41"> I can turn general here into justify.</subtitle>
  
<subtitle id="0:18:32"> to the complexity we're creating by just bumbling around</subtitle>
+
<subtitle id="0:52:47"> And, it's just redoing this over and over again. All right.</subtitle>
  
<subtitle id="0:18:35"> so let's</subtitle>
+
<subtitle id="0:52:53"> The editor is actually working</subtitle>
  
<subtitle id="0:18:38"> ask a question about what science is now that</subtitle>
+
<subtitle id="0:52:59">Now, another way to do it, a little faster, is to say: "hey, don't follow the leader here because this is just for the crowd".</subtitle>
  
<subtitle id="0:18:41"> we've talked about engineering so real science</subtitle>
+
<subtitle id="0:53:5"> When it's time to do your thing, wait until the guy in front of you gets to the right place, and then go right behind him.</subtitle>
  
<subtitle id="0:18:44"> looks at hairballs this is my favorite hairball</subtitle>
+
<subtitle id="0:53:14"> This is called jump, and here's what that looks like.</subtitle>
  
<subtitle id="0:18:47"> it's about this big recovered from the stomach</subtitle>
+
<subtitle id="0:53:17"> Now, they're all standing still.  Okay.</subtitle>
  
<subtitle id="0:18:50"> of a woolly mammoth found in a glacier</subtitle>
+
<subtitle id="0:53:29"> If I start jump here, and I just say now do this in between frame times.</subtitle>
  
<subtitle id="0:18:53"> but because hair balls are ugly to</subtitle>
+
<subtitle id="0:53:35">Bonk</subtitle>
  
<subtitle id="0:18:56"> look at but it got your attention especially</subtitle>
+
<subtitle id="0:53:41">okay, so all of the editing here is done like this.</subtitle>
  
<subtitle id="0:18:59"> and I say how big it is</subtitle>
+
<subtitle id="0:53:47"> In fact, this is another one of the documents in this universal document system.</subtitle>
  
<subtitle id="0:19:2"> and it represents complications</subtitle>
+
<subtitle id="0:53:53"> Remember, we have to do Microsoft Office here.</subtitle>
  
<subtitle id="0:19:5"> but know the universe is good enough</subtitle>
+
<subtitle id="0:53:56"> But, why would anybody in the right mind give you seven applications that all do almost the same thing but not quite.</subtitle>
  
<subtitle id="0:19:8"> the starry night it's pretty air but it's still</subtitle>
+
<subtitle id="0:54:5"> Well, the answer is simple, because amazingly people will put up with this silliness enough to buy it from them, and thus encourage them further.</subtitle>
  
<subtitle id="0:19:11">spent thousand of years misunderstanding</subtitle>
+
<subtitle id="0:54:17"> This is nonsense.</subtitle>
  
<subtitle id="0:19:14"> it in a bunch of ways and</subtitle>
+
<subtitle id="0:54:20"> Really, what you want is a universal document in just different ways.  You really don't need to have a different system for the World Wide Web, do you?</subtitle>
  
<subtitle id="0:19:17"> we little creatures with our brains have languages</subtitle>
+
<subtitle id="0:54:32"> No, because it's just a different way of accessing these multimedia Docs.</subtitle>
  
<subtitle id="0:19:20"> we can make all of our languages out of</subtitle>
+
<subtitle id="0:54:38"> This is actually how we write code. This is an explanation to somebody like you to show in a little essay how the how the code actually works.</subtitle>
  
<subtitle id="0:19:23"> the scheffers stroke here this is the NAND</subtitle>
+
<subtitle id="0:54:56"> We start off here, and say: "okay, the first thing we want to do is just get these guys out there randomly."</subtitle>
  
<subtitle id="0:19:26"> operator and</subtitle>
+
<subtitle id="0:55:5"> These two lines of these two little boxes of code do this. And, here's one that just does this without worrying about the next line.</subtitle>
  
<subtitle id="0:19:29"> because we have tiny little brains we</subtitle>
+
<subtitle id="0:55:17"> Here are some special cases.</subtitle>
  
<subtitle id="0:19:32"> invented mathematics and we</subtitle>
+
<subtitle id="0:55:26"> This is a reminiscent of the way Knuth sometimes likes to program.</subtitle>
  
<subtitle id="0:19:35">up with something like Maxwell's equations or heavy sides</subtitle>
+
<subtitle id="0:55:32"> You actually learn the thing while you're looking at it. You can do little experiments.</subtitle>
  
<subtitle id="0:19:38"> version of Maxwell's equation and put</subtitle>
+
<subtitle id="0:55:38"> By the time you've done that, bingo, you've got the thing.</subtitle>
  
<subtitle id="0:19:41"> a large part of the phenomena</subtitle>
+
<subtitle id="0:55:44"> Here, this is a yet another problem-oriented language, but with rules this time. So rule based.</subtitle>
  
<subtitle id="0:19:44"> that we're looking at out there on a t-shirt and</subtitle>
+
<subtitle id="0:55:53"> Seven rules for doing the layout.</subtitle>
  
<subtitle id="0:19:47"> this represents complexity so</subtitle>
+
<subtitle id="0:55:59"> The whole editor, like Microsoft Word. Paragraphs is 35 rules, okay.</subtitle>
  
<subtitle id="0:19:50"> the complexity of the electromagnetic field</subtitle>
+
<subtitle id="0:56:8"> So, that's all you have to do for that.</subtitle>
  
<subtitle id="0:19:53"> in large amounts</subtitle>
+
== Coordinating Multiple Solvers ==
  
<subtitle id="0:19:56"> of it enough to invent a radio</subtitle>
+
<note for="0:56:13">
 +
Refer to Hesam Samimi and Alan Borning work on [http://vpri.org/html/writings.php|VPRI Writings] page.
 +
<slide id="0:56:13" name="COFES2012-RelationalProgramming1.png"/>
 +
<slide id="0:56:20" name="COFES2012-RelationalProgramming2.png"/>
 +
<slide id="0:56:35" name="COFES2012-RelationalProgramming3.png"/>
 +
<slide id="0:56:36" name="COFES2012-RelationalProgramming4.png"/>
 +
<slide id="0:56:37" name="COFES2012-RelationalProgramming5.png"/>
 +
<slide id="0:56:38" name="COFES2012-RelationalProgramming6.png"/>
 +
<slide id="0:56:39" name="COFES2012-RelationalProgramming7.png"/>
 +
<slide id="0:56:40 name="COFES2012-RelationalProgramming8.png"/>
 +
<slide id="0:56:47" name="COFES2012-RelationalProgramming9.png"/>
 +
<slide id="0:56:50" name="COFES2012-RelationalProgramming10.png"/>
 +
<slide id="0:56:55" name="COFES2012-RelationalProgramming11.png"/>
 +
<slide id="0:57:00" name="COFES2012-RelationalProgramming12.png"/>
 +
</note>
 +
<subtitle id="0:56:13">Here is another area. A thing that's very useful to have is problem-solvers.</subtitle>
  
<subtitle id="0:19:59"> and radar and etc etc</subtitle>
+
<subtitle id="0:56:20"> But the problem with problem solvers and these problem-oriented languages, they're [also] problem solvers, they aren't integrated.</subtitle>
  
<subtitle id="0:20:2"> can be represented by a couple of these equations and</subtitle>
+
<subtitle id="0:56:29">So, you wind up with a hodgepodge of different things serving different things, and you want to be able to integrate them.</subtitle>
  
<subtitle id="0:20:5"> these equations should</subtitle>
+
<subtitle id="0:56:35"> Here, we can have a simplex solver, differential equations, propagation, dynamic programming, relaxing, the rules for the paragraph. These all have different problem domains.</subtitle>
  
<subtitle id="0:20:8"> be symmetrical</subtitle>
+
<subtitle id="0:56:47"> What we want to do is to approach them strategically, as I've been talking about here, through general relational languages that talk to, or a kind of a little operating system for solvers, and often with the help of an expert system that helps make a strategy for using these things.</subtitle>
  
<subtitle id="0:20:11"> because the magnetic field and the electric field are</subtitle>
+
<subtitle id="0:57:8"> The further stuff here is beyond the scope of this short talk, so I'll just move on here.</subtitle>
  
<subtitle id="0:20:14"> trade off against each other with the art so</subtitle>
+
== From Gears to Ecologies ==
  
<subtitle id="0:20:17"> if you worry about that and you happen to be</subtitle>
+
<note for="0:57:14">
 +
<slide for="0:57:14" name="COFES2012-Gears1.png"/>
 +
<slide for="0:57:35" name="COFES2012-Gears2.png"/>
 +
<slide for="0:58:5" name="COFES2012-Gears3.png"/>
 +
<slide for="0:58:14" name="COFES2012-Gears4.png"/>
 +
</note>
 +
<subtitle id="0:57:14">Okay, here's an important idea. Too many ideas in this talk, right?</subtitle>
  
<subtitle id="0:20:20"> named Einstein you will come up with the special</subtitle>
+
<subtitle id="0:57:23"> Here's something that happened in the 60s except nobody noticed it except maybe the ARPA researchers, and the outgrowth of that to Xerox PARC. </subtitle>
  
<subtitle id="0:20:23"> theory of relativity which will symmetric</subtitle>
+
<subtitle id="0:57:35"> That is, that the entire paradigm of computing, because of Moore's law, was going to be able to shift from a gear like way of doing things, basically tight coupling, brittle code, to something more like ecology, something more biological.</subtitle>
  
<subtitle id="0:20:26"> put symmetry into the whole thing and you get down to two</subtitle>
+
<subtitle id="0:57:53"> We use these ideas very strongly in the invention of the Internet, and in the invention of the object-oriented techniques that we used for software at Xerox PARC.</subtitle>
  
<subtitle id="0:20:29">equations just like you should have one for the electric</subtitle>
+
<subtitle id="0:58:5"> The deal here is you can fix a clock, but you can only make clocks of a certain size. Maybe a thousand gears before they just crash.</subtitle>
  
<subtitle id="0:20:32"> field and one for the magnetic field now science is not</subtitle>
+
<subtitle id="0:58:11"> This is what happens in today's programming.</subtitle>
  
<subtitle id="0:20:35"> this so the problem is when most people take</subtitle>
+
<subtitle id="0:58:14"> You have to negotiate with the system. A lot of what growing the old world into this new world is learning what it means to do this kind of negotiation, as you add more system elements.</subtitle>
  
<subtitle id="0:20:38">science courses they're taught the t-shirt but</subtitle>
+
<subtitle id="0:58:26"> The next little thing is just a couple of minutes of gloss, because I'm getting close to the end here. But I wanted to say something about systems.</subtitle>
  
<subtitle id="0:20:41"> science is actually that</subtitle>
+
== Simulation of Space and Time ==
  
<subtitle id="0:20:44"> science is the the</subtitle>
+
<note for="0"58:38">
 +
David Reed's work on distributed decision making [http://publications.csail.mit.edu/lcs/specpub.php?id=773]. and Gerald Popek's Locus: [https://mitpress.mit.edu/books/locus-distributed-system-architecture|Locus].
 +
<slide for="0:58:38" name="COFES2012-Phenomena2-2.png"/>
 +
<slide for="0:58:38" name="COFES2012-SimulationTime1.png"/>
 +
<slide for="0:59:5" name="COFES2012-SimulationTime2.png"/>
 +
<slide for="0:58:55" name="COFES2012-SimulationTime3.png"/>
 +
<slide for="1:00:8" name="COFES2012-SimulationTime4.png"/>
 +
<slide for="1:00:56" name="COFES2012-SimulationTime5.png"/>
 +
<slide for="1:01:29" name="COFES2012-SimulationTime6.png"/>
 +
<slide for="1:01:44" name="COFES2012-SimulationTime7.png"/>
 +
</note>
 +
<subtitle id="0:58:38"> Three of the ideas here are that we want to control time. I mentioned this a little bit before. We do not want to CPU to control time first. </subtitle>
  
<subtitle id="0:20:47"> realm of the relationship</subtitle>
+
<subtitle id="0:58:47">We control time, and we'll do it by simulating our own time.</subtitle>
  
<subtitle id="0:20:50"> between the phenomena that we can't get to and</subtitle>
+
<subtitle id="0:58:50"> We don't want to have any preferred center. We want to have something like the Internet all the way down.</subtitle>
  
<subtitle id="0:20:53"> similarly we can</subtitle>
+
<subtitle id="0:58:55"> We want loose coupling. Now of course, this has all been done before, again with networks.</subtitle>
  
<subtitle id="0:20:56"> do science with engineering</subtitle>
+
<subtitle id="0:59:5"> Here now, we're looking at physical computers on the Internet or Ethernet.</subtitle>
  
<subtitle id="0:20:59"> because it's an artifact that has phenomena so</subtitle>
+
<subtitle id="0:59:11"> Ideally, we'd like our computations to be software versions of these hardware networks. Why?</subtitle>
  
<subtitle id="0:21:2"> we can actually look at that bridge that we</subtitle>
+
<subtitle id="0:59:20"> Because in most cases we will need to do load balancing.</subtitle>
  
<subtitle id="0:21:5"> built there and scientists can look at what engineers</subtitle>
+
<subtitle id="0:59:26"> Sometimes we'll be able to run all of these guys on a single machine, in which case we just have increased integrity and ability to design quickly. But a lot of the time, especially now with mobile, we want to have the same computations able to drift around the network to different kinds of devices.</subtitle>
  
<subtitle id="0:21:8"> do and make a t-shirt of it so</subtitle>
+
<subtitle id="0:59:47"> In some cases, not all of the computation is going to want to be in the machine that is next to the user interface. If you think of the user interface here, it's basically a set of views of processes that are giving it images to integrate up on the surface.</subtitle>
  
<subtitle id="0:21:11"> we have t-shirts of what bridges are</subtitle>
+
<subtitle id="1:00:8">Here's a great thing if you're interested. Dave Reed's 1978 Ph. D thesis at MIT. The design of an operating system for the Internet was never done, but we validated it a few years ago at Viewpoints.</subtitle>
  
<subtitle id="0:21:14"> their theories of bridges then the cool thing this</subtitle>
+
<subtitle id="1:00:26"> What if you want to make a system that is the size of the Internet that is a software system. What is it that you have to do to absolutely ensure that you're going to have what people like to call data integrity always.</subtitle>
  
<subtitle id="0:21:17"> is why it's great to be alive today the</subtitle>
+
<subtitle id="1:00:41"> So that no matter where you ask a question anywhere on the network about anything anywhere on the network, you will get the same answer for the pseudo time referent of that question.</subtitle>
  
<subtitle id="0:21:20"> cool thing is you can take that t-shirt and</subtitle>
+
<subtitle id="1:00:56"> A working version of a migratory system was done by Jerry Popek. I put this up here because this book was written in the 80s, you can still get it from MIT press.</subtitle>
  
<subtitle id="0:21:23"> make one hell of a bridge</subtitle>
+
<subtitle id="1:01:8"> The Locus distributed system architecture. You'll find the entire book interesting. It just a thin little volume. The first two chapters are a classic still of the issues you have to think about and solve in order to do this.</subtitle>
  
<subtitle id="0:21:26"></subtitle>
+
<subtitle id="1:01:23"> Again, this has all been done. This is almost 30 years old now, but nobody uses it.</subtitle>
  
<subtitle id="0:21:29">so engineering was around for a long time but it didn't hit</subtitle>
+
<subtitle id="1:01:29"> but if you were to use it, all applications are now just mashups, right?</subtitle>
  
<subtitle id="0:21:32"> its stride until it had this beginning</subtitle>
+
<subtitle id="1:01:35"> We don't want applications as smoke stacks, because we want to integrate. We didn't have appications at Xerox PARC, and we did not have operating systems.</subtitle>
  
<subtitle id="0:21:35"> the yang here event of making things and</subtitle>
+
<subtitle id="1:01:44"> The current web which is getting more and more complicated can immediately get simple except for all the legacy stuff that has been done so far.</subtitle>
  
<subtitle id="0:21:38"> looking at them the special way that science does</subtitle>
+
== Scalability of Ecology and Psychology ==
  
<subtitle id="0:21:41"> and how</subtitle>
+
<note for="1:01:56">
 +
The books shown are Ecology: From Individuals to Ecosystems [https://en.wikipedia.org/wiki/Ecology:_From_Individuals_to_Ecosystems] and the Society of Mind.
 +
<slide for="1:01:56" name="COFES2012-Ecology1.png"/>
 +
<slide for="1:03:2" name="COFES2012-Ecology2.png"/>
 +
</note>
 +
<subtitle id="1:01:56"> Here's something that Viewpoints has on its list but we expect not to be able to solve this, at least in this path of doing things. it, may be beyond, may require a much larger effort than a small nonprofit can do.</subtitle>
  
<subtitle id="0:21:44"> big is this bridge well see those little boats down there those</subtitle>
+
<subtitle id="1:02:14"> But if you think about analogies to what's happening with the scaling that's going on here. It basically starts looking like a biological ecology.</subtitle>
  
<subtitle id="0:21:47"> are super tankers so</subtitle>
+
<subtitle id="1:02:26"> These have their own dynamics and they need to be thought about in special ways.</subtitle>
  
<subtitle id="0:21:50"> just for comparison there is our Empire State</subtitle>
+
<subtitle id="1:02:32"> The ability for us to scale to what Moore's law is allowing right now is going to require us to start thinking more and more like this</subtitle>
  
<subtitle id="0:21:54">Building so the pylons on this bridge are the height of the Empire</subtitle>
+
<subtitle id="1:02:42"> We did this to some extent when we did the Internet.</subtitle>
  
<subtitle id="0:21:57">Building and there's the Great Pyramid of Egypt so</subtitle>
+
<subtitle id="1:02:44"> Like, I have a degree in molecular biology in my misspent youth.</subtitle>
  
<subtitle id="0:22:0"> this is the asahi bridge in Japan</subtitle>
+
<subtitle id="1:02:50"> A lot of the ways I think about this stuff is through tissue biology and how the hundred trillion cells in our body work without having a dedicated center and so forth.</subtitle>
  
<subtitle id="0:22:2"> just can't beat it so</subtitle>
+
<subtitle id="1:03:2"> But in computing, we have problems of our own that are special. Then, the next step beyond this, the best book I've ever seen about it is Minsky's Society of Mind book, which is actually about a model for human psychology.</subtitle>
  
<subtitle id="0:22:5"> lovely and so this is</subtitle>
+
<subtitle id="1:03:17"> But in fact, it is a very good model for what the Internet is going to turn into. Okay.</subtitle>
  
<subtitle id="0:22:8"> what we want to think about we want to think about real engineering</subtitle>
+
== Apple, Orange and Lemon ==
  
<subtitle id="0:22:11">we want to think about real science computer</subtitle>
+
<note for="1:03:26">
 +
Apple is Apple, and orange refers to the theme color of Ubuntu as a stand in for the Linux Operating System.
 +
<slide for="1:03:2" name="COFES2012-Apple1.png"/>
 +
<slide for="1:03:29" name="COFES2012-Apple2.png"/>
 +
<slide for="1:03:32" name="COFES2012-Apple3.png"/>
 +
<slide for="1:03:35" name="COFES2012-Apple4.png"/>
 +
</note>
 +
<subtitle id="1:03:26"> So the punchline here, we've got three main operating systems.</subtitle>
  
<subtitle id="0:22:14"> science is not real science ask anybody to give</subtitle>
+
<subtitle id="1:03:29"> I won't say which one is the lemon.</subtitle>
  
<subtitle id="0:22:17">will give you an engineering definition and part</subtitle>
+
<subtitle id="1:03:32"> Down on the bottom here, our little Frankenstein monster that we made is that I've been showing you today is less than 20,000 lines of code.</subtitle>
  
<subtitle id="0:22:20"> of is because computer science persists in only building</subtitle>
+
<subtitle id="1:03:44"> So it's worth pondering.</subtitle>
  
<subtitle id="0:22:23">doesn't spend a lot of time trying to understand them</subtitle>
+
<subtitle id="1:03:47"> We are not using any of the Macintosh software in order to do this demo.</subtitle>
  
<subtitle id="0:22:26"> so</subtitle>
+
<subtitle id="1:03:56"> Here's just to kick off, I think I'll just show this slide and then quit.</subtitle>
  
<subtitle id="0:22:29"> you can look you know computers</subtitle>
+
<subtitle id="1:04:2"> I organized the talk so I can stop now at any place and I need to in about a minute.</subtitle>
  
<subtitle id="0:22:32"> we're built there you have their</subtitle>
+
<subtitle id="1:04:8"> I'll just leave this one thought with you. Maybe we can have a few questions.</subtitle>
  
<subtitle id="0:22:35"> complicated artifacts programming languages a complicated artifacts</subtitle>
+
<subtitle id="1:04:14"> Then, maybe more will happen. I think there's a smaller group question session coming up later.</subtitle>
  
<subtitle id="0:22:38"> you can do the same thing John McCarthy looked</subtitle>
+
== News and New ==
  
<subtitle id="0:22:41"> at them and being a mathematician you</subtitle>
+
<note for="1:04:23">
 
+
A recurring theme on learning that Alan mentions in various ways over the decades.
<subtitle id="0:22:44"> want a G shirt so this is the</subtitle>
+
<slide for="1:03:35" name="COFES2012-News1.png"/>
 
+
<slide for="1:04:32" name="COFES2012-News2.png"/>
<subtitle id="0:22:47">programming language Lisp on the t-shirt and once</subtitle>
+
<slide for="1:05:5" name="COFES2012-News3.png"/>
 
+
<slide for="1:03:35" name="COFES2012-News4.png"/>
<subtitle id="0:22:50"> you look at that you realize whoops programming is not</subtitle>
+
<slide for="1:03:35" name="COFES2012-News5.png"/>
 
+
<slide for="1:05:32" name="COFES2012-News6.png"/>
<subtitle id="0:22:53"> as complicated as I thought all the semantics</subtitle>
+
<slide for="1:05:41" name="COFES2012-News7.png"/>
 
+
<slide for="1:05:53" name="COFES2012-News8.png"/>
<subtitle id="0:22:56"> I really care about are not in these in humongous</subtitle>
+
<slide for="1:06:32" name="COFES2012-News9.png"/>
 
+
</note>
<subtitle id="0:22:59"> Fortran or Java compilers but they</subtitle>
 
 
 
<subtitle id="0:23:2"> actually very small and when I make them</subtitle>
 
 
 
<subtitle id="0:23:5">small enough for my tiny little brain I can actually think about to manipulate</subtitle>
 
 
 
<subtitle id="0:23:8"> them whereas trying to go</subtitle>
 
 
 
<subtitle id="0:23:11"> over on the other side and mess around with</subtitle>
 
 
 
<subtitle id="0:23:14">directly to make it better it just never happened so</subtitle>
 
 
 
<subtitle id="0:23:17"></subtitle>
 
 
 
<subtitle id="0:23:20"> John came up with a mathematical theory of computation</subtitle>
 
 
 
<subtitle id="0:23:23"> and those</subtitle>
 
 
 
<subtitle id="0:23:26"> of us who came in the next generation after McCarthy</subtitle>
 
 
 
<subtitle id="0:23:29"> got to do some really fun things with</subtitle>
 
 
 
<subtitle id="0:23:32"> this idea I should mention that what</subtitle>
 
 
 
<subtitle id="0:23:35"> I'm talking to you about actually happened</subtitle>
 
 
 
<subtitle id="0:23:38"> in the 60s and it</subtitle>
 
 
 
<subtitle id="0:23:41"> bore some real fruits but in fact it never made</subtitle>
 
 
 
<subtitle id="0:23:44"> it into the world of the 60s which was</subtitle>
 
 
 
<subtitle id="0:23:47"> dominated by IBM or the world of</subtitle>
 
 
 
<subtitle id="0:23:50"> the 80s and 90s which is dominated by Microsoft</subtitle>
 
 
 
<subtitle id="0:23:53">didn't happen so most</subtitle>
 
 
 
<subtitle id="0:23:56"> people program in a way that is strikingly</subtitle>
 
 
 
<subtitle id="0:23:59"> similar to the way programming was done around 1965</subtitle>
 
 
 
<subtitle id="0:24:2"></subtitle>
 
 
 
<subtitle id="0:24:5"> so let's take a look at the idea</subtitle>
 
 
 
<subtitle id="0:24:8"> of tactics versus strategies the</subtitle>
 
 
 
<subtitle id="0:24:11"> simplest thing when we have materials is to think tactically</subtitle>
 
 
 
<subtitle id="0:24:14"> have a bunch of these</subtitle>
 
 
 
<subtitle id="0:24:17"> materials piles and stacks</subtitle>
 
 
 
<subtitle id="0:24:20"> simplest things we can get out of those hardly</subtitle>
 
 
 
<subtitle id="0:24:23">any design effort at all as pyramids and walls and people</subtitle>
 
 
 
<subtitle id="0:24:26"> did this with bricks for thousands of</subtitle>
 
 
 
<subtitle id="0:24:29"> years before somebody had a strategic thought</subtitle>
 
 
 
<subtitle id="0:24:32"> which is hey</subtitle>
 
 
 
<subtitle id="0:24:35">let's make something out of the bricks before we make the thing</subtitle>
 
 
 
<subtitle id="0:24:38"> let's make a new kind of building component</subtitle>
 
 
 
<subtitle id="0:24:41">a different kind of structural integrity than</subtitle>
 
 
 
<subtitle id="0:24:44"> a pyramid does and all of a sudden we can kick ass</subtitle>
 
 
 
<subtitle id="0:24:47"> took thousands</subtitle>
 
 
 
<subtitle id="0:24:50"> of years to get beyond what</subtitle>
 
 
 
<subtitle id="0:24:53"> the brick forced into our minds by being in front of us</subtitle>
 
 
 
<subtitle id="0:24:56"> to this very odd thing that</subtitle>
 
 
 
<subtitle id="0:24:59"> requires more building materials to make than</subtitle>
 
 
 
<subtitle id="0:25:2">when you're done this is one of the hard things about an arch it's</subtitle>
 
 
 
<subtitle id="0:25:5"> hard to imagine it because it doesn't work until</subtitle>
 
 
 
<subtitle id="0:25:8"> it works so people just ignored it</subtitle>
 
 
 
<subtitle id="0:25:11"> and the same thing happened in computing</subtitle>
 
 
 
<subtitle id="0:25:14"> where we build things out of Nan's</subtitle>
 
 
 
<subtitle id="0:25:17"> basically computing is all about comparing</subtitle>
 
 
 
<subtitle id="0:25:20"> things so you can take</subtitle>
 
 
 
<subtitle id="0:25:23"> materials like even two</subtitle>
 
 
 
<subtitle id="0:25:26">something that first graders love is they can do any</subtitle>
 
 
 
<subtitle id="0:25:29"> fractional arithmetic problem</subtitle>
 
 
 
<subtitle id="0:25:32"> their ten-year-old brother can't do and</subtitle>
 
 
 
<subtitle id="0:25:35"> they can do it in two seconds with two rulers</subtitle>
 
 
 
<subtitle id="0:25:38"> all right because the ruler is an addition slide rule you</subtitle>
 
 
 
<subtitle id="0:25:41"> show this to a kid they'll love you for life</subtitle>
 
 
 
<subtitle id="0:25:44"> just compute the whole thing out ahead of time</subtitle>
 
 
 
<subtitle id="0:25:47"> and say here's</subtitle>
 
 
 
<subtitle id="0:25:50"> what it is and by the way you're teaching them vectors at the same time</subtitle>
 
 
 
<subtitle id="0:25:53"> and so it beats regular fractions in many many</subtitle>
 
 
 
<subtitle id="0:25:56"> ways and of course the Romans and the Greeks</subtitle>
 
 
 
<subtitle id="0:25:59"> Romans had a socially</subtitle>
 
 
 
<subtitle id="0:26:2"> accepted QWERTY form of numbers called Roman numerals</subtitle>
 
 
 
<subtitle id="0:26:5"> but they didn't use them most</subtitle>
 
 
 
<subtitle id="0:26:8"> people use this the wrong way the Romans and the Greeks had</subtitle>
 
 
 
<subtitle id="0:26:11"> abacuses to compute with this is</subtitle>
 
 
 
<subtitle id="0:26:14"> a Roman abacus and those stones are called calculi the</subtitle>
 
 
 
<subtitle id="0:26:17"> calculus came from this</subtitle>
 
 
 
<subtitle id="0:26:20"> notion of what they pull out of your teeth</subtitle>
 
 
 
<subtitle id="0:26:23"> also when they you go to the dentist to get the plaque</subtitle>
 
 
 
<subtitle id="0:26:26"> removed they call them calculi and</subtitle>
 
 
 
<subtitle id="0:26:29"> flip-flops didn't come</subtitle>
 
 
 
<subtitle id="0:26:32">people wanted to do computers but because a couple</subtitle>
 
 
 
<subtitle id="0:26:35"> of Brits wanted to see if they could make a memory</subtitle>
 
 
 
<subtitle id="0:26:38"> that could do some of the things human memory could do</subtitle>
 
 
 
<subtitle id="0:26:41"> out of materials because</subtitle>
 
 
 
<subtitle id="0:26:44">there's a vitalism was a big deal back then</subtitle>
 
 
 
<subtitle id="0:26:47"> and ENIAC</subtitle>
 
 
 
<subtitle id="0:26:50"> but the problem is matter is inconvenient for</subtitle>
 
 
 
<subtitle id="0:26:53"> this it's just</subtitle>
 
 
 
<subtitle id="0:26:56"> you know basically the scaling problems</subtitle>
 
 
 
<subtitle id="0:26:59"> overwhelm you very little return so</subtitle>
 
 
 
<subtitle id="0:27:2"> you need to go strategically and</subtitle>
 
 
 
<subtitle id="0:27:5"> of course this was done a long time before with</subtitle>
 
 
 
<subtitle id="0:27:8"> a jacquard loom von Neumann architecture x'</subtitle>
 
 
 
<subtitle id="0:27:11"> by anointment style programming languages and</subtitle>
 
 
 
<subtitle id="0:27:14"> even the programming languages of today like Java which</subtitle>
 
 
 
<subtitle id="0:27:17"> is also a von Neumann style language in</subtitle>
 
 
 
<subtitle id="0:27:20"> spite of a few trappings it has on it and</subtitle>
 
 
 
<subtitle id="0:27:23"> basically the programming that we're doing</subtitle>
 
 
 
<subtitle id="0:27:26"> today has</subtitle>
 
 
 
<subtitle id="0:27:29"> not stirred from this in 50 years</subtitle>
 
 
 
<subtitle id="0:27:32"> there have been about 3000 different programming languages</subtitle>
 
 
 
<subtitle id="0:27:35"> invented and some of them really useful but</subtitle>
 
 
 
<subtitle id="0:27:38">style of programming that is used today is almost</subtitle>
 
 
 
<subtitle id="0:27:41"> entirely this style and it's</subtitle>
 
 
 
<subtitle id="0:27:44">tyle where the programming language is rather similar</subtitle>
 
 
 
<subtitle id="0:27:47"> to the underlying storage mechanisms</subtitle>
 
 
 
<subtitle id="0:27:50"> and control structures of the machine there</subtitle>
 
 
 
<subtitle id="0:27:53"> are few convenience is there but not a lot and not</subtitle>
 
 
 
<subtitle id="0:27:56"> enough but of</subtitle>
 
 
 
<subtitle id="0:27:59"> course there are always weird people out on the fringes</subtitle>
 
 
 
<subtitle id="0:28:2"> who like Turing himself</subtitle>
 
 
 
<subtitle id="0:28:5"> who did things are completely</subtitle>
 
 
 
<subtitle id="0:28:8"> different for instance sketchpad which is having its 50th anniversary this</subtitle>
 
 
 
<subtitle id="0:28:11"> year computed by</subtitle>
 
 
 
<subtitle id="0:28:14"> you programmed it by putting in</subtitle>
 
 
 
<subtitle id="0:28:17"> constraints that sketchpad had to figure out</subtitle>
 
 
 
<subtitle id="0:28:20"> so instead of writing solutions</subtitle>
 
 
 
<subtitle id="0:28:23"> to problems you just gave sketchpad what the problem what</subtitle>
 
 
 
<subtitle id="0:28:26"> the nature of the problem was what the nature that would</subtitle>
 
 
 
<subtitle id="0:28:29"> characterize a solution and sketchpad had three problem solvers</subtitle>
 
 
 
<subtitle id="0:28:32"> and in 1962 it</subtitle>
 
 
 
<subtitle id="0:28:35"> would solve those problems for you by</subtitle>
 
 
 
<subtitle id="0:28:38"> the way he also invented computer graphics while</subtitle>
 
 
 
<subtitle id="0:28:41">it and also this is the first object-oriented</subtitle>
 
 
 
<subtitle id="0:28:44"> system I know of so those three things were</subtitle>
 
 
 
<subtitle id="0:28:47"> done by Ivan Sutherland as a thesis project in one</subtitle>
 
 
 
<subtitle id="0:28:50"> year one person and I once they asked</subtitle>
 
 
 
<subtitle id="0:28:53"> Ivan how could you do these three things in</subtitle>
 
 
 
<subtitle id="0:28:56"> one year he says well I didn't know it was hard</subtitle>
 
 
 
<subtitle id="0:28:59"> Ivan as a genius but</subtitle>
 
 
 
<subtitle id="0:29:2"> he had also had the advantage of just</subtitle>
 
 
 
<subtitle id="0:29:5"> aiming for what we really needed he</subtitle>
 
 
 
<subtitle id="0:29:8">worry about whether it was hard because nobody knew</subtitle>
 
 
 
<subtitle id="0:29:11"> what was easy and hard in 1962 he just went for</subtitle>
 
 
 
<subtitle id="0:29:14"> what we needed which is an interactive system that</subtitle>
 
 
 
<subtitle id="0:29:17"> you could show sort of what</subtitle>
 
 
 
<subtitle id="0:29:20"> you wanted then tell it what the criteria were to</subtitle>
 
 
 
<subtitle id="0:29:23">the job up and it finished the job up great</subtitle>
 
 
 
<subtitle id="0:29:26"> too bad we don't have it today the</subtitle>
 
 
 
<subtitle id="0:29:29"> Internet another thing which</subtitle>
 
 
 
<subtitle id="0:29:32"> is almost completely ignored by computer people why</subtitle>
 
 
 
<subtitle id="0:29:35"> because it works too well most</subtitle>
 
 
 
<subtitle id="0:29:38">computer people certainly most people in the world but most computer</subtitle>
 
 
 
<subtitle id="0:29:41"> people even don't even think of this as technology it's</subtitle>
 
 
 
<subtitle id="0:29:44"> completely different from the technology</subtitle>
 
 
 
<subtitle id="0:29:47"> they're used to the internet has never gone down</subtitle>
 
 
 
<subtitle id="0:29:50"> started running in 69 but</subtitle>
 
 
 
<subtitle id="0:29:53"> not continuously since then to replace all of its atoms and</subtitle>
 
 
 
<subtitle id="0:29:56"> it's bits without ever being shut down</subtitle>
 
 
 
<subtitle id="0:29:59"> people are shutting down their software systems</subtitle>
 
 
 
<subtitle id="0:30:2">the time they shut down individual servers even though</subtitle>
 
 
 
<subtitle id="0:30:5"> a server is just a name you never have to do that</subtitle>
 
 
 
<subtitle id="0:30:8"> so what we've got is two cultures here we got</subtitle>
 
 
 
<subtitle id="0:30:11">culture that was able to make something get scaled successfully</subtitle>
 
 
 
<subtitle id="0:30:14">of magnitude we've got</subtitle>
 
 
 
<subtitle id="0:30:17"> another culture who that who can't even appreciate the</subtitle>
 
 
 
<subtitle id="0:30:20"> feat of engineering and science that</subtitle>
 
 
 
<subtitle id="0:30:23"> took to do so</subtitle>
 
 
 
<subtitle id="0:30:26"> the Internet is really the only extant true object-oriented</subtitle>
 
 
 
<subtitle id="0:30:29"> system in the world right now and then</subtitle>
 
 
 
<subtitle id="0:30:32"> there's of course AI which</subtitle>
 
 
 
<subtitle id="0:30:35"> people have lost interest in just as</subtitle>
 
 
 
<subtitle id="0:30:38"> it was starting to get really well work done</subtitle>
 
 
 
<subtitle id="0:30:41"> so we should</subtitle>
 
 
 
<subtitle id="0:30:44">be spending more time thinking about about</subtitle>
 
 
 
<subtitle id="0:30:47"> this now one little</subtitle>
 
 
 
<subtitle id="0:30:50"> blast from the past 1973</subtitle>
 
 
 
<subtitle id="0:30:53"> we showed this machine and this the</subtitle>
 
 
 
<subtitle id="0:30:56"> system notice</subtitle>
 
 
 
<subtitle id="0:30:59"> overlapping windows there was a view</subtitle>
 
 
 
<subtitle id="0:31:2"> oriented object-oriented system</subtitle>
 
 
 
<subtitle id="0:31:5"> desktop publishing was</subtitle>
 
 
 
<subtitle id="0:31:8"> essentially the views</subtitle>
 
 
 
<subtitle id="0:31:11"> without the borders on them these</subtitle>
 
 
 
<subtitle id="0:31:14">split up when they came out into the real world but it's Xerox</subtitle>
 
 
 
<subtitle id="0:31:17"> theory one thing there was no operating system</subtitle>
 
 
 
<subtitle id="0:31:20"> because you don't need one</subtitle>
 
 
 
<subtitle id="0:31:23"> okay and</subtitle>
 
 
 
<subtitle id="0:31:26"> so when Xerox asked us what we</subtitle>
 
 
 
<subtitle id="0:31:29"> were we're doing we gave them</subtitle>
 
 
 
<subtitle id="0:31:32"> our own version of Paul starts</subtitle>
 
 
 
<subtitle id="0:31:35"> speech not even a pick and shovel so so</subtitle>
 
 
 
<subtitle id="0:31:38"> part of the deal at Xerox PARC was we built every bit</subtitle>
 
 
 
<subtitle id="0:31:41"> of the hardware and software ourselves from scratch</subtitle>
 
 
 
<subtitle id="0:31:44"> we did not go out and buy</subtitle>
 
 
 
<subtitle id="0:31:47"> commercial computers we did</subtitle>
 
 
 
<subtitle id="0:31:50"> not go out and buy commercial software</subtitle>
 
 
 
<subtitle id="0:31:53"> the reason is this stuff was so different that</subtitle>
 
 
 
<subtitle id="0:31:56"> we would have spent all of our time running</subtitle>
 
 
 
<subtitle id="0:31:59"> into walls that were simply irrelevant</subtitle>
 
 
 
<subtitle id="0:32:2"> to what we were trying to do</subtitle>
 
 
 
<subtitle id="0:32:5"> then the cool thing was this was</subtitle>
 
 
 
<subtitle id="0:32:8"> a tiny machine 128 K Ram</subtitle>
 
 
 
<subtitle id="0:32:11"> and we used half of it for the display</subtitle>
 
 
 
<subtitle id="0:32:14"> so it had a display about 800</subtitle>
 
 
 
<subtitle id="0:32:17"> by 600 and</subtitle>
 
 
 
<subtitle id="0:32:20"> all the software from the end-user down to</subtitle>
 
 
 
<subtitle id="0:32:23"> the non-existent operating system down to the</subtitle>
 
 
 
<subtitle id="0:32:26"> metal of the machine was only about 10,000</subtitle>
 
 
 
<subtitle id="0:32:29">of code it was done in a language we invented specifically</subtitle>
 
 
 
<subtitle id="0:32:32"> for the purpose so</subtitle>
 
 
 
<subtitle id="0:32:35"> one way of thinking about this is in the end no</subtitle>
 
 
 
<subtitle id="0:32:38"> matter what it is you think you're doing</subtitle>
 
 
 
<subtitle id="0:32:41"> math wins the</subtitle>
 
 
 
<subtitle id="0:32:44"> thing that is math the mathematize ation</subtitle>
 
 
 
<subtitle id="0:32:47"> of an idea dominates</subtitle>
 
 
 
<subtitle id="0:32:50"> all other things once you've done the</subtitle>
 
 
 
<subtitle id="0:32:53"> spadework around the edges at some point you have to</subtitle>
 
 
 
<subtitle id="0:32:56"> sit down and do something like mathematical thinking in</subtitle>
 
 
 
<subtitle id="0:32:59"> order to collapse all the</subtitle>
 
 
 
<subtitle id="0:33:2"> things that seem to be artificially dissimilar</subtitle>
 
 
 
<subtitle id="0:33:5"> into things that are similar this is called</subtitle>
 
 
 
<subtitle id="0:33:8"> making an algebra and this</subtitle>
 
 
 
<subtitle id="0:33:11"> was a technique that we use pretty generally at Parc and</subtitle>
 
 
 
<subtitle id="0:33:14"> so in a</subtitle>
 
 
 
<subtitle id="0:33:17"> few years we did this the</subtitle>
 
 
 
<subtitle id="0:33:20"> bitmap screen the GUI</subtitle>
 
 
 
<subtitle id="0:33:23"> WYSIWYG in desktop</subtitle>
 
 
 
<subtitle id="0:33:26"> publishing real objects laser</subtitle>
 
 
 
<subtitle id="0:33:29"> printers Ethernet pierre-pierre</subtitle>
 
 
 
<subtitle id="0:33:32"> and client-server and about half of the internet</subtitle>
 
 
 
<subtitle id="0:33:35"> now what was interesting about that perhaps is</subtitle>
 
 
 
<subtitle id="0:33:38"> it was only two dozen people</subtitle>
 
 
 
<subtitle id="0:33:41"> any company</subtitle>
 
 
 
<subtitle id="0:33:44"> here could have afforded to do this two</subtitle>
 
 
 
<subtitle id="0:33:47"> dozen people just ten million dollars a year in</subtitle>
 
 
 
<subtitle id="0:33:50"> today's dollars you could do it right now</subtitle>
 
 
 
<subtitle id="0:33:53"> you won't</subtitle>
 
 
 
<subtitle id="0:33:56"> do it though nobody is doing it you</subtitle>
 
 
 
<subtitle id="0:33:59"> won't do it in spite</subtitle>
 
 
 
<subtitle id="0:34:2">fact that it returned 30 plus trillion bucks</subtitle>
 
 
 
<subtitle id="0:34:5"> returning about a trillion dollars a year still</subtitle>
 
 
 
<subtitle id="0:34:8"> so this is a huge win but</subtitle>
 
 
 
<subtitle id="0:34:11"> in fact it is against what</subtitle>
 
 
 
<subtitle id="0:34:14"> most people think is good practice I</subtitle>
 
 
 
<subtitle id="0:34:17"> don't mean in computing only</subtitle>
 
 
 
<subtitle id="0:34:20"> I mean in management okay</subtitle>
 
 
 
<subtitle id="0:34:23">so we'll leave that because we don't want to talk about the past too much but</subtitle>
 
 
 
<subtitle id="0:34:26">I just most people do not realize it was only two dozen</subtitle>
 
 
 
<subtitle id="0:34:29"> people that is only four to five years</subtitle>
 
 
 
<subtitle id="0:34:32"> to do all this stuff and doing it all from scratch</subtitle>
 
 
 
<subtitle id="0:34:35"> okay</subtitle>
 
 
 
<subtitle id="0:34:38"> now let's take a look at a</subtitle>
 
 
 
<subtitle id="0:34:41"></subtitle>
 
 
 
<subtitle id="0:34:44">science project in the present same idea</subtitle>
 
 
 
<subtitle id="0:34:47">here so all of these ideas I've been talking about here</subtitle>
 
 
 
<subtitle id="0:34:50"> we're going to apply them to this big thing</subtitle>
 
 
 
<subtitle id="0:34:53"> called personal computing and it's got all kinds of stuff</subtitle>
 
 
 
<subtitle id="0:34:56"> in it so</subtitle>
 
 
 
<subtitle id="0:34:59"> again we're interested in this area that</subtitle>
 
 
 
<subtitle id="0:35:2"> goes from the end-user</subtitle>
 
 
 
<subtitle id="0:35:5"> all the way down to the metal so there's a lot of</subtitle>
 
 
 
<subtitle id="0:35:8"> stuff we want to know</subtitle>
 
 
 
<subtitle id="0:35:11"> how many t-shirts does it take right</subtitle>
 
 
 
<subtitle id="0:35:14"> so this is a completely different thing</subtitle>
 
 
 
<subtitle id="0:35:17"> here we are not interested we're doing</subtitle>
 
 
 
<subtitle id="0:35:20"> science here now we're going to have to do a little bit</subtitle>
 
 
 
<subtitle id="0:35:23"> of engineering because the only way we can validate this science is by</subtitle>
 
 
 
<subtitle id="0:35:26"> making it run but this is</subtitle>
 
 
 
<subtitle id="0:35:29"> a science project we want those t-shirts</subtitle>
 
 
 
<subtitle id="0:35:32"> so let's take a look</subtitle>
 
 
 
<subtitle id="0:35:35"> so let's say half of</subtitle>
 
 
 
<subtitle id="0:35:38"> what Microsoft or Moore has in there is just</subtitle>
 
 
 
<subtitle id="0:35:41"> code they can't get rid of but still most</subtitle>
 
 
 
<subtitle id="0:35:44"> of these you know Linux and</subtitle>
 
 
 
<subtitle id="0:35:47"> OpenOffice and stuff</subtitle>
 
 
 
<subtitle id="0:35:50"> it's like a hundred billion lines of code so it's a lot</subtitle>
 
 
 
<subtitle id="0:35:53"> of a lot of stuff of different</subtitle>
 
 
 
<subtitle id="0:35:56"> kinds and</subtitle>
 
 
 
<subtitle id="0:35:59"> so</subtitle>
 
 
 
<subtitle id="0:36:2"> now here here we have the</subtitle>
 
 
 
<subtitle id="0:36:5"> we're kind of behind the eight-ball of</subtitle>
 
 
 
<subtitle id="0:36:8"> having a brief talk so this part</subtitle>
 
 
 
<subtitle id="0:36:11"> to do this part in a</subtitle>
 
 
 
<subtitle id="0:36:14">reasonable way would take a couple of days so</subtitle>
 
 
 
<subtitle id="0:36:17"> I'm and I hate bullets so please do</subtitle>
 
 
 
<subtitle id="0:36:20"> not regard these as bullets just look they're ten blobs</subtitle>
 
 
 
<subtitle id="0:36:23"> out of twelve or thirteen blobs that</subtitle>
 
 
 
<subtitle id="0:36:26"> we used and what they</subtitle>
 
 
 
<subtitle id="0:36:29"> are are things a couple</subtitle>
 
 
 
<subtitle id="0:36:32"> of those we invented but most of them were things that have been around</subtitle>
 
 
 
<subtitle id="0:36:35"> for 50 years that didn't make it into</subtitle>
 
 
 
<subtitle id="0:36:38"> the particulars einer that</subtitle>
 
 
 
<subtitle id="0:36:41"> computing is see the difference here</subtitle>
 
 
 
<subtitle id="0:36:44"> is nature helps physicists be</subtitle>
 
 
 
<subtitle id="0:36:47"> honest because in the end you're</subtitle>
 
 
 
<subtitle id="0:36:50"> supposed to submit your theories back to nature but the problem is</subtitle>
 
 
 
<subtitle id="0:36:53"> we're a design field so our trade is bullshit</subtitle>
 
 
 
<subtitle id="0:36:56"> that's what design is and it's</subtitle>
 
 
 
<subtitle id="0:36:59"> good and there's bad and there's indifferent a lot</subtitle>
 
 
 
<subtitle id="0:37:2"> a lot of stuff in between and so</subtitle>
 
 
 
<subtitle id="0:37:5"> we can have a fad like</subtitle>
 
 
 
<subtitle id="0:37:8"> for instance semaphores semaphores</subtitle>
 
 
 
<subtitle id="0:37:11"> were known to be a bad idea when they were first invented by</subtitle>
 
 
 
<subtitle id="0:37:14"> Dykstra and whore but in fact</subtitle>
 
 
 
<subtitle id="0:37:17"> in that culture they took</subtitle>
 
 
 
<subtitle id="0:37:20"> on and for a variety of different reasons</subtitle>
 
 
 
<subtitle id="0:37:23">being taught today and they're still being used today why</subtitle>
 
 
 
<subtitle id="0:37:26"> are they a bad idea anybody know</subtitle>
 
 
 
<subtitle id="0:37:29"> what's wrong with a semaphores</subtitle>
 
 
 
<subtitle id="0:37:32"> gets a</subtitle>
 
 
 
<subtitle id="0:37:35"> system lock up and there</subtitle>
 
 
 
<subtitle id="0:37:38"> is no way to do something</subtitle>
 
 
 
<subtitle id="0:37:41">time that will tell you you won't get system melaka so</subtitle>
 
 
 
<subtitle id="0:37:44"> this is like the world's worst idea to</subtitle>
 
 
 
<subtitle id="0:37:47"> let the cpu control the time base</subtitle>
 
 
 
<subtitle id="0:37:50"> of your computations you're screwed</subtitle>
 
 
 
<subtitle id="0:37:53"> may take a while may</subtitle>
 
 
 
<subtitle id="0:37:56"> happen quickly but it's just basically</subtitle>
 
 
 
<subtitle id="0:37:59"> a bad idea and there was already a good idea also thought</subtitle>
 
 
 
<subtitle id="0:38:2"> up by John McCarthy in the early 60s</subtitle>
 
 
 
<subtitle id="0:38:5"> that actually works and works much</subtitle>
 
 
 
<subtitle id="0:38:8">it's just not generally used and it won't be used for</subtitle>
 
 
 
<subtitle id="0:38:11"> a while because these things take decades</subtitle>
 
 
 
<subtitle id="0:38:14"> to get rid of things that are you</subtitle>
 
 
 
<subtitle id="0:38:17"> know de facto religions so I'm</subtitle>
 
 
 
<subtitle id="0:38:20"> just going to pick on a couple of these I already talked about math wins</subtitle>
 
 
 
<subtitle id="0:38:23"> and I want to talk about this</subtitle>
 
 
 
<subtitle id="0:38:26"> now in this area</subtitle>
 
 
 
<subtitle id="0:38:29"> up</subtitle>
 
 
 
<subtitle id="0:38:32"> around in here because we have to</subtitle>
 
 
 
<subtitle id="0:38:35"> one of the things we have to do in personal computing</subtitle>
 
 
 
<subtitle id="0:38:38"> today is make anti-alias two and a half d computer</subtitle>
 
 
 
<subtitle id="0:38:41"> graphics and we have to make it look really</subtitle>
 
 
 
<subtitle id="0:38:44"> good and if we didn't have it look really</subtitle>
 
 
 
<subtitle id="0:38:47"> good then we will be sloughing</subtitle>
 
 
 
<subtitle id="0:38:50"> off part of making something</subtitle>
 
 
 
<subtitle id="0:38:53"> that is like computer graphics that</subtitle>
 
 
 
<subtitle id="0:38:56"> we can recognize today so</subtitle>
 
 
 
<subtitle id="0:38:59"> of course whenever you have a hard problem you</subtitle>
 
 
 
<subtitle id="0:39:2"> get a graduate student to do it because</subtitle>
 
 
 
<subtitle id="0:39:5"> they are just so much smarter than we are</subtitle>
 
 
 
<subtitle id="0:39:8"></subtitle>
 
 
 
<subtitle id="0:39:11"></subtitle>
 
 
 
<subtitle id="0:39:14"></subtitle>
 
 
 
<subtitle id="0:39:17"></subtitle>
 
 
 
<subtitle id="0:39:20"></subtitle>
 
 
 
<subtitle id="0:39:23">a mom of course we all do but his mom happens to be a high</subtitle>
 
 
 
<subtitle id="0:39:26"> school geometry teacher of that special kind that</subtitle>
 
 
 
<subtitle id="0:39:29"> actually understands math and so</subtitle>
 
 
 
<subtitle id="0:39:32"> they</subtitle>
 
 
 
<subtitle id="0:39:35"> do exist and so he went home Thanksgiving</subtitle>
 
 
 
<subtitle id="0:39:38"> three four years ago and his</subtitle>
 
 
 
<subtitle id="0:39:41">well son what are you doing at viewpoints and he</subtitle>
 
 
 
<subtitle id="0:39:44"> said well I'm I need to reduce</subtitle>
 
 
 
<subtitle id="0:39:47"> the amount of code to do computer graphics on</subtitle>
 
 
 
<subtitle id="0:39:50"> a personal computer by a factor of a thousand and</subtitle>
 
 
 
<subtitle id="0:39:53"> she said oh that</subtitle>
 
 
 
<subtitle id="0:39:56"> sounds interesting what are you</subtitle>
 
 
 
<subtitle id="0:39:59"> going to do and in fact her expertise was in</subtitle>
 
 
 
<subtitle id="0:40:2"> projective geometry so Dan</subtitle>
 
 
 
<subtitle id="0:40:5"> did not come back from Thanksgiving he stayed</subtitle>
 
 
 
<subtitle id="0:40:8"> working with his mom he and his</subtitle>
 
 
 
<subtitle id="0:40:11"> mom worked together on this thing through Janney finally</subtitle>
 
 
 
<subtitle id="0:40:14"> showed up in January with this formula</subtitle>
 
 
 
<subtitle id="0:40:17"> and so this is one of these serendipitous</subtitle>
 
 
 
<subtitle id="0:40:20"> things that you can't completely</subtitle>
 
 
 
<subtitle id="0:40:23"> supply by method but because this stuff has been kicked</subtitle>
 
 
 
<subtitle id="0:40:26"> around by the best people in the world for</subtitle>
 
 
 
<subtitle id="0:40:29"> forty five years but in fact they found a new way of thinking</subtitle>
 
 
 
<subtitle id="0:40:32"> about the involvement of an arbitrary polygon</subtitle>
 
 
 
<subtitle id="0:40:35"> with a pixel that computes</subtitle>
 
 
 
<subtitle id="0:40:38"> exactly the right shade of the pixel</subtitle>
 
 
 
<subtitle id="0:40:41"> to give you perfect anti-aliasing and it's</subtitle>
 
 
 
<subtitle id="0:40:44"> only that big and the next thing Dan</subtitle>
 
 
 
<subtitle id="0:40:47"> did was to make a math</subtitle>
 
 
 
<subtitle id="0:40:50"> a language out</subtitle>
 
 
 
<subtitle id="0:40:53"> of the mathematics that looked like the mathematics but</subtitle>
 
 
 
<subtitle id="0:40:56"> could run on a computer and when you tell this</subtitle>
 
 
 
<subtitle id="0:40:59"> these 45 lines of code to do it</subtitle>
 
 
 
<subtitle id="0:41:2"> they can do things like this they can render anti-alias text</subtitle>
 
 
 
<subtitle id="0:41:5"> and anti-aliased</subtitle>
 
 
 
<subtitle id="0:41:8"> graphic objects so that was a great</subtitle>
 
 
 
<subtitle id="0:41:11"> start and this</subtitle>
 
 
 
<subtitle id="0:41:14"> language that he devised he decided to</subtitle>
 
 
 
<subtitle id="0:41:17"> make it a dataflow language with kind of</subtitle>
 
 
 
<subtitle id="0:41:20"> functional engines at the nodes and</subtitle>
 
 
 
<subtitle id="0:41:23"> because of that it is highly amenable to automatic</subtitle>
 
 
 
<subtitle id="0:41:26"> use of parallel resources</subtitle>
 
 
 
<subtitle id="0:41:29"> so here's</subtitle>
 
 
 
<subtitle id="0:41:32"> one of our benchmarks so this is 5000</subtitle>
 
 
 
<subtitle id="0:41:35"> anti-aliased</subtitle>
 
 
 
<subtitle id="0:41:38"> translucent characters</subtitle>
 
 
 
<subtitle id="0:41:41"> being re rendered every time</subtitle>
 
 
 
<subtitle id="0:41:44"> by this these 45</subtitle>
 
 
 
<subtitle id="0:41:47"> lines of code so there's no caching or anything</subtitle>
 
 
 
<subtitle id="0:41:50">here and we can take a look at the CPU usage</subtitle>
 
 
 
<subtitle id="0:41:53"></subtitle>
 
 
 
<subtitle id="0:41:56"> and we can see that it's basically using so</subtitle>
 
 
 
<subtitle id="0:41:59"> this is a fork or Mac but</subtitle>
 
 
 
<subtitle id="0:42:2"> the the cores can handle two highly</subtitle>
 
 
 
<subtitle id="0:42:5"> interleaved threads at once so</subtitle>
 
 
 
<subtitle id="0:42:8">seeing that one of those is being devoted to this task and</subtitle>
 
 
 
<subtitle id="0:42:11"> the fan has come on and</subtitle>
 
 
 
<subtitle id="0:42:14"> as I say go faster it says</subtitle>
 
 
 
<subtitle id="0:42:17"> okay give me another thread there it is</subtitle>
 
 
 
<subtitle id="0:42:20"></subtitle>
 
 
 
<subtitle id="0:42:23"></subtitle>
 
 
 
<subtitle id="0:42:26"></subtitle>
 
 
 
<subtitle id="0:42:29"></subtitle>
 
 
 
<subtitle id="0:42:32"></subtitle>
 
 
 
<subtitle id="0:42:35">go faster and faster it starts interleaving them I can start zooming in</subtitle>
 
 
 
<subtitle id="0:42:38">here so you can sort of see what's going on a little better you</subtitle>
 
 
 
<subtitle id="0:42:41"></subtitle>
 
 
 
<subtitle id="0:42:44"></subtitle>
 
 
 
<subtitle id="0:42:47"> got enough monkeys</subtitle>
 
 
 
<subtitle id="0:42:50"> yeah so</subtitle>
 
 
 
<subtitle id="0:42:53"> so we're actually quite surprised that</subtitle>
 
 
 
<subtitle id="0:42:56"> this is a lot of computing</subtitle>
 
 
 
<subtitle id="0:42:59"> but</subtitle>
 
 
 
<subtitle id="0:43:2"> we're getting a lot of a lot out of it so</subtitle>
 
 
 
<subtitle id="0:43:5"> I thought was wow we</subtitle>
 
 
 
<subtitle id="0:43:8">should be able to make a whole system just out of this math</subtitle>
 
 
 
<subtitle id="0:43:11"> and so this is in fact</subtitle>
 
 
 
<subtitle id="0:43:14"> what I'm using so I'm not using PowerPoint here it's</subtitle>
 
 
 
<subtitle id="0:43:17"> probably obvious by now but here is this</subtitle>
 
 
 
<subtitle id="0:43:20"> system that</subtitle>
 
 
 
<subtitle id="0:43:23"> is this replacement</subtitle>
 
 
 
<subtitle id="0:43:26"> for personal computing and</subtitle>
 
 
 
<subtitle id="0:43:29"> now here's my next slide and</subtitle>
 
 
 
<subtitle id="0:43:32"></subtitle>
 
 
 
<subtitle id="0:43:35"></subtitle>
 
 
 
<subtitle id="0:43:38">here's Dan's brother and here's all the compositing rules and</subtitle>
 
 
 
<subtitle id="0:43:41"> so for instance here's</subtitle>
 
 
 
<subtitle id="0:43:44"> this one is invert</subtitle>
 
 
 
<subtitle id="0:43:47"> here's another</subtitle>
 
 
 
<subtitle id="0:43:50"> combination rule here so</subtitle>
 
 
 
<subtitle id="0:43:53">it's 95 lines to do all of the compositing rules that</subtitle>
 
 
 
<subtitle id="0:43:56"> you use so now that you've now</subtitle>
 
 
 
<subtitle id="0:43:59"> that you've seen and of course there</subtitle>
 
 
 
<subtitle id="0:44:2"> are those</subtitle>
 
 
 
<subtitle id="0:44:5"> 45 lines there's gradients so</subtitle>
 
 
 
<subtitle id="0:44:8"> I should actually now this user interface</subtitle>
 
 
 
<subtitle id="0:44:11"> here is made out of the system also because</subtitle>
 
 
 
<subtitle id="0:44:14"> it's all one sort of one big desktop publishing document</subtitle>
 
 
 
<subtitle id="0:44:17"> and I'm going to the system is also live</subtitle>
 
 
 
<subtitle id="0:44:20"> so this has not been compiled away into</subtitle>
 
 
 
<subtitle id="0:44:23"> C code down there so I'm actually going</subtitle>
 
 
 
<subtitle id="0:44:26"> to pick an object here like this</subtitle>
 
 
 
<subtitle id="0:44:29"></subtitle>
 
 
 
<subtitle id="0:44:32"> this menu</subtitle>
 
 
 
<subtitle id="0:44:35"> here and I'm going to say</subtitle>
 
 
 
<subtitle id="0:44:38"> okay let's change the gradient fill on this</subtitle>
 
 
 
<subtitle id="0:44:41"> and</subtitle>
 
 
 
<subtitle id="0:44:44"></subtitle>
 
 
 
<subtitle id="0:44:53">yeah something like that maybe or maybe we</subtitle>
 
 
 
<subtitle id="0:44:56"> don't want as hard an edge so we'll zoom</subtitle>
 
 
 
<subtitle id="0:44:59"> this out okay get the idea so the whole system</subtitle>
 
 
 
<subtitle id="0:45:2"> is live it's using its own stuff</subtitle>
 
 
 
<subtitle id="0:45:5"> here and</subtitle>
 
 
 
<subtitle id="0:45:8"> we keep on chugging along we</subtitle>
 
 
 
<subtitle id="0:45:11"> can see here's pen stroking</subtitle>
 
 
 
<subtitle id="0:45:14"> filtering and so all of</subtitle>
 
 
 
<subtitle id="0:45:17"> the graphics for personal computing in this little science exercise</subtitle>
 
 
 
<subtitle id="0:45:20"> came out to be four hundred and fifty seven lines of code</subtitle>
 
 
 
<subtitle id="0:45:23"> how do we know is 457 because you can count</subtitle>
 
 
 
<subtitle id="0:45:26"> 457 things</subtitle>
 
 
 
<subtitle id="0:45:29"> it's hard to count 400 thousands or</subtitle>
 
 
 
<subtitle id="0:45:32"> 440 million or so on so this</subtitle>
 
 
 
<subtitle id="0:45:35"> is about a thousand times smaller than the way it is</subtitle>
 
 
 
<subtitle id="0:45:38"> done say in Firefox right</subtitle>
 
 
 
<subtitle id="0:45:41"> so a thousand should get your attention right you</subtitle>
 
 
 
<subtitle id="0:45:44"> have to learn a new language on the other hand here</subtitle>
 
 
 
<subtitle id="0:45:47"> it is the whole thing is just a</subtitle>
 
 
 
<subtitle id="0:45:50"> few pages of code and it's live and you you</subtitle>
 
 
 
<subtitle id="0:45:53"> can run and use it okay</subtitle>
 
 
 
<subtitle id="0:45:56"> so now</subtitle>
 
 
 
<subtitle id="0:45:59"> of course where did this language</subtitle>
 
 
 
<subtitle id="0:46:2"> come from I have to build that and so</subtitle>
 
 
 
<subtitle id="0:46:5">there's actually quite a distance between one of these compositing</subtitle>
 
 
 
<subtitle id="0:46:8"> rules a one-liner of code and getting</subtitle>
 
 
 
<subtitle id="0:46:11"> the result at the other end and so I might need</subtitle>
 
 
 
<subtitle id="0:46:14">remove the hood and show you what's there and this looks a little more daunting</subtitle>
 
 
 
<subtitle id="0:46:17"> because I have to</subtitle>
 
 
 
<subtitle id="0:46:20"> translate this language into a standard</subtitle>
 
 
 
<subtitle id="0:46:23"> form I have to</subtitle>
 
 
 
<subtitle id="0:46:26"> translate this into another language that is sort of like see</subtitle>
 
 
 
<subtitle id="0:46:29"> I have to translate to</subtitle>
 
 
 
<subtitle id="0:46:32"> something that eventually will run on the 86 architecture</subtitle>
 
 
 
<subtitle id="0:46:35"> that's on this machine that looks</subtitle>
 
 
 
<subtitle id="0:46:38"> like a lot of work and of course I run the system</subtitle>
 
 
 
<subtitle id="0:46:41"> runs on multiple processors so I have to do that and</subtitle>
 
 
 
<subtitle id="0:46:44"> so one way of thinking about it is gee looks</subtitle>
 
 
 
<subtitle id="0:46:47"> like there's a lot of work in these square boxes here</subtitle>
 
 
 
<subtitle id="0:46:50"> and all so we need another special</subtitle>
 
 
 
<subtitle id="0:46:53"> language so we've just showed</subtitle>
 
 
 
<subtitle id="0:46:56"> you a domain-specific language</subtitle>
 
 
 
<subtitle id="0:46:59"> in the old days you are called problem</subtitle>
 
 
 
<subtitle id="0:47:2"> oriented languages I like old terminology because I'm old</subtitle>
 
 
 
<subtitle id="0:47:5"> and so we need another problem oriented</subtitle>
 
 
 
<subtitle id="0:47:8"> line language here whose problem domain</subtitle>
 
 
 
<subtitle id="0:47:11"> is transforming languages and of course there are tools</subtitle>
 
 
 
<subtitle id="0:47:14"> around for doing this but this is one of the</subtitle>
 
 
 
<subtitle id="0:47:17"> big stoppers for people doing this themselves is</subtitle>
 
 
 
<subtitle id="0:47:20"> making a language the way it is</subtitle>
 
 
 
<subtitle id="0:47:23"> a daunting procedures usually taught through</subtitle>
 
 
 
<subtitle id="0:47:26"> some set of tools like yak this is not the way</subtitle>
 
 
 
<subtitle id="0:47:29"> to do it but the poor student comes</subtitle>
 
 
 
<subtitle id="0:47:32"> out either not understanding it all or convinced that it's</subtitle>
 
 
 
<subtitle id="0:47:35"> too hard but in fact you</subtitle>
 
 
 
<subtitle id="0:47:38"> can make a much better language so here's</subtitle>
 
 
 
<subtitle id="0:47:41"> one we did called Omata and here's a simple</subtitle>
 
 
 
<subtitle id="0:47:44"> arithmetic expression and here's</subtitle>
 
 
 
<subtitle id="0:47:47"> the program and if I say do it it</subtitle>
 
 
 
<subtitle id="0:47:50"> transforms that expression into a tree</subtitle>
 
 
 
<subtitle id="0:47:53"> and if I come down here</subtitle>
 
 
 
<subtitle id="0:47:56"> and</subtitle>
 
 
 
<subtitle id="0:47:59"> pick this more</subtitle>
 
 
 
<subtitle id="0:48:2"> complicated expression up and paste it in</subtitle>
 
 
 
<subtitle id="0:48:5"> here and say do it I</subtitle>
 
 
 
<subtitle id="0:48:8"> get that and so that this</subtitle>
 
 
 
<subtitle id="0:48:11"> translation system isn't just for translating</subtitle>
 
 
 
<subtitle id="0:48:14"> things that have strings it translates any kind</subtitle>
 
 
 
<subtitle id="0:48:17"> of objects into any other kind of objects so you want to</subtitle>
 
 
 
<subtitle id="0:48:20">do it in that generality because you're going to use this everywhere</subtitle>
 
 
 
<subtitle id="0:48:23"> and so</subtitle>
 
 
 
<subtitle id="0:48:26"> this graphical language winds up being 130</subtitle>
 
 
 
<subtitle id="0:48:29"> lines of code to make the trees and another 700</subtitle>
 
 
 
<subtitle id="0:48:32"> lines of code to make the</subtitle>
 
 
 
<subtitle id="0:48:35">lower-level stuff that is actually run on the machine so</subtitle>
 
 
 
<subtitle id="0:48:38"> you could say a thousand lines of code 900 lines of</subtitle>
 
 
 
<subtitle id="0:48:41"> code to make that graphical language</subtitle>
 
 
 
<subtitle id="0:48:44"> but this</subtitle>
 
 
 
<subtitle id="0:48:47"> like a shaggy dog story right because well now I</subtitle>
 
 
 
<subtitle id="0:48:50"> have to make the language transforming language and but</subtitle>
 
 
 
<subtitle id="0:48:53"> of course it can make itself and</subtitle>
 
 
 
<subtitle id="0:48:56"> Alex Wirth did it particularly nicely so it can make</subtitle>
 
 
 
<subtitle id="0:48:59"> itself in 100 lines of code and</subtitle>
 
 
 
<subtitle id="0:49:2"> as you get closer and closer down</subtitle>
 
 
 
<subtitle id="0:49:5"> to the bottom of the system you start using these base</subtitle>
 
 
 
<subtitle id="0:49:8"> things over and over again and the</subtitle>
 
 
 
<subtitle id="0:49:11">problem oriented language is stay on the top</subtitle>
 
 
 
<subtitle id="0:49:14"> okay but we have to do</subtitle>
 
 
 
<subtitle id="0:49:17"> the internet so tcp/ip</subtitle>
 
 
 
<subtitle id="0:49:20"> 20,000 lines of</subtitle>
 
 
 
<subtitle id="0:49:23"> c-4 that so one book one of</subtitle>
 
 
 
<subtitle id="0:49:26"> those books this happened the C code and most</subtitle>
 
 
 
<subtitle id="0:49:29"> computers is a good nice job and</subtitle>
 
 
 
<subtitle id="0:49:32"> tcp/ip was invented by experts and</subtitle>
 
 
 
<subtitle id="0:49:35"> so we didn't expect to get a</subtitle>
 
 
 
<subtitle id="0:49:38"> factor of thousand on this in</subtitle>
 
 
 
<subtitle id="0:49:41"> pia Marta only got a little more</subtitle>
 
 
 
<subtitle id="0:49:44"> than a factor of a hundred so</subtitle>
 
 
 
<subtitle id="0:49:47"> tcp/ip is about 160 lines of code</subtitle>
 
 
 
<subtitle id="0:49:50"> using these techniques and if you're interested I can</subtitle>
 
 
 
<subtitle id="0:49:53"> exceed this is particularly elegant the way he did it I'll</subtitle>
 
 
 
<subtitle id="0:49:56"> explain it later for people who are interested so</subtitle>
 
 
 
<subtitle id="0:49:59"> this is represents taking</subtitle>
 
 
 
<subtitle id="0:50:2"> something it was done by very good people but in the wrong language</subtitle>
 
 
 
<subtitle id="0:50:5"> and done essentially the in a way that</subtitle>
 
 
 
<subtitle id="0:50:8"> generated unnecessary code the</subtitle>
 
 
 
<subtitle id="0:50:11"> big key here was not so much the language</subtitle>
 
 
 
<subtitle id="0:50:14"> as the method</subtitle>
 
 
 
<subtitle id="0:50:17"> the method came first and then we did the language</subtitle>
 
 
 
<subtitle id="0:50:20"> too to do it and so the whole thing collapses down</subtitle>
 
 
 
<subtitle id="0:50:23"> okay</subtitle>
 
 
 
<subtitle id="0:50:26"> let's take another one of these metaphors particles</subtitle>
 
 
 
<subtitle id="0:50:29"> and fields everybody understands this as a kind</subtitle>
 
 
 
<subtitle id="0:50:32"> of a metaphor for iron filings</subtitle>
 
 
 
<subtitle id="0:50:35"> in a magnetic field the iron filings seem</subtitle>
 
 
 
<subtitle id="0:50:38"> to know what to do they're feeling this field</subtitle>
 
 
 
<subtitle id="0:50:41"> and they're doing individual things that look like they're somewhat</subtitle>
 
 
 
<subtitle id="0:50:44"> coordinated and in fact there</subtitle>
 
 
 
<subtitle id="0:50:47"> are animals that do this also like ants</subtitle>
 
 
 
<subtitle id="0:50:50"> so here's a little ant simulation</subtitle>
 
 
 
<subtitle id="0:50:53"> this is their nest these guys are</subtitle>
 
 
 
<subtitle id="0:50:56"> their food and if we start this thing going</subtitle>
 
 
 
<subtitle id="0:50:59"> then we see that the</subtitle>
 
 
 
<subtitle id="0:51:2"> ants are finding the food going to</subtitle>
 
 
 
<subtitle id="0:51:5"> the nest and they're leaving this pheromone trail so this is using</subtitle>
 
 
 
<subtitle id="0:51:8"> about eleven thousand parallel</subtitle>
 
 
 
<subtitle id="0:51:11"> processes because each little cell is</subtitle>
 
 
 
<subtitle id="0:51:14"> being used to diffuse the perfume</subtitle>
 
 
 
<subtitle id="0:51:17"> the ants lay down you see right now all</subtitle>
 
 
 
<subtitle id="0:51:20"> of the ants have been captured by the field</subtitle>
 
 
 
<subtitle id="0:51:23">they're not communicating directly with each other they're communicating</subtitle>
 
 
 
<subtitle id="0:51:26"> in directly with each other and we would call this</subtitle>
 
 
 
<subtitle id="0:51:29"> loose coupling well</subtitle>
 
 
 
<subtitle id="0:51:32"> if you have crazy brains you</subtitle>
 
 
 
<subtitle id="0:51:35"> could imagine that a paragraph of text</subtitle>
 
 
 
<subtitle id="0:51:38"> is one of those things</subtitle>
 
 
 
<subtitle id="0:51:41"> who's who said you could do the encyclopedia</subtitle>
 
 
 
<subtitle id="0:51:44"> over here thank you</subtitle>
 
 
 
<subtitle id="0:51:47"></subtitle>
 
 
 
<subtitle id="0:51:50"></subtitle>
 
 
 
<subtitle id="0:51:53"></subtitle>
 
 
 
<subtitle id="0:51:56"></subtitle>
 
 
 
<subtitle id="0:51:59">simplest thing that you can get fifth graders to figure out is well when you have to do</subtitle>
 
 
 
<subtitle id="0:52:2"> something follow the guy who is in front of you and if there's nobody in front of you</subtitle>
 
 
 
<subtitle id="0:52:5"> go to the upper left-hand corner and if</subtitle>
 
 
 
<subtitle id="0:52:8"> you find yourself over the the right-hand margin tell</subtitle>
 
 
 
<subtitle id="0:52:11"> the guy in front of you and eventually somebody will know what</subtitle>
 
 
 
<subtitle id="0:52:14"> to do like go to the next line right so</subtitle>
 
 
 
<subtitle id="0:52:17"> let's just say go do this</subtitle>
 
 
 
<subtitle id="0:52:20"></subtitle>
 
 
 
<subtitle id="0:52:23"> so I just gave you like a three</subtitle>
 
 
 
<subtitle id="0:52:26"> line formatter</subtitle>
 
 
 
<subtitle id="0:52:29"> right so this is bath</subtitle>
 
 
 
<subtitle id="0:52:32"> I'm going to set it off again</subtitle>
 
 
 
<subtitle id="0:52:35"> and I'm going</subtitle>
 
 
 
<subtitle id="0:52:38"> to point out that I can edit this let's let it</subtitle>
 
 
 
<subtitle id="0:52:41"> so I can turn general here into</subtitle>
 
 
 
<subtitle id="0:52:44"> justify</subtitle>
 
 
 
<subtitle id="0:52:47"> and it's</subtitle>
 
 
 
<subtitle id="0:52:50"> just redoing this over and over again all</subtitle>
 
 
 
<subtitle id="0:52:53"> right so the editor is actually working</subtitle>
 
 
 
<subtitle id="0:52:56"></subtitle>
 
 
 
<subtitle id="0:52:59"></subtitle>
 
 
 
<subtitle id="0:53:2">faster is to say hey don't follow the leader here because this is just for the crowd</subtitle>
 
 
 
<subtitle id="0:53:5"> when it's time to</subtitle>
 
 
 
<subtitle id="0:53:8">wait until the guy in front of you gets to the right place</subtitle>
 
 
 
<subtitle id="0:53:11"> and then go right behind him so this</subtitle>
 
 
 
<subtitle id="0:53:14"> is called jump and here's what that looks like now</subtitle>
 
 
 
<subtitle id="0:53:17"> they're all standing still</subtitle>
 
 
 
<subtitle id="0:53:20"> okay</subtitle>
 
 
 
<subtitle id="0:53:23"></subtitle>
 
 
 
<subtitle id="0:53:29">and so if I start jump here and I just say now do this in between frame times</subtitle>
 
 
 
<subtitle id="0:53:32"></subtitle>
 
 
 
<subtitle id="0:53:35">bunk</subtitle>
 
 
 
<subtitle id="0:53:38"></subtitle>
 
 
 
<subtitle id="0:53:41">okay so</subtitle>
 
 
 
<subtitle id="0:53:44"> all of the editing here is done like this and</subtitle>
 
 
 
<subtitle id="0:53:47"> in fact this is another</subtitle>
 
 
 
<subtitle id="0:53:50">one of the documents in this Universal document system</subtitle>
 
 
 
<subtitle id="0:53:53"> remember we have to do Microsoft Office here but</subtitle>
 
 
 
<subtitle id="0:53:56"> why would anybody in the right mind give you</subtitle>
 
 
 
<subtitle id="0:53:59"> seven applications that all do almost the same thing</subtitle>
 
 
 
<subtitle id="0:54:2"> but not quite</subtitle>
 
 
 
<subtitle id="0:54:5"> well the answer is</subtitle>
 
 
 
<subtitle id="0:54:8"> simple because amazingly people will put</subtitle>
 
 
 
<subtitle id="0:54:11">up with this silliness enough to buy it from them and thus</subtitle>
 
 
 
<subtitle id="0:54:14"> encourage them further</subtitle>
 
 
 
<subtitle id="0:54:17"> this is nonsense</subtitle>
 
 
 
<subtitle id="0:54:20"> really</subtitle>
 
 
 
<subtitle id="0:54:23"> what you want is a universal document in just different</subtitle>
 
 
 
<subtitle id="0:54:26"> ways really don't</subtitle>
 
 
 
<subtitle id="0:54:29">a different system for the World Wide Web do</subtitle>
 
 
 
<subtitle id="0:54:32"> you know because it's just a different way of accessing</subtitle>
 
 
 
<subtitle id="0:54:35"> these multimedia Docs so</subtitle>
 
 
 
<subtitle id="0:54:38"> this is a this is actually how we write code so</subtitle>
 
 
 
<subtitle id="0:54:41"> this is an explanation to somebody</subtitle>
 
 
 
<subtitle id="0:54:44"> like you to</subtitle>
 
 
 
<subtitle id="0:54:47"> show in a</subtitle>
 
 
 
<subtitle id="0:54:50"> little essay how the how the code actually how</subtitle>
 
 
 
<subtitle id="0:54:53"> the code actually works so</subtitle>
 
 
 
<subtitle id="0:54:56"> we start off here and</subtitle>
 
 
 
<subtitle id="0:54:59">thing we want to do is just get these guys</subtitle>
 
 
 
<subtitle id="0:55:2"> out there randomly</subtitle>
 
 
 
<subtitle id="0:55:5"> so these two lines of these two little boxes of</subtitle>
 
 
 
<subtitle id="0:55:8"> code do this and here's</subtitle>
 
 
 
<subtitle id="0:55:11"> one that just does this without the worrying</subtitle>
 
 
 
<subtitle id="0:55:14"> about the next line</subtitle>
 
 
 
<subtitle id="0:55:17"> and here</subtitle>
 
 
 
<subtitle id="0:55:20"> are some special cases</subtitle>
 
 
 
<subtitle id="0:55:23"> so</subtitle>
 
 
 
<subtitle id="0:55:26"> this is a reminiscent of the way Knuth sometimes</subtitle>
 
 
 
<subtitle id="0:55:29"> likes to program so</subtitle>
 
 
 
<subtitle id="0:55:32"> you actually learn the thing while you're while</subtitle>
 
 
 
<subtitle id="0:55:35"> you're looking at it you can do little experiments and</subtitle>
 
 
 
<subtitle id="0:55:38"> by the time you've done that bingo</subtitle>
 
 
 
<subtitle id="0:55:41"> you've got the thing</subtitle>
 
 
 
<subtitle id="0:55:44"> and so here the this</subtitle>
 
 
 
<subtitle id="0:55:47"> is a yet another problem oriented language but with</subtitle>
 
 
 
<subtitle id="0:55:50"> rules this time so rule base</subtitle>
 
 
 
<subtitle id="0:55:53"> so two seven rules for doing the layout</subtitle>
 
 
 
<subtitle id="0:55:56"> and</subtitle>
 
 
 
<subtitle id="0:55:59"> the whole editor</subtitle>
 
 
 
<subtitle id="0:56:2"> like microsoft word paragraphs</subtitle>
 
 
 
<subtitle id="0:56:5"> is 35 rules</subtitle>
 
 
 
<subtitle id="0:56:8"> okay so that's all you have</subtitle>
 
 
 
<subtitle id="0:56:11"> to do for that</subtitle>
 
 
 
<subtitle id="0:56:14"></subtitle>
 
 
 
<subtitle id="0:56:17">'s very useful to have is problem-solvers</subtitle>
 
 
 
<subtitle id="0:56:20"> but the problem with problem solvers and</subtitle>
 
 
 
<subtitle id="0:56:23"> these these problem oriented languages they're problem solvers they</subtitle>
 
 
 
<subtitle id="0:56:26"> aren't integrated so you</subtitle>
 
 
 
<subtitle id="0:56:29">wind up with a hodgepodge of different things</subtitle>
 
 
 
<subtitle id="0:56:32"> serving different things and you want to be able to integrate them so</subtitle>
 
 
 
<subtitle id="0:56:35"> so here are we can have a simplex solver</subtitle>
 
 
 
<subtitle id="0:56:38">differential equations propagation dynamic programming</subtitle>
 
 
 
<subtitle id="0:56:41"> relaxing the rules for</subtitle>
 
 
 
<subtitle id="0:56:44"> the paragraph these all have different problem domains</subtitle>
 
 
 
<subtitle id="0:56:47"> and what we want to do is to approach</subtitle>
 
 
 
<subtitle id="0:56:50">strategically as I've been talking about here through</subtitle>
 
 
 
<subtitle id="0:56:53"> general relational languages that</subtitle>
 
 
 
<subtitle id="0:56:56"> talk to a kind of a little</subtitle>
 
 
 
<subtitle id="0:56:59"> operating system for solvers and often</subtitle>
 
 
 
<subtitle id="0:57:2"> with the help of an expert system that helps make</subtitle>
 
 
 
<subtitle id="0:57:5"> a strategy for using these things the</subtitle>
 
 
 
<subtitle id="0:57:8"> further stuff here is beyond the scope of this</subtitle>
 
 
 
<subtitle id="0:57:11"> short talk so I'll just move on here</subtitle>
 
 
 
<subtitle id="0:57:14"> okay</subtitle>
 
 
 
<subtitle id="0:57:17"> here's an important idea too</subtitle>
 
 
 
<subtitle id="0:57:20"> many ideas in this talk right but</subtitle>
 
 
 
<subtitle id="0:57:23"> here's something that happened in</subtitle>
 
 
 
<subtitle id="0:57:27"> the 60s except nobody noticed it except maybe</subtitle>
 
 
 
<subtitle id="0:57:29"> the ARPA researchers and the outgrowth</subtitle>
 
 
 
<subtitle id="0:57:32"> of that to Xerox PARC and that is that</subtitle>
 
 
 
<subtitle id="0:57:35"> the entire paradigm of computing because</subtitle>
 
 
 
<subtitle id="0:57:38"> of Moore's law was going to be able to shift</subtitle>
 
 
 
<subtitle id="0:57:41"> from a gear like way of doing things</subtitle>
 
 
 
<subtitle id="0:57:44"> basically tight coupling a</subtitle>
 
 
 
<subtitle id="0:57:47"> brittle code to something</subtitle>
 
 
 
<subtitle id="0:57:50"> more like ecology something more biological and</subtitle>
 
 
 
<subtitle id="0:57:53"> we use these ideas very strongly in</subtitle>
 
 
 
<subtitle id="0:57:56"> the invention of the internet and in the invention</subtitle>
 
 
 
<subtitle id="0:57:59">object-oriented techniques that we used for software at</subtitle>
 
 
 
<subtitle id="0:58:2"> Xerox PARC and the deal here is</subtitle>
 
 
 
<subtitle id="0:58:5"> you can fix a clock but you can only make clocks of a</subtitle>
 
 
 
<subtitle id="0:58:8"> certain size maybe a thousand gears B for the</subtitle>
 
 
 
<subtitle id="0:58:11"> dis class this is what happens in today's programming</subtitle>
 
 
 
<subtitle id="0:58:14"> you have to negotiate with the system and</subtitle>
 
 
 
<subtitle id="0:58:17"> a lot of what growing the old world into this new world</subtitle>
 
 
 
<subtitle id="0:58:20"> is learning what it means to do this kind of negotiation as</subtitle>
 
 
 
<subtitle id="0:58:23"> you add more system elements so</subtitle>
 
 
 
<subtitle id="0:58:26"> the</subtitle>
 
 
 
<subtitle id="0:58:29">is just a couple of minutes of gloss because</subtitle>
 
 
 
<subtitle id="0:58:32"> I'm getting close to the end here but I wanted</subtitle>
 
 
 
<subtitle id="0:58:35"> to say something about systems and</subtitle>
 
 
 
<subtitle id="0:58:38"> three of the ideas here are that</subtitle>
 
 
 
<subtitle id="0:58:41"> we want to control time I mentioned this a little</subtitle>
 
 
 
<subtitle id="0:58:44"> bit before we do not want to CPU to control time first we</subtitle>
 
 
 
<subtitle id="0:58:47">control time and we'll do it by simulating</subtitle>
 
 
 
<subtitle id="0:58:50"> our own time we don't want to have</subtitle>
 
 
 
<subtitle id="0:58:53"> any preferred center so we want to have something like the internet</subtitle>
 
 
 
<subtitle id="0:58:56"> all the way down and we want loose coupling</subtitle>
 
 
 
<subtitle id="0:58:59"> now of course this has all been done before again</subtitle>
 
 
 
<subtitle id="0:59:2"> with networks and</subtitle>
 
 
 
<subtitle id="0:59:5"> here's here now we're looking at physical computers on the</subtitle>
 
 
 
<subtitle id="0:59:8"> internet or Ethernet and ideally</subtitle>
 
 
 
<subtitle id="0:59:11"> we'd like our computations</subtitle>
 
 
 
<subtitle id="0:59:14"> to be software versions of</subtitle>
 
 
 
<subtitle id="0:59:17"> these hardware networks why</subtitle>
 
 
 
<subtitle id="0:59:20"> because</subtitle>
 
 
 
<subtitle id="0:59:23"> in most cases we will need to do load</subtitle>
 
 
 
<subtitle id="0:59:26">we'll be able to run all of these guys on a single</subtitle>
 
 
 
<subtitle id="0:59:29"> machine in which case we just have increased</subtitle>
 
 
 
<subtitle id="0:59:32"> integrity and ability to</subtitle>
 
 
 
<subtitle id="0:59:35"> design quickly but a lot of the time</subtitle>
 
 
 
<subtitle id="0:59:38"> especially now with mobile we want to have the same</subtitle>
 
 
 
<subtitle id="0:59:41"> computations able to drift around</subtitle>
 
 
 
<subtitle id="0:59:44"> the network to different kinds of devices</subtitle>
 
 
 
<subtitle id="0:59:47"> and in some cases not all of the computation</subtitle>
 
 
 
<subtitle id="0:59:50"> is going to want to be in the machine that is next</subtitle>
 
 
 
<subtitle id="0:59:53"> to the user interface so if you think of the user</subtitle>
 
 
 
<subtitle id="0:59:56"> interface here it's basically a set of views</subtitle>
 
 
 
<subtitle id="0:59:59"> of processes that are</subtitle>
 
 
 
<subtitle id="1:00:2"> giving it images to integrate</subtitle>
 
 
 
<subtitle id="1:00:5"> up on the surface so</subtitle>
 
 
 
<subtitle id="1:00:8">here's a great thing if you're interested Dave reads</subtitle>
 
 
 
<subtitle id="1:00:11"> 1978 PhD thesis at</subtitle>
 
 
 
<subtitle id="1:00:14"> MIT the design of</subtitle>
 
 
 
<subtitle id="1:00:17"> an operating system for the internet was</subtitle>
 
 
 
<subtitle id="1:00:20"> never never done but we validated it a</subtitle>
 
 
 
<subtitle id="1:00:23">viewpoints so this</subtitle>
 
 
 
<subtitle id="1:00:26"> is what if you want to make a system that is the size of the internet</subtitle>
 
 
 
<subtitle id="1:00:29">hat is a software system what is it that you have to</subtitle>
 
 
 
<subtitle id="1:00:32"> do to absolutely ensure that</subtitle>
 
 
 
<subtitle id="1:00:35"> your going to be that your you're going</subtitle>
 
 
 
<subtitle id="1:00:38"> to have what people like to call data integrity</subtitle>
 
 
 
<subtitle id="1:00:41"> always so that no matter where you</subtitle>
 
 
 
<subtitle id="1:00:44"> ask a question anywhere on the network about anything anywhere</subtitle>
 
 
 
<subtitle id="1:00:47"> on the network you will get the same answer for</subtitle>
 
 
 
<subtitle id="1:00:50"> the pseudo time referent</subtitle>
 
 
 
<subtitle id="1:00:53"> of that question and</subtitle>
 
 
 
<subtitle id="1:00:56"> a working version of a</subtitle>
 
 
 
<subtitle id="1:00:59"> migratory system was done by Jerry</subtitle>
 
 
 
<subtitle id="1:01:2"> Popek I put this up here because this</subtitle>
 
 
 
<subtitle id="1:01:5">written in the 80s you can still get it from MIT press</subtitle>
 
 
 
<subtitle id="1:01:8"> the locusts distributed system architecture you'll</subtitle>
 
 
 
<subtitle id="1:01:11"> find the entire book interesting just a</subtitle>
 
 
 
<subtitle id="1:01:14">little volume but the first two chapters are a classic</subtitle>
 
 
 
<subtitle id="1:01:17"> still of the issues you have to</subtitle>
 
 
 
<subtitle id="1:01:20"> think about and solve in order to do this but</subtitle>
 
 
 
<subtitle id="1:01:23"> again this has all been done this is almost 30 years</subtitle>
 
 
 
<subtitle id="1:01:26"> old now but nobody uses it</subtitle>
 
 
 
<subtitle id="1:01:29"> but if</subtitle>
 
 
 
<subtitle id="1:01:32"> you were to use it all applications are now just mashups</subtitle>
 
 
 
<subtitle id="1:01:35"> right we don't want applications as smoke stacks</subtitle>
 
 
 
<subtitle id="1:01:38"> because we want to integrate so we didn't have</subtitle>
 
 
 
<subtitle id="1:01:41">at Xerox PARC and we did not have operating systems</subtitle>
 
 
 
<subtitle id="1:01:44"> and the current web</subtitle>
 
 
 
<subtitle id="1:01:47">which is getting more and more complicated can immediately get</subtitle>
 
 
 
<subtitle id="1:01:50"> simple except for all the legacy stuff that</subtitle>
 
 
 
<subtitle id="1:01:53"> has been done so far so</subtitle>
 
 
 
<subtitle id="1:01:56"> here's something that viewpoints has</subtitle>
 
 
 
<subtitle id="1:01:59"> on its list but it's we</subtitle>
 
 
 
<subtitle id="1:02:2"> expect not to be able to solve this at least in</subtitle>
 
 
 
<subtitle id="1:02:5"> this path of doing things and it</subtitle>
 
 
 
<subtitle id="1:02:8"> may be beyond may require a much larger</subtitle>
 
 
 
<subtitle id="1:02:11"> effort than a small nonprofit</subtitle>
 
 
 
<subtitle id="1:02:14"> can do but if you think about analogies</subtitle>
 
 
 
<subtitle id="1:02:17"> to what's happening with the scaling that's</subtitle>
 
 
 
<subtitle id="1:02:20"> going on here it basically starts looking like</subtitle>
 
 
 
<subtitle id="1:02:23"> a biological ecology</subtitle>
 
 
 
<subtitle id="1:02:26"> and these have their own dynamics</subtitle>
 
 
 
<subtitle id="1:02:29"> and they need to be thought about in special ways</subtitle>
 
 
 
<subtitle id="1:02:32"> so the ability for us</subtitle>
 
 
 
<subtitle id="1:02:35"> to scale to what Moore's law</subtitle>
 
 
 
<subtitle id="1:02:38">allowing right now is going to require us to start thinking more and</subtitle>
 
 
 
<subtitle id="1:02:42">this and we did this to some extent when we did the internet</subtitle>
 
 
 
<subtitle id="1:02:44"> like I have a degree in molecular biology in my</subtitle>
 
 
 
<subtitle id="1:02:47"> misspent youth and so</subtitle>
 
 
 
<subtitle id="1:02:50"> a lot of the ways I think about this stuff is through</subtitle>
 
 
 
<subtitle id="1:02:53"> tissue biology and how</subtitle>
 
 
 
<subtitle id="1:02:56"> the hundred trillion cells in our body work</subtitle>
 
 
 
<subtitle id="1:02:59"> without having a dedicated Center and so forth</subtitle>
 
 
 
<subtitle id="1:03:2"> but in computing we have problems of</subtitle>
 
 
 
<subtitle id="1:03:5"> our our own that are special then the next step</subtitle>
 
 
 
<subtitle id="1:03:8">beyond this the best book I've ever seen about it is</subtitle>
 
 
 
<subtitle id="1:03:11"> Minsky society of Mind book which is actually</subtitle>
 
 
 
<subtitle id="1:03:14"> about a model for human psychology but in</subtitle>
 
 
 
<subtitle id="1:03:17"> fact it is a very good model for</subtitle>
 
 
 
<subtitle id="1:03:20"> what the Internet is going</subtitle>
 
 
 
<subtitle id="1:03:23"> to turn into okay</subtitle>
 
 
 
<subtitle id="1:03:26"> so the punchline here we've got three main operating systems</subtitle>
 
 
 
<subtitle id="1:03:29"> I won't say which one is the lemon and</subtitle>
 
 
 
<subtitle id="1:03:32"> down</subtitle>
 
 
 
<subtitle id="1:03:35"> on the bottom here our little</subtitle>
 
 
 
<subtitle id="1:03:38"> Frankenstein monster that we made is that I shall</subtitle>
 
 
 
<subtitle id="1:03:41"> been showing you today is less than 20,000 lines of code so</subtitle>
 
 
 
<subtitle id="1:03:44"> it's worth pondering we</subtitle>
 
 
 
<subtitle id="1:03:47"> are not using any of the Macintosh software</subtitle>
 
 
 
<subtitle id="1:03:50"> in order to do this demo</subtitle>
 
 
 
<subtitle id="1:03:53"> and</subtitle>
 
 
 
<subtitle id="1:03:56"> here's just to kick off I</subtitle>
 
 
 
<subtitle id="1:03:59"> think I'll just show this slide and then quit</subtitle>
 
 
 
<subtitle id="1:04:2"> I organized the talk so I can</subtitle>
 
 
 
<subtitle id="1:04:5"> stop now at any place and I need to in about a minute</subtitle>
 
 
 
<subtitle id="1:04:8"> but I'll just leave this one thought</subtitle>
 
 
 
<subtitle id="1:04:11"> with you maybe we can have a few questions and then</subtitle>
 
 
 
<subtitle id="1:04:14"> maybe more will happen I think there's</subtitle>
 
 
 
<subtitle id="1:04:17"> a smaller group question session</subtitle>
 
 
 
<subtitle id="1:04:20"> coming up later but</subtitle>
 
 
 
<subtitle id="1:04:23">let's think about this idea something appears and we've</subtitle>
 
 
 
<subtitle id="1:04:26"> got two things about it that are very different there's</subtitle>
 
 
 
<subtitle id="1:04:29"> news and new news is the stuff that</subtitle>
 
 
 
<subtitle id="1:04:32"> is incremental to the categories</subtitle>
 
 
 
<subtitle id="1:04:35"> that we already know almost every bit of news</subtitle>
 
 
 
<subtitle id="1:04:38"> is a specific parameter</subtitle>
 
 
 
<subtitle id="1:04:41"> into some category that we already understand</subtitle>
 
 
 
<subtitle id="1:04:44"> so it's this war that killing</subtitle>
 
 
 
<subtitle id="1:04:47"> this marriage</subtitle>
 
 
 
<subtitle id="1:04:50"> that hems is that</subtitle>
 
 
 
<subtitle id="1:04:53"> right and you can get a quite a bit</subtitle>
 
 
 
<subtitle id="1:04:56"> of this out in a few minutes</subtitle>
 
 
 
<subtitle id="1:04:59"> so there's almost no context to news that it's</subtitle>
 
 
 
<subtitle id="1:05:2"> not already inside of our own head</subtitle>
 
 
 
<subtitle id="1:05:5"> new on the other hand real new</subtitle>
 
 
 
<subtitle id="1:05:8"> not news</subtitle>
 
 
 
<subtitle id="1:05:11"> real new is invisible we don't</subtitle>
 
 
 
<subtitle id="1:05:14"> have a category McLuhan said until</subtitle>
 
 
 
<subtitle id="1:05:17"> I believe it I can't see it that</subtitle>
 
 
 
<subtitle id="1:05:20"> is the way it works in the human nervous system and</subtitle>
 
 
 
<subtitle id="1:05:23"> so news is something</subtitle>
 
 
 
<subtitle id="1:05:26"> that's been going on for the entire existence</subtitle>
 
 
 
<subtitle id="1:05:29"> of the human race about two hundred thousand years</subtitle>
 
 
 
<subtitle id="1:05:32">it's basically campfires and this is what we're doing right now this</subtitle>
 
 
 
<subtitle id="1:05:35"> is a campfire I'm doing the best I can do</subtitle>
 
 
 
<subtitle id="1:05:38"> in an hour of telling stories in a campfire</subtitle>
 
 
 
<subtitle id="1:05:41"> but the problem is new</subtitle>
 
 
 
<subtitle id="1:05:44"> can take two to five years</subtitle>
 
 
 
<subtitle id="1:05:47"> to get the new categories</subtitle>
 
 
 
<subtitle id="1:05:50">that you need in order to actually see it and one</subtitle>
 
 
 
<subtitle id="1:05:53"> of the unfortunate things that happens is that</subtitle>
 
 
 
<subtitle id="1:05:56"> new when you try to talk about it and people make</subtitle>
 
 
 
<subtitle id="1:05:59">on it they usually transform it</subtitle>
 
 
 
<subtitle id="1:06:2"> back into news so for instance</subtitle>
 
 
 
<subtitle id="1:06:5"> we did this as a way of boosting</subtitle>
 
  
<subtitle id="1:06:8"> mankind it was</subtitle>
+
<subtitle id="1:04:23">Let's think about this idea. Something appears and we've got two things about it. That are very different. There's news and new.</subtitle>
  
<subtitle id="1:06:11"> all about learning by doing but</subtitle>
+
<subtitle id="1:04:32"> News is the stuff that is incremental to the categories that we already know. Almost every bit of news is a specific parameter into some category that we already understand.</subtitle>
  
<subtitle id="1:06:14"> in fact almost everybody in the world uses it only as a</subtitle>
+
<subtitle id="1:04:44"> It's this war, that killing, this marriage, that hem size, right?</subtitle>
  
<subtitle id="1:06:17"> consumable device for their</subtitle>
+
<subtitle id="1:04:53"> You can get a quite a bit of this out in a few minutes.</subtitle>
  
<subtitle id="1:06:20"> own convenience I would spend</subtitle>
+
<subtitle id="1:04:59"> There's almost no context to news that it's not already inside of our own head.</subtitle>
  
<subtitle id="1:06:23">thousand five hundred dollars which is the price of an average</subtitle>
+
<subtitle id="1:05:5"> New on the other hand, real new. not news.</subtitle>
  
<subtitle id="1:06:26"> American car for a laptop if</subtitle>
+
<subtitle id="1:05:11"> Real new is invisible. We don't have a category. McLuhan said until I believe it I can't see it.</subtitle>
  
<subtitle id="1:06:29"> I could because I know what computers are good for</subtitle>
+
<subtitle id="1:05:20"> That is the way it works in the human nervous system.</subtitle>
  
<subtitle id="1:06:32"> but in fact people only value them as as much as</subtitle>
+
<subtitle id="1:05:23"> News is something that's been going on for the entire existence of the human race about two hundred thousand years.</subtitle>
  
<subtitle id="1:06:35">they value their television sets and they use them roughly the way they</subtitle>
+
<subtitle id="1:05:32">It's basically campfires, and this is what we're doing right now.</subtitle>
  
<subtitle id="1:06:38"> use their television sets so the big</subtitle>
+
<subtitle id="1:05:35"> This is a campfire. I'm doing the best I can do in an hour of telling stories in a campfire.</subtitle>
  
<subtitle id="1:06:41"> problem whenever something new comes along like</subtitle>
+
<subtitle id="1:05:41"> The problem is new can take two to five years to get the new categories that you need in order to actually see it.</subtitle>
  
<subtitle id="1:06:44">personal computing and the internet is that</subtitle>
+
<subtitle id="1:05:53"> One of the unfortunate things that happens is that new when you try to talk about it, and people make an effort on it, they usually transform it back into news.</subtitle>
  
<subtitle id="1:06:47"> people when they see a</subtitle>
+
<subtitle id="1:06:5"> For instance, we did this as a way of boosting mankind.</subtitle>
  
<subtitle id="1:06:50"> convenience to themselves they recast it back</subtitle>
+
<subtitle id="1:06:11"> It was all about learning by doing.</subtitle>
  
<subtitle id="1:06:53">the forms that they know about so for instance object-oriented</subtitle>
+
<subtitle id="1:06:14"> But in fact, almost everybody in the world uses it only as a consumable device for their own convenience.</subtitle>
  
<subtitle id="1:06:56"> programming never made it outside of Xerox PARC</subtitle>
+
<subtitle id="1:06:23"> I would spend thousand five hundred dollars, which is the price of an average American car, for a laptop. if I could, because I know what computers are good for.</subtitle>
  
<subtitle id="1:06:59"> only the term did we got designer jeans</subtitle>
+
<subtitle id="1:06:32"> But in fact, people only value them as as much as they value their television sets. And, they use them roughly the way they use their television sets. The big problem whenever something new comes along, like personal computing and the internet, is that people when they see a convenience to themselves, they recast it back to the forms that they know about.</subtitle>
  
<subtitle id="1:07:2"> but designer jeans are just dungarees</subtitle>
+
<subtitle id="1:06:56"> For instance, object-oriented programming never made it outside of Xerox PARC. Only the term did.</subtitle>
  
<subtitle id="1:07:5"> with a fancy label on them thank</subtitle>
+
<subtitle id="1:06:59"> We got designer jeans, but designer jeans are just dungarees with a fancy label on them. Thank you.</subtitle>

Latest revision as of 18:49, 17 July 2018

Introduction by Joel Orr

(time: 0:06)

Joel Orr was Chief Visionary (Emeritus) at Cyon Research.

I'm Joel Orr. I'm welcoming you to COFES. I'm very glad that you're all here, and I have the impossible task of introducing Alan Kay this morning. Alan has been an idol of mine for many many years. And, when I asked him how to introduce him, he said, like a woman's skirt. And I said, huh, and he said short enough to be interesting. And really, I could spend the whole hour talking about Alan's contributions to the worlds of computing, education, and so much more. Please do look them up on the web.
There is no lack of adequate places to learn about the inventor of the laptop, the guy responsible for all kinds of wonderful networking things and language things.
So, with that let me not take any more time away from his keynote, and let me welcome my friend Alan Kay.

Opening

I tried to incorporate in this title the topic, central topic, of this symposium. And, I'm also using the words engineering and science.
I'm  taking the larger sense of those terms. Larger sense of engineering, and larger sense of what science is. And, I want to apply it to our thoughts and needs about software.
Viewpoints Research Institute is a 501c3 nonprofit public benefit organization so so we don't have a product, we're not trying to sell you anything.
Brad invited me here to provide some alternative points of view on how we might think about software, and how we might make software because the time is going to be dire
I put my email address up there. I should put it at the end but I'll put it here so that if people have a question that didn't get answered while I'm here. I welcome email I like email.
I love it better than almost any other form of communication because I can decide when not to use it.

What is Engineering?

(time: 0:2:56)
You all know what I mean. Okay, let's tackle engineering first.
One way of thinking about engineering is that in the world we're presented with situations. Here's a really nice beautiful one but it has a couple of drawbacks from practical human need that gives rise to an idea.
We design something we make a thing that caters to that.
And, if we don't extract principles from this thing, then we're not doing engineering yet we're just tinkering.
Tinkering is kind of the thing that is built in to many mammals. If you have a cat, imagine what a cat would be like if it had hands it would be basically a monkey. If you'd come home from vacation your house would be dismantled.
We want to extract principles we want to push them back into the things, so we start doing principles building of things.
Those principles leak back into how we design things, and they even leak back into how we have ideas.
This has been going along on a lot longer than mathematics and science.
In the twentieth century one of the ideas that gave rise to was a really really tall building done very quickly.
Here's what it looked like when they got done with it. And, I'm not going to spend a lot of time with this but when you talk about engineering, this is one of the three or four things that comes up, the Empire State Building.

How Empire State Building was designed and architected

(time: 0:4:38)

Paul Starrett oversaw and managed the construction of the Empire State Building. See Paul Starrett on Wikipedia

here's an article in one of the engineering magazines that says planning control permit erection of 85 stories of steel in six months. It wasn't just 85 stories of steel, it was 85 stories of steel and granite.
Here's what it looked like. Here's the site after they demolished the old Waldorf Astoria Hotel, and then, Bing, Bing, Bing, Bing, Bing.
So they clad the thing as they went up and the entire building of the Empire State Building took less than 12 months and was done by about 3,000 people.
We could not muster 3,000 people to do something major in less than a year in computing. So, whatever we mean when we say software engineering, we don't mean real engineering.
We mean something that we're aspiring to. This is the way the term software engineering was intended back in the 60s at the Garmisch conference in 1968 where it was coined as an aspiration.
Today, if you go to a university or many companies and ask them what is software engineering, they'll say it's what we're doing. That is manifestly not the case.
There's some really interesting things. Anybody who aspires to being an engineer of any kind should be intimately familiar with how this was done.

A book on the Empire State Building

(time: 0:6:8)
What's wonderful that there are many good books about it, including this facsimile of the Foreman's, notebook. One of the foremen, every night, typed on his pica typewriter, and took a picture and pasted it in there.
This has come down to us but we don't know who the foreman was. And, a few years ago it was a facsimile into a book that you can buy and are many interesting things are in there.
One of the questions that was asked the aspiring contractors was what tools do you have for this job.
One of them was Paul Starret who was one of two Starret brothers. They had built some very large buildings in Manhattan previously but they were one of three big companies bidding for this job.
They'd all said to this question, "well, we have all the tools we need in blah blah blah blah."
What Starrett said is not a blankety-blank thing, not even a pick and shovel.
"Gentlemen, this building of yours is going to present unusual problems. Ordinary building equipment won't be built worth a damn on. it will buy and make new stuff fitted for the job that's what we do on every big job. It costs less than renting secondhand stuff, and it's more efficient." Okay.
Now in software, a first order theory that's obtained as long as I've been in the field, which is 50 years, is that you should never build your own tools. It's a black hole. Don't build your own operating system. Don't build your own computer for god sakes .
Don't build your own programming languages. Get all this stuff from the vendors.
That way, you're actually going to speed up your ability to produce the thing that you want to do. It turns out this isn't true. Or, it's true, if you can't, if you don't know how to build your own tools.
You can certainly get into a black hole. We all know of them. But in fact the second-order theory is also true, which is, if you know how to build your own tools then you better, because you can bypass not just workarounds that you have to do but you bypass an entire set of perspectives that may have nothing whatsoever to do with what you're trying to do.
And, they might even be antagonistic to it.
So, these guys did a lot of wonderful things. This is a narrow gauge railway that was on every floor of the Empire State Building.
They also built twice as many elevators than there they are now just as temporary elevators, but going up 85 stories in order to move equipment around, and when they got the building up they took down these elevators.
Sounds ridiculous, right? Not really.

Engineering Bridges

(time: 0:9:5)
Now, the other thing about engineering, real engineering that makes it rather different still from what we attempt to do in software is this problem.
This is the Tacoma Narrows Bridge. We have much of our infrastructure is crumbling.
Here's one that wasn't as funny as the Tacoma Narrows Bridge was funny because nobody got hurt.
It was predicted by a University of Washington professor.
The reason they got good movies of it is he said when a wind comes up that's over 55 miles an hour, this bridge is going down. So, when that wind came up, they went down to a now-famous camera store in Seattle, famous for supplying the movie cameras, which they then took out to the bridge, set them up.
(time: 0:9:56)

You can see the movie on the Internet, for example, like this one: Narrows Bridge Collapse..

And, watch the thing shake itself apart.
this one though, in Minneapolis, was not so funny because many people got killed and a whole school bus full of children just missed getting demolished.
So there are many casualties on this.
The trace back on this one was: first they thought the rivets were substandard but they turned out to be right. They finally found out that those gusset plates, those square things that the rivets are joining those beams with.
By a clerical error where about .. 3/16 of an inch too thin. 20 years later that defect in the structural engineering plus the clerical error brought down the entire bridge.
The point here is that one of the reasons you can fly in a jet plane and not feel upset, if you knew what was going on in the jet engine that's right outside there,
and you should if you're aspire to be an engineer, you will know that inside that jet engine, there are temperatures that are higher than the melting point of any of the materials in the jet engine.
It's just one of those great things.
But jet engines run for thousands and thousands and thousands of hours. They're one of the most perfect engineering creations especially given the difficulties that they labor under.
They have to spin at 30,000 rpm. They have these temperature problems. They have enormous shear forces and everything else going on. they're just fantastic.
The thing that has allowed engineering to advance is that people get really pissed off when their friends and relatives wind up dying on some engineering failure.
So the forces of nature plus the social forces have conspired to make engineers rather careful.
Of course if you think about the parallel situation inside of a computer, the forces and the masses are slight.
Many software systems are starting a crash that will take 10 years to happen from this instant they are actually deployed.
They're completely buggy but the gusset plate is going to take a long time to gradually come apart as it gets more and more complicated.
When you move from something where doing something out in the world of forces and masses into a world where you don't have these, you have to have an artificial sense of discipline.
This is omething we are still learning how to do.
Now we don't know what happened to the Roman engineers who failed.
I've suspected, because their engineering was so good for its time, I've suspected that they actually wound up in the Colosseum for failures.
But consider this. This is the longest extant, it's not the longest Roman bridge ever made, but it's the longest one that we still have. With those light poles on it.
Becasue it's been continuous use for over 2,000 years, and has had cars running on it for the last century.
Now, if go look at this bridge it's in Merida, Spain, near the Portuguese border, it looks like it was built yesterday.
This is partly because the Romans created the best cement the world has ever known. It took a long time for us to find out, just really about 10-15 years ago, to find out exactly what the secrets were of the Roman cement.
(time: 0:14:14)

Alcántara Bridge, also in Extremadura, Spain, [1].

How about this one. Same age. Again, if you walk right up to it, looks, holy smokes. This thing looks like it was built yesterday.
If ever been to, how many people have ever been to the Pantheon in Rome. She's been to Rome you've been to the Pantheon.
First time I went, I thought wow! You know, it looked like it was made out of granite, and then I found that it was made out of reinforced concrete. How many people, most people here might have found that out. Do you realize?
How many people realize it was made out of reinforced concrete?
It looks like it was made yesterday. You go around. It's just every, nothing is crumbled. Just Incredible.
If you really care about it, engineering goes from beyond a set of these principles to a true art form.
And, you could even go so far to say the big art form of the 20th century were science and engineering.
That's a lot to live up to for something that wants to call itself a science like computer science, and that wants to call itself an engineering discipline like software engineering.
Yeah, so the answer to this question is, "no". Software Engineering cannot do anything like this today.

"Can Software Engineering do anything like this?": Complexity of Software and Software Engineering

(time: 0:15:32)
To make some comparisons here, I just note that a 400 page book has 20,000 lines of text in it.
Each one of those could be a line of code so 20,000 line program is one 400 page book.
And a foot of books is about 300,000 lines. Million lines of code per meter: there's an easy one to remember.
The Empire State Building is about 441 million lines of code high, as stacked books is 20,000 lines, 50 lines of code at a time stacked up.
That sounds like a lot. But in fact a lot of companies are wrestling with about this much code.
Personal computing, which I had something to do with a long time ago. Microsoft's essays into it provide operating systems over a hundred million lines of code and application suites is well over a hundred million lines of code.
You look at that, you think, "Are we really getting that much bang for a couple hundred million lines of code?"
I hope you're saying no. I hope you haven't gotten complacent about this.
So personal computing, 250, say 200 million lines of code. But of course it's not really that much. The problem is that when you make a lot of code, there's a point, where their dependencies are so intertwined, the engineering has been done so poorly, that people start becoming afraid to remove things.
So they just let it stay there and they start layering over it.
This big software company has now gone over 400 million lines of code.
I haven't changed the slide. Yeah, I used to use this analogy, because, I mean, a pyramid is kind of a garbage dump plastered over with limestone so it looks nice.
Just a big accretion. But when I look at this picture, I think I can't use that metaphor anymore because, look at how modular these pyramids are.
We would love to have that modularity in the code that we write. so I think the picture that fits our code better is a slum.
Particularly the web. But basically it's all rather slum like.
There is no large sense of architecture of any kind. Things are tacked in there.
Urban renewal bulldozers out some stuff but just leaves the stuff lying around, never carts it off and and so forth.
The real question is not whether we can improve on this.
But what is the actual level of improvement, which is tantamount to asking, how complex is the actual problems we're trying to solve compared to the complexity we're creating by just bumbling around.

What is Science: With a hair ball standing in for Complexity

(time: 0:18:35)
Let's ask a question about what science is. Now that we've talked about engineering.
Real science looks at hairballs. This is my favorite hairball. It's about this big, recovered from the stomach of a woolly mammoth found in a glacier.
But because hair balls are ugly to look at but it got your attention, especially when I say how big it is.
It represents complications. But, you know, the universe is good enough.
The starry night it's pretty air but it's still complicated. People spent thousand of years misunderstanding it in a bunch of ways.
(time: 0:19:17)

Scheffer Stroke is a logical operation of NAND, from which you can build any other operations, and logical structure. Stroke on Wikipedia.

We little creatures with our brains have languages. We can make all of our languages out of the Scheffer's stroke. Here, this is the NAND operator.
(time: 0:19:29)

Oliver Heavyside cleaned up the formula to concisely describe Maxwell original idea. [2]

Because we have tiny little brains, we invented mathematics, and we come up with something like Maxwell's equations, or Heavyside's version of Maxwell's equation, and put a large part of the phenomena that we're looking at out there on a T-shirt.
This represents complexity, so the complexity of the electromagnetic field, in large amounts of it, enough to invent a radio and radar and etc. etc., can be represented by a couple of these equations.
These equations should be symmetrical because the magnetic field and the electric field are trade off against each other but aren't.
So, if you worry about that and you happen to be named Einstein, you will come up with the special theory of relativity which will put symmetry into the whole thing and you get down to two equations, just like you should have. One for the electric field and one for the magnetic field.
(time: 0:20:35)

The notation is not science.

Now science is not this. The problem is when most people take science courses they're taught the T-shirt.
But science is actually that. Science is the realm of the relationship between the phenomena that we can't get to.

Science with Engineering by making an artifact and observing it

Similarly, we can do science with engineering, because it's an artifact that has phenomena so we can actually look at that bridge that we built there. Scientists can look at what engineers do and make a T-shirt of it.
We have T-shirts of what bridges are, their theories of bridges. Then, the cool thing, this is why it's great to be alive today, the cool thing is you can take that T-shirt and make one hell of a bridge.
Engineering was around for a long time but it didn't hit its stride until it had this beginning the yang here, event of making things and looking at them the special way that science does.
How big is this bridge? Well, See those little boats down there? Those are super tankers.
Just for comparison, there is our Empire State Building. So the pylons on this bridge are the height of the Empire Building. And, there's the Great Pyramid of Egypt.
(time: 0:22:0)

Akashi Kaikyō Bridge. The longest suspension bridge in the world. Wikipedia.

This is the Asahi [Akashi] bridge in Japan. Just can't beat it. So lovely.
So, this is what we want to think about. We want to think about real engineering. We want to think about real science.

Computer Science, contrasted with Real Science and Engineering

(time: 0:22:14)
Computer science is not real science. Ask anybody to give you a definition, and they will give you an engineering definition.
Part of it is because computer science persists in only building things. It doesn't spend a lot of time trying to understand them.
So, you can look, you know, computers We have built. There, you have their complicated artifacts. Programming languages is a complicated artifacts you can do the same thing.
(time: 0:22:41)

What is on the T-shirt is Lisp semantics written in the form of an interpreter written in Lisp. The core of a language can fit on a T-Shirt.

John McCarthy looked at them, and being a mathematician, you want a G-shirt ["T-shirt"]. This is the programming language Lisp on the T-shirt.
Once you look at that you realize, whoops, programming is not as complicated as I thought. All the semantics I really care about are not in these in humongous Fortran or Java compilers but they are actually very small.
When I make them small enough for my tiny little brain I can actually think about to manipulate them.
Whereas trying to go over on the other side and mess around with Fortran directly to make it better, it just never happen.
(time: 0:23:20)

Alan is showing the cell biology he studied and the Internet that inspired Smalltalk design.

So, John came up with a mathematical theory of computation. And, those of us who came in the next generation after McCarthy got to do some really fun things with this idea. I should mention that what I'm talking to you about actually happened in the 60s.
And, it bore some real fruits. But, in fact, it never made it into the world of the 60s which was dominated by IBM. Or, the world of the 80s and 90s which is dominated by Microsoft.
It just didn't happen. So most people program in a way that is strikingly similar to the way programming was done around 1965.

Tactics vs. Strategies

(time: 0:24:5)
Let's take a look at the idea of tactics versus strategies.
The simplest thing when we have materials is to think tactically.
Have a bunch of these materials piles and stacks.
Simplest things we can get out of those hardly any design effort at all as pyramids and walls.
People did this with bricks for thousands of years before somebody had a strategic thought which is,
"hey, let's make something out of the bricks before we make the thing."
Let's make a new kind of building component a different kind of structural integrity than a pyramid does, and all of a sudden, we can kick ass.
(time: 0:24:47)

With an arch, one can build as tall structure as a pyramid with much less material.

Took thousands of years to get beyond what the brick forced into our minds by being in front of us to this very odd thing that requires more building materials to make than when you're done. This is one of the hard things about an arch.
It's hard to imagine it because it doesn't work until it works: so people just ignored it.
The same thing happened in computing, where we build things out of NAND's.
Basically computing is all about comparing things. So you can take materials, like even two rulers, this is something that first graders love is they can do any fractional arithmetic problem their ten-year-old brother can't do.
They can do it in two seconds with two rulers. All right, because the ruler is an addition slide rule. You show this to a kid they'll love you for life
Just compute the whole thing out ahead of time, and say here's what it is, and by the way, you're teaching them vectors at the same time.
It beats regular fractions in many many ways. Of course the Romans and the Greeks. Romans had a socially accepted QWERTY form of numbers called Roman numerals.
But they didn't use them. most people use this in the wrong way. The Romans and the Greeks had abacuses to compute with. This is a Roman abacus and those stones are called calculi.
The calculus came from this notion of what they pull out of your teeth, also. When they you go to the dentist to get the plaque removed they call them calculi.
(time: 0:26:29)

The couple of British are William Eccles and F. W. Jordan. Origin of Flip Flop on [3].

Flip-flops didn't come people wanted to do computers but because a couple of Brits wanted to see if they could make a memory that could do some of the things human memory could do out of materials.
Remember, vitalism was a big deal back then.
And ENIAC.
But the problem is matter is inconvenient for this. It's just, you know, basically the scaling problems overwhelm you very little return.
You need to go strategically.
(time: 0:27:5)

Jacquard Loom was a powered device that was controlled by punch cards and produced textiles with complex patterns. Loom on Wikipedia. Alan refers to the fact that von Neumann style languages are following what the low-level machine instructions dictates, including ALGOL and Java shown on the slide.

Of course this was done a long time before with a Jacquard loom, von Neumann architectures, von Neumann style programming languages.
Even the programming languages of today like Java, which is also a von Neumann style language in spite of a few trappings it has on it.
Basically, the programming that we're doing today has not stirred from this in 50 years.
There have been about 3,000 different programming languages invented and some of them really useful.
But style of programming that is used today is almost entirely this style. It's style where the programming language is rather similar to the underlying storage mechanisms and control structures of the machine.
There are few convenience is there, but not a lot and not enough.
(time: 0:27:59)

Sketchpad is the black and white picture with the light pen interface on the bottom row. [4].

But, of course there are always weird people out on the fringes, who, like Turing himself, who did things are completely different. For instance, Sketchpad, which is having its 50th anniversary this year, computed by, you programmed it by, putting in constraints that Sketchpad had to figure out.
So, instead of writing solutions to problems, you just gave Sketchpad what the problem, what the nature of the problem was, what the nature that would characterize a solution. Sketchpad had three problem solvers.
In 1962, it would solve those problems for you.
By the way, he also invented computer graphics while doing it, and also this is the first object-oriented system I know of.
Those three things were done by Ivan Sutherland as a thesis project in one year, one person. I once asked Ivan: "how could you do these three things in one year?" He says well I didn't know it was hard.
Ivan was a genius, but he had also had the advantage of just aiming for what we really needed.
He didn't worry about whether it was hard, because nobody knew what was easy and hard in 1962. He just went for what we needed, which is an interactive system, that, you could show sort of what you wanted then tell it what the criteria were to the job up and it finished the job up. Great.
Too bad we don't have it today.
The Internet, another thing which is almost completely ignored by computer people. Why?
Because it works too well. Most computer people, certainly most people in the world, but most computer people even don't think of this as technology.
It's completely different from the technology they're used to. The internet has never gone down started running in '69 but continuously, since then to replace all of its atoms and it's bits without ever being shut down.
People are shutting down their software systems all the time. They shut down individual servers, even though a server is just a name. You never have to do that.
What we've got is two cultures here. We got culture that was able to make something get scaled successfully by eveven orders of magnitude. We've got another culture, who, who can't even appreciate the feat of engineering and science that took it to do.
The Internet is really the only extant true object-oriented system in the world right now.
(time: 0:30:32)

The brain image used to denote AI. In other talks the same image is used to explain how brain interprets the incoming signal and how itself synthesizes information.

Then, there's, of course, AI, which people have lost interest in, just as it was starting to get really well work done. We should be spending more time thinking about this.

Xerox ALTO in 1973

Now, one little blast from the past, 1973, we showed this machine and this system.
(time: 0:30:56)

Alan refers to the idea that each graphical object on screen can be considered as a self-contained entity like an application, and the window border around them is optional. A document in DTP can be organized as an assortment of such graphical objects.

Notice, overlapping windows there, it was a view oriented object-oriented system, desktop publishing was essentially the views without the borders on them.
These got split up when they came out into the real world, but it's, in Xerox theory, one thing. There was no operating system, because you don't need one.
When Xerox asked us what we were we're doing, we gave them our own version of Paul Starrett's speech, not even a pick and shovel.
Part of the deal at Xerox PARC was we built every bit of the hardware and software ourselves from scratch.
We did not go out and buy commercial computers. We did not go out and buy commercial software.
The reason is this stuff was so different that we would have spent all of our time running into walls that were simply irrelevant to what we were trying to do.
The cool thing was this was a tiny machine: 128 K RAM, and we used half of it for the display. So, it had a display about 800 by 600.
all the software from the end-user down to the non-existent operating system, down to the metal of the machine, was only about 10,000 lines of code. It was done in a language we invented specifically for the purpose.
One way of thinking about this is, in the end, no matter what it is you think you're doing, math wins.
The thing that is math, the mathematization of an idea dominates all other things once you've done the spadework around the edges. At some point, you have to sit down and do something like mathematical thinking in order to collapse all the things that seem to be artificially dissimilar into things that are similar.
This is called making an algebra. This was a technique that we use pretty generally at PARC.

8 and half Inventions at Xerox PARC

(time: 0:33:14)

Half of the Internet means that Xerox PARC had its own packet switching protocol called PUP, which influenced the design of TCP/IP.

In a few years, we did this: the bitmap screen, the GUI, WYSIWYG in desktop publishing, real objects, laser printers, Ethernet, peer-to-peer and client-server, and about a half of the Internet.
Now, what was interesting about that, perhaps, is it was only two dozen people.
Any company here could have afforded to do this. Two dozen people, just ten million dollars a year in today's dollars, you could do it right now.
You won't do it though. Nobody is doing it. you won't do it in spite of the fact that it returned 30 plus trillion bucks, returning about a trillion dollars a year still.
So, this is a huge win, but in fact, it is against what most people think is good practice.
I don't mean in computing only. I mean in management.
We'll leave that because we don't want to talk about the past too much.
Most people do not realize it was only two dozen people. That is only four to five years to do all this stuff, and doing it all from scratch.

Introduction to the STEPS project background

(time: 0:34:38)

The picture, with two children (two of triplets) using the XO laptop, is a recreation of the drawing in the "Personal Computer for Children of All Ages" paper.

Now let's take a look at a science project in the present. Same idea here, so all of these ideas I've been talking about here.
We're going to apply them to this big thing called personal computing. It's got all kinds of stuff in it.
Again, we're interested in this area that goes from the end-user all the way down to the metal. so, there's a lot of stuff.
We want to know how many T-shirts does it take, right?
This is a completely different thing here. We are not interested.. we're doing science here.
We're going to have to do a little bit of engineering because the only way we can validate this science is by making it run.
But this is a science project. We want those T-shirts.

Principles of STEPS

(time: 0:35:32)

Refer to some of the STEPS proposals and reports available at the VPRI site: Writings, including first year report.

So, let's take a look. Let's say half of what Microsoft, or Moore, has in there is just code they can't get rid of. But still, most of these, you know, Linux and OpenOffice and stuff: it's like a hundred million lines of code.
So, it's a lot of a lot of stuff of different kinds.
Now, here here we have, we're kind of behind the eight-ball of having a brief talk. This part, to do this part in a reasonable way, would take a couple of days.
I hate bullets. So please do not regard these as bullets. just look. They're ten blobs, out of twelve or thirteen blobs, that we used.
What they are are things, a couple of those we invented but, most of them were things that have been around for 50 years that didn't make it into the particulars design culture that computing is.
See, the difference here is nature helps physicists be honest, because in the end you're supposed to submit your theories back to nature. But the problem is we're a design field: so our trade is bullshit.
That's what design is. There's good and there's bad and there's different. A lot, a lot of stuff in between.
We can have a fad like, for instance, semaphores. Semaphores were known to be a bad idea when they were first invented by Dykstra and Hoare. But, in fact, in that culture, they took on, and for a variety of different reasons, they are still being taught today and they're still being used today.
Why are they a bad idea? anybody know? What's wrong with a semaphores?
A system lock up. there is no way to do something ahead of time that will tell you you won't get system lock up.
(time: 0:37:44)

Simulation of Time is one of the principles. Alan refers to John McCarthy's Situation Calculus and the concept of fluents Calculus on Wikipedia and David Reed's work on distributed decision making [5].

So, this is like the world's worst idea to let the CPU control the time base of your computations. you're screwed.
May take a while, may happen quickly, but it's just basically a bad idea. There was already a good idea also thought up by John McCarthy in the early 60s that actually works and works much better.
But it's just not generally used, and it won't be used for a while, because these things take decades to get rid of things that are, you know, de facto religions.

The graphics engine of the STEPS project: Dan Amelang's Nile and Gezira

(time: 0:38:20)
I'm just going to pick on a couple of these. I already talked about math wins, and I want to talk about this now in this area, up around in here, because one of the things we have to do in personal computing today is make anti-alias, 2 and 1/2 D computer graphics.
We have to make it look really good. If we didn't have it look really good, then we will be sloughing off part of making something that is like computer graphics that we can recognize today.
Of course whenever you have a hard problem you get a graduate student to do it, because they are just so much smarter than we are.
This is Dan Amelang, who's a graduate student at UC San Diego. A very good mathematician and computer guy. And even better, he has a mom.
Of course we all do, but his mom happens to be a high school geometry teacher of that special kind that actually understands math.
So, they do exist. He went home Thanksgiving three four years ago, and his mom said: "well, son, what are you doing at Viewpoints?" He said: "well, I need to reduce the amount of code to do computer graphics on a personal computer by a factor of a thousand.
She said: "Oh, that sounds interesting. What are you going to do?" In fact her expertise was in projective geometry. so, Dan did not come back from Thanksgiving. He stayed working with his mom.
he and his mom worked together on this thing through January, finally showed up in January with this formula.
(time: 0:40:17)

To see more about Dan's work, check out the talk by him talk at UIUC by Dan (starts around 17:00 mark).

This is one of these serendipitous things that you can't completely supply by method. But this stuff has been kicked around by the best people in the world for forty five years. But in fact, they found a new way of thinking about the involvement of an arbitrary polygon with a pixel that computes exactly the right shade of the pixel to give you perfect anti-aliasing.
It's only that big. The next thing Dan did was to make a math a language out of the mathematics that looked like the mathematics, but could run on a computer.
When you tell these 45 lines of code to do it, they can do things like this. They can render anti-alias text and anti-aliased graphic objects. That was a great start.
This language that he devised, he decided to make it a dataflow language with kind of functional engines at the nodes. Because of that, it is highly amenable to automatic use of parallel resources.
(time: 0:41:29)

Refer to some other talks for the live demo, until we manage to put the movie, or a real working system here.

Here's one of our benchmarks. This is 5000 anti-aliased translucent characters being re-rendered every time by these 45 lines of code.
So, there's no caching or anything here. We can take a look at the CPU usage. We can see that it's basically using..
This is a four-core Mac but the cores can handle two highly interleaved threads at once.
So you're seeing that one of those is being devoted to this task, and the fan has come on.
As I say go faster, it says "okay, give me another thread." There it is. What it's doing here is when I say up to four here, it's spacing them out, so they're each in different cores.
As I go faster and faster, it starts interleaving them. I can start zooming in. here so you can sort of see what's going on a little better.
You got enough monkeys.
We're actually quite surprised that... this is a lot of computing, but we're getting a lot of a lot out of it.
What I thought was, "wow, we should be able to make a whole system just out of this math."
This is in fact what I'm using. I'm not using PowerPoint here.
It's probably obvious by now, but. Here is this system that is this replacement for personal computing.
Here's my next slide.
(time: 0:43:38)

The CompositeOver rule, which does the normal blending, is shown in the first oval, and compositing the star with gradient over the Frank character is shown as a result.

Here's Dan's brother, and here's all the compositing rules.
(time: 0:43:41)

Likewise, there are three more examples of using different composition rules.

So for instance, this one is invert. Here's another combination rule here.
It's 95 lines to do all of the compositing rules that you use.
Now that you've seen. Of course there are those 45 lines. There's gradients, so I should actually...
(time: 0:44:08)

The document editor is called Frank. Refer to the STEPS project reports and also a paper: and KSWorld: A Time-Aware and Mostly Declarative Language and Interactivev GUI Framework.

This user interface here is made out of the system also, because it's all one sort of one big desktop publishing document.
I'm going to.. The system is also live. This has not been compiled away into C code down there.
(time: 0:44:26)

Alan pops out from the full screen mode by clicking the top right button, select a button widget for editing in the document editor, and change the gradient by manipulating mutli-stop gradient editor.

I'm actually going to pick an object here like this.
This menu here, and I'm going to say, "okay, let's change the gradient fill on this.
Yeah, something like that maybe. Or maybe we don't want as hard an edge so we'll zoom this out. Okay, get the idea?
So the whole system is live. It's using its own stuff here. We keep on chugging along.
We can see here's pen stroking, filtering.
All of the graphics for personal computing in this little science exercise came out to be four hundred and fifty seven lines of code.
How do we know it is 457? Because you can count 457 things, right?.
It's hard to count 400 thousands or 440 million or so on.
This is about a thousand times smaller than the way it is done, say, in Firefox. right?
So a thousand should get your attention, right? You have to learn a new language. On the other hand, here it is. The whole thing is just a few pages of code, and it's live, and you can run and use it. Okay.

OMeta, Language Transformation Language

(time: 0:45:56)

The language Nothing was an experiment at VPRI to provide an intermediate system language. (This demo was not using Nothing.)

Where did this language come from? I have to build that.
So there's actually quite a distance between one of these compositing rules, a one-liner of code, and getting the result at the other end.
So I might need to remove the hood and show you what's there. This looks a little more daunting, because I have to translate this language into a standard form.
I have to translate this into another language that is sort of like C.
I have to translate to something that eventually will run on the x86 architecture that's on this machine.
That looks like a lot of work. And, of course, I run the system on multiple processors so I have to do that.
One way of thinking about it is, gee, it looks like there's a lot of work in these square boxes here and all.
We need another special language. We've just showed you a domain-specific language.
In the old days, they are called problem-oriented languages. I like old terminology because I'm old.
We need another problem-oriented language here, whose problem domain is transforming languages.
Of course, there are tools around for doing this.
But this is one of the big stoppers for people doing this themselves because making a language the way it is taught in school is a daunting procedures usually taught through some set of tools like Yacc.
This is not the way to do it. But the poor student comes out either not understanding it all, or convinced that it's too hard.
But in fact, you can make a much better language.
(time: 0:47:41)

OMeta by Alex Warth is described in detail in his Ph.D thesis: with Programming Languages.

Here's one we did called OMeta. and here's a simple arithmetic expression, and here's the program. If I say do it, it transforms that expression into a tree.
If I come down here, and pick this more complicated expression up, and paste it in here and say do it.
I get that.
This translation system isn't just for translating things that have strings. It translates any kind of objects into any other kind of objects. So, You want to do it in that generality, because you're going to use this everywhere.
So, this graphical language winds up being 130 lines of code to make the trees, and another 700 lines of code to make the lower-level stuff that is actually run on the machine.
You could say a thousand lines of code, 900 lines of code to make that graphical language.
But, this is like a shaggy dog story, right? Because, well, now I have to make the language transforming language.
But of course, it can make itself.
Alex Warth did it particularly nicely, so it can make itself in 100 lines of code.
As you get closer and closer down to the bottom of the system, you start using these base things over and over again.
The problem-oriented language is staying on the top.

The working model of TCP/IP by Ian Piumarta

(time: 0:49:14)

Refer to the year STEPS annual report.

Okay, but we have to do the internet. So, TCP/IP, 20,000 lines of C for that. So, one book, one of those books. This C code and most computers is a good nice job.
TCP/IP was invented by experts so we didn't expect to get a factor of thousand on this.
Ian Piumarta only got a little more than a factor of a hundred.
TCP/IP is about 160 lines of code using these techniques. If you're interested, I can explain...
This is particularly elegant the way he did it I'll explain it later for people who are interested.
This represents taking something it was done by very good people, but in the wrong language, and done essentially in a way that generated unnecessary code.
The big key here was not so much the language as the method.
The method came first, and then we did the language to do it so the whole thing collapses down.
Okay.

Particles and Fields Abstraction

(time: 0:50:26)

The dynamic content here is to be filled in.

Let's take another one of these metaphors: particles and fields. Everybody understands this as a kind of a metaphor for iron filings in a magnetic field. The iron filings seem to know what to do. They're feeling this field and they're doing individual things that look like they're somewhat coordinated.
In fact, there are animals that do this also like ants.
Here's a little ant simulation. This is their nest. These guys are the food. And, if we start this thing going, then we see that the ants are finding the food, going to the nest and they're leaving this pheromone trail.
This is using about eleven thousand parallel processes, because each little cell is being used to diffuse the perfume the ants lay down. You see, right now, all of the ants have been captured by the field even they're not communicating directly with each other they're communicating indirectly with each other.
We would call this loose coupling.

Paragraph Justification with Rules

Well, if you have crazy brains, you could imagine that a paragraph of text is one of those things.
Who said you could do the encyclopedia over here?
We're not going to do the encyclopedia but we're just going to say: "hey, we should be able to organizae these little ants to do a paragraph.
The simplest thing that you can get fifth graders to figure out is.. Well, when you have to do something, follow the guy who is in front of you, and if there's nobody in front of you go to the upper left-hand corner.
If you find yourself over the the right-hand margin, tell the guy in front of you, and eventually somebody will know what to do, like go to the next line, right?
Let's just say go do this.
I just gave you like a three line formatter, right?
So, this is math. I'm going to set it off again.
And, I'm going to point out that I can edit this. Let's let it.
I can turn general here into justify.
And, it's just redoing this over and over again. All right.
The editor is actually working
Now, another way to do it, a little faster, is to say: "hey, don't follow the leader here because this is just for the crowd".
When it's time to do your thing, wait until the guy in front of you gets to the right place, and then go right behind him.
This is called jump, and here's what that looks like.
Now, they're all standing still. Okay.
If I start jump here, and I just say now do this in between frame times.
Bonk
okay, so all of the editing here is done like this.
In fact, this is another one of the documents in this universal document system.
Remember, we have to do Microsoft Office here.
But, why would anybody in the right mind give you seven applications that all do almost the same thing but not quite.
Well, the answer is simple, because amazingly people will put up with this silliness enough to buy it from them, and thus encourage them further.
This is nonsense.
Really, what you want is a universal document in just different ways. You really don't need to have a different system for the World Wide Web, do you?
No, because it's just a different way of accessing these multimedia Docs.
This is actually how we write code. This is an explanation to somebody like you to show in a little essay how the how the code actually works.
We start off here, and say: "okay, the first thing we want to do is just get these guys out there randomly."
These two lines of these two little boxes of code do this. And, here's one that just does this without worrying about the next line.
Here are some special cases.
This is a reminiscent of the way Knuth sometimes likes to program.
You actually learn the thing while you're looking at it. You can do little experiments.
By the time you've done that, bingo, you've got the thing.
Here, this is a yet another problem-oriented language, but with rules this time. So rule based.
Seven rules for doing the layout.
The whole editor, like Microsoft Word. Paragraphs is 35 rules, okay.
So, that's all you have to do for that.

Coordinating Multiple Solvers

(time: 0:56:13)

Refer to Hesam Samimi and Alan Borning work on Writings page.

Here is another area. A thing that's very useful to have is problem-solvers.
But the problem with problem solvers and these problem-oriented languages, they're [also] problem solvers, they aren't integrated.
So, you wind up with a hodgepodge of different things serving different things, and you want to be able to integrate them.
Here, we can have a simplex solver, differential equations, propagation, dynamic programming, relaxing, the rules for the paragraph. These all have different problem domains.
What we want to do is to approach them strategically, as I've been talking about here, through general relational languages that talk to, or a kind of a little operating system for solvers, and often with the help of an expert system that helps make a strategy for using these things.
The further stuff here is beyond the scope of this short talk, so I'll just move on here.

From Gears to Ecologies

(time: 0:57:14)
Okay, here's an important idea. Too many ideas in this talk, right?
Here's something that happened in the 60s except nobody noticed it except maybe the ARPA researchers, and the outgrowth of that to Xerox PARC.
That is, that the entire paradigm of computing, because of Moore's law, was going to be able to shift from a gear like way of doing things, basically tight coupling, brittle code, to something more like ecology, something more biological.
We use these ideas very strongly in the invention of the Internet, and in the invention of the object-oriented techniques that we used for software at Xerox PARC.
The deal here is you can fix a clock, but you can only make clocks of a certain size. Maybe a thousand gears before they just crash.
This is what happens in today's programming.
You have to negotiate with the system. A lot of what growing the old world into this new world is learning what it means to do this kind of negotiation, as you add more system elements.
The next little thing is just a couple of minutes of gloss, because I'm getting close to the end here. But I wanted to say something about systems.

Simulation of Space and Time

(time: "0"58:38")

David Reed's work on distributed decision making [6]. and Gerald Popek's Locus: [7].

Three of the ideas here are that we want to control time. I mentioned this a little bit before. We do not want to CPU to control time first.
We control time, and we'll do it by simulating our own time.
We don't want to have any preferred center. We want to have something like the Internet all the way down.
We want loose coupling. Now of course, this has all been done before, again with networks.
Here now, we're looking at physical computers on the Internet or Ethernet.
Ideally, we'd like our computations to be software versions of these hardware networks. Why?
Because in most cases we will need to do load balancing.
Sometimes we'll be able to run all of these guys on a single machine, in which case we just have increased integrity and ability to design quickly. But a lot of the time, especially now with mobile, we want to have the same computations able to drift around the network to different kinds of devices.
In some cases, not all of the computation is going to want to be in the machine that is next to the user interface. If you think of the user interface here, it's basically a set of views of processes that are giving it images to integrate up on the surface.
Here's a great thing if you're interested. Dave Reed's 1978 Ph. D thesis at MIT. The design of an operating system for the Internet was never done, but we validated it a few years ago at Viewpoints.
What if you want to make a system that is the size of the Internet that is a software system. What is it that you have to do to absolutely ensure that you're going to have what people like to call data integrity always.
So that no matter where you ask a question anywhere on the network about anything anywhere on the network, you will get the same answer for the pseudo time referent of that question.
A working version of a migratory system was done by Jerry Popek. I put this up here because this book was written in the 80s, you can still get it from MIT press.
The Locus distributed system architecture. You'll find the entire book interesting. It just a thin little volume. The first two chapters are a classic still of the issues you have to think about and solve in order to do this.
Again, this has all been done. This is almost 30 years old now, but nobody uses it.
but if you were to use it, all applications are now just mashups, right?
We don't want applications as smoke stacks, because we want to integrate. We didn't have appications at Xerox PARC, and we did not have operating systems.
The current web which is getting more and more complicated can immediately get simple except for all the legacy stuff that has been done so far.

Scalability of Ecology and Psychology

(time: 1:01:56)

The books shown are Ecology: From Individuals to Ecosystems [8] and the Society of Mind.

Here's something that Viewpoints has on its list but we expect not to be able to solve this, at least in this path of doing things. it, may be beyond, may require a much larger effort than a small nonprofit can do.
But if you think about analogies to what's happening with the scaling that's going on here. It basically starts looking like a biological ecology.
These have their own dynamics and they need to be thought about in special ways.
The ability for us to scale to what Moore's law is allowing right now is going to require us to start thinking more and more like this
We did this to some extent when we did the Internet.
Like, I have a degree in molecular biology in my misspent youth.
A lot of the ways I think about this stuff is through tissue biology and how the hundred trillion cells in our body work without having a dedicated center and so forth.
But in computing, we have problems of our own that are special. Then, the next step beyond this, the best book I've ever seen about it is Minsky's Society of Mind book, which is actually about a model for human psychology.
But in fact, it is a very good model for what the Internet is going to turn into. Okay.

Apple, Orange and Lemon

(time: 1:03:26)

Apple is Apple, and orange refers to the theme color of Ubuntu as a stand in for the Linux Operating System.

So the punchline here, we've got three main operating systems.
I won't say which one is the lemon.
Down on the bottom here, our little Frankenstein monster that we made is that I've been showing you today is less than 20,000 lines of code.
So it's worth pondering.
We are not using any of the Macintosh software in order to do this demo.
Here's just to kick off, I think I'll just show this slide and then quit.
I organized the talk so I can stop now at any place and I need to in about a minute.
I'll just leave this one thought with you. Maybe we can have a few questions.
Then, maybe more will happen. I think there's a smaller group question session coming up later.

News and New

(time: 1:04:23)

A recurring theme on learning that Alan mentions in various ways over the decades.

Let's think about this idea. Something appears and we've got two things about it. That are very different. There's news and new.
News is the stuff that is incremental to the categories that we already know. Almost every bit of news is a specific parameter into some category that we already understand.
It's this war, that killing, this marriage, that hem size, right?
You can get a quite a bit of this out in a few minutes.
There's almost no context to news that it's not already inside of our own head.
New on the other hand, real new. not news.
Real new is invisible. We don't have a category. McLuhan said until I believe it I can't see it.
That is the way it works in the human nervous system.
News is something that's been going on for the entire existence of the human race about two hundred thousand years.
It's basically campfires, and this is what we're doing right now.
This is a campfire. I'm doing the best I can do in an hour of telling stories in a campfire.
The problem is new can take two to five years to get the new categories that you need in order to actually see it.
One of the unfortunate things that happens is that new when you try to talk about it, and people make an effort on it, they usually transform it back into news.
For instance, we did this as a way of boosting mankind.
It was all about learning by doing.
But in fact, almost everybody in the world uses it only as a consumable device for their own convenience.
I would spend thousand five hundred dollars, which is the price of an average American car, for a laptop. if I could, because I know what computers are good for.
But in fact, people only value them as as much as they value their television sets. And, they use them roughly the way they use their television sets. The big problem whenever something new comes along, like personal computing and the internet, is that people when they see a convenience to themselves, they recast it back to the forms that they know about.
For instance, object-oriented programming never made it outside of Xerox PARC. Only the term did.
We got designer jeans, but designer jeans are just dungarees with a fancy label on them. Thank you.