thoughts about mathematics and an enormous influence on mathematics in general. He passed away last August, and after he died I was asked to give a colloquium talk about his work at the University of Maryland and since then I've been studying some of his work and his thoughts about mathematics and that's what I'd like to present at this time. So let me briefly describe and give a biography of him. So Thursday he was born here in Washington D.C. in 1946 and grew up in Wheaton, Maryland. He went to college in New College in Sarasota, Florida and then in 1972 earned a PhD from the University of California Berkeley. At this point he was really revolutionizing mathematics in a big way and described a little bit of this later in the talk. Two years later in 1974 he was appointed a full professor at Princeton a good deal of charade at the age of 28. I met him after I was an undergraduate at Princeton and at Princeton University I had a tradition of encouraging undergraduate research and the senior thesis is a very big thing there and I was looking for something to work on for a senior thesis where the professor said, well we just hired this new guy that might be an interesting person to work with and they were right and I don't know. Started working with him my last two years as an undergraduate and wrote my senior thesis with him. He encouraged me to go to graduate school at Berkeley which is what I did. I ended up working with this thesis advisor, Mo Hirsch and when I finished he and Dennis Sullivan spent the academic year in 1981 of post-doc. So after a self-imposed exile to Berkeley I worked with him my last two years as an undergraduate at post-doc. After that in 1982 he was awarded a PhD. Somewhat later he had always been very much involved in experimentation in mathematics. I remember when I first met him I went to his office in Princeton in 1975 and he had this little calcomp plotter growing some incredible pictures and asked what it was and he said, will you take him to the irrational slow coagulation on a torus and apply the virus for us p-function? It makes a lot of sense now that he had always been involved in and was aware that technology could be used to visualize geometric phenomena and around 1990 he was instrumental in setting up the Geometry Center in Minnesota. So this was, I don't know if these things exist anymore but it was a Science and Technology Center and this was the one NSF-funded Science and Technology Center in mathematics. Later it unfortunately closed around 1995. Around that in 1991 he moved to California back to Berkeley as in 1993 he became the director at ISRI and a few years later he moved to the University of California, Davis and a few years later he moved to... I mentioned the Fields Medal that he won a number of other awards such as the Bevelum Prize in Geometry and last year, about a year ago, it was like meetings, 2012 it was more... So in this talk I'd like to describe some of his mathematical contributions I think that the, more than just the theorems that he proved and the ideals that he generated their whole approach to mathematics influenced and I, in researching this talk I was led to look at a very interesting paper that I recommended in 1994 in the full of the AMS article about on progress and proof and some of it is explaining what he thinks we're doing as mathematicians and this was in response to a controversial article by Jackie and Quinn about theoretical mathematics and lack of rigor and the harms of lack of rigor and one paragraph is directed to Thurston and his lack of rigor and part of the article is to say that the questions that they're raising are not really the right questions and what we're doing as mathematics and the first part of the article describes what it is and his idea is what we're doing as mathematicians and he says that the, there's just a statement how do mathematicians advance the human understanding of mathematics I think it's very interesting reading this and I recommend it the second part of the article is somewhat autobiographical and it talks about his experience in the areas that he studied so I'm not going to be able to describe in a short talk all the different contributions that he's made and I'm not confident to do that anyway but what I would like to talk about in sort of the historical order I'll tell you what I'm not going to talk about the first subject that he worked on was falliation theory answered the main questions that no one was even close to looking at this was done maybe up until by 1975 and I was given work that awarded him to a professorship in Princeton I was reading the papers when I started working with him that it didn't seem like anybody else was reading and the papers aren't that easy to read and they were sort of the end of the story and he addresses this in his article that people were congratulating for killing off the field that he had solved these problems that nobody else had thought about might be true and rather than trying to digest the ideas they left the field and eventually he had no one to talk to about the subject he left the field and remarks that more people knew about the subject of falliation in 1975 than they do now probably even more true now and I think this was maybe an interesting reflection on the self-destructive aspects of our profession the successes to kill the field and comments in the article how people were congratulating killing the field destroying jobs well he was more successful at creating jobs in the next two areas and so when I started working with him in 1975 he was giving a course on surface morphisms and two-dimensional topology and as a student interested in topology at the time people said well everything's known in one dimension and two dimensions nobody knows anything that's three dimensions but everything was enough there's a very successful theory of classifying manifolds in higher dimensions so first we showed that in dimensions one and two there's actually a very rich structure that hadn't really been addressed until 1997 so I'll say something about the theory of surface dipmorphisms which really led to an explosion relating two-dimensional topology and dynamical systems Riemann's surface theory and type-morph theory the following year I mentioned three and gave a course on three manifolds and in particular geometric structures on three manifolds and the most interesting geometric structures and these were things that he had been looking at since he was an undergraduate a new college there were three manifolds that had a hyperbolic geometry on them a hyperbolic three manifolds at the beginning of the course he described a notion of geometric structure which is locally homogeneous geometric structure these were the study of which really began to bear a spawn in the 1930s and these were ways of putting a geometry on a topological manifold where the coordinate charts map into a certain geometry like a hyperbolic geometry or euclidean geometry and as you go from one coordinate system to the next one system of local coordinates to overlapping local coordinates then the coordinate change is given by an automorphism of the geometry and this is the context and he said that there were going to be eight geometries which would be useful for studying three manifolds and conjectured that every three manifolds would be canonically decomposed into geometric pieces and I think maybe this most significant mathematical contribution would be the geometry geometricization of the injection which was recently proved to be a curl and I think it's maybe significant that the most significant achievement is actually the injection it's the open-endedness of our subject okay so these are the topics that I will discuss in this talk but they're just a small amount of number of things that I'm using so as I mentioned the theory of surfaces in three manifolds and hyperbolic geometry were very closely related to Riemann surfaces and modulated Riemann surfaces which is called typular theory about the same time as this was in the late 70s there are some remarkable developments in homomorphic dynamical systems and some of the ideas that were used in geometries are geometries in three manifolds and applications and analogs in complex dynamics I mentioned also that at the same time in the late 70s he was working with millen around a one-dimensional in topology the most important invariant of a two-dimensional space or three-dimensional space is its fundamental group and the universal covering space of a manifold looks like the fundamental group manifolds compact and the subject of combinatorial group theory say groups given by generators and relations acquired a new geometric flavor by through the work of Thurston and Gromov and the subject was renamed or renovated which is now called geometric group theory to which Thurston had a major influence before the geometry center represented an effort to institutionalize and really develop them visualization tools in a significant way at the geometry center they produced two videotapes which I highly recommend classics because I don't think anything like that will be produced now you can find them on YouTube Thurston really liked puns and the first one is called knot knot and it describes the hyperbolic geometry of a knot a knot is an embedded circle in the three-spaces and so the confine of a knot is what's knot in the knot and is the subject of this videotape it's a little bit strange because it doesn't really have it's unclear what the audience is so it starts at a very low level and in about 20 minutes into the talk you're gliding through a tessellation of hyperbolic three-spaces and somewhere it accelerates it's well worth looking at it was followed by another videotape also on YouTube called outside in which animates any version of the sphere that he came up with amazing picture of how you take the sphere and turn it inside out through a regular homotopy of inversions in three-spaces his efforts in visualization I remember I got involved in visualization after many years of post-op involvement I had been studying geometric structures on manifolds and in particular projective structures and really wanted to know what they looked like I realized at the time that it was going to be a big time sink to work since I had never done a computer programming before and it turned out to be a big time sink but I think it was very useful but I remember a discussion with one of my colleagues who said, oh this is very interesting they saw these pictures of things on the boundary of complex hyperbolic space but it's not really mathematics and it wasn't really rigorous mathematics but it certainly developed an intuition and it communicated some mathematical ideas and I think it really is mathematics but it wasn't a traditional theorem or proof and people would ask, well does it help you prove theorems? I never really was sure if that was the case or not because you don't really have anything to test against but it certainly developed intuition and it was a form of communicating mathematics and I think Thurston's realization that these are valid forms of mathematical expression was very much related to his interest in education and outreach about the time that he was involved in the Geometry Center he had developed a course with several other people called Geometry and the Imagination named after Albert and Conebossa by that name and as far as teaching and disseminating mathematics I might mention what I want the relationship of mathematics and art and last summer I went to the one day at the Bridges Conference in Tannisland and saw lots of interesting examples of things related to hyperbolic geometry and things made with three dimensional printers pretty amazing objects, you can see hyperbolic geometry dresses crochets that are made in hyperbolic geometry and it's probably easy to find these things by searching on the web and most recently, around 2010 working with the Japanese fashion designer applied ideas of geometrization and the eight geometries to fashion design and there's a nice article by Kelly Delpin in Math Horizons last summer that describes mathematics and fashion design some of these are some of the things that I will and won't talk about yes, so maybe I should emphasize the geometric group theory and visualization were really part of another major contribution that he made and that's the relationship of mathematics and computer science and the geometries which I'll say a little bit later in the talk all correspond to different kinds of combinatorial configurations and networks and there are some very interesting papers about using different kinds of geometries to model communications and in geometric group theory a group is a group given by generators of relations that's raised to a graph it's clearly a graph of a group and the combinatorial properties of that correspond to certain properties of the network and that's what I'm talking about computer science so let me say a little bit about how he first came on the scene in studying topology so algebraic topology maybe to be said to be done in the late 19th century worked upon karate and others and the techniques of algebraic topology led to certain invariance of spacelessness one would have the naive hope of using these invariance to classify spaces they have to homeomorphism so for example you might take a surface and then decompose it into pieces that were like triangles such a decomposition is called the triangulation and the simplest example so you'd have a triangulation so a manifold is a space that at every point it has a neighborhood which is homeomorphic to an Euclidean space that every point has Euclidean local coordinates and a triangulation would be a decomposition the simplices are very simple zero dimensional simplices are just points one dimensional simplices are line segments two dimensional simplices are three dimensional simplices would be tetrahedron etc and the simplest example of an algebraic topological invariant would be the order characteristic which in the case of the surface would be the number of vertices number of zero dimensional simplices minus the number of n-1 plus the symmetry for a closed orientable surface say if the surface has genus J and this is a complete invariant of homeomorphism well, the theory developed in the next hundred years and by 1970 it was known that these invariants generalizing the order characteristics led to invariants that could classify manifolds so the precise statement that these could classify closed, we assume that the fundamental truth is finite set of invariants that could classify these manifolds up to homeomorphism and this was the culmination of a great deal of work so very little was known at that time in dimensions three and four mentioned to it and settled much earlier things were very complicated because the fundamental group could be but if you assume that the fundamental group was a finite group then you wanted to know if that's were badly enough and had some very good algebraic colleagues that you could ask to compute various groups with one could effectively classify manifolds under these conditions and so this was sort of the situation of geometric policy around 1970 and so people wanted to who were looking for other subjects to to work on them more geometrically minded ones that often went into subjects like dynamic systems one of the major results that led to this huge success story in topology was the age cohortism fear of male which was enough to prove that the Tom Craig conjectured into the Bivenberger and I think around the time that Smale did that he thought that very interesting problems really were more in dynamical systems and trying to predict what he would have under an arbitrary homomorphism so in the 1960s there was an American school of dynamical systems developed and this was in some sense the context in which there were struggles sort of halfway between dynamical systems one example would be a vector field on a manifold so you might imagine at every point there's a direction that's specific and this gives rise to a flow an action of the real numbers by the homomorphism so you sort of take a point and you move it in the direction of the arrow and if you assume that this vector field has no zero then the trajectories fill up the amount so at every point it has a neighborhood which is filled up by these submetals in this case there's one dimensional and submetals are curves and this picture is what is a special case of a general object of geometry called a foliation so a foliation is a decomposition of a manifold into submetals just locally a manifold locally looks like Rn and the foliation locally looks like a decomposition of Rn and our co-dimension n-minus and these things exist in many natural situations and in particular some of the most interesting dynamical systems the Smale and the Nossoff and Sinai had studied generalizing the geodesic flows on negatives remodeling manifolds which hyperbolic manifolds in a special case which is very interesting in differential geometry one has a flat connection one gets a foliation degree complicated and interesting and so many questions that have been studied for manifolds could be then applied with a sort of dynamical aspect to study foliations and so the main thing when it's building the characteristic class theory was a classifying space the space that represented all possible kinds of topological behavior and the thing like the tangent bundle of a manifold could be understood in terms of maps into a classifying space so in this standard case this would correspond to a gross bond using the Gauss map where the tangent plane to a manifold lives well, Hefliger found a similar classifying space for foliations called the gamma and a foliation would have a classifying map which would be in the end of this very large space and the invariance the analog of characteristics of manifold were characteristics of foliations and there were some various examples of this constructed Thurston's first remarkable achievement was in studying foliations of the three sphere it's not immediately obvious that the three sphere can be foliated when divided up into surfaces that are all parallel if you know how to do it if you're down then it's challenging and he showed that there were so many foliations of the three sphere and his construction used hyperbolic geometry in an essential way he showed there were so many foliations of the three sphere that the third Hohmann-Tulbe group which was a group constructed out of maps from three spheres of the Hefliger classifying space so this is like a gross monion I think it is a nice infinite dimensional space should have to build out of lots of cells and this group which is usually going to be a finite regenerative helium group has a surjective homomorphism under the additive group of real numbers so it's really enormous so this result which he proved as a graduate student attracted a lot of attention his thesis concerned foliations of three manifolds also I won't say too much about it except that it has I think the most useless bibliographic reference that I can think of he references in his thesis W. Thurston Personal Communication so it's not particularly useful unless you happen to be there when you're talking to himself and I'm not sure I recommend this graduate students writing thesis so they don't get any ideas and anyway shortly thereafter he as a post-authent the institution for advanced study he showed the theorem through the following theorem I want I want to give the full generality just stated in two-dimension one so those of you who have a closed n-manifold now if you have a co-dimension one foliation if you foliate a manifold by hyper-surfaces of sub-manifolds of dimension n-1 then at every point you can take the normal line you give the manifold metric in that talk about the normal line and you pass to a covering space assume that that normal line field is orientable and get a vector field and so you get a vector field so the Euler characteristic has to be 0 if it has a co-dimension one if it has a the decomposed into n-1 dimensional sub-manifolds in a nice standard way first to show that the complex is true that this mild is actually sufficient up to that time many people were constructing examples of foliations of manifolds using things like open book decompositions and very beautiful ways of exploiting symmetry and very special constructions that didn't look like we would deal with the arbitrary n-dimensional manifold but Thurston showed that any manifold means relatively weak hypothesis did have this kind of structure let me say a little bit about the idea of a proof he with an assumption like this there isn't a whole lot to work with so he says trying to like the manifold divided up into simplices like we were discussing before and when you divide it up into simplices you can well, look at the foliation on the simplex so in the paper he draws this amazing picture a big bunch of leaves, foliation he actually puts a tree with branches, a trunk to illustrate the leaves and the important thing is to make sure that the leaves are all transverse to the faces of the simplex so he then has to adjust the foliation in the simplex so that it matches up on the boundary so the Heffler structures, the maps into the classifying space, they would correspond to foliation that it would have certain singularities so the first step is to make sure that it's actually a real foliation near the boundary which is not hard to do and then you get the singularities inside that you want to get rid of so he sort of projects that so he called the first step civilization something this picture of the tree with lots of leaves he shows how to civilize and then you sort of push it out to the boundary and that's what he called inflation and the main element in this paper is the civilization leads to inflation so this is the paper on foliation which would be that model if I could give this theorem well I think from colleagues working in the subject at that time people were intimidated by him and he left they started moving away from the field the papers that he wrote in this period I don't think there have been too many papers following up and it always struck me as being a bit strange that amazing ideas that solved problems that nobody was even close to seem to have gotten lost and he addresses that in 1994 so that destroyed jobs jobs were created in his later work on two manifolds three manifolds involved in this subject he was interested he was interested in a simple problem earthiness a sense of humor for Karen through all of this I didn't prepare any this talks on very high tech but if you look in the previous issue of the bulletin of the AMS there's a photograph and I'll just pass this around of a mural it's been in Heaven's Hall in Berkeley made before up until maybe seven years ago or so on the seventh floor there was a big mural that was painted of a really long simple closed curve on this surface and the discussion that he gave was that you imagine transforming the surface this is a disc with three holes removed the curve isn't by taking these two discs and moving them around followed by these two discs and so this first curve does it this curve that I drew doesn't get affected by that but then when you wrap it around like that then you get a longer curve you can see that on the last page when you imagine iterating this procedure and the fact that the curve doesn't intersect itself is preserved under this transformation under this homomorphism if it doesn't intersect itself and it's getting longer and longer then it's going to be following strands that are almost nearly parallel and in the limit what does it look like? in the limit it looks like a foliation having understood foliation so well and understanding some of the phenomenon occurring in an also dynamical systems he was led to develop a space 1975-76 this was the space of major foliation which was a kind of completion of the set of simple closed curves and now when I say simple I mean a curve that doesn't intersect itself the point is that simple closed curves can be quite complicated because as an example like this shows that they can wrap around many many times but they need to be very tightly constrained if they don't cross themselves and for example the simple closed curves on the torus these can be determined by their homology class they correspond to relatively prime pairs of integers and relatively prime pairs of integers of course correspond to rational numbers and how do you complete a continuous object completing the rational numbers while you take the real numbers and so the general picture that Burschen gets is you take a simple closed curve corresponding to a rational number p over q in reduced form is obtained by taking a curve on the square so the torus will be a plane with an integer lattice and then take a curve that has slope p over q and it will be a curve that goes around in the x direction p times or q times and in the y direction p times the p and q relatively prime the first curve you take will be simple and with the completion we'll let p and q be rational numbers approaching an irrational number that will correspond to a fulliation of the torus the square is identified by lines of that arbitrary irrational slope and I won't go into the details but Burschen showed that a similar picture existed for surfaces of higher genus and developed a space on which the morphism group of the surface active and this gave a normal form for a surface homomorphism group of dif-demorphisms of the surface homomorphisms of the surface Mondoisotope component in this space is a very important mathematical object called the mapping class group the structure group of the polynomial algebraic properties of the mapping class group are very important in studying dimension 3 and dimension 4 and using this theory he showed that gave a normal form for the element of the mapping class group his interest turned or began to concentrate in dimension 3 anyone that can know examples of what 3-manipals look like and I think this is the most lasting intellectual contribution picture of 3-manipals that he developed in the late 70's has turned out to be an accurate one and many of the conjectures that were made in the late 70's have since been proved in the work of many mathematicians in 1976 he just wanted to see what interesting examples would be so not compliments for one another example you might get would be from reflection groups and so say a little bit about what happened in the fall of 1976 you might take a polygon or a polyhedron and then look at say a group generated by reflections in the faces so for example you could take an equilateral triangle and start reflecting the equilateral triangle on its side and then you get a tiling and imagine doing the same thing in higher dimensions and imagine doing the same thing in other geometries such as spherical geometry so for example if you take a sphere you can chop it up into 8 spherical geometry and this corresponds to the 8 octets R3 and then get a finite group of reflection generated by the sides and in hyperbolic space you have even more freedom to build a polygon so in order to formulate conjectures one really needs a good supply of examples to test them against and this is a good way of doing that and he wanted to talk about a more general object which is going to be a manifold to the manifold quotient by one of these groups so you might imagine taking the plane its quotient by the group generated by reflections a fundamental domain is the triangle but the boundary and the vertices of the triangle have special significance so here you have it looks like a half plane and here it looks like a sector of 60 degrees and so these are sort of like manifolds that are folded up and when it developed a theory a folded up manifold so in the course of about a week people were talking about manifold debts to make sure that they were knew that they were talking about manifold debts rather than manifolds that they would fold it up manifold and that became somewhat objectionable so he then proposed that a new name a full name I don't know if that was much of an improvement and eventually after the enough disgruntlement it was decided to open it up since this is a democracy and we had a vote and the winner of the name was Horvathol which has now become quite standard this is a manifold which is locally in orbit space and the geometrization picture that he had maybe started with understanding some of these examples so let me close with the statement of what geometrization is and the picture of three manifolds the dimension two we have the Euler character it's a single term so we have Euler character plus two and the two sphere has euclidean geometry spherical next value of the Euler character is the Euler and the Taurus and the Taurus is represented by a square that's on opposite sides identified and that is right so we're euclidean geometry on the Taurus and then once the Euler character is negative you get much more veridation you get surfaces of higher genus and they all have hyperbolic geometry 19th century and so the geometrization of two manifolds is into these three three flavors well three manifolds are more complicated and another threat which Thurston united was the existing three dimensional topology it was known that every three manifold could be decomposed along two spheres so as you can see two spheres in Tauri are special among surfaces so you can imagine taking some three dimensional manifold and then connecting it up to another three manifold inside that two would be a two dimensional sphere this was a notion of connected sum you remove one from another and then glue the components together and Knazer and Milner showed that every three manifold could be uniquely decomposed as a connected sum so it makes sense to look at ones that can't be decomposed much later in fact in the 1970s it was shown that there was a similar decomposition along Tauri so this is the work of Jacob Shale and Neil Hansen J decomposition which is a decomposition along Tauri condition on the Taurus so first of all once you decompose along the Taurus there are lots of ways of filling it in with a two sphere boundary there's only one way to do it but for a Taurus there are lots of ways of filling it in with a solid Taurus so we want to look at three manifolds that are not necessarily closed but the boundary is a union of Tauri and then once you decompose along Tauri make sure that this was in a certain sense the geometrization conjecture of Thurston conjecture of Michaelon remaining pieces so it's more complicated than in Dimension 2 where every surface has a geometric structure one of these three types of geometry now you have to decompose it along a very specific way into various pieces in three dimensions it's more complicated than two dimensions here there are only three geometries in Dimension 3 there are eight geometries just list them three sphere with a spherical geometry and the Poincare conjecture can be stated that every three manifold that should have a spherical structure that has a finite fundamental loop is a quotient of the three sphere so this is the setting for Poincare conjecture there are also three manifolds that look like two manifolds like S2 process 1 this does a different geometry these are sort of forms that have some positive curvature the ones that correspond including a manifold potions are three by lattices and then potions of those there are only finitely many topological types grouped by your Biberlauch in the early 20th century there are some twisted versions from manifolds to potions by Milford Milford and Lee groups also some rather interesting three manifolds that are obtained by taking a hyperbolic automorphism of the torus an integer matrix that has real distinct eigenvalues look at the corresponding map of the torus to itself and then take a suspension of that an interesting geometry solved geometry basically well understood and then you have hyperbolic three space I'll put that down here because the picture should really look like this but most three manifolds should be hyperbolic then there were two geometries that have some hyperbolic two dimensional geometry such as the geometry of products and then you can have another geometry but it's not it's a twisted product which has been under a good model for that but these are the eight ways of putting geometry on three so this is the picture that he developed I think it's fair to say that nobody really saw this pattern and he addresses this in the article and proving this, he improved many special cases of the geometrization conjecture, involved bringing in techniques from all kinds of different mathematics dynamical systems from three-mapple topology number theory came in at certain points type known theory, inclinin groups which amazing equals quasi-conformable mapings which would become a very well developed analytic machine play a crucial role in his proof but the general picture was that the three-mapple had this pattern okay so I'll stop there but I should encourage you to look on the web to see how these eight geometries and the geometrization have applications to fashion this up I'll finish with a little story about myself every time I look at everything he wrote oh I know that, oh I was thinking about that because Thurston influenced Bill and Bill had somewhat of an influence on me and I kept thinking, Bill could tell me about this why didn't I learn this before but the weirdest contribution or where it affected my life is I took my parents to the Philadelphia flower show many many years ago when I was at the University of Pennsylvania and as I walk in they had this futuristic one and there it was playing on a big huge screen well back then it was a bunch of little screens not not and then I went to buy later on that that year I went to buy a washer dryer and they had somewhere they had a big screen TV there too local appliance store and lo and behold not not was playing on that too so it was just haunting me haunting me I didn't really like the movie and I watched it all the time we wouldn't want to watch it all it was dinner anyway are there any quick questions otherwise we'll have to talk to them afterwards because it's a little late maybe a quick comment a very big outreach program and I don't know if you could because I know that while he was director at MSRI Howard and I think that was when we established the best link with MSRI yeah and he came here himself and gave talk and not only that he joined us to a party at Leslie's exactly and definitely his talk is something memorable as you said he used his computer you would think he's a pure mathematician so he would not be working with computers but he does very nice pictures so if you can add a little bit more about his outreach program that not really that familiar with that I know the person I know that he had done a lot at MSRI but also I went to West Chester University which is a pretty small little place and I went there because Thurston went there to give a talk and he would go a lot of places where you wouldn't necessarily expect to see


