This is Machel has kindly agreed to take a question or two or a comment so the floor is open for those questions or comments. Question. Can you hear the floor? Just raise your flags so that we can see them. Thank you. It looks like no one has questions. Mrs. Grasamachel, thank you very much for letting me repeat. Thank you very much, Mrs. Grasamachel, for having paid us the honor of coming here and sharing with us your experience, which is a very rich and lengthy one. We are always emotional and I have no doubt that all my colleagues have a lot of things to share. Thank you very much for having spoken about migration and migratory flow, which is not only a migratory movement from south to north, but also a migration flow which has become a global one. I am still very emotional. I apologize. Once again, I think that the entire African continent is supporting your appeal that we need to review migration governance. We need to include the question of migration in the post-2015 Development Agenda and we need to support the efforts being made by IOM in this regard. Thank you very much, Mrs. Grasamachel. I think this was more a comment than really a question. What I would like to say maybe is based on my experience in Africa is that most of times development civil society organizations are not engaged in the debate on migration, in the sense again of making this a national agenda in which it is not only of government. Government have to improve the laws and the systems, but to explain and to constantize people on what kind of reasons you can take and how do you take them and to protect themselves from the criminality which can be involved because of smuggles and all that stuff. I think that debate does exist in some of our countries, even in countries of origin. So I think we call origin in numbers, okay? But I also think even in the cases we are receiving, let me give you an example of my President in Mozambique. Northern part of Mozambique is now receiving lots of people coming from also, as I said from Bangladesh, sometimes they come through Ethiopia, et cetera. You have Somalis because of conflict and people began to complain to say, oh, no. Now we are having these people. They are taking our jobs. They are taking our women. They are taking, et cetera, et cetera, et cetera. And the President said, wait a second. He raised his hands exactly as I'm doing. He said, wait a second. Are we, Mozambicans, now going to raise the issue of migration in this country? Do you remember where we were during the struggle for our own liberation? Do you remember when we had the conflict in Mozambique, how many millions of people went to neighboring countries? But even today, how many Mozambicans are leaving now? They are leaving. South African, Zimbabwe, neighboring countries. When we say this, it's not because we know there's a huge migration happening. We have people who speak French we never had. I mean, from Mali, from Senegal, et cetera. It is fine. We just have to learn to live with it. But communities, many times, are not engaging in this debate. And I think what is happening in our communities is what is happening here in Europe as well. And that's why I appeal really to make this out of the agenda to say, human family, you are much darker, you are much lighter. When you pray, you say God and you say Allah, maybe you are like me. When you use the traditional practices of religion, it is fine to be who you are. And it is fine to be wherever you want. Human family has to learn this. Otherwise, I don't think we are making of a big problem which actually we should welcome as a part of putting into practice those very beautiful principles which we have signed up. Now, it's the moment of truth. The moment of truth is to practice this in our daily lives and to accept one another, even when people are different from who I am. And who said that I'm better than the other one? By the way, only when you come to know the other part you will be able to enrich yourself. So these fears, I think they have to be challenged. And they can be challenged by society itself. It's not alone a question of laws in the institution. But it was a comment, not a question. I don't know whether there's any other. I can see somebody there yet. Let's see. Ambassador Sierra Leone. Thank you very much for that most comprehensive presentation. I think us listening to you are very proud to see somebody make such a good presentation. And thank you also for all the experience and all you have done in the world in terms of children, etc. The question I wanted to ask is in relation to migration and the question of visas, the need for visas. I know that you are talking about even within Africa. Some of us who come from countries like Sierra Leone, we know how difficult it is even to obtain a visa even within Africa. So I just wanted to ask if you would like to comment on this. What needs to be done indeed to ensure that visas are not so difficult for people from some parts of the world, some countries in the world, where you conclude by thinking there are some citizens of this world because you cannot get a visa to go anywhere, including Africa. Thank you. Again, I think this is one of those examples of what we say. And sometimes we agree upon not only in Africa, it's not only at the level of African Union, even in our sub-regional level. It's Equus, Sadek, East Africa, etc. We have discussed very, for a long time, this issue of regional integration. And part of regional integration is exactly free movement for people and goods so that we also encourage intra-Africa trade. And you know, again, one thing is what we discussed, but back home then we still make the laws much tighter. You are being very gentle. I'm sure you are raising this because my second country, which is South Africa, has now tightened even much more immigration laws and everybody is complaining. I'm not in government so I can't respond exactly what the challenges are. What I'm saying is the more you tighten this, then you will encourage people to go underground because they will do it anyway. As I'm saying, the issue of movement, you will not go to stop it. It's better to accept that it's going to happen. How do we manage it better? And of course, you protect the borders. And when you protect the borders, it's not a necessary movement of people. I think we should protect ourselves against criminals. That's a different story. Because yes, you don't want crime also to be moving freely between, I mean, our countries. There's a difference of a normal citizen who is looking for, I do not know, maybe it's a business to live or it's to study somewhere else and movement just to visit. It's a different thing in how do you spot and you neutralize criminals. So I think it's a big challenge for African countries. But only a few have managed, I mean, to not to eliminate completely, but to lose out, I mean, the rules of visits. And it's a challenge. I can't really give a response. But I know this is something we have to deal with. And even worse, because in our case, we have families who are living, I mean, cross-border. It's not even a question of business. It's families who have been divided by this Berlin conference, which is not our making, but we have not been able, I mean, to dismantle it. And because our families are the other side, I have to go back and forth for good and sake. We are not going to solve it by tightening it, but we have to lose. And my view is that yes, we're not going to sophisticated the system to spot criminals, to prevent them from abusing the free movement to create problems to all of us. That's a different story. It should be put in a different class. I think it is one further question from the distinguished representative of Venezuela. Thank you, Director General. I agree with the delegation, so who have spoken before me, on how extraordinary and significant it is to hear Ms. Machel's words. They're very important. I've taken note of some of the comments. And now I would like to just make a few comments. You said that we need to learn to live with diversity. And you also said that we have international humanitarian law, which is sophisticated. And another sentence which struck me is that you said that the value of human life changes according to different circumstances. I would like to make some comments. Before 2008 when we saw one of the worst crises in terms of economics arise, there was some openness towards migration and legislation which had acceptable conditions and for life such as access to health, education and other basic rights. This has now been closed down gradually and we've seen a drastic worsening of life for migrants. Men, women and children have had to return to the shadows. They've been afraid and constantly worried. My intention is not, of course, to create difficulties here by saying that conditions have worsened in high-income countries. I think it's a social and shared responsibility for all states and all governments, whether they are high-income, medium-income or low-income countries. But the value of what you have said that we need cooperation and dialogue between states is essential. In any case, if it is unacceptable for us to move backwards in this fight, it is also unacceptable that some governments allow and let xenophobia take place. You've also said that development through migration is in existence, but there are ethical problems that still need to be resolved. Now, I'd like to know what hasn't yet been done well. You spoke about a lot of things, but maybe you would have some more specific comments that you could make from a point of view of the states, what has not been done well, up until now. And perhaps with your knowledge and experience, you could talk of matters that perhaps governments themselves cannot raise. What's the worst that we have done? What has made us fail in this area? I think the delegate of Venezuela is asking me to repeat the whole of my speech as far as what I thought governments should do, because I was trying really without being, I don't know what he means by being specific. I'm not expected to be a token of countries, but I think every region of the globe has systems, I mean, in terms, they are not only national legislation, but they are also regional agreements. And that is what we're saying, that they have to be revisited, they have to be reshappened with the understanding that we are facing a reality in which it's not going to change, it's going to increase, and we have more advantage of allowing it to happen than trying to prevent it. That's what I said, and I think I can't be much more specific than this, because the question is, I take it to my own sub-region if you want, you know, to say we need to revisit Tadec and people from Mozambique should be free to move to Malawi and to Zimbabwe to any other country without any problem. And what does it mean? That's what I suggest. Let's have a discussion in which not only it's a government issue, but it's a societal issue as well. Each one of us taking responsibilities in different levels in which we work. So in your case, I would just suggest in your sub-region, as governments, as civil society organizations, as business, even if you like, this debate has to take place and to see how can we change. And I suggest even that we have the framework of the post-2015 agenda to see what do we improve in the next 15 years. And we gradually allow a much more humane treatment to whoever wants to move and has the ability to move. I don't think it can be much more specific than this. We have actually two more questions on the list here. Would you be prepared to take the final two questions? Okay. First, let me start with the ambassador of the African Union, Ambassador Ruzum. Thank you very much. I am very grateful for this invitation that was made to Ms. Gracha-Machela. To have been able to hear her brilliant expression, she says that she has no political responsibilities now, but she is a permanent conscience, a conscience that speaks on an everyday level. And I don't want to be too long, but I think that Ms. Gracha-Machela should take up the pilgrims' stake and speak to each of our governments about the work we need to do. Africa has always been waiting for solutions for others, was the solution for others, and now we are seen as the problem, and we now need to work on the solutions to solve our problems and that we can address the international community and, in particular, Africa to find the solutions. We are behind you, and we share the fight. This is the battle that the African Union also wishes to take on. Thank you. The distinguished representative Trinidad and Tobago. Thank you, chair, and a very pleasant morning to all. I wish to thank you specifically, ma'am, for your presentation, most informative and for provoking. It has become customary for people to be nomadic, written in recent times. We have found that people move from country to country, sometimes professionals for a better job, sometimes for a better life, sometimes, as we have seen written in recent times, because of conflict. In circumstances that have not been defined, how would you identify the initial elements or ingredients of an international migration agenda that would satisfy easier movements of personnel from one country to another? I would be very pretentious if I were to say I can identify. I thought I had offered a framework around which revisiting and reshaping our not only migration laws but practices actually should take place. But you mentioned some of the reasons which encourage people to move away, like you mentioned better life, you mentioned conflict. One of the reasons why better life is not possible in certain countries is less and less opportunities. And I mentioned the case of young women and young people in general, to live and thrive. So if I want to reduce, in my country, I want to reduce the incentive for them to move. It means I have to create better lives in my own country. I think that's one of the issues we have to take seriously. Because in some of our countries, it is not an issue of resources. It is more the issue of how resources are being managed to allow citizens to live and thrive. And even how to give or to provide young people with quality education, quality skills in which they can take opportunities within their own country. We can do this and we should. We have to expand and create opportunities. And actually, I could go on and on and try to talk of the issue which is growing in many of our countries of inequality, where resources are big, but the way resources are benefiting the majority of people, it is a big, big, big issue. So I think when I suggest to revisit, it means every country has to say, what is specifically the major issue which I have to resolve within my own country to allow citizens to live and thrive? That's how I put it. But you can't resolve the problem of migration alone. That's why I suggest the discussion, at least at the sub-regional level. Because people move from one country to the other, so you have to have a common strategy as a sub-regional. My brother, I think more than this, I can't say. How to identify what is going to be the problem in tobacco? It's not going to be exactly the same thing which will be the major problem in Tanzania. It's not going to be exactly the same kind of problem which will be in Colombia. So every country has to question itself. And in the regions where you are, to try to sharpen the laws and the ways in which we live, I want to insist that it's the way we try, we treat other human beings. How do we treat one another as human beings? At the end of the day, it's not about only laws, it's not only about the economy, it's not only about movement, it's about how we treat other beings. And I think more than this, I don't think I would be able to say. Am I now allowed to sit down?


