Good morning, Hank, it's Tuesday. So 1.6 million people will die of tuberculosis this year, more than will die of malaria and HIV combined, which is especially infuriating because tuberculosis is curable. And there's a company you've probably never heard of called Danaher that over the next 10 years has the opportunity to save hundreds of thousands of lives. And I'd like all of us to encourage them to take that opportunity. So tuberculosis has killed over a billion people in the last 200 years, and we've made very little progress in ending it because both testing and treatment remain out of reach for millions. Like this year of the 10 million people who will get sick with TB, about 4 million people will go undiagnosed, often dying before they can get an accurate test. And among those who do get diagnosed, most are still diagnosed via a person looking through a microscope at a sputum sample, which is precisely how we diagnosed tuberculosis 130 years ago. There are two big downsides to the microscope method. First, it misses more than 50% of cases, especially in young children and immunocompromised people. And second, even if it finds TB, microscopy can't tell you whether a case is resistant to antibiotics, which means that many people end up on the wrong treatment regimen and commonly die before they can get on the right one. Now, I know what you're thinking. Gosh, I wish we had a miraculously fast and accurate test that could tell people not only whether they have TB, but which drugs their TB will respond to so we could immediately begin curative treatment. Well, good news we do. It's called the Gene Expert Machine, and it is incredible. It's made by a company called Cepheid that's owned by a larger company, Danaher, that also owns lots of other companies. And this Gene Expert Machine can test not just for TB, but also for HIV, COVID, and many, many other diseases. Everywhere I've traveled in high TB burden countries, people sing the praises of this incredible Gene Expert Machine. I mean, within an hour, you can tell someone whether they have TB and also what course of treatment will cure their TB. Incredible, amazing, wondrous. Thank you, Cepheid, for building this machine. Thank you, Danaher, for making it all happen. There's just one problem. As a lab tech in Sierra Leone, very succinctly explained to me, the machine is amazing if only we could afford the tests. Which brings us to the printer ink business model. Now, you may know that inkjet printers are often sold at a very low profit margin, because that's not actually how the companies make their money. They make their money by selling ink once you're locked into a printer, often ink that you can't buy from anywhere else. The same business model is used in disposable razor blades and also Nespresso, like take over the coffee market with inexpensive machines and then price gouge on the Nespresso pods. And that is what Danaher does with TB tests. And that's not, like, my conclusion. Their CEO, Rainer Blair, literally said, these are razor blade business models in mission critical applications. Which sounds to me like they're bragging to their shareholders about ripping off the world's poorest people. Okay, so Danaher currently charges $10 for each of these cartridges, which can detect TB and also test for resistance to a common first-line antibiotic. And they also make another cartridge that tests for resistance to four more anti-TB drugs. For that one, they charge not $10, but $15, which is frustrating because, one, we really need to identify extensively drug-resistant tuberculosis quickly and accurately to prevent its further spread. And also, two, it doesn't cost Danaher more to make those cartridges than the regular ones. All the cartridges cost them about the same to make. So how much should these cartridges cost? Well, Danaher has refused to share any of their cost information with global health authorities. But in 2019, Doctors Without Borders commissioned a study asking a group to look at how much it costs to make these. And what they found is that it costs somewhere between $3 and $4.50. The same is true for all of Danaher's test cartridges regardless of whether they're testing for TB or XDR TB or HIV or anything else. Based on that study, Danaher is charging at least a 220% profit margin for their regular TB cartridges and closer to a 500% profit margin for their extensively drug-resistant cartridges, which, in my opinion, is just unconscionable. And I apologize if I sound angry, but I've known so many people who went undiagnosed for months or even for years and some of those people have died. And so I am angry. They died because they couldn't get an accurate test in time and I simply don't believe that Danaher charging these profit margins is making it easier for anyone who needs the test to be able to access it. Instead, they are overcharging poor countries for tests and preventing competition by locking people into their machines with that printer-ink business model they love to boast about. Also, in developing these tests, Danaher received over $250 million of public funding, most of which came from taxpayers like me and you. And I think it's past time for Danaher's prices to acknowledge that gene-expert tests are public goods largely funded by the public and that it isn't appropriate to use them to enrich the world's richest people at the expense of the world's poorest ones. Since 2019, Partners in Health, Doctors Without Borders, and a huge array of other organizations have been trying to convince Danaher to consider lowering their prices to $5 per test cartridge, which would be a healthy profit margin instead of an obscene one. They've written open and closed letters, Cepheid and Danaher haven't responded, they've lobbied for $5 tests in public meetings, Cepheid and Danaher haven't responded, and so now they've asked us to join them in taking the next step on that journey. Now look, Danaher is a company with $8 billion in profit. They are not hurting, but it's a little hard to put pressure on them because they don't own a lot of consumer-facing stuff, although they do weirdly own, of all things, Pantone, the color-matching company? They're currently in the process of spinning it off into another company, but Danaher shareholders will still be Pantone shareholders, so maybe there's some pressure to apply there. But mostly, I think it's important for Danaher to know that this is just a bad business decision. It's important for them to know that we are paying attention and will continue to pay attention, and we will endeavor to make it cost more to their reputation and their ability to recruit and do business than the infinitesimal hit to their profit that would accompany $5 tests. So that's where you come in. If you have five minutes to make a phone call or write an email, there are links below and in the pinned comment. Also, please let Danaher know on social media that you will not accept this injustice. They're on Twitter and Facebook and Instagram and threads, and Hank and I will be in all of those places amplifying your messages. And if you happen to work at Cepheid, which makes the cartridges, or Danaher, which makes the decisions, let your bosses know that you're not okay with this. I know that takes a lot of guts, but I also know it was an essential part of the pressure on Johnson & Johnson that led to them swiftly announcing they would allow generic competition for their drug Badakuline. Lowering the prices of these tests to $5 would likely save hundreds of thousands of lives over the next 10 years. And I am disappointed that Danaher is currently choosing profits over people, but I don't think it's inevitable. I think that most people, most of the time, want to do what is right. They just sometimes need polite but impassioned reminders of what's right. I know that I've benefited from those polite but impassioned reminders from others, even when they've made me uncomfortable, and I believe that Cepheid, Danaher, and their executives will similarly benefit from your polite but impassioned reminders. Finally, a message to Danaher execs. You've built something amazing with the GeneXpert machine, but building something is only valuable if the people who need it most can access it. Right now, you're falling short on that front because the people who most desperately need your tests often can't get them, and that results too often in them dying. It's time for $5 tests, and it's time to put people over profits. Hank, I'll see you in comments on social media, in Danaher's inboxes, and their phone lines. And then, I'll see you on Friday.


