For more videos on people's struggles, please subscribe to our YouTube channel. Hello. Welcome to People's Dispatch in Globetrotter. This is the first in a series of interviews that I'll be doing on the question of the United States. Well, I was going to say the Navy, but what I really mean is the United States military in the Pacific. We're going to start in Hawaii. We're going to go to Okinawa, to Guam. Perhaps we'll stop over in the Solomon Islands. Let's see where we go. This is a part of the world, the Pacific, little known to many people. Sadly, little known. It has a great history. It is an important role in the development of our human family. In the story we tell ourselves, it's important to pay attention to. We're going to start with an ugly part of the history, which is the role of the military. Could very well start with nuclear testing. We'll get there eventually. Bear with us. It's super to be joined today by Kavina Ola Okala, Kapohua. Kavina, welcome to People's Dispatch and Globetrotter. Thank you for having me.  You're an activist for Hawaiian independence movement.  You've been involved in a number of important issues. Of course, you're studying at the University of Hawaii, which is something that we were talking about earlier, which we could just spend time talking about political science and revolutions. But we have more serious things to talk about. Let's start with an issue that has been on the table recently, which is, there have been these petroleum tanks at the Red Hill Fuel Storage Facility, a US military facility leaking 180,000 gallons of fuel, we're told. Tell us about this particular crisis. Start over there, please. Sure. So this crisis takes place in Hawaii, of course, which has been an occupied nation of held militarily by the United States since 1893 when they overthrew our government. The Red Hill Fuel Storage Facility represents a long history of US military occupation here. Red Hill, or the area known as Red Hill, along with over a third of Hawaiian land in general, was taken by the US military for its operations, especially around World War II. And so that's when these tanks were built. Red Hill Fuel Storage Facility is this underground fuel storage facility that holds up to 250 million gallons of petroleum. And it was built just around the outbreak of World War II. And so these tanks are situated about 100 feet directly above our main source aquifer. So for those who don't know an aquifer, it's the primary water source for the island of Oahu. And so this island has almost 800,000 to a million people on it. And so this source aquifer provides water for all of them. And the Navy's fuel tanks are directly over it, which have been leaking over their almost 80-year history. They've leaked almost 76 times, of which we only knew about the first week in 2014. These tanks were only declassified into public knowledge in 1984. And so for the majority of their history, we've actually been unaware of their existence and the fact that they've been actively leaking fuel into our water source. And so in November of last year, late November, it was revealed that thousands of people were smelling gasoline in their homes when they turned on their faucets. Thousands of people, hundreds of people were being admitted to the ER into the hospital with chemical burns in the mouth from drinking their water with symptoms of jet fuel contamination in their bodies, outbreaking and rashes, vomiting, headaches, really serious symptoms that caused them to be admitted to the hospitals. People had to be evacuated from their homes because it was no longer safe for them to live there. And this wasn't just military families. The military families have unfortunately been getting all of the press, but numerous civilian communities have also been contaminated and have received no restitution from the military. The military knew about the contamination of the water since July of 2021 and withheld and smothered the information and evidence until it became public in November of last year because people were sent to the hospital and only then did the military admit it. And they kept it from the state and local governments as well, despite the fact that usually the state and the military usually align in acting against the interests of the people. And so the military and the state of Hawaii had to shut down multiple water wells that service well over 400,000 people in Hawaii. And almost 100,000 people, mainly military personnel, have been displaced from their homes. And so this is a really major unfolding crisis because never before in the history of Hawaii has our water and threatened in such a major way. The Board of Water Supply, which is the utility of water management and water resources for the island of Oahu, says that if something is not done soon, we may never be able to drink our water again and it may be permanently contaminated, which is, like I said, unprecedented and has never happened in our thousand-year history in this land. And the US military has managed to do it in a little under 80 years. And so this is a major significant crisis because Hawaii is on many scales because not only is this water necessary for sustaining life in Hawaii, it's necessary on many other levels. Hawaii is unfortunately undergoing a massive living crisis or living cost crisis of native people, indigenous people being forced from their homes because they no longer afford it. If the cost of water goes up because we've imported, that's another major issue. This plays into another problem of Hawaiian independence. We have not had control of our land for 129 years now. And the US military has again and again continually abused and desecrated and damaged our land, whether it's through live fire bombings, whether it's through the storage of chemical weapons, whether it's through the pollution destruction of land like here at Red Hill. This is a really long-standing issue. And if something is not done soon, we may never be able to drink our water again, like I said. And the military has continued to suppress information about this, to do nothing about it, to try and play it off until they can just say the water is safe again. Just today, actually, there was a news story came out. It was leaked that the US military now has reports on the leaks that occurred over the past year and is refusing to release them. And so this is critical information that helps us how many gallons were leaked into the water, what the contamination looks like, are the tanks actively continuing to leak, is the leak stopped, is it contained, or is it continuing? How is the water moving or the water in the field moving in this underground aquifer? Currently, it threatens, we have over three wells that are shut down. Is it going toward other wells across the island that service other areas? We've lost 20% of our access to drinking water currently. 20% of our capacity to feed water to the island is gone because of the wells that have been shut down. So every other well on the island has happened to pick up the slack. And so we may see a water shortage next summer when in the hot months. The Board of Water Supply has said water rationing is very likely. They've already been putting out information about asking people to be cautious of water used to turn off the water if you're washing your hands, to turn off the water if you're brushing your teeth. Even a seeing really minor ways of conserving water, that's how worried the water management utility is about what we may be facing in the future. And water shortages have almost never happened here in Hawaii. We live in a very abundant land of resources, thankfully. Our ancestors chose a really great place to live. And yet now we're seeing these major resource shortages because the US military has come in and destroyed really vital agricultural land to feed our people. We already import over 80% of our food and now we may be forced to import a large percentage of our water because we can no longer safely source it from our own life. It's incredible what you just said that Hawaii, a place that I associate with abundance, as you said our ancestors chose a good place to live. It's incredible what you just said that 80% of the food is imported onto the archipelago and you also said now water will be imported. I mean people have an understanding of Hawaii, of course it's in the middle of the Pacific Ocean but you're not asking you to drink salt water. It's just that having an image of abundance and you're saying 80% of food is imported. Just explain that, I'm afraid that's going to stop a lot of people. Sure, so prior to European involvement in the Pacific, prior to European colonization, Hawaii had a population of almost a million people of about a million people and that's almost about the same population we have today. And we were able to provide for everyone through sustainable agriculture, through major fishing resources and sustainable farming tactics. And yet when the US military and US imperialism came to Hawaii, we saw capitalism kind of take over and turn a lot of these fertile agricultural lands into cash crops such as sugarcane and pineapple. And then once that industry died out, we saw new industries come in of tourism and the US military. Like I said before, the US military occupies almost a third of all Hawaiian land. Much of it stolen directly from the Hawaiian people and was condemned during World War II to take some of the largest US military bases in the world are here in Hawaii, especially on Oahu, such as Kanewa Marine Corps base and Pearl Harbor Naval Station. And so basically these military bases occupy vital agricultural resources. The reason Pearl Harbor is called Pearl Harbor is because it used to be an abundant fishing ground. This huge, large inland harbor basically was renowned for its amount of pearl producing oysters which are extinct now due to US military pollution. You couldn't pay me to eat a fish from that harbor anymore. And it used to be one of the most major fishing grounds of our people. There are numerous fishing shrines and temples that dot that landscape. Numerous manmade lakes to close off areas to create fish farms that are now defunct and destroyed by US military pollution. And some of the other areas that are large fertile fields that the US military now occupies are used to train invasion tactics. Many of them were used to train troops for the invasion of Vietnam and the war in Vietnam because the environment was similar and they used Agent Orange on our land which has of course completely destroyed any agricultural value of these areas. And they continue to burn and do live fire trains in these areas so that we may never actually be able to eat from them again, which has caused us to need to import this massive amount of food when we were able to provide it for ourselves sustainably before. And it's just highlights the contradictions that are at play here in Hawaii because all of these resources were widely available to us and now the US has come in and said they are here to protect us while also creating a dependency on them just for basic survival necessities. Creating dependency is one thing but also as you said earlier making the land of Hawaii a plantation to grow you know pineapples and so on for canning. I remember reading a book by Gary Okihiro about the pineapple culture, a tremendous story of how land is converted from you know land for people to land for profit and so on. Powerful stuff, I mean what you're saying that strikes me and I know that you are an you know an adherent for independence for Hawaii and I think that's important to put on the table. On the other hand there are some political instruments, I mean there are senators from Hawaii, there are city councils you know there are all these instruments. Aren't these instruments able to exercise some sovereignty over the US military or is there a kind of military dictatorship over the islands of Hawaii? Absolutely most of the elected representatives and state officials here in Hawaii actually play into the military's hand. Essentially what the military has done is prompt up a lot of these elected officials for decades now starting back in World War at the end of World War II with Senator Daniel E. Noy, World War II veteran, the military industrial complex regularly donates massive amounts of money to Hawaii senators and representatives. So people like Meiji Hirono who sits on the office services committee, particularly the one of Seapower, Brian Schatz and other representatives for the state all take money directly from companies such as Raytheon such as Boeing such as any of those large military industrial complex contractors that the US military uses all pay directly into the pockets of our senators. And so really what you have is an oligarchy the same that overthrew the Hawaiian kingdom 129 years ago still remaining in power just with new faces. Many of them many of the grandchildren and descendants of those people who overthrew our government still hold positions of wealth and power in Hawaii today. So really the colonial nature of the US military occupation here and the imperialist nature of it really hasn't changed it's just become a little bit better at hiding its form. And so when it comes to whether or not these democratic institutions are able to uphold the people's rights but basically US military being always falter every time. For example, the US military like I said holds almost one third of all land in Hawaii. A large portion of that land over 40,000 acres of which the lease for it is expiring in 2029. The amount that US military pays in rent to the state of Hawaii is $1 per year. For land that basically could be used for many other things Hawaiians the native people of this land pay more in rent to landlords pay more in rent in order to own our own land or just lease our own land the new US military pays for a third of all Hawaiian land that it ends up destroying and sometimes damaging beyond repair. And so this is the history of US military occupation of Hawaii. If anyone expects US government officials to ever stand up for the people here or to do anything to inhibit the US military's actions and damage it would be completely misguided given the fact that often state senators are agents of the US military and aiding and abetting their taking of land their destruction of land and their exploitation of people. Well that's really this is powerful stuff you know you're coming at this story with a great deal of evidence of what's been happening. I mean I know that there's a report that is does the rounds that suggests that the US military globally is the world's largest institutional contributor to climate change and pollution. I think it's a pretty credible report from Durham University, Lancaster University and so on. Have you been able to personally engage with people from the military on some of these issues or do you get no chance to actually confront them face to face? It's funny because this is one of the first times a lot of the military families are seeing themselves put in our position. You know of this of course the treatment that's happening from Red Hill is how the US military is treating Hawaiians and the people it occupies around the world for its entire history. But now one of the first times the US military personnel and families are starting to see the effects their presence has on the people they occupy and seeing the lack of care their institution has for them despite them being split soldiers. So right now we're seeing actually a lot of US military families standing up for themselves and for their families especially because a lot of their children were the ones who were put into the hospital by the negligence of these commanding officers and US officials. And so it's been a long tenuous history. There's a lot of pain unfortunately and strife between the Hawaiian community and the military community that dates back decades because of the US military's role here of the racism and white supremacy that the US military brought particularly the US Navy. There was cases in the 1920s and 30s of US Navy sailors murdering young Hawaiian men and getting away with it. There's a famous case called the Massey case which saw a white woman falsely accuse a young Hawaiian man of a rape he could not have possibly committed and then her husband kidnapped this Hawaiian man murdered him was caught with the body in the trunk and the was sentenced to an hour of imprisonment in the governor's office and then allowed to leave for a permanent day with no further consequences. And so this is the kind of relationship that the US military has with the people in Hawaii and the and military personnel have with us. And so this is the first time we're actually seeing some sort of understanding between these two groups particularly because of the long-standing history of our our interests being contradictory Hawaiians wanting their land back and US military personnel financially benefiting from occupying our land. So interesting you know I mean it's a pleasure to talk with you. This is the first of a series as I said of people's dispatch deep look into the US military activities in the Pacific but also an education about the struggles of the people of that vast land which is also an ocean. So thank you so much for joining us at People's Dispatch. Thank you so much for having me.