After spending four hours broken down on the roadside, a young black man was relieved to see someone pull up behind his car. However, as soon as the elderly white driver got out, he realized he was in for a lesson in racial discrimination he'd never forget. When a young man's car broke down, he received an unexpected lesson in discrimination. In today's deeply divided society, people are finding themselves avoiding engage with others out of fear of offending or being offended. The media have pitted us against our fellow man, pointing out our differences in an effort to monger fear and hate instead of drawing us closer together. Despite the innumerous factors that can segregate us into identity groups, race is a particularly divisive determinant. Unfortunately, it is often the first thing we notice, as was the case with a pair of strangers brought together by a troubling series of events. AJ Baker was stranded on the roadside with a flat tire for four hours before a stranger pulled over. While AJ Baker and his friend Dewan McElroy were heading back to Mobile, Alabama, from a football camp in Pensacola, Florida, they mistakenly took a wrong turn, landing them in Panama City. Making matters worse, the pair got out of their vehicle only to discover that they had a flat tire. Luckily, they managed to replace the flat with a spare. However, they still had no idea where they were going, prompting them to call the local police for directions. Still, they found themselves waiting for assistance. I had caution lights on and three squad cars passed me with my arm out the window, and no help, Baker told tap-worthy happenings. I sat there for four hours, and he finally came up, after praying hard and calling everybody I knew. George M., Johnkel Wright, 88, not only bought AJ Baker a new tire, but also gave him gas money to make it home. Thinking their prayer for help had paid off, Baker and McElroy watched as an elderly white man pulled up behind them and exited his vehicle. What the young men quickly realized was that they were about to learn a valuable lesson in the racial divide. Without hesitation, AJ Baker says that 88-year-old George M., Johnkel took one look at the six-foot-six-inch, tattooed young black man and told the pair to get in his car so that he could buy them a new tire. However, Johnkel's generosity didn't end there. When he discovered that Baker's car had died due to the caution lights being left on, he pulled out his jumper cables, and started their vehicle before giving them some gas money to ensure they made it home. He literally was the only person who stopped to help me, Baker explained. He pulled up graciously without looking at me weird because of my appearance. George M., Johnkel drove the young men to get a new tire put on and used his own jumper cables to get their vehicle started. The experience made AJ Baker glad his car broke down. Thanks to Johnkel's charity, the pair finally made it home to Alabama. Being still in awe of Johnkel's selfless actions, AJ Baker shared his experience on Facebook, including the heartwarming lesson he was taught about hate and discrimination. I swear I saw Jesus today in this man. Never doubt by appearances, no matter what PPL look like. Treat people how you should be treated. The media portrays today's events of a 88-year-old Caucasian man pulling to the side of the road crazy. After just getting out of a doctor's appointment he helped me, broke down on the side the road, a 6-6 African male with tattoos, after 249 cars passed by LOL, I counted, calling all contacts. God comes out of nowhere. Buys me a new tire and stands in the heat with no objection. No second thought. It would be hard myself to stop and help someone like so, so I say let's be a better nation, no hate, all love, no discrimination from the jump will end in peace all day. Baker explained that, despite the nature of their meeting, he is glad that his car broke down, as it brought Johnkel into his life. God was good and we got home, so I had to post what the Lord is still doing in the world, he told tap-worthy happenings. If we hadn't gotten lost, I would have never met him. I'm glad I did because it was a moment of humbleness and understanding. AJ Baker says that the experience has changed his views on ideas like hate and discrimination. Because of George M., Johnkel's compassion and AJ Baker's willingness to accept help, the pair unknowingly shattered the stereotypes that strive to separate them. Instead, they showed the world that they're merely human beings with similar struggles. Although Johnkel may have only stopped to give his fellow man a hand, he forever impacted the lives of these young men. Long after he's gone, his simple kindness will live on as a beacon of hope and inspiration, showing that it often only takes a small act of compassion to break down the walls that divide us.


Everyone, Bells are chopping here on this Tuesday, the 11th of January. We're looking at the Dow down 181 at 35,088 at 11 o'clock Tiger Financial News Network Update. And we're looking at the S&P. There was a fantastic turnaround yesterday, almost 100 points in fact. It was just amazing. The S&P is down 19 at 4650. I would just say if the Dow was up 200 the S&P was up 20 right now. I would say that is a fantastic action and that we should see another bounce into maybe Wednesday and then maybe Thursday we start to test the downside. This one is saying this is just telling us that the overall selling pressure is continuing. You can see that because the VIX had a huge turnaround yesterday from the 20. I forgot to type that and I think it was 23 area down to close in the 19s. I mean that's a big move. We have 2333 closed in 1940 and today it's still holding above the 200 period moving average of 20.17. And that suggests that there is still some selling pressure going on even in today. But most importantly let's look at the QQQ. That's the one that showed the best turnaround yesterday. Even closed up. Now it's down 55 cents, 370, 957. If at any point this week you can start to see 380, 350 to 385, 50, anywhere in that area that's a really good action. And then I start I think you'll start to see some selling pressure come in again. But this is the weekly chart. You can see it just broke the bottom part of the up channel trend line support. Can I watch this closely? IWM is not doing all that well. It's down $1.50. What really is important right here is that people who are interested in gold, gold is up almost $12.00 at $18.10. It's in a range and it keeps coming back no matter how much it gets hit down to the downside. It keeps wanting to get back into the 18 teams and we'll see what happens because if we can start to trade in the 1820s and close in the 1820s for two out of three sessions, I think that's a good sign for gold. But in the meantime it's just in this trading band. You're looking at crude oil. Crude oil is holding very nice. It's up $1.69 and $79.90. It's the TLT that's really important here. It tried to rally. It's only up 24 cents after having a massive move from 152 down to 141. That is big and that helped the yields go higher and that helped the XLF, which is the bank stocks, the financials, hold very well. It isn't a leg D. We'll see how it holds. This is a very important week because this is the week that says, now let's see if there's enough residual strength for the really beaten-down Nasdaq stocks to rally while maybe the Dow type stocks take a breather. I'm going to hand you over to Larry Perzevento, of course. It should be a wonderful show, wonderful programming all day.  And otherwise, I hope to see you tomorrow, same time, same station.


What's up everybody? Jason here for jatsby's casebreaks.com last R&B randomized for NT basketball page number 15 for the Lakers and Magic You're gonna get a piece of both of these teams for a fraction of the price You would have paid for to buy them straight up and you can every spot gets around an arm from 0 through 9 And we go by left side of the serial number dash first number so All redemption cards also go to spot 0 and If there is any non numbered cards for these two teams that we randomized to the group of customers in this break So here's the dice. Well, there is a customer named Shawn down to Gretch zero down to nine Rollets six and a four ten times good luck one two three four five six seven eight nine Shawn Matic down to Gretch ten times one two three five six seven eight nine ten Ten times One down to eight So Shawn you have one anyone ones will be yours Shawn with three Gretch with seven and you're with five nine with Shawn Gretch with two six And you with any non-redemptions Jerry with four and Gretchen with eight So there you go guys and coming up next is the break itself last break of the night