Hello everyone and welcome to IPM 2015. First of all, I want to thank the organizers for the opportunity to talk about the Becker Ill Rehab. Through this presentation, I wish to provide relevant information to colleagues from other Ill Re programs and expect that in doing so, more opportunities will be created to explore additional areas of collaboration. I also want to convince you to consider the Becker Ill Rehab as a platform or vehicle for use to fill some of the biosciences gap that you do see from the role that you play within Ill Re and beyond. Let me also take this opportunity to invite my colleagues from the Becker Ill Rehab to actively participate in this week's event and also provide additional information to what I'm able to share within this limited time allocation. The Becker Ill Rehab is a joint venture between Ill Re and AU NEPAD. The two entities came together in the early 2000 to develop this special program as a strategic partnership to be hosted and managed by Ill Re. The focus of the program is therefore several forms. One, to support the implementation of the biosciences component of the Ill Re livestock agenda. Two, to support African national research institutions and scientists to address key agricultural development challenges. And three, to support the CGI agenda more broadly. As many of you are aware, the Becker Ill Rehab has been in operation since 2007. But from the early 2000, the program has gone through various phases as shown here. Over this period of time, many donors and investors have also joined to provide financial resources and other support to deliver on Becker's mission. We are now operating under the 2013-2018 business plan, which is largely guided by the need to focus more on innovation. Under the current business plan, the core areas of operation at the Becker Ill Rehab include research, capacity building, technology platforms, development, application and lab management, and finally development of strategic partnerships. The strength of the program can be illustrated through selected activities and related output shown here in red. The GoD program is currently very active in Ethiopia and Cameroon and much has been delivered. We are now beginning to witness very strong national small remnant program in Cameroon with significant funding from the central government. The Aflatoxin research program has been extremely successful and my colleague's Jagger's presentation will demonstrate that. The Bracharia program started in 2013 and is now a flagship program within Ilri. Once again, my colleague, Sita Himeri, will also follow on his presentation. In the area of capacity building and only since 2011, the Africa Balsance Challenge Fund, or the ABCF program, is now viewed as a true innovation on how to effectively address the lack of capacity within African national program. On the technology platforms, Genomic is one of the areas where we have made significant progress and based on this success, we recently secure new funding to harness emerging opportunities to accelerate both crops and livestock breeding with full engagement of scientists from African national programs. The weaknesses. One, we are still struggling to offer opportunities to access the Beka Ilri Hub by many more scientists and institutions that are still in need in Africa. Another weakness is related to our collective struggle to use the Beka Ilri Hub to position Ilri as a world leading organization in livestock research. Some progress has been made recently, but much more remains to be done. Prospect for collaborations are really many, both internally at Ilri and also externally. Internally, we do see greater synergies with the Ilri Balsances program and also within the CRPs at Ilri and beyond, we see greater opportunities. Externally, we see opportunities through working with national agricultural research systems within Africa and advanced research institutions beyond Africa. Finally, I want to thank you for your attention. My colleague and I look forward to the following interactions this week and beyond. Thank you.


When I look at the height of the graph, it's only going up to 3.5, whereas the height of this graph is going up to like 40, and the height of this graph is between, it's like 30 to 40. So notice, the other thing to kind of keep in mind here is that, is this y-axis? So, because this y, see it might look like this bar is as tall as like this bar, but it's not because they scaled the y-axis in order to fit this set of data. So that's another thing that can be a little bit deceptive when we try to change the data. Now, this one, we went a little bit extreme, on very extreme, on the number of bends to emphasize the point that more detail isn't always good, because of course, I can put this all the way down to one, right? There's only a bend width of one. Excel might not let me do that, but you can do that in theory, and that would be like entering just a normal bar chart, right? We just basically had all of the numbers down here, and you would have very few of the numbers where more than one happened to hit exactly on that particular number. And that means the picture wouldn't be very useful to us in that case. So this is gonna be most likely to spread out, and there's not a, only three in one bucket isn't, the buckets don't seem large enough to really give us an idea of the data, although they still give us kind of a spread in this case. So then let's take a look at the next one, and this one, what we did was change the height. So just to emphasize the other thing that people could manipulate, is you could change the height of the histogram. And so what that does then, now I've increased the Y up to 100. So even though this is still going up to like 30, you know, it's 25 to 30, it looks like a more squat histogram, because if I compare it to this one up here, where this one was going up to a similar region, it, this one looks a lot bigger because the Y went up to 30 as the maximum number, which makes sense because Excel's gonna try to make the, to zoom in as much as possible on the data that is relevant. And in here we have a whole space on the graph that isn't relevant. So Excel would normally kind of oftentimes trim that out by default, but if someone wanted to de-emphasize the height of this graph, you know, they might try to add, you know, you could try to, someone might try to add a little bit more on the Y axis and say, yeah, well that's pretty squat. It's still pretty, you know, it's a much more squat curve. If you look at the curve here versus this curve, like look at that, it's a huge slope versus this one, you only got this little squat thing. Well, no, it's like the same. It's just that you changed, it's just that you changed the representation on the Y. See, and then, and so this one, let's take a look at this one, where we did the starting point at 10 instead of zero. So that's another, so if you started at 10 on the bottom, that's kind of weird for a histogram oftentimes, because oftentimes you're gonna start it at zero. But if you started at 10, then it kind of trims out all of the other, all of the low points, right? See up here, we started at zero, and then you had these ones over here. If you started at 10, this, this, this, and this are all gone, right? And you're only starting at 10. Now maybe that might be relevant sometimes, like you might say everything under 10 is irrelevant, so I'm just gonna start it at 10, but that's kind of unusual, right? And clearly that's emphasizing the middle range and all of the lower numbers have been cut out. So that would be kind of a misrepresentation of this data.  But, and then this one, and this one, what did we do on this one? Oh, I see, see this one is where we did the overflow bins. So now this one up top, you'll remember the normal one had these outliers on the end. Now you might do this for legitimate reasons because you might say, hey, look this, the outliers often of course are the problem with the dataset because when you look at an average, the outliers are thrown off the average. If you compare the average salary of people that live in your neighborhood and you happen to have a millionaire that one mansion that sits like in the neighborhood and everyone else makes normal salary, then if you count that outlier, it's gonna pull up the average a lot because the outlier is quite extreme. So the outliers are often an issue. So if you make the histogram, like what if these were 0, 0, 0 bucket and then you had like a one way out here? Well, then it's gonna really skew the look of your graph because you have to include that one way out here. And so to trim that out, you can use these this function. So now you can say, okay, the bandwidth is 2,009 bins, same thing we had before, but now in the overflow bin, we're gonna say everything that's above 77,000 and everything under 65,000, we trimmed those out. So you can see now we have a couple in this one because those two that were here, we kind of combined them together in that overflow bin. And that gives you a more, this is kind of the nicest looking one, possibly of all of them because it kind of shows the data nice and trim in the middle, but it de-emphasizes the outliers. We're not getting a good sense of what those outliers actually are because we've kind of pulled them in to everything over 77,000. So if you have an idea of, well, I wanna know how big that outlier actually was or whatever, then this is kind of removing that data. But again, you can see why sometimes that would be useful to do to get a pictorial representation that's kind of focused on the heart of the data. So clearly, when you look at different data that might have a different histogram to it, then as you adjust the bucket size, the main things that you could adjust the bucket size, the number of bins and the outliers, and then also you could play with the Y-axis will have different kind of in-facts and different on different data sets. So of course we have to be aware of, which is why it's nice to look at the data from multiple different angles. It would be great to have multiple angles. So if someone is having a deceptive representation of the data, then you can call it out and say like, that looks a little deceptive.  I'm not sure if we looked at it from a different angle, we'd get the same sense.


What about juice-plus supplements, dubbed in the American Journal of Medicine as toxicity-plus? Here's indicators of liver inflammation before juice-plus, the huge spike, and then coming down after stopping it.