My name is Sam Vaknin and I am the author of Malignansseltland, Narcissism Revisit. Contrary to misinformation spread by so-called experts online, covert narcissists are not cunning and they are not manipulative. Classic narcissists are cunning and manipulative. They often disguise their true nature effectively, knowingly and intentionally. Classic narcissists are persistent actors with great thespian skills, but not so the covert narcissists. The covert narcissists suppresses his true nature because he lacks the confidence to assert it. His is not a premeditated choice. He can't help it but shy away. The covert narcissist is his own worst critic. Inverted narcissists are covert narcissists. They are self-centered, sensitive, vulnerable and defensive. Sometimes they are hostile or paranoid. Inverted narcissists harbor grandiose fantasies and have a strong sense of entitlement. They tend to exploit others, albeit stealthily and subtly. Covert narcissists are aware of their innate limitations and shortcomings and therefore constantly fret and stress over their inability to fulfill their unrealistic dreams and expectations. Covert narcissists avoid recognition, competition and limelight for fear of being exposed as frauds or failures. They are ostentatiously modest. Covert narcissists often feel guilty over and ashamed of their socially impermissible aggressive urges and desires which they suppress and deny and keep at bay. Consequently, covert narcissists are shy and unassertive and intensely self-critical. They are perfectionists. This inner conflict in the covert narcissists between an overwhelming sense of wealthlessness and a grandiose false self results in mood and anxiety disorders. Covert narcissists team up with classic narcissists but in secret they resent and they envy them. Cooper and Akhtar, two scholars, wrote about covert narcissists as early as 1989 and they compared the arrogant or overt or classic narcissists to the shy or covert narcissists. When it comes to self-concept, the classic narcissists has grandiosity, preoccupation with fantasies about standing success and due sense of uniqueness, feelings of entitlement and seeming self-sufficiency. The covert narcissists has inferiority, morose self-doubts, marked propensity toward feeling ashamed, fragility, relentless search for glory and power, marked sensitivity to criticism and realistic setbacks. The classic narcissist has numerous but shallow relationships, an intense need for tribute from others, scorn for others, contempt or often musked by pseudo-humility, lack of empathy, inability to genuinely participate in group activities, the valuing of children over spouse and family life. The covert on the other hand has inability to genuinely depend on others and trust them, chronic envy of others, of their talents, of their positions, of their capacity for deep-object relations for life. Covert narcissists have a lack of regard for generational boundaries. They disregard others. They disregard other people's time. They refuse to answer letters as a form of passive-aggressive behavior. As far as social adaptation, the classic narcissist is socially charming, is often successful, consistent hard work done mainly to seek admiration, it's called pseudo-sublimation. He has intense ambition and a preoccupation with appearances. The covert on the other hand has nagging aimlessness, shallow vocational commitment, dilettant like attitude, a charlatan, multiple but superficial interests, chronic boredom, aesthetic taste, often ill-informed and imitative.  Ideosyncratically and unevenly moral, this is the classic narcissist. His apparent enthusiasm is only for social-political affairs. The covert narcissist has a readiness to shift values to gain favor.  He has a materialistic lifestyle. He has delinquent tendencies, inordinate ethnic and moral relativism and irreverence towards authority. When it comes to love and sexuality, the covert narcissist is in a state of constant marital instability. He is called and gritty seductiveness.  The covert narcissist is unable to remain in love. He has impaired capacity for viewing the romantic partner as a separate individual, with his or her own interests, rights and values. The covert narcissist is unable to genuinely comprehend the incestable, and he has occasional sexual perversions. Finally, the cognitive style of the classic narcissist is vastly different to that of the covert narcissist. The classic narcissist is impressively knowledgeable, is decisive, opinionated, often strikingly articulate. Ego-centric perception of reality goes hand-in-hand with the love of language, fondness for shortcuts to acquisition of knowledge and general infatuation with knowledge. The covert narcissist's knowledge is often limited to trivia. It's called headline intelligence. He is forgetful of details, especially names. He is impaired in the capacity for learning new skills. He has a tendency to change meanings of reality when he is faced with a threat to his self-esteem. His language and speaking are used for regulating self-esteem, not for communicating. So the inverted narcissist is a codependent who depends exclusively on narcissists. A narcissist is a codependent. If you are living with a narcissist, if you have a relationship with a narcissist, if you are married to a narcissist, and if you are working with a narcissist, that does not mean that you are an inverted narcissist. To qualify as an inverted narcissist, you must crave to be in a relationship with a narcissist, regardless of any abuse inflicted on you by said narcissist. You must actively seek relationships with narcissists than only with narcissists, no matter what your bitter, traumatic past experience with narcissists has been. You must feel empty and unhappy in relationships with any other kind of person, with a non-narcist. Only then, and if you satisfy the other diagnostic criteria of dependent personality disorder, only then can you be safely labeled an inverted narcissist. Au revoir!


Welcome traders to another tickmill wave analysis session with me Patrick Manley. One story attention to the Aussie Yen We are potentially looking at a meaningful corrective sequence completing versus this lasting policy leg to the upside. We've trained into the 50% retracement of the last five-way of advance. We've also tested now the 161 extension of our B wave high We've got some nice momentum divergence developing here So what I'm looking for is bullish reversal patterns from current levels the 7950 handle to set long positions at least looking for a three-way corrective move Up into the descending trend line resistance now coming in at 82.73. If we get through there We can think about retesting for our highs 85 80 on route to new highs as always trade Trade the plan most importantly manage your risk. Until next time, thanks very much