Great to have you back on the breakfast here on Plus TV Africa. Now let's go back in history to the year 2012. It's one of the events that basically has characterized and described the United States of America basically in the last very, very long while. Only in 2021 there's been more than 300 mass shootings, I think about 352 people dead, 1,300 injured in these mass shootings just in 2021 between January 1st and June 30th of 2012. And some by teenagers. Yes, absolutely. But on this day in 2012 was the Aurora Colorado mass shooting. It happened in a movie theater on the day that the movie Dark Knight had a midnight screening of the movie Dark Knight Rises. It was carried out by a guy called James Egan Holmes who walked into the theater, released tear gas and opened fire on innocent movie lovers in the theater, led to the death of 12 people and about 70 people were injured in that mass shooting. The massacre began when of course he entered the theater through tear gas. I think at the late end of the day they found out that he also had some ammunition and had rigged his home with bombs also. He eventually was arrested later that day by the police and was taken to court. And this is the craziest part. He played guilty. He played not guilty, I beg your pardon, as a result of insanity. Of course he claimed a little bit of insanity by reason of incenses as I said. He eventually was convicted of 24 counts of first degree murder, 140 counts of first degree murder also, sentenced to life in prison without parole and another 12 life sentences, plus an extra 3,318 years in prison. He, of course I believe still is in prison till date, but one life sentence plus another 12 plus another 3,000 plus years in prison is what he got after pleading not guilty by reason of insanity. But of course this is once again one of the incidents that has characterized. There's so many of them. There's Sandy Hook, there's a couple of names that just became popular mostly because of mass shootings in the United States of America. And like I said, this year alone between January 1st and June 30th has been more than 300 lives have been lost to mass shootings, about 1,300 and something have also been injured as a result of the same mass shootings. Very, very sad. I think you can talk about the mass shootings in the US without taking a look at their gun laws because they have, you know, these gun laws that enable people to get licenses to purchase guns for their own safety so to speak. But the sad thing is how, let's not focus on the teenagers, how teenagers, you know, go ahead to have access to guns that they're owned by their family and they go to class. Their teacher said something to them, made a comment about their hair, their looks and they want to, you know, begin to shoot people this year.  And I think the mass shootings, for the perpetrator of the mass shootings, because people see it on the news and say, oh, this is something I can actually do. So I think, you know, that's something that needs to be checked. Gun laws is something that has really divided, you know, the Democrats, the Republicans in the US. It's a very dicey issue of debate. So when we come down to Nigeria here and we talk about gun laws and people saying, oh, because of the spate of inter-curity, we need to have gun laws. We need to have laws that allow Nigerians to have guns. We've seen, you know, letters that have gone viral, people asking, you know, for permission from the president to get guns to protect themselves. So it's just, you know, really how would you say it? In a country like the US where you want to believe that they have better laws, they have a better system of administration, they have better protection, so to speak. But then they still have laws that enable them to have guns and people still go ahead to use that indiscriminately. In a country like ours where we know that our laws and infrastructure regarding security works different, what then do you say if we begin to have laws that allow people have guns? What kind of situation or chaos might we descend into? And really it's just... It's pretty obvious that's the reason, you know, Nigeria may not have, you know, pretty much the same gun laws as the United States does.  The National Rifle Association, I believe, is one of the reasons they have not been able to make any major adjustments with the US gun laws because of the politics involved.  The levels of support that some, you know, candidates both in their Senate and, of course, you know, the presidency, the support that they get from the NRA makes it a little difficult. And also the politicization, the emotional connection that Americans have with their guns. But Nigeria, no, now we're not there yet. It would be a disaster, a complete disaster. 1973, July 20th, something shocking happened and it was the death of Bruce Lee. He was an actor and martial arts expert. I mean, Bruce Lee had been a child actor, acting from as young as 18, 20.  So he returned to Hong Kong, focused on his martial arts career and began to act films. He acted a couple of films. And then just when it seemed like he was rising and was getting to the peak of his career, you know, he had intervention from Hollywood, right? And, you know, he was going to, there was going to be a premiere of his first major movie. It was called Enter the Dragon. And then just all of a sudden, we heard the news that, you know, Bruce Lee had passed. At first, you know, they had said it was something that had happened to his brain. They had said, you know, regarding possibly an overdose of marijuana. But later on, they found out that it was a painkiller. His reaction to a certain painkiller, you know, drove him into a coma and he couldn't wake up. It was just such a sad incident and a sad day today in history, July the 20th, 1973, when Bruce Lee died at a very young age of 32. And, you know, there was also a controversy that came up when Bruce Lee's son, Brandon, he was just 28 years old, he was also an actor. When Bruce Lee's son, following in his father's footsteps to become an actor, died in an accidental shooting on the set of a movie. So there was a movie that was being shot. It was called The Pro on March 31st, 1993. And he was accidentally shot to death at that scene. So that controversy that it was a family curse, that, you know, the father died at such a young age of 32, Brandon passed when he was just 28. It was just such a sad situation. I mean, when we look at the achievements of Bruce Lee, you know, you can't help but be marveled at, you know, just how much he has achieved, just how much he has accomplished, all the awards and all the honors. It was a long-time magazine, 100 most important people of the century. They talk about, you know, the experience he's had, the lifestyle he lived, regarding staying clean. He would even eat and drink, you know, meats, you know, to say that, that would help him have more toned muscles. You know, he was just committed to the clean lifestyle and he was literally the fit fam. You know, he also got so many awards at home and abroad. In 1999, Bruce Lee was the first martial arts star that was a martial arts artist that was introduced to the Martial Arts Hall of Fame. Lots of awards, you know, that Tsunio Muras mentioned right now and it's just sad that he passed on on this day in history. Yeah, pretty young age also.  But fun fact about me, I never saw any Bruce Lee movie. I joined Earth in the era of Jackie Chan and Jet Lee. All right, those are the ones that I... And that's why they would always refer to Bruce Lee because it was one who combined both and, you know, seeming to pave the way for other people to see that, oh, it's possible for me to do both, you know? My era was Jackie Chan, Jet Lee, Steven Siegel. What's the other guys? Van Damme and Chuck Norris. I never experienced Bruce Lee. Do you remember practicing those martial arts? Yeah, I have a scar on my head. Oh, that's it. Sorry about that. All right. Okay, let's take a break here. We just touched on two major events that happened in history, in mass shooting in the U.S. and the death of Bruce Lee. Let's take a break. We'll return to discuss issues regarding the and I'm Rag of National Elections in November this year. Stay with us.


