Can everyone hear me? Okay, yep, cool. So yeah, as I mentioned, I'm Paul, talking about benchmarking and optimization of Rust libraries. And just as a little bit of intro to about who I am, so I'm currently principal engineer at Human Interest, Human Interest is a 401k processing company in San Francisco. You might be able to tell I'm not from there, so I've got an accent. And I've been working on Rust for a number of years, and as a result, I'm hit to create a number of libraries. One such library that I'll be talking about in a lot of these examples is the Rust Decimal Library, which is a fixed precision decimal number library written in Rust. So I've been told my accent's hard to understand, so I thought I would start off by giving a little bit of a 101 on the New Zealand accent. So essentially, if you take the vowels, you take out the O, and then you move the sounds of the vowels over one, that's the New Zealand accent. So if I say the word pan, you might hear this. If I say pin, you may be hearing that. And likewise, if I say pin, sometimes you might be hearing that.  But if you're hearing the word on the right, you may need to reverse engineer what I'm saying some of the times. So onto the talk. So the Rust ecosystem's growing. When I first put together these slides, it was just under 17,000. This morning it was around 17,700. It's very soon it's gonna be 18,000 crates. And so with all those crates, we're starting to use them in our projects. And we're implicitly relying on them and their downstream dependencies to really do the job correctly, securely, as well as quickly. So as a case point, really, is if you're using a decimal number library, you don't want that to be the performance bottleneck of your system. And you also don't want it to be the source of bugs as well. So to really be able to understand the performance of a system, the first thing we really need to do is be able to measure it. And really the idea of this is so that you can understand whether you're making positive or negative impacts to your library. And so just to really intro into this is that there's a couple of terminologies that you've probably heard around the micro and macro bench marking. So micro bench marking is where you're measuring a very small unit of performance. And macro bench marking is where you're trying to simulate customer application workloads. So when we're looking at some of these libraries, we may need to be considering both. And we'll go into some of that detail throughout this talk. So just to begin with, in order to benchmark, we need to know some of the tools that are out there. So cargo bench is the most obvious one to start off with. And the reason why is because it's included with cargo. It leverages the test crate. Test crates internals are unstable at the moment, which means that it can only be run on lightly only. But getting it up and running is relatively straightforward. So essentially we need to include the test feature and from there it exposes the bench attribute. The bench attribute indicates what functions should be called under when the benchmark runs. And within each of those functions, you'll see that there's an iter function. So everything inside there is what's being benchmarked. And in this first example, you'll see that the sub-functions being benchmarked in this particular example here. And the results being passed through to the black box function just immediately afterwards. And the reason that's happening is because we need to make sure that the compiler is not doing any sort of optimizations. That means that we're not actually testing what we think we're testing within that iter function. So running these results is pretty straightforward. It's a tabular format there. We've got the names of the tests on the left. We've got the number of nanoseconds per iteration on the right. And on the far right there, you'll also see the variance between the top and the bottom tests. So over time, you'll probably want to be able to compare these to make sure you're either doing things, things are improving or regressing. And so there's various ways of doing this. You could be using spreadsheets. You could be using all sorts of archiving strategies. But one tool that makes things a little bit easier is cargo bench comp. And that's a cargo plugin, which essentially if you pipe your bench results out to file, you can pass those files through to bench comp and it will spit out a tabular form like so. So the first thing you probably notice in this particular table is the red and the green. The red indicates that something bad happened, a regression, and the green indicates that something good happened. So either the same performance or an improvement in performance. So cargo bench is included with cargo, so it's pretty low effort to get set up. It's very fast to compile and execute and you don't need any external crates within your cargo Toml file. And with a good archiving strategy, you could also compare results from version three to version one if you wish to. The major downside though is that it's nightly only and the reason for that is that performance may be different and stable. You may be testing against experimental compiler features or whatever else, which means your results may be a little bit different. Cargo bench comp can be a little bit sensitive to thresholds. So in the previous example, there was green and red. I was actually running that against the same code without making any changes. So essentially, you can control the threshold, but you've just got to be making sure you're comparing like for like tests. So some of those tests were taken two nanoseconds. If it goes to the three nanoseconds, that's a 50% increase. The other thing with cargo benches, looping through sets of values can be a little bit tedious. And so with a decimal number library, you want to be able to test a range of values. Seven divided by three is not the same as six divided by three. A very different calculation that actually happens under the seams. And you can do this with cargo bench. It's just a matter of leveraging macros to be able to do all the boilerplate code for you. A second library which is out there, which is also viable to use is criterion areas. And that's inspired by Haskell's criterion library. It's been written so that it runs on stable by default, which means it also runs on beta and nightly. And getting that up and running is pretty straightforward as well. It's a matter of including the criterion crate and then overriding the bench commands so that instead of invoking the default bench, it invokes the criterion bench harness. And so within the code, relatively straightforward, we've got the criterion main function, which essentially is what is getting invoked by the harness, is the criterion harness. And instead of having the bench attribute, we have criterion group. So we had the bench attribute on each of the functions. Instead, you list them in that criterion group macro. The actual function that gets called is relatively similar. It looks similar in the fact it's got an iter function, as well as passing the result to a black box. However, the big difference there is it's wrapped around with a bench function. And so what that is there for is to name all the benches. So because you're not able to leverage the attribute, the bench attribute, you've got to be able to name them via a string for it to work on stable. One of the actual side effects of this as well is they do have bench function over inputs. So you can actually pass multiple inputs to a bench marking function also. The results of the both. So as you can see, it's not a tabular format anymore, but within each of those benchmarks, it does give you a lot more information. It's giving you the time, the percentage change, outliers, statistical significance, whether it regressed or not, et cetera, et cetera. So there's a lot more information there. And in addition, it spits out these graphs. And I actually haven't used these graphs much in practice. However, I can imagine this would be a great thing to show your boss, show that you're actually making an improvement there. So criterion's relatively easy to set up. And what I mean by that, it's an easy migration from cargo bench. The code was fairly similar. And it has some wayoffs, which turn out to be kind of nice in some ways. So bench function over inputs means you can pass multiple inputs to a single bench marking function. And it does provide statistics out of the box, which means you don't need a second plugin or whatever to manage that. The major downside is that it's quite a bit slower than bench. It takes quite a while to, I guess, warm up the tests and then run them. And I guess it really depends on what your use case is, but if you're wanting to run things quickly, do minor small changes, then this can be a little bit of a bottleneck for you. It does suffer similar threshold issues between iterations. There is a chat going on about that in one of the forums about introducing the ability to control threshold. But the previous example again showed regressions and nothing had changed in the code. And the last thing, which is more of just like a gotcha, is because you're naming your own bench marking functions, you've just got to be careful to not name them the same thing.  So before jumping into some of the practical things of performance, the other thing I just want to mention is just really understanding your application before running it under bench. So you can use instrumentation to help understand this. And the reason you might want to do this is to really understand what the internals of the application are doing before you... Understand what the internals are doing so that you can really make sure that what you're testing against is what's expected from a normal application run. And there's various tools to be able to do this, but the whole idea here is that you understand what are both expensive calls, but also high invocation calls. So in an example, for the decimal library, for division, for bigger numbers, you might be calling a subtraction function maybe 1,000 times internally, which isn't exposed by the public API. And so it's important that that particular function is tested under those sorts of loads. So we'll go into some of the practical things, and this one's gonna send them a little bit of a cop out because it's going back to the fundamentals. But essentially, some of the biggest wins you can get is really from re-looking at your approach. There's things such as early exit conditions, there's operational efficiencies, using bitwise shift and see if dividing by power of two. There's parallel operations, you've got dynamic programming, use of efficient types. We'll jump into use of efficient types a little bit more in this talk and just go into that a little bit more. But just as a bit of an example, we'll just talk about Postgres write performance. And so Postgres has a numeric data type, which you're probably all aware of. And to write out to the Postgres protocol, you need to essentially break a number into groups of 10,000 and then write out the number of groups that you broken into followed by the weight of the integer portion, science scale, and then followed by the groups of 10,000. So if we were to write out the number 3.14, then essentially we need to break it into groups. So we group, break it into the integer portion and the decimal portion. And the integer portion, we actually pad to the left with zeros to make it into a 10,000 group. And on the decimal portion, we pad to the right to make it into a 10,000 group. And so when we're writing it out, we write out two groups in this case. The first ones are integer portions of the weight zero. And the scale in this case is two because there's only two decimal points that are relevant in the 1,400 group. So that was relatively easy to explain from a base 10 perspective. If we had it in a string, for example, it might be quite easy to reason about how we might be able to implement this. We essentially chunk it into groups of four and pad the zeros and output the results. So if we were to do that in Rust, we might do something like so where we convert it to a string, we find out where to split the number so that we've got an integer portion and a fractional portion. We can then go through and chunk it by fours, padding to the left for the integer portion and padding to the right for the decimal portion and then writing it out to the protocol with the big Indian format down the bottom. And so if we were to do it this way, then say we had 15 samples that we're testing with, it roughly takes around 15,000 nanoseconds per iteration. So around about 1,000 nanoseconds per iteration for this particular example. And of course I wouldn't be talking about this if you couldn't do it better. So what if you didn't have to convert it to string? Well, you don't. If you take a step back and think about the pure math approach about how to do this, then you may think about how to scale up the number to the closest 10,000 group, keep dividing it by 10,000 while storing the remainder and keep going until you reach zero and you've got your groups. So we took the 3.14 example again. We scale it up to 10,000 boundary, which is 31,400. We divide it by 10,000. We get three with a remainder of 1,400. And we divide three by 10,000. With a remainder of three, we've got our groups on the right there and that's without having to convert it to string first. So implementing this in Rust, we could do the following where we essentially figure out what we should be scaling it up to, so the closest 10,000 boundary. I'm also using a couple of other operational efficiencies here which is instead of using the modulus and divider functions or the remainder divider functions, instead just taking the last two bits of the number and likewise also bit by shifting over to instead of dividing it by four. So we've scaled up the number. We then divide the number by 10,000 storing the group into array and finally we write it out to Postgres. So the performance of that is quite a bit faster. It's 5,000 nanoseconds versus 15,000 nanoseconds. And so we're getting a three times increase just from really looking at our approach. The first one was easy to reason about but the second one, if you take a math approach to it then you can get some clear wins just from doing that. So the next one I wanna talk about is fixed size slices performing better. So if we have two identical functions like so where one of them takes a fixed size slice of three and the second one doesn't, then the hypothesis is the first one runs faster. And you're probably looking at this and thinking, well, obviously it runs faster pool. The second one does all these bounce checks which the first one doesn't do. And you'd be right in this particular case. So the first one, well one of them takes two nanoseconds per iteration where the one with bounce checks takes three nanoseconds and within a loop we get 2,100 nanoseconds and 3,700 nanoseconds. So it starts to broaden a little bit there. But what if we didn't have those bounce checks? What if we had this particular code here which is of course a little bit dangerous to have in your production base but nonetheless, how does that perform compared to a fixed size slice? Well, in a single iteration sense it's close. It's two nanoseconds per iteration but as we get into a loop, we start to see a little bit of difference there. So we have 2,100 nanoseconds again versus 2,700 nanoseconds. So what this is saying to us is that by giving the fixed size slice the compiler's able to make various assumptions or various, I guess, heuristics to be able to understand that they can make further optimizations that it's unable to do without having that fixed size slice. So fixed slice slices are indeed faster. So following on from that, inlining can both improve and hinder. And so with that previous example there, say we just throw inline always onto the top, what's gonna happen? Well, if you said that things are gonna improve substantially, then you'd be right. But interesting to note is that both of them behave exactly the same way now. So with inlining, both of them take 1,300 nanoseconds per iteration for the multiple iterations and one nanosecond for the singular version. So what that's really telling us is that the compiler's able to make various, I guess, conclusions by having the code inline. So it's able to optimize the compiled code so that everything runs faster. And inlining for the second example of the bounce checks, well, it knows that the size of the array that I'm passing through is three so it can basically remove all those bounce checks and make things faster as well. So with inlining, the common thing is is, well, that I often hear is, are you smarter than the compiler to know when to inline? And essentially, I think if you're measuring things and you understand the impact of what you're doing, then sometimes I say, yes, you can be smarter than the compiler. And so with a library though, I think the main thing to call out there is that just to be wary about the impact you're gonna be having on your downstream components so all the consuming applications. So it will increase the binary size and sometimes you won't get the benefits you want with the increased binary size. So my general rule is to be very wary of inlining public API functions but go nuts with your internal stuff if you know what the impact is. So the fourth one is primitive types are almost always better and so the first one's a little bit of a contrived example but bear with me. So if I was representing a decimal number, I might represent it as 10 divided by 10 to the power of E. And so if I wanted to represent pi to more precision, then essentially I have a bigger integer portion and a bigger scale to help represent that. And an obvious way of representing this particular number is with a big int. I mean, that's just a single number. It could store the m portion and a scale. We could store it as an array of four U32s. So have a 96 bit integer. So we have a cap there and a fourth one to represent a scale and a sign. Or, you know, since Rust 126, we could also use a 128 bit integer. So that's pretty cool. So we'll take a look at big int versus U32, the array of four U32s. And as an operational example, we'll try to add together two decimal numbers. So adding together two decimal numbers is relatively straightforward. Essentially, you need to have the numbers at the same scale to be able to add them together. So if I have 2.5, which is scale one, plus three, scale zero, then I just need to scale up the three to scale one to be able to add them together. So 25 plus 30, that's easy. You have 55, scale one, so 5.5. And so big int's a lot easier to reason about this. It's one single number you need to scale up. And if you have an array of, you know, three U32s, then you need to start thinking about words and how the overflow happens between binaries. It's not just a simple addition anymore. You need to essentially add the bits together one by one. And so with a naive implementation of both of these, you can see that the array version does actually behave a lot faster than the big int version. However, that's not really what I wanna go into on this particular part. I really wanna talk about exploiting fixed size primitives. So by knowing that that array is 96 bits, we can make a lot of assumptions about how we add together or do certain things with that particular number. And so shifting on from addition going to division, a naive implementation of division might look like so. And I'm using 32 bit numbers here, but essentially the concept's the same. So the two's complement version of division, if you're not aware of it, is essentially you take the dividend and you keep minusing the divisor every time you're successful, you increase the quotient. So as you can imagine, that doesn't perform very well. So for a smaller numbers, you can get really good results, 80 nanoseconds. But as you get bigger than 90 million nanoseconds in iteration is not acceptable. In most cases probably. So we know that the size of the type is 32 bits. So with that, we can also make various assumptions about how that two's complement division works. So instead of looping through n number of times, depending on the size of the number, we can limit our loop through only 32 times. And basically exploit the fact that it's a binary number. So we can exploit the fact that when things carry over, we can, they disappear from the number when we shift bit shift left. And we can carry them over with various tests that we need to. I won't go into this math here, but essentially the idea of it here is that we are now only looping 32 times. So we get around about 42 to 46 nanoseconds per iteration for this division, for all of those particular numbers. And I do want to call out here is that the hundred is actually slower in this case. So we do have 46 nanoseconds per iteration over the 18 we had before. But it's a reasonable trade-off considering that we now have a very consistent performance across the board. So the other thing I just want to call out here is this is another example why you should be testing across a range of inputs. If I just have one test around for a hundred or even 200 or 1,000, then it's not going to be incredibly bad performance. But as I start to get to the bigger numbers, it starts to get horrible. So the fifth thing I want to talk about is copy-borrow semantics. And essentially when we first start getting into Rust, well, I'm sure a lot of us have battled with the borough checker before and we've done things like this to get around it. And obviously that's a warning sign because cloning to get around the borough checker isn't the way forward. It's just the way forward temporarily or whatever else. But essentially if you're avoiding the borough checker, that's probably a bad sign. And the reason being is copying or cloning a large struct, we all know that that can be expensive, but essentially it can also be expensive if it doesn't fit on the stack. So we need to be considering the size of the data that we're really copying in these particular cases. So as an example, we'll take a look at the one we had before, which is the fixed size slice. So we've got the fixed size slice of three there and then on the bottom one there, the copy, we don't have the borough. We copy the array instead of borrowing it. And so if we were to look at the performance of this, then we can see that for single iteration, it looks fine, two nanoseconds each. But once we get into bigger loops, then we start to see a little bit of a variance. And to be honest, this particular benchmark is an interesting one because it varies substantially between runs. It really depends on how the process is working at the time, but essentially this one has roughly around 2,400 nanoseconds versus 2,900 nanoseconds. So copying in this size, just 96 bits is absolutely slower than just borrowing those 96 bits in this particular case. Again, if it can fit on the stack, it's fast, but if it doesn't, then it potentially could be a bit slower. So what about unsafe? I mean, unsafe is a great way to improve performance, right? So as library authors, I think that, well, the definition of unsafe really for within Rust, from my understanding is you're basically telling the compiler, hey, I know better than you. I know what I'm doing, trust me. And while that's fine when I'm writing the code, I trust myself, but of course I cause a lot of bugs as well, but essentially the community doesn't necessarily trust me like I trust myself. So having unsafe within your code is something that, if you can avoid it if possible, then you should be avoiding it. And I have done a little bit of experimentation within the library and I have found that in the cases that I've been looking at where I've thought, hey, if I just had men move, that would be a lot faster. I've actually found that there hasn't been any noticeable difference. And I think that's kind of interesting. I think that's something that is within everyone here. If you're measuring your performance and you see that there's a huge performance increase, then you can make that trade off only if it's absolutely necessary. And so I think there originally I was jumping to the conclusion that unsafe was always gonna be better in terms of performance. It wasn't necessary of the case. And so I'd probably be interesting to challenge challenge yourself by just measuring your results. So just as some closing thoughts is that, as library authors, we have an implicit responsibility to consider performance. Small details do matter. And it's really important that you understand how your application is working under load or under normal circumstances in order to really benchmark it effectively. It's important that you're testing across a range of inputs. It'd be a shame if you just were testing against dividing by 100 before and the billion was turning into 90 million nanoseconds. So it's important that you're really considering a whole variety of benchmark tests. And the main purpose of measuring is really so that you have insights so you can make effective decisions going forward. So all of this has really been a result of experimentation. So really understanding what's there and knowing that you wanna make the improvement and then absolutely testing something and I guess testing a hypothesis and seeing if it actually worked. So all in all, this community is awesome. You guys are great for coming out to the RustConf and we can keep making it awesome by really working together. And so thank you for listening. If you do have any questions, then you can come and see me in the break. But I did also wanna just say a special thanks to all those people that helped me build these libraries. You guys are awesome, so thank you.


