Hello. Hi. For us, we're having a very good time in studio. I hope you are having a fantastic morning as well. If you are just joining us, if you just click, click remote and just land it on our channel, this is the best place to be. Why? Because we are late. Yes. This is called Why in the Morning, only on channel Y2549. Ah, yeah. Actually, in the beginning, I even forgot to tell you my name. My name is Valentine or at Colour Me Round everything. I am with, okay, right now I'm not with her, but I'm with this Mutete, that is, underscore Mutete on everything. But right now we are about to start a conversation that I think you can contribute. And it's just a lockdown. N'askia wanome mahali, kidoga wa form union o wagome. Because how? N'kama n'engia ko, n'kama koku at 8 p.m. How? But it's going to be all right. So, come join in the conversation and, you know, maybe give us a penny for your thoughts. Hashtag is Why in the Morning, lakin it saseni customers. What's wrong? What's wrong with you? Didi, didi, are you okay? I'm fine. I'm fine. I'm fine. Thank you. Gau, sorry. It's a cartoon, I mean N'gia, so far now. No. How are you, sir? I'm fine. Thank you. Uh-huh. Yeah. How are you doing? I'm doing great about you. I'm fine. Thank you. I'm doing my time. It's a long time. Yes, where have you been? What have you been up to? I've been handcrafted and caffeine, whatever, but now I'm back. Oh, yeah? Hi. Hi, I'm Hancaf. I'm German, I'm a German stoer, I'm a skway. I'm a skway skway, I'm a skway. I'm a skway skway, I'm a skway. I'm a skway skway, I'm a skway skway. Okay. N'gia, I'm a skway skway, I'm a skway skway. Hi, mommy. Hi. I'm a skway skway. I'm a skway skway. I'm a skway skway. Hello, my lovely baby. Ah-uh. How are you, baby? Please introduce yourself. My name is Joanne Cattini. I'm a friend to Val. Yes, close and personal friends. Clothes. Yeah, thank you.  Tonight, entrapment Nya, have you ever been tricked Oh, Njibaba, come and talk to us Tell me, have you ever been tricked? As men, we cannot be tricked first At what? We cannot Are you easy? How? Even a man's woman, if she's being tricked Such as me How does that happen? How does that happen? You can see things from far You can sense But there are tricks That I can use in which way Because if I want you, I'll do something To get you And I start with the small things That will keep you thinking about me You know, you women First of all, come and say hello to me And I'll say hello to you And I'll say hello to you And I'll say hello to you And I'll say hello to you But when I come, you're the one who has Invited me to come visit you I didn't tell you to come and wash my tenses Or wash my house I told you to go to the beach I'm not going to go to the beach I'm not going to watch a movie 759 Because it's already 8 I'm not going to watch a movie 759 So, probably you were saying That you are being trapped I don't know if I'm going to be trapped It's very easy to do that But a lady, if she doesn't know That she's being trapped, I don't know It's very hard I don't know if I'm going to escape Just call it Repeat that and then explain I'm going to say I don't know if I'm going to be trapped It's very easy She knows how to maneuver But when it comes to a lady It's very hard that she's going to be trapped It's very hard that she's going to be trapped Okay, I feel You know you trap us by giving us lies at times Because when you come to me and tell me You're a doctor And you don't want to be a shopkeeper You know, that is a trap already I tell you I can see vision in you Because you're a doctor Maybe after something It was all a lie The first week The first week I was trapped I was trapped I was trapped So sometimes You get lied A man, it is easy for a man to lie To a lady If you have an idea That you're going to be trapped You're going to be trapped But you're going to be trapped I have a story I don't know if he knew that it was the topic I took it to Mongia But one of my relatives called me I told him I'm inviting you But I'm inviting the best So that means for example My father invited me to join But he invited me to join COVID-19 restrictions Standing, okay? Thanks, don't shoot us It's a hypothetical story So in this story Clear throat He invited me to join But I didn't know what to do So he invited me to join But I didn't know what to do I came with a change of clothes So he invited me He invited me to join He invited me to join And he invited me to join But he invited me to join That is not economical I'm not sure By the time I think two months I'm not sure I'm not sure But he invited me to join But he invited me to join But I didn't know what to do I'm not sure I'm not sure I'm not sure I'm not sure Slowly He invited me to join But he invited me to join But I didn't know what to do He invited me to join But I didn't know what to do First, what I'm trying to tell you is you can be tricked You can't be at least be tricked I cannot Why are you so confident? Because I know myself and I know how they react and how they know things Some people don't understand Some people don't know They don't even know what they're using They just brush their teeth They don't know what they're doing They don't know what they're doing It's a good time for me to go to the bathroom By the time I go to the bathroom, it's half If you don't know what you're doing, you can go to the bathroom and brush your teeth Tell me how guys can trick girls Because women are very easy How girls can trick? How are you okay? No question I used to shoot people Then I had a photographer I saw him for that He was a photographer He was 50 years old You were taking more than pictures, weren't you? So, the moment I saw the photographer He was down to the same level He was looking at me He had a word of mouth He was convinced I was on the top I was on the top There was a story I told you But the moment I saw That I was a photographer I had to move on That's what is happening outside That is what is happening outside We shouldn't be even hiding it This is what is going around For us ladies We should Consider and think about ourselves Know our weaknesses Because I have this story This girl There is this girl Who was on the How can I say it I told her I was in a place with her cousin And an Uber driver came alone And he was like Can I give you a ride? And this girl was like No, we are okay But this one was like No, let's take a girl And this guy Actually, he was A stable guy So he was told by his friend If you want to know Between these girls Who is true to you Pretend to be something else You know, so Now watchman When the lady came to say hi to the guy Now the guy is the watchman And the watchman now Pretended to be like He was from Maju And he is the son of Sasa So the girl was like How can you and me When you watchman Then it all ended up like The girl went to the And this other one was like He was like In Ampeado So he was the watchman Because he was already engaged So the day to go to To see the parents of the girl The girl was Because their cousins and they live at the same house Things changed So the guy came as As the boss now and the watchman As the watchman The watchman as the boss Boss as the watchman So now you see and the girl The girl was already pregnant for the For the boss, but the boss was already a watchman Now the watchman has a wife And a sister Now you can see how girls do not show up to you Just ask me What do you mean by COVID-19 What do you mean What do you mean Adri Imagine How could you change to Bure What is happening Adri I am being educated here Would you like to educate me some more I try to find facebook I try to find out the types of people I am not a girl So tell me more I am a girl When I go to entrapment It is usually a girl's thing So you have to walk Walk around Walk around Walk around Go That's what I thought I was going on Sometimes when I go to entrapment This thing Of trapping people When I go to entrapment I have to walk Such that When I go to entrapment I have to walk I have to walk So you guys are not true Not When I go to entrapment No no I am saying The question was We are not attacking you We are not attacking relax I am just asking Why are you engaging in Such things Such things On my behalf I don't engage in such things If I don't love someone But now to other men I don't like them But they are men Some people are normal I don't know why they are not commenting The hashtag is why You are trying to figure it out I am waiting for Our way Our way So that means it is possible for you Some are too men I talk to men What do you think is happening Let me rephrase this There is no song There are lyrics There are lyrics There are lyrics What really is going on Here There is a lot of peer pressure By the way Yes When I go to entrapment When I go to entrapment When I go to entrapment The next thing Is in So I don't know I don't know I know of ladies I cannot mention their names I cannot mention where they come from But the things they do They motivate They motivate What do they do? Motivate us Tell us Tell us What do they do? Wow That is the story When I go to entrapment We used to go to gym But now the phone calls they are making They are calling me As a boy child I am happy I am happy I don't miss school The pressure When I go to entrapment I miss school I don't visit I don't know I don't know I don't know You can see I don't know The story But when it comes to I don't know How are you? I am okay I am okay That is what I am saying Ladies I am happy For you I am happy I am happy When a guy is cute I can flow with this guy When I go to street I want a look That look of you guys together Because you see You are looking People on the society appreciate It is like seeing a statue You know, one of the mistakes is that you have to drive, so you're like, ah, I don't know what you're doing. My head is about to start eating. It's about to start eating. Okay, all right. Hashtag is when morning. We're about to read your comments in a little bit. So please, when they are posted on Facebook, watch them on Twitter. Hashtag is when morning. Or you can send a selfie video and tell us what you think on that topic. And we're asking him to stay with someone. Have you ever been tricked? No. But I learned from friends. I learned from friends. Tell me what happened to your friend. Okay, my friend was, we were all in campus and she met this guy. He was cute. Alejandro. Alejandro.  She was like, hey, I'm going to rate them. She was cute. She was like, I'm going to rate them. She was cute. But anyway. I was like, wow. But at that time, now the girl, the guy was so stable. Do you know, it can be a point, even if they were like, they're like, I'm going to rate them. I can tell my mom this. I'm dating this person. The guy, he was so stable. So cute. When I went to school, he was like, wow. Wow. Girls. He was like, girls too. It can be a point, even if you're a diplomat. Imagine. You know, man, my guy, we're going to Jenga. And you there, you're second year. You're going to be alive. You're going to be alive. I promise. You're going to be dead. You're going to be dead. You're going to be dead. You're going to be fresh. You're going to be fresh. You're going to be fresh. I'm not going to be fresh. But now they're going to be able to vote. And now, Sorry, question. You're going to vote. What's the title of the song? Boy. Okay. But they'll be able to contribute. They'll be like, oh, babe. Okay. Because they're going to trust you. Like, you know, babe, because you'll be the man. Let's do this. Wow. Because he got the looks. He's spinning, you know.  Okay, I understand Some people say it's because of the fair Some say it's because of the 250k What's the problem? Where is the missing gate? Connection I am happy to have a fair all through I don't know if it's because of the 50k I can save myself, I can save myself I can save myself I can save myself You said you are helping me You said you are helping me to be a fair What is the hashtag in your money? Are you typing things? Are you typing things? Are you typing things? I am being educated on Nairobi, life and ways How do you imagine it? Imagine You have so many plots You have the best plans of it.  But today, I already asked him to struggle like I asked 50K because I know he has a future with this guy. Nioh 50 maybe he has a whole lot for her because she has a job. Maybe he has a loan to ask her to pay. Maybe he has a loan to ask her to pay. What? I told you he has a loan to ask her to pay. But he has a loan to ask her to pay. Do you have a loan of 50K? No, I don't have a loan to ask her to pay. Marry Nioh? No, I don't have a loan to ask her to pay. See, I'm dating Val. For example. Then, if she has a loan to ask her to pay, I'll let her stay in the chamber. That is possible. But I would not be depressed about it. We may not these days come to Nairobi. I would not be depressed about it. I would not be depressed about it. But I would not be depressed about it. I would not be depressed. I would not be depressed about it. I would not be depressed about it. It's up to you whether you are depressed or not. If you were depressed or must be pay for it, I would not be able to pay back. But you know what I want to know, right? So what I am understanding, that you would not be depressed in a lot of times. Yeah? Yeah. I am not like you who would not be depressed about it, Don't worry. And you will enjoy it. For her, if you are depressed, she would have a look for you and not be stable. And she would not be like you. She would not be feeling better. You know, you have to take time and learn We will see how it goes But you must carry on I have no idea how it goes I don't know how it goes I don't know how it goes I don't know how it goes I don't know how it goes Actually, I'm referring to men, I'm not the one Okay I have no idea how it goes I don't know how it goes You can keep the line You can keep the line You can see how it goes Ah, alright If you are the one with talent Who can stand up and make it I think you can say it I'm not the one who is competing Let's just tell that I'm not the one who is competing I'm the one who is inspiring I am the one who is inspiring I'm the one who is inspiring I am the one who is inspiring You can do anything You can do anything You know, if you go to the market, you'll say, it is not fair. No, it's quen. Because if you had the chance, if you were in a place of authority, I would say, if you were to go to the market, you'd be done. Just tell the truth. Obviously, if you go to the market, you'll be done. It's your nonness, so it's just biology. Don't be upset. But if you're empowered in BoilTels, I'm not aware of it. I really think BoilTels should be empowered. So if you're going to the market, you'll say, I'm actually going to the market and I'll be done. So the thing is that if you're going to another thing that's not in the discussion, but we can mention it, especially in the case of Nairobi, if you're going to be on the market, you'll be done. So if you're going to Nairobi, you'll be done. Don't count me. Okay. If you're going to Nairobi, you'll say, you're going to Nairobi, because I was carried by money, too. We have a client who comes here to ask for money. He doesn't have a car. Wow! He doesn't have a car. So, he comes here to ask for money. I ask him. What kind of money? How much? A thousand. He asks for $30. He asks for money. If he wants to get married with someone who has sold them, he'll say my kind of dating a girl who does not drive. Come and buy me a baby, a BMW, a Ferrari. No. So how do we get out of a trap, guys? Let's say at that time, okay, this scenario here, Twan said, give me two stories. Twan said, the latter one. So, let's say I'm at 1250K, and Sharpened a homestay, and I'm at 1250K, and I'm at 1250K, and I'm at 1250K, and I'm at 1250K, and Sharpened a homestay, and the title deed, guys, focus, the title deed went away, okay? So assuming, say, I'm at 1250K, and I'm at 1250K, so how to get yourself out of this trap? I don't know, maybe. So say, hey, best friend situation. That is not a friend. Leave alone best. That is not a friend. But you see, let me say it now. So assuming, say, I'm at 1250K, but I'm at 1250K, how do you get yourself out of that trap? Do you know what? I'm at 1250K. You're the best. I'm at 1250K. You're the best. I'm at 1250K. You're the best. I'm at 1250K. It's very funny. I'm not sure if I'm at 1250K, but I'm at 1250K. I'm at 1250K. So I'm at 1250K. You know, I'm at 1250K. I'm at 1250K. You're at 1250K. I'm at 1250K. You're at 1250K. She was like, I'm at 1250K. She's there. But I'm at 1250K. Valothron, I'm feeling some sort of pain in my chest. She's at 1250K. So I'm at 1250K. I'm at 1250K. I'm at 1250K. He's hot in Nein He's hot in Nein. I'm at 1250K. Keep Warming up almost everyday. I'm at 1250K. I'm where the people behind are. In the shops or wherever. I'm at 1320K. I'm at 1250K. How did you get yourself out of that trap? Okay, all right, let's find another scenario of entrapment. It was someone who said, hey, I'm going to do that, that whole scenario, student doctorate history, watchman's history, boss's history, and so on. Now, I'm going to go to the top of this high class and I'm going to go to the reverse. I'm going to do that. I'm going to do that. What? Wow. Okay. So, the thing is, he's already in the ball. So, my daughter is going to say he's the father. I'm going to go to the top of this high class and I'm going to go to the reverse. What will happen? First of all, I want to give a very big shout out to Savitia Jaby. Thank you for watching the show.  So, Savitia Jaby, good morning. Yes, at 12-24 Facebook, at 12-24 Channel Twitter, hashtag is what in the money we're talking about. Situations that people have been trapped in and how to possibly get out. But if you get out, you have to find a solution and you can go back to your home base story. How would you advise the person if they were your friends? How would you advise the person if they were your friends? In an imaginary world, where he pays possible that one of them is going to be a friend of his. How would you advise him? So, I'm going to tell you a few things. One of them is trapped is in... one of them is going to be a friend of his. You're going to be a friend of his. In fact, he's going to be a friend of yours. So, one of them is going to be a friend of his.  So, the problem is she wants and she wants. She's a baby. She's a baby. She's a baby. She's a baby. She's a baby. She's a baby. She's a baby. She wins. She does give you options. You must learn to grasshopper. She's a baby. I'm going to talk to her. You let her agree that anize and endow on her way. But you're going to take care of that child.  The two of you remain together. How about that? Because it is not good to hurt someone It's very hard for me to understand what is going on, what is going on? It's very hard for me to understand what is going on, what is going on, what is going on? It's very hard for me to understand what is going on, what is going on, what is going on, what is going on? It's very hard for me to understand what is going on, what is going on, what is going on? It's very hard for me to understand what is going on, what is going on, what is going on. It's very hard for me to understand what is going on, what is going on. It's very hard for me to understand what is going on, what is going on. It's very hard for me to understand what is going on, what is going on. It's very hard for me to understand what is going on, what is going on. It's very hard for me to understand what is going on. It's very hard for me to understand what is going on, what is going on. It's very hard for me to understand what is going on, what is going on. It's very hard for me to understand what is going on, what is going on. It's very hard for me to understand what is going on, what is going on. I have to think of this person. Let's assume Jeff a many approach. I have to give myself time. This Jeff has surprised me in a way or has come in a different way which I did not expect. So at least get to know the assumptions, the tendencies and at least if you can support something then congratulate yourself because you will know how to overcome that thing. My dad owns a company. My dad is just a local guy and your dad is a lawyer.   We are not shoveling home. Just make yourself comfortable this season. So that's what I was saying. Okay, Baba would you like to educate the boy child to empower him to learn? First of all, the girl child can go too. The time when you end up with a career, you are giving yourself some time. I think it's also good to involve Mungo. At least I can be this right person. Sometimes in my Banga story we are praying but it helps. I like that. So if you want to know who you see here, you know how much. If you want to know who you see here, you know how much. To the boy child must be... Gungo Kuta. You have both sex, the girls. If you want to empower him, you need to know who your boy child is. I just want to get to know him. No, no, let's empower everybody. It's not too late. Okay, one more thing. To our side. You should take time. You choose what you want to be. If you want to know who you are and what you want to be. If you want to know who you are, you need to know who you are. The moment you get married. I've talked with people who got married earlier. And I told them, Okay, I don't want to get married. So by that time, before we take time, we need to know who you are. We need to know who you are. We need to know who you are. I told them, I told them, I don't want to get married. I don't want to get married. But I want to get married. It is happening, especially in Kenya. I don't want to count it. You don't want to get a big lockdown. I don't want to get a big lockdown. I don't want to get a big lockdown. Alright, so I would like to read a couple of things from the people on the ground. That is a word for it on Facebook. We have one amazing Tesla case. He says, Hey Val, hi. I've been tricked. I'm in a relationship. Allah! Really, what a happy ending. Go for it, Shara. Go for it. When Fred met us this morning too, watching from Kittwee County. Hmm, Mutualizor. Kisi Boys. This morning I'm watching from Kisi, Boruma. I see you. He said, I've been told I'm in Kielamar Daa. One-time tricked by jeans in Kanaero, Kanaero is in capital letters. He said I've bought him franc. And finally, finally, finally, finally! Finally you have toaxisp. I kept in touch. I'm very proud of you. Thank you. you for saying that. Yes, I asked him if he had bought her franc orubine while others were also at audits. I don't know why I said that. I was like, Allah, anyway. I was so confused. I was like, Hi, how are you? Watching from Kitale Bomet. I say, Hi, watching from Macha. Mama Kenyansi, good morning. Watching from Fikawe Teve. Jafez Rounousis, morning vow. Watching from Saudi Arabia. Where to be, where to be? To be there. It's okay. I'll come home to Kenya. Don't come now. It's not a good time. It's okay. I don't know if you guys want to put in, but lights out at least quite a certain time. Kenya, Nairobi right now, lights out is at 8 p.m. Stay there first. Good morning. I'm watching live. I see you, Princess Susie. Good morning. I'm Susie. Watching from Burukoma. For right. Good morning. Good morning. Don't go wood assemble. Good morning. I'm watching live. Ghejraf. Ghejraf. The punchline king. All right. I can't in like this. Italics. I think so. Morning kissy. Watching. Ghejraf, hope guy. The punchline king. Go down there to the ground. It comes through. We have like about less than a minute, but we have to see what we can do. If not, just stay. I'm sure my people mostly it's men who take this female gender and they fall into prayer so easily then finally get hurt. Wow. Okay. All right. Thank you so very much for your thoughts. You can always get us at 5.5 on Facebook, 5.5 on Twitter, hashtag is one in the morning. Let me start the lady. Go ahead and talk to her. Okay. Ladies and should I say men or gentlemen? Okay. Outside there all the youths or every person who is in this thing of relationship so just what should I say just make sure you have chosen the right way because you deserve better. Make sure you have this person who gives you or who brings you out to your very best. And if you don't see any of that then just claim the strength and get out of there. Hallelujah. You have less than a second but in a sentence please. Okay. Men outside there and ladies I would like to tell you that when you're getting into any relationship then choose wisely and take time.  But anyway that's one of my business. My business is to be understanding you. My name is Valentine and I was with Faith Poutete. You can find her underscore Poutete on all social media platforms. You can find me at Colour Me Vow. However, I am way more awkward and I will not tire of romancing you. That's why 5.5 on Facebook, 5.5 on Twitter, Y254 underscore channel on the gram, Y254 channel on tic tac or hashtag. All the day is why in the morning we have a repeat should be around 2 p.m. but if not please again don't shoot me. Thank you so very much for starting your day with us and I hope you have a fabulous one. Bye bye.