Hi, I am the disembodied voice of Jeff DeLeo. I work at NCC Group. And I am Addison Amiri. I used to work at NCC Group. And while Addison was at NCC, we started this research into DRuby, which is a remote object invocation library API that's built into the Ruby standard library. It's used by a couple of random things, but often sees more use in ad hoc code that's not necessarily open source. So while back, we were working on some job instrumentation stuff that involved JRuby and had a REPL. It was really fancy. And we were testing it, and we found that this DRuby stuff was being used by one of the dependencies. So we started looking at it because this was gonna be used to assess, you know, reverse engineer things. It would be bad if something on the device under test could then compromise the remote system, auditing it. So we found that a lot of different things. It was already kind of known to be insecure from the docs, but you know, high level overview of what we're gonna talk about. Obviously remote method invocation, custom binary protocol, object serialization and client server, really server-server peer-to-peer interactions. So to just kind of jump into a very simple example of the code, you have on the left side here this server code that exposes a front object that is just a Ruby object. It's an instance of a class. And then on the right side, you have the client code which essentially opens up through the DRB API to get a handle onto that object by a URL. And essentially you have a proxy object there that is the time server on the right. And when you call things on it, they magically get transported over to the left side and then it does some stuff, it returns a value that magically makes its way back to the right side and then you have a value. So how this is actually working is that the variable on the right side is not actually that real object. It is in fact a DRB object, which is a proxy wrapper. And so essentially you need this to send calls over things, especially for values that can't be sent back and forth. Generally speaking, it's used for the main interacting API object that's exposed, that front object. It contains two fields, URI, which is the URI for the server where it resides, the actual object backing it resides and then a reference, which is some sort of unique reference identifier on that server process to essentially forward calls and things too. By default, that's just the Ruby object ID and you can actually use this to wrap both local and remote objects. So you yourself could in your own process have a DRB object that points to your own processes DRB server and then call things through it. And the way that it functionally works is that it overrides method missing, which in Ruby is the magic catch all method that essentially anytime you try to call something that isn't defined on an object, it goes to method missing. And if you've overridden that, you can essentially handle all those calls in proxy them. So the interesting thing about this is that the ID values that are passed back and forth, actually there's no keeping track of that. If you happen to know an ID value in a remote process, you can simply create a craft a DRB object for it. And as long as the server is accessible, make calls to it. That's kind of not great. It has no ability to track when it's kind of leased out of handle. And so you can just entirely avoid that front object by guessing IDs. Then the other interesting thing about the code base is this DRB undumped mix in that basically the way that the DRB DRB knows to wrap an object instead of just serialize it, send it over is that the serialization fails. So the easiest way to make that happen is to override the serialization method and force it to fail. And that's how that's quite literally how you annotate your class to not be serialized and get proxied instead. So we see here the distributed object protocol is a distributed object protocol that is unlike most distributed object protocols, like BitTorrent and stuff like that. There's no centralized registry. There's only a client connecting to a server and that's the only connection that's going through. So we see these as unidirectional and the server in this sense will send back a success message, whether the call succeeded or failed and a value for the call that's being happened. Now moving forward, the DRB message that's being called includes a reference to the object that's being called on. Now this will be nil if the object is the front object of the DRB protocol and this will be integer if this is some other object in an object space. The method name is next, the method name is included as a string, the arguments are next, and then forth there is this block that is nil if there is no block. So next we can look at the DRuby sort of code that goes on on both ends and we can see that there's this time server that is like hosting this front object that we talked about that responds to get current time and we see the client, but the client's also hosting a service and we'll get to that in a little, but here we have a get current time call that's happening on this time server project. So here we can see the call flow going and we see that the object reference ID is nil, meaning that we're calling something on the front object, the get current time value is the function name that we're calling. We see args that are nothing because there are no args to this method call and then we see the time.now value getting passed back to the current to the caller. So going forward we can break this up and we can see the actual wire protocol that's happening here and in blue we see what's prefixed a length of every message that's going across. So there's multiple little bits that are coming across and each bit is prefixed with an integer value that determines the number of bytes to read off of the wire. Each of these number of bytes is actually a marshal value. So Ruby marshal value. So we see the first one's three bytes and we can count there's three of them and so on and so forth. Going forward we see that the first one is 040830, this is the marshal value for nil. So the 0408 is actually a prefix that's appended to every marshal value that's the version number of marshal. And then the 30 is actually the marshal value of nil.  There's nothing special going on here. First is nil, second is literally the string get current time. Third is zero meaning the number of arguments being passed over the wire which is zero and because there's zero arguments the fourth one is the block which because there's no block there's nil. So and then returned there's true get time instance which is the current time that we called and so on and so forth that's the time instance that we just got back. So going forward there is, you can see that so basically every call that you make on this object is essentially tunneled into this object. So there's nothing special going on. There's nothing stopping you from calling any method you want to. Everything is just sort of tunneled into sent and you can see here that like we pass a bunch of stuff in all of this stuff is decoded off of the wire. This is code in DRB at this point and all of this code is just passed in the send and there's nothing stopping us from just passing whatever we want essentially and as a attacker this is something that like there's really nothing in your way from really doing anything you feel like. There's no protections in place. There's no defenses or anything like that. Quick question for the audiences. Is my slide updating on the screen share? Are we still stuck at remote methodification? You're at send right now. Okay, I can, yeah. So at a high level are we on a load and load and load right now? Yes. Okay, cool. So essentially the code that the works calls this load function over and over again to receive the request and all that is doing is it's reading those four bytes of size and then it uses them to read in the amount to read in for the martial value and then it calls martial load on them and to pull out the ARG V array it just for every number that the ARG C turns out to be it just reads another value over and over again and then for the block it just tries out one more time. So the interesting thing here as we can see is from that code prior you can essentially just call anything on any object effectively once it gets translated from the ID and any message, any method name you want and any arguments you want. So that's pretty dangerous. So basically in addition to being able to send basically anything you want because of how martial works the only real restriction of martial is that the other side has the class loaded so that it can know how to do the unmartialing but other than that you can send any sort of object. So martial has a lot of gadget exploits associated with it that can be particularly troublesome and there are basically no restrictions on the method you can call there and basically you can do this from regular old Ruby code which the documentation recommends a couple of things to lock this down that as we will see do not actually work. So one of the big things with the way that the Ruby code is based in the documentation for how the quote unquote exploit would work is that it does an undeath on the class or the object instance for the given method that you wanna call, the call falls through to be sent over. But as we mentioned, you could just call method missing directly on whatever you want essentially. So taking this a step further if you want to use any sort of unmartial exploit or unmartial gadget here on the left we see a gadget class which is just an example of let's say you had a gadget this is a very trivial gadget that would be implemented in the server. The client would be able to essentially return anything in that exploits the gadget and boom the server runs this code. And there's really nothing stopping the client from returning anything like this that gets unmartialed into whatever the client specifies. And this is essentially the crux of the problem. So we can see in the DRB library you have basically an ID to ref that is the integer that you pass back that basically is any integer you pass back gets turned into whatever that object is on the server side. And if you pass back nil it turns into the front object but if you pass back an integer then that turns into literally any object that's there. So here we can see that there's no checks to make sure that the object you're calling a method on was actually lent out to a remote process. Like this can be any object ever created in the server process. And also because there are many objects that have static object IDs like nil that exist in every Ruby process nil has an object ID of eight. So you can specify eight and because you can even call instance eval on nil which maybe shouldn't be a thing who knows but it allows you to get a code execution through this. So you can specify eight in order to call something on nil and you can specify instance eval as the method and then boom. So here we have this but you see that in this very, very simple example that we're demonstrating dRuby we also have the client starting a dRuby service which may raise some red flags in anyone watching. This is something that is basically like unnecessary through the protocol because if the client is sort of sending any object that's local to the server it needs to represent that local object through a dRuby undumped reference and it needs to allow the server to call methods on that object in case it needs to and through that it needs to start its own dRuby server. So we have this sort of problem where the client is also sort of necessarily vulnerable to anything that we're talking about here. Here we see this fake dRuby server where it just opens up a TCP socket accepts anything and then assuming the, in the simple example assuming the client's running on Mac OS which doesn't randomize port numbers you can just subtract one from the port number. If the client's not running on Mac OS you can scan the host for wherever this dRuby socket is and then get code execution on the client that's actually calling something on you as this pretend dRuby server which is a pretty big problem. So in order to scan for this process like assuming they're not a trivially finding a dRuby server because these port numbers aren't randomized you can pretty easily scan for this. The only problem is that there's no banner like most processes will have what you got to do instead is you just write random stuff to the socket. And when you write random stuff to the socket boom you get back stack traces. So it's pretty easy to figure out you get back stack traces. Just to be sure you can scan the stack traces that you get back for dRuby, dRuby con error and that'll make sure that like, hey you actually are dealing with a dRuby type of thing but it's not the most difficult thing to handle. So to kind of sum it up this is just code execution by the protocol that's the feet how it works. There are no application level vulnerabilities even needed to exploit these things which is kind of already known but what was not known was that you can do it to exploit the client. The particular foot guns here the fact that you can send arbitrarily things like instance eval the actual send through various other means and then the Marshall deserialization and the fact that you can pick an arbitrary object ID that is not the one that the server might try to harden. So basically it's a real code execution as a service working entirely as intended. So what do we do now? Well, one recommendation is not to use dRuby and instead use something like gRPC. Thank you for coming to our TED Talk. Alternatively, you know, there are people who can't get off of it. So there are ways to deal with it. So one thing early on to not do is not rely on safe levels because one they don't exist anymore but this was something that used to be thrown around as a recommendation for dRuby servers. The problem is that none of the safe stuff really works. It breaks all the code. There are still generally speaking ways around it but it doesn't matter anymore because it was removed in Ruby 2.7. But the biggest annoyance with it was that it treated the disk as untrusted meaning that when you loaded like gems all the libraries you might care about to run your application, they just would not work which was why no one used it and why it got pulled. So instead what you're gonna do is you're going to say patch dRuby. Not kidding here. So there are a bunch of things that we want to kind of prevent certain kinds of abuses of. So you can filter method IDs. There are obviously ones that you might want to specifically allow in which case you can restrict the ID filtering to those specific things but alternatively there are also an absolute ton of dangerous methods and things that you probably do not want to allow. Next you're going to wanna deal with marshaling by constraining what can be sent over to say safer types. Then lastly you gotta do something to track all of those object IDs so that people can't start calling things on nil even though you never actually sent nil out because why would you? It's a serializable value. So we wrote a thing called drab. The dRuby, dRuby for the boring. It's a gem, basically a forked version of the dRuby code base from Ruby itself. It's a drop-in replacement but it speaks a different wire protocol. Most of its features are about not having features. So we remove weird things like the block handling. We remove, so we add in method ID filtering to say add in things that you would want to allow to happen specifically. Alternatively we block a whole bunch of super dangerous methods. I'll be enough, dRuby actually does have its own blacklist specifically for the double underscore send, the true send. But given that the way that it works is essentially by calling that true send that kind of doesn't mean anything. You just can't send a send. So that doesn't actually even block the regular send. So yeah, it's not great. So moving on, we restrict marshaling by converting everything over to JSON and overriding how the loading implementation works. And then we validate sort of these structures of bytes to be unmartialed against certain AST patterns that are the core structure of how marshaling works so that we can effectively validate certain types are being passed over and not other types. So things like arrays and strings and very basic objects and numbers and true false booleans and nil but not really anything more dangerous than that. And then additionally we easily track all the ID values back and forth that's pretty simple actually. So the thing that we kind of forgot to mention was that there's another big user category of dRuby users, exploits. So we should add Metasploit to this list of who uses dRuby. So going through the port 8787 is the default port that's recommended the documentation for dRuby and looking at it, you can see that it's pretty open across the internet except that most of these are all HTTP so it's not the biggest deal. And if you look at it, Nmap used to recognize this type of thing but doesn't do anything that we're sort of like we wish it would do in recognizing dRuby so it's a bit unfortunate but nothing really recognizes dRuby on the internet anymore. So basically we're stuck with this writing random nonsense to the socket and scanning the response back in finding out if something is actually running dRuby which maybe is better than it just announcing itself on a port but basically if we can do this if we can scan the internet we can determine better than Shodan or better than Nmap at this point where there is dRuby on the network. Yeah, the interesting thing about all of this is that the internet effectively, collectively lost its ability to scan for dRuby which sort of coincided with us finding ways to write evil dRuby servers that exploit clients so the internet kind of got lucky alas so we're here to change both of those things. So to kind of quickly review the sets the existing exploits. The one from the official Ruby docs does the undeath of InstancyVal and then calls that and this is actually kind of ridiculous payload in general. This comment of unsafe code is actually from the docs which is interesting because the unsafe is so true in so many ways because if you have an auto exploiting gadget that could pop this when it gets the return value from the call to InstancyVal one but also what I think this code was trying to say is that sending an rmrf star command over to the remote server is unsafe and dangerous. And so I guess they tried to mitigate that by picking a non-default port this 89.89 which isn't even the standard dRuby port so you'd be hard pressed to accidentally hit a dRuby server with this and nuke the box. Interesting choice of default payload. I would have gone with like I don't know ID or something or U name. Metasploits on the other hand does functionally the same technique by doing the undeath all the way at the bottom except they do it for send so that they can call send directly with a bunch of different things. So they will send for InstancyVal instead of doing InstancyVal directly over dRuby. They'll over dRuby call send with an argument of InstancyVal which functionally is effectively the same thing. But in slightly newer versions of dRuby or of Metasploit they took out that start service line. We'll get to that in a little bit. So really all these existing exploits are kind of super basic and they all end up going for InstancyVal and none of them really do anything fancy. The fanciest that Metasploit gets is that if I guess someone were to overload InstancyVal on that front object they would default back to calling syscall via send. But they don't do anything interesting like call InstancyVal on nil which wouldn't really be blocked by anyone using this because you basically skip the front object and go for in for the kiloneum the nil object on the remote side. So and also none of these ever attempt to act as evil servers to exploit clients which is kind of sad. There's so much room for improvement. So given all these things I think it's safe to say that we've kind of shown that dRuby is unsafe to use in general. So obviously we can just clearly or we could connect to Metasploit's dRuby server to get code execution. But there's so much more fun to be had with the deserialization gadgets especially because Metasploit uses rails an active record and they're always available and loaded and they have a completely stable reliable gadget that basically can't be fixed at all. So we had this payload that we wrote and sent as our POC to Metasploit and you don't necessarily really need to know all that's going on here. It's basically the quintessential rails gadget which was often used for abuse of serialized signed cookie values. But the interesting thing is that up at the top we detect if instance eval is the symbol being sent from our overridden send and because that's all Metasploit ever calls on us and if it is we raise exceptions they fall back to their next implementation of a payload and then we send back the gadget. The gadget is a limitation that it requires something to be called on it and luckily that second implementation does a bunch of low level syscall IO and it expects that certain things that come back are integers for things to be reading or file descriptors to be reading from. So when it sends that back into DRB it ends up causing the gadget to fire which basically then runs the arbitrary code. So we reached out to Metasploit about all their DRB problems and then they made that fix where they just commented out the server. So we told them specifically that that was a problem but our payload was for the gadget like you would try to target our server as a victim with Metasploit as a client but our payload continued to work. They clearly never ran it against the updated version. We then several weeks later we reached out to them again and they removed the code entirely which was our original recommendation because it wasn't salvageable. So we only have one CVE when arguably there were several versions vulnerable to multiple things so personally I think we should have two CVEs for this but whatever. Then the interesting thing here is that obviously our exploit was actually still vulnerable to all the other attacks we've talked about. So if you really wanna do this properly you have to reimplement the entire wire protocol much more shall we say safely. So the safely is a lot more work involved but basically we rewrote the DRB protocol and library entirely into this DRB RV gem that has now been published which basically gives you as a library user a lot more power and control over what's exactly being sent over the protocol and what's exactly being received from the protocol and then additionally we wrote partial which is this partial implementation of Ruby's Marshall which basically only implements like the smallest amount of Marshall necessary to do talk the Ruby and doesn't instantiate these crazy objects like active record and stuff like that and these are both suitable for messing around with the protocol if you are so inclined to do so. So here we have an example of a DRB RV being used so you open up a TCP socket you tell it using DRB RV like exactly what to write. So here we're taking the object ID of nil where we're giving it the string instance eval we're telling it the exact arguments to put nil because there's no block it's just puts this is a very dangerous payload assuming this is actually a very dangerous payload and that's being passed the instance eval on the server side. And having an eval client is simple everyone's been doing that for years the more interesting thing is having the eval server and so we have an API for easily spinning up a server based off of Ruby blocks which is kind of the quintessential rubious way to do this and effectively it gives you a view of everything and in our payloads it's kind of simpler to fire off gadgets into exceptions as it turns out because often the DRB handling of exceptions will call things on them often triggering them to fire and run their code if they weren't auto run on deserialization first place and the output or I guess the inputs to these handlers are slightly interesting because we want to be able to handle arbitrary data coming in even if we can't deserialize it with our safety serializer which would mean it's probably dangerous to deserialize so essentially for every argument or every piece of data that can come in as an input we have both the deserialized value or nil and the raw encoded form that we read off the wire so you can detect if nil is actually nil or if nil was a failure to decode but everything continues on and you can process as you need to. So overall we find that DRuby is just bad at security all over and as it turns out it's actually much less secure than the documentation would lead you to believe and even the exploit example they gave you in that documentation is itself exploitable so yeah, don't use the real DRuby even in your exploits but there is some hope for people who actually are stuck using DRuby wrote this drop-in wire incompatible replacement the library but every user of it that needs to talk to each other needs to be using drab and then separately we have a low-level wire compatible protocol handler library for it or you just fall back to using something safe and simple like GRPC, modern but at least we have ways to safely write DRuby exploits now which we did not previously DRB, RB and partial are currently published and up on RubyGems we will be publishing our main sort of DRuby exploit CLI script soon and we are currently in the process of finishing up a meta-split module to replace the original implementation that got yanked an interesting thing to note about that is that the author of the original vulnerable DRB exploit that we exploited was actually the same person who wrote the universal, sorry, the Rails deserialization gadget that we used to exploit it so we exploited his own code with his own code that was fun actually when we realized it was the same person and all of our code is going to be up on our repo nccgroup slash drbrb on GitHub so to complete the talk and we're clearly out of time we would like to send out some minor greets to Masatoshi Sekhi who is the creator and author of DRuby and uses it for a bunch of interesting parallel and distributed computing things that seem to be getting picked up by the Japanese astrophysics community which is interesting we might have exploits on very interesting pieces of software as it turns out he is similarly a Pokemon and Magikarp fan like myself so we have ideally some camaraderie but also Sumimasen, we've kind of destroyed DRuby entirely but we are trying to keep the pieces from falling apart by having safe replacements so that people don't just stop using it because it is actually very fun and easy and simple to build up very interesting distributed applications with it just needs more security and that is our talk.