Well, hello, everyone. My name is Emma Brewer-Wallin. I'm the Minister of Environmental and Economic Justice for this other New England Conference, and I'm here with Eliza Pennick, who is part of the Justice Leadership Program, a new partner for the conference, as we offer the Jubilee Justice Leadership Cohort, which will start this fall. Eliza, will you tell us more about the four components of the Jubilee Program? I would love to. Thanks, Emma. We're really excited to be partnering with the Southern New England Conference, and I love to have this chance to tell you a little bit more about what the Jubilee Program is. And we base it on four components that we found to be the most effective and helpful to get people started in their justice work. And that first component is education. We provide workshops on a monthly basis, usually two a month, and the workshops are around a variety of different topics and also led by different presenters. And some of them include things like progressive Christianity, the different forms of social change and how you can use them in your justice work. We have a focus on non-violence and also things like facilitation skills and things that just help you navigate your justice work and be effective and meaningful in the work that you're doing. And then the second component is what we call sojourning. And it's a time to really support and have discussion within the small group of people where they can talk about things that they're struggling with and build community and be able to get support from one another and help work through some of the difficult issues that come up around justice work. And the third component is volunteering. We ask that each participant choose a justice agency to do work for. That way they're able to see the work happening and be a part of it and build relationships with other people that are involved in this work and get that opportunity to really see the work in action and be contributing to it. And then the fourth component is engagement with their home church. This is, you know, an important piece as we ask that each participant as they're learning more about justice and the action that they can take that they're also involving their congregation in that work as well. And so those four components together build a strong basis for people to get started. We definitely don't try to include everything because that would be impossible. But opening all those doors so that folks have the information and the support and the empowerment to start taking action. Yeah, I know from my own formation experiences that this combination of sort of formal learning with hands on experiences and a time to reflect and process over and over again is so important for our learning and growth. So I really appreciate this model. Yeah, just to give you an example from a recent event with our current cohort that we have right now. They just finished a workshop around facilitation skills. And was a really great workshop that walked through a lot of different tips and ways to approach facilitating in a group setting. So we got, we gathered all these really great tips and tools from the presenter. And then we had a little bit of time to talk as a group about where do we see ourselves applying this, you know, and having that important discussion time to kind of take what you've learned and then apply it to you personally and to the work that you're doing in your own community. That sounds really valuable. The Southern New England Conference cohort of the Jubilee Justice Leadership Program will start in October. And you can apply now at justiceleadership.org and be sure to click on the S&E code.


