Well, thank you. It's an absolute privilege to be with you this evening, and I think it's just an incredible innovation, I do think, in these Kupe scholarship. So, I really wanted to just again also echo Stuart's thoughts and acknowledge that I think this is a wonderful addition to the academic landscape in New Zealand, and I do think for the university and all of the energy and the people that have come together to make it happen. And to John McCormick Bain, I always get it the wrong way around in terms of with the double barrel, but I think it's just, you know, his generosity, what he's done for the roads, but also what he's done more broadly with these sorts of scholarships around the world, I just think is absolutely extraordinary. Look, what I wanted to share with you this evening is just some reflections on why I think a scholarship like this is actually needed. Clearly, there are many great scholarships in New Zealand at Auckland University around the world, but I do think there is something very special about the why of this scholarship and why I think it really matters. I'd also like to share with you just some reflections on the type of young people that I think this scholarship should be looking to unleash and should be looking to target. I'd like to again share some humble thoughts on, I think, the type of interventions and the type of apprenticeship and gifts that we can give these young people to unleash, and then finally just an aspiration around the impact, the long-term impact that I think is needed from these sorts of scholarships and the sorts of talent and young people that we do need to apprentice and unleash and inspire, given the opportunities and the challenges that I think our world is facing and closer to home that our country is facing going forward. And I actually couldn't think of a better construct than Kupei to actually help us find, nurture, grow and unleash some of the talent that we're going to need to really help steward and nurture our great little country in the years to come. So firstly also to congratulate you, I think the choice of name is clever. I really do love the notion of Kupei. And a couple of reasons that I claim I'm not, I'm an Auguste company, I'm not a scholar in any shape or form around the history of Kupei or my understanding of Fokapapa. But last Christmas I did devour Tangata Whenua history, that wonderful work which again I know Auckland University had a lot to do with. And there are four things about Kupei that I do think are incredibly symbolic of what this scholarship stands for. To start with, he was first. As New Zealanders we like to be modest and humble, but we actually do love when people are first. Be it Hillary, be it Rutherford, be it first to see the sun, every Fokapapa goes back to Kupei. Real or imagined, but every year we find a way back to Kupei. He was first. And I think there's something about that being first and being the leader of that type that I also think represents the scholarship very, very well. The second thing is he was real. As far as we know amongst there's always mythology and what was and we know Maui was mythology. But as far as we know on the balance of probabilities, Kupei was a real individual. He was a real person, he was actually the first to arrive in New Zealand. And again others claim him, there's other sort of evidence that we have. But the balance of probabilities he was a real individual. And I'll come back to why I also think authenticity and authentic leadership and a realness is going to be important. The fact that he was a real figure is important. The third thing, he was an incredible pioneer. And I think in the narrative of Kupei we actually don't acknowledge enough the skills of navigation, of seamanship that were required to actually have got here. The other thing is also he was a pioneer in a unique time. One of the insights for me in reading Tunga Te Fenawa was this notion that no one could ever figure out that how will we settle in the 1300s when we had sailing technology that could only deal with following winds when there have always been headwinds. So how did you actually reconcile that? Well the new hypothesis with quite a lot of evidence is that that was actually a period of significant climate change where the winds were actually the other way route. So rather than predominant westerlies they were predominant easterlies. So the technology was actually possible to get from the society islands to New Zealand. So I also think the symbolism of being a pioneer in a particular moment of time that needed it. And I'll talk a little bit about the context. Stuart kind of stole my thunder a little bit with Trump and the role that he's playing. But I do think there is something about the age that we live in and the need for genuine pioneers. And looking for, as it were, the DNA of individuals that are most likely to have the bravery and the intellectual curiosity that will actually see those ideas and the innovations that we're going to need. And the final element about Kupe in the Inhesals. There is something about that I love about the scholarship that it is ours. It's designed for New Zealanders, for Kiwis. And I do think there is in a global world. I do, for my sins, have five kids. They've all grown up abroad. I've brought them home because they wanted to study in New Zealand. But they're all of a sudden now looking at, you know, as I said, why not Auckland University? And well, you know, but how does it rate with Oxford and Harvard? And I think there is something about actually creating something distinctive and special that is ours. That to Stuart's point is that glue that is magical and can compete in that truly global world that we are in today. That it does take the Kupe-type interventions of the world to be competitive, to keep our best young people at home and engaged in our issues, in our country, in our way. So I think the fact that Kupe was ours, it wasn't a shing hair or a Christopher Columbus. He was our explorer. He was our pioneer in that sense. So I love it that he was first, he was real. He was a genuine pioneer and he's ours. And I do think the symbolism of that for the scholarship, in my view, I think you've aptly named these scholarships in a wonderful way. A little bit on the why. Why a need for a scholarship like Kupe? Why in this particular time? Well, I do think it was interesting if you heard, you probably don't, but for someone that lived in China for as long as I did, this 18th Party Congress that occurred last October in China was truly historically significant for some good reasons and some not-so-good reasons. But amongst the good reasons, President Xi did actually talk about we live in genuinely historic times. And when the Chinese talk about living in genuinely historic times, you normally do tend to listen, give them there the length of history that they look about. But you know, some of the things that I do think to add weight to that, if you look at the current technology revolution that we're in the midst of, it's 100 times faster and 300 times the scale of the original industrial revolution. For the mathematicians amongst you, you'll get that that's 3,000 times the intensity of what was the original industrial revolution. There's something unique about that intensity and that pace and that scale. Lord Stern, who I think is a brilliant individual that I've had the opportunity to work with over many years, in other words, leading advocates around climate change and the materiality of what we do. He talks about that we currently are consuming planet Earth at the rate of two planets. Now by anyone's definition, that's not really sustainable when you consume planet Earth at the rate of two planets. Most economists, certainly my organisation is writing a lot at the moment around we're at the end of a 50-year consensus around how you run an economy, how you run a society, how you run a democracy. We'll talk about us being in a period of the great disequilibrium where many markets and society and what we're just, we're out of equilibrium. What will it take to get back to equilibrium? How do we find the pathways there? So I'm a strong believer that we are in a period of time that's not all doom and gloom. There's extraordinary opportunity. But I think we need a level of intellectual curiosity. We need leaders who will explore and pioneer and do things in a different way in the way that Kupe was faced with quite a different climatic reality and the opportunity that he seized as a result of it. And I think we need to groom and unleash young people that have the skills, have the mindset, have the ambition, have the resilience to be able to be at the forefront of developing those things. And I, you know, as a kiwi through and through to my bones, believe maybe naïvely, maybe without fact base, but that we're actually really good as a people in those sorts of moments. When you look back to the very first Depression, a gentleman by the name of Edward Dragheer, our first Minister of Labour, actually created the world's ever jobs agency. The first ever matching of jobs and moving people around in the interventions to make that happen. We really did innovate much more than Carol and Webb did around creating a social safety net and creating opportunities for all. And I do think there's something about kiwis in our DNA that we are, maybe we cruise a bit too much when things are good, but when there is moments of dislocation and disruption, we are often at our best. And I believe it's also our young people that are at the best in those moments and that Kupe offers an opportunity to really find and groom and apprentice those young people that can really be at the forefront of this unique context that we live at. It's also interesting in terms of, in this moment of time, McKinsey and the company that I work for prides itself on sort of scooping the best talent globally. And we've always gone to the best universities in the world and sought to get the very best people. But for the first time we're actually going off-peast and are actually thinking quite differently about the sort of talent and the sorts of skills. This year we've gone looking for 100 Nelson Mandela's, baby Nelson Mandela's that have no academic background. We've gone looking for nature's aristocrats, leaders that have just done extraordinary things and have been bold and brave. We've gone looking for leaders that have had extraordinary setbacks that have had the resilience to overcome. We've gone looking for talent in quite different places. Now I'm not saying that I think there's an importance to have an academic foundation, but I also think the magic of coupé is also in that pioneering, exploring way, I think we should go looking for some different profiles, looking for some different characteristics of individuals that are going to define leadership of the future rather than the patterns and the recognition of leaders that we've had historically. And again, just in terms of not saying that these have to be the characteristics, but a few of the things that we go looking for that I again think in that coupé spirit that we could overindex on for our young people. I do think resilience, looking for young people that have resilience, either born with it or through that muscle of resilience being tested through something in their childhood or teenage years that they've overcome. I think there's something about empathy. Leaders that are able to empathise that have worked and lived in other people's shoes, understand it, can empathise and glue and bring teams together. I think there's something about people that it just take initiative, that are prepared to make things happen rather than let things happen. I think there's something about noble purpose. I think individuals that nothing guts me more that when I sit down with a talented young person and then you say, what's your aspiration and they say to make money? And your heart just sinks and saying, but it shouldn't be the ultimate goal. That should be a means to an end. What do you want to do? What's the contribution that you want to make? And I think finding young people that are just burning with youthful idealism, with noble purpose, that want to make a difference, that want to make a contribution. And I also talk about people that are global. What we mean by global. People that have a global perspective, but they're deeply local. They're deeply passionate about their heritage, their people, where they come from. Their global perspective and the global understanding of where they can contribute and how they can bring the best ideas back to a place like New Zealand and make real change happen. I then look at one of the things that Kupe could add to really unleash and unlock those individuals. Well, I think there's something about aspiration. I was talking about some of you. And again, I think many of us that have had the privilege of doing reasonably well in our academic careers and the like, there was someone that unleashed that seed of aspiration. I remember arriving from the country, being given a spelling test and put in the bottom class of arguably what was one of the worst schools in Auckland. Going home, sort of not quite knowing how I'd break this news to my parents, that I was sort of in the bottom class of a school that they were quite disappointed that was the only school they could get me into. And I can remember, but I said, Dad, don't worry, it's not good, I know, but don't worry, the teacher said and my father going, not really knowing what that was, saying, well, son, I think you could do better than working on the roads. But again, someone had unleashed that aspiration. And I remember the same teacher actually had a saying, he was also our rugby coach, but he had a saying that if your dreams don't scare you, they're not big enough. And that stayed with me for many years. And I do think with Kupe, there is something, particularly with our Polynesian young people where I don't think they often know how good they can really be. And I hope that Kupe could be one way that we unleash ambition. We unleash mindset in terms of individuals. I remember one funny thing with Oxford, in terms of Oxford, when you arrive as a Rhodes Scholar, your first induction of basically they try and beat the youthful idealism out of you, saying that many young people have tried to change Oxford, but over 800 years, the institution always wins. And I remember the sort of notion of just trying to squeeze out of you this sort of sense of youthful idealism. We love that we did the opposite, that we amplify that we, as it were, put sort of fuel on that fire of youthful, of unleashing the ambition of our young people. I also do think, and again I think it's brilliant that the New Zealand Leadership Institute is involved in terms of, I do think there's something about the pedagogy of leadership. There is something about how you lead yourself, how you lead others, how you lead institutions. And I do think being able to equip young people early with those often simple skills, but incredibly fundamental skills of how they steward their leadership ambition and passions. And I really think that that's wonderful. I do think there's something about mentorship and sponsorship. In every successful CEO, in every successful public sector leader, in every successful academic leader, you will always find a sponsor or a mentor that had that arm around the shoulder apprenticeship. And I really think the wonder of that is building that in. I think mentorship and sponsorship is absolutely critical. And I think a wonderful intervention. I also think there's something about just the exposure to ideas. I remember having dinner actually with Edward De Bono in Auckland many years ago and asking him how you've been so intellectually productive over the years. When you look at how many books, the ideas, the range of topics, and he said it's simple. I'm in a different city every day. I invite 12 interesting people to dinner and I get provoked just by the exposure to ideas. He then quoted me, the GK Chester, that creativity is finding a great idea and forgetting where you found it. And then he said, and I connect dots. And for me, the magic is just being exposed to ideas. And I connect. And I do think, again, the wonder of some of the international places with the Rhodes Scholarship. I worked harder at Auckland University than I did at Oxford University. In many respects, the quality of the tuition was higher at Auckland than at Oxford. But there is something about the exposure that you get to the breadth of ideas at some of the world's leading universities that I think in today's day and age we can replicate that. We can actually make that happen. And I think, again, Kupe could do that extraordinarily well. So I think there is something I just love, the design, the pedagogy of Kupe. I think there's something truly distinctive that not only will you find these special young people, I think you're going to add to them in ways that are more unique and more special than even things like the Rhodes Scholarship does for young people. So I think that that's just extraordinary. And long-term, I do think the impact, when you actually take, you know, when you look at what has occurred with history, if we have a, you know, we start with a cadre of 20 young people. When you think of, you know, great revolutions, what it's taken to move countries, I've always been inspired by William Wilberforce, the individual that really led the abolition of slavery in the late 18th century in the United Kingdom. Again, people forget slavery was the largest industry in the UK at the time. So being able to sort of turn over and remove the largest industry, that's not a trivial thought. But there were a dozen individuals that did that, that did, it wasn't just Wilberforce, it was Peel, it was, you know, several others in terms of that were that team. If it took 12 people to overthrow, arguably, one of the greatest evils of our time and destroy the largest industry at the time, what could 20 young people do? And 20 young people, not just with one year, but over a generation that if we select for them, if we apprentice and grow them in the way that we attend to, and that they have this unique moment in time, that I do think is actually pretty special in terms of which pathway we go. I mean, again, I'm always optimistic about that New Zealand will always find the right way and will always get there. But there is nothing if we could unleash, I think, some of our best talent, apprentice it, inspire it, unleash it, connect it, mentor it. Then I think when we look back in 20, 30 years' time, we may actually look in this humble gathering that the corner in Prince's history is actually being really pivotal in our nation's history, that we actually sowed the seeds of growing some of our greatest leaders and our greatest young people, that not only did magical things for our country, but actually provided a little bit of a beacon on a hill for a world that desperately needs it when you have the leader of the free world defending the leader of the not-so-free world in terms of where it is. So thank you for being here, Stuart. Thank you for everything you have done and your leadership initiative. For all of those that have done the real hard work to make this happen, I do think this is the start of, I think, something that will be pretty special and pretty unique and that we'll look back in the years to come to say that we've grown some extraordinary young people. Thank you so much for listening. Thank you.