We're here at ITU Telecom World 2013 in Bangkok, Thailand and I'm very pleased to be joined by Mr. Joao Martins who is Chairman of the Board of Directors for Angola Telecom. Mr. Martins, thank you very much indeed for being with us today. Thank you and we hope that next year we can join it again for this big event. This event's theme this year is embracing change in a digital world. Where do you see the biggest opportunities for change in the industry? In my opinion, so I think the big opportunity is for us operators to provide more and more solutions for our customers. And we can, for example, from what telecom we have a fixed network, so we can look for the new facilities, for the new technology to achieve, for example the rural area and for the people we're up to now, we cannot give them the opportunity to communicate to another people. And can I ask you, what are the biggest challenges that you see? Okay, but in my perspective for us like a fixed operator is to provide more opportunity for more people in our country, for example, to have access to the new service, to the new technology, to the ICT, to the information around what is happening in the world. And finally I'd like to ask you, what is the value that you see in attending events such as ITU Telecom World? First of all, that we have the opportunity to change ideas, to spoke with another operators, another expert about for the telecom, and also to have idea what is happening in another countries also. Mr. Martins, thank you very much indeed for being with us today. Thank you so and we hope that this event will be a successful process.


This will be a case-based approach towards supra-tentorial gliomas. Case 1 was a 20-year-old gentleman who had presented with few episodes of seizures and had been on anti-epileptics. And these are the images. So that's the T1 axial, that is a T2 axial flare diffusion ADC, T1 post-contrast gradient and RCVP map. So what we can see on a T2 axial is that we have a homogeneously T2 hyper-intense lesion which is near-completely suppressed on flare with some persistent peripheral rim of flare hyper-intensity. Yes, perfect. So what does that suggest? What does a T2 flare mismatch suggest? A T2 flare mismatch may not indicate aggressiveness of a tumor that would be more suggested by something like necrosis and hemorrhage, anything more that you can suggest. Because the T2 flare mismatch finding which you just mentioned is considered to be quite specific for this entity and can help one make a prospective molecular diagnosis of this neoplasm. It is an IDH mutant astrocytoma. So remember as per the WHO 2021 CNS-5 classification, there is no IDH mutant glioblastoma anymore. It has to be an astrocytoma and it is IDH mutant astrocytoma. Anything more that you would like to add here, any more markers or a molecular landscape that one can prospectively predict on this imaging feature of T2 flare mismatch? That it is a 1P19Q non-co-deleted IDH mutant astrocytoma.  Again, as per the newer classification, the grading has to use Arabic numerals and not the Roman numerals. So what we have is a tumor which is homogeneously hyperintense on T2 gets partially suppressed on flare with a persistence of peripheral rim on flare which doesn't show any post-contrast enhancement without any bleed. So that's the gradient, no blooming. So there is no bleed. And again on RCBV maps, the tumor is ISO2 hypoperfused without any restricted diffusion. In case one encounters some areas of hyperperfusion on RCBV maps, this can be considered a higher grade IDH mutant astrocytoma, something like a WHO grade 3 IDH mutant astrocytoma. So again to quickly summarize, again as per the WHO 2021 classification, the terminologies like anaplastic astrocytoma or IDH mutant glioblastomas don't exist anymore. These are usually WHO grade 2 to grade 4 neoplasms, so grade 4 IDH mutant astrocytoma would be something which would have areas of hemorrhage, necrosis or even irregular heterogeneous post-contrast enhancement. Again, another feature on MRI which one may encounter especially on 3 tesla imaging or higher fission imaging on MR spectroscopy is the presence of 2 hydroxyglutarate peak at 2.25 parts per million, which can be considered to be suggesting an IDH mutant astrocytoma. On histopathology, higher rate tumors can have necrosis and microvascular proliferation and when these tumors or these features are encountered, these tumors would be labeled IDH mutant grade 4 astrocytoma. Another important genetic or molecular marker here is the homozygous deletion of CDKN 2AB gene. So again, even if there is no necrosis present in the tumor or even in the absence of microvascular proliferation, but when this homozygous deletion or this copy number mutation is positive, this tumor would be termed a grade 4 astrocytoma because this is a harbinger of a far worse prognosis than the absence of this mutation. Moving on, next case was a 44-year-old lady who presented with geediness of one month duration and these are the images. So T2 axial first image, that's T1 post contrast, that's a gradient-based or T2 star-based perfusion sequence, RCBB map, again a gradient sequence and RCBB values. One can say that is a fair diagnosis, a GBM, a glioblastoma because we can appreciate that the RCBB values are very high to the tune of 7, but that being said, what one can appreciate here is that this is a cortical-based neoplasm which is heterogeneous in appearance on T2 images, shows heterogeneous post-contrast enhancement. In addition, on gradient images you can see these linear areas of calcification because these are blooming, so these are nothing but the chicken wire calcification which are considered to be a characteristic of this neoplasm and in this case, this neoplasm is nothing but an oligodendroglioma, so if one has a cortical-based neoplasm with linear chicken wire calcifications with elevated RCBB which is by virtue of presence of extensive chicken wire capillary networks and not the new angiogenesis of a glioblastoma, then one should consider a diagnosis of oligodendroglioma which is IDH mutant and in this case, when you say a diagnosis of oligodendroglioma, it is implied that it is associated with 1P19Q co-deletion, so that is oligodendroglioma. Again, a companion case on a CT scan wherein you can appreciate the chicken wire calcification associated with an oligodendroglioma on a CT scan. So, again this is another tumor wherein if you see all these features, one can prospectively make a diagnosis of its molecular landscape of the tumor. So, again earlier two subtypes of the tumors were described which included well differentiated and anaplastic oligodendroglioma which is no more the case with the WHO-2021 CNS tumor classification. So, oligodendroglioma is an IDH mutant and 1P19Q co-deleted tumor most commonly located in the frontal lobes is cortical based, usually present between age of 4 to 6 decades and all tumors usually present with similar clinical features of seizures or focal neurological deficits especially when these are present in close proximity to the cortex. Again, these have IDH mutation like the IDH mutant astrocytoma, so can demonstrate the two hydroxyglutarate peak on MR spectroscopy at 3 tesla or higher have 1P19Q co-deletion. Median survival is the best amongst any of the diffuse glial neoplasms at about 10 to 12 years and on CT about 70 percent of oligodendrogliomas would demonstrate the chicken wire calcification. On MRI the tumor is classically T1 hypo intense, T2 hyper intense with linear areas of blooming on gradient of or susceptibility weighted images owing to chicken wire calcification. Differential diagnosis would of course include an astrocytoma or even a glioblastoma or an extraventricular neurocytoma. Moving on to next case of 52 years old gentleman who had few episodes of headache and vomiting and short term memory loss and these are the CT scan images on your left these are the non-contrast images and on the right are the contrast enhance CD scan images. So, any takers for this? So, yes, so we have a large tumor which is crossing the midline extending across the corpus callosum from the left side on to the right and showing heterogeneity by virtue of presence of this hyper density which is seconded to hemorrhage. And again this tumor shows this irregular peripheral rind of enhancement which is also a diagnostic clue towards a high grade glioblastom. So, tumor which is crossing midline has areas of necrosis and hemorrhage and it has a so called butterfly appearance of glioma is nothing but a glioblastoma. Again MRI in the same patient on T1 weighted images one can appreciate the T1 hyper intensities because of hemorrhage within the tumor lot of necrotic areas peripheral hemocydrin staining and peripheral irregular thick rind of enhancement which is crossing the midline giving rise to the butterfly glioma appearance. So, this is nothing but an IDH wild type of glioblastoma. So, this is a grade 4 neoplasm another companion case a glioblastoma which is present in the right temporal lobe which shows heterogeneous appearance on T2. So, sorry that is T2 that is the T1 and which has hyper intensities on T1 weighted images because of presence of hemorrhage within and shows heterogeneous post contrast enhancement associated with extensive mass effect effacement of adjacent sulchi, sylvian fissures, midline shift, transcentralization all pointing towards a diagnosis of a high grade glioblastom again elevated RCB values like a glioblastoma multi-form. So, glioblastoma IDH wild type CT scan appearance would be heterogeneous with areas of hemorrhage and necrosis MRI the tumor is usually hyper intense on T1 and hyper intense on T2 with peripheral hemocydrin staining or dark areas on gradient sequences as well as T2 sequences. MR spectroscopy would show elevated choline level which is a marker of cell membrane turnover which would naturally be elevated in any patients with brain tumor undergoing a high cell turnover in a bit like to be elevated in these patients because of presence of necrosis. On histopathology a presence of microvascular proliferation as well as necrosis can be an indicator of IDH wild type of glioma. The genetic mutations in the absence of features like microvascular proliferation could be another indicator of the aggressiveness of this tumor these include the third promoter gene mutation EGFR amplification and chromosome 7 gain or chromosome 10 loss together. So, to summarize the adult type of diffuse gliomas as far as WHO 2021 classification is concerned IDH is the main driver mutation which drives the adult type of diffuse gliomas. So, if there is an IDH mutation one has to look for what is known as ATRX protein on immunohistochemistry or 1P19Q retention or homozygous deletion. So, if there is a homozygous deletion of 1P19Q naturally it is an oligodendroglioma as was discussed earlier. If not then one has to look at CDK and 2AB homozygous deletion or non mutation. So, if there is no mutation then it would be an IDH mutant type of grade 2 or grade 3 astrocytoma. If there is mutation even whether regardless of presence of microvascular proliferation or necrosis it would be an IDH mutant grade 4 astrocytoma. Then if the tumor is not IDH mutant but has features of microvascular proliferation or necrosis or third promoter mutation or EGFR amplification or combined loss of a gain of chromosome 7 and a loss of chromosome 10 that would imply that this is an IDH wild type of glioblastoma.