Welcome. My name is Peter Humphrey and I'm a Principal Product Manager at Pivotal. I've been working at places like BEA, Oracle, VMware since about 2012, and then we then we all joined Pivotal. So I've been working pretty steadily to bring Java and Spring together with Cloud Foundry since the get-go. I am lucky enough to be joined by an actual engineer on stage. Hi, everyone. My name is Madhura Bhave and I also work at Pivotal. I am a developer on the Spring Boot team and before the Spring Boot team, I used to work on Cloud Foundry. I worked on the UAE for a couple of years, which is the user authentication and authorization component of Cloud Foundry. Coincidentally, it's one of the few components of Cloud Foundry that's also written in Java and Spring. So I'm really excited to be here and talk about the Java microservices on Cloud Foundry.  Who's a JVM developer? Spring, Java, Scala, whatever, something of the JVM. Okay, c++.net. Wow, okay. Python. All right, you get to come talk to me afterwards. JavaScript note. Hey, all right. Okay, cool. And then architecture. Who's like still classic three-term monolith or that's what they work with all day long? Okay, sure. Modular monolith. Getting there kind of a little bit here and there. Okay, okay, cool. Who's jumping into the deep end of the pool and going cloud native? A few people. Great. All right, thanks. That really helps just to give us an idea. So we're going to talk about Java microservices at scale. And before we talk about that, we're going to talk very briefly about something called an economy of scope. The economy of scope is the lesser known cousin to a phrase we all know really well, the economy of scale. Right? This is super basic concept in business. We all know it. The bigger your operation, the lower your unit cost is going to be, right? Right. Simple, easy, straight out of wealth of nations, you know, from 100 years ago, whenever Adam wore that book. This is the slightly less known cousin. The idea is that these are the efficiencies you get in business based on variety, not based on scale. Okay, wait a minute. What does that mean? Well, turns out that's actually pretty straightforward too. Here's some examples. The idea of an economy of scope is when you have maybe a shared function. So we all know that there's only one finance and HR and accounting department at your company. Right?  That would be kind of weird. So that's your shared function, right? You get an efficiency because you're leveraging it. Another example would be cross-selling. Hey, I make hairbrushes. I'm a hairbrush manufacturer. Well, it turns out that if I wanted to manufacture toothbrushes, I've already got most of the stuff I need. Right? All I have to do is tweak things a little bit. Or hey, I'm a 3D printer. I can make anything, right? From the same physical, indivisible asset, right? So this is economy of scope. Maybe one other example would be attaching the output of one business to be the input of another so that that second business is sourcing materials for free, right? So hopefully this is pretty straightforward. Economy of scope. Little different from economy of scale, but not that much. Still pretty easy to get your head around. This was a concept from two economists from like the mid-80s, by the way. So this is not exactly like a new thing. So this has been around for a long time. So why the heck am I talking about economics when this is a session about Java microservices at scale? Well, if you're thinking about doing Java microservices at scale, are you... And you look at what's on your team, if you're in management, or even if you're on the team, and you decide, well, what kind of talent do I have in-house right now, today? What kind of talent can I acquire easily for who I am, where I'm geographically located, what business I am in, and all the kind of other factors that play into hiring decisions? Who finds that hiring is a real challenge? Hiring good people, yeah. Okay, finding good people for your team is a challenge, right? So if you're thinking of microservices, remember that there is a pretty hefty tax that you're going to pay every time you introduce another programming language into this equation. Now, like I said, if you can't hire Java programmers or your staff is already very polyglot, then that makes a lot of sense for you. Otherwise, you have a lot of taxes to pay. Every different language you add adds at least all of this stuff on the slide. You switch from Java to C++, you may have a slightly different database ecosystem. You certainly got the ins and outs of all the client drivers that you have to learn, et cetera, et cetera, et cetera, et cetera, et cetera. Different tool chains, different IDEs, you name it. I think we all understand this instinctively, but it's kind of like how we understand the wage gap in the United States, which is not at all. Okay, well, maybe we understand it. We know that there is a wage gap, but we don't really know how bad it is. And in fact, even when we tell people how bad we think it is, we don't really get it. So that's my thought, is before you make your decisions, just think that bit of it through. And if you do decide to go with Java as your microservice stack of choice, you do have a couple options with boot. You can certainly go with Kotlin, Groovy, Spring, and Java, of course. But as you move up the value chain, there's a lot in Java to offer. In fact, you could argue that Spring has led the way in Java in a lot of instances with microservice infrastructure. And when you pair it with Cloud Foundry, you can start getting rid of boilerplate ceremonial code and have implementations of real best practices at lots of different levels. So you've probably all heard of Spring and that it does a great job with application boilerplate and patterns. Spring Boot, great. That helps with configuration. Spring Cloud, great. That helps with distributed computing patterns. Cloud Foundry, that helps with the infrastructure automation. Microservice infrastructure, microservice specific infrastructure automation even. So there's a lot to offer in Java. So what we're going to do, Madra and I, are going to take you through a quick 30 minute whirlwind tour of what that looks like with Pivotal Cloud Foundry. So let's talk about, start by talking about boot. Okay, thanks, Peter. So I love Spring Boot and I love Cloud Foundry. But that's not what I want to talk about. I'm going to talk about why Spring Boot loves Cloud Foundry and why Pivotal Cloud Foundry is a great place to run Spring Boot applications. Whenever we talk about cloud native microservices, we usually talk about 12 factor application patterns in the same vein. And a lot of the building blocks for these 12 factor applications are some of the core features that Spring Boot was actually built upon. The most important, or I can say the most relevant one that I want to talk about is configuration. And by configuration, I mean the kind of configuration that you would want to separate out for different environments that your application runs in. So say your application has a welcome page, which displays a message. And you want a different message on a test environment versus the prod environment. You don't really want to hard code these constants into your code. Or even if you do, you shouldn't. So Spring Boot lets you easily separate out your configuration from your code by using properties files. You can also use profile specific properties files. So say you're running on the cloud platform. You would define those properties in a file called application-cloud.properties. And Spring Boot would automatically pick up that configuration. So it's a great way to separate your configuration from your code, which is one of the factors of 12 factor application. Portbinding, that's actually an interesting one. What that means basically is the application should be entirely self-contained. And it shouldn't rely on an external web server to run. And it should just be able to run standalone. So with a Spring Boot application, you can actually embed Tomcat or Jetty web server inside your application and build this factor or executable jar file, which you can just run standalone. If you want to push it to Cloud Foundry, you can just do a CF push. And the platform will take care of it for you. And you have a running application within seconds. When it comes to connecting to backing services, backing services are basically services that your app consumes remotely, such as a database. What we provide is something called Spring Cloud Connectors. And Spring Cloud Connectors give your Spring application an ability to connect to the services available on your cloud platform. So in fact, they even create beans for those services that it has discovered. So it can create a Spring Bean for a data source, if it finds that your application is connected to a database service. And finally, logging. So the Spring Boot application by default, it logs to Standard Out. When the application is pushed to Cloud Foundry, a log aggregation component such as LogGator can aggregate these logs. And you can send them off to an external log analysis tool such as Splunk. So these are just some of the factors of a 12 factor application, which are really easy to build in with a Spring Boot application. And that's why I think it's really great if you use Spring Boot. I mean, we're going to talk about why Spring is great for building cloud-native Java apps, Peter's going to talk about that. But let's shift the focus a little bit and talk about why Cloud Foundry is, once you've built the Spring Boot app, why would you want to run it on Cloud Foundry? So the Java build pack, which Ben Hale spoke about in great detail this afternoon if you went to his talk, it's really cool because all you need to do is write your Java application as an application developer. You do not need to worry about how that app is going to run on Cloud Foundry. You just do a CF push. The build pack works with JVM-based applications, not just Spring applications. So you can see the list of applications that it works with down on the screen there. And the cool thing is it works with self-executable jars. And as we spoke about just a few minutes before with Spring Boot, you can build this fact jar which can just run by embedding your web server into the jar file. Java applications typically, developers might find it a little tricky to manage memory, especially in containers with limited or enforced memory requirements. And the build pack has this cool feature where it does advanced memory calculation. I'm not going to go into the details of that. But all you need to know is that you can just push your application and the build pack will ensure that the application is able to use the available memory without exceeding the memory limit. Who's seen Docker users complain about out-of-memory management online, Stack Overflow, that sort of thing? Okay, just curious. Thanks. Well, and even if your application does happen to crash, you don't always have access to the heap dump because the container gets recycled and the heap dump is basically lost. So another cool feature that the Java build pack added recently, I think it was recently, right Ben? So it logs a histogram of the heap dump and you can access this even once the container is lost. You can use sophisticated tools to look at why there was a memory leak. So that's a cool feature. Oh. So for spring applications, the Java build pack provides automatic enablement of the cloud profile. What does that mean? Has anybody heard of spring profiles before? They've been around since 3-1. Yeah. Okay. Yeah. So spring profiles lets you segregate your configuration for different environments. So you can turn on certain features in one environment, turn off certain configuration in another environment. So say for example, you have an application which wants to talk to a cloud controller and you're developing the application locally, but you don't have access to a running cloud controller. So you might want to mock the configuration for a cloud controller and you put that in a dev profile. But when the application is pushed to Cloud Foundry, you actually have access to a running cloud controller and you put that under the cloud profile because you know that I want this on my cloud platform. And the cool thing is that when you push your Java application to Cloud Foundry, the build pack will automatically enable the cloud profile, which means it adds the cloud profile to the list of active profile for spring, and you get the configuration under the cloud profile without any recompilation. Yes. So the final thing that I'm going to talk about why Spring Boot loves Pivotal Cloud Foundry is the most recent integration of the Spring Boot actuators into the Apps Manager UI. Apps Manager is the user interface for Pivotal Cloud Foundry, which lets you look at your applications, manage them, start and stop them, scale them up and down, et cetera. And Spring Boot actuators, they are end points that let you monitor and manage your application. So if you have a Spring Boot application to which you add an actuator dependency, you can actually get a number of built in end points, such as health, which tells you the health information about the application, or the end end point will expose the Spring environment, so the properties that you've configured in your Spring environment, et cetera. So the actuators are useful for getting arbitrary information about your application, or even diagnosing problems that your application might have. And the cool thing about this Apps Manager and Spring Boot integration is that now when you open the Apps Manager UI for a Spring Boot application, you get an enhanced dashboard. And I'm actually going to walk you through the Apps Manager UI that is running on PWS, or Pivotal Web Services. Has everyone heard of Pivotal Web Services? It's Pivotal's hosted version of Cloud Foundry. And this is the Apps Manager UI for a Spring Boot application. Got the mouse there if you want. Oh, thank you. Yeah, sure. So as you can see, this UI has been enhanced with some info from the actuator end points. Typically, you wouldn't really know whether this is a boot app, or a Ruby app, or what is it. But with this nice little eye-catcher here, this Spring Boot icon, next to the application name, you can easily tell that it's a Spring Boot application. The health information for each instance is actually augmented with health information from the health actuator. So if you can see here, I've added a custom health indicator, and that also shows up in the health information. Another cool thing about the actuator integration is the info that's returned from the info actuator. You can see that there is a link to the Git commit that the application was last built and pushed with. So I can actually go to the source code and find out what the heck is this app, or which commit actually caused this breakage that I'm seeing right now. Otherwise, a little hard to kind of figure out what's going on in our Spring Azure. Yeah, otherwise, sometimes it's a little hard to know which commit was this built from, or track it down. One of my favorite features is this new actuator that was added recently as part of Spring Boot 1.0.5. And it's the runtime configuration of loggers. So you can actually configure the logging levels for any logger in your application. And without having to restart your application, the logger will log output in that mode. So I have this, just a demo over here. I have this class called the Schedule Logger. And it's currently set to the info logging level. I'm going to change it to debug and see what happens. So as you can see, no restart required. I'm going to tail the logs. I'm going to tail the logs. It'll work. OK. And I should see debug output from the Schedule Logger. Yeah, I usually see it. It'll show up. Maybe you missed the click. Click on the demo code. Pause and tail again. Actually, let me just quickly make sure my configuration is yeah, it's on debug. OK, this was working a minute ago. OK, it might show up. But the point is that I can change my logging configuration at runtime and have that take place without restarting my application. I swear this worked before. Like 30 minutes ago. Yeah. OK, and the latest additions, I believe, as part of PCF 111 that have been added are some useful troubleshooting tools for troubleshooting your Spring Boot application on PCF. So if you can see here, you can get a heap dump or a thread dump. And you can also view HTTP trace information for all the requests that were made to your application. So I can show it to you a little bit in detail over here. You can click on any request and see the request headers, the response headers. And I think that's pretty useful for troubleshooting what sort of request response your application is getting or making. And one thing before I forget, all this is secured by none other than Cloud Foundry's own OAuth component, the UAA. So the actuator endpoints, as you can see, can reveal potentially sensitive information, especially something like the end endpoint exposes your application's environment. And you can probably think that what if you put some credentials in your environment? What if they get leaked? But as an application developer, you don't need to worry about any of that because it's all protected based on existing CF roles. So only authenticated users with the right roles, like a space developer or maybe the space auditor can view certain actuators. And it's all protected by OAuth scopes. So you just need to push your app, and the platform will take care of securing it for you. Cool. GVM Dumb? What? GVM Heaps. I did that. You did that? Cool. OK. Awesome. Thanks. Great. All right, so let's talk a little bit more about moving up the value chain, up the stack, just a teeny little bit. Let's talk more about why Spring Cloud likes Pivotal Cloud Foundry so much, and move into more microservice-specific infrastructure automation. Before I even talk about Spring Cloud Services, I have to mention container-to-container networking. That is a Cloud Foundry feature, but it is so important as a substrate that we have to talk about it for a second. I mean, this is basically your firewall rules at a container level. So if you don't have application, if you don't have container-to-container networking, how are you going to communicate sideways across containers? How are Eureka replicants in running when they're in AHA mode? How are they going to talk to each other? How are you going to have to go all the way through the front-go router and come back? Yikes. That's network traffic that you don't need. So we've engineered this in beta in the last release, and I believe it's actually going to go GA in a matter of weeks with the PCF 111 release. And in addition to just doing more than HTTP, because go router knows how to route what? HTTP.  The other interesting thing is, of course, you can lock things down a little bit more. So container security within the container is all built on that Linux kernel, various Linux utilities that can help you do that. But this is the front door. This is the network to the container. So you can configure containers to pop right into existence with a zero trust policy. Deny all incoming traffic except for. So this becomes very useful. Comma, side note for any operators in the room, this also opens up the door for things like VMWare's NSX and other software defined networking protocols or suites products. So that makes things very interesting when you start talking to the ops folks about what they can do. Now with that in mind, what Spring Cloud services? Well, I saw a lot of Java developers raise their hands, so you might have heard of Spring Cloud. That's the open source bits that you use on your desktop. Yes, and you can, just like Josh Long showed you earlier today, you can say at Eureka, at enable Eureka server in your code, and ta-da, you have a Eureka server running in your desktop. Are you going to put that into production? Right, who said no? Thank you, yes, exactly, NFW even, right? So that's where Spring Cloud services kicks in, right? The scope of Spring Cloud open source that you use in your desktop is much wider as well. It does a lot more than just the circuit breaker, the service discovery, the service registry, and the configuration server, which is what Spring Cloud services does. Okay, so I think I've said the word Spring Cloud like 20 times in the past two minutes. So if anyone's keeping track playing bingo, you can cross it off. We've got, I just want to make sure you understand what the difference is between these two things before I go on, okay? So the Spring Cloud services is the server side bits that are run in production on Cloud Foundry. So what are they? So the configuration server, this is basically version control as a service for your APIs, right? You, the developer, you push configuration to a repo. Maybe it's a HashiCorp vault. Maybe it's a Git repo. Maybe it's several different Git repos. Maybe it's a mix of the HashiCorp and the Git. That doesn't matter, we support all the scenarios. You push those to a config server running on Pivotal Cloud Foundry and that is managed by Pivotal Cloud Foundry. And then your client applications that need to refresh themselves with the latest configuration, no reboot, no re-stage, no recompile, right? You're just pushing it at runtime over an API call. So, and we'll even provision some of the infrastructure to help you do that with things like Spring Cloud Bus and we're looking even in future iterations to figure out how to make it even more automatic. I think today there's like a rest end point that you can call to force your application to refresh or something like that. So we're even working on making that more automatic but very foundational part of a microservice infrastructure, right? Because you have containers winking in and out of existence very quickly, unpredictably. So being able to do things without a recompile is really helpful. So another, probably the most foundational component is the service registry. This is what, hey, I don't have to specify things with a hard-coded DNS name or IP name. You don't have to worry about that in the sort of DMZ demilitarized area where you're gonna implement your business logic behind a firewall, not exposed to a public by something like a Zool endpoint where there's a DNS name and an IP address. This is all dynamic. The producers and the consumers just register themselves with the registry. Hey, when I need to make a REST API call, where am I? And am I up or am I down? Pretty simple, right? But boy, isn't that a little more intelligent than the dumb round robin algorithms we've been using for the past 10 years? I mean, even just am I up or down is a big improvement, right? So again, when you put this in context on a system where containers are winking in and out of existence, new services have to be able to register themselves dynamically. This creates the foundation for things like intelligent routing, et cetera, et cetera. And given our focus on day two operations here in the Cloud Foundry business, this is fully integrated with the PCF UAA service, the security service, as well as you can deploy Eureka itself in high availability clustered mode. So we're kind of going beyond just, hey, we got a VM stood up or a container stood up that has the server process in it, like we're working on making those highly available. Again, real production scenarios. The last one would be the circuit breaker based on the Netflix open source Histrix library. When you have a failure or even a slowdown in a microservice system, it can potentially cascade and take out all the others. So even if it's not dead, right? Even if it's just slow, which in some cases is worse, harder to figure out, it's not dead, right? It doesn't show up on an alert panel that it's actually gone.  So that's gonna stop routing traffic, right? It's gonna break the circuit. It's gonna say, hey, after I exceed a certain number of failure indicators, that's it. Hey, I'm done. Don't route any more traffic to me. I'm dead, right? And then you can take some sort of complicating action or maybe that's to call another service that's actually working or maybe display some sort of fallback behavior, something like that. That's up to the developer to write. You can basically do anything that Java can do at that point. But the system will help you manage that and PCF will set up all the visualization for you and the dashboards. I'll show that to you in a demo right now. So I have a very simple app that, yeah, here we go, in my apps manager. And it's basically two boot apps. This is the data access layer. So this is just my service, right? This is the user interface layer. And this depends on four services. Config server, circuit breaker, service registry, the things we just talked about. And good old MySQL, right? Nothing too fancy here, just very basics. And push this application, gave it a route. And so I can come here and not look at that window. Let's look at this window, not even that window. How about I click on the UI portion? There we go. Okay, so this is a very simple app that just vends Chinese fortune cookie fortunes. Very simple. Every time I hit refresh, gives me a new one. Okay, so I'm gonna go to the command line here and say, let's find out what's in here. So I'm just doing a CF apps that tells me what I've got. Okay, great. I'm gonna stop the fortune service, which is that first service there. That's your data access layer, effectively.  Anybody? Anybody? Think I heard, yeah, I think I heard the correct answer in there. So this is gonna give some error fallback. In this case, we hard coded it to say, your future is unclear.  Now, Cloud Foundry does that for you auto-magically. You don't need to do that yourself. I'm doing it to show you the demo. So that will take a second for the container to start, for the services to re-register with Eureka, and for then the timeouts to hit on the circuit breaker to say, oh, okay, I'm back to health. You can start routing traffic to me again. So at that point, you'll see those other messages that you'll see the Chinese fortunes come back again and not your future is unclear. While we're waiting for that to come back up, I just wanna mention, talk to you about one other distinct capability of PCF, which I think people are really gonna appreciate. This is the tracing with Zipkin, Dapper, HTrace type stuff that Adrian Cole has been doing in Spring Cloud. That project is called Spring Cloud Sleuth. We have instrumented that in PCF, something we call PCF metrics, which is an add-on module to Pivotal Cloud Foundry. And basically, it gives you a view of correlated logs. So when you're doing microservices, you don't benefit as much from pre-compile runtime checking. You don't benefit as much from a debugger.  So if you can't see the call graph, it's gonna be really hard for you to figure out where the problem is, right? So this at least gives you a sense of what REST service called what REST service called what REST service and how long did it take? So you can start to see where the problems are. Also, we've fine-tuned it a little bit so you can even visualize and filter the metrics out down to the application instance level. And again, sorry to hit you over the head with this theme, but it's fully integrated into the PCF security, right? So it's not in the sense of it just prompts you for a logon, but this works with the concepts of the spaces and orgs. As well as a little cake topper and a bonus for any of the Spring Boot developers, if you've bothered to define any custom metrics, we will display and graph them for you automatically without you having to do a damn thing. So that's kind of nice if you're doing your own metrics. Let me go back to my demo page here and see if this is recovered. Yep, there we go. It's actually not showing like that. Oh, yeah, there it is, yeah. Okay, cool, so I'm back to Chinese fortunes again. And just as a point of minor interest, if I go over here to the circuit breaker and I click on manage and I log in, apparently. Right, I guess security's the thing. So let's see, let me just hit a little bit of traffic on this endpoint again. Great, and now I can look at it. Oh, there's my spike of traffic. It should probably fall off pretty dramatically in a second or two here, but this is the Histrix dashboard and it was just nicely integrated into the thing. I didn't have to go to some strange URL or look up the documentation or any of that CRAP. It's just there. It just works, right? So I didn't have to set up Histrix. I didn't have to set up RabbitMQ to bring the metrics. I didn't have to do any of that stuff. Just works, which is great. So with that, I think let's wrap up this section. And... How are we doing on time? I think we're doing pretty well. You wanna check the timer? Yeah, I think we're actually a little over. Does anyone know what time? Okay, no, I think we got a few more seconds. Last thing, almost at the end, just some basics for the operators and the DevOps folks. Try and do that first order of magnitude. Where did something catch on fire? What component is at fault? PCF metrics will also give you network stats, container metrics like CPU disk memory, that kind of stuff, and app events. Just to give you that first order, like where's the problem so I can go zero and figure out what the remediation is. So again, lots of stuff to try to help you troubleshoot because we're very painfully aware that microservices makes things a little harder to troubleshoot. Now, everything I just said is what we are delivering today right now. You can use all this stuff right now. You can just go to run.pivotal.io, sign up for an account, you get $87 of trial credit, and you can kick the tires and test out your own microservices all day long. So that's available on our public cloud right now. You can certainly use it with PCF, of course, as well. In the future, what are we gonna be doing? Quick safe harbor statement. Yes, this is roadmap stuff. It's not committed delivery folks, so FYI. We're gonna be working on a similar PCF managed experience for Spring Cloud Dataflow. Anybody heard of Spring Cloud Dataflow? Okay, it's great. Think integration for those that haven't heard of it. This is a way for doing integration with microservices, messaging, Spring integration adapters, that kind of stuff, analytics. And so we're gonna be working on that as a PCF managed service as well, often to the future. And last but not least, the next release of Spring Cloud Services. We're just working on, this is actually input we got from some of our customers.  And you want to provision that for a set of CF orgs and spaces. As you duplicate that and scale that up multiple times, that some customers were saying, wow, we would really love to lower our AI count and licensing costs and reuse the Spring Cloud Services app instances across multiple orgs and spaces. So put another way, as you scale up your business logic, the supporting infrastructure can now, with this upcoming release, can be reused a little bit more so you get some cost efficiencies. But most importantly, we wanna talk to you. We wanna hear about what you want to see in the future. We've come up with crazy ideas. We're talking about things like Zool API Gateway as a service managed by PCF. We're talking about, hey, what's a unified laptop to cloud type of developer experience look like for Spring Cloud Services?  So please come to the Pivotal booth and talk to us. If you're into this stuff, we wanna work with you and our customers are very actively influencing this roadmap. So thanks for that. And I think with that. Yeah, thank you all for coming. We're good. Thank you very much. Appreciate your time and attention. Thank you.