 I feel very honored to be invited here. Thank you very much. I like two, I think I've seen one, maybe two other people with grey hair here. Last talk I gave a few weeks ago was to a meeting of ophthalmologists, and that was a bunch of much older people. Okay. And a homage here to the fifth elephant. This is the novel, the cover of the novel from which it was taken. And well, actually I'm using this as a connection for a little bit of boasting because Terry Pratchett wrote the book. I am a co-author of a co-author of Terry Pratchett. And I actually signed a publisher contract on my 70th birthday a few weeks ago to publish a science fiction novel with Ian Stewart. And I mention that not just as boasting, but okay, this is a data geeks meeting rather than a graphics geeks meeting. But if anybody has graphics enthusiasm, there is all kinds of stuff that would be fun to build for the website that we're putting together for that novel. Strange things happening on that planet and so forth. So do make contact if you're interested in drawing strange and beautiful things because I have some strange and beautiful things to draw and some to interact with. What I don't have is a budget. You have to just like it. Okay, that is pure digression. I was originally a mathematician and that was my PhD. Back before almost anybody here was born. And I've kind of wandered around the world and the sciences and I've turned into some sort of an engineer. But what I'm going to talk about here is the power of particular mathematical point of view which is that numbers are not just numbers. They belong together in shapes. So what are data? Mostly they're numbers. I know they're fields and things. We've been hearing about that. But then you keep counting them. Lots and lots of it is numbers. But are numbers only numbers? Well, no, they gather together in things. They come in patterns. And really big data is all about the arrangements those things make. Just knowing the numbers, you don't know anything. You've got to know how they fit together. Patterns are shapes. So studying shapes, data shapes, any kind of shapes, space-time shapes, that's geometry. But not the kind that I was doing when I was 13 or 14 years old. Mind you, I had some taste for it and it was quite fun. But it was all flat in the sand, just like that. And here's Euclid stuff with right-angle triangles and fun things. This I remember as a remarkable theorem that I have never, ever, ever, ever seen a use for. It's weird. It's very much something about the plane. It's strange. And I've never encountered it referred to in anything useful since I left school. It's Dysarg's theorem, which is occasionally useful. But everything's so much in the plane. Data shapes don't live mostly in the plane. Geometry doesn't mean that you replace... Now, this, by the way, is highly superior pointer technology. Much better than those twinkling little red things that you lose track of where it's pointing to. And 10% of your audience can't see red. Now, use something serious. So children think in 3D. They think brilliantly in 3D. They naturally work in 3D. They are connecting how their vision is working with their hands. They can reach out and grab your nose. You watch a small child. It's doing a lot of practice at building a 3D model of the world. And then, and these days, that continues in primary school. 100 years ago. But now primary school is good, but secondary schools suck rocks. It's still, if you get any geometry, it's flat, flat stuff. It can get more and more complicated. Yeah. But I just grabbed that off the web as one particular complicated 2D diagram. But fix your mind in 2D. You get to the point where you can't think, well, are the X and Y axes this way or this way? I found my UCLA students, if I switched drawing on the blackboard from this way to that way because something could be seen better that way, what's going on? They couldn't turn it in their heads. Well, data doesn't live in the plane. It's not flat. If we have three variables, we have three dimensions. That might be how far this way, how far this way, and how far up. And if you're doing graphics, it's three very directly spatial dimensions. But if you've just got numbers about people, I look at everybody here. I know their height. Well, I don't know their height, but you guys do because you're big data guys. Know the height, know the weight, know the age. Three numbers, that's a three-dimensional set. And the pattern that you make, that's three-dimensional geometry. But, of course, you typically have a lot more. So you've got n dimensions, and n can be quite big. So you need to think about n dimensions. And there's two ways to do it. One is to turn it all into algebra, which is what people spend a lot of the time doing. And in this talk, I'm only going to talk linear algebra, which doesn't mean it's the only kind there is, but I've only got a few minutes. So before you can practice thinking in 3D and build up insights that help you very seriously in n-dimensional thinking, I took up carving things when I was a grad student because I realized that my mind had been flattened by my high school and my undergraduate. And, ah! No, I needed to loosen up my mind and think in 3D, so I started using my hands. This is the visual part of the brain, this is the motor part of the brain, and the motor cortex just has to be 3D because you've got to pick things up, you've got to twist them, connect it all up. So seriously, for 3D thinking, take up sculpture. So practice thinking in 3D, and the more 3D you can think, the readyer you are to think in other dimensions, general dimensions, but 2D is not enough. So question for you guys. Most people here have done things, are doing things with matrices sometimes, right? What does a matrix even mean? What's it represented? You have told me the data structure. Yeah, yeah, it's an array, this is the data structure, it's an array this way and this way. But, at the level of algebra and geometry, it's something a bit more. It's something that operates on vectors, it transforms vectors, and in particular, there was a rule that they taught me back, I think, first or second year undergraduate of which way you multiply a matrix and a vector, and I swear to you, it took me a year to remember, when I'm multiplying two matrices, do I go along this way or do I go along that way? Because it was just a damn silly rule that came from the algebra book. But, trying to avoid spending too much time on this, you do know the rule most of you, and so if you have this 3 by 3 matrix and apply it to this vector, you get this, which is this column. And if you apply to this vector, you get this column. And if you apply to this vector, you get the last column. Now, 1 0 0 means, let's suppose this is the x direction, x this way. It says anything that is purely in the x direction goes to ACF, wherever that is, which is a three-dimensional vector somewhere. Anything that is in the y direction, like 0 1 0, goes to something else. Specifically, it goes to BDG. And anything that starts vertical goes to CEH. So the matrix is actually a list of vectors. It's saying, where does the first one go? Where does the second one go? And where does the third one go? And believe me, if you're doing 3D computer graphics, understanding that point will make it much easier than anything I've ever seen in an open GL manual of what you ought to be doing. They don't explain matrices very well. It's just a list of where these three things go. And in the case of a rotation, that's particularly tidy, right angles, things at right angles go to things at right angles and so on. But not every matrix is doing something as simple as a rotation, unless you're as simple-minded as an IQ theorist, and they rotate things that they know justification doing. If you remember that, you can always clarify, see more definitely what the algebra is doing, and if you know what the algebra is doing, you can make it drive better code. What should the code be doing? So I'm just going to illustrate this point of view with a very top-down glimpse at some of the things that people do when they've got a lot of data. One of them is principal component analysis. Now, this is very sketchy, very, very 2D. I didn't have time to do wonderful 3D animations. I'm sorry. But I've got this variable. I've got this variable. Put them together. I've got data points which are pairs of variables. And roughly speaking, I can say just looking at this, that is this increases, that increases. But if I want to compress my data, then I rotate my axes. I put an axis along this way and another axis along this way. So it's going to be a matrix that says, this guy goes to there, and this guy goes to there. Finding that matrix, there's chunks of algebra not fitting into this time, but that is the idea of principal component analysis. And if you're applying it to a machine that does wobbles here and here and makes squeaks there and all sorts of things, you've got a lot of numbers and you've got to do the algebra a bit more complicatedly than that 2D picture represents, but that is really what's going on. You're finding the way to move your axes and now if you know where you are on this axis, you know most of what you want to know about a data point. Is it here or is it here? One number. How far along it is? And then you say, well you can expect some errors in that direction, whereas in the previous picture you had to know two directions, two numbers. So principal component analysis is a beautiful technique for information compression, reducing the amount of arbitrariness, handling all sorts of things excellently, as long as things are reasonably linear, which is a very, very big if. Small variations, they're more often linear. That's the whole point of the calculus. The calculus is linear approximation of small changes. But larger systems with more variation be wary they're generally not linear. There's an expression nonlinear mathematics, which is a bit like non-elephant biology. You shouldn't be defining everything else by what it isn't, when what it isn't is so special. Yeah, you look to me like an unusual elephant with some missing teeth and going around on two back legs for some reason. That's not really a good starting point for saying what you do. So there is other mathematics than linear, but linear is very powerful, particularly when variation is reasonably small. And that is the whole idea of principal component analysis. Managing the machinery of it, I know people who spend their entire lives doing nothing but crunching those matrices. There's technique, but you need the idea of how it's all working. Okay, so let's try another thing. How many of you have done linear programming? Okay, what is the geometry in linear programming? Because actually the first course I ever gave back when I was a graduate student, I was told teach these economists from this book. And one of the things they were supposed to learn was linear programming, and it was all matrices, and you pivot this and you squiggle that. Is that the kind of linear programming you had? Right, what the matrices do. Yeah, but what's really going on is what the geometry is doing. So first of all, what does this mean? Suppose this was just x, y, and z. If I put equal to zero, that's a plane. I'm positive on one side, negative on another. I say I've got to be positive. So how would I define a cube? I'd say I've got something that's positive on this side of the cube, something that's positive on that side of the cube. Something that's positive as I go down from the top. Something that's positive as I go up from the bottom with six inequalities, I've got a cube. Same idea in n dimensions, but three is plenty for thinking about this one. 2D figures don't give the magic at all of what you need to do, but the 3D problem does. You see, here is where one of those limiting planes is. Here's where another one meets. So they're doing all kinds of things like this. Inside this polyhedron, you're satisfying all of those constraints. Go outside, cross any one of those planes, you're not. And the algebra problem is that the planes meet in a whole lot of places. It looks like a sort of weird three-dimensional, a hedgehoggy thing. This plane and this plane, they don't meet on the surface, but they meet somewhere here. So you want to make sure that you are staying inside this region. So, about 1950, it becomes the simplex method. And that confused me because simplex is a word that mathematicians use differently. How do you find the highest point on that? Or it could be the most this way point or some other objective function. We can rotate it into this. I'm just looking for the highest point. Visually, let me do that. How do you do that? Well, first thing is find a genuine corner. And very, very often, so this is a genuine corner, it's allowed where some of the things meet. Very often, you pick something that you know is going to be a really terrible solution. You only know that it's allowed. Like, if you're deciding in your factory how many of these to make and how many of these to make and how many of these to make when this needs this much time on that machine and this much time on that machine, all sorts of time and resource allocation things. All of those give you constraints. Well, something that meets all the constraints is to produce absolutely nothing and go fishing. So 0, 0, 0 is usually a genuine allowed point. It's not exactly your best point, but it is an allowed point. So that's just how the simplex method usually gets started. And then you look at the edges that happen there and find which one goes vertically up fastest. Just look at the direction, not the length of it immediately. You say, this is shallow, this is tall. Go up this one. Now, then you calculate and say, where does this one first meet another one of these planes? So this one meets that plane. That doesn't mean that this is the fastest way to go because it might be that a shallower one doesn't meet another plane until higher. But it's a way of choosing that only uses the information that you have here. And you know which planes are involved just here, just three of them in this case, usually n in an n-dimensional problem. So you go up and you're definitely up. And then you do that again. This is the steepest way up from there. And you do that again. And you do that again. And again. And there you are at the top. And worst case analysis says that's an absolutely horrible algorithm but in practice it's pretty good. There are fancier methods but with devious ways of getting faster, but this is not a linear programming class. So this is the example. This is what's going on in Simplex Method. And if you can recognize that in the algebra, then if you're coding Simplex Method, you can see where things are going. So all of that matrix stuff, matrix pivoting and so forth is just playing games with which of the planes you're currently concerning. All of the actual thinking, the hard thinking, the driving idea is geometrical. Okay. So probably more of you use support vector machines and I even saw a wonderful t-shirt this morning said I support vector machines. Okay. Now there are tricks for making the problems of recognizing clusters that don't have linear solutions into problems that do have linear solutions by throwing in a bunch of extra variables, radial basis functions, da, da, da. I won't cover that. I will just talk about the geometrical idea and thinly represent this because I didn't spend the time. I'm sorry, I had a very busy week. I wanted to draw a much more, at least three-dimensional picture, but you have the idea that you want to classify these are the good ones, these are the bad ones. Or the something or other. How do you tell the boys from the girls? Or how do you tell the, you're looking at data about potential immigrants. How do you distinguish the ones who might be terrorists coming to steal your women from the terrorists who might be coming to steal your men? So you've got a lot of data and you've got a lot of samples if you've managed to arrest a lot of those guys and you want to be able to predict for a new one, is it in this bunch or is it in this bunch? And I simply grabbed this picture from Wikipedia just to illustrate that the explanations don't do all that well in saying what's actually going on. In particular, they talk about support vectors by which they mean just individual points by saying really what support means. And support, if I've got this bunch of things, then I can take, how many of you know the convex hull of a bunch of data points? Wave your hands. It's not a test, but I'm interested. A lot more of you should know. It's the smallest convex set that you can fit around. So in this 2D case, this would be a polygon like this, like this, like this, like this. This line is a support line, meaning that everything is on one side of that line in this cluster. Nothing is on that. I can't wiggle the line without breaking that. If I move it this way, then I'm catching a bit too much stuff there. If I move it this way, I'm missing something. Now in 3D, that's a support plane, usually. I've got, here's a bunch of points. I don't have a nice flat surface. Imagine my hand is flat. It can bump against three points, or against three points, or against three points. Those are support planes. And if you take all the support planes, you've got a convex object, rather like the polyhedron that I was drawing for, the simplex method. And choosing among support planes when you've got a huge number of variables, this is just two variables, so it's not much of a deal, but if you've got lots and lots, then trying to find a good plane separating them, you've got numerical horrors in just how fast the problem grows. But you can do better with support planes. So you say, oh well, now if I take this one, that's this far away. If I take this one, this far away. If I take this one, I'm not even separating. So there's tricks for finding the best one. You find a good support plane here, a good support plane here, and then take something nice in the middle. And that is the geometry, the core idea of a support vector machine. Plus, as I say, you need to throw in some nonlinear functions, increase your number of variables, and then do the linear stuff just like I was waving my hands at just now. And I'm in the middle of doing this, applying it in the company where I work. We make machines that look deep into your eyes, and they don't tell you anything about your soul, but they say diabetic retinopathy. They say hypertension. But you've got to make the images well. The manufacturing is a tricky production line issue with lots of places where you could make mistakes. So you want to be checking are the images good at each stage, and you want to have a systematic way of doing that, partly because you want to be a good production engineer, and partly because the certifying authorities like UL and the rest of them, they want to see a process. So you want something very systematic. So produce a lot of good pictures and bad pictures, good and bad in different ways, extract some intelligently thought-of features. But isn't Black Box make the neural network think of things that you can't think of, because your neural networks are much smarter than any artificial neural network I've yet seen? Every one of you is smarter than any current artificial intelligence. And you were when you were this big. In fact, you were solving harder problems when you were mastering human language than any machine has yet done. So apply your intelligence, bring it in. But we extract a bunch of things about contrast and texture measures and entropy and so forth, extract a lot of numbers from a picture, and then we can say, oh yeah, this one belongs in the bad focus area, that one belongs in the uneven illumination area, and so on, and we can give feedback on quality of that image and manage our process much better. So classification is a very, very nice thing, and this is one of the cute ways to do it. And the way that it was invented and the way that it is guided, code doesn't tell you geometry, but the idea driving everything is geometry. The geometry drives the algebra. Yeah. That was the question I just answered. I got out of phase with my clicks and you kind of roll around and it's not too different in feeling from the simplex method. So geometry organizes what the algebra needs to solve, needs to do. The algebra on its own is a tool that geometry sets the tasks. Algebra, which often means linear algebra, but don't fall into the trap of thinking everything is linear just because that was what your classes were in, it organizes what the code needs to do. And planning your code needs algebra. I mean algebraic understanding. What are you trying to do? Computers don't... Well, they don't think actually. I mean, I know some of you guys are saying artificial intelligence and they're getting a little closer to thinking, but in particular, they think very, very poorly about shapes. And shapes... Well, sorry, I'm a geometer. Some of my best friends are algebraists but I wouldn't want my wife to marry one. To me, mathematics begins with a sense of shape. Back before we were humans, we were aware of round things and long things, long time before we were counting things. Deep in our brain is geometry and I don't mean that everything is set theory. I mean everything is shape and we have shape recognizers in here. It's driven by geometry and early mathematics was highly geometrical. I know that more about the Greeks than I know about the Vedic mathematics but there was plenty, plenty there. Then it turned into algebra and Vedic is very algorithmic whereas the Greeks like to prove that something is always true but the geometry comes first. Then the algebra manages what the geometry needs to do and bugs... Now, some bugs come because you have done something that at the coding level is dumb. Well, no, let me change pronoun. Bugs come because something I have done at the coding level is dumb. I'm very good at programming errors. And also there is a private belief of mine which I don't require you to accept. In fact, I don't require to accept any of this but I have a private belief. All of you program so you have all experienced how stupid computers are. Not everybody realises that computers are so stupid that they generate a stupidity field of a radius of maybe five or ten metres and so the longer you sit by the computer trying to fix a bug the more you try... Well, let's try this, try that... I don't see what... Eventually you say pasta! I can't do any more of this today. I'm done. I spent four hours fighting this what should be a tiny bug and you cannot get it to do right now. I'm going home, I'm going to get supper, I'm going to get good night's sleep, I'll attack this in the morning and you walk away from the computer and by the time you have gone five or ten metres you are saying how could I possibly have been so stupid for four solid hours? Well, it's the stupidity field seeping into you, right? You need to get out of it sometimes and even if you don't believe in the stupidity field you should take a programming break now and then. So some bugs come from coding wrong as such but some bugs come from what you're implementing at the algebraic level has a mistake in the algebra. So to get it to work right you need to understand the algebra and some bugs come because you got the geometry right and turned the geometry wrong and turned that into algebra correctly but it's not the right answer because you got the geometry wrong. So there's no guarantee where your problem is there's all sorts of things of chasing it but you have to try to think at all these different levels plus of course all the stuff that this conference is mostly about which is how do you manage just humongous collections of data and so forth I'm not trying to claim that this is the core of all packing and data management things but I'm saying this is a part of all this that you need to be thinking about or at least somebody needs to be thinking about this is what teams are about I know user interaction needs thinking about how is the user feeling about this what's the user's workflow what's the user's mind flow and some people are good at that some people are bad at that that's cool you can be good at different things but when somebody who really believes that zeros and ones are easier to understand than people gets the job of designing a front end for a web application you're not going to get a good web application you need a good designer that doesn't mean necessarily somebody with a qualification in UI design some people are just naturally good at it but some people they should be doing the back end and they may be genius at doing the back end if the spec of what is to be supported has been worked out by somebody thinking at the human end there's a nice story of pretty much the original personal digital assistant the nouns are escaping me I seriously will forget my own name next anyway PDA and it'll come back to me just too late and what he did to design it was to make himself a piece of wood about the shape of the instrument that he wanted a bit like a modern smartphone but a bit heavier he walks around carrying this piece of wood and pretending that he had an electronic digital instrument and imagining his own interaction with it what did he want to do, how did he want to do it and after imaginatively getting himself into that for two weeks he sat down and wrote a spec and told the engineers he was CEO so he could tell them that make it like this and so they sat down and of course coming back to him all the time saying hey wouldn't it be cool to have this feature wouldn't it be neat if we could do this and he said no do it like I said because that massive features each individual feature might be wonderful but the mass will confuse the user here's a thing from medical software there's all kinds of stuff for looking at medical images and dealing with medical data and it usually comes with a manual now what happens when this first gets installed somewhere is one brave doctor plays with it understands the manual as best he can or she can figures out yes I can do this that I want to do if I do x y I can do this if I do y z and writes down a cheat sheet this is how you do this, this is how you do that this is how you do that and shares it and that replaces the manual for most users they just have do this, don't know why it works but somebody figured out and it does produce the effect even if it's the equivalent of standing on one leg while singing but getting a transparent easy user interface is a special skill so not everybody has to do everything because some people are better at one kind of stuff than others but between you you should be thinking at all levels so if you're a brilliant coder but you don't find yourself thinking geometrically try and get a team member who thinks more at the mathematical level if you're like me I do think geometrically and I can handle algebra as long as I give it a geometric meaning but I am one of the world's worst programmers so I work with people who code much better than I do make teams and learn just enough at least to identify if you're mainly a coder who are good at the mathematical end of thinking or if you're more of the theoretician, more of the abstract nature of the information thinker learn who's a good coder and respect them so either as an individual or as a constructed team think at all these different levels and plus all of the stuff that has been and is being mentioned in these three days honor to the fifth elephant Thank you. Do we have any questions? Tim, I think the name you were trying to recall was Jeff Hawkins I'm sorry? The name you were trying to recall the inventor of the PDA, Jeff Hawkins, right? You were trying to recall his name? Ah, sorry Yes, you say? The inventor of the PDA, Jeff Hawkins Yeah, and what was the PDA's The Palm Pilot? Palm Pilot, yes Yeah, this is one of the well, actually I got into mathematics because I had a lousy memory in the first place I mean that quite seriously at high school, I was always fascinated in science when I was this big I had fantasies about extracting colored paint from rainbows and other practical ideas and I had a chemistry set when I was a bit bigger and you could pour this colorless liquid into that colorless liquid and oh, it turned blue but now why did it turn blue? My chemistry set little book didn't tell me anything it just said you can do this, you can do this why, kind of mine? So the secondary school I went to went for the interview there and I said oh, chemilabs, I'm going to learn chemistry I'm going to learn this stuff benches and these graceful taps they have in their chemistry labs and then the entire first year at that school they weren't actually teaching me chemistry so I started in the next year so I kept on going past the chemilabs and then it started and they wanted me to remember the difference between ferrous iron and ferric iron which have different valences they wanted me to remember this and this and this and this which was as difficult as remembering the date of the battle of Pondicherry or if you forgot it, not a hope but at the same time they started to teach me some physics and I discovered that in physics I could remember a bit less and think through a bit more and then gradually realized that this was actually all about the mathematics and in the mathematics I could remember least and think most like that weird formula cosine of x plus y is equal to cos cos minus sine sine took me a ridiculous amount of time to learn that and I had to revise it because I knew it was going to be an exam where I couldn't have my book now I realized that all it really means it's the component parts the sine and cosine addition formulas they're the parts of rotate through x rotate through y gives you the same result as rotating through x plus y and if you understand what the matrices are doing what I was telling you where does the vector go all of this is obvious so I can rebuild it in my head so you're looking at somebody who had a memory leak 50 years ago and I don't think I've got early onset Alzheimer's but certainly I'm getting the typically aging effect of it is getting harder and harder I remember substantive nouns even in my own area of expertise so I just have to face the embarrassment of that and thank you very much yes palm pilot and Jeff Hawkins thank you I have a question the multi here the multidimensional the multidimensional model in the data warehouse in a data warehouse multidimensional cube is that what you're talking about the geometry in data so it's arbitrarily many dimensions a dimension just means something you can measure if you identify as a mathematician in social life then at parties well actually at parties in India people will ask you what you think about Vedic mathematics it's the default question to mathematicians but anywhere else in the world they will say what is the fourth dimension and well I have a short answer if I'm trying to get to the food and a longer answer if I think this person looks interesting to talk to the first answer short one is I will point in the direction of the first dimension if you point in the direction of the first they don't come numbered it's just how many different ways can something vary and the mechanical engineering usage of the word this is a dimension of the object and this is a dimension of the object and the diameter of this hole through it is a dimension of the object so you get 10 numbers specifying it 10 dimensions to the perfectly reasonable engineer usage of that word but then if the person is more attractive interesting or you want to learn something about them in other ways you say well the first dimension is waste measurement the example I gave you could have height and weight then you make a scatterplot everybody's done scatterplots right so you got the planar scatterplot height against weight and they roughly go together although you can have the same height and different weights or you could have the same weight and be different heights but they sort of go together then with age in there let's take say age against height then okay age this way height this way everybody starts fairly small in both ones so you've got a cloud of point coming up like this increasing age increasing height it levels off and you've got a cloud that goes like this and if you've got a population like say South Korea where in the last half a century nutrition has gone up then you find oh the older people are pretty small the older people are foot taller the younger people are foot taller than the really old ones but if it's a static population it looks more like this it's a cloud in 2D at weight becomes cloud in 3D you have age you have height and you have weight and this cloud comes up they all three increased together now you've got somebody about 20 they're not getting any taller they are getting older and they get most of them get steadily heavier so the cloud goes out that way but it's got thickness in all directions and by the way it's non-linear it's going up and then it's going along another thing so three dimensional situation okay now I collect one more number I bring along a tape measure I put it around you I get a rather small number I would guess that's a fourth way to vary but it's exactly the same sort of thing I've got a collection of four tuples of numbers that is a four dimensional space so in that one the fourth dimension is not time it's not anything mystical it's just how many centimeters around the middle of you four dimensional means something much more than oh wow I've got an extra direction four dimensional is how the shapes go three dimensional is can I turn in more ways than just going plane geometry leads you to wrong insights not that they're wrong about plane geometry but expecting relationships to look like pictures in the plane misleads you as to what relationships between data can be you need to think in at least three dimensions and you need to take up 3D thinking as a kind of this is the closest you can get to thinking in 4D or 70 or 500 dimensions because you've got that many numbers thank you so well we'll stop whenever the question stop coming one addition to what you said and one question the addition is that again I started off most of the young engineers here not liking the math or I started hating the math at one point when the algebra got to me and I couldn't make sense of it and today I do computer vision as a living and I do 3D geometry or all things related to those things and even graphs and whole bunch of things and today but I see it in a completely different light and I given those intuitions I'm able to connect to the equation so I guess what I want to leave the thought here is if there are people here who are afraid of the math there are more interesting things that you can come back and connect so don't worry about it and please meet people like Tim or others and online courses maybe in order to go ahead the second I guess is a question this is regarding again about programming you were saying you know there are three levels of debugging you know from specific things going all the way broader now in that context I guess I'm curious to know what your thought process is on how say categories as in category theory connects to programming especially given the connections of you know connections of category theory into programming languages like Haskell or other functional programming which is used today well I cannot speak well for the big data language manipulation things I have not built experience in that but let me give you an example from a simulation problem somebody a student at University of Singapore working on a thread manipulation simulator for doing virtual surgery so you have forceps and you're pulling this fine nylon thread around and how does that shape go it's very tricky to do this game in real life because you're trying with one pair of forceps often with very tiny little threads you're trying to tie a knot in it so you've got to make a loop happen and then pull something through so it's not just how do you make it go through the flesh it's how do you make it how do you make the nylon dance and she was getting places where the algorithm went unstable and she was trying different things at the coding level and I looked at that and I said you are in a place where you're going to get a zero eigenvalue one year close to it how many of you heard of eigenvalues okay how many of you feel you can explain eigenvalues okay but that would take another talk we don't have time but the thing is that I know because of my mathematics and I mentioned Ian Stewart my co-author of the science fiction thing the book that we published a long time ago it's called catastrophe theory about how you connect calculus of things that are changing in nonlinear ways and suddenly jump to you could recognize yeah here is the direction in the linear approximation to the nonlinear thing that is going on and where this becomes degenerate you can expect other things to happen and but if you look carefully along that direction you can write a very economical algebraic algorithm that you can then code run in real time enough for haptics force feedback which needs 1000 returns per second so your calculations are better be fast the theory got rid of that oscillation it was not at the coding level it was at the level of understanding the mathematics of elasticity and the nature of how that looking for what the equilibrium would be actually worked I can't give you an example from everybody's field but that's one from my own personal experience