So, in this video, I have some footage of the Super Mario Odyssey demo that's available at Best Buy, GameStop, Targets, some Walmarts, etc. It kind of depends on what area you're in, in which store has it, but what this person decided to do playing the demo is figure out what happens if you die in this game without any coins. So for those who don't know, there are no lives in Super Mario Odyssey.   Even though you don't have the coins to respawn, it just respawns you back at the cappy shop. And this is just interesting because this might be based on my admittedly faded memory and my own experiences playing Mario games, this potentially might be the very first Mario game that literally does not have a game over screen even in the most extreme of cases. The chances of any of us actually running out of coins and dying is probably going to be pretty rare anyways especially if you know in the back of your mind you need coins to regain life but you apparently don't even need coins to regain life, you just cannot die. This is a game where you cannot die. Now does this really matter? I don't know. That's something that I want to discuss with you guys and hopefully have you guys provide some good feedback back because I've always felt that dying in a game like Super Mario Odyssey does provide some benefit in that you feel a little bit of a tense when you're taking risks on a particularly tricky piece of the game. Whether it's a part of the game that you fall out the map or fall on an endless pit or if you fall so far you're gonna die or you're gonna try this crazy thing with the enemy not knowing if it's gonna work but without actual death without a real game over screen that I don't know maybe kicks you out of the world and you have to restart the whole world over again or whatever the case may be. It kind of to me takes away a little bit just a little bit from that thrill you get of doing something with a risk. They're taking away a lot of the risk. I mean obviously there's still a risk. You're gonna lose a little bit of progress but there's not much of a risk here dying in Super Mario Odyssey and because of that I'm worried that while I play the game I'm going to feel a little bit like some of the risk in taking on some of these challenges is gone. Now maybe I'm just over exaggerating these feelings and when I play the game I'm not even going to care. I mean if I think about Mario games it's been a long time since I've seen a game over screen anyways where I've ran out of lives or what have you. So it's not even something that I commonly see but at least in the back of my mind in my subconscious I know if I keep trying out this crazy move I'm doing on this one stage you know 10 miles up in the air I'm eventually gonna hit a game over screen and lose some progress and it's something that one makes me try to master what I'm doing faster and two makes me you know sometimes be a bit more risk adverse and some people might not care because this just opens up the freedom of the game you don't have to die everything's about the gameplay of the gameplay of the gameplay and that's fine I don't have anything wrong with it. This isn't the first Nintendo game that hasn't had a game over screen hasn't had you actually die I mean obviously Kirby's Epic Yarn is another example of a game where you literally just cannot die I think it hits you as much as they want you're not gonna die in that game but it's just a very interesting thing to me and whether you run out of life or you jump off a cliff in an endless pit it appears at least from the demo and we assume that this translates over to the final game that there just isn't any way to get a game over in Super Mario Odyssey so you guys let me know what you think about this I just wanted to bring this up quickly I know this is kind of a short video but I this I just find this whole thing fascinating because I can't seem to recall a Mario game like a mainline Mario game where you cannot find a game over screen where you cannot get to a point where you lose some progress you guys let me know I'm probably wrong on that you guys all probably come up maybe you'll end up having a bunch of examples and this is more common in the Mario series than I think but yeah I just feel like this is just a little interesting piece of if nothing else an interesting piece of trivia that people can use in the future because I don't know how common it would be for us to actually force this to happen anyways or have it happen commonly through normal gameplay anyways folks I'm Nathan Ruffa Jets from Nintendo Prime and hey we're talking about Super Mario Odyssey which means it's a good reminder to bring up the fact that we're giving away a copy of Super Mario Odyssey down in the comments below so why don't you go check that out enter it's free if you don't win oh well if you do win sweet you got a $60 triple day Nintendo game for free anyways folks I will just catch you in the next one


Billionaire Elon Musk's net worth has dropped about $9 billion since it took over Twitter on October 28th, according to the Bloomberg Billionaires Index. Musk's net worth fell to $203 billion, down nearly 25% since the beginning of 2022. However, Musk is still the world's richest person. Ahead of the world's second richest person, Bernad are known by around $65 billion. During his takeover, Elon Musk has attempted several changes to the platform, including plans to charge users $20 to maintain their verification batch. We need to pay the bills somehow. Twitter cannot rely entirely on advertisers. How about 8 US dollars? Elon Musk tweeted a reply to Outer Seven King, who complained of the planned move. He later confirmed on Monday that a Twitter bloat tick will cost $8 per month, bending the platform's current verification system bills. Within hours of buying the company on Thursday, the Tesla Titan fired CEO Parag Agraval, chief financial officer Ned Sigal, Vijaya Ghatte, head of legal policy, trust and safety, and general counsel Sean Edgid. He also dissolved Twitter's board and made himself sole director.


Once you have your image scanned and when you do that on your scanner at home I recommend that you scan it at about 600 dpi and scan it of course as a full color photo. Save it as a JPEG that's the easiest thing to do as far as editing is concerned and then make sure you remember where you save it to. I only point these things out because they're all things I've done incorrectly. Then I'm currently using Photoshop to do one more thing to the photo before it's ready to be shared in my Etsy shop or on social media as sort of a JPEG download or a free download digital download. You can do this in Microsoft Publisher which I previously used and it's actually fairly easy. It's a little harder to figure out how to do it in Photoshop unless you're watching a video like this. I learned how to do this from another YouTube video so if you don't understand mine just do some googling inside of YouTube and there are plenty of videos out there. I have Adobe Photoshop 2015 open and I'm going to go over here to this button right here that says open and I'm going to click on that and it's I'm going to go to my downloads file which is where all of my images are and I am going to open one of them. I'm going to open this one. I've actually done this one already. I'm going to double click on it and it should open. There we go. So this is the digital doodle that I did for my Facebook group yesterday and I had so much trouble figuring out how to basically get rid of the white paper. You want to get rid of the white paper. It reprints a lot nicer and a lot easier if you do. I spent a lot of time trying to figure this out yesterday so I thought I'd pass it along.  That's wrong. Oh sorry. Yeah. See that's wrong. I've only done it a couple times. You have to unlock the layer first and go to layer. There we go and then layer style blending options.  I'll move the box out of the way. All these little gray squares are showing up. That's because now that background is transparent and the farther in I go towards the gray scale or the black the more shades of white it's going to find to do that too. So I'm going to just move it enough that all of the white background paper is gone and then hit OK and now this is done and it's finished and that will reprint very nicely and easily over any other background and it will just print the black which is what you want. If you have any little areas of your drawing that you can touch up which I actually do down here there are ways to do that. I'm not going to show you how to do that right now because I'm not that good at it but there are plenty of YouTube videos out there but this is a really easy way to just take that white paper out. You just want to see the artwork and then go up here to file and save as and then save it as a JPEG and again mark what file on your computer that you've put it into so that you know where to go to look for the completed work. That's it for right now. I hope that gives you some great ideas of what you can do. This is just really easy basic Photoshop stuff. It's really honestly the only thing I know how to do in Photoshop. So anyway I learned more new things I think that you guys might be able to use. I will be sure to pass them along. Don't forget to do the most important thing which is go out and have a great day and do something nice for yourself because you deserve it and I'll see you later.