As we've briefly discussed earlier, a macro is a special kind of function. When called in our code, a macro takes its arguments as raw reader data, and the reader data returned by the macro call gets inserted in place of the macro call itself. For creating macros, closure.core contains a macro called def macro. Here we create a very simple macro called if not. This macro function has two parameters, condition and expression. The list function in its body returns a new list containing its arguments, so this macro returns a list with a symbol if, the value of condition, the value nil, and the value of expression. So this call to the if not macro is passed two un-evaluated lists, one starting with a symbol greater than and then the numbers three and five, and the other list has a symbol print and a string high. And then this macro call returns if greater than three five nil print high. This new list returned from the macro replaces the macro call and is evaluated in its place. Effectively, this if not macro we've created works like an if with one expression after the condition, except if not evaluates the expression when the condition is false rather than true. Now to make if not a more complete opposite of the if special form, it should also work for two expressions after the condition. We can give the macro multiple erities just like we can with a regular function. Here we added an erity with three parameters, where the parameters expression two and expression three get reversed in the returned if form. So now we can use if not with two expressions, they get their position swapped in the returned if form. So this macro call here returns an if form with the same condition, but with the two expressions in reverse position. Though this example if not macro is reductively simple and so not very useful, it does demonstrate the basic pattern of a macro. The macro takes input reader data and somehow transcludes it into some kind of code template. We'll go a little deeper into writing more complex macros, but it's important to make clear that while you should feel comfortable using the macros provided by the language and APIs, you should feel under no obligation to create macros yourself. Macros are for extending and refining the syntax of the base language, which is not something we should be doing in most application programming. As powerful as they can be, macros have two big downsides. First because macros are written to process source code at compile time, it wouldn't make sense to treat them as values like we do with regular functions. In fact, the evaluator throws an exception if you attempt to use a macro as a value. The second big problem with macros is that because they can rearrange and supplement code in strange ways, a reader unfamiliar with particular macros will have difficulty reading code that uses them. Every closure programmer becomes familiar with the standard library macros as they learn the language, but when code uses many custom macros, even experienced closure programmers may get confused. So you should definitely prefer regular functions over macros. Only if you're attempting to extend the language with a library or framework should you seriously consider creating macros yourself. You may have need to generate unique symbols. The genSim function generates a symbol that ends in a numbered name that is guaranteed to be generated only once within the run of the program. By default, the number is prefixed with g underscore, but you can specify a different prefix. Here this called the genSim with no argument returns some symbol starting with capital g underscore followed by some integer number that has not been previously generated. GenSim called with this argument string foo returns a symbol starting with the character's f-o-o followed by some integer that has not been previously generated. So why would we want to use genSim? Well the genSim function is useful in macros that return forms defining local variables. If a macro returns say an fn form that defines a parameter foo, this foo might conflict with another foo defined in the context of where the macro is used. For example, in the second macro call the argument foo is supposed to resolve to something in the context of the macro call, but because the macro encloses foo in an fn form defining its own local foo, the foo of the call gets erroneously resolved to this local parameter. To fix this, we use genSim to name the local variable in the form returned from the macro. Now each time we call the macro, it generates a symbol name that isn't used anywhere else in code, assuming that is we don't name any symbols in the format g underscore x and why would you do that? So any symbol we pass into the macro won't conflict with any symbol created by the macro. If a macro returns a symbol in its reader data that doesn't represent a local binding, that symbol is resolved in the context of where the macro is called. What we generally want, however, is for the returned symbols to resolve in the current namespace of where the macro is defined. We can fix this problem simply by fully qualifying every non-local symbol of a returned forms. Here for example, if the symbol ted in the returned form of this macro is supposed to resolve to ted of the cate namespace, we should fully qualify the symbol. A less cumbersome way to fix this problem, though, is to use what's called syntax quoting. Syntax quoting, however, is a little complicated and we won't be creating our own macros in the rest of this course, so we won't cover syntax quoting here.