Tämä video esim. on esim. nr. optimisaation, jolloin kontekstun maksimenlaikeudestaan. Mitä nr. optimisaation on ja miten sääntää nr. research care? Ensimmäisenä, jolloin paljon nr. teknikkoja, tai jolloin paljon statistiikkoja, voidaan vain ottaa dataa, ja käyttää aljelbaan, että ottaa nr. Nr. estimates, voidaan vain ottaa nr. computerissa, ottaa nr. parameters, ottaa nr. likelihooda, ja ottaa nr. parameters, ottaa nr. parameters, ottaa nr. parameters, ottaa nr. maximum is the likelihood by trying different values. The second question is, why should nr. applied research care, because this is something that the computer does for you, so you don't have to do this manually. The problem is that sometimes the task that you give to the computer is too challenging for the computer to solve. For example, you can have a model that is not identified, or you can have a model that is empirically under identified, or sometimes the computational algorithm for calculating the estimates simply fail. So what do you do in that situation? For example, if you're a Stata user, and your screen fills up with this kind of stuff, so you have here the iterative estimation, so you have iterations, and Stata will just print the same likelihood over and over and over and tells you that something is not concave. What exactly is not concave, and what does not concave even mean? Of course, you can just do trial and error. For example, simplify your model, change their options for the estimation or the optimization algorithm, and so on, and hope that that solves the problem. Another approach is to understand what the non-concave means, why something is non-concave, and what you can do about it when you understand the problem. Or you can have this kind of estimation that terminates with error, and you have an error message about numerical derivatives. What are derivatives? If you have done calculus in high school, you know what the derivative function is, but we want to have estimates, we are not interested in any derivative. So why should we care about any derivatives? If you understand what the computer tries to do, then you should understand why derivatives are important in optimization and why the fact that we can calculate derivatives is a problem, and what we can do about that problem as well. Or you may get this kind of error message that tells you that the Hessian is not negative semi-definite. What is a Hessian? What does it mean that it's not negative semi-definite? I have another video where I go into that in more detail, but this video just gives an overview of what these concepts are and how they relate to numerical optimization. In another video I go through in more detail how we interpret the Hessian to help us to find what exactly the problem is, why the model does not converge and what we can do about it. So the first problem that you can encounter is that your statistical software does not give you estimates. It can either go on forever, like in the first example, it just prints those iterations until it reaches the maximum limit, which in state is 16,000, or it prints out, goes on a little while and then prints out an error message for you, but all the same you don't have any estimates to interpret. So that's the first problematic case. Second problematic case is that it's possible that you get these, these messages about something being not concave, messages about Hessian, you get messages about derivatives, but you get estimates. So can we trust these estimates? So we have these, something is not concave, something is backed up, we get estimates. So should we get estimates, is everything fine or should we care about this stuff and then understand what this stuff means before we go on and interpret these estimates. In this particular case, the model is not identified, which means that the estimates cannot be meaningfully interpreted and, or at least some of the estimates cannot be meaningfully interpreted. But data doesn't give us any indication in the actual output. If you look at the estimates in history, the not concave gives us a signal that the model is not identified, but that's the only signal that we get in this particular case. This case on the other hand, we get all kinds of error messages or notifications, we have these optimizations, which in the BFGS optimizations, which in the BHHH and Hessian has contracted that kind of things, but actually in this case the estimates are trustworthy. So when do these errors or notifications here matter and when can they be safely ignored. This is something that we'll talk about in this video and in another video, where I talk about the technicalities of the numerical optimization in Mordhida. What does numerical optimization do and what is actually being maximized? Let's take a look at the likelihood function that I've used in another video and our task is to estimate population mean. We assume that the population standard deviation or population variance is one and our sample consists of three observations, two, three and four and our task is to find the population that has the maximum probability or maximum likelihood of producing these observations here. This is the likelihood function so it gives us the likelihood. So what is the likelihood of getting these three observations when the population mean is, for example, at one? What is the likelihood at two and what is the likelihood when the population mean is at three? So the three here is the maximum is at three so the three is our maximum likelihood estimate. In practice for computational reasons we don't optimize the likelihood function directly instead we maximize the log likelihood. The likelihood is simply the logarithm of the likelihood function and there are a couple of advantages to using the logarithms. One is that this log likelihood is quite commonly a concave function. So a concave function means that when we start from here then we always turn right or we always curve down. So the idea is that from every point of this curve we can see every other point. So it always goes to the same direction, it curves right and it never curves left. The raw likelihood instead at first, if we start from here it curves up and then it curves down and then it curves up again. So we first curve left then we curve right and then we curve left again. So that is not concave, this is a concave function. Concave functions are easier for numerical optimization than non-concave functions. So that's one of the reasons why you get the not concave warning. It just tells you that computer is having some difficulties at some point of the likelihood function. How exactly do we find the maximum likelihood here? So it's pretty easy to see here that the maximum likelihood is 3 because we have calculated the likelihood at every pixel from minus 2 to 6. This is like a couple of hundred different likelihoods of different values, we just choose the largest one. So that's one possibility. Calculate the likelihood at every possible value and pick the largest one. In practice that is not doable because the mean could be from minus infinity to plus infinity and if we are estimating more than one parameter if we estimate the mean as standard deviation for example we have to consider all possible combination of the parameters. And that's just way way too slow and sometimes not even possible to calculate with the computers that we have now. So in numerical optimization what we do is that we apply some math and instead of trying to find the maximum we are actually trying to find the place where the derivative of this likelihood or log likelihood function is zero. So if you remember the high school calculus class the derivative gives us the direction to which the curve is going at a particular point. So the derivative here is positive because the curve goes up. The derivative here is negative because the curve goes down so the derivative gives the slope of the tangent. So tangent is a line that we draw that touches the curve at one particular point and shows the direction to which the line is going. The green line here is the derivative. So these are the derivatives. The derivative first is positive on the left side of three and then it's negative on the right side of three. So it means that when we try different values of mean here the likelihood will always increase when we go from left side of three towards three and when we cross three then the likelihood starts to decrease because the derivative is negative. Then we have also second derivative which is the derivative of the derivative and it's the purple line here shows us that the slope of this first derivative is always negative and when the second derivative is always negative then the function is concave. If the second derivative becomes positive then it's not concave. If it's always positive then we say that the function is convex but typically when we maximize something we want our functions to be concave instead of not concave or even convex. Some computers will actually do this slightly differently. So some computer implementations may not actually maximize the likelihood but instead they minimize the negative of the likelihood in which case you will see things like convex function and that kind of things. But instead of which I use as an example here we always maximize the log likelihood instead of minimizing the minus log likelihood. So how do we find the maximum? There are different computational techniques for doing so and I'll explain first an easy technique. So let's assume that we just want to calculate this first derivative. We try to find where it's me, zero and we want to calculate the first derivative as few times as possible. So let's say that we calculate the first derivative at zero first and we see that the derivative is positive. So let's go and then calculate the first derivative at another point. Let's say we use the point five. We see that the derivative here is negative. The first derivative in many problems we know that it's a continuous function. So if it's positive in one point and negative in another point then it must be zero in at least one point between those two points. So we can try another value and we know that the zero point is between zero and five. So one logical thing is to calculate it at two point five and we can see that okay, the zero point is now it's between two point five and five because two point five, the derivative of two point five is positive and five the derivative is negative. So we can try something between two point five let's take from the middle and we get three point 75 so that okay, that's negative derivative there. So the derivative must be zero somewhere between two point five and three point 75. So we can narrow down where the zero is and we split it again. We get three point twelve. The derivative is negative. So we know that the zero is between two point five and three point twelve. We take something between, we get two point eighty five and now we know that okay, that's a negative value for the derivative. Zero must be between two point eighty five and three point twelve. So we get closer and closer to the actual value of three where it's zero and next we get two point ninety seven and that's close enough to zero, the derivative that we conclude that that's our convergence point. So we found the zero of the derivative or the maximum of the likelihood at approximately two point ninety seven. This is called the bisection method and it's a simple method to understand. But this is not commonly used because it's rather slow so we can see here that this is two point ninety seven is correct only. It's correct only to the second decimal so the third decimal is incorrect already. If we round it to one decimal, it's round to three so it's correct to one decimal on two digit precision it's incorrect because three is the correct value here. So this bisection is slow, we don't use it. In practice we quite often use something called the Newton's method or Newton-Rapson method and this is used for example by Stata, this is used by M plus for certain problems. It is used by some R packages for certain estimation problems and it's also one of the early algorithms and it's easy to understand. The idea of a Newton's method is that we start from an initial guess. So let's say that we guess from here we want to find the zero of this function x square minus four and we start from an initial guess called starting value and our starting value now is ten and we calculate the value of this function x square minus four at ten we get about somewhere about one hundred and we calculate or we draw the tangent line. We calculate the derivative and then we draw the tangent line here the tangent line tells us what is the direction of the curve at this particular point here. Then we move along the tangent line until we hit zero and that's our new estimate. So our new estimate is about five point something and we calculate the value of the function at five point something and we calculate the derivative we go along the tangent to zero and our new estimate is about three that's our new estimate where the zero is. We calculate the function value at zero we go along tangent we are now very close to zero we can see that the current estimate is two point one six two one six two point one six and the correct value if we apply algebra here is two we apply another round of iteration and now we are correct on three digits precision if we apply again we get even more precision but at this point we can declare that the function has converged. The idea is that we calculate the function value we calculate the derivative at the particular point of this curve and then we go along the tangent until we hit zero and this is mathematically how we proceed. So x is our initial guess x zero and then we calculate the function value at x zero we calculate the derivative of x zero and then we divide the function value with the derivative and we subtract that from the starting value that gives us the value at first iteration then we proceed until there are the x changes by so little that we declare that it's the change is no more meaningful and we declare convergence. So this will get indefinitely precise it will be two at arbitrary degree of precision typically if we say that if we have like six or eight digits or 16 digits that's gonna be enough. So we just decide that this is close enough so it doesn't matter that we don't get the exact value. So we never get an exact maximum but we get something that is very close to the maximum using these numerical techniques. Okay so this is how we find a zero so we calculate the function value we calculate the derivative of the function and then that gives us the direction and how far we go. When we maximize something we are not seeking the zero of the function fx instead we are looking to maximize looking up for a zero of the derivative so when we maximize we replace the function value with the first derivative and when we maximize we replace the derivative of derivative of the function with the derivative of the first derivative which is the second derivative and this is the simple if we have one parameter problem if we have two parameters that we estimate let's say that we have a normal distribution we estimate the mean and the standard deviation from the same data set using one run of numerical optimization then we have more than one derivative because there is one derivative for its parameter and we have also more than one second derivative so with multiple parameters this first derivative becomes the gradient vector and these second derivatives go into what we call the Hessian matrix so gradient vector includes derivatives of all parameters so it tells us how much the likelihood is going to change if we change every parameter by very small amount and then the Hessian matrix tells us how much the gradient is going to change if we go to some direction let's take a look at how this works but before that we need to understand that this Newton's technique is not a solution it's not a general solution so it can fail so the Newton's technique works well when all the derivatives exist and in this particular case the second derivative at that point doesn't exist so Newton's technique fails we go from an initial guess of about two we go up along tangent we go to minus 1.69 we go down then we go along tangent we get 2.32 then we go up then we go along tangent and we get further and further from the minimum or the zero which is here at zero so there are scenarios the Newton's method works well for some functions but it doesn't work well for all functions and we can just let it go forever and ever and it will just end up further and further with positive and negative values so it's possible to find this zero point here for example if we use the bisection method we can just look for calculate at random points until we find at least one negative and one positive value and then start using the bisection method we'll find that there are zero pointers here but Newton's method does not find it it's therefore it's possible that these optimization techniques fail and in that case the solution to the problem if it's purely a failure of the optimization technique then the solution to convergence problem is to switch to a different optimizer and for example STATA provides half a dozen different optimization techniques for some estimators for others there are less options but you can switch to a different technique if that solves the problem this is some of the things that I recommend as a first step for non-converges problems because changing to a new optimizer is something that is quick to do and if it solves the problem then that's problem solved and you can go on and address other problems but there are also reasons why optimization fails that are not related to the actual optimization algorithm before I go into those problems let's take a look at how optimization works in two-parameter case so this example that we had was estimating the mean assuming that the variance is one and the sample is three observations two, three and four what if we estimate both mean and standard deviation so we want to estimate two parameters now our likelihood function is a function of both the mean and the standard deviation so it's no longer just a function of the mean but it's a function that takes two parameters the mean and the standard deviation here so this shows the function values using a contour plot we can see that the function gets very very very small when the standard deviation goes to minus one and the maximum of the likelihood is here at mean equals zero and standard deviation of about 0.8 something how does computer find the estimate the computer finds the estimate by for example using the Newton's method so we have the initial guess let's say that we guess that the mean is that two standard deviation is one then computer goes way up here first and then it comes back down and after 136 iterations of Newton's algorithm it finds a solution so this is less than a second perhaps on a modern computer of course if we try this was a difficult problem for Newton's method because the gradient here is very steep and we can try different estimation algorithms or optimization algorithms for example one that I like to use when the default which is of the Newton doesn't work is BFGS and it gets us to the solution using 11 iterations so the idea is that we first calculate the likelihood this combination, then that combination then this combination, that combination then we get closer and closer to the true value or we can see that if we start from a different point then the path is going to be different if we start from here further so our starting value for the mean is zero instead of two zero is a lot further from three than two then BFGS also takes 138 iterations to go get to the starting point so if the algorithm converges then the speed of convergence depends mainly on two things what is the algorithm and if it's well suited to that problem but it depends more critically on the starting value so Newton's method works well when the function has continuous second derivatives it's a smooth function and then the starting value is close to the actual value so if we use Newton's method we start from here then we get even more iterations how do gradient that hasn't then play in this picture let's take a look at what the computer is actually doing so remember that in Newton's method we take the starting value we calculate the derivative at the starting value we divide that derivative with the second derivative so in multiple parameter optimization we divide the gradient with the Hessian matrix because we can't divide with matrices we multiply gradient with the inverse of Hessian and that gives us the next point to try so let's take a look at these numbers actually how it works so this is the same problem and we are using Newton's method we are starting from point where mean is zero standard deviation is one and log likelihood is minus 17 and this shows this small red dot here shows that that's our position these dash lines just indicate where the positions are and this is the likelihood function for the standard deviation calculated at mean fixed at zero so if we fix the mean at zero then estimating the standard deviation is simply finding a maximum of this function here this is the likelihood function where the standard deviation is fixed at one and we want to find the maximum likelihood estimate of the mean so this is equivalent to the one parameter estimation problem that I showed before and this is the actual normal distribution that we draw for the data we can see quite clearly that the normal distribution is off so all these observations are the right-hand side of the mean which is zero so perhaps we should move this normal distribution to the right to make the maximum larger as large as possible then we have the first derivative is the gradient vector so that's the derivative with respect to m and that's the derivative with respect to mean and standard deviation the derivative with respect to standard deviation is larger so we can see that the derivative is larger means that the curve here the likelihood curve is a lot steeper here and when we change S then the likelihood is going to increase a lot more than if we change the mean the same amount and that tells us that or tells the optimization algorithm that it should actually start optimizing the standard deviation more than the mean so the standard deviation needs to go up because the likelihood will increase if we go it up the mean needs to go right that will make the likelihood larger and then the computer will increase the mean a little increase the standard deviation a lot because the likelihood is steeper and it ends up here so we get to here and at that point when the standard deviation is at 27 then the likelihood doesn't really depend on the mean anymore because this is so wide that if we just switch it sideways a little bit it doesn't really make a difference so the computer then starts to find there are decreased standard deviation because that you can see here this point goes up so every time we increase standard deviation a little it goes up and up and up and this normal density that we fit to the data becomes more narrow and then we can see that the mean actually starts to matter so this starts to form a small peak and then the computer will find that there is actually a maximum in that relatively flat looking area as well and then it will hit following the tangent needle or tangent which the gradient vector gives it will hit the minimum or the maximum likelihood in this case so it found the maximum and we know that this is maximum likelihood for two reasons first of all the derivatives the gradient these are zeroes both so if we just look at the likelihood for this particular mean value it's flat here so we are on the top so if we go left or right the value will decrease and the standard deviation here the gradient is flat if we go left or right the value will decrease how do we know that it's a peak instead of being like a bottom or being like an S curve we know it because these second derivatives they are the diagonal elements of the Hessian matrix I'll talk more about Hessian another video are negative so when the second derivative is negative I know that the curve it curves down like that and then the maximum is that when the mean is when the derivative is at zero also there are second derivative with respect to both standard deviation and mean or the partial derivative rather is close to zero and that means that this is a nicely behaving optimization problem because the derivative of the mean does not depend strongly on the value of the standard deviation if we increase the standard deviation by a little or decrease by a little then the derivative of the mean will stay about the same and also if we increase the mean or decrease it by a little then the derivative of the standard deviation stays about the same so in an ideal case these diagonal elements of Hessian matrix so the second partial derivative they should be all negative the off diagonal elements should be close to zero and that's an easy problem for the computer so that's basically what you have in numerical optimization you have the gradients when you have found the maximum the gradient vector is all zeroes all derivatives are zeroes all second order partial derivatives the diagonal of the Hessian matrix are negative and the off diagonal elements are zero or at least not very large and then you know that the model has converged well and computers give you different tests so you don't generally have to inspect these matrices yourself when the computer declares convergence and there are no error messages typically it means that these conditions hold so how does this thing fail or why does this thing fail there are different reasons why the algorithm can possibly be non-convergent or produce a convergent solution that you shouldn't trust because there are some error messages first of all it's possible that the algorithm fails so Newton's technique which is often the default assumes that the starting value is reasonably close to the actual maximum likelihood and also it assumes that the function is smooth if your algorithm fails there are two solutions to this problem one is better starting values or cry different algorithm typically trying a different algorithm is a lot quicker than thinking about the starting values so personally if the normal technique fails I go with BFGS if it doesn't give me any estimates then I'll start doing other diagnostics then it's possible that the likelihood or the derivatives cannot be calculated and this can be for a couple of reasons it can be a lack of identification of the model it can be that our algorithm cannot be applied to a particular scenario so it's possible that we can still find a minimum or maximum of the likelihood by using a different optimization technique that does not use for example the Hessian matrix or the second derivatives or we can try better starting values because this problem can be a specific certain set of parameter values then it's possible that the computer implementation fails and this is different from the algorithmic failure and the computer implementation failure basically relates to purely computational problems so it can be that your likelihood or the derivatives are at some point they are so close to zero that the computer rounds them to be exactly zero because computers have finite precision and things can go wrong because of this rounding to zero so if you have a derivative that is rounds to zero then you don't know whether you go left or right when you want to increase, maximize the likelihood different algorithm bear starting values or even different software implementation can help in this stage so these computer implementation failures are something that developers of statistical software actually they tweak the algorithms to avoid these numerical problems for example sometimes you may multiply all the parameters by a constant or you might multiply the likelihood by a constant to make sure it doesn't go to round to zero then it's possible that you reach the maximum number of iterations so why we have maximum number of iterations is that sometimes the computer is simply unable to get any maximum likelihood estimates for it it can't find a maximum so we tell the computer to for example try thousand different values if it can't find any then declare that the model is not convergent the reason why there's a maximum number of iterations is that for some problems the maximum likelihood does not exist or it's not unique in which case if we don't limit the number of iterations the computer would just run forever and forever and never stop running and we don't want to have that so we limit the iterations you can also increase the limit yourself so what you can do is use a different algorithm better starting values or increase the iterations then it's possible that the maximum likelihood estimates do not exist I have a video talking about this in the context of logistic regression analysis this can happen for example when some of the parameters converge towards positive or negative infinity so a parameter can never reach infinity but you can always make it slightly larger and in that case you can just modify the model or collect more data because those are the two remedies it's possible that the model is not identified which means that there is no unique solution to the problem and in that case the only thing that you can do is to modify the model collecting more data does not help so if you are collecting just one variable and you say that the mean of that variable is a function of two parameters A and B you cannot solve or estimate A and B at the same time because you only have one mean and you cannot estimate two different quantities from one quantity the final reason why the algorithm can fail is empirical under identification and this basically relates to a scenario where some of the parameter values are so close to zero that the model becomes basically unidentified so it's as if a parameter wouldn't exist in the model and these all are something that you need lots of practice to be able to diagnose and you need to understand what the computer does when it tries to find the maximum because the only output that you get is the parameter values, the gradient and the Hessian and by interpreting these different things particularly interpreting the Hessian which I talked about which I discussed in another video you can make at least an informed guess on what the problem may be