Welcome traders to another tick mill weekly market outlook for week commencing the 4th of July, 4th of July being Independence day that means that the US markets will be closed for a public holiday Next week's focus really is going to be on the US labor market The strength of the US labor market really is going to be top of mind for traders To gauge inflationary pressures and growth with risks the jolts and ADP data Released on Wednesday and Thursday respectively followed by the all-important payrolls released on Friday Market expects 3.5% unemployment rate in June down from May's 3.6% reading. We have some week spending data last week and remarks by Fed chair Powell put hourly earnings in the participation rates in the spotlight as well as to gauge the path of monetary policy Data on consumer credit will also be released on Friday Let's take a look at other releases of notes on Tuesday We get May factory orders looking for a 0.5% print there up from last month 0.3% capital investments Moderately positive so far in the second quarter Then on Wednesday, you get services PMI looking for a 51.6 There versus the last print of 51.6 inflation is stripping some momentum out of services, but the sector Generally remains in robust health manufacturing a little bit weaker versus the last prince of 55.9 We look for a 54.3 this time around We also get on Wednesday at FOC June meeting minutes focus really is on discussions of the path of policy for 2022 On Thursday May trade balance looking for a negative 84.9 billion print there the deficits will remain Wide and then I've obviously on Friday. We get that more important non-farm payrolls data Media Nesca is for a 250k print jobs growth moderately but moderating but still healthy really keeping pressures on the unemployment rates and adding wages growth look for the 0.3% there prints on the average hourly earnings So we ran out the week in the US with May wholesale inventories find less than that 2% of prints restocking continuing at a robust Pays and then make consumer credit looking for a 30-print there aggressive monetary tightening is likely to really cool credit growth in the US Looking at the dollar index here from technical perspective Still tracking this ending diagonal looking for an ABCD e-pattern here. So whilst we hold above the pivot 103.90 in the ascending trend line support here We are looking for that test of the 106 40s 106 20 area. We have nearly our three there 106 42 and so what I'm going to be watching for there is momentum divergence to be maintained bearish momentum divergence Looking for bearish reversal patterns there to engage on the short side initially Target will move back down to test the base of the wedge there at 101 35 at this stage It would take a loss of this ascending trend line to sports to suggest We already have a high in place and then again the target would be that one 133 area as the first downside objective Moving to the eurozone And in terms of data next week Monday, we get July Centex investor confidence Last time negative 15.8 looking for a deterioration here to a negative 20 print with growth outlook remains very weak in Eurozone then on Tuesday services PMI's 52.8 final estimate for the month and Then on Wednesday, we get made retail sales Negative 1.3 percent last time looking for a 0.6 percent positive print now But cost of living pressures are weighing on retail trades And that rounds out the data of notes for Eurozone next week so from a technical perspective Euro dollar continues to remain below this all-important trend line resistance here We did get a bit of profit-taking as we retested lows into the 103 60s on Friday But whilst we hold resistance here at this 105 50s We look for an extension down the first downside objective being 102 40 and then one 101 74 there on the weekly timeframe at this stage It would really take a close through this trend channel resistance above 106 20 to suggest that we can see a further corrective move up into test resistance at the 107 30s moving to the UK terms of data Tuesday services PMI's 53.4 expected final estimate for the month And that is really the only data of note that we have in the UK next week very light data power there so likely to take Price action likely to take its leave from the dollar index Sterling similar to the euro got some profit taking into the close on Friday Potential here is if we can get through the pivot at 122 40s Then we can see an extension up into the trend channel resistance and the quality objective 124 30s before once again looking for another leg to the downside to complete the sequence But whilst we remain under this 122 30 Monthly monthly pivot there then we are looking for an extension down the next downside objective is 118 15 From there we would look for another potential corrective move to get a retest of this Trend channel that we're currently trading in but for now the pressure is is to the downside And like I said need to get a close back through 122 50s 122 60s to take some of this pressure off In Japan data of note next week Tuesday Nikkei services PMI final estimate for the month of 54.2 And then on Friday we get May household spending Looking for a positive 2.1 cent print there pent up demand outweighs the purchasing power concerns for the Japanese economy And we also get the May current account balance looking for a hundred and sixty two billion yen there Import value lifts on that much weaker yen and higher energy costs. That's the only data of note in Japan next week So from a technical perspective, we're still tracking this ending diagonal pattern looking for the test of 137 60s from there So as we maintain momentum divergence here and watching bearish reversal patterns to gauge on the short side Initially targeting a move back down to 131 30s at this age will take a closing loss of this ascending trend line sports suggests We already have a high in place and again initial target 131 30s on the downside Branding out the week down under in Australia in terms of data of note on Monday Soon inflation gauge inflation well above the RDA's target bound looking for 4.8 cent print there We also get June A&Z job ads last time 0.4 cent job vacancies are plenty amid that tightened labor supply Which is a global thing at the moment Then heading into Tuesday we get the all-important RDA policy decision Mark it widely expects another 50 basis point move and a prompt return soon was the neutral rate So last time that increase of 50 base point put set the rates at 0.85% So we're looking for it to move up to 1.35% this week Then on Thursday get the main trade balance looking for 10.9 billion there Input forecasts plus 3% exports forecast plus 2.5% predominantly led by coal And that rounds out the week in terms of data down under in Australia From a technical perspective Aussie dollar broke through that support zone we're looking at the 6840s So now all eyes really are on a test of the equality objective versus the swing high from 7660s down into this 66 From there I'll be watching for momentum divergence and bullish reversal patterns to engage on the long side Looking for move up into train channel resistance 6950s We're going to round out the week this week in the bonus chart here looking at Bitcoin We're tracking a potential five wave sequence we're looking for the test the equality objective at 12,185 In this broader ABC corrective pattern moving to the daily chart here Whilst we hold this support at 18,670 We look for a test of the equality objective 22,400 and just above there The train channel resistance 23,600 There is reversal patterns there to engage on the short side targeting that equality objective 12,185 At this stage any loss of the current support at the lows of 17,600 Which again we want to be in on the short side there targeting this equality objective And then when we get down there we're going to look to see if buyers step back in in a meaningful fashion Watch for bullish reversal patterns to engage on the long side from that 12,185 downside objective At this stage really take a loss of the 9,379 the weekly high volume load to suggest that we are heading meaningfully lower And that concludes the weekly market outlook for week commencing July 4th As always traders plan the trade trade the plan and most importantly manage your risk Until next week, thanks very much