Recently, I completed the Master of Science in Informatics at San Jose State University. It was my first fully online program. The professors actually made the transition very seamless for me. They're very flexible and they're actually easy to contact whenever I have questions or I need to request for an extension for an assignment or a paper. My cohort was very diverse. Some were clinicians, they have healthcare backgrounds, and some were purely IT professionals. I think the demand for the informaticists will continue to grow as information technology becomes more integrated with the healthcare industry. There is going to be an increase in the demand for clinicians with a background in IT.


Here's how I managed a long distance relationship while I was in medical school. Now while I was in medical school, my now beautiful wife was three hours away in a completely different city. During that time we had to figure out how to manage a relationship while still being busy as a medical student. Number one is we made sure that we always prioritize having conversations on a daily basis. Usually this meant that in the evening we would have a Skype call or just a phone call to catch up on each other's day despite how busy I was or how she was with her school. Number two is we tried to make a minimum goal of having one to two hangouts per month where either I would drive down or she would drive up and we would have an evening or a day completely to ourselves where I was in a student and her personal obligations were also put to the side. We could just focus on each other. And then finally number three is something my wife beautifully says which is to focus on the two C's which is communication and compromise. Being a busy medical student definitely required her to do a lot of compromising on how available I was to our relationship but we made sure that we focused on that communication. If you want more insights like this one of what it means to be on the medical journey make sure you hit that like, subscribe and follow for more content just like this one.