What's going on you guys? Welcome to the Single Guy Channel. My name's Lloyd. Today we're going to be talking about how to be successful with women when you have anxiety problems, you have emotional problems, you have a lot of issues that are going on in your life that are associated with those things. You know, I myself have had these problems for a very long time. So in this video what I'm going to be talking about is I'm going to be talking about my story and kind of how I overcame my anxiety problems or was able to manage them to a level where I was able to be extremely successful with women. And I think if you're a guy who's suffering from these issues too, if you watch this video, hopefully this will give you an idea about something that you can try to help get over this. Okay cool. So before I get into this, if you guys are looking to get trained by me in person, check out my live training schedule you guys. I'm going to be hitting up San Francisco in early January. I'm also going to be hitting Toronto, Los Angeles, Miami, New York City and Scottsdale. So take a look at that. If any of those cities sound familiar to you, I would take a look at my live training schedule. We'd love to see you. Okay cool. So let's talk about my story and my struggles with anxiety and how I overcame them to be able to be successful with women. Okay so the first thing that I'm going to tell you here is that what is the level of anxiety that I had? Okay so I've taken several personality tests and the last personality test I took I got 89 out of 100 in terms of emotionality and 89 out of 100 in terms of anxiety.  I think I got 99 out of 100 in terms of like very anxious behavior.  Okay my anxiety has gotten a lot better. Okay the 89 out of 100 I got is probably would have been 100 out of 100 if I had taken that test two to three years ago and in fact I took a couple tests five years ago and when I was in college and basically it told me that I was extremely at risk for suicide and depression well I was depressed at the time extremely at risk for suicide because of my extreme high levels of anxiety so I've improved but I still have overall a very very anxious person. So how did I succeed with women despite these challenges? Okay well the first thing that I did was I didn't use my anxiety as an excuse ever for why I can't achieve my dreams and I know that can be trouble for some people but for me it was something that I either dealt with this issue or I'm just not successful you know and it was either those two choices so what the first thing that I started doing was I started saying okay I have extreme high levels of anxiety how are ways that I can cut down on my anxiety levels. So one thing that I noticed about myself was that and I noticed this in a lot of other people too was that if I thought too far into the future then I would start to get upset so I would look at my current situation right now and I didn't have at the time I didn't have any friends I didn't have anybody who I could trust I didn't have any girls that liked me none none that I liked back and that made me really upset because there was tons of girls that I liked around that didn't like me so I would think okay how can I get these girls or one of these girls to like me to date me to do something like that that was so far into the future that when I thought about it and thought how unachievable it was I would get really upset so what I started to do is I started to think okay can I get one girl to maybe laugh at my joke okay alright I couldn't get one girl to laugh my joke could I get one girl to talk to me alright awesome I was able to do that today so that's a win then I would start by planning it step by step I could get a girl to laugh at my joke I could get a girl to talk to me for a while I could get a girl to give me her phone number I could get a girl to show up to a party that I was going to I could get a girl to you know go out on a date with me and then so on and so forth when I broke it down in baby steps I was able to actually see things and they seemed achievable to me so that cut down on my anxiety a little bit too the other thing that I started doing was I started exposing myself to uncomfortable situations and I think this is a big thing that a lot of anxious people should start doing more and more because the first time you do something it's so like paralyzingly scary that after you do it everything else seems a little bit easier so if you spend time not doing anything not taking action and not doing it I found that that actually made my anxiety a lot worse if I was willing to push through the the little bit of burst of anxiety that I would get to talk to a new girl or something like that and actually got better and better over time so even though I was really really anxious and crippled with anxiety at the beginning if I would do one thing maybe like maybe I would talk to a girl who was working as opposed to a girl who was like just on the street or something like that that would help me get over my nerves a little bit because usually the people that are working are very nice to you I mean they're they're on the job so they're not going to say anything too mean to you because they don't want to get fired so I would start with them and then I would work my way up okay or maybe we'll talk to some girls that I wasn't terribly attracted to so that way that would cut down the nerves a little bit I would take baby steps okay so I took baby steps when it came to the steps that I would take for you know making strides with women and then I would practice getting over my anxiety by actually executing on those baby steps slowly but surely and the final thing that I did which I think a lot of people can start doing is that we tend to fight things so when a doctor tells you that you're a very anxious person when your parents or a test or a personality quiz tell you that you're you have anxiety problems that you're suffering from them and you need this medication to get over them you know I just feel like for me that's not a good way of looking at the problem there's actually a lot of cool things to being an anxious person I actually like this side of myself you know I have a lot of sleepless nights I have to suffer from insomnia don't like that but at the same time too I'm I'm kind of a perfectionist you know I want to get things right and because I worry a lot and I'm anxious in certain areas although it might cause me a little bit of discomfort at the time overall I think it could be good for performance I want to wait like if I'm like if I'm coming out with a program or if I'm coaching a student or been growing my business or doing jujitsu I really want to make sure that I get things right and I noticed that my anxiety pushes me harder and motivates me more than a lot of other guys so my anxiety is not all bad I actually don't see it as a disorder or I don't see it as a problem quite as much as I think some other people might if maybe a doctor told them or the way I used to see it in the past I used to see it as just a horrible thing that wasn't gonna wasn't gonna be good for anybody okay so I'm more at ease with my anxiety and because of that one thing that I do that I think is a lot different than a lot of other people that suffer from this is if I'm anxious I'm anxious that's okay like if I'm gonna be scared before I go up and talk to a girl or if I'm feeling really I have a lot of high levels of anxiety at the moment I'm okay with it okay and what I mean I'm not okay with it like it's totally great I'm skipping around happy but I but I try not to fight the feelings because I've noticed that if I try and fight my anxiety it takes a lot more energy for me to do that and then pretend like I'm not anxious then it is for me to just be nervous just embrace the feelings and say oh you know a feeling kind of nervous we'll see what happens when I go talk to this girl and so for me if I embrace the feelings and learn how to live with them and learn how to be better then I find it helps a lot and so sure my anxiety has come down as meditation has helped you know being not reacting to things in the same way learning mindset shifts but overall I'm still an anxious person I don't think that's going to change anytime soon so me living with it has become extremely important and if you're a person who's living with that I encourage you maybe at times it might be good to stop fighting or anxiety and you know just preventing yourself from doing anything but just being able to carry on with your day and accepting it you know I'm gonna be a little anxious today that's okay I can still get my work done I can still talk to that girl I can still make the take the actions that I need to take to improve my life so if that helps you guys I hope it did you know I've been a person that's suffering from this for ages a lot of my students and clients suffer from this too so I help them with it with it too if you're a person who suffers from a high level of anxiety please post in the comment section below and if you're wondering how to get coached by me one on one please fill out my form down below and if you feel like you're a good fit then hit me up oh sorry we'll hit you up if that's what happens okay cool thanks a lot you guys good luck out there


