What the last 50+ years of modern computing history tell us about future interfaces, Mike Amundsen

my name is Michael Amundsen I apologize I will be speaking in English a challenge in in English for me but I appreciate you being here today so I work with a company called layer sevens wonderful organization and I go by many handles many names hypermedia junkie is a recent one because I speak so much and write so much and research so much on hypermedia so much that I could fill a book but I have a really simple mission in my life and that is to to improve the quality and usability of information on the web it's something that I do every single day not the quantity not the speed right not data information right information that we can use and and it's great because my job at layer 7 is to help people build great web api sweer so proud to be here at the beginning of this international conference so I want to talk to you today I actually want to challenge you today I want to challenge you about this programmable world and I wanted to do it by looking back we have more than 50 years of modern computing history 50 years of thinking about distributed systems do we remember this how of how has this affected what we do today how we see things today choices were made decades ago and we accept them or we change them and what does this mean for what we will do in the future so just some ideas just some things to make us think we here in this room will create the future the future is based on the past so I want to talk about some of these people some of these people you may recognize some of these people I have just met in the last few months and I think they will are thinking about in doing things that will affect all of us in really exciting and creative ways so let's go back a bit Vannevar Bush working on the Manhattan Project in the United States to help build the first nuclear bomb a huge project of brilliant minds all in a room yelling at each other talking with each other remembering things I read this I read that let's do this let's do that boniva recognized is that humans linked to each other that their brains jumped from one idea to another so he conceives in his mind he's worried that once all of these brilliant people leave that we will not have this link we will not have this ability to learn so quickly from each other so instead what he what he decides as he describes what he calls the Memex device in 1945 which now looks like sort of we say steampunk version of a computer right so it's this levers and knobs and tapes and reels and everyone shares tapes and you operate this with some strange buttons with lots of screens and a thing on your head right this is the future in 1945 right this is space but he realizes that we link together and that that we should be able to do that at distance rather than just simply close so this is 1945 right here it is generations later and Google is actually building a Memex are they not this is wonderful mimic human linking using a machine this is his idea jump ahead there's a man called Ted Nelson who actually coins the phrase hypertext hypermedia hyper data he lives in California he's a surfer he has these weird ideas he writes this book called computer lib machine dreams he hand writes this book hand writes this book in the in the 60s and 70s and the book is great because it's actually two books you read one side of it you get to the middle and everything is upside down at the end so you flipped the book over and you read the other book it's a brilliant brilliant creative idea to make us think about how we use books he said if computers are the wave of the future displays are the surfboards it's because of him that we surf the web because of Ted Nelson Ted Nelson has done many many things this is one of the early drawings Ted was trying to convince people that everything is linked together we can actually do this he describes how this works he has even he is very concerned about the notion of using computers for education the wrong way so one of his illustrations is what was happening in the 70s about computer assisted instruction he says it's all wrong we have a mediator we don't need a mediator we don't need a wall he wants to build a place where everything is consumed together student and subject are one thing Ted Nelson describes exactly how those links can exist on a network he builds on Vannevar Bush described how links work in a network he does this now another very very interesting person is Douglas Engelbart Douglas Engelbart reads about the Memex long goes angry bart also reads quite a bit about the way people think and learn in the way brains work and he develops the mouse he develops the mouse that we all use today the mouse that I used today right and he writes this long paper called augmenting human intellect his work is to augment the way our minds work very similar to to the way Bush talks about this is actually one of the earliest mouse pointing devices you can see two rollers in a wooden box connected by these wires and this is what he builds in 1968 called NLS or the online system think about it 1968 we haven't even landed on the moon yet and he has built a machine where by manipulating a few keys and this mouse you can change what appears on the tube right so he has built the Memex in just a matter of less than 20 years 20 years almost right so he has done this so these are the people who built what we work on today and in the space of just one generation he built the hardware that make that linking network possible describe human linking myth mimic with the machine describe how it would work on a network and then make that possible in 20 years in one generation there are so many other things I could tell you about these three people but I have so little time look these people up there's a wonderful video of Engelbart demonstrating his mouse device it's a small video you can find if you angle our mouse I think video our soaping online systems is what is the mother of all demos yes yes yes exactly yes so how does that affect us right so what does that result in and who builds on these things so I'm gonna shift gears Christopher Alexander in the 60s and 70s is is it physical architect and he writes this book the timeless way of building and in this book he describes his discovery that buildings that are thousands of years old are still wonderful places to be used for purposes they were never originally designed but yet comfortable why is this why is it that over thousands and thousands of years all these buildings they're still useful they still exist and others are just crap and he settles on this notion that there are there is a pattern there's a pattern to an entryway there's a pattern to a window there's a pattern to a garden these all exist for a reason and everyone recognizes these patterns everyone you don't need to be a technician to do this everyone can contribute so he builds this notion of patterns and talks about this is for this is one of his displays called an article called the city is not a tree so many of us think of computer systems and trees right we all are a lot of our software a lot of our visualization are in trees he says no they're not trees they're lattices everything is connected to everything so here he is in architecture talking about how things interconnect the same things that were talked about a generation ago about information right and he also notices that if you look in the way cities are arranged or communities arranged there are nodes there are pieces there are connections together and there are little pathways and we should pay attention the pathways it's because of Christopher Alexander we have this phrase what do we say pave the cow path do we know this phrase wait and see where people go see what parts of the system people use create supportive structure around that part don't create the roadways first create the roadways after we see where people go what their patterns are and this affects for instance this is the primary idea behind the IETF the Internet engineering foundation is this notion that we should pave the cow paths follow what people want to do so he identifies patterns for thinking and acting that he says worked for thousands and thousands of years patterns the pattern movement and software goes directly to Christopher's work to Alexander's work about the same time that Alexander is talking about patterns in the way we act and think it's a wonderful wonderful book the design of everyday things originally was called the philosophy of everyday things and Donald Norman uses all this information about the way we interact with the world what what Gibson calls affordances this this affords arresting something on I could stand on it if I was if I was really crazy right it affords all sorts of things so these affordances exist around us every day and he develops several things in this book one of the ones that I really love is this notion of the action lifecycle there's seven stages of action he says we all interact with the world in the exact same way all animals all creatures interact in the world in the same way because of his thinking about interaction and what's usable and what's not and what what affordances do and don't do he becomes really the father of healing computer interaction thinking so here we are in the late late 80s he is talking about this part of his book his huge part of his book it illustrates the way we use the affordance of doorways we know yes right there's a handle I pull there's a bar I push ah but some doors lie right we all know this right so we go pull the handle it doesn't work and then we feel foolish no no we're not foolish that's a bad door right and so Norman gets us to think about how we carry in our head certain expectations and that we should craft items industrial furniture artwork user interfaces to match those things that we carry in our heads so in the head and in the world is very important to Norman so very much like Alexander Norman is talking about how we interact in the world here's here's a picture of his his lifecycle and he has this beautiful idea the the Gulf of execution in the Gulf of evaluation we we decide we decide we want to do something we formulate a goal and our plan in our head we figure out which thing we're going to do next and we do something and then we see what happens we evaluate the results we decide what does that mean and say am I done or should I do something else right this is how the world works but how many of us write our code this way most of us write our code from start to finish the one big group of people who write code this way gamers because they're mimicking the world right this is the way code should work this is the way the web should work many times in in his book he refers to and even the cover is decorated by Jacques Carolyn's objects not found unfindable objects crazy notion this is a fantastic project by an artist here in France 8 he creates detailed drawings of wonderfully exquisitely crafted items that are useless right how many of us work in software an excellently crafted items that no one wants to use right so identify this cycle that we use for interactions so now we had these patterns right from this architect we have this notion of the way we interact with this world from this this usability consultant these all affect what we do today and then I have to mention one of my pals one of my friends one of the people I really enjoy Roy fielding finishes his PhD dissertation on how to design networked software systems most people think his dissertation about it is about this thing called rest now now rest was just the proof of his theory of his idea that we should be designing systems we should be designing distributed information systems based on this notion of of they interact with each other's large systems he's not talking about writing software he's talking about inventing large large systems and I won't go through the details but he has this wonderful quote that I love about how what we transfer and what we perceive is never the thing right we only perceive a representation what our eyes can see at a distance I might see something different than you and if I see you tomorrow are you the same person are you different tomorrow all right we have this notion of identity that we carry with us but actually it's represented differently every day I have a little puppy it grows into a dog it grows into an old pal I keep calling it the same name that's not the same puppy right it's just a representation that I have that I apply identity to all the time and HTTP has actually built on this notion of representations right we don't send you the object we send you a representation of that object he builds an entire system based on this notion this is a wonderful little reduction of his notion of about how to design a system that follows these rules of representation and state transfer I like it not not because it's so easy to understand but because it's so simply drawn he incorporates so many things here about different existing systems and how you pick and choose to create an interaction model in an in an environment that you wish to have which happens to be the one that he wishes over there but his whole paper is about creating environments creating systems of interaction how many of us create systems of interaction most of us simply write code right for this one system he's very disappointed he had hoped that he had taught us how we could build more systems like this here he is explaining not not just the model right this is this is the model here's another wonderful idea there's a model but then there's the thing there's the implementation right so how we implement how things interconnect with each other I'm going to it's not really important that we know what each of those squares are but the idea that things are interconnected how much this looks like the cow paths right in fact fielding quotes Alexander at the end of his about building the timeless way feeling was very much aware of this feeling even talks about affordances in usability in making information usable using the same words that Donald Norman uses so here we are to the last decade right to the beginning of the century now we have all of these materials built up for us he's created this this way for for creating models to create new systems new systems based on this interconnectivity based on these parts based on this good structure of patterns so this is a this is a fantastic generation they've they've given us this is what we use today right these are the things we do today usability studies testing the web HTTP these are all the things that we use every day we want we expect to happen right but these are designed decades ago we need we need more we need new things we need new ideas so I want to talk about a few things this is this is where that gets scary right because okay it's really easy for me to talk about all those things that are 20 years old 30 years 40 years old I want to introduce you to some new people people that I think are doing really incredible things that will affect all of us when we build our enterprise when we build our api's when we create that experience that we were talking about earlier today about how I'm using AP is right interfaces right so I'm going to break a rule the first thing I'm going to talk about is not a person because I think this is an incredible change in the way we interact get invented by Linda's Torvalds the distributed source control management tool but I also want to talk about github github builds on Linda's idea and makes coding social coding social so first Linda's makes source code a lattice right just like Alexander talked about right but github makes it interaction and creates an interactive space like Norman had talked about so I love this quote it doesn't really relate but I wanted to point it out bad programmers worry about code good programmers worry about data structures and their relationships I'm pretty sure he means the data relationships right not the person relationships programmers may not be so good at relationships maybe but I love this idea I love that code now I can interact right so I'm linked I'm linked this is so much like what Vannevar Bush wants to do right now not only do I have ideas that are linked to other people I can see their changes right away and they can make changes and they can improve on what I do a excellent part of the open source movement of the open source concept is this notion that lots and lots of eyes mean that we can find lots and lots of mistakes and fix them quickly right github makes this possible github enables this in a really important way I also love this picture this is usually when you're trying to explain lineage distributed control system to someone you show this picture and it's like lines and jars in blows people's minds away when you try to explain to them how distributed version control system works why because distributed version control is not a tree a city is not a tree and neither is code all right so it's wonderful that they're all interconnected in ways so it gets even worse right so even the explanation of the physics right we have to say oh no no there's a there's a there's a reproduction of of the code in lots and lots of places there is no one central place no no no wait a minute you say in the enterprise no no there has to be one know there are lots and lots of copies that have the same identity right so we've heard this before right for this idea that like as fielding would say they're just representations of the code and everyone has one and everyone can contribute and again when you look at this notion about how distributed version control works and alexander's nodes and Fielding's construction of how to how to design networks they look so similar because they draw on the same ideas the same ideas but they apply them to different things now we're actually applying them to the code to the bits and we're doing code why aren't we doing language why aren't we doing novels why aren't we doing programming why are we doing media right all these things can work in this distributed way all this is yet to be done enable collaborative interaction at distances of both time and space this can sit for weeks and weeks and weeks and someone can contribute and I can leave a note and someone else sees it tomorrow so I can be separated not just by distance you know me and the US and you here in Paris no we separated by time remember that thing last year oh yes it's on github I will get it fantastic space and time collapse okay I want to talk about Ryan da we know this nodejs node I love the idea behind this I don't know that node itself is a coding language that we will talk about generations from now but I think the idea that he has come up with is brilliant the more and more distributed we get the more and more latency the more and more wait time we have in a system right gonna have to communicate I can only it's like well physical properties of going around the world you know what is that 20 milliseconds or something new 10 milliseconds you can't get any faster than that right right now so he decides to build a system that makes that a feature not a bug let's design a system where we can use that latency to do other things all right so for lots of other reasons he decides to use JavaScript as the front-end because there's some free collaborative software that that Google has produced that makes this easy but it could be done anything you could have invented a new language but he's smart he says I don't have time for that I'm just going to take a language that we have I love I love this it's more like C than Python and that's by design this Isaac is is now the the prime committer to node many people think it looks like JavaScript or the thing all its like JavaScript no no no no that's just the paint all right this is the face the interaction is this notion of creating code pieces that will run when they're necessary not creating this big simple top-down structure or this first to last but creating pieces and creating listeners and say yes when this happens do this now right so it's a very interactive system so the site if you haven't haven't installed or played with node I suggest you do it it's very interesting the note idea is very simple I thought I would include this i/o input/output you're doing it wrong if you're waiting Ryan says you're doing it wrong we shouldn't have to wait we have this fantastic world network why are you waiting for a server to answer you or simply do not block write code that doesn't wait that doesn't block that doesn't force someone to do something sequentially and to do it he implements a pattern a pattern that we've known for more than a generation the patterns that were spurred on by Christopher Alexander in this patterns called the reactor pattern wait for events when events happen handle them make changes to the state machine wait for more events simply wait simply wait simply wait wait and do wait and do it's a simple simple simple idea doesn't matter that he writes it in C in the base and it's JavaScript on the top it doesn't matter what matters is he's created this loop and how familiar this loop looks right so he's taking these ideas and he's building a coding system based on that same notion about the Gulf of evaluation in execution what's he done is he's he's improved the Gulf of evaluation he shortened it write executions easy we can write code that runs very fast when it codes and what it does and when it reacts is important that's what he's focused on I think this idea is very very important gamers have been doing this for a long time Ryan's work makes it possible for us in business to start to do the same thing embrace latency as a feature in a network we will have latency let's use it don't complain about it don't try to write code don't try to hide it don't try to add more servers right Oh it'll be better we'll just scale up no no it's part of the system right okay I want to talk about rich Hickey rich is a wonderful brilliant mind creates the language called closure which is very similar in many ways to Ryan's work but also the thing that I'm most impressed with right now is this project called day Tomic a new way to think about data code is data does this sound familiar Linna said right good programmers worry about the data not the code he says either the same even better I love this idea the past doesn't change right so I store like today's weather you know in a box called today's weather and you come by tomorrow and you look inside that box what's in there so what I put in there yesterday so what I put in there today is that the same thing no no the past never changes his ideas brilliant we have to start thinking of data as simply lots and lots of copies each with the shared identity the value at some place not the value this is exactly what that fielding was talking about about representations when I have a puppy alone that my dog grows up that's all the same thing we it's they're different items of what we use the same identity he's building data storage based on this idea this is the website it's a very very interesting project even if you're not a developer even if you're not a programmer reading this and thinking about this is excellent I had a terrible time coming up with visuals for this one how do I show this so what I did is I actually picked a project that he's working on called codec where he's trying to turn get into a useable queryable source I love the idea that he's using yet other we've just talked about yet so he treats repositories not like individual items but as the same identity with different values through time and by doing so we can create all sorts of query tools now that we that are focused on time I I didn't get to talk about a project that I really like that deals with time there's there's someone who has a specification to mark every representation on an internet with a timestamp so that we can query that same address and get all of the collections at that identity all of the stored data at that one location think of what we can do when we learn to think of the world as a time series rather than some bucket that changed because the past doesn't change and again I love how his idea about how to arrange these git repositories look so similar to the the illustrations of git itself again it's not a tree so recognize that every bit of data is immutable what I just said a moment ago is not going to change it's there and we just have lots of copies with shared identity all right I want to talk about one more person I just met him a few months ago and I was completely blown away by Eric's work eric is an architecture PhD student in the left architecture because he was frustrated and he designs these things called cubelets which of these brilliant notions these tiny little things that do just one thing and he gives them to children he's corrupting our youth with this notion of programming without writing any code because what he's done is created all these simple devices that do just one thing and one thing well the UNIX way do one thing do one thing well communicate to each other in text was McIlroy's original idea there's a battery there's a thing that senses brightness and heat there are things that rotate in the sense distance and you construct them they're very simply built each one of them cheaply built very simple because they do just one thing and do an output and accept an input and you can build all sorts of fantastic devices simply by them they run by magnet simply by placing them together and what he's teaching them looks so much if you look at all these components it looks so much like Fielding's notion of a network all these things that could be coupled and decoupled and entered he's built this and he's built it so that our children can create networks create systems and get emergent behavior I don't know what's gonna happen when we put them this way let's find out this is the way life works alright let's find out that's not how we usually script out life is not scripted we'd love it right it's a great story if we could so embrace latency recognize that data is immutable create systems that that allow for emergent behaviors and properties these are the ideas that I think are gonna change what we do in the next twenty years our interfaces need to take these into account if we simply copy what we've done in the past we have a problem alright I'm running out of time I'm on it I want to just go through these last few bits so what is the future hold will we continue to do things imperative lis will we embrace the notion that it's it's an environment a system a latticework not a top-down week until we continue run our organizations as if there's central control will we continue that fiction I'm being told I'm done will we build bigger and bigger machines or we will we leverage these small tiny units let me tell you what I'd like to see the kind of thing that I would like to use in what I would like to work with what I would like to help build systems composed of many small independent units all based on a pattern able to bridge this gulf of execution in valuation not because they're so smart but because they're so small because the Gulf is so tiny widely distributed they exist everywhere there is no one piece of software there are pieces able to work in a collaborative way as a collective whether it's humans or bits of software we can do this we have all this material now all to continue to augment human intellect to continue advance how we interact with each other the things we think about and the things we do but there is no single future a choice is ours who is the next person in my list I'd like to think it's someone in this room thank you very very much thank you

One Comment

  1. Srikanth Reddy said:

    Thanks amundsen, very useful information

    June 29, 2019

Leave a Reply

Your email address will not be published. Required fields are marked *