This is an honor and pleasure to be in front of you, and congratulations to IDMA, congratulations to my dear friend Dr. Bhattra, and also my fellow jury members. If I have to describe my experience in the process of going through the jury, the event, I would say that it's been one of the really transformational events for me because in those 4-5 hours we really didn't realize the passage of time. We are in the business of creating experiences as you know our brand club Mahindra is all about experiences and we have a credo called making every moment magical. When I look back to 7th August when we did this process, I thought those moments were truly magical for me because you know what? A big insight for me was that we were using logic to judge magic because the stuff that we were seeing was magical and we were trying to use logic to see magic and it was difficult and we also had couple of moments where we had to tie for bronze as well as silver and in fact in one case even gold. So I think one more insight that I got was that there is a huge work happening at the back end. For example, there were things like people were talking about deterministic insights leading to very sharp targeting particularly in the area of the AIML. I am noticing that the technology and digital is becoming a very heavy combination and I believe that we are second to none in the world. So we are world class that was a big learning for me and I found some friends of mine on the jury so that was another payoff that I had by the way. And I realized that I think IDMA as a idea is fantastic and you know what? In the last 130-140 days we are all now multiple generations are now hooked on to the digital device as everybody is digital now and they say that after 66 days of following a particular routine that becomes a habit. So we are now habituated to now virtual ceremonies, virtual juries and looking at things in our homes with complete uncluttered mind and looking at things. And I think we will be able to use both our right and left brain going forward in being able to judge the magical entries that have come through. Of course let me not underplay the fact that I saw huge innovation, I saw impact and I think I have personally learned a lot. It's been a great, great experience for me wishing all the winners and most importantly the organizers who did a fantastic job in creating this event. This could not have been possible had it not been for an extremely committed in this whole experience for us. Thank you so much, wish you all the best.