Hi, I am Siddhartha. I study in NPS R & R. I am currently pursuing electronics and communication engineering in NITK Suratka. I joined Centrum in the 11th grade. I found that teachers were very approachable and they helped me throughout the entire journey providing me with great tests and good lectures. I was also able to balance school life and Centrum life very easily because of our approach to the teacher.


Hello friends welcome back to the channel in today's video we're going to go through everything you need to know about the brand new minigame ogre ousting and how to get yourself a shiny munchlax in your copy of the teal mask. Now as you progress through the main story of the teal mask you're going to come across this very unique new minigame the ogre ousting. You'll get a taste for it when you have to go in and play it for the very first time and after you do this does unlock this minigame as well as this you'll get your first reward from the game which is the experience charm. Now after unlocking the minigame you can choose between two modes. These are a solo mode where you can test your own skills against the challenges or you can go in and play as multiplayer mode where you can team up locally or online with all other players and working together to beat each stage. Now there are three different difficulties to the ogre ousting. There is the easy mode, there is normal mode and there is a hard mode. By completing each mode it will unlock the subsequent mode after that so when you've defeated easy it will unlock normal and when you defeat normal it will finally unlock hard and they're the three modes that you're going to have access to for the rest of the game. The easy mode consists of three different stages that you're going to have to complete the normal mode consists of six stages and the hard mode consists of ten stages and completing each difficulty level yields various rewards including valuable items like that brand new item mochi the fresh start mochi, herbomistica, evolution items, candies and tereshards. You do get additional rewards for completing each of the difficulty modes and once you complete the easy mode which is just three stages you're going to be awarded an additional item of an air balloon and three nuggets.  But before we go any further we do want to have a look at this brand new item which is mochi. There are seven mochis in total. There is the health, the muscle, the resist, the genius, the clever and the swift. All of these respected mochis are pretty much the equivalent of a vitamin or a vitamin item that will increase the specific stat point of a Pokemon that it's related to by 10 EVs every time you use one. So the health is for HP, the muscle is for attack, resist is for defense, genius is for special attack, the clever is for special defense and the swift is for speed. And an additional mochi that you can get access to is the fresh start mochi whenever you use this on a Pokemon, you will actually remove all of that Pokemon's EVs that it's got and giving you a clean slate for you to reeve it. So as you can see here, if we use the fresh start mochi just to give you an idea of how it works. And as you can see, we've used it on our Brailleum here, which will then remove all of the EVs on this Brailleum. It's got no EVs now, giving us a blank slate for us to re-eve it. But if we want to go back in and put those EVs back in that we originally had, we can now use the mochis instead of the vitamins that we were doing before. So you can see 26 mochis there and then 26 mochis in health. And that should give us two five two in its HP and in its attack stat, which should max it out. It's just a new method for us to EV train our Pokemon, remove the EVs to give us a blank slate if we need to. So we don't have so much reliance on the EV reducing berries that we've had before, like the Pomebe, Kelpsie, Kualod, Hondu, Greppa and Tomato. We can just use that fresh start mochi that is only accessible through this new minigame, the Ogre Outsting. So these are some of the rewards that you're going to get for completing the different difficulty modes in Ogre Outsting. But to get these items, your objective is to collect colored berries equivalent to the number of balloons you pop. For example, popping a red balloon yields a red berry. You must then place these berries collected on the matching color coded tables. Your berry carrying capacity is 30, so you can't carry any more berries than this. And when your bag is full, you need to return to the tables and deposit some berries before collecting any more. You'll be able to keep a good eye out on how full your bag is in the icon in the top right hand corner. Once the wheel is all lit up, you know, you can no longer carry any more berries. You'll also get a notification about this as well, saying to return to the tables to deposit berries before you can go out and collect any more by popping any more balloons. Now, there is a caveat to depositing berries on the tables, because as soon as you do this for the first time in any stage, enemy Pokemon will start making their way to the tables. These falls can range from Squavet, Greedent, Munchlax and Snorlax. The more berries you collect, the more Pokemon that will appear in the field. You'll receive notifications every time when a Pokemon approaches your tables and also a notification to say when these Pokemon are eating the berries on the tables that you've already deposited. Now, if left unchecked, they'll literally devour everything that you've put on the tables. So you have to be aware of where they are and try and scare them off using the row function with your ride Pokemon, which you can do by pressing the right shoulder button on your controller. And just to give you an idea of the different amount of berries that can go missing from these Pokemon, if they do appear and you do leave them unchecked, you can see that Squavet will only eat one berry at a time. So not too bad. And it won't leave the table until it's consumed 15 berries in total. Now, Greedent will eat up to 10 berries at a time and it won't leave the table until it's eaten a total of 100 berries. Now, Munchlax again will eat 20 berries per time and it won't leave the berry table until it's consumed 120 berries. And Snorlax, the worst of the lot, will consume 30 berries at a time and it won't leave the table until it's consumed at least 90 berries. So you can get an idea of if these Pokemon are left unchecked, they will literally clear out everything that you've collected so far. So a really important part of this mini game is making sure that you're checking these Pokemon when they do appear and scaring them off before they can eat any of the berries that you've collected. Now, each stage does last two minutes. So you've got two minutes to collect the required amount of berries that you are notified at the start of the round and then deposit those onto the tables. Once you've deposited the last berry required onto the table, you'll clear the round and you move on to the next stage. For the different difficulty modes, Easy Mode is definitely manageable solo. The maximum that you're going to need to go to in stage three, which is the final stage of this difficulty level, is 30. So you're just literally maxing out your bag. A big tip when you're playing through this solo is to not deposit berries until you have to. So if you have 30 berries to collect in total, that's all you need to do. Go out, collect the exact amount of berries that you need to collect and then deposit them all at the same time. If you're depositing red berries and then going back out into the field to collect your green ones, then you are going to deposit the red berries and those enemy Pokemon are going to start coming to your berry tables. And you're going to have to make time to come back to scare them off to protect those red berries that you've already got. So it makes sense just to max out your bag when you can and deposit all your berries at the one time because by then you'll clear the round and also it gives you a little bit more time to go out. If you need a few additional berries, see you're in stage four, where you need 40 berries if you're playing solo mode, where you can go out and collect 10 more berries popping 10 more balloons to come back where you're probably going to be able to beat the enemy Pokemon coming to your tables so they don't eat too many berries before you can complete that round.  And you're going to get the start of the onslaught of Snorlax in stage six as well, which makes it even more difficult. And you're going to have to collect your bag capacity twice, leaving the tables unchecked for a long period of time, where you've got no cover to scare off the Pokemon or anything like that, where you're collecting an additional 30 berries. So it is very difficult to do, especially in the two minute timer that you've got. And if you are able to get through normal mode just on your own, the hard mode is going to notch it up even higher level because you're going to go through to stage 10 on the hard mode. And in particular in solo mode, you're going to be collecting in stage seven, 70 berries, stage eight, 80 berries, nine is 90 berries and then stage 10 is 100 berries. So pretty much by that stage 10 solo, you're going to have to be reaching bag capacity three times over to get the berries that you need to complete that stage, which seems very, very difficult, especially when you're having to consider scaring off Pokemon from the berry tables along the way, as well as collecting everything that you need in just those two minutes. When you go in and play multiplayer, the numbers that we've just looked at, you're just doubling them. So for stage one, instead of 10 berries that you would need, you're going to need 20 berries with multiplayer and so on and so on until you get to stage 10, where instead of 100 berries, you're going to need 200 berries collected by the party that you've got going out into the multiplayer field. Now, there are five different courses in total. Now, I would say you should just focus on these two courses for the most effective method of completing this. There is the course here, which has the river running through it. And then there is this other one, which is the field line course, which kind of slopes down and slopes up from you. But you've got a really good view of the surrounding area where you can map out routes and quickly see where the next balloon is that you're going to need to collect. These courses also feature square berry tables, which makes it a lot easier to defend them by using the raw function when you're centered in the middle of the square to scare off approaching Pokemon from all four berry tables. I would try and avoid the other courses as their linear berry table arrangement can be challenging to defend. And the courses themselves do include obstacles that hinder quick returns to the tables because you're going to have the Apple Hills with the fences that make it very difficult. You're going to have the crater course as well, which hides pretty much seeing where any of the balloons are, making it really hard to kind of map out a route. And this sloped course as well, which just makes it very difficult to actually get back to the berry tables quickly. And because they're in that linear pattern as well, it makes them extremely difficult to defend. Now, the earliest stages don't really require too much strategy. You're going to have an easy time going through from stage one to five, really, not really too many issues at all, especially if you're playing multiplayer. It's going to be a bit of a breeze. You're going to have two minutes to collect everything that you want. But after this, especially in the hard mode, it is going to get a bit more challenging. And I would say that you're probably going to have to do this in multiplayer mode to be able to complete this quite effectively. Solowing this seems a very, very difficult task at the moment. I'm sure someone will come up with a strategy to be able to do it. But right now, we're just going to concentrate on doing this in multiplayer mode with four players and teamwork in this is absolutely crucial. Our team, what we did was we all assigned each other an area of the map. We assigned ourselves one zone each and we all had our own route back to the berry tables.  On our team, we had a designated player who would sit in the middle and just use that raw function to protect their berry tables while the other three remaining players went out and collected the remaining berries that we needed. We were active on voice chat the entire time. So we were talking to each other and working out how many berries we needed and communicating what we currently had. And if we were spotting other berries that we needed, where there was a large amount if we already had our bag full so other players could kind of get to that area quickly, pick them up and come back to the berry tables as quickly as possible. And this strategy seemed to work pretty well for us through most of our play was mainly about getting the course as soon as we got one of the courses that we were pretty comfortable with, which is the river course, which is the one that we ended up finishing it on. We use this exact same strategy. And the one thing that I would say is well between rounds when one stage finishes and you've cleared it and the next stage is being set up and you're getting your totals for the next stage of how many berries you need. You can actually move around the field. So use this time to get this far away from the berry tables as possible so you can then map your route where you're collecting berries on your first round back to the berry tables. This way, once you get back to the berry table pretty quickly, you should have 30 berries to start with. And if all four players do it, that's 120 berries to kind of kickstart what you need. One player will then stay in the middle of the berry table location using that row function just to roll where any threats have come to the tables. Well, then the other three players go out into the field again. We all communicate on voice chat. We would say in what berries we were going to pick up from the next route that we did, what we were missing if we required any more and where these berries were. If we had spotted them when we were out in the field so we could go back out for a third trip if we needed to. And on that 10th stage, you definitely need to go out on a third trip. We're going to have to collect those last few remaining berries. What we generally tried to do as well was whoever was guarding the base was keeping account and letting all of the other players know exactly what number of berries we had left and what needed to be collected. And we'd all call out what berries we were actually going to go for. So whoever was roaring in the middle when we were all gone out for that second run would tell us the exact amount of berries. So we weren't having to look. We were just paying attention to the course that we were going and the berries that we were keeping an eye out for. And I feel like this is probably one of the more efficient ways of doing it. We did try a method of assigning a single berry color to each of us, but it made it a lot more difficult and a lot more clunky to kind of complete. Some other tips as well that can help speed this up. One of them is to avoid bumping into the berry tables when you're running racing back to the berry tables. Try and stop before you land onto the berry table, because if you bump into it, it's going to cost you valuable seconds. It can be quite costly later on in this stage. Optimize your gliding as well. If you are gliding with your ride, Pokemon, whenever try and hit the glide button as close to the ground as possible. This will kind of give you the momentum and carry your momentum on rather than kind of pull you up and slow you down a little bit. And of course, plan your route just before the next round to position yourself for Swift Berry Collection. That is a huge important one. And once you have complete the hard mode, you will be gifted a shiny munchlax with the crafty mark. Really nice final reward as well, which you have to really work hard for. So they are some strategies and tips on the auger house thing, how it works and what you can get from these games for doing it. Hope you find it useful. If you have, please drop a like. Do leave a comment down below as well. And let me know how you've got on. If you've attempted the solo mode, how far you've managed to get. And do you think it's possible to do this solo mode on the hardest mode of the game as well? I would love to hear if anyone has completed already and props to you if you have. We'll definitely chip away at it over the next few weeks to see if we can get some success with it. But I would definitely recommend hopping online with other players and make sure you're getting a group call. So coordinate your efforts. It is a lot of fun doing this game. I really like the mini game itself. It is difficult, but it is a lot of fun. And the rewards are definitely worth getting in game. Do hit that subscribe button if you want to stay up to date with all of our Pokemon scholar and violet content. Thanks for tuning in, friends. Take care of yourselves. Till next time. Take care. Bye bye.