Here we are in our QuickBooks Online Test Company file using the Accountant view as opposed to the Business view. You can toggle between the two views by going to the cog up top, switch the view down below. Duplicating some tabs to put reports in like we're going to do every time. Right-clicking the tab up top to duplicate it. I'm going to right-click the tab up top to duplicate it again. I'm going to do it one more time so we can open up our Inventory report as well. Right-clicking the tab up top and duplicating. Going back to the middle tab, which was duplicated. Reports on the left-hand side. Let's open up the balance sheet reports as it's thinking. Tab into the right. Reports on the left. This time the profit and loss, the P&L, the income statement. Tab into the right. Reports on the left. This time I'm going to type in inventory because I want an inventory report. Inventory. Let's do the inventory valuation summary. And then let's go back to this balance sheet tab and do our date ranges. I'm going to close the hand boogie and let's do 120125 to 123125 and I will run that one. And then tab into the right. Closing the hand boogie. Range to the change from 010, not 01, 120125 to 123125 and run that one. Nothing's in it thus far. Tabbing to the right. One more time. Closing the hand boogie. And let's put this up to 123125 and run it. So in a prior presentation we talked about we've been following the flow of the inventory cycle in a normal kind of on-ground type of situation. Managing the inventory with QuickBooks using a perpetual inventory system. So we can then compare the differences of that situation to an e-commerce type of situation. The last time we talked about the vendor side of the purchasing cycle we bought the inventory in other words. And you could do so with a purchase order and then a bill and then the paying of the bill. Or you might just have an electronic transfer that's going to hit the bank feeds for the purchase of the inventory. When we purchase the inventory traditionally we want to be putting it on the books as an asset because we haven't yet consumed it in order to generate revenue. And then when we sell the inventory if we have a perpetual inventory system we're going to be decreasing the inventory at the same point in time that we record the sales. You can imagine if it was an on-ground situation that happening at like a cash register or you can imagine an invoicing situation. But let's imagine like a cash register because that's similar to an e-commerce type of situation. So at this point in time now for following the inventory we've got the inventory on the books on the balance sheet in the account of inventory. It's recorded at the cost of the inventory and then we have the inventory over here in our inventory valuation summary broken out by item of inventory. Units of items of inventory as well as the total cost value of the inventory which matches what's on the balance sheet. To do that if I tap to the left we have to add the inventory items. So if I go back down to the sales and to the right to the products and services we added our inventory items in here in order to populate the bill and the purchase order and the payment. So now we're going to make a sale. So let's imagine we're at the cash register on our store and we're going to someone comes up with products that they want to be purchasing. Right. So we're going to say right not an invoice because we're at the store. So it's going to be a sales receipt type of transaction. So we'll enter the sales receipts starting out with the customer. I'm picking generic customer number one as we do note that some businesses it's quite important to get a lot of information about the customer to facilitate whatever work that you've been contracted to do. And in other businesses it's not quite so important when we're looking at something analogous to a Shopify store which is usually geared towards selling high volumes of products and inventory. Then we usually aren't looking to get a whole lot of information about any particular customer other than the email address to try to get them on our email marketing list or something like that. So when we go into the Shopify as opposed to imagining an on ground situation selling at a cash register that information is probably going to be given to us through the Shopify platform. And then we have the question of when we pull it into QuickBooks do we need to repeat that information over here in QuickBooks. That's one of the issues that will come up when we do this through like a Shopify store instead of actually within the QuickBooks. So let's tap through this. I'm going to say the date of this is going to be 12 let's say 1525 and payment method. I'll just leave it blank. We're going to go down to the items that have been sold. Let's say that we sold product product or produce to let's do some produce to let's sell five of those at 200. Notice that this is pulling in automatically for us because we entered the items and so let's sell another one at the same time. They also are coming up to the cash register with their produce as well as product number one and let's say we sold seven of those. So they got seven product number one and five produce in their hand and that is geared for a 1000. OK, so let's keep it there. What's this going to do when we record it? This is analogous to if you are in an actual store and actually doing a self checkout. You could just scan your items and say, yeah, I got five produce to and seven product ones and the total then is going to be 1700. Note that we're not dealing with sales tax. We might turn on sales tax to add that level of complication into the factor. But without sales tax, it's still a fairly complex transaction. When I actually record it, even though the data input is fairly easy and straightforward that transaction being because it's a sales receipt. It's going to be increasing either the checking account or you might put it into a clear and account, which is often the case. QuickBooks Online calls it payments to deposit. Let's do that so we can kind of see why that is an issue because that will be an issue with the Shopify situation as well. So it's going to be increasing, in essence, a cash account, but not the checking account yet. The payments to deposit, which is similar to undeposited funds and QuickBooks desktop. That's what it used to be called. And then the other side is going to go to revenue for the full amount, 1700. And because we have a perpetual inventory system, inventory is going to go down by the cost of these items, which isn't actually on the sales receipt. But the system knows about it because we put the products in place and the related cost of goods sold. The expense related to us selling the inventory is going to go up. So the net impact on net income will be the increase of 1700 minus the cost of goods sold on the income statement. And we're going to have our sub ledger, our inventory tracked not only by dollar amount, but also by units. So all that's taking place here. So let's check it out. I'll save and close, save and close it. And then if I go to my balance sheet and run it, now we've put this amount in payments to deposit. There it is here and the others and then the other side is going to the revenue account. So if I go to revenue, I could run revenue. So there's the 1700 in the revenue account. And if I go back to the tab to the left inventory is going to go down. So here's our inventory account. If I go into it and then it's going down and it went down by these two amounts to line items because they put in there by line item, even though it's the same sales receipt. And if I if I go into it, there's no 750 for example on this form because that's the cost. It's going down by the cost, not the sales price. So we don't actually see that. You don't see the cost of the things when you check something out at the grocery store, for example. So I'm going to close that back out and scroll back and exit this. And then I'm going to go to the tab to the right and cost of goods sold is right there. So there's the cost of goods sold. And so notice that expense our inventory at the point in time that we sold it. It expense the inventory. So the impact on the income statement is sales minus the cost of goods sold is net income.