I'm missing a few players off an international duty, some seven players. Here they are starting with Shaquon Davis, Suley Makala, Fitz Roy Cummings, Shaquille Dyer, Odain Murray, Kimoni Bailey, Rowan Howell, Marlon Allen, Romeo Guthrie, Acasa Chung, and Devonte Campbell. Chung, of course, very young still but cut his teeth at Harbourview and Theodore Tappa Whitmore is the man directing affairs. Yeah, Chung will be up against his old club. Two goals so far this season. Here's Harbourview, they're starting with Antony Bennett in goal, Oderland Harding, Trey Bennett, Shamari Dyer, Omar Thompson, Shaquille Bradford, Romain Brackenrich, Ja'Shawn Anglin, Ajouma Johnson, has left Arnhit Gardens now with Harbourview, David Reed, and Cassine Priestley will provide the prompting and the passing from midfield for coach Ludlow Bernard. Yeah, I think for Harbourview they have a lot of work to do. Nation got us on the way under the bright afternoon sun. Goal saving clearance from Cassine Priestley there. Then here's Chung, to Guthrie. Guthrie lines up the effort straight at Antony Bennett, just drifting to his left just a little bit. Then Guthrie found this pass, Bailey. Ball wouldn't sit for him, he was under pressure from Brackenrich. He'll have a big say in the game though and then look at this, Gamble stepping inside the tackle of Trey Bennett. Referee Nation, expert in position. Talking about expert positioning, what about Antony Bennett saving from Acosta Chung, his former teammate at Harbourview. Here's Devonte Gamble. Romain Guthrie lining up one, got the power for the direction off and then Bailey's cross or his free kick rather, begging to be turned in at the back post by Cummings. Cummings didn't stretch, didn't gamble. Then look at this. Dyer onto the forehand of Bradford. Beats the goalkeeper, all ends up. Ball canons off the crossbar and that's all close and that's as close as Harbourview came. Chamari Dyer getting the jump on the defenders and then look at Gamble. Exchange passes, Devonte does with Suley Makala, runs on to it and a big say from Antony Bennett at his near post. Lovely football all around, attacking team and the goalkeeper for the defending team. Then after an exchange of passes, Gamble slips it to Bailey. Bailey steps away from Trebin, from overland hardening and rifles it into the top left hand corner around hardening away from Dyer. And as I noted, he's shot this ball with so much force, force hammer he applied to that. Too much power for Antony Bennett to do anything with. Bailey exultant and why not? And then got through it to the back stick. Bailey with the head down, comings. Brilliant stop there with his feet from Antony Bennett. Marlon Allen, take note by Chamari Dyer. For some reason, Chamari Dyer had it in for Marlon Allen from the first whistle and paid the price. Look at Shandy James. This is Bennett, but Bailey rather, his left foot didn't get the power this time. And Bennett with the smart save. Joshua Nangid with the free kick straight at Shaquon Davis and then look at this. Look at Guthrie, acres of space. He opens up the harm of your defense. The slip from Trebin and it helped him. Then it's sliding all over the place and then look at Devante Gamble. Insouciant with the finish. The pass deserved a sweet finish. And Devante Gamble applied it with a cherry on top. Oshane Nation calling time after about 93 minutes. That's all she wrote. Mount President of the defending champions. Two goes better than half of you this afternoon. Two nil. Dwight Jeremiah is in place and he has Devante Gamble on another match. Devante Gamble, normally when we see a car operating certain way on the road, we tell him to lift the hood to see what engine is in it.  I mean, what are you operating on? I mean, you're bundling energy out there. Well, it's pure hard work and not giving up. It's just work, work, work. I mean, in terms of running and doing your work behind the scene, you must be doing more work than other players on this. Yes, definitely. Most definitely because you have to work harder in training to make much easier. You scored a goal today. Really good finish. How fast you got from Guthrie? How good was it? It was a wonderful pass. All I had to do was put the ball in the back of the net and that's what I did.  Your goal was a good one. Bailey's goal. You would have seen his third goal that of the season and three classical goals. Good goals, you could say. Yeah. Excellent goal. Well, Campbell, you're doing well. You're really causing a lot of problems in this Premier League. Long made continue. Good goal. Good game. All right. You have it. Campbell and we'll have coach Bernard coming into the view here shortly because his team would have done really well. You'd feel on.