Welcome back to Vegas, Lisa Martin here, covering Snowflake Summit 22. We are live at Caesars Forum. A lot of guests here, about 10,000 attendees, actually 10,000 plus. A lot of folks here at the Momentum and the Buzz, I got to tell you, the last day and a half we've been covering this event is huge. It's probably some of the biggest we've seen in a long time. We're very pleased to welcome about one of our CUBE alumni to the program, Ron Teo, principal and chief data officer at Delight One. It's great to have you joining us. Yeah, no, thank you. Super excited to be here with you today. Isn't it great to be back in person? Oh, I love it. I mean, the energy, the connections that we're making, definitely, definitely loving the experience. Good experience, but the opportunity to connect with customers. I'm hearing a lot of conversations from Snowflake Bugs, from their partners like Deloitte, from customers themselves. Like it's so great to be back in person and they're really talking about some of the current challenges that are being faced by so many industries. That's right. That is, I would say, as a consultant, it all comes down to that personal connection and that relationship. And so, I'm all for this and love being able to connect with our customers. Yeah, talk to me about the Deloitte Snowflake partnership. Obviously, a ton of news announced from Snowflake yesterday. Snowflake is a rocket ship. Talk to us about the partnership, what you guys do together. Maybe some joint customer examples.  We won the SI partner of the year award. And for us, the shift and the opportunity to help our clients modernize and achieve a level of data maturity in their journey is strategically. It's super important. And it's really about how do we help them leverage Snowflake as an underlying data platform to ultimately achieve broader goals around their business strategy. And our approach is always very much connected to overarching business strategies in the sense of, is it a finance transformation, a supply chain transformation, a customer transformation? And what are the goals of those transformations and how do we ensure that data is a critical component to enabling that and with technologies and vendors and partners like Snowflake, allowing us to even do that at a faster, better, cheaper pace only increases the overall business case and the value and the impact that it generates. And so we are super, super excited about our partnership with Snowflake. And we believe the journey is very, very bright. This is the future. I often tell folks that data has and will continue to be more valuable than sort of the systems that own it and manage it. And I think we're starting to see that. I think the topic that I discussed today around data collaboration and data sharing is an example of how we're starting to see the importance and the value of data become way more important and more of the focus around the strategy for organizations. As the chief data officer, what do data sharing and data collaboration mean to somebody in your position and what are some of the conversations you have with other CDOs at customer organizations? So my role is sort of twofold. I am responsible for our internal data strategy. So when you think about Deloitte as a professional service organization across four unique businesses, I am a customer of Snowflake in our own data monetization journey. And we have our own strategy on how and what we share not only internally across our businesses, but also externally across our partners. So I bring that perspective, but then I also am a client service professional and serve our clients in their own journey. So I often feel very privileged and the opportunity to be able to sort of not only share my own experience from a Deloitte perspective, but also in how we help our clients. Talk about data maturation. You mentioned the volume of data just only continues to grow. We've seen so much growth in the last two years alone of data. We've seen all of us be so dependent on things like media and entertainment and retail, e-commerce, healthcare and life sciences. What, how do you define data maturation and how does Deloitte and Snowflake help companies create a pathway to get there? Yeah, yeah. So I would say step one for us is all about the overarching business strategy. And when you sort of double click on the big broad business strategy and what that means from a data strategy perspective, we have to develop business models where there is an economical construct to the value of data. And it's extremely important specifically when we talk about sharing and collaborating data. I would say the assumption or the posture typically seems to be it's a one-way relationship. Our strategy and what we're pushing, you know, again, not only internally within ourselves but also with our clients is it has to be a bi-directional relationship. So you hear of the concepts of the data clean room where you have two partners coming together and agreeing with certain terms to share data bi-directionally. Like I do believe that is the future in how we need to do more data collaboration, more data sharing at a scale that we've not quite seen yes yet. The security and privacy areas are increasingly critical. We've seen the threat landscape change so dramatically the last couple of years. It's not, will we get hit? All right, Cybertalk, it's when? Yes. For every industry, the privacy legislation that just, we've seen it with GDPR, CCPA, it's going to become CPR in California. Other states doing the same thing. How do you help customers kind of balance that line of being able to share data equitably between organizations, between companies but do so in a secure way and in a way that ensures data privacy will be maintained? Yeah, yeah, so first absolutely recognize the evolving regulatory landscape. You mentioned California, there's actually now 22 states that have a... Is it 22 now? Yeah, 22 states that have a privacy act enacted and our projection is in the next 12 to 18 months, all states will have one. And so absolutely a perceived challenge but one that I think is addressable and I think that gets to the spirit of the question. For us, there's four dimensions that an organization needs to work through when it comes to data sharing. The first one is back to the business goal and objective. Like, is there truly a business need and is there value in sharing data and it needs to have a very solid business model? Okay, so that's the first step. The second step is what are the legal terms? What are the legal terms? What can you do? What can't you do? Do you have primary rights, secondary rights? The third dimension is around risk. What is the risk and exposure not only from a data security perspective but what is the risk if someone uses the data inappropriately? And then the fourth one is around ethics and the ethical use of data. And we see lots of examples where an organization has consent, has the rights to the data but the way they used it might have not necessarily been among the kind of ethical framing. And so for us, those four dimensions is what guides us and our clients in developing a very robust data sharing, data collaboration framework that ensures it's connected to the overall business strategy but it provides enough of the guardrails to minimize legal and ethical risk. So with that in mind, what did the customer conversations look like? Because you've got to have a lot of players the business folks, the data folks, every line of business needs data for its functions. Talk to us about how the customer conversations and projects have evolved as data is increasingly important to every line of business. Yes, I would say the biggest channel or maybe the denominator at this point that we're seeing bring the, let's say diversity of needs to a more common denominator has been AI. So every organization at this point is driving massive AI programs. And in order to really scale AI, the algorithm cannot execute without data. And so for us, at least in our experience with our customers, AI has almost been the mechanism to have these conversations across the different business stakeholders and do it in a way that, you're not necessarily boiling the ocean because I think that's the other element that makes this a bit hard is what data do you want me to share and for what purpose. And when you start to bring it into sort of more individual swim lanes and our experience with our customers is AI has sort of been that mechanism to say, am I automating our factory floor? Am I bringing AI and how we engage and serve our customers? Right, like it begins to sort of bring a little bit more of that repeatability at an individual level. So that's been a really good strategy for us and our customers. In terms of the customer's strategy and kind of looking forward, what are some of the things that excite you about the future of data collaboration, especially given all of the news that Snowflake announced just yesterday? Yes. Yeah, I think for me, and this is both a little bit of the ambition as well as the push. It's no longer a question of should, it's how and for what. And so yes, I mean, the Snowflake data cloud is a network that allows us to integrate, you know, disparate and unique data assets that have never been possible before, right? So we're in this network, it's now a matter of figuring out how to use that and for what purpose. And so I go back to each individual organization needs to be figuring out the how and for what, not when. This is the future, we all need it. And we just need to figure out how that fits in our individual businesses. In terms of the how, that's such an interesting, I love how you bring that up. It's not when, it's definitely how because there's gonna be another competing business or several right there in the rearview mirror already to take your place, if you don't act quickly. How does Deloitte and Snowflake help customers achieve the how quickly enough to be able to really take advantage of data sharing and data compilation so that they can be very competitive? Yeah, so there's two main, maybe even three driving forces in this. What we see is when there's a common purpose across direct or indirect competitors in the need to share data. So I think the poster child of this was the pandemic and we started to see organizations again, either competitively or non-competitively, share data in ways for a greater good when there was a purpose. We believe when that element exists, the ability to share data is going to increase. We believe the next big sort of common purpose out there in the world is around ESG. And so that's gonna be a big driver for sharing data. So that's one element. The other one is the concept of developing integrated value chains. So when you think about any individual business and sort of where they are in that piece of the value chain, developing more integrated value across, let's say, a manufacturer of goods with a distributor of those goods that ultimately get to an end customer, they're not sharing data in a meaningful way to really maximize their overall profitability. And so that's another really good meaningful example that we're seeing is where there's value across what appears to be a siloed set of steps and really looking at it more as an integrated value chain. The need to share data is the only way to unlock that. And so that's the second one. The third one I would say is around the need to address the consumer across sort of the multiple personas that we all individually sit, right? So I go into a bank and I'm a client. I walk into a retail store and I'm a customer. I walk into my physician's office and I'm a patient. At the end of the day, I am still the same person, I am still Juan. And so that consumer element and the convergence of how we are engaging and serving that consumer is the third big shift that is really going to bring data collaboration and sharing to the next level. Do you think Snuflik is the right partner of the de facto for Delight to do that with? Absolutely. I think the head start of the cloud, the data cloud platform and the network that it's already established with all the sort of data privacy and security constraints around it. Like that's a big check, right? That we don't have to worry about. It's there for sure. Awesome, sounds like a great partnership Juan. Thank you so much for joining me on the program. It's great to have you back on theCUBE in person, sharing what Deloitte and Snuflik are doing and how you're really helping to transform organizations across every industry. We appreciate your insights. Yeah, no, thank you for having me here. My pleasure. Always a pleasure, thank you. All right, for Juan Teo, I am Lisa Martin. You're watching theCUBE live from Snuflik Summit 22 at Caesars Forum. Be right back with our next guest.