In this video I'm going to demonstrate the PCRaster map algebra tutorial. The tutorial is in Jupyter notebook but in this demonstration I'm going to show you how to run the commands in a setup where you have the Anaconda distribution on your computer and you use a spider and you can use the tools from PCRaster from the command port. So first we're going to activate the environment, Conda activate tutorials, now we are in the correct environment, I go to the folder where the tutorials are, go to the map algebra folder there we find the Jupyter notebooks and we see the data folder. So I'm going to run spider but I still want to use this command prompt. So I do start flash B spider then it will start spider and I can still use the command prompt. So we have these different tip files and we need to convert it to the PCRaster format to proceed with this tutorial. So we need to do some preparations and we're going to use Gdoll, previously you have used Gdoll from the command prompt and now you're going to see the equivalent in Python. So I'm going to use this iPython prompt here in spider and import the library, you need Gdoll and you need Gdoll const, then I'm going to open the tip file and I can set here the working folder, so I'm going to change that so I don't have to change that all the time or so I don't have to explicitly mention it every time. So we are going to import the first tip file, the build g.tiff and we call the variable src underscore ds because Gdoll open, that's where we start with to open a data set, we can use single or double quotes to define the string of the file name, build g.tiff and we enter and now the tip file is opened with Gdoll and then we can translate it to the PCRaster map file, on the command prompt we would use Gdoll translate and remember that then we had to specify the output format and the value scale of PCRaster, here I will show the equivalent in Python, we define the output variable equals Gdoll.translate, that's the same as Gdoll translate, but a little different syntax, first we define the output data set name, that is build g.map, then the source data set, that is src, ds that we have just opened, the gdoll tiff, then we can give several options and what we need to give is the format, so that will be the same as minus of on the command line and the format is PCRaster, the output format and we need to give the output data type and the comma here output type and that would be Gdoll const dot and then you give GdT underscore int 32, so that's the way of specifying the integer 32 output type which is needed because this is a nominal map and what we need to also specify in the PCRaster data type and we do that with the metadata options and there we use value scale nominal, so the output will be a PCRaster nominal map and we close the bracket, so that's done, the file is being converted but not written to disk yet, therefore we need to flush the data set to disk by closing these variables and you do it simply by dst, ds equals none, then it will be written to disk and it's also nice to close the source data set in the same way. There it is now, let's check our disk, so I'm in the data folder, type there and I see there that we have now build g.map which is the PCRaster format and I can even visualize it using Agila, that's the PCRaster tool for visualization and there it is, it's nominal, we see the different classes, five classes and this is the map, so that all works, so we can now write a script that can translate all the maps at once based on these lines of code that we have used, I'm going to paste it here, we miss the GDAL const, I'm going to add that here and then this function needs as an input the source file name, the destination file name, the output data type and the value scale for PCRaster, then you recognize the commands that we've used and here let me put this on the next line by using backslash, so here we have the destination file name, the source, the format, the output type and the metadata options and we flush it and then here we can convert it with the different formats, you can see it completely and we don't need the first one because we already did that one, I'm going to hash it out and then we can save the script and I'll put it in a map algebra, so all the code is then relative to the map algebra folder if we run it and I'm going to call this one tiff to PCRaster and then I can run it, now it has run and let's check the result and now we see all the maps are here, you can use Aguila to view them all, Aguila, we have build g.map, we had dtm.map, gw-level.map and the roads, gw-map and now we can open them all and here we see the elevation in the area, land use, buildings, groundwater level and two different road types, you can close all the windows at once by doing file exit, so let's inspect the data before we proceed because for map algebra the properties of all raster layers used in calculations need to be the same, let's find out if they have the same number of rows, columns, coordinates and pixel size, let's first open one of these PCRaster files with gdoll, call it raster layer equals and then we learned gdoll open and then note that we are back in map algebra, so I'm going to change it to map algebra data, so that's our working directory, then I don't have to specify the folder and I'm going to just open dtm.map that we just created, now it's open and to get the numbers of rows and columns we can use different gdoll functions the raster x size and raster y size and we can use raster layer dot get description to get the relative path of the layer, so let's start with getting the path raster layer dot get description, maybe typo raster layer and then the number of columns is raster layer dot raster x size and number of rows equals raster layer dot raster y size and now let's print that and you can use this formatting option to substitute what's in brackets later with the variables as that's much easier than substituting inside the string and then you use format and then the first one is the path, the second one is number of columns and the third one number of rows, we need to close with two brackets and there we see it, there is dtm.map has 60 columns and 60 rows, to know the coordinates and pixel size we can use getGeotransform from gdoll, it returns a tuple with the following information, index 0 of the tuple gives the top left x coordinate, index 1 the west east pixel resolution, index 2 rotation 0 for north up, index 3 top left y coordinate, index 4 rotation 0 for north up and index 5 north south pixel resolution and then that should be negative, so let's use this raster layer dot getGeotransform and here we see the tuple with the information and let's make that also more readable, so again we do print and then we can say origin equals and then we fill it in later with the correct values which are rasterLayer dot getGeotransform index 0 of the tuple rasterLayer dot getGeotransform position 3 of the tuple and close the brackets, so now we have a readable origin coordinate and we can do the same for the pixel size print pixel size equals and substitute this later with format and rasterLayer dot getGeotransform position 1 and rasterLayer position 5 and 2 brackets to close it, made a typo, it's a dot here and here you see that the pixel size is 50, so the pixel size is in the x and the y direction and the y direction has a negative 1 because they are equal here it means these are square pixels of 50 units and the units depend on the projection, we can also use geot to get the projection information, the pcraster format doesn't store the projection information but when we converted the rasters it saves an xml file with the projection info in the well-known text format, the gdel function to use for that is getProjection rasterLayer dot getProjection and this will print the well-known text format for this projection, that's not very readable, so we are going to parse this using another library, the pycrs library that we already installed when we installed anaconda, so I'm going to import this library, import pycrs and then I'm going to read those projection properties in a variable rasterLayerProjection equals rasterLayer dot getProjection, so now the well-known text is stored in this variable and then I can parse it, so the coordinate reference system equals pycrs dot parse and then we need to define the format from ogcwkt, so it knows that it uses the ogc well-known text format and that is read from rasterLayerProjection which has the whole format, so that's done and stored in CRS and now we can check if it is a projected coordinate system, so we can then use isInstanceCRS, that's the variable that we made and then pycrs dot porch cs and it says true which means that it is a projected coordinate system and we are not dealing with a geographical coordinate system, but it will be more helpful to have the name of the projection, so for that we can use projectionName as a variable equals CRS dot name and we print it print projectionName and it says it is WGS84 and UTMZone30North, we can also get the units of the projection, so let's make a variable projectionUnits equals CRS dot unit dot unitName dot ogc underscore wkt, so from the projection use the unit, use the name of the unit and it's in the well-known text and then we can print it print projectionUnits and it says meters, finally it would be useful to get some statistics from the rasterLayer, let's calculate the minimum and maximum value because rasterLayers can have multiple bands, we need to select the band, in our case we have a single band rasterLayer, so we have to choose band1, it starts numbering from 1, not from 0, so let's first select the band, rasterLayerBand equals rasterLayer dot getRasterBand and then as we said we have one layer, one band, so it's always 1 and then we can calculate the minimum and maximum value of the band using getMinimum and getMaximum, so rasterLayer Minimum equals rasterLayerBand dot getMinimum and for the maximum, let's change it a bit and let's print them Minimum, rasterLayer Minimum 201, that's the minimum value and let's do the same for maximum, rasterLayerMaximum 298, so that's all very useful but if we want to compare multiple rasters it's better to write this in a script, I'm going to make a new script and this is the script that we need for that which contains all these code that we've already tested on one and it just needs the rasterLayer from GDAL that we have opened, so in the main script here you see the DTM layer, we open it and then we call the function with the DTM layer and it will run all these lines to get the information and print them in a proper way, so let's save this one and let's call this metadata.py and let's run it, there it is and it prints here in the console the results, so DTM 60 by 60, that one is for one band, these are rows and columns, the projection, units, the origin, pixel size and the minimum and maximum value, so we've made a script that can easily read metadata from the file and we can conclude here that all the projections and spatial properties are the same and that this is suitable for doing map algebra, so we can continue. So the first condition to find the inaccessible wells is that the wells need to be within 150 meters from houses or roads, so we need to create a Boolean layer with true for houses and false for other buildings and we need to create zones of 150 meters around the houses and then we repeat the same for the roads, so let's start with creating a Boolean layer with true for houses and false for other buildings and we're going to import PCRuster now, so from PCRuster import star, PCRuster is imported now and our data is stored in the data folder so I need to change it back here, when we have run this script it changed back to where the script was run so always keep an eye on where you are and then we can read with PCRuster the map file that we created in previous steps to a variable, so buildings equals and we use the readmap operator and here we read build g.map from the disk and it's stored in the variable buildings and we can easily visualize this with Agila that comes with PCRuster so in the notebook that is not possible because it is a separate program but here it is possible so we can run Agila from the command prompt there is an Agila Python operator here which will give a pop-up with the map but if we have multiple maps that's not so useful because it gives a temporary file so therefore it is recommended to not use this Agila from Python only if you want to quickly check the result but use it from the command prompt so I can do here Agila build g.map and that refers then to the file but if it's for the variables in the script we use Agila and then the name of the variable and it will give a pop-up so that doesn't work in the Jupyter notebook so let's have a look at it again and we see it has five classes class 0 is none class 1 is house class 2 is public building class 3 is landfill class 4 is industry and class 5 is mine that's given in the tutorial and we first need to create a boolean layer with true for houses and false for other buildings with not algebra that is really easy you can say houses equals buildings equals exactly one so one equal sign means added to the variable and two equal signs means it needs to be exactly equal so they have a different meaning so we have now created the houses variable which is a map and which we can visualize so let's do that and there it is so in green true we have all the houses and in red false we have all the other classes that's good that's what we need to proceed with and then we want to create zones of 150 meters around the houses and therefore we use the pc raster spread max zone function so remember you can find all the pc raster functions on the pc raster documentation website so let's apply this houses 150 meter equals and then the name of the operator spread max zone and then the input is the boolean map with the houses then we have to define an initial friction which is zero there's no initial friction but each cell that it crosses has a dimension of one friction which is the distance and then the maximum distance is 150 meters close the bracket i can run it you see that's quite quick so i can visualize it houses 150 and this is the result a buffer around the houses of 150 meters so we can do the same around the roads so let's have a look at the roads map let's first read the roads map and then have a look at it there are this and there are two types of roads and we want to have the distance to any type of road so one and two are valid so i'm going to make a new layer um is road equals roads and road should not be zero so if it's zero it is false and if it's one and two it's true that works we can check it if we can now see all the roads there it is we have all the roads and now i need the maximum distance of 150 meters so with the arrow up i can get back the one that we used for houses and we replace it with roads 150m and here we use this road to press enter and then we can visualize it and there we see the 150 meter buffer around the roads now we can save these files to disk using report so report and then the name of the variable so houses 150 meter and we save it as houses 150 meter dot map and we do the same for roads there it is and we can then check it and their houses 150 meter and roads 150 meter are added so we can with Aguila visualize them there they are the second condition is that we don't want industry mine or landfill within 300 meters from the wells for the second condition we first need to reclassify the buildings layer in such a way that the result is a boolean map with true for industry mine and landfill and false for the other classes then we need to calculate the distance to the true pixels and finally calculate the pixels that are further than 300 meter from industry mine and landfill so let's create a boolean raster with true for industry mine and landfill and false for other buildings for that purpose we can use so-called lookup tables and we use the lookup operator and it depends on the output data type how we write that operator so if it's a boolean we use lookup boolean it's nominal lookup nominal etc and we need the table the lookup table let's have a look at the lookup table so the table that we are going to use here is industry dot tbl and here we see it and it has on the first column the values of the raster and in the second column the recoded values and here we see that classes 0 1 and 2 will be 0 so boolean false and 3 4 and 5 will be boolean 1 so let's use that so we can say industry equals lookup because the output is boolean it will be lookup boolean and then we use the table industry dot tbl and the buildings layer that we have previously imported there it is so let's visualize the result so there it is in green are all the industry areas and in red are all the other areas so now we need to create zones of 300 meters around industry mine and landfill so around these green pixels and previously we used the spread max zone operation but there doesn't exist a spread min zone to get the minimum distance so there are different ways to solve this and i'm going to show that so the first method is a fastest method i think is we can use spread max zone and then invert the result by using the not operator so industry max 300 meter that's our output variable spread max zone as an input we use our boolean industry map initial friction zero then one cell for each that we cross and then a maximum of 300 there it is and then if we want the minimum we can say industry min 300 meter is the opposite is not there we use this symbol industry max 300 meters so not the tilde inverts to and false let's have a look at both maps and there they are indeed each other's inverse we can also do it in a different way we can calculate all the distances to industry and let's call that industry distance equals and there we use the spread function for pc raster and the input is the boolean industry map initial friction zero and then one for each cell that it crosses there it is let's have a look so here for each cell we have the distance in meters to an industry pixel note that you can change the scale by clicking right and then add a drop properties and you can choose another palette closer to industry would be bad so let's make it red to green now with this result we can create a boolean condition industry min 300 let's make it version 2 so we can later compare if they are exactly the same industry distance that's the distance map larger equal 300 so this means if industry distance has pixels which are larger equal to 300 meters then it's true else it's false you can visualize the result and there we see that it looks the same and in the third method we can use a lookup table and in lookup tables we can also use ranges so i'm going to show you that file this is the file and this means that any value less than 300 has zero and values larger than or equal to 300 get boolean true so let's use this industry min 300 equals lookup boolean the first argument is the table the map which is industry distance let's look at this one too it looks also the same now to be sure we can plot all of them and we see that they are all exactly the same so let's save this to the disk we can just choose one of them report industry min 300 m i'm going to save it as ind 300 m dot map and now it's on our disc for the last condition we need to identify the wells that are less than 40 meters deep the file groundwater level dot map gives the absolute elevation of the groundwater level in the well in meters above sea level in order to calculate the depth to the groundwater we need to subtract this from the surface elevation given in the digital terrain model dtm dot map so let's read the two files and with map algebra it's very easy to subtract them so the well depth equals the surface level from the dtm minus the absolute groundwater level let's look at the result there we see it continuous scalar map which gives the distances to the water the depth now we can calculate a boolean raster where pixels with a depth less than 40 meters are true and larger equal to 40 meters are false so let's call it not deep equals well depth less than 40 so that will give two for the wells that are less than 40 meters and false for larger equal to 40 meters let's look at the result and there it is so let's save this to the disc report not deep not deep dot map so we have calculated different boolean maps for all these criteria so let's combine them and the result should be a boolean map where the accessible wells are located at the cells where all the conditions are true therefore we need to use the ant operator so we can write the equation here accessible wells equals and then all the different boolean maps with the ampersand symbol which means end for pc raster and then we can visualize the results with only these three wells being true so accessible and the other ones being not accessible so what's the advantage of scripting map algebra because the same procedure can also be done in qgis as you can see in another tutorial so what's the advantage of using this instead of a graphical user interface well first you have more control over the functions because you determine each argument and operator that you use the process becomes reproducible anyone else can run the script with the input data to obtain exactly the same results the code is transparent so open source and you can easily modify the criteria and see how it affects the result for that last purpose we're going to put all this code together into one script and we make it also clear by writing certain processes functions and then we can play around with these different criteria and see what works best so it's a bit of a scenario analysis i'm going to make a new file let's run it you see it's fast this is the result but we can now play around with the results we can say what if we increase the first condition to 250 meters save it and run it and we see that there are two more accessible wells here in the north so with this script we can play around with these different conditions and see the effect of that which is very useful for planning