I'm here to introduce a speaker, Iain Romanic, and he's got a speech on reducing memory loss. Thanks. Hi, my name is Iain Romanic. I work in the open source technology center at Intel. I lead the group that's working on the open source open GL driver for Intel graphics chips. I'm going to talk today about some work that I did around the middle, kind of into the last half of last year to reduce the memory usage of our GLSL shading language compiler. My slides are also already up. They're going to be available through the conference eventually, but I figured I'd beat them to the chase. And the slides that are up there will also include the slides and also the notes that I made for myself on them. So I'm going to talk a little bit about Mesa project background, the particular problem and set of problems that we encountered, and then what was done to try to remedy the situation a bit. So Mesa is the open source open GL driver stack.  So word count dash L as of yesterday says that it's the hardware agnostic code is about 60,000 lines of C++ including comments and license headers and all that sort of filler bits. Part of this includes a TALIC clone that we use for memory management. We call it RALIC. I believe that it was either Carl Worth or Eric and Holt who talked about the compiler architecture and in particular the memory management system at LCA I think in 2011 but I could be off on that. So the important bit about this I'm not going to go into the memory manager as a whole is that most of our compiler stack uses RALIC as sort of a mark and sweep garbage collector. So we have a lot of optimization passes and other kinds of code transformation passes that will create a new RALIC memory context, perform a bunch of operations on the IR tree, add some nodes, delete some nodes, move things around, do some stuff like this and then makes a pass through all of the reachable nodes in the tree, reparents them to the new context and then destroys the old context. So anything that's still attached to the old context sort of automatically gets freed. This has a lot of advantages for us. It means that we don't have to worry about going through and deleting all of things in destructors and writing a whole bunch of code to sort of explicitly go through and make sure that we don't have any memory leaks. Everything that's not reachable eventually gets destroyed. There's one little caveat to that that I'll get to a bit later. So we kind of developed this on the assumption modern computers are big and memory is cheap so let's just develop code so that we can actually have a maintainable compiler and if we run into problems we'll worry about them later. Well we ran into problems so a lot of games have giant hulking piles of shaders. We've encountered a number of Unreal Engine 3 based games that have many tens of thousands of shaders. We encountered a developer build of Dota 2 from Valve that on our compiler stack ate over 4 gigs of memory in the compiler at startup. So the Dota 2 developer build is kind of special because it tries to compile every shader and every variation of every shader at startup even the variations that won't be used on your particular hardware platform. It's just is let's try to compile everything and make sure it all compiles so that developers will notice oh hey there's one of the shaders that's broken that doesn't build let's fix that before it gets out into the wild but it made the machine fall over. There's also a lot of DX games that when you're running them and a virtual machine on a Linux host that's going to punch through and translate the DX to OpenGL that exceeded the sandbox capacity which is depending on the VM that you're using is either a gig or two gigs and we were blowing way past that on a bunch of modern large DX games so we clearly had to do something about our memory usage because people running on other closed source drivers weren't encountering these problems with these applications. So I basically approached this like an optimization problem so when you're optimizing an application for performance it's a pretty well known path. You go through and you collect some data figure out where all the time is going in the case of an optimization problem look for some big fish and or low hanging fruit fix problems and then keep lather rinse repeat until it's good enough and then move on to the next thing that you need to do because there's always an infinity of infinities of work to do it ends up being a little bit different with memory usage because it's not as familiar of a thing to try to tune for, right? I mean if you're going to do performance work there's huge piles of different tools that everyone knows about sysproff, vtune, perf, you know all these different things that people know about since ever to try to diagnose and figure out where performance problems are but it doesn't seem as well trodden anymore for doing this with memory usage. So I picked a couple of representative workloads in this case I used an API trace of a single frame of Dota 2 and used all the shaders that we know about in existence in a separate project called ShaderDB which I'll talk about both of these a little bit more in a moment and then collected a variety of kinds of data collected data about the counts of reachable nodes in the IR peak memory usage and how our data structures are using memory and I'll get to each of these in more detail here shortly so API trace is a really really useful application for recording traces of OpenGL and I guess DirectX calls made by an application so you can basically run your graphics application inside API trace, every GL call that it does gets recorded and you get this sometimes really really giant and by really giant I mean several gigabytes dump of here's everything you did ever and then can trim that down to a small set of frames or a single frame and then can replay that back later almost always when we get a bug report in Mesa about any of the drivers this frame is misrendered in this game or shadows don't show up or whatever the first thing we ask is can you give us an API trace because that's way easier to try to replay this small thing than to try to get the game that we might have to go out and pay 50 bucks for. It's not so much of a problem for Intel because we can go out and buy that but if it's someone working on Nouveau or one of those drivers they may some hobbyist they may not be able to just run out and buy every game so they can reproduce a bug in it and also like all apps these days that have forced push updates on you the bug that appears in version X of the game might magically not be reproducible in X plus one but the problem still exists in the driver and we'd like to fix it so the API trace sort of gives us that reproducibility. The other project that we used is ShaderDB there's two ShaderDB repos there's a public repo and then there's also a private repo that we have between the two of them it has as far as we know every shader we've ever seen in anything so the public repo we've imported all of the shaders from various open source projects and from a small number of closed source projects that have explicitly given us permission to be able to put their shaders in the repository and then in our private repo is basically every shader from everything you can get for Linux on Steam so between the two of them the last time I checked which was before right around the X developer summit last year so October-ish there was on the order of 50,000 shaders between the two repositories so it's a pretty good corpus of real world shaders okay so to collect data from this one of the first things that I did is instrumented my code to go through when the application has been run gets to a point where all the shaders have been compiled and then in the driver just iterate through all the shaders and dump out information about every reachable node in all of the IR and can collect up counts of here's all of the shader IR there's a million of IR variables 50,000 IR assignments etc etc and so we can kind of gauge where what types are eating up all the memory and kind of uses that to direct the later optimization efforts we make pretty heavy use of the visitor pattern adding support was really easy and took a really strong of code I think it was like to add all this logging facility and so it gave a pretty good idea of which IR nodes were most frequently used and represented the largest memory usage but that information is good but it doesn't really tell the whole story and in some cases it can somewhat fib to you also needed to know what is the actual memory utilization of the application and as in all things memory related valgrind for the win the in particular the massive tool gives really good information about exactly how much memory is used at any point in time by the application there's two things about it that are kind of important for this case one you really want to collect data for both 32-bit and 64-bit if you run in both environments in our case most games that we care about are still 32-bit applications so we need that data but collecting data for 64-bit is also a good sanity check and each has different alignment rules and padding rules so something that you do that improves memory usage on 64-bit might not make any difference on 32-bit and vice versa the other thing that massive was really good for is it gave before and after data for putting in commit messages to justify individual changes so I don't want to give a quick peak at what that looks like so the, where's my house there so there's a, when you have a trace that you've collected from massive it generates an output file and the important bit is you get these detailed snapshots of the memory usage at any point in time and for me I cared about finding the peak memory usage so now I can see, of course so right here I can see that after 40 billion instructions had gone by that I was using a total of 71 megabytes of heap 66 megabytes of that was useful and another 5.1-ish megabytes were padding and extra junk used by the allocation system let me get back to where it was so then in addition once I had found where the memory was going which particular data structures were responsible for the most usage could go through and try to micro-optimize them essentially and the PA hole program was exceptionally useful for that you can run that, actually I can go back out I have that ready too so I can look at so one of my, one of the data structures and it will show exactly where there's bits of padding and unused areas of data so that you can see there's sort of wasted bits in your data structures and can try and rearrange things to better utilize and plug those holes the one thing that you have to be aware of with this is sometimes it will lie to you a little bit when you're using C++ and it will tell you things for example in a derived class of oh you have this giant hole in it when really that giant hole is all the space utilized by the base class so it's kind of fibbing to you it wasn't entirely obvious at first and I wasted a couple of hours like why is the compiler doing something so terribly stupid and realized it was just the tool kind of lying to me so there is a hole but it's a hole that's full of useful stuff and again this is another case where you need to collect data for 32-bit and 64-bit because the padding rules are different so this data structure would be tightly packed on 32-bit but would have a hole on 64-bit so one of the first things that we came across was even with our mark and sweep going through and finding additional things that we could release earlier so the biggest thing OpenGL shading language has a bunch of built-in variables so every single shader has access to a bunch of these built-in variables but most applications or most shaders will only use one or two of the built-ins and there will be four dozen extra variables that are just sitting around unused previously we weren't very aggressive about removing those because we kind of didn't care so I added a pass that would go through and delete these and going by the count-the-nodes metric this made tremendous improvements in our memory usage but then when we went back and sanity-checked those results using Valgrind it said no change at all so what the heck is going on there this is why you need two different kinds of metrics to double-check each other we found that all those symbols were still reachable through the symbol table and that was actually the memory context that owned them so even though we had removed the declaration from the IR the variable still existed so we had this kind of pseudo leak it wasn't really a leak because the indicator got destroyed all that memory would go away but in the interim it was it should have been gone much sooner and this is a problem that can occur with actual garbage collectors too where you have these things that are reachable that shouldn't be reachable so then when we fixed that by basically destroying the symbol table and then reconstructing it after all the optimizations the results from Valgrind match to the results from counting the actual nodes a lot of the work was like a lot of micro-optimization work was just going through and repacking the structures and rearranging things and it was really really tedious death by a thousand cuts I think there was about 40 patches of oh yeah I swapped these two things or I made this thing an int 16t instead of an int et cetera et cetera so that was fairly boring so I won't talk about that anymore one thing that I found that was kind of interesting is that there's a lot of data that you can make where you would typically want to allocate some memory for a thing but you can maybe store it someplace else that isn't dynamically allocated in the case of Ralloc there's a lot of overhead by the memory allocator on every allocation because it has to track where that allocation is in the free list or in the free or allocated list has to track who the parent context is and a whole bunch of other things and every memory allocator has some kind of bookkeeping overhead so even if you allocate one byte there's you know the actual amount of memory used is considerably larger than that so by taking some small things and not allocating them you could get more memory savings than it seems like you should have gotten by just looking at the sizes that you were passing to the allocator but on the side this means that you may have a time-space trade-off you're going to save some allocation but then you have to do some additional work to determine whether or not a thing is dynamically allocated or not and this was one of the maybe few cases where we were glad that we had used C++ because you can hide all of this in getter and setter functions because we were using Ralloc we didn't have to do anything clever in destructors because we didn't have to check in the destructor oh should I free this or not depending on whether it was actually allocated if it was allocated it'll eventually go away because it's context will eventually go away but we did have to be clever in clone methods to not allocate a copy of something that wasn't already that wasn't itself allocated so where can you store things if you're not always going to dynamically allocate them well one place that kind of made a few people cringe is you can store things in otherwise dead space so if you have a class hierarchy like this where you have some base class that's going to have some odd alignment at the end and then some derived class from that before that void star there's going to be some space because it has to be padded out and you can't normally get at that space but you know it's there and you know how big it is so you can pad it out in your base class and now you have some space now on 64 bit that's 7 bytes of stuff there and if you have a thing you know say in your base class the thing that you're if instead of being a void star if that was a char star and you've got a lot of strings 7 bytes might be enough for most of your strings so then in that derived class you could point that char star at storage and store your string there and not have the I think Ralloc has 44 bytes of overhead for your short string so we had a bit of healthy debate about this in the in Mesa and I think the general consensus for how the rest of the compiler was architected was you so we didn't do this and partially because we came up with a different method that made this largely irrelevant so what we went with is what for lack of a better term I'm going to call static fly weights for some really common data for example pretty much every C program you ever encounter has a variable named probably has one named J and if you've run out of ideas it probably has foo and bar and a bunch of other really common names well GLSL is the same way you can look at all of the GLSL shaders ever and there's a bunch of name strings that come up really really really frequently so we could store all those strings as a static table in inside the driver itself and when you encounter a variable that has one of those names just point at that instead don't allocate anything just point at this static thing so the first step in doing that is figuring out well what names should you actually put in and it would be great if you had some giant corpus of shaders that you could mine for these oh yeah we've got that so again I instrumented the driver at the end of compiling and linking a shader it'll just run through it and dump out print to standard error var name and then the name and then just run it through a real simple pipeline and now I've got a a count of how many times each variable name occurs and actually if you throw another sort-n on the end there it comes out in order and you can see aha here's the top 500 names that every shader uses and it turns out that a bunch of the names are used thousands and thousands and thousands of times across across all the known shaders so if we put those names in the static table then we don't need to use the clever dead space hack because most of the really commonly used names are short anyway so this kind of gets into the territory of time space trade off in a little bit of a bad way because now you've got this table of I think I ended up with a thousand or so names that represented 90% of the names that were used more than once in the in all of shader db and even doing an actual hash lookup on that for every single time you're going to create a variable with some cost and I didn't necessarily want to take that cost which ends up kind of showing itself at the point of after you've done the hash calculation and then looking into the table and doing the stir comps so what I settled on using you pretty much can't get away from having the hash calculation I settled on using a really clever data structure called a bloom filter and this is basically the trivial reject so a bloom filter works you have a very large number of bits and you have some small number of hashes so you take your data you run each of your hashes on it and that's going to give you some number so now you have n numbers and you look in your bit set and if all n of those bits are set and if you properly tuned n and m you have an extremely high probability that the data that you've hashed in that you're now looking up in the bit set is actually in your set that you care about so experimentally there's very formal methods for figuring out based on your hashes and your data set how many bits you should use but I decided that kind of gave me a headache I'm not very much of a formal methods kind of a guy so I experimentally did this using all of the names in ShaderDB and settled on 8192 bits so 1K byte for my bit set I had one explicit hash and then a second implicit hash and running over ShaderDB out of about 6.7 million name lookups there were 161,000 names that were actually in the bit that were in the bloom filter and out of those only 931 were not actually in the set so it was much less than a 1% false positive rate which seems pretty good and the hash the hash calculation was extremely trivial and basically primed the data into the cache so that then you had to do a stir copy anyway to put it into the allocation and so the time taken for doing the hash calculation just kind of disappeared in the noise anyway so there's a couple of patches that are actually still out on the mailing list these kind of got stuck behind the U patch so you can actually see the really really simple implementation of the bloom filter and of the static lookup so the results out of the whole thing for both 32 and 64 bit on the Dota2 trace it started off with about 67 megabytes running on 32 bit and about 106 megabytes on 64 and after was 65 and 92 so on that running that trace which included the textures the vertex models and everything else involved in the trace cut 13% of the whole thing by just reducing the memory usage of the compiler so it was a pretty pretty significant it also made the debug build of Dota2 that compiled all the shaders ever actually runnable on I think we were able to run it reasonably on a 2 gig machine whereas before it was falling over on a 4 gig machine so that was very nice we still have a bunch of problems on the virtualized systems and this is ongoing work there's a bunch of other places where we can still trim some memory usage but these were the results that we had at that point one of the big areas where we have left is the one of our base classes of sort of the whole shebang is a linked list class so everything can be in a linked list even though most things will never actually be in a linked list so we're sort of dragging our feet on doing the transition to have everything be a linked list node and we'll just box the things that actually need to be in a linked list but it's I don't know it's really really unpleasant to have to go through and make all of that change so we're kind of oh look here's something way more interesting and more useful to work on we'll go do that and we'll do this other thing later because yuck the other thing that came out of this that I found really useful is if you don't know about git rebase-i-x you should know about it because it is maybe the best thing about git rebase ever so you can basically in an interactive rebase after each commit gets applied you can have some command run that will do stuff and depending on the output of that command the rebase will either stop there or it will continue on so the common and sort of intended usage is you're doing some giant rebase of you know your 150 patch series and you want to rebuild after each pass to make or after each patch to make sure you haven't broken the build what I used it for is after each of my patches I ran my api trace and with Valgrind scraped the output and this bit of text right here was able to collect the before and after results and generated a big file that was the short log message of the commit and then this data that it just scraped all of that and collected all that up and in doing the giant rebase while I was at lunch or something and then came back and did another rebase and cut and pasted the before and after data actually into the commit messages but then in your commits you have nice here's the data to justify doing this particular change which I think more projects should require people to put before and after justification data in commit messages because it really is exceptionally helpful when someone comes back two years later and looks at some crazy optimization and says why did they do this then you've got some actual concrete justification of it helped this app in this particular way and here's some data okay so it looks like we'll probably actually be able to go off to lunch early I don't think that will make anyone too terribly sad thank you for attending and are there any questions wait for the mic when you started reducing the memory usage did you notice any actual run time throughput improvements due to better cache locality those sorts of things you know I didn't but primarily because I wasn't I wasn't measuring it and certainly when I was running under Valgrind the running the traces took forever because it adds you know heaps and heaps of overhead I don't think that there probably would have been a lot of improvement just because of the nature of the way that our compiler is structured where we have a lot of individual passes that just run over all of everything so once you get to the next optimization pass things that had gotten pulled into the cache early in the previous pass have been blown out of the cache already so we haven't I wouldn't expect to see a lot of benefit for that on non-trivial applications so when you did these optimizations for memory they have any effect on the CPU usage yeah I mean that was what he was asking and other than a small amount of noise that was added in doing the hash lookups I didn't notice anything but like I said I wasn't really considering for that and most of the methods that I was using to measure for changes the instrumentation added enough overhead that the instrumentation was all the time right I mean running as part of the reason why I used a very small trimmed trace of Dota 2 is even that on my fairly recent laptop took about 7 minutes to run just because Valgrind adds so much overhead and that was also why automate collecting of your data so you just start the whole process running and go home and go to bed or something and when you come back it's surely done I think that's it thank you for speaking as a show of gratitude we have a good thank you