From Austin, Texas, it's the Cube. Covering DockerCon 2017, brought to you by Docker and support from its ecosystem partners. Welcome back to theCUBE. I'm Stu Miniman here with Jim Kobielus. Happy to welcome back to the program. Someone we've had on theCUBE many times, Ben Golov, who's the CEO of Docker. Welcome back, and congratulations to you and the team. Oh, hey, thank you. Now, this is, I'd like to say, this is our favorite time of year. Followed very closely by the week after DockerCon when we go longer after it. Absolutely.  So, we talk about how customers are thinking about scalability, how you scale the different solutions you have, and look at the scale of an event like this. So, we've got this big event here, 5,500 people, as you said, which we were reminiscing back to the first DockerCon and the growth of this. It's impressive, and it's gone really well. I haven't seen people griping about taking an hour to check in. Food's been good, you know, line happened. So, and Austin, you know, always a fun place to come. Absolutely. Apropos for all the open source stuff that's going on. Yeah, the only problem is this is the first place where we've had a Docker conference where we haven't been at a port. So, like all of these great, you know, look at the container ships outside, you know, we can no longer do that. Yeah, Vancouver maybe would be good. I remember, I actually, I did puns for an entire week when we were at OpenStack Summit in Vancouver, you know, overlooking the bay there, because there's container ships everywhere. That's right, that's right. So, Ben, you know, please just bring us up to speed. Kind of you, the team, we've gone through a lot of the announcements, but, you know, some of the highlights for you.  We talked about Linux Kit, we talked about Moby, you saw just huge improvements to the developer flow. Tomorrow's going to be a lot about Enterprise. And for me, that's really the most exciting change that we've seen over the past year, is just an explosion of Docker in the Enterprise. Docker's brought in over 400 Enterprise-class customers, some of the largest names, really in the industry, right? And some of them like MetLife and Visa and Intuit, we'll be talking live tomorrow. And what's been especially interesting for us is that their usage of Docker is not just for Greenfield projects. Docker's being used to keep planes in the air, keep trains running on time, it's being used from the largest financial transactions, handling millions of millions of transactions a day, right? And that's really exciting for us, it's also very humbling. Yeah, all those use cases throughout, it's Docker covers lots of applications from a variety of things. Right, right, and a lot of them are, you know, they're 15, 30 year old applications as well as, you know, two minute old applications. Yeah, and it's something we've been picking at, is how much is it the new stuff and how much is it the platform that can bring some of the older stuff in and then we look at how we change it over time. And that's, I think, something we've been struggling with, kind of, whole cloud and app, you know, modernization for years now. Yeah, well, I think it's really good, because I think there's sort of this fallacy that sort of persisted for a while where people thought, okay, you know, you're going to have bimodal IT, there's going to be the cool new stuff done in containers, running the cloud, and then all of that old stuff that's just going to wither and die in some dark data center somewhere. Yeah, it doesn't match what we hear. That's absolutely not the case.  Now that's not where it ends, but you know, if you think about it, just by taking, you know, 80% or 90% of the apps out there are traditional applications running on traditional infrastructure. And just by taking a traditional application, you put it inside of a Docker container, you know, automatically you're getting, without changing a single line of code, something between 75% and 5x better resource utilization, you're able to do simple things like upgrade your database or move from an old machine to a new machine or old data center to a new data center, again, without changing a single line of code. But then the magic starts, right? Then you start taking that traditional application and treating it in a more modern way. CICD, gradually breaking it down into smaller and smaller bits, and that's where the journey goes.  Virtualization has the easy low hanging fruit of, oh, I can consolidate, I can get ready utilization, I could save a lot of money.   Or I need to fix it.  At some level, they need to be more efficient, they need to be faster, right? And Docker helps you do that if you're running brand-spanning new applications. That's what we've been talking about for quality. But, you know what, part of agility is also making sure that your existing applications don't weigh you down, right? And that they actually support your business strategy going forward. Yeah, and I mean, one of the things that excited me about containers in the early days is, I'm an infrastructure guy, and infrastructure's always held us back. And the atomic, you know, containers bring the application really as the atomic node. It's not the server or the VM, it's the app. Or, you know, the, you know, 12 factor, you know, app there, so it's the app's driving it, not in infrastructure matters, but it's not the thing driving it. Right, well, by focusing on the app, we actually let people choose the infrastructure that they want, or migrate from one style of infrastructure to another style over time. What it also though means is if you're focusing on the app or on the container, then how you think about security, and how you think about networking, and how you think about compliance, you know, all of those things need a refresh, but the good news is once you do that refresh, it's actually much faster, much more efficient. All right, so you know John Furrier wouldn't let this interview come without, you know, popping in, so he's just sending me a note. He says, what is the intersection between the cloud native and the app developers that you're seeing? The internet intersection between the cloud native, Cloud native and app developers. You know, I think that developers want to build cool stuff. And if they build a cloud native, that's fantastic. If they want to build it not being cloud native, that's very cool too, right? We're seeing this whole generation of developers who may have been working in Java for the past 15 years, or working in .NET, and they're able to do really, really cool things with Docker, and it actually helps bring them into the cloud native space. But you don't have to rewrite an amazing application, just because your infrastructure is changing. Yeah, you can wrap in a refactor, migrate your existing applications at the pace that you wish, rather than being forcibly upgraded or migrated. That's right, that's right. And you also don't need to know what cloud you're going to be running on for years from now, or what infrastructure you're going to be running on, or what your app's going to be able to do, right? You know, this stuff happens organically with Docker, and that's really part of the beauty of it. Because you know you're developing a multi-cloud, in other words, the clouds you're on today and the clouds you might be on tomorrow, and a flexible or graceful transition. You know, it's really cloud churn. Over time, you're going to be on a variety of clouds, and you just want to make sure your applications and your data and all your assets are easily migratable. Yeah, I think you stated that really well, and I think especially as people start looking into applications where they want to burst, or applications that are sort of big data where they want to be moving the application to the data rather than the data to the applications, right? It needs to be multi-cloud, because actually, multi-location, right? And we're happy to help that. Yeah, so we've watched maturity of the technology, the growth of the ecosystem. I mean, I think a lot of us were really happy. Ecosystem, I mean, you know, Solomon did a great job of highlighting that. To be honest, you know, some of the swarm stuff with Docker Data Center last year, felt like it- Felt like we're fighting, yeah. It felt a little bit of fighting, and it feels like we're healing, we're coming together and we're growing that. So, yeah, I mean, maybe speak on that a little bit, but the follow-up question I have for you on kind of the business is, I think we're still pretty early in the monetization strategy for this, and I think it's good for people to realize that, that all of this stuff doesn't happen overnight. It's amazing to see how far it's come in, just four years of a company, but I'll let you riff on those two things. Yeah, yeah, I mean, so I'll start with the first one, which is fighting within the ecosystem, or there's sort of this saying that, people hate people of a slightly different sect more than they hate pagans, right? And so I think sometimes within the open source community, it's like, oh, you take a slightly different approach towards orchestration than I would have taken, therefore, we should be enemies, and then at some point you step back and say, no, wait a minute, we're all trying to do the same thing, build great apps and make the world, enable people to build great things, right? And as I think Solomon laid out today, right? Orchestration, container runtime, security, networking, various flavors of security, these are all things that actually should be really atomic, and we should be able to collaborate on them, and so you're seeing a lot more of that. Because also what we're seeing is in terms of monetization, monetization isn't driven by a single factor, it's not driven by orchestration, or it's not driven by networking, it's really, what we're seeing more and more is it's being driven by the supply chain, and it's how do I, as an enterprise, with lots of developers building lots of different types of apps, some are old, some are new, some are Linux, some are Windows, some are running on-prem, some are running in the cloud, how do I manage that supply chain and have it be secure no matter where it's going? And that's where we're able to add a lot of value, and what we're finding as a business to get to your point is that we'll meet the customer wherever they want to start. Our business model, the subscription model, we charge based off of nodes per year or nodes per minute if you really want to go there, and we just let them gradually start using more and more and more, and so we're actually very excited, not only do we have 400 large customers and 10,000 smaller customers, but we're seeing that every customer is expanding, is renewing, and so customers who were on 40 nodes six months ago are now on 400, 500, 1,000 nodes, we have one 12,000 node customer, and that's really good for our business model. Yeah, the other question from Furrier is, what KPIs are you tracking this year? You talk 400 enterprise customers, you look at the size of how many employees you have, what are some of the growth drivers and levers that you guys are playing with this year? Yeah, it's honestly for us, the most important metrics that we're looking at is, obviously, number of new users, how that's friendly, the number of new customers, and within the customers, how many nodes are they deploying on, and most importantly, how many more of them? Is that growing too? That's growing too, right? So density of containers per host is growing, and for us though, the KPI is okay, how are those customers doing, how many of them are renewing, how many of them are expanding, and for us, I think that brings it back to the customer level. If we do a good job with the customers, especially the subscription business model, that sort of forces you to, if you invest in the customer, then they're going to invest in you. Yeah, speaking of money, we've got Sherry Chen coming on next, and Furrier's saying there's a lot of top VCs here. What do you see, what's driving investment in this area? Where are you guys with dollars, anything you can say on that? It's just kind of the VC investment. If Furrier wants to ask difficult questions, he's got to be sitting here, otherwise, yes. No, I mean, so we're seeing... John is shy, he can only talk through intermediaries. Yeah, I understand, John is not shy. Talk to yourself, John. You know, we're very happy about what's happening with our monetization, and we're seeing the top line growing much, much faster than the expense line growing. Obviously we want them to cross, right, at a certain point, it looks like that's going to happen pretty soon here. But I think there's so much interest in this area, because this really is much broader than a single application, right? I mean, yeah, you can go out and you can invest in some great SaaS companies, or some great open source application companies, but containerization and dockerization, it's really a sea change, and it's impacting infrastructure, it's impacting apps, it's impacting networking and storage in all sort of the traditional areas, but I think in a really exciting way. Can you speak to the culture of Docker? And I remember that first show in 2014, 42 employees. And now you've got a little over 300. Yeah, yeah. What is the prototypical, what do you look for in a Docker employee there? What do you see this company being when you're a thousand employees? That's a really good question. How do you motivate them? What is the vision that they're all? Well, something like this, this is incredibly motivating. And honestly, for people at Docker, and we look for all different types, I sort of say, hey, we kind of like people who are type A personalities and type B bodies, you know, we're really excited, but are able to run at sprint pace for a marathon. But honestly, the things that keep us really, really motivated is, I always say like, if you're ever feeling down at Docker, go talk to users, go talk to customers, and that will get you excited.  I mean, that's motivating. And that helps deal with the normal trough of, okay, the code didn't work, we missed the ship date, whatever the case may be. Yeah, yeah, you didn't help advertising clicks, you know, you're helping to improve lives. Yeah, it is. And do that, and you know, I love that the show here, you've got some charitable events that you're contributing to. Yeah. It's, are there activities you guys are doing at corporate to help drive kind of civic engagement? You know, we do, but what we found is the best is when it comes from, you know, from inside our employee base.  And to some extent, so you know, we do have a lot of charitable things we do, it's really exciting to have, you know, 14 and 13 year olds who are using your technology. I mean, whoever thought, I spent my entire life trying to have something that my kids would think is cool, and actually now they think Docker is, right? How does it tie in with the education? Are you guys helping to, you know, the next generation of Aptev people? Absolutely, Docker is actually being used very broadly in computer science courses just because, you know, that's basically how teachers want students to submit their projects, right? They submit it in a Docker container, right? And of course, we're thrilled that they're learning how to use Docker. It also means that they don't need to worry about making sure the students' laptops are set up correctly. They can focus on writing great code. But yes, we engage in education. We're doing some educational work with people in San Francisco just because that's our home base. And we're really happy to support, you know, three, actually four wonderful charities that are here at DockerCon today, you know, some servicing LGBT youth. We've got one in the genomic space, one focused on teaching coding, and that just kind of, that really helps stay motivated. Ben, it's a shame you're not having any fun. You know, I'm having a ton of fun. I'm exhausted. I'll probably collapse in a corner, you know, come Friday. As you said, your second favorite week of the year is next week, right? Absolutely, absolutely. All right, Ben, want to give you the final word. You know, we've got another day. I'm sure you've got a ton of stuff in the announcement tomorrow. We're going to have Solomon on right after the keynote tomorrow. But when people leave Austin, what do you want them to know about, you know, the Docker community and Docker the company? You know, I'd say that, you know, Docker is here, Docker is now, Docker is for old and for new, for on-premise and for cloud, for Linux and for Windows. Docker is here for you, and however you want to use us, we're going to help you do amazing things faster. All right, I think that's a wonderful Cube gem to end us on. Ben Gallop, CEO of Docker. Always a pleasure to talk with you. Congratulations on the show. We are thrilled to be able to be here to cover it. And we'll be back with one more guest here on our day one of two days of live coverage. You're watching theCUBE.