risesu incorporate wa meguori� kumasama wach業ya sana wa wa wap wap megoro damare miike kabió k겠어 wowa kiku. cha rani gawaa kwenya na himoca kwa kwa kwa w었습니다 os dict프 Commissioner KST matia ki kom fingers You have to work You have to work And make sure your friends listen to your songs Mabishchezako, even strangers On kumbein goma inaweza, then you release it U situa tungoma And did you feel that auna production Tafta di atakwa mi Facebook di, tafta tu di Entwa di nani Soa mbe Facebook at after Non agrumdi, deep production Deep production Awesome guys, so how about we check that out And we'll cry about it So guys, like I told you, we have Robot Oko Gang In the studio representing for karaoke live How are you? I'm fine, thank you Right, good to have you in the studio This is your first time? This is my first time here I appreciate so much You're most welcome Alright, so let's talk about your name Your name is Robot Oko Gang Your artistic name Tell us about that How did that come about? Okay Let me say I was born in Migori Rest partly in Migori Right Then I moved to Nairobi So when I was born My mum told me my dad started My dad used to like politics So much So my dad started me My government names are John Thune So remember John Thune The guy from Scotland So by the time he came to Kenya to investigate Robots Oko's death I was being born He makes a lot of sense So to me I didn't want to use John Thune I felt it was somehow western So I was in an African name So I wanted to robot Oko Back to your roots Yeah, back to my roots I wanted to robot Oko So I chose robot Oko Then I added a girl To keep in touch with John Thune Nice That makes sense Alright, so you are a hip-hop artist Right So what kind of hip-hop Have you settled on? Because right now we have mumble rappers We have guys who do this hardcore And then we have the trap music now So what kind of hip-hop are you doing? Okay From my name Yeah You hear some of cultural Roboto Oko That's some of cultural Right So to me Starting out I started by finding my sound I could find my sound It took me so long Then one day Something just happened I fell in love with Afro rap Right As in I blend my music I blend Kisua I blend English And I blend my mother tongue So it's somehow Afro rap But hip-hop Alright We would like to see that We will be hearing from him He will have to do something for us But that's a little bit later So when did you get started? Officially Let me say All my life it's been music Right But let's talk professionally When did you first go to the studio? Can you even remember the first song you wrote? I can remember the first song But it was really work The first time in studio But I tried So professional I started 2015 I started doing music business now In 2015 Alright So what can you say Draw view to start doing music And hip-hop for that matter Who made you fall in love with hip-hop Or just being an artist What draw you to do music? Okay So After clearing high school I had a friend His name was in high school I remember back way in high school From 2 I had a friend who was a rapper Me, whether I was a poet in high school I used to write poetry So the person sitting next to me His name is Alfitin This is the guy who made me rap He used to sit next to me When the teacher is not around I could hear him scrabble His books right Me I'm there writing my poems I'm asking Alfitin how about this That's dope Can you put it into words Something like spoken words Or can you rap I say I'll try I started learning I like that I fell in love with the rap music Great So how was the journey been for you Like let's say from 2015 Until right now have you made any steps How has the journey been Has it been challenging Has it been easy I think I'm about that Easy Forget about it I know right We've passed through valleys Hills A lot So me being a money independent artist No label Just me Some team I work with So we've been trying Pushing our music I know Kenyan industry So tough to break But we've tried We've tried It's not easy You have to sweat Sweat is only sweat Pain blood Blood sweat and tears I always say My sweat on the floor Turn my flows into world You feel that All right So are you planning to be with anyone Because I hear people Break out You have to start a scandal Just controversy Are you planning on doing that With anyone So I will say it's called Kiki Yes An artist said in Tanzania Leave Kik for the motorbike I don't know what that means But sour To start a motorbike You have to kick it That's what he meant To me All the way to today I always believe in myself So no beef break No beef or what Maybe beef are healthy If beef are commercial If they pay If they bring food to the table Bring them And beef you up Nice And you have a new song out Pelele, if I'm not wrong Tell us about that How did that come about Okay, Pelele I'll take you back to high school Okay, high school There are so many challenges Piya Piya pressure, what Groupies So to me To me I was an individual I always wanted to be But in high school I had a key I was always alone You were a loner I was a loner To survive And I survived So I never liked groupies So I only had one friend I won't say his name He was so notorious He was so so notorious So he was the one always pushing me Robotoko I say I like the way you rap man Don't just give up So him being notorious He used to make some stuff Sometimes you get bored So he realized something I don't know have you fermented Do you know fermentation? Ya So this guy This guy could tell me School is closed But when school is open Come back with a lot of sugar So Mia I used to bring sugar Then he used to mix He mixes sugar with water Then he ferments Oh you let him stay for 3 days also Some days 3 days is a few Many days For it to be real Then what does that mean It used to make something Sorry I don't know how to say Something so close to As in if you take it you feel busy So Pelele I wrote Pelele last year August So I flashed back that life Say what he went through He used to make it It was real And he used to drink It was real He used to call it Pelele Ya As in my town Pelele Means alcohol That's another name for It's Kongo In Kijaluo Kongo Or Pelele So that's why I decided I decided right for you Alright so since you are A dope artist And you believe in yourself But we want the guys at home to see that Because as a hip hop artist We have to do either freestyle Just do something for us Also they say it's called Haruki If you cannot sing you rock Ya so do something for us I'll fix the mic Ya stick the mic Dongidak Idak kakapelu Nyorukai kai Eki nyoma kelu Nyarnya semu Chaki nyoma uma Nyarnya suna Darapokigero Skundepokimedo Montingetero Zee Check check niga Flow ikoseka Itadi hosi Misitadi hosin Call that niga Niga doki Flow ikonoma Owna street zime shouna Shouna mademkila kuna Wo teniwa noma Noma noma noma Inwan yu looking forward to working with And what do you say actually inspires you? Me growing up I'm so choosy man But a lot of artists inspires me I can say one who inspired me the most I can work with Oktopiso Oktopiso, I feel his music His dope, his adworking He's an independent artist He gives me that motivation Recording music Then shooting videos From your own pocket It's not easy Then shooting videos abroad That's something so dope man So Oktopiso He's so dope Kinkaka Fresh fresh Even the OG OG is so cool man I'm looking working with him Kali graf But the Kali graf has pushed Kenyan music so badly I have respect for him That's what I always tell him You call yourself OG I always say that's Umolos grind I hope you'll watch this Hey Kali graf, a big shout out to you if you're watching this Now we have a new meaning to your name It's not the OG we know it now Umolos grind That makes sense We have to grind We're gonna get that mula By all means Robot Oko Gang What should your fans expect from you? 2019 is still fresh What are you doing for us? Robot Oko Gang Anyhow to expect What a shangai This year this way I know it has to be Millions on high note January Kuna nga matari ko Out Na jitanya nga It's hot man Shout out to To MK One beat record By there is the one making my music MK upon the beats Really dope stuff A lot of music More videos, quality music Wango zetu Dawalisha leo Dawalisha dizias We're looking forward to that We can't wait to see that Right, so for guys who are just joining us Maybe you would like to remind them Your social media handles Twitter or Facebook or YouTube Where can they find your music And where can they find you Across all social media platforms Mwa ni simpulia ni Uta sumbuka Robot Oko Gang Kikatu yo mi utani pate Kila mahali Alright So you have any shout outs Anyone you want to send some love to You just like any shout outs Before you wrap up First shout outs kwa zani kwa kwa Thank you It's not easy na ziwa Next shout outs ni kwa studio palivo Kufanyakazi maze Ujwaizi stories apu record ni ni maze Sira isi maze Shout outs MK palivo One beat maze Shout outs mamangu baka to maze Opaki wachi maze Alafu jo Hudiangu jo Kauntiangu jo mi gori maze Ya na mi na se maga Ni meka mi gori ma bigani Like a snap It's a good thing to be proud of your roots Where you from It's a good thing So I always call mi gori Gold city In mi gori mine is gold My mum herself She mines gold It's a gold mine I always make fun You come to mi gori We'll give you gideri on a gold plate So we'll have to think So shout out to gold city Gold city all Everybody there Mazejo keep it locked Your boy Robatoku gang This year man This year man Thank you so much for coming through It's been a pleasure having you Thank you so much So everybody who comes here You have to take us on a break Like all artists do that So I want you to take the mic And check us on a break Because you want to listen to your song So do that for us Thank you for watching the interview I've been hosted by 244 I appreciate I appreciate so much You're laughing right But now we have to go for commercial break We have to pay some bills We'll be back shortly