Welcome to this module overview related to assets. For starters, I want to show you the FASB definition of an asset. It's the probable future economic benefits obtained or controlled by a particular entity as a result of past transactions or events. That definition sounds very legal, so let's break it out into three parts. Probable future economic benefit means that an item will probably be worth something in the future. If you have an item that is described this way, you probably have an asset. Obtained or controlled by a particular entity means at an accounting principles level that a company owns the item that has value. There are many complex assets, often related to certain type of lease agreements, where a company doesn't own an asset but controls it enough to call it an asset. But that's beyond the scope of this course. As a result of past transactions or events, means that a transaction exists where the acquisition of an asset can be verified. If these three components describe an item, then that item is an asset and needs to be reported on the balance sheet. Balance sheet reporting of assets classifies them into two categories, current assets and long term assets. Current assets are assets that are expected to be converted to cash or used up within one year. Some common examples of current assets are listed on the slide and include cash, accounts receivable, inventory, supplies and other prepaid expenses. Long term assets are assets whose value is expected to last beyond one year. They are often categorized on the balance sheet in the following four categories. Long term investments, plant assets, intangible assets and other long term assets. Let's look at the four assets we're going to cover in this module. Our first asset is cash. The cash account includes currency, coins, checking accounts and undeposited checks received from our customers. Additionally, we will learn about internal controls over cash. We will introduce the accounting for inventory in this course. For merchandise firms, inventory is a current asset which includes items held for resell. Manufacturing firms, which we will learn about in the managerial accounting portion of this course, have several inventory accounts including raw materials, work in process and finished goods. Receivables are the money that a company has the right to receive because it has provided customers with goods or services. There are a few different categories of receivables, but we will focus on accounts receivables and notes receivables. In our course, these receivables are going to be current assets. However, long term notes receivables are quite common in practice. The final asset is plant asset, which includes long term assets such as building and equipment used by a company. Plant assets are sometimes called fixed assets, sometimes called property, plant and equipment, or PPE for short. These terms all mean the same thing. Unlike the current assets, plant assets are depreciated over their useful lives. And we will learn all about how to do that and many other things in this module covering key assets.