Amy Park, understandably not the fullest for Western Sydney Wanderers' visit to face Melbourne City. Certainly in what's been a trying week for professional sports, we hope that we can provide you with some entertainment and maybe even some escapism for the intersection of sports and culture that has been COVID-19 and the crazy week that's been. Duke just commanded the ball to his feet, saw Tate Russell over on the right side, good first touch from Russell to play it into the path of Muller and the return ball, Tate Russell, what a beauty for his first A-League runs down to celebrate as Atkinson tries to get McLaren into it. The deflection may work out quite kindly, McLaren cuts it back to Atkinson. Noon wants it backstick, Atkinson is going to go himself and the deflection still saved very well and now in comes Noon, goes to ground, Farim is buying, City will go to the spot. How much of the last three games weighed on Jamie McLaren as he takes this spot kick? Breaks his scoring drought, his 20th goal in a City shirt and we're level 1-1. They're a great penalty there from Jamie McLaren. Obviously Lope thought he was going to pick a side and go early and he just waited for him to go and then just hammered it straight down the guts. Curtis Good, back with the ball at his feet, Atkinson. Just got rushed there by O'Doherty, wanderers. Can they break here through the left, over the head of Muller and looping out. Yeah, sloppy play there from Nathaniel Atkinson, just got caught on the ball, can't afford to do that and obviously O'Doherty, the ball, the over-hit for a goal kick. Again, the last five, ten minutes in particular, just been sloppy for both teams. They can't keep the ball at all. Just over this little phase of play where neither team has had a clear-cut chance though. Western City's possession. Curtis Good, oh, it's a poor header. It's presented a great chance and it's going to be bucked, hasn't crossed the line. That's the question. Referee Kate Jakovic is just waiting for word in the earpiece to the other teammates. Here's another look at it. Simon Cox here, oh wow, he thought it was going in and tell you what, that's Curtis Good. What a recovery run to get there on the line.  Short corner, whipped in by Atkinson, the header from Mood and he can't get it to fall inside the left-hand post. Better here from City, good ball in. And into the gloves of Glover, that goes. It should be enough to secure a point for Melbourne City. Nazarene, thought he was being grabbed by Russell, but nothing doing and that will be that. They have to share the points. A point that suits Melbourne City certainly more than it does Western Sydney Wanderers and for Adelaide and Western United they will be the happier as Wanderers fail to bridge the gap back to the top six in spite of leading in this game. Melbourne City dominated at the end of the first half but never really recaptured that magic as the game went on.