It's the Roy Rogers Show! Happy Trails to you again, Happy Trails The great two-minute energy cereal brings you the Roy Rogers Show transcribed on the double R bar ranch with Pat Brady and the Queen of the West, Dale Evans Happy Trails to you And here he is, in person, the King of the Cowboys Howdy folks! You know being a cowboy, you need lots of energy That's why Grape Nuts Flakes is the cereal I like for strength and energy Just two minutes after you eat a big bowl full, that whole wheat energy starts going to work for you Try Grape Nuts Flakes buckaroos, they're great And now our story for tonight is about Indians On the far slopes of Paradise Valley lies the Indian Reservation Here dwells a small band of red men, descendants of the great Chiracawa Apaches With a deep pride in maintaining the customs and modes of their forefathers It is night and two shadowy figures creep toward the wiki up of the young chief, Kuchara Get in there fast and grab them, no one's around Are you sure Kuchara's gone? The message I sense bound to get him away from the Reservation All right, where will I find him? Hang on the wall of the wiki up And hurry, you're mighty slow learning the ways of these Indians And the next morning in the Sheriff's office in Mineral City Roy Rogers and Dale Evans hear damaging evidence against one of their most trusted friends Roy, and Dale, I'm sorry, but if Kuchara won't say anything to his own defense I have to keep him locked up I understand, Sheriff Kuchara, my friend, you've told us that you were in the Oak Glades this morning Now, I know you weren't there to shoot deer Kuchara did not go there to kill deer and Anton Rogers The arrows that killed the deer were your arrows, Kuchara You don't deny that, do you? Kuchara does not deny that, Mr. Mills You better not lie, you know Mr. Mills, you're an Indian agent and you ought to know that the Apaches do not lie That's right, Mr. Mills Kuchara always tells the truth like his forefathers did Look, Rogers, I'm trying to protect him But if Kuchara and his tribe are going to kill deer out of season Both on the Reservation and in the Oak Glades Game Preserve I've got to report it My men have found dozens of dead deer in the last couple of weeks The government has given these Apaches one of the finest Reservations in the West They can't live up to the rules, they'll have to move on Sheriff, you and I have both known Kuchara for years I want you to release him into my custody At least until Mr. Mills' report reaches Washington I don't see anything wrong with that, Sheriff The evidence is entirely circumstantial I don't know, Sheriff Wait a minute, Mills If Roy will be responsible for Kuchara I'm going to let him go for now I appreciate that, Sheriff I want a day or so to look into this deer-killing situation Come along, Dale, Kuchara You're sticking your neck out, Rogers I know these Indians pretty well In a lot of ways, you don't seem to, Mr. Mills Sheriff, you know where you can find me Sure, Roy, but remember, my duty comes first Well, of course it does, Sheriff And duty and justice go hand-in-hand too Say, Kuchara There was something you didn't want to tell the Sheriff and Mills Yes, Kuchara There's a story behind the deer that were killed by your arrows What is it? It is not important Kuchara thinks only of the trouble of his friend, Nantan Rogers My troubles? What? Why did you send for me last night, my friend? Why did you ask me to meet you in the Oak Glades? Send for you? What are you talking about? Your message was delivered by one of the children of my tribe I waited for you in the Glades until the stars faded Then I set out to find you As I passed through Mineral City on my way to your ranch The Sheriff's men arrested me You got a message which was supposed to come from Roy? Kuchara, why didn't you tell the Sheriff and Mr. Mills Nantan Rogers is my friend My tongue is silent until I know he wishes me to speak Kuchara, you're a real friend But someone is out to get something The message was not sent by you You bet it wasn't Roy, what's behind this? I don't know I'm going to find out Kuchara, I want you to go back to the reservation and see that everything's all right there Pat Brady and I are going ahead for the Oak Glades Roy, this is a heck of a story Roy, this is a heck of a distance to come on horseback A saddle ain't near as comfortable as Nellie Bell's seat Anytime Nellie Bell's as useful as a horse in thick woods like this I'll personally buy her a set of chromium-plated tires and Trigger will put them on won't you, Trigger Boy? You know, as long as I got a ride of horse I'd prefer a foam rubber saddle It's nippy out here, ain't it? Get in the fall, Pat Roy, I know Kuchara's a friend of yours but I never could get with their mend-ins why, they hardly ever talk That's one thing I like about him Hey there, Bullitt What are you up to? Hey, he's found something interesting in that little clearing That's right, we better take a look at it Well, maybe Bullitt knows what we're looking for but I sure don't Whoa, there, Trigger Bullitt, from the looks of that grass this is where the sheriff's man found that dear Kuchara was supposed to have shot Yeah, the grass is matted down I suppose the engines just can't resist shooting deer in-season or out I'd stake the rinse that Kuchara didn't shoot those deer, Pat because he says he didn't Hey, look at this tree What do you suppose, Nick, the bark like this? Well, the dark, gone tree looks like a Bullitt skinned it but cuts pretty fresh, too Yeah, I'm gonna dig into the trunk Hmm A rifle bullet embedded in here So what's a rifle bullet? Why are you digging it out of a tree? I want to keep it and find the gun it was fired from Hey, the engines are shooting arrows at us Hit the dirt, Pat, quick Hit an arrow, all right Hit the pump on my saddle Hey, my hat! Roy that arrow lifted my hat right off my head Well, grab it and get behind this log Down, Bullitt, Trigger, Buster, get back This isn't a patchy arrow, Pat In fact, it's Kuchara's arrow You can't trust an engine Oh, Kuchara needs trying to wing you with an arrow I don't think Kuchara's shooting We'll soon find out Hold your hat above that log Okay, I'll do it Not on your head, hold it up on the tip of your gun Oh, yeah, yeah Hey, miss I might just as well have my head in it Kuchara wouldn't miss like that, Pat Try it again Okay, I don't see what for But oh, hey, he came closer that time Let's see, that's four arrows Roy, what are you trying to prove? This is my brand new cowboy straw hat Well, go ahead, hold it up Wow Roy, he practically reblocked at that time Okay, now Stay where you are, Pat Where are you going? Just crawling over so this big tree's behind me This time I'll risk my hat Hey, Roy, a hole right through your lid And a rifle, Bullitt, and a tree Open fire in that direction, Pat Keep shooting Well, I'm glad we're fighting back Keep shooting, Pat I'm getting the bullet Hey, Roy, listen to that You hear huffs? Yeah, I do I'll have this bullet out in a second Hey, whoever it was He's sure getting out of here in a hurry Let's go after him I want you to ride back to town And get a look at those deer And find out for sure whether they were killed with arrows Or rifle bullets I'm heading for the Indian village I want to talk to Kachara some more Because I know he wasn't shooting at us just now How do you know that? When I saw Kachara in town, his arrow quiver was full Roy, I don't get this at all Kachara always carries seven arrows in a quiver No more, no less And our friend may have used two arrows on the deer this morning Because he changed to a rifle After trying five on us How about them, how about them How about those great nuts How about those great nuts How about them, how about them How about those great nuts flakes They are so good good for you too The two minute energy works for you So how about them, how about them Yep, how about those great nuts flakes Taking old hands advice partners Tomorrow when you roll out of your bunk Corral a bowl full of that great energy Given cereal Grape nuts flakes Grape nuts flakes are called The great two minute energy cereal Because two minutes after you polish off a bowl full Their powerhouse whole wheat energy Starts to go to work for you That's the kind of quick energy You fellas and gals need You'll go for grape nuts flakes Sugar-roasted flavor It's delicious So ask mom to get you grape nuts flakes The two minute energy cereal Look for Roy's picture on the front of the package The Indian tribe Led by Roy's friend Kachara Is in danger of losing its beautiful Paradise Valley Reservation The evidence seems to show that they're killing deer In the adjoining game preserve While investigating Roy and Pat Are attacked by an unseen marksman With a bow and arrow And when the sniper switches to a rifle Roy sends Pat back to Mineral City For further investigation While he and Trigger and Bullitt Go to the Indian village Kachara found that Quiver of arrows had been taken From his wiki of Nantan Rogers He started again for Mineral City To tell you How long ago did he lead, Natanka? As the sun reached top of the heavens Tell me, Natanka Have any strangers been in your village lately? One came to us at moon's first crescent He was good man For Mr. Mills brought him Oh, what was his name? Nantan Mills called him Edwards He was white hunter Inquiring to ways of Apache hunters You mean he was trying to find out About using a bow and arrow? He carried bow But it was heavy clumsy thing He would not accept bow Kachara offered him as gift I haven't run into Anyone named Edwards around Mineral City Edwards carried Strange black box He held it near rocks He carried it through fields Sometimes Strange black box made Ticking noise Strange black box that made a ticking noise Natanka, I'm riding to Normalsville To get a box like Edwards must have carried If it's what I think it is We'll know why someone wants to get you Off of this reservation There you are, sir Hope the stakes down the way you like it No, this looks splendid Never expected to find such appetizing cooking In a little town like this Well, I'll be running along, Miss Evans I'm glad to have met you, Mr. Edwards It's mutual, I'm sure, Mr. Mills This chance meeting may turn out to be A stroke of luck for me Fine, Edwards, you're welcome to bid On the reservation property whenever the Indians Are removed from it Mr. Mills, do you really think the government Will take the reservation away from Kachara's tribe? I'm afraid so, Miss Evans Kachara and his people just won't seem to obey the rules And I had to recommend that they be disciplined By moving them Well, I don't believe that Kachara killed those deer And neither does Roy Rogers I know your friends of Kachara's But I've been the agent here for a long time And all the evidence is against the Indians Well, goodbye Goodbye, Mr. Edwards Goodbye, Mr. Mills Hmm, an unusual situation An unusual situation indeed Well, I wouldn't get my hopes up About buying the reservation, Mr. Edwards Well, I'm putting in a bid at any rate It's just the sort of property I want You see, I'm a sportsman, Miss Evans I've made a career of big game hunting Hmm, I suppose you've hunted all over the world Oh, I should say that Tigers, elephants, lions, elk Say, have you ever tried hunting With a bow and an arrow, like the Indians do? No, that's something I haven't tried The gun's quicker, you know Yes, I suppose it is Dale, Dale, where's Roy? Why, isn't he with you? No, he sent me on an errand about noon He went on to the Indian Reservation Gosh, he ought to be back for now It's four o'clock Yeah, almost time for you to go to work Why don't you put on an apron And finish waiting on Mr. Edwards here While I get things ready for the supper rush Oh, sure, Dale Sure, anything I can do for you, sir? No, I'm getting along fine, thanks Mr. Edwards here is a big game hunter, Pat He hopes to settle down around here Well, that's fine Dale, wait, oh, Roy, here's what I gotta tell him Kacharo's arrows were in the deer all right But that isn't what killed him What? No, sir, rebob-tailed Them deer had been shot by a rifle And the arrows were put in later Pat, does the sheriff know about this? No, he wasn't around Fantastic story Miss Evans, friend Pat Where is Nantan Rogers? By Kacharo, didn't you see Roy at the Reservation? Gosh, Kacharo, he went there looking for you about noon When I returned, I found a quiver of arrows Had been taken from my wiki I started back at once to tell Nantan Rogers Oh, Mr. Edwards It is nice to see you again Oh, yes Hello, Kacharo What? You two know each other? Yes, yes, I've seen Kacharo before Mr. Edwards honored my tribe with a visit some weeks ago The Indian bow which you would not accept as a gift It is still yours, Mr. Edwards, if you wish it Bow? What are you talking about? Mr. Edwards is an archer But his bow was clumsy thing Fashioned in white man's factory Mr. Edwards, I thought you told me You'd never shot a bow in an arrow I haven't The Indians mistaken Well, golly, that thing sticking out of your jacket pocket Ain't that one of them leather wrist guards archers used?  Hey, this fella with a gun Gun on us, this is plotting to steal the reservation Mr. Mills Yes, and we've got all the evidence Put him under arrest And we'll tell you the whole story Back up a couple of steps, Edwards You're too close to cover these meddlers' problems Mr. Mills We'll have to get rid of Mills I told you you'd get in trouble Showing your face in town, Edwards All right, I made a mistake But we've got to work fast now Yeah, and I know the perfect way Kacharo kills these two with his bow and arrow In the struggle, they shoot and kill him Load him in the jeep outside, Edwards Take him to the reservation That won't work, Mills Roy Rogers is at the reservation right now All right, Edwards Make Brady drive you to the top of Secret Mountain That's on the reservation Rogers sure isn't going to see anything that happens up there Secret Mountain That is not on the path Nantan Rogers Would take back to Mineral City Now get moving, Edwards And if any of them give you any trouble, shoot him I have a sealed bid on the reservation in your name As soon as I see that it's fired legally I'll join you and we'll take care of the troublemakers And in here's a match Now get that fire going It's cold Yeah, you should squawk, Edwards You're going to at least move around You got me and Dale tied hand and foot Yes, you're a brave man, all right After the Indian gets the fire going, I'll tie him up again No funny business now, Indian Kacharo gave his word, he would not escape The fire will make Miss Evans more comfortable Sure, might as well be comfortable You're not going to last long I see Mills' horse starting up the trail now You better hurry up because it'll be dark in about 15 minutes And the way you handle a bow and arrow You'll have enough trouble shooting us in the daylight Never mind Brady, but the range I'm going to use I can't miss Confound you, Indian Can't you build a fire that doesn't smoke?  That's smoke all right Someone's trying to signal Hey, doesn't that mean send help? Smoke says send help silently and quickly It is Kacharo signal, Natanka Natanka, I want to borrow your bow and a quiver of air Trigger can get me there quickly And bullet and I can be pretty quiet when we have to Time for another Roy Rogers Reminder Always Play Fair Yes, buckaroos, that's Roy's reminder for today To be a good upstanding citizen You have to abide by the rules in everything you do In your home, in school or on the playground It's a fact when you play fair, you can't go wrong Be fair to yourself too Keep yourself healthy and strong And talking about that One of the best ways to do it Is to eat plenty of good nourishing food Like Grapenaut's flakes The cereal Roy likes best for building up strength and energy Yes, kids, Roy eats Grapenaut's flakes for energy His pictures on every package Roy likes those well-tasting Grapenaut's flakes Cause their whole wheat energy starts going to work for you Just two minutes after you eat a big, multi-rich bowl full That's energy you need for most everything you do during the day And you like sugar-roasted Grapenaut's flakes They have a flavor that's multi-rich Makes them mighty good to eat So if you want to be king of the cowboys in your corral Ask your mom to get you a Grapenaut's flakes The great two-minute energy cereal Grapenaut's flakes is one of the triple-wrapped post-serials Guaranteed fresh or triple your money back Cochera's spokes signals reach Roy from the top of secret mountain But Len Mills, renegade Indian agent Who was plotted with Roland Edwards to steal the reservation Arrives to silence forever the only tongues that know of his perfidy Well, come on, Edwards Let's get this thing over with Don't untie Brady and the girl till later, Mills This way they can't wiggle And I'll be sure to get them with one arrow apiece I must say you're a poor excuse for a big game under Ha-ha, maybe But I'm a good uranium prospector Uranium? Sure The reservation is loaded with uranium-bearing ore Edwards, get Cochera's bone arrow I'll handle the gun Want my rifle? No, no, I'll use Brady's gun Come on, let's go There is no hope now, my friends I am sorry I'm sorry too, Cochera Goodbye, Dale I'm sorry I was late for work so often Say His bow handle's fine I'll count to three and we'll fire One Oh! Edwards, what's the matter? Something got me My wrist An arrow Oh! My hand Edwards, it's the Indians No, it's not the Indians, Mills Bullet, take that big guy Hey!  Mills, I don't know your part in this But anyone who's ready to fire on three helpless people has a thrashing coming He sure has, Roy I'm getting Producers! No, don't You're making a mistake I don't think I am Not half as big a mistake as you made Now, off the other one, Bullet I want to crack at him too Hey, that's Edwards The guy who shot the deer, Roy Yeah, he was in with Mills To steal the reservation There's uranium there, Roy I know it Get on your feet I don't know how much you know about uranium But you're going to think Obama's Let me go Coachella asks a favor Let me land the bomb on Edwards Coachella, if anyone has a right to You have Go ahead Take it That's right, Coachella He's got it coming There Say, Pat I've got to hunch the bullets I dug out of the trees this morning Are going to match the bullets in Edwards' rifle Right And they're going to match the bullets Right And they're going to match the ones in the deer That Coachella was supposed to have shot Roy, how'd you find us here? Coachella sent smoke signals Coachella, you mean when you was fanning the smoke Away from Edwards, you were signaling? I hope the signals would be seen And they were One more thing, Roy Why in the world did you use arrows To stop those men from shooting us? I had to shoot twice from two different angles, Dale And a gun might have given away my position Between shots We better load Mills and Edwards Up and take them back to the sheriff He'll be mighty happy to see them Yeah, Nellie Bell will enjoy the trip down a lot more And she did the trip up I can tell you that Hey, Roy What's the matter, Pat? Well, look at her Your arrow glanced off a Mills gun And knocked a chip of paint right out of Nellie Bell's pan Why, poor old Nellie Bell That's all for now, folks Thank you for watching And I'll see you next week Bye Happy trails to Until we meet again The Roy Rogers Show was brought to you tonight By Post Grape Knots Flakes The great two minute energy cereal Grape Knots Flakes is the cereal Roy likes best for strength and energy Look for the picture of Roy and Trigger On the front of the package The Roy Rogers Show comes out The Roy Rogers Show can be heard again Next week at the same time With Pat Brady, Dale Evans And the King of the Cowboys himself Roy Rogers An art brush production Written and directed by Fran Van Hardisfeld With music by Milton Charles Remember what Roy Rogers says Post-Sugar Crisp is the cereal treat That's fun to eat Roy's right, fellas and gals Has a cereal it's dandy With milk or cream Makes it so handy Or you can eat it like candy Right out of the box Post-Sugar Crisp is excitingly new Deliciously different Nourishing puff tweet Candy coated with honey and sugar Ask mom to get Post-Sugar Crisp In the big red, white and blue box With the three bears on the front Tomorrow Featured in today's cast Where Frank Hemingway, Herb Butterfield, Charles Seele Ken Peters and Frank Gerstle This is Art Ballinger Stay tuned for the latest news Brought to you by Log Cabin Syrup