Hello and thank you for joining us for C++ for real-time and safety critical systems. I'm Robin Rowe and this is Gabrielle Panterra and we're going to talk to you today about how to make C++ code faster and more reliable. Let me switch over to my screen here. So here's a real-time safety critical system. This is a Tesla autopilot. So this is the kind of thing that we usually think of when we're talking about safety critical real-time systems. But here's a system that is also an autopilot, but this time we have an autonomous robot that is driving a conventional truck. So we never quite know where a software is going to end up. So it's a good idea to use good software design principles in whatever we build. Bugs in uptime. Fewer lines of code equal fewer bugs. Clusters, technical debt, timing errors. At Google, 70% of failures happen when releasing a new version of code. To reach 9-9, no. To reach 9-9. 9-9. Sorry. It's confusing to see it written that way. To reach 9-9, you must bank reliability. 9-9 is one-tenth the time of the blink of an eye. So that's one-tenth of a blink of an eye in a year of downtime. So that's pretty much no downtime at all. And you can see this chart on the right where we talk about the various number of 9s. 9-9 is a lot. Safety critical standards. So there's ISO 9001, which many of us are familiar with. That is how we get a repeatable QA process and make sure that we actually have a quality assurance process. 23360 is the standard for Linux. 13485 is medical software. 178 for aviation software. 26262 for automotive software. ITS-ATC for automotive traffic light software, which I'll talk about some later. And there's also MISRC, which gives some standard best practices for safety critical C systems. But the one that I'm really excited about is ISO 56007 because I'm actually the chairman for that. That is a future standard in idea management that is looking to extend 9001 into the innovation realm. Process types. Agile, waterfall, unstructured. What process do we have? So unstructured is the no-process process. We have no goals. Top-down directives just come out of thin air. Deadlines and milestones make no sense. We don't learn anything from past mistakes. We try to catch up. There's a lot of personal baggage and team stress and people freaking out. There's expectations of project failure voiced in our meetings. The managers are consumed. The team doesn't actually know what the managers are doing because they're off trying to fix something else. The budget is out of control with both binge spending and illogical cost cutting. Waterfall process indicators. Top-down requirement analysis, preliminary design review. Lots of reviews. Lots of reviews. Yes. Critical design reviews, too. Charge numbers, which is bug tracking, Microsoft project, daily team meetings to discuss what happened yesterday. Managers spend much of their time absent for planning meetings. Good plans that demand sticking to the plan no matter what, and Big Bang finished deliverable deadlines tend to slip. So charge numbers aren't exactly bug tracking. It's more a matter of that you get charged for fixing bugs. So here is Robert Overcracker. He had a great waterfall plan. He's literally jumping over the waterfall at Niagara Falls. Great plan, except his parachute wasn't tested to operate when wet. So this turned out very tragically because he didn't have a complete waterfall plan. And this is why people like Agile that plans can change. Agile. Manifest for Agile software development. As you can see on the right, there's all sorts of stuff going on. A lot of interaction, working software over comprehensive documents, customer collaboration instead of just what's in the contract, and responding to change over following a plan. So that means you're able to move and go. Agile process indicators, user stories, sprints and retrospectives, released early and often. That's key. Yep. Pair programming, Kanban boards, meetings are forward-looking or retrospectives, cloud-based project management, JIRA, and Git. And many other tools as well, but those are the two that are most popular. So why do we like C++? Well, I like it because I've taught it to universities and used it for 20 years. But that's not the reason everyone else likes it. The reason that most people like it is that typically it's going to be 10 times faster than other tools. Also there are 20 million C++ programmers out there, so it's possible to staff a team. And we really like that it's subject-oriented, has constructors, destructors, encapsulation, all that good stuff. Then for reliability, it also has an extensive set of tools, which is very important in doing safety-critical and real-time systems. And also, C++ is the software if you're in wish and picture visual effects, as I am, VR as I am, or autonomous vehicles. C++ is everywhere, it's in... Everything. Oh. Windows. Windows, Mac OS, Linux, iOS, Android, embedded systems, IoT, cloud, aerospace, AI, and of course, in databases. Smooth task, Gabriel. Sorry, it wasn't paying attention, I was a little off in the lala then. Object-oriented design. The most important single aspect of software development is to be clear about what you're trying to build from Bjarne's true strip. Software that snaps together like Legos, nouns or classes, verbs or functions. Encapsulation hides data from code that shouldn't change. C++ is, pardon me, is as easy as Pi. Inheritance, encapsulation. Elegant design simplicity is what's left after removing complexity. Yes. And the reason that C++ is so complex is to remove complexity, not to add it, which some people do. So, embedded system design. We want to think small and fast, we don't have a lot of hardware here. We want to avoid the heap because we may not have much heap and we don't know how long the heap will take because any time that we go out for memory on the heap, we're doing a global lock, we're pretty much stopping the world while we wait for that memory to be allocated. We want to avoid termination because there may be no place to terminate, too. There's maybe no operating system. And so, therefore, we don't like exceptions. If rebooting is feasible, we'll use a Highlander. That is an automatic restart to reload our program. Now, we want to avoid implicit initialization of static objects before main. The reason for that being that we don't know in which order they will initialize because that's undefined by the programming language. So we want to do our bring up explicitly in main where we initialize all of our objects that we're going to have in memory. And I'll bring all of our files online, bring our devices up, all the stuff that we need to bring up. We want to avoid C++ optimizations, so we're going to profile and test, not just as soon as we know where the code is slow. And we're going to avoid risky coding practices like using a lot of CAS and other things like that. And we're going to use C++ type safety and encapsulation and be constant correct. That is, use, mark memory as being read only wherever we can. Safety critical C++ concepts, encapsulation, memory management, thread management, hard and soft real time, static analysis. Single code base on Linux, Windows, Mac, embedded, pardon me, embedded, audit, simulation, playback, SQA, unit and regression. Yeah, so that's software quality assurance and, you know, audit, simulation, playback, SQA, unit, regression. We're just doing everything we possibly can to test this software. We're not assuming because it ran once that we're done. And in safety critical systems, we may actually spend more time and test than we did in the software development. C++ type safety. Locked out in compatible code. Typical type errors will be found at compile time. A major way of static checking, we can still cast when we must size a pointer, unknowable. You get the last one. And that's used in pointer type. Don't cast to an integer, assuming that an integer and a pointer have the same size. The reason that our size of pointer is unknowable is because of platform differences. We may know what the size of a pointer is on our development system, but it might be a different size on our actual target cross-compiled system. So we just assume that we don't know the size of pointer and make sure that we use types that are compatible. C++ encapsulation. Watertight compartments, classes and objects, private, protected and public. Encapsulation is a form of data hiding. Encapsulation can ensure consistency of state. Don't use inheritance where you meet encapsulation. Const is also a form of encapsulation. Yeah, so we've got a picture of the Titanic here. And this is an example of where compartments certainly help, but they're not foolproof. So yeah, there's a lot of things that we can do, but compartments will keep you afloat a lot longer than not having compartments. C++ memory management. So that can be the stack, it can be static or the heap. The stack memory is automatic. That's what just appears magically when you create a variable inside a function. Stack memory is allocated when the program loads and exists throughout the time that the program is there. And the heap is variable size memory that can vary in time and space, but the heap is prone to problems, including that we don't know how long allocating a piece of memory on the heap may take, and that can be a real problem in a real-time system. So if we are using the heap, we don't want to call a naked new call. We want to use unique pointer from C++, from more recent C++, because it leaves no garbage to collect. But that pointer is encapsulating new so that when the unique pointer goes away, it automatically self-distracts. And then there's shared pointer. This is really more for legacy code. This is a usage count pointer so that you can go back and have a pointer destroy itself at the appropriate time magically, but it's not as efficient as unique pointers. So we use unique pointer in new code. C++ concurrence. Pardon me. C++ concurrency. Concurrency. Yeah. Concurrency. We're talking at the same time. This is concurrency. Yes, I know. Message queuing, threads, joiner, detached, mute hex, locks, condition variables, lock free, double buffering, and volatile. So in C code, we would use volatile to use some sort of integer that works across different threads. But in C++, we have atomic. And the reason for this is that with multiple cores and that sort of thing, we can't be quite sure that volatile does what we think it does across all those cores. And they're really getting the one and only volatile. Whereas atomic will make sure that that variable is actually synced across all the cores without locking it. So with threads, join and detach. With join, that means we're going to wait until the thread finishes before we do something. In general, that's what we don't want because that's not concurrent. So we're going to launch a thread and detach it and keep going. And that's when things get complicated and we need all these fancy lock systems. Now it is possible in many circumstances, well, maybe not many, in a few circumstances, to have lock free code where it has no locks at all. But just by the cleverness of how we've coded it, it can't collide. That's not very common that people do that, but it's lovely if we can. So be on the lookout for that. And then there's double buffering. With this system, we might have an off-screen buffer that we paint all of our screen changes to so that we don't see the screen update. We just flip the buffers so that a fully-painted screen appears and we don't see components on the screen being drawn one by one, which would be visually annoying. Pointers. Oh, OK. Avoid garbage by using unique pointers. Yeah, we mentioned that. Keep going. Avoid wild pointers. Yeah, so point to null pointer in the constructor. Zero is still a valid thing to point to, but we have null pointer now, which is really just zero, but it's a little clearer what the code is doing, that we mean for this to be a pointer that we never call or that we'll at least check that it's not zero before we call it. Avoid dangling pointers. Yeah, so we're going to point back to null pointer after we release the thing. We only need to do this if we're literally calling delete, which we very decided we're not going to do because we're calling unique pointer. So this should not be necessary, but sometimes it is because we've got legacy code. So delete those dangling pointers because in many cases, that will be where you discover memory errors. Hide pointers. Yeah. By making them private. Make them private. So don't show your pointers to everybody, just only your closest friends. Or a pointer could never be null. Use references instead. And then we want to avoid unintended modifications by using const. That's the same as read only for people that prefer English, but it's not called that. It's called const. It's in a debugger. All code you write that does pointer math.  And so I'm really glad that I've traced it through the debugger and said, oh, yeah, what about that? So trace all that pointer math and the debugger and any other code that we're highly suspicious of. You know, in theory, we have unit tests and we'll also catch this stuff, but that's not the same as a human brain just looking at the thing and saying, does this really do what I intended? C++ casting. We don't want any, but sometimes. So this is really more of a thing for legacy code. We try not to cast a new code. Here's a C-style cast. It's just, you know, int and parentheses. But constructor style casts are also legal and sometimes easier to write where you put the type on the outside. Then there's a const cast, a static cast, reinterpret cast. The one here that's really interesting is dynamic cast because where we need to do upcasts, which we really shouldn't do, but sometimes we've got to. This will tell us if we're upcasting to something that actually exists or we're out of our minds and casting off into memory that doesn't actually go where we think it belongs. So if we've got a base class and we need to upcast it to the derived class and we're not sure that that pointer is actually the derived class, this will keep us from catastrophe. And then when it comes to doing integer casts, we may want to declare but not define some function templates because that will make the compiler complain that it's not going to automatically implicitly not that we want that do those casts for us when we really shouldn't. C++ exceptions, don't. Signal, in a type safe way, return false. Used to add simplistic error handling to legacy code. C++ exceptions are termination based. If a second throw happens before the first throw is caught, not good. If we don't like new because it can be slow and terminate unexpectedly, we don't like throw for the same reason. So in real time and safety critical embedded systems, we just stay away from exceptions. Exceptions are much better for batch process types of things where if things go bad, we want to terminate the program. But in this realm, we pretty much never want to terminate a server or an embedded system. So we don't want to take the chance that we do a throw somewhere and before we can catch it, something else goes wrong and throws again and terminates our program to nowhere. Testing methods, tracing unit stress, regression monkey, screen scraping, keyboard mouse macros and catch library. I should also mention C test here, which comes with C make is also very nice for doing the unit test. So C++ traps. Infinite loop. Recursion. Casts. Wild pointers. Segfault. Division by zero. Floating point exception. We're fatal cashmats, but we won't get into that. Initialization before main. We already said don't do that. Complexity and obfuscation. Obfuscation. This is also a speech thing to learn new words. Cohesion. Spaghetti. Okay. Say it three times fast. No. Okay, so I want to do this one. She wants to do this. Agile safety critical mindset. How could you not select a guy who wears a woman's hair band for sunglasses, but seriously, Jordy saves the enterprise from certain doom and countless episodes. Sherry so did Scotty, but Jordy did not whine about it like that. I'm not going to do that. I'm not going to do that. Captain. I'm giving her all she's got. She can't take much more. Now. Jody's got her. All done. Whoops. Jody's got. As ridiculous as that visor journey sport of luck. It enabled him to see things that other crew members couldn't. The bar burden. Yeah. So. Yeah. If you, if you come from a realm of termination is okay. You can come here on out so that you can see things in a new way. And actually if you do watch it, if you notice in our photo, they did have a lot of scrum sessions. Yeah. Yeah. They're scrubbing here. In the 23rd century, they're, they're charmingly retro. They're still, they're still doing a scrum. Yeah. So here's some real life, C plus plus examples. Literally everything depends on C plus plus. Real time systems, safety critical systems, embedded systems, national critical infrastructure all of that stuff. Here's some systems he's touched. So at GoPro I worked on defining their IOT API so that we can connect all the cameras in the world together. Robbie V. Lager this is a Mattel animation series that I worked on the I designed the animation motion capture software that animates us in real time. So this is done with actors on a sound stage and comes out as a cartoon on the monitors. Right they're in the suit and they can see it right there with the amazdic. So we're in the white suit which is so flattering and it comes out as a cartoon. Whoops I think I went past one there. So here you can see some some dudes in the suit. They're in this fake Jeep in the in the studio and this is being used to do a game trailer. So these actors are actually inserted physically into the game. They're actually playing Call of Duty in the physical world here. Then here's the genie set top box. I got to work on the security and satellite channel expansion for that. Here's a casino gaming system. This is a very high-speed real-time server with online gaming everything is about how many simultaneous players you can support. So server efficiency is very important and then this is national critical infrastructure and a real-time system. This is the traffic control system for the country so that when you cross the street the light going the other way is not wrong and you get run over. So the way that this system functions this is a Linux system. If you see those silver boxes next to the traffic light that's where the system lives and there is a single board Linux computer in there that is running the traffic light and there's a second processor in there that's independent of that that is pinging that computer every one tenth of a second and if the computer if the Linux computer responds saying that I haven't processed all the commands on my command stack in this time slice then the traffic light will go into flash and it requires a truck roll that is it requires technicians to get into a vehicle and drive out to the light and reset it because we don't want that light to reset automatically if there's something wrong with it. So every time of a second it's asking the Linux process is everything okay with you and if it says no or if it doesn't respond at all that other processor the watchdog timer will take over and turn the light to be read in all directions. This is the USS Lincoln I got to to sailing this for a system I built for national security and that's it I'm Robin Rowe and I'm Gabrielle Pantero and we are ready to take your amazing questions here we go.