Hi everyone, this is Drew from Amazon AWS ECST. I'm now focusing on container metrics and the logs related to work both inside AWS and on the open source one bit. Hi, I'm Nitesh Kumar Murcharla, a senior cloud support engineer with AWS as well. My major area of focus is containers and container related technologies and services on AWS. So today, we're gonna talk about the new feature we just finished inside the open base, which is stealing the open base Kubernetes filter in very large classroom. So for this topic, this feature is trying to address the ability issue, which is happening in the Kubernetes filter. Some customer use Blundee to, some customer using Blundee and they are stealing the API server for struggling and unresponsive when they try to scale up the Kubernetes filter, the Kubernetes clusters. And this is due to that Blundee is spamming the API server with least all possible costs. These are expensive costs and can bring down the Kubernetes API server and control plan. And this makes API server became the bottleneck of the scalabilities. So let's see the texture. The request, which Blundee and Blundee try to send out is to get my data from the API server and actually this information could not only get from the API server, but also from the kubelet. And so the kubelet is the primary node agent that runs on each node. And Blundee could instead call in the API server but just call the kubelet to get the same information. So we proposed an idea that we can provide customer an option to get the metadata information from kubelet instead of to the API server so that we can unblock from the API server on bottleneck. And in this solution, we will reduce the request to API server to zero and just increase the one request per node for each kubelet. And let's let me talk about all the results and our features. Thanks, Drew. So for this, I have baseline flow and D first. With flow and D, we saw over 67,000. So I created a cluster of 2K nodes and over 30,000 ports. And every node has flow and D agent running on it. So for 30,000 ports, we saw and I was turning at a rate of 1,000 ports per hour. At that rate, what we saw is the flow and D agent was making, the long set that you're seeing on the screen shows that the flow and D agent is making 60 to 70,000 API calls with that turn rate that is collected over three hours of time. Apart from that, we also see a lot of watch and get API calls that are made to API server by flow and D. You can also see that the P99 when a list pod, list pods are list pod is called by the flow and D agent or other agents. You can see that the P99 is high at that point of time. These are some internal metrics that have collected from EKS servers. Just wanted to showcase for your understanding how we know that the list API call is taking a lot of time a lot of time here. Yeah, these are the continuation of the metrics as well. You can see the list latency is spiky there in the third row. Yeah, for customers as we are internal to AWS we were able to see those metrics from the internal dashboards that we have. However, customers might not have abilities to view that granular metrics. So I also set up Prometheus on my EKS cluster to showcase the amount of API calls being made and yet CD request latency and API server request latency metrics there. I made over 800 lists and it made the whenever I churned my cluster with a lot of pods in my deployments. I see that there are a huge number of API calls being made to API server due to which my Qubectl commands were slowing down. That is what I'm trying to show in this particular screen with this particular screenshot. Apart from that, what I also noticed with Fluendee was I was running a thousand clients of log test agent that is available on that is available. And each sense about 600 lines of logs per minute and I had over a thousand clients running on my cluster for scale testing. And as you can see, wherever the pods have landed, there were multiple pods landed on one single instance and I see that the Fluendee is taking approximately over, is taking over 1500 megabytes of memory, which is a lot. And also on the bottom of the screen, you can see that the Qubectl calls that I made to API server took over 15 seconds. And sometimes this was not the maximum, this data was recorded when I just made an API call or when I just initiated a update to my cluster. Whenever I listed all the pods in the cluster, it sometimes took over 60 seconds as well and timed out. Yeah, so later I switched to Fluendbit with the Qubelet feature that we have developed. As you can see on the screen, I am querying for a data of over a week. I've been running that feature for over a week in my performance cluster and ran quite a bit of tests on that. And I haven't seen a single API call being made by Fluendbit with use Qubelet or Trueflag to API server. This significantly reduced the amount of workload or the reduced the amount of memory pressure on API server. And as Fluendbit is no more making that list calls to fetch data like Fluendee. Yep, so that's all for our sharing. Thanks everyone for attending. Thanks, Oli.


Jakey camera because of the car, in the Mustang 2 sadly said to say, I ain't got a time, no time, other projects, no motivation to, so decided to sell it, but before I sell it I gotta drive it. And that's it ladies and gents, just saying goodbye to this old, old car, 78, 44 years old, had it for about, I wanna say 4-5 years, not long, didn't get to drive it much, well because I spend half the time, half of that time I owned it, I spent restoring it, all that's left is bodywork, all the, you know, the dash, components, the dash itself, seats, maybe headliner, plenty more small things, you know, that's it, hopefully there's gonna be another one, maybe another Mustang, maybe a Camaro, maybe a Payak, who knows, all I know is this little 10-15 mile drive was a lot of fun, yeah, gotta love the glorious sounds of a V8, classic V8, with no mufflers at all, it's loud as hell in here, and I like it, alright guys, see you next time.


We're here in Bergen, Norway for the final seminar for the Newport Artic Scholars Initiative, an initiative we launched at the Naval War College in Newport, Rhode Island last April. That brings together sailors and scholars from seven Arctic countries to conduct applied innovative research on important security issues that matter to the navies and nations of the Arctic region. And over the course of a year, we've created 39 principles of Arctic security in three thematic areas, awareness, confidence building measures, and capabilities. And so here in Bergen, Norway, we are going to present the results of our work to the heads of navy and the representatives.