Okay. Hello. So how many of you are PHP developers? Nice. How many of you are using WPC-Li? Awesome. Do you use WPC-Li together with PHP? Okay. Cool. So let's try something new today. If you ever see me doing any WPC-Li, you saw me using WPEval command. So I'm going to just go to my local environment. This is freshly installed. Oh, no caps. Okay. Right. This is freshly installed WordPress. And you probably saw me doing this, WPEval. And then echo WP login URL. And you get this. And this is annoying because you can't use this. It's not in a new line. So what you do to make that better, you just add a new line. And we don't want errors right away. So here is usable login URL. Okay. So that's what you probably saw me doing. There are other ways to do it with WPC-Li. So evil is obviously command to execute PHP function that I've been using more than I care to admit on servers. So when you have a function you want to execute just once, you go to server and you do use evil. And it's all jolly. You can use also shell. Has anyone used shell before? Okay. Cool. So what is shell? Shell is PHP console open in your terminal. So here I can just do WP login URL. And it will give me strings. So I can do other things. You can get things from database. You can, you just run something to see what will it return on that specific WordPress install. I can also say print R and get, for example, users. It has to be a function, right? And you get older. So you see how it happens? You can use it as PHP. It's not very readable though. But it is useful. So you can use, you can do the same thing with WPC-Li and with shell depending on what you're more comfortable with. So for example, if I want to get the option, WP option at, for example, blog name, I can have it this way. Or I can say WP shell and say get option, blog name. And I get it. I can update it the same way here. So I can update it with PHP. I can say update, option. And you see I know this by heart because I practiced for this workshop. So yeah, I don't usually know all the functions by heart. So I can say blog name. That is the option name. And the second parameter is my new value, which can be WPC-Li, for example, too. And now we have error. Thank you. Yeah, because, right, I'll try to copy paste it, which is always a fun thing to do in terminal, right? And now apparently I've changed it. So let me get out of the shell. Let me open this install. And you see it's updated WPC-Li, too. I can do that with WPC-Li, like option, update. And then we have blog name. I hope it's, no, I hope it's like that. I don't know. We'll see if we get error. Oh, it's updated. So when we go back, see, depending what you're more comfortable with PHP or WPC-Li, you can do these things. So that was enough fun and play. We have work to do. I'm just kidding. Everything is fun and play here. Yeah. So this is something I really, really love. And it's a command evil file. Have anyone been using this? Nice. I see just hosting people using evil file. Okay, so evil command will execute PHP code. Evil file will execute, you guessed, PHP file. And this is where the fun begins. So let's first see what this function offer us to do. It says evil file, file, and then some kind of arguments and skip WordPress. So this is a nice thing if you want to execute just file, but you want to skip loading all the WordPress. And maybe you have some error there. You don't want to run on that error and stop the execution. You can do that as well. And what are the args? It says one or more arguments to pass to the file. They are placed in args variable. And there is no example here. But usually WordPress, WPCI commands have examples. And let's see what's happening there. Because now we know there are parameters that we can use, arguments, but there's no... So what you do, this is what a good open source citizen do. You go to source code and check evil file command. And you see here is example. So it's not visible. So let's see this. When I was just testing out, I didn't know how do I put this? Do I name it? Do I, you know, how do you use these arguments? So here we see in this example, it's value one, value two, and it's all in args array. So because there is an example that is very useful and it's not visible, that is a bug. So you see this three days ago, I opened PR. So that's what you do when you are a good open source citizen. I just updated like 20 minutes ago. So I hope it will get committed soon and merge. Okay. So let's create PHP file and see how that works. So how you do it in terminal, you say touch. And let's say W C E U PHP. For example, now we created this file. Let me find it. You see it under... Okay. Thank you so much. So let's open it in code. I usually do things in terminal, but now we are going to write serious PHP. So talking about serious PHP, we are going to do echo. Hello. Word can pure up, you rock. For example, this is the most serious PHP. And how you execute it. So let's delete all of this here. I don't know why this happened. Actually, I do know, but it's not what I wanted. I'm going to just type the command. So evo file and the name of the file E C E U PHP. Let's go back to terminal. And when we execute it, oh, hello. This is great. But again, we have this in the same line. And that is so annoying. And luckily, we can create the professional messages for terminal as WPC LI is doing. So let me introduce to you internal API for WPC LI. So you can find it in make WordPress.org CLI handbook.  And here you can register your hooks and commands. And you can do stuff with output. So this is what we want to do now. Let's take this log. What log does is it's just give you a nice message. Nicely formatted message here. And we can remove that one. Okay. Now, this is important always to follow coding standards. So you can and should allow every string for translation. Now, if we run it again, yay, we rock. Now let's pass some parameters to this file. The documentation says there is a args array that we will get it. So let's see how that will look like. I'm just going to print it here. And as you saw, there was just value one, value two. So if I say WP evil file, and then file name, and I can say maybe, I don't know, the workshop is great. There has to be a space. Okay. So you see what happens here. This is array and you get every item, every word is one item in array. So I can do here something like, you know what we could try? I haven't tried this. So maybe we break things. But we can try to, instead of the actual hard coded words, to find some value from the WordPress install. For example, if we want to get the site name, we can type WPC line, but we can also use the get option, blog name, right? So how you do it when you have already one command and you want to use another command as a parameter for this command, you use dollar sign and then brackets and inside, you put a command. So let's say WP option, get, blog name. In theory, this should work, but let's see what's going to happen. Oh, my God. This is beautiful. So now I can say here, I'm going to remove this. I can say, hello, WorldCamp Europe. This site name is and I'm going to say args and zero. So whatever word I pass first, it will be, it should show up here. So I'm just going to repeat this. Oh, yay. I hope you see the value of this. But you probably don't want always to just pass argument. Sometimes you want to, but maybe not always. Maybe you just want to write PHP file and just run the functionality. And the use case for that would be, for example, I saw many times people asking, can I export WooCommerce products, but not everything, just the name and the price and maybe something, some argument. So you have to do a lot of custom coding to do that and then you test it and whatever. You can do it here. I'm not going to install WooCommerce for this. We are going to use something just similar to that. But any kind of entity, you can actually just create a functionality to export to SCV file and then import to some other WordPress install. Now, don't get me wrong. You can do this with WPCLI as well. So let's try users. Like WP user list. You will get all users, right? We have only one. And I hate to work with that little data. So I'm going to say WP user generate. And look at it go. We have 100 users now. WP user list. Yay. So what we can do is WP user list and then do this. Users, CSV. Because default output, actually default output you saw was a table. So what we will get now, here you see users, CSV. Let me open that with... Okay, let's go like this. We save them here. Here is users. So this is what you get. Default output is with these column names. And this is what you get. Display name, user email. This is by default. You can actually make those fields customized. So maybe I want... Let me see. I need help here. And this is great because you can get all the help from terminal. So I can say fields and then fields. You see you can define format as well. And these are the fields that you can use. So let me say I want to do ID, user login, email. And I want password. Here, user pass. Okay. Because that is so safe to do. So fields. Okay. It's going to be ID, then user email, then user... What did we say? Login. And user pass. And then I want to put it in user's CSV. Now let's open it. You see? It's different. So what we can do with PHP, maybe you don't want to type all the time, all that parameters and fields. Maybe you just want to execute because you're lazy like me. And maybe you are more comfortable with PHP. So we can start here with users equals get users. So you always want to go to documentation to see get users, to see what parameters are there, its array of arguments, and then we can do many things here. What I want to do is... I want to show you this. So when you get users, you get a lot of input there. So let's just print users. What was that? WP, evil file. This one. Yeah, okay. So you get here a lot of it. We don't want all of it. What we wanted was just those fields, right? So we will go to find fields. Here we have... These are the fields we want to get. So it's fields, field is array. No, this should be... Sorry, array. So from fields we wanted ID and then user, login, user. What was their email user? And by coding standards, every array last item has to have a comma. Okay. So now when we run users again, you get far less. Now I don't know why is this happening. Maybe I need to update something. But I get double ID and then I remove it from the code. I get no ID at all. That started happening yesterday. Maybe something for debugging. Maybe I just really need to update my system. But this is what you get. So now we get this much better manageable data. And now if we want to put it into CSV file, we can use pure PHP for that. And there is a function that I forgot. What's the name of the... I didn't. I'm just pretending. So you know it's okay to forget it. So let's write CSV to PHP. You see this is the first result. Always go to official, manual. So it's f, put, file, puts CSV. And there is example how to do it. So you need two additional functions for that. You need to open file. Then you run a loop through the array of data. You put data in that file. Every array is one row. And then you close the file. So let's just copy all of this. Actually, we don't need the list. We need only this. Is everyone following correctly? Everything's fine? Cool. If you need any help, yell. I don't have cookies today, but I might be able to help. So I want to rename this to be users, but from PHP. And you see this other parameter is W that means write. But what that actually means is the pointer, every time you run it, the pointer will be at the beginning of file. So you will lose all the data every time you run it. It will overwrite it. There is another parameter you can use if you want to append. And it is A for append. And as always, I suggest going through documentation and just see what's there available. So here you see all the parameters that you can use. And maybe they fit better for your specific case. So we have the array of users. And then we are going to say for each user as user. And now we put user. And I'm going to comment that. So we didn't take a good look at this one. So what it says here first parameter is stream. So that is the file, the PHP file that we are, the SC or any file that you want to put your data in. Then we have fields. And that is an array of string. And this will give us error. Does anybody know why? Running this function like this. Do you see this? Yeah. We are getting from get users, we are getting array of objects. And this function wants array of strings. So we need to, every user that we get here, we need to convert this object into a array of strings. So we're going to say user array equals array. I'm going to copy this from here. Okay. I'm going to do it to select all of that. Copy and say it's user. And like this. So now we have a nice array. And we are going to change this here. Okay. And then we have, we close this and it should work. Let's see if it works. We don't have any feedback. But we have user's PHP file here. User's PHP CSV. And when we open it, we have everything. And ID is not doubled. So that's good. But we don't have these table names. So that is the difference. If you do it this way, maybe you don't need it. Maybe it's, I don't know. Maybe there are ways to add it. But you can, as you saw, easily do it with WPCLi if you need those column names. So this is good. But I want to have some kind of feedback. I feel uncomfortable just, you know, running it and kind of let's hope it works. So you can do this. Just add it here. And let's say this user, user nice. No, we don't have, we don't have nice name. We have login, login, rock. So for every user, we should get yay, they rock. Okay. So now we have exported that. But maybe, maybe we want to have a nice table. Like WPCLi is doing table. And we can do that with internal API. What we are going to do here is see this? Format items. And this is how it looks like. So we have items, array of items. So this is array of arrays. And then we have table. We can choose if that's going to be, where does it say all the parameters? It doesn't. But everything that you saw. So output can be JSON or CSV or whatever you want. We want to do table. And then we have this array of items key value. This is actually the column title. So I'm going to just copy this, paste it here. Table items. So what we need now is array of arrays. We need an array that will catch every user array we created. So I'm going to start above the loop. And I'm going to say items equals empty array. And then I'm going to add here items. And just add the user array to it. And we have items. Okay. And now we need these names for columns. So we need these.  And let's say fields. So this is our array of items. And here, fields. Now my Visual Studio code is yelling. There's some errors. But I don't think there are. So here we have the right. You can also add here a way to execute the WPCLI command from PHP file. So I'm going to delete all these users except for my own original users. So I'm going to say WPCUserDelete. Now the parameter here is ID. So what we can do is say ID2, ID3, ID4. But that's not how you use terminal. Because when you have terminal, you are the most powerful person on server, right? So what you want to do, you want to combine it with other tools. Again, I want to execute. So when I want to loop through all the users, I use user list, right? And I need here parameter ID. So I need to loop through users, get ID for every each of them except for my own. Because I want my administrator user to stay there. So let me see user list help. Always use help. This is what we do when we want to return a field, a specific field. We are going to say ID, right? So this is control output by one or more arguments of user queries. So I want just ID to be returned. But also I want to exclude my own user. And I don't see here option to exclude. And that's actually this one. Control output by one or more arguments. So you can choose which argument will be here. And this is what I have. Exclude. So I need ID of a user to exclude. Nice. We can say WP user list. Now I said I want field that be held. It's a bugger that you have to type it correctly. Field equals ID. So this, yeah. But it's PHP as well. So that's not excuse not to use terminal. So field ID, this is what I want to be returned. Just ID of every user. And my specific field that I wanted to add is equals ID of the user. And I want to exclude myself, which is I think one. So let's just run it here. Okay. Nice. And let's check if, yeah. One is excluded. So now I have my loop. And I can use this as a parameter for the delete. WP user delete. And as I said, when you want to execute another command as a parameter of one command, you use dollar and brackets like this. Yeah. Proceed. And this is removed. User list. So now I have only my own user. And I can say here at the beginning, let's go to internal API. Input execution. We want to run command. So I just deleted users because I want to create new users inside of the file. Not because it's very useful in this case, but because you might want to execute something before running. So here is the usage. You have options. And then you can try without options. I don't know if it's doable. If we will get some kind of error. I don't know. We still didn't have any serious error. And I'm kind of sad because of that. So return true. Okay. That's fine. Parse JSON. I don't know. Yeah. We can use JSON. Launch false. Yeah. Exit error. Okay. That's fine. And command args. So you can add global parameters to this like additional args. I'm not going to use this. And as you see, you omit wp when you do it this way. So you just have a command. And I'm going to say user generate because I want this. Oh, and I said we are going to try without options. Let's see if we can break it. We didn't break it. So sad. Yeah. But now we have different IDs for these users. And they all rock. Let's open the CSV file. And yeah, we have the different IDs. So we generated users and we exported them to CSV file. What we can also do is if you need, we can change this to append. And now run it again. And when we open, we should have right. We have appended. So we've saved the previous ones and we appended new ones. Now, we have only 16 minutes left. I wanted to do, yeah, six minutes left. So we don't have, I actually wanted to add a script to import users as well. So I'm just going to show you quickly how to do it.  And this is how you would do it in another WordPress install. You would do this. So you will open. Again, you need open and close files. So you will open this file. Data is where your users are stored. So you will not need this for loop. You will just need data is one, one item in data is one user. So you can just add them. And you can use insert user or, you know, whatever PHP function, a WordPress function. And you would get all the users inside of your new install. And that's how you do WP CLI and PHP together. And there are a lot of more things, but we don't have enough time. And oh, yeah, I have last slide. So my name is Mila Natsap. I'm WordPress engineer at XWP and the loudest member of the documentation team. You can find me on these places. I'm also classical musician. So if you want to talk about that, yeah, it's fine. You can find me on these places or you can find me here in a hall. I'll be here two days for any questions, any discussions, any proposals. If you have a hosting, you have server, you want it broken. I'm there. And thank you so much for your time. We do have time for one question. If there's any from the floor. Yep. I was wondering how the performance of the WP CLI is compared to the WP JSON API. Is it better? Is it worse? I don't know. I didn't measure it. I'm probably not the right person for that. I do care about breaking stuff and finding how things work. But if you really want to talk about performance, we have in at XWP a lot of people who really knows that. So I'm just breaking stuff. They're fixing. Yeah, yeah, yeah, yeah. We can break more. So I personally love it more. Yeah. And he's the person actually you can talk to. It's Mike from XWP. Just one more, one more before we end. Any more? No? Yes, no? Okay, fantastic. Thank you. That was amazing, Milan. Thank you so much. And before you go, there's a token of appreciation from the team. Yeah. Thank you. Thank you so much. Thank you. All right.


Hi guys, my name is Jen. I'm gonna talk to you about this armor etch really quick. It comes in small bottles and it comes in larger bottles It goes a long long way You etch into glass with this or you can do ceramic too I've done some on dollar store mugs where I just etch into it or clear glass plates. It is awesome I'm gonna show you a few projects that I used with this, but again armor etch It's really awesome and does a great job. There are just a few things that I created with the etching cream I took wine glasses and etched them glass plates and I etched into that on the back side of them to make Christmas cookie plates I also took a glass mug and etched on that as well. The possibilities are endless so go have fun