So, I made a post on my social media, a bit of a spur of the moment, and then I regret it. I'm sure others here can relate. It was my post about how I, I send birthday voicemail greetings, and I, and I feel so self-conscious and obligatory and forced and artificial, because I have such a high bar for authenticity that, you know, it's like birthday greetings. Anyway, you can, you can read, I'll put a link to that post. I regretted it afterwards because, but I regretted it after I, it's like I did spur the moment post. And then like an hour later, I'm like, Oh, I could have worded that better, but it already had several comments thoughtful comments so I didn't want to delete it. And I think editing it would also be I could edit it, but it could also, there was some. It's like the post itself. Part of the point of the post it's that it's okay to be cringe worthy. It's okay to be awkward online, even publicly to the entire world that was, that's part of what I'm trying to model for the world.  So, so, but yes, I probably did lose a couple friends from that post because they're like, George now I know that voice.  It's a whole other thing, but the point is social media vulnerability and hangover. How many of us feel that we post something spur the moment later we're like oh we regret it. We might want to take it down or or edited or something. And so the question becomes. What do I do I don't usually do spur the moment social media posts. So maybe that's, that's what's helpful. 99% of my posts are not spur the moment. I have a process, even though I spend only half an hour per chunk. Okay 15 and 30 minutes per chunk writing something. Now the only spur the moment is is Facebook lives, but even so I've already written a blog post which took several chunks of time. So by that point I've already thought about it enough. But but in terms of writing. Okay, what I do is I spend half an hour drafting a post. Okay. And then a week later, I spend another half hour editing the post. And a few days later, I spend just 510 minutes editing the post before I publish it, which takes another 20 minutes. That's that's another half hour chunk right it's like half hour of quick editing and then posting it everywhere.  So it's not it's never spur the moment. I guess 99% of my posts. The only spur the moment things I post these days are like personal things like like the half the birthday thing I did that was cringe worthy. But it looked like I didn't care but I do care just I'm really self conscious leaving voicemails that's the thing and what I learned from that thread was, no I do care. But as I was as I wouldn't leave the voicemail. It's just I need to understand that being vulnerable and saying happy birthday I love you, or I don't think I love you that's a big word. Happy birthday I appreciate this or that about you is supposed to be vulnerable, you know it's supposed to be awkward. It's not supposed to be but it's okay that it is I'm terrible at writing cards. It's like awkward writing cards and so anyway, so. So, I encourage you to, to think about what your segmentation is so that you don't have to feel regretful of your social media posts. If you feel inspired in the moment do you know it's like, okay George I feel inspired right now to write something it's not during my writing time it's okay you can do that you could set a five 15 minute timer. To put down your inspired writing, just don't post it yet. Now, another trick though, you said George or something magical about posting something that gives me a rush that is satisfying to do it in the moment. So here's the trick that do it in a small private Facebook group. You might literally form a private Facebook group with a few friends to say this is our spur the moment inspirations that we can we can't at any time in the future, and only the five of us the three of us can see these posts. And you can do you could do all kinds of spur the moment stuff in that group, or do Facebook lives in that group to experiment, knowing that a day later a week later you can edit that before you post it publicly so I hope this helps for, for that kind of experience. If you do, if you do, like me, have that experience of spur the moment post, but then it's kind of too late to take it back because enough people have seen it, or enough comments are there. Just know, last 24 hours has been that experience for me. Okay, because I just did that cringe worthy post that made me look bad. I'm still here. You know, I slept on it. And yes, I still regret that post I do. It's one of my life's little regrets, but just know that even though it's cringe worthy or not perfect, your true fans. The ones who are meant for you will still find value in it. And I trust. And that's what you can trust to that. And the more you go into the future the more you saw that it was just like a, like an example of bookmark in the journey of your growth. And I'm actually quite glad as I look back some of the cringe worthy stuff I did even years ago I'm like, I'm glad I can point back to that and go look, look what I was thinking back then or how I was expressing myself back then. Which I'm sure I will cringe at this tomorrow and point point back at this three years ago I'm glad I made that video. While I while I while I had that moment. Now, there is something to be said about the leading or editing if it is something you have. You know, you're, you're, if you if there's a fear of being canceled. Okay, something in the future like if it's something political, particularly, or potentially offensive tool tool to a group of people, or somebody. You know, those I think it's okay to take those down or edit those. Editing the problem with editing is that somebody, the history, especially on the Facebook post. Did you know the history is all still there people can still look at the history of the edits. Did you know that. Yeah. So, tweets, you can't Twitter you can't edit obviously Facebook you shouldn't edit because you, the history is all there, or not you shouldn't you can edit it for grammatical stuff but not for like major ideas taken out or, you know, names taken out or whatever that's that's all still there. Obviously Instagram you can't edit the other the only thing you can really edit is your own blog your own website blog and like medium calm and LinkedIn. You can't edit YouTube, obviously. So, but even with your own website, or something that's been published online there's still a history of it. That's been captured by some website out there send the archive.org for example captures history of all web pages, as much as they can in real time. So, it's better just to take it down, or if it's like I said if it's genuinely something you have changed your political position on or something. You can't recant with that kind of post to say I changed my position on I've learned better, you know, but generally, generally the stuff we we're embarrassed by is more like stuff that we weren't as graceful and saying, and I don't think those should be taken down. You just let it be, and then know that it's just something you can point back at it. Look, I've grown. Okay, so hope this helps.


I'm Emmy One, Tyler Morrison, Maritime Enforcement Specialist, coming down here to trade winds to work with their law enforcement boarding teams in conjunction with their coxsons to build upon their maritime response. Today we are doing transferring boarding team from Juan Vesto to Arara. What you guys should be is be matching each other and then as soon as you hear that two and pinch turn in, get that suction on that boat so you can put over your boarding team. It would be for a vessel that's not compliant at the beginning or maybe they're unaware that you're trying to get them to stop and they use a two-boat technique to pinch together and get the boarding team over simultaneously from both. It's learning for me, I learned a lot of different stuff from the US Coast Guard and the Guyanese Coast Guard, how they operate. So everyone has different style of doing their work based on what they're doing in a country so we're trying to adapt whatever we learn and try to take it back home. I'm absolutely honored to represent my unit in the United States Coast Guard and the United States itself at Trade Winds 2021. I know that last year's event got canceled due to COVID, but I'm glad they were able to make this safe for everyone to come and do this event this year.