The digital world is great. We have a million of applications and services that make our lives so much better. But in the digital world, there are no walls. There are no barriers. So all of the data that we give to these applications and services are accessible to service providers and third parties and can be used in unpredictable ways. A very known example of this unpredictability is the Facebook Cambridge Analytica scandal, in which data from users was used to try to sway their voting intentions. And at the core of this scandal is the machine learning revolution. Algorithms are becoming better and better at inferring and predictive human behavior. Companies are becoming more data-hangry in the search for this data that is gonna help then improve their profit and revenue. And this great revolution for the digital economy also came as a tsunami for privacy. We have more algorithms that now can make inferences about our private information, for how we talk, where we go, which people we talk to. They existed before, but attacks were concocted by humans, by our fellow researchers. And as such, we could study them, we could understand them, and find ways to combat these inferences. But nowadays, the game has changed very much. The adversary is not human anymore. The adversary is the machine. And the machine uses correlations that humans never dreamt of even have identified before. And as such, all of these inferences that they can produce are breaking all of the defenses that we bought before. So you may be thinking, if the machine is cleverer than the man, just put more noise into the structure so that the machine cannot learn anymore. And this is an experiment from fellows at Cornell Tech in New York, in which they took traditional way of putting noise into images in order to make them non-distinguishable. And to their astonishment, no matter how much noise they put, the machine was still very good at recognizing letters, vehicles, or faces. So the machines were winning the game. And why is this? Is because the machines are very good at dealing with noise. That's actually in the very nature. We give them a lot of noisy data, and from that they are able to find the patterns that actually end up being this inference of predictions that we like so much in the business world. And you may be thinking, okay, why don't you try to understand the real truth is that we still don't understand very well how machine learning works. Like interpretability of algorithms is at the very infancy, and even though the results are very promising in knowing why and why not machines make a decision, what is still far away of being able to use this for privacy. But there is a way of actually beating the algorithm without understanding is called adversarial examples. And these are particular way of putting noises like here in these photos, each of these turtles has some noise such that even though you see a turtle, the machine is seeing a rifle. So what we thought is, okay, we can use these enemies and convert them in our allies to make them the basis of new privacy technologies against machine learning. The problem is that most of these adversarial examples I thought for machines were actually you're pretty fit to put noise like before we all saw turtles, even these images were a bit modified. But some of the privacy problems don't have much freedom. Like imagine that we are creating some transformation for changing a tweet so that the machine cannot recognize your gender. We still need to keep the tweet understandable and we need to keep the meaning for people actually want to use these transformations. And there are other problems. So many of these transformations also come with a cost. A known thing is that from encrypted communications, machine learning can still learn many times the content of the communication such as which word was sent over Skype or which is the destination of the communication. And to protect from this, what we do is to put more packets in the network. Every packet costs money. Every delay has a cost for the user. So what we did at the lab during the last year is to develop libraries that not only can find good adversarial examples that are actually useful such in the case of the tweets that are still understandable and keep the meaning but also come at a minimum cost so that we really can deploy them and we have a chance that users accept this kind of technology. So the good news is that we're back in the battle. We again have a good mathematical basis in which we can build the construction of privacy technologies against the machine in a systematic way. And it is our hope that the technology that we are developing can put back humans into a position of deciding what do they want to reveal and why they don't want to reveal in the digital world is such a way that we can enjoy all of these fantastic applications and services without the need to endanger the democratic values that underpin our society. Thank you very much. You