So, I'm going to present, to give you basically what is five landing talks end-to-end, because I'm going to present you what is new in PyPy, what's new mostly from last year, and a lot of small things are new, small in quotes. So what is PyPy first? PyPy is an other implementation of Python, I guess you kind of know that if you are here in my talk, it's mostly a dropping replacement, which means, well, you have this project that you see Python, you start with Python, you can start with PyPy, and it should work the same way. So so far, PyPy supports Python, the language version 2.7, now, like, in these few months, it's about to support Python 3.5, the language, and, well, the advantage, why would you use PyPy instead of PyPy, the most common reason is just performance, there are a lot of programs that are just much faster on PyPy. Okay, so first, let's talk about PyPy 3.5. So it's Python 3.5 support, which is released in, well, Beta was the name I wanted to say, I was told that maybe I should use another name, so I'm using Gama instead. So why is Beta not a good name? Because it works, because it's very stable, it's very fast and everything, but it could be wrong in a few details everywhere, which means it's probably missing some functions in the socket module, this new socket method there is not implemented, or this new extra keyword argument of that function over here is not implemented, it's this kind of thing that is not done yet, but it is there, and it works, and it's fast. So the current status is please try it and report issues if you're actually finding this kind of missing functionalities, because it's not, like, just by running the cbath test suite, we find most of the missing functions, but not all of them. So a special thank you goes to Mozilla, because Mozilla has actually been giving us a big grant, like, four people one year to do this work of Python 3.5, and this is just a set of benchmarks, running on Python 3.5, this is just benchmarks for the new keywords async and await on 3.5, which basically shows that it's fast, so the red lines are speed in requests per second on PyPy, and the blue lines are on Python, it's async, sorry, A, E, O, HTTP, G, event, turn on the web, curio, and H11, and on the red twisted incline. So it's fast, cool. I should mention for completeness that this doesn't, I mean, if you are writing an async HTTP, and you are writing it for performance on cbath, then you would probably not use any of these, but instead use things like libuv, which is pretty fast on cbath, but which is not included here, because it's all c, basically. These plots are more about performance of pure Python code. Okay, so the status, it's roughly complete, so complete 3.5 support plus the f strings, which is a new feature in 3.6, which we also added into 3.5, because why not, and because people tend to like this feature. Okay, it has good performance. It is tested mostly on Linux only so far, which means that some windows or OSX specific interface are probably missing. The first final version, I mean, the first version that will not be code beta or Ghana or whatever will be released, like, soon. And, well, once we get there, the confidence that will continue and progress to Python 3.6 and probably 3.7 next year, et cetera. Okay, so this was my first lightning talk. The second one is about scientific stack. So if you are using the scientific stack, you are using, well, first NumPy. So the news from last year, well, first, it's that, well, there are two different kind of modules that you can use inside PyPy. One is NumPy, that's the standard version of NumPy that you download with the installed NumPy. And there is another one called NumPyPy, which is a built-in module of on PyPy, which is not complete. So what we did is basically this. NumPyPy is deprecated, don't use this anymore, instead just use the standard NumPy. So what we did is to support enough of the C layer, the C-Py layer in order to be able to run NumPy. So the end result is that NumPy really works. I mean, it's here, it puts 99.9% because there are two failing tests out of the thousands and thousands and there are bad luck strings or something. So another interesting bit is that it works on PyPy, the standard PyPy that implements Python 2, but also on top of the PyPy that implements Python 3, 3.5 in this case. Okay, and well, from these points, you can actually build on top of it and things mostly work, as in you can run a Jupyter, Markiplier, pandas, et cetera, and all this package mostly works in PyPy. So here is an example that is not at all impressive, but so it's a standard Jupyter notebook and I can run this and I get a Markplotlib to print me, oops, sorry, I got Markplotlib to print me this nice graph. So, well, the only thing here is that it happens to be running inside PyPy 2.7. It would work just as well inside PyPy 3.5, so it works. Okay, so what I said about the C path and C extension is more generally if you, all siphon modules work or more generally any C path and C extension module mostly works nowadays out of the box on PyPy. So this is all thanks to CpyX which is our own C path and C API re-implementation or emulation. So, well, yes, it's an emulation which means that it is bit slow. So it means it is slower to run all this NumPy and the complete scientific stack. If you run this and compare the performance with the performance that you would get on top of C path, you will find that PyPy is slower. So, less so than up to last year, but still slower. Well, there are work rounds. So, I mean, what is slow is really the boundary between PyPy and C.  On the other hand, if what you are using NumPy 4 is computing the eigenvectors of one huge matrix, then it's a complex lengthy process which is just as fast because you cross the path and C boundary exactly once. So far, there is this speed hack here that, well, don't use it basically, but it's very good right now. You take your NDRA, you consider it as a buffer, you get a CFFI pointer to this address in memory, you cast it to a double star which means an array of doubles, and you get P which is a pointer to the first and all items in the array. So, once you have this P, you can do P bracket 0, P bracket 1, etc. Index it. Just by doing that, you are replacing this where every single time you write this, you get a very slow process that needs to go through layers and layers. If you replace it with P bracket index, then it is jittered into one machine instruction. So it's great for speed. So, well, obviously what we are going to do in the future, in the near future probably, is actually add a few special cases so that this NDRA index becomes as fast as that hack. Okay, so we have planned to improve. Some funding would be welcome. And yes, for now, just try it out on your own code and see if it helps. Basically, if you have anything that just use NumPy and does nothing else, then no, it's not going to be faster on PyPy. It's probably going to be slower, yes. But if you have some bigger programs that really has part that are really doing logic in Python as well, then the complete speed of your complete program might get faster by running Python and PyPy. Okay. So now, a completely unrelated topic, software transactional memory. This is a topic that I kind of talked about the past few years. PyPy STM, software transactional memory. It would be a way to get rid of the global inter-petalog. And I've been asked about ten times during this week, what is the status? So, here is the answer. Sorry, it does not seem to work. Why doesn't it not seem to work? Well, the basic idea that you would take, I mean, the idea that a thought might work is that you take your program, a big and complicated program that does tons of things. At one point, it has a loop. A loop that does something on every element of some collection. But every single thing it does is mostly independent. So, by adding, like, you would add a hint or something. And then the process would turn the execution of this mostly independent part to be really running parallel. And then you have a conflict detection system to figure out which of these things are running parallel actually gave the correct answer. The correct answer, meaning gave the same answer as they would have given if they were not running parallel. So, it's a very nice idea. However, in practice, you get conflicts between the threads and the conflicts are hard to find.  Only to find one conflict. And then, yes, it's obvious it's this thing that conflicts with that thing. So, you fix that, try again, poof, exactly the same bad performance as before. So, repeat the process. So, you need to repeat the process several times. You have no clue how many times. And then, at the end, suddenly, you get good performance. Yes, cool. It works. Well, and then the main problem is that it is your program, like the program is not chosen, right? The next time you change anything in your program, poof, you're going to reintroduce some conflict and you're back to square one. And yes. So, so, so, I think this is enough of an issue to kind of kill the idea. It's like you cannot test for the results unless you do some kind of complex test that the execution runs in less than 30 seconds. And then you hope that when you're running the test, your machine is not actually doing anything else, for example. I don't know. So, yes. So, the idea does not work. I mean, it's put on hold for now. And, well, the kind of thing we are thinking about is, yes, okay, let's do a standard JIL-free pi-pi. It would not be an STM pi-pi. It would be basically the same thing as Larry Hustin is doing for C-Viven. It's a lot of work for us. Well, see that in talk later. Okay. Reverse debugger. What reverse debugger is something that gave a learning talk last year here? So, a reverse debugger is an essential tool that everybody needs like once a year or once every two years, something like that. Myself have needed it twice since the last year. But it's essential. It's a debugger with the ability to go forward and backward.  And then, well, like in 95% of the case, you can think ten minutes and figure out why it's nonsense and you fix the bug. But in the five remaining percent of the case, you really have no clue why you are getting this nonsense. And in order to figure this out, well, use revdb, basically. Revdb lets you follow the values where they come from in reverse. Really. So, you put a watch point on a value, for example, and you can run your program backwards. So, the program will run until the point where that value changed. It's just very useful. So, here is a URL. It's implemented by a different version of PyPy. But it is a version of PyPy with almost no restriction like it's a version of PyPy which can run C5 and C extension modules, for instance. It's fine. You cannot of course go inside the C5 and C extension and go backwards step by step. But you can go backward over a complete call to a C extension module, for example. That works. Okay. So, last, a few random changes that occurred in PyPy last year. We improved to git, mostly by some reduction in warm-up time, which means that, like, if your program really, if your program really took a lot of time to start, then now it takes a bit less time, probably still a lot, but less. We reduce the memory usage, memory consumption, mostly the memory consumption that occurred during the start-up. So, this is just general git improvement. We have VM prof nowadays. So, VM prof is a high-performance profiler for Python codes. So, think about hotspot, for example, which is a very old profiler for C Python. So, it's something similar. But, well, the advantage of this is that it works the same way on Python, C Python and PyPy. And also, if you use the PyPy version, you can actually follow and see this function here was executed by turning the function, this loop inside the function was, like, this loop inside the function was turned into machine code, and you can actually see the machine code. So, you can see when things don't go right for some definition of right, CFFI. CFFI is a way to call C from Python. And it works identically on C Python and PyPy. So, it is a reason why I think CFFI is great. But, well, from what I've heard, from what I regularly now, from what I regularly hear inside conferences, CFFI is actually used by a lot of projects and that includes a lot of projects that don't have anything to do with PyPy. So, the biggest improvement since last year is embedding, which means basically calling Python from C. So, if you have a program written in C or whatever, actually C, C++. So, if you have this big program, you can write, well, you can write a bit of Python and then compile this, well, you write a bit of Python, then you execute the CFFI compiler on this and the output is a standard C library. A standard C library that has the interface that you specify. So, it means really you can write any C library with any interface. So, you write it purely in Python. And people are actually using it on IM, too. So, it works. Cool. Okay. So, next year, what is going on, what is going to happen inside PyPy during the next year is probably something like that. We will continue to polish PyPy 3.5, probably go and start 3.6. NumPy and the scientific stack, yes, we will continue working on it. And, I mean, by now, it's mostly like fixing the major performance issues. And we have actually ideas about how to fix them. So, it's just work, just quote, quote. We will play with PyPy without a gill. And do things like reverse debugger. We need to port it to PyPy 3.5, which means basically writing an extra module, which means to be adapted from PyPy 2.7 to 3.5. Well, this is the kind of thing that we are looking forward. So, thank you. Here is the website. Thank you. Thank you, Armin. Great talk. We have six minutes for questions. So, okay, just one question there. Do you hear me? Because some people have trouble hearing speakers, exactly. I understand. Thanks for the very interesting talk. There was another talk that mentioned the new frame evaluation API from 5.2.3 or something, which is used by PyCharm. I saw it in a PyCharm debugging talk. It's also apparently intended for jitting CPyton. Can you shed some lights on how this relates to PyPy and whether, I don't know, yeah, you know more about this? Yes. So, yes, it is indeed probably a good thing for CPython. But it's completely related to PyPy. I mean, at the end of the story, I would say, what we're going to do about it in PyPy is just, well, add support for this indirection for the CPython extension module, and that's it. So, you said that you now support Scython really well. Do you support Scython specifically? Do you add support for Scython or is it just that the improvements in CPyhacks to make it possible to run the extension modules that Scython generates? And if that's the case, did you do special things to make sure, in particular, Scython worked well or did it just fall out of all the work you did on CPyhacks? Right. So, no, it is all standard CPyhacks work. But, well, we really had the problem of running this big Scython module like pandas or something on heads to tweak CPyhacks until it supports enough of the CAPI, like enough of the details of the CAPI to be able to run because because Scython is doing a bit of crazy things like making up some PyFrame objects or something like that. I got a question about the STM. Would it be possible or useful just to have a limited subset of PyPy supporting STM like a list dictionary on a set implemented that rock is STM? Would it be possible? And does it fit in the philosophy you follow with PyPy? Yes, I don't know. I don't know. I mean, yes, maybe it is indeed a good idea to have an independent module in which you send code but not generic Python code but specialized code and then have it run using STM, maybe. You said that CPyhacks, calling across CPyhacks is slow. What kind of order of magnitude of slow are we talking? Order of magnitude are we talking nanoseconds, milliseconds? So, what order of magnitude I'm not sure, maybe five times something like that, I think. I mean, it's a number that can be improved by adding more special case. I mean, CPyhack often has tons of special case for calling a C implementation of a built-in, for example, and we don't have them just because. So, it's a matter of adding that but, yeah, they will always be maybe two or three times slower order of magnitude. Yes, too bad. Hello. As you know, we have the end of life of Python 2 coming up fairly soon in 2020. Is the end of life for Python 2? Is there plans to keep, I guess, progressing with the PyPy 2 after that or will that be seen as building a dead horse? Yeah, that's a very loaded question. I don't exactly know how to answer it. I mean, how, well, I would say I imagine that we'll just continue supporting Python 2 forever basically just because PyPy itself is written as a pile of Python 2 code. But yes, that's about all I can say. So, sorry, we are running out of time. Well, let's thank Armin again. Great talk. Great project.