Welcome to the CTS Learning Series Chapter 5, testing a non-OSS UOC example. Video 5, demonstration of a TSS conformance test. In this video, we will demonstrate how to construct a project configuration file for a TSS UOC, perform a successful conformance test on a TSS UOC, perform an unsuccessful conformance test on a TSS UOC, and suggest ways to troubleshoot common errors while testing a TSS UOC. As mentioned in chapter 5 video 1, we'll be testing Balsa's UOCs. This video in particular will test one of Balsa's TSS UOCs called TSS Type Abstraction. For more information about Balsa and how Balsa is organized, please consult the FACE Technical Standard, the Reference Implementation Guide, and the Software Suppliers Getting Started Guide. Let's open the project configuration list and make a new project configuration. Let's name it CTS Learning Series TSS Demonstration, and we'll save it in the CTS Learning Series directory. After clicking OK, we are presented with the Project Configuration Builder. For this video, we will be demonstrating the construction of the PCFG, but for more information about each of the options provided in the PCFG, please refer to chapter 3 video 4. Let's first select the base directory. I'm going to set the base directory as Home, CTS User. Next, our segment is going to be TSS. Balsa's UOCs are all written in C++, so we will select C++ as our language. Our profile is going to be safety base, as that is the FACE profile our Balsa TSS UOC is written to, and what we configured the toolchain to test as well. Our partition is going to be POSIX, as our OS does not provide any of the RINX 653 APIs, only POSIX. For our TSS, we also aren't going to use any of the OpenGL functions. Next, the option to provide the toolchain configuration file is provided. Finally, the UOP name is used to identify the UOP. Let's enter CTS Learning Series TSS Example. In the Data Model tab, let's provide the shared data model location and the UOP supplied model location. Balsa's USM does not have entity uniqueness or observable uniqueness, so we can leave these options unchecked. For TSS UOCs, when the data model populates the UOP section, instead of a drop-down, we have a checklist that we may select UOPs to see the associated views. This is different from P++ and PCS UOCs that we have seen in Chapter 5, Video 3 and 4. In the Gold Standard Libraries tab, let's provide the location of an empty folder. We will set this as Home, CTS User, GSLs. In the Object Libraries tab, we must then supply the Include Paths and the Include Files for the TSS UOC. It should be noted that the beginning of the TSS Objects Libraries tab is different from the PCS and P++ Object Libraries tab. There are multiple different TSS types, which may be selected in the drop-down, either TSS Interface TSS UOP, TSS Type Abstraction Interface TSS UOP, TSS Component State Persistence UOP, TSS Transport Protocol Module UOP, or TSTA Interface Adapter UOP. We will be selecting the TS Type Abstraction Interface TSS UOP. It is out of scope for this video series to explain the different types of TSS UOPs, but more information may be found in the FACE Technical Standard and the Reference Implementation Guide. Next, we have an option to define whether our UOC uses the Type Abstraction Intersegment API or the Transport Protocol Module Intersegment API. For the TSS Type we selected, we are unable to use the Type Abstraction API, but our UOC does use the Transport Protocol Module API. We also have options to select if our UOC uses or implements the extended or TPM serialized interfaces. Our UOC does not implement or use either, so we may leave these blank. As mentioned before, Analyzing Balsa is out of scope for this video. However, each of the header files that the UOC uses must be provided in order to check for conformance. The list of included header files and paths are listed on the screen. As mentioned in Chapter 1, Video 1, and Chapter 3, Video 4, there are two methods of testing UOC's for conformance, the Target Linker and the Host Linker Method. We will be using the Target Linker Method. This means that we must provide object files that were compiled against the gold standard libraries. We don't have the object files yet as we haven't generated the gold standard libraries or built Balsa against them. For now, we'll leave it blank. Continuing down, we are provided an option for providing the factory functions. As mentioned in Chapter 1, Video 1, and Chapter 3, Video 4, factory functions are concrete implementations of methods that allow the CTS to test for implementations of the provided interfaces. The factory function header file is generated alongside the gold standard libraries. So before we can provide the factory function's CPP file, we must generate the GSLs. For now, we'll leave this blank. Now, we may select the interfaces that the TSS UOC implements, but our TSS doesn't use any. However, the TSS UOC does use the Configuration Services Interface and the Health and Fault Monitoring, or HMFM, interface. The notes and project info tabs do not contribute to the project configuration validation or conformance testing, so we can ignore those tabs. We won't use them. We have intentionally left the Target Linker section and the Factory Functions section blank. To fill these sections in, let's generate the gold standard libraries by pressing the bookmark icon. After the generation finishes, let's take a closer look at what was generated. In the directory, we can see a list of libraries and a readme file. Let's look at the readme file that was generated. The readme lists the valid GSLs that were generated, as well as the associated include directories that should be used to build objects to test with the CTS, including the files that were just generated. Let's take a closer look at those files. If we point to the GSL include directory, we can see the CTS Factory Functions header file and a face sub-directory. Let's open the CTSFactoryFunctions.HPP. Here, we can see the function signatures we must implement in order to be face conformant. These were generated based on the supplied options from the project configuration file. Let's exit this file and look at the face sub-directory. Here, we have the generated header files we must include while developing UOCs. How to use these are out of scope for this video series, but it is important to understand that the GSL generation process generates these files as well. For now, what we're focused on is the libraries and the factory function headers. Balsa was written to the face technical standard and correctly implements the interfaces required to be conformant to the face technical standard. With Balsa from the open group website, it already comes with the factory function implementation that is required to be written. Instead, for the purposes of this demonstration, we are going to write the factory function implementation ourselves. Let's do that now by opening a text editor and creating a file called tssfactoryfunctions.cpp. Let's include the ctsfactoryfunctions.hpp header file and the header files for the tss UOC, which are fia underscore tss underscore base dot hpp and fia underscore tss underscore type abstraction dot hpp, which is where the tss base and the tss type abstraction classes are defined that implements each of these functions. Then we'll copy and paste all of the required functions from the header file to the source file and return a new instance of the class that implements that specific function. Now the cts may understand that the tss UOC implements each of the required functions. Let's put the path to this factory functions file in the factory functions location in the project configuration builder. Finally, we need to create our object files. Balsa has a build process that uses make. Although we are not going to analyze the build process, it is important to note that there are two ways of building balsa. One to build for face conformance and one to build without face conformance. In our case, we are going to build the tss UOC for face conformance. When we build, balsa detects the gold standard libraries to build against. Balsa contains configuration options to provide the path for the gold standard libraries. Before we build, we must make sure the path is correct or else balsa won't be able to find the gsls. Finally, we may enter our build command. Enter make-f makefile.conformance tss. Balsa will build and create an object file. The file extension for the object file will be .rel. Let's provide the newly created .rel file in the target linker section. We can now press the test UOC conformance button. The progress bar will fill up as the conformance tests are being performed. Just like the data model conformance testing we performed in chapter 4, we are shown the conformance test result with the output file location at the bottom of the interface. It looks like we were successful in our test. In chapter 5, video 7, we will open the conformance test report and talk about the test results for non-OSS UOCs. Let's intentionally create an error by creating a new project configuration with no options configured. Let's select the test UOC conformance button and see what happens. It looks like the test returned an error because there was no toolchain among other things. Let's press the back button and then the project validation button. This button tests to see if our project configuration is valid and all options are configured correctly for a conformance test. It looks like we're missing our toolchain file, as stated before. Clicking on the bottom right icon allows us to view details of the failed test. Thank you for watching. In the next video, entitled Demonstration of an IOSS conformance test, we will demonstrate how to construct a project configuration file for an IOSS UOC, perform a successful conformance test on an IOSS UOC, perform an unsuccessful conformance test on an IOSS UOC, and suggest ways to troubleshoot common errors while testing an IOSS UOC.