The bull went to the brain and five or six people, they start on this bull and with some kind of spears, they will pierce the bull. They pierce the bull, right? And whoever pierces the bull, the bull turns towards him and will charge forward to that guy. And by the time, if somebody pierces from behind it, it will charge forward. So how many times whoever is piercing that, it will charge forward that guy. So judges will be sitting up there and they will be counting how many times despite being here, the bull is charging forward. Whichever does that, no number of times they will judge that bull as a prayer bull. The bull after two of the hits, bends his leg and runs away. That is going to have a prayer. The prayer bull is despite the norm, despite the rejections.  They say no, don't come, they will irritate us, they will cheer us.  We get success. That is called persistence. Persistence. Those who possess persistence, the greatest pride is persistence. One time sir knows that the dealer is not giving me up. When they are two times, three times I went there. Well, go from both sides. He is ten, six times, four times. Persistence will give you the results. So the third secret ever, I will pass this time till I succeed.


Hey, everybody, it's Eric Johnson from Aritaite Throws Nation. In today's video, we're going to talk about a big requested topic, the sweep. And we just recently had put up a video about the sweep leg kick, increasing that. But we're going to talk a little bit more specifically about the path of the sweep leg. So one of the things that we want to be able to do is it's going to be a pretty much a universally understood point that we want to get the sweep leg path wide. Now, you're going to notice this. If I get my leg wide and I'm wide, where's the foot? It's naturally what we call is dorsiflex. So you see the foot kind of here. Now there's a point where it's too much and it's too much like this. So one of the things we teach is more of the action, chain reaction, right? We look at what creates the position rather than just say, put yourself in the position. So I'm going to take the drill band and I am going to pop. Okay. So now we've got that drill band on and what we're going to do is one of the key things when we set up. Now notice what the band forces us to do. We're trying to keep the knees here. So we're not going to necessarily be squatted down. See where there's no tension. We want the hips on top. We want to see here. We want to see alignment. So if you look at me from this camera, you're going to see that my knees are generally on top. I'm creating tension because I'm opening the knees and that is going to help us with the sweep leg path really critical. So that's one of the reasons why we use the drill bands and we advocate it and why we have them available for coaches and throwers because this is a real easy way to start feeling how to create that tension and it makes the athlete should activate. Now here's the reality. A lot of drills theoretically should work really well for a thrower. Hey, do this, do that. They do it, but that's just not the reality. Throws coaching is everybody's got different movements and one of the things we're going to be talking about in some upcoming videos is the weight room and how the weight room has such a big impact, especially for our young developing throwers. We want to develop our strength levels and a lot of the compensation and technical issues that you guys face are due to those strength levels. Now I digress. We're going to go back to teaching that sweep leg path. When we have this, the sweep leg is out wide because it comes around and it lands here. Now in reality, am I going to land at three o'clock? No. Okay. So, but the point is when the sweep leg is wide, it makes everything easy to rotate. So now that we've kind of set everything up and we've shown you how the band works, we want to understand that the path comes out here.  If the sweep leg, a lot of times people are taught kick up and kick across. Now I have this linear movement. So how am I going to kick across and turn?  What we want to see is keeping everything out and we want to be here. So we're feeling how this knee and hip are going to push and rotate really, really important. One of the things people ask and we've talked about in the past is do we come up in pendulum? We still see a lot of athletes doing that. Look what that does. We see this and then they're trying to get the sweep leg going. This is why we have our video on trying to keep everything wide and feeling that that circular path, the sweep leg is on the rotational path. We would talk about the left side is on the linear path, right? We always have rotational angular linear movement, both the shot put in the discus and the shot put. We're going to do the same thing. We're going to get, we teach double rotation, kick that out, feel that wide sweep again and you're going to notice when we look at all of our best throwers and they're wide, you're going to see how that's creating that rotational speed. Anytime you cut in, can I still rotate? But look at how I just finished. Watch me show you that again when I come here and I kick up, see how that's going to create a shift. So that's it. Now watch if I kick it out in here, you'll see how I'm on balance. I'm more rotational and my lower body naturally is going to turn into the throw. So just to clear up any confusion, sweep leg path, whether it's the discus or the shot put, how is it going to add distance quick? You've got to be rotational. Check out our sweep leg kick drill, grabbing yourself some bands. These are things that are all going to help that motion. And again, remember the thing about throwing that we talk about to at campers and people all over the world, throwing is really an unnatural movement. It takes time. Everybody's got a different timeline. Some people will pick up the movement patterns faster. Others need to do more drills, break it down even more. Again, that's what we do inside of our system. We kind of help you figure out what's the formula you need to create so that you can throw farther faster. That's always the goal. Nice. Okay guys, thanks so much for watching today. Hit that like button. Give it a boom and thanks and we'll see on the next video.