Welcome back to SiliconANGLE.com's exclusive coverage of HP Discover in Frankfurt, Germany. I always want to say Munich, Dave, but you know, we're in Frankfurt, always have those memories of going to Munich, but Frankfurt's where all the action here. Frankfurt's where all the action is at SiliconANGLE.com. We're extracting the signal from the noise here, and this is theCUBE, our flagship program. I'm John Furrier, the founder of SiliconANGLE.com, and I'm joined by co-host, as usual. I'm Dave Mellon, Dave Mellon.org. Go there for real-time research. We've just released a new report on software-led infrastructure. It's all the rage, so check it out right on the homepage, wikibon.org. We're here with Nina Buick, who's the CMO of Connect. Nina, welcome back to theCUBE. Thank you, it's great to be here. Another Discover, this is your home turf, right?  It's all your people, it's the customers. You're focused on the customers. The whole ecosystem is here, right? This is what I love. It's a great opportunity. I think about the first Discover that I went to, seven years ago, was called HP Technology Forum and Expo, and it was in 2005 when Katrina hit New Orleans, and everybody moved to Orlando. What's changed in seven years, there may have been some leadership changes, right, whatever, what hasn't changed is the enthusiasm. You come to these events, everybody's excited, everybody's here to learn about the products, but also to learn from each other, right? Because this is where they can come. This is where friendships are forged. This is where people help solve each other's problems, and it's awesome. Yeah, it is awesome. So, what are people telling you in the ecosystem? You mentioned some of the changes that are going on, but HP customers remain very loyal. What are some of the things that the customers are challenged with that are on the top of their mind for 2013? Sure, so we recently did a survey of our members around the world, and as always, I think budget tends to be the number one issue. So, people come, especially to these events, to find out how to create efficiencies, right, doing more with less, and I think they can do that, and HP's got a great answer and a great story to tell.  This is like a decade's worth of news in one day. It's amazing, the technology coming out of HP that actually serves a small to medium-sized business. Amazing. Nina, I have to ask you because obviously everyone wants to know, and prior to coming to the show, obviously we get pinged a lot. SiliconANGLE has been covering HP for a very long time. Obviously I was there for nine years. People kind of know my biases, but we've been very critical of HP in the past, publicly, obviously there's a track record of news and bad black eye for HP right now, currently in the marketplace, but there's so much positive things going on, and one of our goals here is to extract those nuggets and shine them and show the world what HP's got and try to get the real story here at HP. But I wanted to ask you specifically, relative to the general sentiment about HP right now, given all the turmoil, we don't need to kind of go there at all on that particular topic. But there's a loyalty with HP employees. We're talking to entrepreneurs who've made a lot of money selling their company HP, who are sticking around. The customer base is very loyal, but there are some reputation issues out there around HP, currently given the kind of the mainstream BS that's floating around. What's your feeling, what's your sense as you hear and talk to customers about how they're responding to that and what's the latest on that? Because that's important, people want to know. It is important, so I've got two answers to the same question. The first is, I can only tell you that our community has grown. So even with all the noise going on at HP, our community in the past three years has grown by 19,000 members. So while there may be noise going on at the top, the people who are using the technology are not really faced by that as long as innovation continues to happen, right? The next piece is I recently spoke with a CIO and he told me that even with, because I asked him specifically, with the changes up at the top, did this impact your decision in investing in HP? And he said, absolutely not. He said, let me tell you something. He said, what's important to me as a CIO is that the people that work with me directly and they're selling me the product or taking good care of me and that the product is world-class. And that's really the concern, really, is are the customers being taken care of at the product and service level? So I think the answer is yes, from my experience. There's a lot of noise, true, and we're seeing Meg trying to take care of that with her turnaround plan, which we've been supportive of actually. So we're cheerleading for Meg and we think she's doing the right things at this point. I mean, we're hearing just great things about HP but the press is killing HP. Well, it's almost like in search engines, when you have a bad news story, you got to just keep burying it with good news so the noise goes down, same kind of thing. And there is a lot of good news. The Cube certainly has the ability to amplify the news. So that's our job. And people look to us to try to figure that out. That's why I wanted to ask that question because it's one that's kind of sitting out there that needs to be addressed. And it's okay to talk about it. Say, hey, you know what?  Let's just get through this. And it's still the same game, serving customers. We heard from Dave Donatelli earlier. I mean, very, very impressive set of products on the infrastructure side that has been just throwing up a lot of profitability. The software side is kind of bulking up. They got to digest autonomy and figure that out. Vertica doing very, very well. So they have a good portfolio. Can they execute? That's the question. Well, I think that they're in a better position to execute because they're becoming more nimble. I think there's less layers now between the top and the customer. And I think that absolutely helps you being nimble that way you can better serve your customer. So let me ask you a question about your organization now and the customer base. Have you done any surveys that lately give us an update on kind of what's happening with the pulse of the community that you guys are involved in? Just give us an update on that. Sure, absolutely. In the recent survey that we did in terms of new technology, everybody's looking at cloud, right? Everybody is. They have to. There is no question. I just got a laptop from HP, a new HP Folio. There's not even a CD-ROM drive in it anymore. I mean, everybody gets their technology from the cloud. So in the enterprise space, people understand that's where they have to go, but it's doing it and moving there in a secure manner, right? That's the challenge. That's why they're here. Can you talk about Connect a little bit? Connect's an independent organization, right? Yes. A lot of people don't know about it. So take us through that. Sure. We're HP's largest independent user group, right? So we represent typically the practitioners, right? So we have 85% of our members are IT practitioners. About 15% are CIOs and VPs worldwide. We have 44 chapters. We have 13 special interest groups. And our goal is to help these individuals who've invested their careers in HP get the most out of their investment, plain and simple. Talk about the special interest groups. What are they focused on these days? Sure. So we have, again, multiple specials. We just added converged cloud. We have enterprise security and what they do is they come together. They talk about, again, sharing best practices with one another. If they have, they would like to influence HP in any way, maybe product direction. We're able to do that. Take that collective voice, give it back to HP and get a response. This is a global organization, right? Oh, yeah. So how often do the chapters get together? Is it a monthly thing, quarterly? How does that work? Some get together. It depends. Some chapters are country chapters. In the United States, there's many, many chapters. Some get together as often as every month. Some get together quarterly. It just depends on the community and how vibrant it is. And how's funding work? So we get our funding different ways. We have sponsorships. HP is one of our obvious sponsors. We also, HP has a ton of wonderful partners that we work with by advertising from us, that by booth space at events that we hold, signature events. We just held an event in San Jose. We had 200 people come from around the world to do an event. And it was fabulous. What was that event? It was the non-stop advanced technical boot camp. And we had Jimmy Trebek was there doing a keynote address. And he was awesome. He was awesome. Fantastic. All right, Nina. Well, listen, we really appreciate you coming by theCUBE and give us an update on Connect and your great energy.  So really appreciate seeing you. Thank you very much. Thank you. Okay, we'll be right back. HP still strong, loyal communities still deliver in the process of services. Nina, thank you so much. We'll be right back with our next guest after this short break. Thank you. All right.