 I'd like to introduce our keynote speaker today. And it's really hard to introduce Barry Warsaw. I think I'll keep it short and sweet. I could talk for 10 minutes here. Barry's been a core developer on Python for longer than I even knew Python was around for. He's been a Python release manager. He's a working musician, a Tai Chi practitioner, and one of the most knowledgeable and helpful people that I've had the pleasure of working with. This has been four years in the making. We tried to get Barry out here in 2012, but it was your wedding anniversary, I believe. And we said, oh, it's OK, Barry. It's OK. We'll get you out here in four years' time. Kind of not realizing that we have the conference at the same time every year and you have your wedding anniversary at the same time every year. So that was an oversight in our part, but we made it happen. Could you please all join me in welcoming Barry Warsaw? So while I'm trying to get the last little bit of tech set up here, I will mention that I'm going to demonstrate a few things and maybe this will work. And to do that, I'm going to have to go down here a little bit because we were hoping to have another part of the stage that didn't work out. So if you can't see and you want to see, just come a little closer. All right, let's, there we go. OK. So I really want to thank you all for inviting me here. New Zealand is a beautiful country. And my wife and I have really enjoyed it, and we're going to have a couple of days after the conference to do a little bit of sightseeing. As Tommy mentioned, I really want to thank Tommy because persistence does pay off. And it was really perfect timing for us because a few days ago, we dropped our son, our only child, off at college. So we're newly empty nesting. So we have to put off the depression a little bit. So coming here was perfect for that. As Tommy mentioned, it was our 24th wedding anniversary somewhere over the Pacific. It was kind of, I like to say, the day that we lost going over the international date line. So I don't know what that tells you. But anyway, here we are. And I'm really honored to be here. So yeah, so we lived near Washington DC. And it's a long way to Dunedin. 14,000 kilometers, which I'm an American, so that doesn't mean anything to me. But I understand 9,000 miles. And it's about 25 hours door to door. There's a big ocean between the two countries. And for me, psychologically, it's even farther. Because I'll note that here in New Zealand, although not quite yet in the US, it's the 15th anniversary of 9-11, which I remember very vividly. And even years before that, I had a fear of flying. So anybody who has a phobia knows that they're usually irrational, but very real, and they can be debilitating. And so I missed out on things because of this. Some conferences I couldn't make it to. And we did family vacations that were accessible through ground transportation. I actually did take a train almost all the way across the United States at one point to meet my family who flew out to the Grand Canyon. So that was a little inconvenient. But that's what it was like for me. In 2008, I was working for Canonical on the Launchpad team. And we were planning a two-week sprint. And it was going to be a very cool technical sprint. We were going to do things like we were going to add a lot of dynamism to Launchpad, so we were going to get some JavaScript and Ajax training. We were going to do these cool tag team coding contests. Launchpad at the time was on Python 2.4, so we were going to transition to 2.5 and 2.6. There was an Ubuntu Intrepid iBix release that we were going to celebrate. And we were going to have fun with Halloween. I don't know. Is Halloween a thing here? Not a big thing. Not a big thing. OK, so well, it's kind of fun because you get to dress up silly and accidentally. So that's a lot of fun. There was only one problem with this. The sprint was in London. So raise your hand if you're a geography expert. Well, you can't really drive from the US to London. And there aren't any trains. So this is going to be a problem for me. And I actually did investigate, believe it or not, taking the Queen Elizabeth II transatlantic. But it's really expensive and only goes across the ocean a couple of times a year, and it takes two weeks. So that wasn't going to really work. But Canonical was really incredibly supportive. I mean, they knew about my phobia. And we were going to try to work out some kind of remote participation. And video teleconferencing isn't that great in 2016. It really wasn't any better in 2008. But we were going to try to make it work. And then I started to get various emails and electronic greeting cards from all my colleagues on the Launchpad team. And this is all it said, BCTL. And I had no idea what this meant. So when I would respond to one of my colleagues and say, what does BCTL mean? Silence, right? So it was very kind of cryptic. And I was really confused for a while. And some of the pictures were kind of funny. And occasionally, they had, yeah, I know, right? Cats, that's the theme. So some of the pictures had a few clues. And it hit me, just sitting at my computer one day, what BCTL stood for. Needless to say, when I realized what was going on, I was really deeply touched. The Launchpad team leaders had contacted all of my colleagues without my knowledge. And encouraged them to be supportive and have me and encourage me to come. Canonical never forced me. They never said I had to go. But they did it in a really positive, supportive way. They said, we're going to miss you if you don't come to London for this sprint. So of course, my first thought was, well, if they're going to do that and they care that much, I have to go. And of course, my second thought was, oh my gosh, how am I possibly going to get on the airplane to go? Well, there's a lot of people who have this phobia. And you can go online. And there's lots of online websites and videos. And there's books and things like that to help you get over this. You can also do acclimation therapy, which is you go to an airport and you acclimate yourself to getting on an airplane and going up in the air. I didn't actually go that far, but I will say that I veiled myself of the legally prescribed pharmaceuticals. That helped a lot. Of course, I had support of my family, which was incredible, and my colleagues, which was really great. And I ended up going to London and participating in the sprint. And I was really glad that I did, not just because it was a great sprint, and I had a chance to be with all my Launchpad colleagues, but also because it was really life changing for me. Since then, I've gone to Europe several times for conferences and sprints. And I've been able to take fantastic vacations with my family and, of course, be here with you. So here we are eight years later, and it really doesn't bother me anymore. So I was able to get over that, and I appreciate my colleagues for helping me with that. The other thing that helped me a lot was my Tai Chi practice. In 2008, I'd been studying under my current teacher for about six years. And what I want to do today is talk a little bit about Tai Chi, and I just want to kind of give you a flavor for it and then see if we can't relate some of those principles to what we do as programmers and open source developers. So I'm going to jump down here now because I have a little bit more room, and I'm going to show you, as I kind of explain what Tai Chi is. So Tai Chi is really a Chinese martial art, and it's called an internal martial art. So a lot of what we do is very slow and deliberate. And it's been around for a long time, and it's a series of postures, such as this one, that's connected with a very smooth transition from posture to posture. And it doesn't take very long to do. It doesn't take very long to learn. And really the nice thing about it is that you don't really need, it doesn't cost anything, right? It doesn't take that much space, and it doesn't take that much time. So it is a martial art, which means that a lot of people do study it for the martial aspects, right? The fighting, offensive and defensive aspects. But really these days, most people study it for the health benefits. And studies have shown that it's really great at reducing stress, at lowering the incidence of heart disease and diabetes and high blood pressure. It's one of the central principles is cultivating mindfulness or awareness, and also cultivating what's called the Chi, which is a life force or an energy that flows through your body. And you can use that Chi, that energy, for all these benefits, the health benefits and also the martial aspects. So you can see I've just done the first third of the form. That's the first third. I have to admit that it's a little difficult to talk and do it at the same time. But anyway, so the whole form takes maybe seven to 10 minutes to do. It doesn't take a lot of space, maybe a little bit more than this, but there is actually what we call a jailhouse Tai Chi form that you can do in a really compact space. It takes about nine months to a year to learn the form. Tai Chi is based on the principle of yielding to force. So some martial arts, when a force comes in, they'll meet that force with force. But Tai Chi really takes that force and yields to it and neutralizes it. So when the force comes into your body, you yield to it, you allow it to go where it wants to go, but then you redirect it. And it's much like water rushing down a river, right? When it encounters that big rock, the water, which is one of the most yielding substances on earth, will just flow right around that rock and keep going as if nothing happened. But like water, water has this other aspect to it, which is that it's incredibly powerful. If you take water and you put a lot of energy into it and you turn it into a circle, then it has a lot of power, hurricanes, tornadoes, floods, these are some of the most devastating things on earth. So with Tai Chi, that's what we do. We yield to the force and then we turn it around and we return it in a very powerful way. There's a couple of aspects of Tai Chi. I just did the first third of what's called the solo form. There's a two-person exercise, which I'll talk about a little bit later, that's called push hands. There is, and one of the more advanced aspects of it is the sword form. This is my TSA-approved travel sword. I don't know what they think about when they see this in the X-rays, but I always put it in my checked luggage. But this is a little bit more expansive, a little faster. It has a lot of the same principles, but it's definitely more advanced because you're putting your mind out to the tip of your sword, so you're a little bit more out and expansive. Okay, so I wanna talk briefly about some of the physical principles and then I wanna get into the principles that I think relate to what we do as programmers. Okay, so the first physical principle is called relax but don't collapse. So one of the things we try to do in Tai Chi all the time is relax. Relaxing is how all the motion gets started. Relax, relax, relax. But a lot of beginning students, when they hear the word relax, they think collapse. Like this is relaxed, right? But it's much like a fire hose with no water flowing through it. It's just kinda jumbled on the ground. It has no energy, it has no life to it. It's just dead. That's collapse. What relaxes is a way of reducing the stress in your body and opening up your body, opening up the channels in your body so that the chi can flow. So relax is eliminating stress wherever you feel it in your body so that it's open and the chi can flow much like that high pressure water going through a fire hose. Another physical principle is body upright and so what we do is we imagine a string on the top of our head attached to the ceiling and the body just is naturally suspended from that. But to counter that we also imagine a small weight on our tailbone and so it doesn't pull too far but it just hangs very evenly on the tailbone. And so these are two opposing forces and there's a down, a relax, a down much like the water in the bottom of a water balloon but there's always an up and that elongates the spine and keeps the body upright. Separate the weight means that we never really stand with 50% of the weight in both feet. What we do is we have two basic stances. We have one where we have 70% of the weight in the front foot and 30% of the weight in the back foot. And then the other stance is called 100 zero so 100% of my weight's here and I have no weight in the front foot and that allows me to move the front foot without moving my body. And what this does is it always means that we have a full leg or a substantial leg and an empty leg or an insubstantial leg. So here this is the full leg and there's always a cross body connection so if my left leg is the full leg then my right hand is the full hand. And similarly if my left leg is the empty leg in this case my right hand will be the empty hand. And it's this exchange of full and empty during the form that gets the chi moving in the body. The flexible waist means that it's not really, we think of the waist as being sort of in the navel area but really the waist in Tai Chi is the hips. And so all the motion starts from the hips and we keep the eyes, nose and navel aligned. And so all the motion begins with the hips and we have this notion of one thing moves, everything moves. So when we start the motion with the hips that moves the whole body together. Some styles of Tai Chi want to always have the fingertips pointed to the sky. But in our style we have what's called Fair Lady's Wrist which is just a very straight relaxed wrist. Relaxing the wrist relaxes the elbow which relaxes the shoulder which keeps all the upper body nice and relaxed and open so that the cheek can flow. And we use our hands and our fingers as like antennas to sense the environment. This is Professor Chen Mencheng. He lived from 1901 to 1975. And really sort of following the lineage of our style, he's kind of at the apex. Now there's a lot of very rich history of many thousands of years of Tai Chi sort of above him. But he is sort of the apex of our style. When he was a young boy and growing up in China he was a very sickly child and his parents shipped him off to an uncle who was a Tai Chi master, taught him Tai Chi. Within six months to a year all of his health problems had really been cured. Of course he studied over the years he became a master of the five arts and really became a Tai Chi master. And one of the things that he did is he shortened the form. So the form that he learned I actually had learned 30 years ago. It's called the Yang style long form and that takes about 45 minutes to do. And so what Professor Cheng did is he shortened it. He removed a lot of the repetition. He kept all the principles but he really boiled it down into a form that you can do like I said in about seven to 10 minutes. It's very easy to learn and it's very easy to teach. So he boiled everything down and that's the style that we learned. When he passed away, also in the 60s he came to New York City from China and the 60s was a kind of a turbulent era in New York and there was a lot of counterculture people looking for different ways of living their lives, a lot of hippies and things like that. And they really gravitated to him and much to the chagrin of many of his contemporaries he opened up his school to everybody. Anybody who wanted to come and learn could. And when he passed away in 75 many of his senior students spread out across the world and that's why you can pretty much find Chen Mencheng Tai Chi teacher almost anywhere probably here in New Zealand I'm guessing as well. Okay, live demo time, right? This is always a little questionable, we'll see what happens. But I am going to invite all of you to stand up right in front of your chairs. If you can't or you don't wanna stand up that's totally fine you can do this in your mind and with your intention. You don't really necessarily have to move out to the aisles you can do this right in front of your chairs. But we'll see how this works. I've done this for a few people but never quite this many so. So what I'd like you to do, can kind of everybody sort of see me? Maybe a little bit, maybe not. So what I'd like you to do is just stand very relaxed with your feet approximately shoulder width which means not too wide, not too narrow and parallel so not pigeon toad and not pointed out. And you don't have to get it exactly just get it close, make it comfortable and have in your mind your intention of being shoulder width and parallel, okay? Like you to imagine that string on the top of your head attached to the ceiling and your body is nicely suspended from that. You have that little weight on your tailbone that just elongates your spine, okay? Everybody got that? You can put your tongue on the roof of your mouth right behind your teeth. And what that does there's a channel of meridian of chi that flows up your spine over your head and that's the switch that closes the circuit and lets the chi flow around your body, okay? So now what I'd like you to do is just lean forward a couple of inches, okay? Yes, oh this is awesome. Not too far that you're gonna fall over but I want you to lean forward so that you start to feel a little bit of tension in your body, okay? Everybody's gonna feel it in a little bit different place, it might be your back, it might be your thighs or your shins, you may feel your toes inside your shoes grab the floor a little bit, okay? And I'd like you to take two breaths, very easy and go through your body, do an inventory and notice where you're holding that tension. Now take your index fingers and put them on your hips and push back just a couple of inches until you connect with your heels, okay? You should feel your weight travel now down through the center of your foot, you feel your toes relax and your foot spread out, you've got a little bit more connection with your heels and hopefully some of those places that you had that tension have let go. I'd like you to just take two more breaths and feel, go back to those places where you notice the tension and see what you feel now, okay? Did you feel a little difference maybe? Yeah, sort of, yes, no, yes, um. Okay, that's the end of the demo, you can sit down. I have to say it is really cool to stand here and watch you guys do that. I did not expect that, but that was really awesome. So this really is the essence of Tai Chi. It's what we try to get to when we do the form, we're trying to identify those places where we're holding tension and just let it go and finding ways of releasing that tension, releasing that stress and relaxing and opening up. This also gets to the first principle that I wanna talk about which is do without doing, okay? When you were standing there and you were leaning forward, everybody was able to pretty much stay upright, okay? But you were doing a lot of work in order to do that. You were grabbing with your toes or you had tension. You were sort of wasting a lot of energy to stay upright. And the idea, the principle is that when you connect to your heels and you release all that tension, you're able to stay upright doing a lot less work. And most importantly, wasting less energy. And so that's what we do. See, I'm gonna try to demonstrate a little bit here. So there's a place in the form where we're in a posture called push and we're trying to get through a transition to a very iconic posture called single whip, okay? And when you first learn the form, what you tend to do is you push off with that foot, turn your sort of arms and then put your foot here, put your arms here and then sort of fall onto your foot. A lot of beginning students will go through this and they think that that's sort of Tai Chi because their hands are in the right place. But really, that's not Tai Chi because you're wasting so much energy. And so what we do instead is, remember I said, relax and the motion starts with the hips and we always try to relax. So when we're here, we relax this hip and that back knee and that gets the motion going. And we can use the energy of gravity to get us to hear and by following the momentum. So once again, we relax, use the energy of gravity and follow the momentum and then relax, use the energy of gravity and follow the momentum. And so we can get from push to single whip with almost no effort. We're just using gravity which is flowing through our bodies, we're following the momentum and we're relaxing. So that is doing the form without doing any wasted work. To me, this is the essence of Python when I got an email from my colleagues at NIST, which we used to call the National Bureau of Standards by the way back in the day. This is in 1994, I got some emails, I used to work there and I had left by that time. I got an email from a friend saying, hey we got this Dutch guy who's coming to the United States and he invented this language and he's gonna come and talk to us about this language and we're gonna have a couple of days of a workshop. And would you like to come? So it was only about a half an hour's drive from me and so I was pretty happy to come. So, yeah, that is me. That's when I had all this back here. So it was a really amazing workshop, as you can imagine, meeting Guido and talking with him. There were only 20 of us in the room. The last Python conference in the US had 3,000 people. So I remember two things from the workshop. Well, really three. I remember Guido's funky Dutch glasses that he used to wear. I'm looking at this picture and it's really amazing that this is 22 years ago. I remember talking about dock strings. At the time, Python didn't have dock strings and Guido and I were both fans of Emacs so we used the model of where dock strings go in Emacs lists, but I don't know if anybody's familiar with that. But that was the model that we used. We said, hey, that seems pretty cool, so let's add that to Python. And the other thing I remember is what was called the Don Bodre Metaclass Hack. This was way before you could do Metaclasses in Python and in fact you had to hack the C code in order to do Metaclasses. And this guy, Don Bodre, was a guy who had really sort of invented the first approach to doing Metaclasses in Python. Of course, at the conference, all that went way over my head. I didn't really know what they were talking about. Now, to me, I think Guido's genius with Python was his observation that code is read way more often than it's written. And I don't know about you, but I read code all the time. And I write a little bit, but I'm always reviewing code in pull requests. I'm cracking open libraries to see how they actually work. My job at Canonical, I'm very often taking code bases that I don't have never seen before and I have to fix bugs in them or figure out what's going on. Python is beautifully readable and that's what allows us to be able to pull down just about any Python code base and just really, most of the time, get into it very easily. The other thing that I think is really the genius of Python is that you can do so much with almost no effort. I mean, I was really struck by this the first time I saw it. I mean, with all the built-in types, dictionaries and lists and classes and it just seemed like it was almost magic how much you could do with so little effort. So you look at something like, so I did a lot of C++. Of course, my C++ is quite rusty now, but I did a lot of C++ before coming to Python and I was always struck with how much work you had to do just to get anything done. You had to figure out the types of your arguments and your variables. You had to figure out the public and private. You had to write a lot of stuff. Even printing something out to standard out was a lot of work. You had to have a main, you had to compile it, run it, watch it crash, change it, you know, right, it's a lot of work. And then, oh, and then you had all the squiggles, right? The lots of extra squiggles in your code. Python got rid of all that, got rid of the squiggles, got rid of the types. Really boiled things down to the essence of programming and I really loved that about it. Even printing something to standard out was just so beautiful and easy. Of course, this is Python 3, we didn't have that at the time, but you still get the idea. No main program, you just run it, doesn't work, you change it, you run it again. Really wonderful. Even some of the newer stuff that have been added since then, I'll mention that when I started Python, there weren't even star args or star star keywords. In fact, there weren't even keyword arguments. You had to name all the arguments in the function. We take that for granted now, but that's a case in point, along with statements and context managers which allow you to manage resources without really thinking about it too much. Of course, decorators as we've talked about and all the different comprehensions that you have, even the async stuff, it allows you to do so many powerful things with almost like not even really thinking about it. So that's do without doing in Python. Now, I wanna talk about a little bit, so I wanna ask this question. In the form, as I mentioned, when we're in push, we relax the hip, but how do we know that it's the hip that we have to relax? This gets to the, no ocean, sorry, I'm gonna have to, this is the principle of what's in the way is the way. So when I'm here, this is a very constricted posture in the form, my feet are pigeon-toed, I'm not need, everything's sort of tight and constricted. And how do I know what it is that I have to relax in order to get things going but doing this without doing any work? And the way I do it, the way I know is by looking at what's in the way, what's impeding my progress. And in this case, it's my hip, it's my left hip, because my left hip can't turn anymore. If I turn, I'm actually pushing against it, I'm doing work and it's a little painful, right? So because this hip won't go any farther, it's this hip that I relax. And once again, use the energy of gravity and follow the momentum. And now I'm here and I'm still, again, very constrained. And so I'm gonna relax this hip because this hip is the one that can't turn anymore and that's what gets me a single whip. So this notion of what's in the way is the way. So how do we relate this to Python? Well, one of my favorite examples is internationalization. So I work on GNU Mailman, I've done that for a long time, it's the mailing list manager. And it was really one of the first Python applications to be internationalized. We felt very strongly that people should be able to walk up to their mailing list manager and be able to use it in their natural language of choice, whether that can be English or Spanish, Italian, Japanese, Chinese, whatever it happens to be. But there weren't really any libraries or tools to do this in Python, so we had to invent a lot of these things. And we did that for Mailman, and we used sort of the GNU GetText model of that for, that had been established for C programs and we thought that a lot of those ideas worked really well. Basically internationalization works like this, you write some, you have some strings in your code and you mark those strings and then you run a tool over that and you extract those into what's called a catalog, which is essentially a dictionary that takes the source code string and maps it to the translated strings and you have one of those catalogs for every language that your application is translated to. And then at runtime, you look up, you say I'm gonna print this out in Italian and so you get the Italian catalog, you look up the source string, you get the Italian string and then you interpolate into that your runtime values. But there's two things that you have to know when you're doing internationalization. The first is that you have to translate full sentences because there are certain languages, like Japanese, where if you have sentence fragments, they can't be translated, it makes no sense, it's all just gibberish. And the second thing is that the order of those placeholders for the runtime data can change depending on the language. So these are the two things that you have to keep in mind when you internationalize any application. Well, we know how to do interpolation of runtime data in Python, right? It's really easy. We just have percent s placeholders and we use the percent operator, but of course this doesn't work because you can't change the order of the placeholders and have it make sense. Well, that's okay. We do dictionary interpolation and we all know how to do this. There's only sort of, so this is all standard Python and we had this a lot in Mailman and so this is an example of a translated string, right? Only one problem with it. They left off the percent s. So what happens, what happened a lot was that translators would forget the trailing s and that would crash Mailman because once we did the dictionary interpolation, we get a trace back. So let's ask what's in the way? What's in the way was this percent placeholder format? So what's the way, how do we solve that? Well, the way we solved that was to use dollar strings and so we came up, we didn't really invent this. This is a pretty common in many computer languages. You just have a word and you put a dollar sign in front of that word and it's a placeholder and that's a rule that's very easy to understand. It's very easy to teach translators, many of whom are not programmers and many of whom are not Python programmers, right? It's harder to get wrong. It's not impossible because you can typo but it's much harder to get wrong and so once we switched to this, the rate of errors, the rate of crashing in Mailman went way, way down. So we came up with Pep292 and this is an example of Pep292. We added this class called template strings. You can put your dollar string in there and then there's a method that does that dictionary interpolation. But much like in the form where we first came to here and were constricted and we relaxed that one, we now came to another place where we were constricted and so this happened a lot where we would actually make a typo in the source code and what was in the way was all this duplication, right? For any of those placeholders, we have to name them four times, right? We name them in the signature, in the dollar string and then twice in the method. So we came up with this very easy to understand code and as you take three seconds to understand exactly what this does, I'll mention that it definitely doesn't do anything evil, okay? But what this basically does is it says I'm gonna look at the calling context and I'm gonna pull out the globals and the locals and stick them together in the dictionary sort of automatically and then I'll use that as the interpolation dictionary. Well, you don't have to worry about doing that because we stick it in the library and now translated code, this is all you have to do to make your Python code internationalized. Just sort of a lot of magic stuff but it's magic that sort of you don't have, you just, once you know the rules, you don't have to worry about it and so this is using that notion of what's in the way is the way to show you how to do an internationalized program without doing so much work and of course that makes us happy. Okay, so the next thing I'd like to talk about is I'd like to ask this question of how do we learn to relax? So once again, I mentioned that we're here and this hip is the thing that we're gonna relax but what we tend to do as beginners is push off because it's a very uncomfortable place so we push off with that foot and we have to learn that our natural inclination shouldn't be to push but should be to relax, always relax. So how do we learn to relax? Well, as I mentioned before, there's this part of Tai Chi called push hands and this is Professor Chang, he's pushing with one of his students and push hands is a very interesting two-person exercise so the way this works is, let's see if I can show this, the way this works is one person will have what's called a ward off, they'll have their hand up like this and the other person is pushing on their wrist and their elbow and that push is coming towards their center and their idea is they wanna push into your center and just gently push you off your balance and that would be a win in push hands but the person with their arm up is taking that force and yielding to it and neutralizing it and then the direction changes and a press comes in to your center and once again yield and neutralize and now the tables are turned, the person who was receiving the push is now giving the push and then giving the press and you can go back and forth like this and then a very elegant and smooth choreography just pushing like this and it's all nice and smooth until someone gets to a stuck place and that may be that you've turned too far or it might be that your hip is sticking out or you've lost your concentration for a moment and when you get to that stuck place your opponent who if they're skilled they can feel that stuck place and they can push against that stuck place and that's how you go out and that's one of the reasons why we don't use why we wanna relax because if we're using force then we're tense in our arm and that's a stuck place that a skilled person can use as a handle to very easily push you out and so we relax, relax, relax and that allows us to yield and neutralize the push. Push hands is also called sensing hands because what we're really doing is we're sensing our opponent's center, our center and the connection between the two people we're working on that awareness. Now, I don't know if you can really see this picture well but I love this picture because I know both of these people they're really fantastic people. I'm hoping it's evident to you that the gentleman in the yellow shirt who's a very large guy he's a great Tai Chi player from Boston he's also a fantastic musician. He's in a stuck place and you can kinda see that because his shoulders are hunched over, his elbow sticking out and his foot is up off the ground he doesn't have a solid connection to the ground he's in a stuck place. Now, the woman in the white shirt is about to push into that stuck place and he's gonna go out and she's gonna push with no energy or no effort. You would think a big guy like that would have an advantage but often they don't because they tend to be very forceful and very upper body tense. The woman in this picture is Maggie Newman. She was a senior student of Professor Chang in the 60s and she is my teacher's teacher she's in her 90s now and she still runs a Tai Chi camp up in upstate New York and she is really absolutely amazing. So she also taught me the sword form and so anyway, so she's gonna push into Fred who is in a stuck place. Now what push hands or sensing hands teaches us is to invest in loss, okay? So the idea is that if we use our ego and we use our strength when we feel that force coming into us our natural inclination is to meet that force with force but what we wanna do is actually allow that push to happen. In other words, we're embracing the fact that we may lose, okay? Because when we invest in loss we learn from our mistakes. So we learn much more from losing than we do from winning and every time we get pushed, right? Over and over and over again we start to realize well what am I doing wrong? Why am I, what am I doing wrong that allows that push to come in? Often it's because I'm not relaxed and maybe because my hip is sticking out as I mentioned it might be because I've turned too far. So the mistake that you make may be way back here where the push actually happens but it may be many, many steps ahead and so what we do is we invest in loss we accept that push, we allow that push to come in so that we can learn, right? Where the root cause of that push happens. It may be way right at the beginning, right? When they touch you. It may be the first turn is too far. And the only way we learn that is by getting pushed a lot. I love this term root because it comes up in so many contexts, right? The root in Tai Chi is our connection to the ground. If we have a strong root then we can use that root to turn and yield and neutralize the push. Root of course is a fantastic term in music, I'm a musician and the root is the note upon which the entire chord is built. As a bass player I have to play the root a lot and I love the root. The root is a fantastic thing. And of course in software we have this notion of the root cause, what's the actual cause of a defect. In 2007, so this was another launch pad sprint that we had before, this was in the States so it was relatively easy for me at the time to get to. We got together and did this sprint and we learned about what's called lean product development. This is a methodology that Toyota developed for their assembly lines and the idea is let's imagine you've got this car that's coming down the assembly line and you've got a dashboard and you wanna fit that dashboard into the cockpit, right? And most of the time that dashboard fits in the cockpit just fine but every once in a while it doesn't quite fit for whatever reason, okay? Now you could just get out your big hammer and bang that thing into the cockpit and move on but what lean says is let's actually stop the production line right now, right there and try to discover what the root cause of that defect was because if we follow the root cause back to whatever step it is and fix that then we won't ever have any more dashboards that won't fit into the cockpit of the car. Maybe that where the dashboards are made is a little warmer one day a week when the sun shines in the window or whatever it happens to be. And if you pull the shades down at three o'clock in the afternoon you don't have that temperature problem and now your dashboards will all fit, okay? So we did the same thing with Launchpad. We tried to investigate why we had, it's lasting, why we had defects and where were the places in our process that were introducing problems? And we chased it back to not having enough code reviews. So I'm sure in all of your projects you get plenty of code reviews, right? Nothing ever lands without getting a thorough review by three people, whatever it happens to be. I don't know, in my projects in the open source world it's very hard to get code reviews. If you go to the Python bug tracker for example there's bugs that have been open for years and a lot of those have patches and yet they still haven't been landed and closed because they're just not getting enough code reviews, okay? So in a volunteer project like Python it's difficult to force people to do code reviews, right? Because people are gonna work on what they wanna work on and that's fine. But with Launchpad, because we had a team of people working together at an employer we tried to come up with various experiments to solve this problem. And that's what Lean does. Finds the root cause, runs experiments and then sees how they work. So the experiment that we came up with was this notion of an on-call reviewer. And the idea here was that every engineer would spend one day a week doing nothing but reviewing other people's code, okay? So you'd wake up in the morning and you'd get on IRC and maybe somebody would ping you and say, hey, I have a merge proposal and it fixes this bug. Could you please review it so I can land it today? And that's what you would do, that'd be your job. If nobody was pinging you, I guarantee there were plenty of merge proposals for features and bugs that were already up for review and in being in the States, for example, the Europeans are finishing their day so they'd put up merge proposals at the end of their day and you just picked them off and reviewed them and tried to make them better. At first, a lot of the engineers were kind of apprehensive about this because they said, well, that means I'm gonna be 20% less productive, right? Four days a week I'm writing code and one day a week I'm not writing any code, I'm just reviewing other people's stuff. Well, that's a problem that's gonna make me unhappy because I'm much less productive. But after running this experiment for a while, we found that the number of branches that got landed and the number of defects in those branches, the number of branches went way up. So we were getting a lot more velocity as a team. We were getting much more productive as a team and the number of defects that we were introducing just went way down. So the ability to identify those root causes, run experiments and then give up something of yourself for the team allowed us to make really great progress and this actually made everybody happy because it meant that your own branches didn't languish without review. So your own code when it actually landed it landed much sooner and with fewer defects. And so this really made the whole team much more happy. So the last question I wanna ask is when is it the right time to relax? So once again, I'll just show you a little bit of the form. So if I'm here, when do I relax? In this motion. If I relax too late, I'm doing work. I'm wasting energy. I'm pushing into this constrained place. If I relax too soon, I'm sort of leaving a lot of energy on the table, okay? So how do I know that the timing is right there? I've used up all the momentum. There's no more momentum. That's the time to relax. So how do I know that? The way we do this in Tai Chi is to listen. And this really is sort of the most important thing I think that Tai Chi teaches us. So when you were standing there and you were leaning forward, you were, I asked you to take a couple breaths and just do that inventory of your body where that stress was. That you were listening to your body, okay? You were listening to your toes clenching or your thighs or your shins being tense. This notion of listening is really critical to Tai Chi. It's also very interesting to me that the same muscles, so to speak, that you use in Tai Chi to listen to your body are the same muscles that a musician uses when they listen to the music. I've really noticed this and it's a little difficult to explain to somebody who doesn't do both Tai Chi and music, but it's exactly the same sort of muscles or a process that you do in both realms. So all musicians hear, right? They can hear how fast the drummer is playing or they can hear how loud the guitar player is playing or they can hear how awesome the bass player is, right? But hearing is different than listening and really great musicians listen. This is Victor Wooten who anybody knows and will know he's a great musician. This is a book by Victor Wooten called The Music Lesson which I highly recommend to everybody, especially musicians. So what is listening and how is it different from hearing? Listening is awareness, okay? So it's an awareness of what's going on in our body, right? It's an awareness of putting your attention on the singer as they're emoting their song, as they're using their voice. It's putting your attention on the guitar player when he goes into his solo, okay? It's that using your attention and your awareness as a focus, as like a flashlight. In the Tai Chi form, in the push hands, as I mentioned, you have two minds on one connection, right? You're using your awareness. One person is here and you've got this connection between the two of you and you're both putting your awareness on that connection and that really makes that connection so much more powerful because you're both listening to the same thing and you're doing this in a collaborative way. The other thing that this does is it puts you in the present moment. So very often we grasp things that happened in the past. It might be a mistake that we obsess about or we grasp to the future. We think about all the myriad possibilities and that leads to fears and phobias, okay? And by using your awareness and putting your presence, your attention in the present moment, you shorten that aspect and you're right here, right now, aware of what's going on in the room, in your body, right this moment. And that lets you relax, that lets you open up and accept all that energy that is flowing through your body and flowing around you. So, being in the present moment, now the, I'm running out of time so I just want to quickly mention that I've used this in my own coding experience. There's been a number of times where I've been working on a library or a piece of code and something just like pops out at me. Like I never really realized that all I need to do is add this attribute to this class or refactor and generalize this one little function over here and suddenly it opens up an amazing world of possibility with your software that you never really noticed before. And by being in the present moment when you code, you can realize those things and allow that, allow those really serendipity moments to occur and really embrace them to improve your software. So, I think I'm pretty close to out of time, but these are the principles of Tai Chi and hopefully I've been able to connect them a little bit to what we do as programmers and software developers. And before I leave, I just want to kind of go off on a tiny little tangent, but it's a little bit related. So, I've talked to a lot of people over the years and I've felt it myself with various projects that I've been on. People get stressed out, right? People get burned out. Burnout in our industry is really very common. Just recently, I don't know if people know about G-Main, what G-Main is. It's like an archiving system online and it's really fantastic for open source mailing lists. Well, the guy who invented G-Main just recently said, I have to give it up. I'm totally burned out, right? It's just too much work, it's just too much stress. I can't do it anymore. And all these people came out when that was announced and said, we love what you do. We rely on you so much. Please don't give it up or at least help us to take it to the next level. I know people in the Python community, people who do work that all of us rely on, that if they didn't do what they did, what we do would completely fall apart. And yet they get stressed out and burned out and they wanna just throw up their hands and give up. So, as we know from the medical research, stress is literally a killer, right? Stress has lots of negative health impacts and it's a bad thing to, yeah, I know the music, isn't that great? It's all get up and dance a little. So that's actually a great segue because for me, music and Tai Chi and meditation are ways for me to relieve that stress, right? And it can be anything and what I encourage all of you to do is to find those outlets where you can let go of that stress because it'll kill you or it'll burn you out and nobody wants that, right? So it may be things like yoga, it may be praying or walking in the woods or a great one is spending time with your kids, right? Whatever it is, go and seek those things out and cultivate those because you need to find ways to relieve that stress. One of the things that you can always do is breathe, okay? Your breath is always with you, right? Every moment of your life, your breath is with you. It doesn't cost you anything to breathe. You're just, it's a natural thing. So take a moment every now and then to just quietly observe your breath. Feel the air go in and out of your nose or your mouth. Feel what happens when you take a breath and how it changes your body. And then feel what it feels like to exhale and how that changes your body. And that, putting your awareness even for a short amount of time, one or two breaths will relieve that stress. You can do it, it takes no time. You can do it anywhere, anywhere and any time. So you're writing that ranty email that's like somebody slided you on a mailing list and you're just like, argh, right? Take two breaths before you hit send and see if that doesn't just let a little bit of that tension, a little bit of that anger and stress just go away. So that's really all I have. I hope that some of this made sense and was kind of interesting. So I want to thank you all for indulging me and that's it. We have time for like two questions. So if you have a question, raise your hand. It better be a good one because there's only gonna be two. Anyone? No? Yes? Did Pep 292 actually get adopted? Oh yeah. That was an excellent question. Anyone else? Let me just, since there, if there aren't any other questions, I'll just plug these two things once again. This is The Music Lesson by Victor Wooten. Very enjoyable read. This is sort of his take on music and life but done in a way and sort of a parable. So it's kind of fictional and he doesn't hit you over the head with those ideas but it's really deep and really interesting. This is a documentary of Professor Cheng. Anybody who wants to sort of really learn more about the just fantastic journey that he took to take the Tai Chi form that we learned from China to the West can get this DVD and just came out and it's a really fantastic one. So that's it. Okay. In one of the early slides, you, the one that said Superior Ultimate Boxing, or whatever, you had a different name at the top. Tai Chi Chuan, that's sort of the full name for most of us just say Tai Chi or Tai Chi. Yeah, Tai Chi Chuan means ultimate. And actually most people who study Tai Chi for the martial aspects believe that it really is the ultimate martial art because it takes that energy and it deflects it, it yields to it and then it returns it in a really powerful way. I know people who study it for the martial aspects and they're really amazing martial artists. Okay. Can we please give Barry a big round of applause? Thank you.