I am Dr. Supraja from Hyderabad. He is my brother Kishore. Hi. So, we want to talk a few things about what he is going, what he has been gone through and what the treatment has brought. So, he was diagnosed with Ulcerative Politis more than 11 years back and he was being treated for the same by the regular medication like Salfa, Prednisone, etc. But he was having a bounce of blood in the motions on and off and it's in the last 6 months this has aggravated and he is residing in Australia. I was not satisfied with the treatment what he was going over there. So, I thought I should bring him to Hyderabad and I will get him rechecked and see. In the meantime, one of my close friends sent me an article about Avanice. In that, it was clearly mentioned that a girl who has been on steroids for the last 18 years was cured with this 5th FMT treatment. Actually, I've been in an orthopedic branch. I was not about this treatment for Suru Memorandus Colitis. And I asked one of my friends who was a plastic surgeon. He told me that yes, this is the treatment for Suru Memorandus Colitis and he was being approved by the FDA. So, I thought let's try and when I came to inform him. He's an engineer. He was like embarrassed of listening to the treatment protocol. He was like, I can't do it. I said you should go for it.  Maybe it will help you. So, he came here and he met Suru, his wife. So, both explained to me and I got my preliminary workup. The same way, the patient and myself both of us got it done. And the very first day on which the treatment was going on, going to be started, he had blood motions. He was telling me, I was just passing fresh blood in my stones. So, I cannot give a stool sample. That was his condition on the day of the first sitting. And the FMT was done on 28th of November, 2022. And since then, today is 23rd December. And almost one month is not yet done. And he's not passed even one ML of blood in his stool. So, I'm very much grateful to Sir and Manipal Hospitals. And hope he will be free of all the medications. So, now on to my brother. Hi, I'm Kishore. I'm from Melbourne, Australia. And I've been suffering with Ulcerative Colitis for 11 years. And I've been having treatment all and off. I started with Sulfazine and moved on to Azizoprine. And then, recently I didn't fix him up as well. But nothing stopped me from the bleeding. I was getting bleeding continuously. And then my sister recommended Dr. Ami Seth. And as my sister said earlier, I was already elected for the procedure. And we had a WhatsApp call with Dr. Ami Seth to submit the newest WhatsApp number. And we started the WhatsApp call. And the first thing Ami Seth said, like, okay, let's come here. Let's go to Dr. Ami Seth. And we go from there. And I had continuous meetings with the superintendent and other associates of Dr. Ami Seth. And we had an initial appointment on the 3rd or 2nd week. On 25th of November. On 25th of November. On the 1st of December Ami Seth. clearly explained to us the procedures and how many procedures it will be done. How many things we have to attend. And you know with Sulfazine Ecolitis you will be very restricted. You can't go out to play. You can't have a family time. Whenever you go out to the path, you always look for toilets. Which is sometimes really embarrassing. But that's how the life it is in Sulfazine Ecolitis. I am really thankful for the FMT treatment. And hopefully, it should be it. Thanks again. So Mr. Kishore. He lives in Melbourne, Australia. He contacted us. He has been suffering from Ulcerative Ecolitis for so many years. And he was on strong medications. Steroids. Biologicals. Azathioprine. And he was not getting better. He was going to have total colactomy. And they wanted to try. That if we come here to try stool transplant treatment. So his sister is orthopedic surgeon in Hyderabad. He called them. And both brothers and sisters. We got there. And we tested his sister's stool. We transplanted the stool in his brother. And as soon as the magic happened. He stayed with us for a month. And for the first time in a month. His colonoscopy was normal. Which was not normal since 10 years. And he would pass 8-10 stools with blood. One or two stools came. And there was no blood. And he is very happy. Thank you.