I've done plenty of Pixar vs. episodes in the past, but this is going to be the emotional one, folks. It's Wally vs. Up. Grab a tissue. I don't know why I whispered that. Let's get this party rolling with the cast of Wally and what better place to start than with the tit-dealer character himself. Wally is one of the most lovable animated characters of the last decade. His mannerisms and sounds are so well crafted, you really feel like he's a living, breathing thing. He's a resourceful, productive, and curious little chap. If he was a monkey, his name would be George. Curious George. Eve is the apple to Wally's Windows PC. She's slick, simple yet beautiful, and a bit of a loose cannon. She starts as a typical robot, merely following protocol. But soon that all changes when Wally wins her robotic heart over. Eventually we're introduced to more characters, a zany list of third-string robots and some heavyweight humans. But it's really about these two. Notable voice work includes comedian Jeff Garlin as the captain and Pixar favorite John Ratsenberger playing one of our obese humans. He also has a pardon up as well as one of the construction workers early on. Pixar likes themselves some John Ratsenberger. I don't know why he's short on anything. My girl Socorny Weave also has a small role as this ship's computer, but the film is actually at its best when the talking is minimal and we get to see our robots interact with each other and the environment around them. Opsman Protag is Carl Fredrickson, voiced by legendary actor Ed Asner. Carl is a man whose better days are behind him. He's a grumpy, ill-tempered permit that wants nothing to do with others. In order to get this guy out of his shell, Pixar has introduced a great cast of supporting characters. We have a boy named Russell who wants nothing more than to win one of those Wilderness Explorer badges. We have a hilarious dog named Doug who can talk via voice box and he says, Hilarious it squirrel! My personal favorite though is the weird tropical bird named Kevin. Seeing Carl venture through the jungles with these three guys is simply a joy to watch. Christopher Plummer plays our villain here, Explorer Charles Muntz, but I almost wish they didn't even introduce a bad guy. Wally had one as well in the form of a self-aware computerized ship, but it was very short and I think it worked there and I think it would have worked great in Up. Up's first 10 minutes is one of the saddest things put on screen. It's a touching sequence that takes us through Carl's entire life. The moment he met his wife as a kid, the first adventures they went on, the realization they couldn't have children, and eventually for death. Blast this one! Why is this so sad Pixar? This ingenious piece of storytelling almost works against Up as it's the highlight of the movie and it's in the first 10 to 15 minutes. So everything preceding it is a little bit downhill. Not bad, just worse. It's also extremely adult, so when we get to a sequence where there's dogs talking and flying planes it feels very disjointed, like who's this movie for? The good obviously far outweighs the bad though and up, watching Carl find himself again with his hilarious cast of characters, I mean that's enough. That's enough right there. Wally falls into a lot of those same trappings. The first hour is a work of art. It's a film that has more meaning and love behind it than most of the cookie cutter crap we see out of Hollywood. I could watch that little guy scour the earth for hours just tinkering with things he finds. The ending of both tales tie things together very nicely. I love how Wally made the humans more robotic than the robots themselves. You can tell there was a conscious decision to make the humans more cartoonish in looks. They lost themselves a long time ago and Wally saves them all.  He did it for love. He did it for Eve. Why are you so sad Pixar? Up ends as glorious as it starts, Carl realizes his life wasn't over, just the first chapter. Everything is just amazing and it truly makes you appreciate life and people and everything Jesus, what the f**k are you thinking? The f**k are you doing that could have hit me?   It really makes you appreciate everything. He's been smart master and he made me this collar so that I may talk, squirrel! This is a tie plain and simple. Wally nails the look of an abandoned earth. A disheveled earth. A Zoe disheveled. The mountains of trash, the layers of pollution and the cartoonish nature of the humans are spot on. Up is colorful and has a subtle feature that makes it stand out. The square nature of things adds an overall demeanor of our hero Clark. The details on the fabric, the shine of the balloons, the realistic aerial shots of cities and fields are almost photorealistic at times. Action is the low point of both movies, they didn't need action. I mean I mentioned the dog fighting sequence. Pixar's music is once again in top form with these two soundtracks. Wally composer Thomas Newman known for work on films like The Shawshank Redemption, I don't know why I did this, and Finding Nemo gives us short yet touching songs throughout. A blend of modern computer synths combined with classic instruments fit perfectly to the tone of the movie. As good as those songs are though, they don't quite reach the level up does. I don't know why I'm talking like this. Michael Giacchino, Michael Giacano, Michael Pinocchio, I don't know how to say his f***ing name. 1920s to 30s harmonies take us on a journey through his life and keep with the theme of a lifelong love. It's simply beautiful, it's simply perfect, it's simply irresistible. She's so fine, there's no telling where the money went. Wally and Up are still the most touching Pixar films to date. The question is, which one touches you best? That didn't sound right. Leave a comment in the comment section and click the subscribe button if you'd like to click on subscribe buttons. More than just reviews, this is Movie Feuds. So Janice just left, she's just gonna leave this shattered pile of s*** on the floor for me to step on. Caught my feet up like John McLean from Die Hard.