Welcome to Thing Tech on Spectrum OC 16, Hawaii's weekly newscast on things that matter to tech and to Hawaii. I'm Marby Kelly. And I'm Cynthia Sinclair. In our show this time, we'll visit the 2018 meeting of the Board of Governors of Pacific Forum to hear their current thinking about our critical relations with Asia. The meeting celebrated the life of Admiral Joe Vasey, founder of Pacific Forum and featured remarks by former Deputy Secretary of State Richard Armitage. Admiral Vasey organized Pacific Forum more than 40 years ago. Its meeting this year was historic in that Joe Vasey has recently passed on. Also, Pacific Forum's relationship with the Center for Strategic and International Studies, CSIS, has ended. And President Rolf Kosa, who has been with Pacific Forum for 25 years, has announced his retirement. The meeting celebrated the life of Admiral Joe Vasey, founder of Pacific Forum and featured remarks by former Deputy Secretary of State Richard Armitage. For many years, Joseph S. Nye Jr. of the Kennedy School of Government at Harvard University was a regular speaker at the annual Board of Governors programs. More recently, and this year, former Deputy Secretary of State Richard Armitage has played that role. Over the years, Pacific Forum has made huge contributions through its research and reports and articles and programs about relations with Asia. With its remarkable professional staff, fellows, interns and supporters, it is positioned to make increasingly valuable contributions going forward. There were hundreds of supporters and friends there that evening. After all, Pacific Forum is a Hawaii nonprofit and very popular among the diplomatic, business and military communities in Hawaii. This year, Pacific Forum President Rolf Kosa joined in a discussion with Richard Armitage to explore the events and issues facing the United States in its relations with Asia Pacific in the world today. Armitage is, of course, very well-informed and a very interesting and candid speaker. It's important that the people of Hawaii look beyond our shores and see Hawaii not just as an island state, but a multifaceted center of the Pacific. ThinkTech was there to support and tape this event, and here's the footage we took in the first part of the program. Next week, we will present the second part of that footage, including the reactions we got when we walked the floor. Last year, we had Joe Nye and Harry Harris on the podium, Mr. Softpower and Mr. Hardpower. And I asked the same question to both of them, which was, China, friend or foe? And Harry said, I think China is a great friend of the United States. I also believe in the Tooth Fairy and the Easter Bunny. And then he gave us a pretty comprehensive rundown. Joe, as you might imagine, was a little more professory and nuanced. So I wanted to throw that same question to you if I could. China friend or foe? China is an adversary, in my view. That's what I describe her as. This is not necessarily a foe. If we have good diplomacy, this is what our diplomats are supposed to do, keep an adversary from becoming an enemy. But we don't have the only say in that. China is going to make some basic decisions herself. Xi Jinping becoming president for life, that's bad news, good news, or doesn't make a difference? Well, I guess I ought to say it's a Chinese decision. So having said that, I think it's probably not a wise one. It's not wise because after Mao and China made their own decision, they didn't want to put all that power in one person's hand.  So I could make the argument. I won't, I'm not foolish, and I know you're not foolish, but I could make the argument some in China make that it is more efficient to have Xi Jinping as president and the only guy who makes a decision. It's also dangerous, I think. It's dangerous because he'll probably surround himself with the yes men. He won't get the advice he needs to fully understand a problem or a course of action. And it's also dangerous because I happen to think that the president of China doesn't have, I was talking to Admiral Swift earlier and said that I believe Xi Jinping does not have an article term. Xi Jinping is much freeboard. He doesn't have much room for error. Having put himself in charge of everything important in China, he's got nobody to throw under the bus. So in the longer view, I think Xi Jinping has probably made an error. Thank you. We talked a little bit today at lunch about the various threats that the U.S. faces and the national security strategy this year sort of laid out three primary threats. One was revisionist powers, China and Russia. One was sort of rogue states with nuclear ambitions, North Korea and Iran. And then transnational terrorism, crime and all of that. What it didn't do is prioritize those and say, what's the real threat that we ought to be worried about as Americans? I get asked all the time, aren't we in terrible shape? Isn't the world a mess? It's so chaotic out there, have we ever been worse? And as a matter of fact, the world's been much worse. World War II was worse. The 80s, during the Reagan administration, we had four or five active wars in the beginning of terrorism. Marine Corps barracks was bombed in Lebanon. It's been much worse. And you can go back all through history and find that it's been worth. The other side of that coin is you, me, none of us have an existential threat today. Because to have an existential threat, you have to have the capability and the intention to destroy us. But China certainly has the capability, but she doesn't have the intention. Too much skin in the game, I believe, right now. Russia has the capability, doesn't have the intention either. Iran, I believe, does not have the intention, nor do they yet have the capability. The same is probably true in terms of capability for North Korea. There is one actor out there, however, that would love to destroy us. They have the intention. They have not the capability. And that's ISIS. So I think that we don't have the luxury of prioritizing, because should the balloon go up, we're going to turn to the Admiral and Lieutenant General, here, others. And we're going to ask them to go take care of the problem, whatever it is. And it might be a force on force problem, it might be terrorism problem, it might be a rogue state. So to prioritize them probably is troublesome, because when we prioritize, our enemies know that as well. And so they will act against our, they're not going to hit us strength on strength, they'll hit us where we're not. So I really am loathe always to prioritize threats. It's bad business. It can only lead to problems for us. You are a leading authority on Asia policy and spent much of your life crafting it. I wonder if you could tell us from your perspective, the current administration, what is it doing right in Asia? Are you also going to ask me what they did wrong? That'll be the second question. Well, look, the easy one first. What they've done right, I think, clearly is that the President went to the EAS and the APEC. There was some questions at the beginning of his administration, whether he'd do that and he did it. And I think I have to give our President his props for that. Beyond that, there hasn't been much right in Asia. But as I would think I said to Barbara Tanave earlier tonight, if one moves aside the tweets of our President and the language and the borishness of his behavior and just concentrate on his foreign policy, it's kind of like the music of Wagner. It's better than it sounds. And that's kind of right. As he hasn't changed very much, I mean he griped about NATO. He talks about removing forces from Korea, getting out of course, but we haven't done it. So in a very real way, it's like the music of Wagner. Now the second half, what do you think have been the biggest or the biggest mistakes in Asia? Well, the biggest mistake clearly is TPP and the decision not to go in. But to be fair, Mrs. Clinton, had she prevailed, would have done the same thing. It was then the blame for this, Ralph actually falls on people like you and me. It falls on us because we always concentrate in trade policy, at least I always did. I'll let you speak for yourself. Trade on trade policy on the winners. And at least as far as I'm concerned, none of the trade decisions that we've made when I was in government didn't have a majority of our people winning, but we never gave the thought to the losers, the people who didn't win because of a trade agreement. And so now we've sown the whirlwind and now we're reaping the storm for a while temporarily. But it's this whole TPP thing is probably, in my view, the worst decision. Now there's a second one. I guess you're going to get to it, but I'll let you talk about Korea in a minute. Give us the second worst, please. Well, my enthusiasm is dramatically under control for the bigger button meeting that's allegedly going to take place in May. I think this is fraught with disaster. And the reason I say that is, first of all, we've not heard a thing from the North Koreans. Not officially. Not a word. Now, on the one hand, I can see why would Kim Jong-un want to have a word about this? There's no need to. He can sit back and watch the bodies fall in Washington as the Secretary of State gets fired. The National Security Advisor is rumored to be fired. Who knows about John Kelly as Chief of Staff? So why should he speak about anything? He doesn't know what team he's going to be dealing with. So he'll just kind of watch these, as I say, the bodies fall for a while and see what comes out of it. Second, we know from our South Korean envoys what the North Koreans said and what Kim Jong-un said. But what we don't know, as my grandmother would say, is a matter of emphasis. Where was the emphasis? And without hearing the emphasis, the raw words don't convey, I think, the full feeling of whatever it was that Kim Jong-un said. Third, the South Korean envoys told us that among the many things that surprised them was how well-versed on North-South issues, how well-versed on regional issues, and how well-versed on international issues was Kim Jong-un. I think they were, I'll put words in their mouth, they were a bit surprised. I must say I'm a bit surprised, but I guess you can think about it. He can get CNN. He can get whatever networks he wants and kind of stay abreast of what's going on. The other side of that is the whole situation in North Korea has subtleties, has historical context that must be understood and taken into consideration. And whatever we want to say, I have to say that I don't think our president thus far has shown that he's got the temperament to engage on this kind of unscripted, unrehearsed situation, nor necessarily does he have the willingness to learn. So that's a situation that leaves us with one option, and that option is Japan. And we're counting where Foreign Minister Kono came into town last Friday, and he saw Secretary Mattis and some others around town, and I guess his concerns were part of these subtleties that I was talking about. His concerns are short-range ballistic missiles. Oh, that's a great surprise. If you live in Japan, you're going to be concerned about SRBs and abductees. These are issues that wouldn't even get on the table unless Kono sensei and later in the 18th of April or so, Mr. Abe, when he comes to Washington, didn't lay these in front of our president. So I would be one that would say I'd be delighted if this occasion passed by without this meeting. It's not ready yet, in my view. It's not ripe. The fruit is not hanging low enough to be picked. The spade work hadn't been done. The gardening hadn't been done. The other side of that is I'm afraid this would be, if you think about it, the most watched TV event ever. And I think that's got an attraction for our president, because something like that would knock everything else off the headlines if you get my drift. You just mentioned Japan, and one of the questions was about Prime Minister Abe. Is he, how much trouble does he in? Can he sustain the current challenges? And how does he play in the North Korea issue? About 10 days ago, I was in Tokyo, and it was right when the finance ministry person resigned and the Treasury official committed suicide. I was having dinner with the deputy prime minister, and he actually was late for the dinner because he was giving a like a two hour press conference. There was so much interest in this. And at the time, I must say the whole situation surrounding the Morimoto Gakuen Osaka school looked pretty dicey. Or as I said, I think at lunch they're pretty gnarly. My sense is, and a couple of the newspapers, Asahi and Manichi, they're really digging at the prime minister. They don't have any other thing to hit the prime minister with. The opposition, and splendid, has no policies of their own on the one hand. On the other hand, unless there's a new revelation and a big revelation, I think they've weathered the worst of this. There is some Abe fatigue, Mr. Abe understands that. I think everyone understands that it happens in every democracy. But the other side of that is, who else is there right now? And that doesn't seem to be much. So I would say Ralph, I think he's weathered it, unless there's a new revelation. I think, however, he will be challenged in the September LDP presidency race. And I think he'll prevail, but he will be challenged. He will, I think, end up being the longest post-war prime minister in Japan's history. He will preside over what I have no doubt will be a successful Olympics. And their situation in North Korea is changing almost daily. The situation, and I mentioned with Foreign Minister Kono coming and raising the issues of the short-range missiles and abductees, is very much politically on the minds of our friends in Tokyo. And I think Mr. Abe feels that he has to come and be seen as raising the issues of great concern to the people of Japan. And now I've read today that Mr. Abe also wants to meet with Kim Jong-un. So I don't know where, but that's not unprecedented. Kozumi has met with him in the early part of George Bush 43's administration. Rich, I've got two or three questions that essentially are, what's going on with one belt, one road? How is that going to impact the US? What's China up to? Well, if you'd asked me that question six weeks ago or so before the People's Congress, I'd have said, oh, yeah, every time Xi Jinping opens his mouth, he talks about one belt, one road, a huge infrastructure program, et cetera, et cetera. In the last month, they've been very quiet about this. And I think the reason is kind of twofold. The first and most important was the People's Congress. And Xi Jinping had to consolidate this presidency for life. And I think that's where his whole focus was. The second reason has to do with a little headwind that China ran into in Central Asia. The Russian Federation has some views about former satellites of hers, and Kazakhstan, Uzbekistan, et cetera, et cetera. So that's kind of slowed down some of the one belt, one road. And this gives me an opportunity to bring up something. Tomorrow, our president will announce his tariffs on China, and it'll be strong. And it will be combined with at least a limited petition to the WTO. So there's going to be tough tariffs, but there'll be some obeisance paid to the WTO. China will react, I can't tell you how China will react, and maybe she'll react without saying anything. Just buy less sorghum, less soybeans, fewer cattle, and fewer pigs. Buy them from Argentina, buy them from somewhere else. There are plenty of suppliers. Without saying a word, that would be the best we could expect. The worst I think would be a somewhat harsher reaction. It could even evidence itself in some pressure on Taiwan. I'm not talking about invasion or anything like that, but some pressure, more pressure on Taiwan. One thing you can take to the bank is our markets will react negatively tomorrow. And I don't think it'd be long live, but they will react. The markets will go down tomorrow, I think almost certainly. And I think that's what happened at the tail end of today. This gives me an opportunity, forgive my length, to bring up something. I'm not, as I did at launch, I'm not going to talk about security issues in China. You live here, you're right in the middle of it. You probably, with a combination of an AV Marine Corps Air Force team out here, Army, you hear about the security challenges all the time. But there's an economic aggression coming from China. There's a coercive economics that they're engaged in. And wherever you look around the world, you will find China engaged in coercive economics, Japan, rare earth, Taiwan tourism to restrict tourism. Norway, tried to bully Norway for hosting the Nobel Prize for the chair, for the Nobel Prize winner, Sri Lanka. Anywhere you look, Cambodia, it's economic coercion. And this is part of what the administration of Washington is trying to get the attention of the Chinese on. Hawaii can and should be a magnet and gathering place for international relations in Asia Pacific. In addition to the obvious economic benefits, this can yield a new global reputation and role for Hawaii in the family of nations, serving national interests and also serving Hawaii's interests. Thanks for watching this. The first part of the 2018 Pacific Forum Board of Governors program. Tune in again next Sunday evening to watch the second part, including more of the views expressed by Richard Armitage. Want to know more about Pacific Forum? Check out its website, packforum.org, and take a look at its publications and PACNET articles. When you do, you will realize how important it is for Hawaii to be part of U.S.-Asia relations. And now let's check out our ThinkTech schedule of events going forward. ThinkTech broadcasts its talk shows live on the Internet from 11 a.m. to 5 p.m. on weekdays. Then we broadcast our earlier shows all night long and on the weekends. And some people listen to them all night long and on the weekend. If you missed a show or if you want to replay or share any of our shows, they're all archived on demand on ThinkTechHawaii.com and YouTube. For our arduous stream, go to ThinkTechHawaii.com slash audio. And we post all our shows as podcasts on iTunes. Visit ThinkTechHawaii.com for our weekly calendar and live stream and YouTube links. Or better yet, sign up on our email list and get our daily email advisories. ThinkTech has a high-tech green screen studio at Pioneer Plaza. If you want to see it or be part of our live audience or if you want to participate in our shows, contact shows at ThinkTechHawaii.com. If you want to pose a question or make a comment during a show, call<PHONE_NUMBER> and help us raise public awareness on ThinkTech. Go ahead, give us a thumbs up on YouTube or send us a tweet at ThinkTechHI. We'd like to know how you feel about the issues and events that affect our lives in these islands and in this country. We want to stay in touch with you and we'd like you to stay in touch with us. Let's think together. And now here's this week's ThinkTech commentary. Serial, we need you back. I'm specifically talking about Serial the podcast, Season 1, which covered the murder of Heyman Lee and Adnan Seyed's prosecution. The strength of Season 1 was that you wouldn't have been able to say anything about Adnan's situation unless you were listening to the full reporting on the background of the case and how the criminal justice system works. When Serial was covering Beau Bergdahl in Season 2, it wasn't the same at all. You might want to have a conversation about Bergdahl, but you couldn't know if the person you were talking to was basing their opinion on having actually listened to all the serial episodes or if they read a single article in the newspaper, saw a headline on Facebook back when the story first broke or heard a few snippets on Fox News. The fragmentation of reporting on most stories definitely affects how we form our opinions. Just this week, there was a ThinkTech episode where it was expressed that the Harvey Weinstein victims must have been implausibly naive to agree to one-on-one meetings with him in hotel rooms. And the two other people on the show didn't point out that this was inaccurate. If you read the Ronan Farrow piece, which I admit I only did this week, it's clear that the modus operandi was to get women to agree to come to a corporate event or group meeting, and then the enablers, co-conspirators would leave them alone with him. This is a case where knowing the background is essential to forming an opinion on the matter. If these women were planning to meet him alone, I can see that you might wonder whether they were willing participants. Well, they weren't willing. That's why Weinstein's staff had to resort to setting up these meetings on false pretenses. We all think we know what the Weinstein narrative was since it was so broadly reported, but how consistent is our understanding of those stories? When we have a conversation about it, are we really talking about the same thing? For issues like gun violence, opioid abuse, immigration, and sexual harassment, where we have to make decisions as a society about what our norms and policies should be, we need new seasons of serial. It's important to have serious journalists go in-depth on an individual story that hasn't been big enough to break into the news cycle. If you know someone disagrees with you after they've listened to the whole story, it means something, and you can have that dialogue to find out where you agree and disagree on the issues. We need that in-depth journalism to get us thinking deeper, and as a side benefit, I think we'll also find that our friends on the other side start sounding more reasonable when we're all talking from the same starting point. We'll be right back to wrap up this week's edition of Think Tech, but first, we wanna thank our underwriters. The Atherton Family Foundation, Castle and Cook, Hawaii, the Center for Microbial Oceanography Research and Education, Collateral Analytics, the Cook Foundation, the Hawaii Council of Associations of Apartment Owners, Hawaii Energy, the Hawaii Energy Policy Forum, the Hawaii Institute of Geophysics and Planetology, Hawaiian Electric Companies, the High Tech Development Corporation, Galen Ho of BAE Systems, Integrated Security Technologies, Kameha Meha Schools, Dwayne Kurisu, Calamon Lee and the Friends of Think Tech, MW Group Limited, the Shiler Family Foundation, the Sydney Stern Memorial Trust, the Volo Foundation, Yuriko J. Tsukimura. Okay, Cynthia. That wraps up this week's edition of Think Tech. Remember, you can watch Think Tech on Spectrum OC16 several times every week. Can't get enough of it, just like Cynthia does. For additional times, check out oc16.tv. For lots more Think Tech videos and for underwriting and sponsorship opportunities on Think Tech, visit thinktechhawaii.com, be a guest or a host, a producer or an intern, and help us reach and have an impact on Hawaii. Thanks so much for being part of our Think Tech family and for supporting our open discussion of tech, energy, diversification and global awareness in Hawaii. And of course, the ongoing search for innovation wherever we can find it. You can watch this show throughout the week and tune in next Sunday evening for our next important weekly episode. I'm Marby Kelly. And I'm Cynthia Sinclair. Aloha everyone.


Welcome. This is Melissa Armo with the Stock Swoosh and I'm going to talk today about the value of getting a trader education. Visit me if you have any questions. You can feel free to call me or email me at Melissa at thestockswoosh.com or 929-3200 Gap. You can also follow me on Twitter, Facebook, YouTube, or Skype. If you learn how to trade for yourself and invest for yourself, it's the greatest job in the world because you can work from your home and you are your own boss and you can set your own schedule. Again, the US stock market is only open from 930 to before, but it's not like you have to sit at your desk for that entire period of six and a half hours either. So it really is a very nice job. Also, you have weekends off. When you choose to learn what to do, how to trade, how to take positions in stocks, how to invest, it really is getting education just like you would go to college or any university and it's a gift to yourself. You're investing in yourself which is very, very, very important. I think a lot of people don't realize how important it is to invest in your own education before you risk any money in the market. Why? Because if you don't know what you're doing, you'll lose. You hear stories all the time about how people lose money in the market because they just take trades or calls or things they see on the internet or read an article or read a blog. A lot of people jump around to open houses. I require people to take my class before they join my live trading room. Although you can trial my open house, I suggest people just come and watch, see if you think it's something you might be interested in. It really is important to invest in yourself and really you're investing in your own success and that's a great investment. You should think of yourself as the best investment you could possibly make which is you. This is a gap that happened which was really quite a phenomenal call because the fact is the stock closed to your gap down and we shorted this. When you look at this, when you see the size of the tail, you say woo because the size of the tail was big. Some people want longness. The fact is it was a short. This is what you've learned in my course from me. How to determine whether something's a long or short because if you went long this, you lost. Here you can see here the drop-off. A short is for those people that don't know. When you're taking a position in the stock and you're betting that it's going to go down, the price is going to drop. That's what a short is. So in this case here, we got in this and it dropped. Boom. More than two bucks. Really nice move here in the big and again, you would never have known how to do this correctly unless you took my course because a lot of traders, a lot of people would look at this chart and think that this was a long. It was not a long, it was a short. How to make money in the market? You've got to get in the right direction. You're not going to make money if you don't take a stock in the right direction. If it goes in the opposite direction, you're going to lose. So that's why it's important to learn how to take a stock in the right direction. Anyways, it's a lot less stressful also when you follow someone. So I do run a live trading room. I do make the calls, entry, stop, exit, targets, the stock picks I'm looking at. Usually two or three a day we're watching. It's a lot less stressful when you're following someone and learning helps you. It helps you make money. It's just common sense.  Again, same philosophy, same concept of going to a university or a school. But ultimately the bigger picture is really to not only to get your return and investment in the education that you would pay for, but also just the long-term benefits. Long-term benefits meaning you learn a system, which in my case again, if you come to me would be the golden gap system that you can use for the rest of your life. And that's the idea. Although many people would prefer to be slowly in pain losing a little bit of money slowly, slowly, slowly day by day and week by week and month by month and year by here in the market versus invested education up front in one chunk. I don't know why. I don't know why people think like this when I'm telling you they do. Somehow people like the idea of dragging out the pain or cost to trade rather than saving themselves time by just paying for education and learning. And then beginning making money ASAP, which a lot of people do right after they take my course. Like I said, they join the room after the class, take the trades. So many people would rather go through the slow pain of losing their accounts rather than pay for education. But is the pain less? Are the losses slow? One man I spoke to about my class is a story that is unfortunately a sad story. In September, he didn't do the class who said he was going to. He didn't. He had $20,000 as a trading account. He said, well, I don't have enough money to take your class. I'm going to wait. I'm going to wait. He did have enough money. He had 20 grand. My class is $6,000 and he could have still traded. Then I followed up with him the next month and he lost half his account, lost $10,000 in a month. That's a lot of money to lose in the market in a month and it was half his account. And then he said he didn't have enough money to take my class and he really still did. He still had $10,000. He still could have paid $6,000 for the class and he still could have traded. But he didn't. I haven't talked to him in months. So the bottom line is that you will lose in the market if you don't know what to do. That is just a fact. And when you're looking at all the different things out there, all the different educational courses out there, all the different types of strategies you can trade, I'm telling you, you have to find something that's a niche. So what I do is a niche. I have a niche. My niche is gaps, but it's also, it is gaps really. That's the biggest niche is gaps, but it's also the fact that I pinpoint in the gap where institutions are buying or selling. That's my niche. The other niche that I have is I don't deviate. I don't do anything at all. I don't incorporate other systems or other strategies in what I do. Nothing. I only, only focus on this. Okay. And then the other thing that I have that's a niche is I'm extremely good at trading and reading the one minute chart in the first half hour of the day. In fact, I'm so good that I don't think anyone can do it better than me. So when we take trades and I'm looking at something I can tell right away, right in the first half of the day and sometimes the first minute, whether something's going to work or not. And so we are aggressive in our trades, but that's how we make money and in and out quick. Okay. So I have a, I have a couple niches and that's what I really think is very important when you're making a decision to learn about how to trade the market. You have to find someone that's an expert. So those are my niches. I should make a list of all the things that I'm really good at, but and also the market. I mean, I've called the market just extremely well too, but the market is something that we don't trade every day. You look at it, if it's a good gap, we'll trade it. But honestly, I've been calling a lot of options calls in the market, but reading the market is important, I think just overall to make you a better trader. And if you have retirement accounts, you know, you're looking at your 401k, things like that. Anyway, it's getting back to what I was saying here. While it's true that not all trading education out there is good, it is also true that not all trading education is bad. It's not. I have a great class. It's a fabulous class. It's worth the money. It's worth more. Okay. So I understand that not every trading educational class out there is good. I understand that, but it doesn't mean consequently that all education is bad. The problem is that people never are sure if they will learn enough to cover the cost of the education. They feel like they're losing by paying for education. Meanwhile, they lose in the market year after year and usually way more than the education costs that they paid for. Even if they add up every class they ever took, most people lose more money in the market. So what should people do? And how should people think about making educational choices? Should people trade without any education or not? No, they should not. Is it better to slowly lose money in the market rather than paying for education? No.  In fact, it's harder. Is it better for people to slowly lose money? No. People that don't make money, will they ever figure out how to train on their own? It's rare. I can't say the fact that I was lucky, but I guess in some sense that I was, but I was more very determined. I'm extremely determined. I persevered. I was very determined and I did it and I figured something else on my own with my own live money. I didn't train on a demo figuring out the system I did with live cash. That was very difficult, but that's the right way to do it. Most people can't do it. Most people can't afford to do it. They can't afford the time. They can't afford the money to do what are figured out. Most people can't. So while you could attempt to determine and calculate your own strategy, you probably won't be able to because it's a rare thing that someone can do it. And really, because the market can beat you up when you don't know what you're doing and you're trying to figure something else on your own. And you won't figure it out right unless you do it with real money. Training on a demo is not the same as real cash. And that's what makes it hard when you're figuring out your own system. So I find a lot of people take a little bit of this, a little bit of this, a little bit of that, and they say, well, I figured it out, but they take a little bit of this, a little bit of that, a little bit of this from something else. And it's not really anything new. It's a combination. Combinations don't work. And I've realized actually just recently this year that combining what I know and you would come and learn from me doesn't work with anything else. You really have to focus strictly on what I teach you if you want to benefit, if you want to do well, if you want to profit. Mixing it up with other things is problematic. Most of the information out there that people teach about trading isn't correct or not enough, not enough information for you to make money. One of the reasons I created my own system was because I was learning a little bit of this, a little bit of that, I said, and nothing worked consistently. Nothing, it was not enough. It was information, but it didn't make me money. So I said, screw this, I'm going to figure out something of my own. And I knew there was something to gaps. I just, I just knew it. Okay. So 2019, it's definitely going to be a very volatile year. It's people may not think that now, but it's only February. So trust me, what I say, it's going to be one of those years that you're going to want to trade and make money. Okay. And if you don't know how to do it again, what's going to happen to you're going to lose. So there's like this 90, 90 role, 90% of the people lose 90% of their money in the first 90 days when they start to trade. And you don't want to be part of that statistic. You do not want to be part of that statistic. So you have to learn how to do it from someone that knows what they're talking about. Don't lose your hard earned money in the market. You're going to regret it. Okay. You're never going to learn how to trade, but watching a million free videos. Not even mine, because I don't give the information that's worthwhile for free. You have to pay me for it. It's worth something. My time is worth something. Okay. Well, you may pick up this thing here or there. As far as the stocks that I'm watching, you're never going to learn my system until you take the class. And you won't get the calls on the live day to make the money unless you do the class to join the room. So that's, that's where it's at. And a lot of people just throw money at trades. Oh my gosh, Bitcoin is the worst. I mean, I can tell you so many stories of people I talked to that risk money in Bitcoin two years ago and then lost it all. Everyone was jumping and thinking that was the best next thing. No, you know, stocks are very reliable. I find trading the US market is reliable. I find there's a, there's a reliability to it. There's a consistency to it. It is something that you can learn how to do. Okay. And it's always going to be around. So I teach my classes called the golden gap course. You learn the 26 points. How do I determine what I'm going to trade each morning and look at? And so learning from a teacher is value. The teacher is me. I'm a very good teacher. You know, I do the class, like I said, in a regular basis. And it reminds me every time I do it, how great my system is. And then it reinforces it and confirms it and gives me the own conviction to continue to do well myself. So how much money do you need to trade the golden gap? Well, you need the $6,000 for the class that you need, which you pay upfront and then do the class in two days. Then you also need what you need to have a trading account to be able to actively take trades. Now you can set up the account after the class. You can trade in a demo if you want for the first few weeks or even the first month till you get used to it and then open an account. You would open an account at a broker. You can open a prop account or retail account. Some places require only $2,500. Some places at retail require $25,000. $2,500 would be a prop account. And Google it online is called proprietary day trading. There's lots of places out there for both to use. You can use anyone you want. Okay. So the class, my system is called the golden gap course. You will learn everything in my two day course on how to do the gaps. The class is February 23rd and 24th, nine to five Eastern time. Class of the class is $59.99 classes online. It could be anywhere in the world and take it. Just email me if you want to sign up. Deadline for this week's class is February 22nd. Trends course is February 25th. I don't do this class all the time. You get the combo deal. If you sign up for both, save $500. The trends course is for long-term trades, swing trades and will help you with your day trading. If you want to learn this month and start trading, it's still very early in 2019. You can do it. Email me at melissa at thestockswish.com to register. Have a great day, everyone.


Okay. Hello, everyone. My name is Everett Taves. I'm a developer advocate in the Developer Relations Group at Rackspace, and I'm here today to talk to you a bit about the different programming languages that people are using to run applications on OpenStack. So first, just a little bit about myself. I still do get the question quite often, what exactly does a developer advocate do? It's kind of a nebulous title to a lot of people. So first and foremost, I am a developer. I write code for the majority of the time, meaning, you know, like 50, 60% of the time. I am a PMC, a project management committee member and committer on a project known as Apache J Clouds. We actually just recently became an Apache top-level project, and this is Java SDK for multiple clouds, actually, and it also works seamlessly with OpenStack clouds as well. So the other aspect of this job is the advocate bit, and that's the guy you see doing the song and dance before you today. I, you know, I build things and then run around the world and tell people about them and how to use them and why they're important and what the benefit is. This is me on the various Githubs and Twitters and Google Pluses and what have you. I've also done a fair amount of operations in my time. In a previous job, I was building OpenStack clouds. We actually built the first OpenStack cloud in Canada. It was a multi-region cloud with a region in Alberta and a region in Quebec attached by a high-speed research network. So to that end, I'm a co-author on the OpenStack operations guide, and this book has actually just recently been adopted by O'Reilly, and they're going to be publishing it after we do a bit more editing of it. And it's free to download at this URL here. I'll be tweeting out the link to this presentation at the end a little bit later today, so you can pick it up and find the link from there. Okay, so when I talk about using different programming languages to talk to OpenStack, what am I really talking about? I'm talking about what's usually known as SDKs, what we typically refer to as an SDK, but what really is an SDK? It's a software development kit or software development tool kit. That's what it stands for, and it's a pretty common term in the industry. If you're a developer, you've probably heard it. How many developers do actually have in the audience today? So maybe about a quarter or a third. That's great. Also, can be known as a language binding because you're talking to some API in a particular language, a language that's specifically written for that API. The language is bound to the API, hence language binding. Or sometimes it's just known as a wrapper, and these are all synonyms for the same thing, the kinds of terms you'll hear thrown about when you're talking about these sorts of things or SDKs in general. So where do SDKs actually live? Where would you actually put them in relation to your system? Where do they live in relation to the cloud? How are they used? What are the communication channels? So as we know, OpenStack is just infrastructure with an API. It's a way to access cloud resources programmatically, and in this case, the API is an HTTP restful API that you talk to over the web or over a network. So in the past, people might have just had their system and talked directly to the API, coding to the API, those restful calls, get this resource, post, a.k.a. create some other resource, and doing that directly from their programming language. That's really not an ideal situation for developers. That's not the most productive they can be with their system in relation to using resources in the cloud. What they really should be doing is using an SDK to talk to that OpenStack API because there's a lot of benefits that you get when you adopt one of these SDKs that sometimes developers aren't quite aware of until they're really far down the road in the development of their application, and they start doing that load testing and start doing those more complicated operations, and they start getting stung by certain little edge cases and use cases they might not have anticipated when they started out building their systems. SDKs alleviate a lot of those problems, and if your system is actually running within the cloud, nothing really changes.  No endpoints change, nothing really actually changes. Whether your system is running in the cloud or outside of the cloud, it can still talk to a cloud API, an OpenStack cloud API, the exact same way. Okay, so why would you even bother using an SDK or a language binding or wrapper or what have you? Okay, so you've gone and you've deployed OpenStack, you've installed it yourself, you've had one of the many vendors install it for you, perhaps you're using a public cloud that's powered by OpenStack. Now what? What are you going to do with this thing? You've got this great thing that everyone's talking about and everyone's really excited about, but what are you actually going to do with it? Well, of course, everybody wants to develop applications on top of it. That's really the primary use case for an OpenStack cloud is application development, and we want developers to be as productive and as efficient as possible when they're developing those applications on OpenStack. So how do SDKs help? I would say one of the primary things that they really help with is creating those requests and responses and consuming the responses. So if you're talking to an HTTP RESTful API directly, you have to build up a URL, like get some certain resource, you want to get the server details or you want to post to the server's API to create a server, then you need to create the correct headers so that your request is well-formatted. And then, finally, if you're creating a server or something, you want to put in other parameters that are in the body. So you send the request off to the cloud, and something's going to happen with the API, something's going to happen under the layers of OpenStack, and a body and headers are going to come back in a response to your system. Now, if you're just working with the direct HTTP RESTful API, that's all just text going back and forth, and that's not the kind of thing you're really used to working with in your programming language. You want to be using the objects and data structures that you're used to working with in your language. You want to be able to make a method call. You don't want to be worried about fiddling with all these different little bits and pieces to send off a request. When you get a response, you want some sort of dictionary or map structure that your algorithms are already optimized to use. So you don't have to worry about fiddling with all these different little things and getting the formats exactly right because it's actually really complicated and really finicky to get right. So the SDKs take care of all of this stuff for you. They handle the whole request and response cycle. When it comes to working with OpenStack Clouds in particular, you need to authenticate against Keystone. First thing, it's really the first thing you do every time, you authenticate against Keystone and you get a token back along with the service catalog telling you where all the different OpenStack services live that you need to work with. Now, the funny thing about that token is it's really only valid for 24 hours. It's configurable but typically the token is only valid for 24 hours and you use that token to access the different services, Nova, Glance, Swift, what have you. But if you have a long lived running process like a web server that's going to be running, should be running for days, weeks, months, years, right? Of course, that's much longer than 24 hours. So that token is going to expire. And when that token expires, the request that happens next when you're using that token will get a 401 back and that means unauthenticated. So what do you do? If you were writing the code yourself, you have to worry about, oh, I constantly have to catch this case where you know, has it been 24 hours? Do I need to re-authenticate? If you're using an SDK, that just happens under the hood of the SDK. It will transparently re-authenticate for you. So you don't even have to worry about it in your application code. And this is exactly the kind of scenario that can happen when a developer is just working along if he was working without an SDK, just doing testing. Of course, he's probably not going to be testing over 24 hours. He might not even consider that case because of just doing short lived tests. But then when you go into test or production, all of a sudden, these processes are running for longer than 24 hours and you start getting these errors about being unauthenticated. Pagination is a problem that we've had since the early days of computing science, since the early days of databases. Anytime you have more data than you can bring back in a response, you need to paginate it somehow, just as we paginate or as Google paginates the Google search results because millions are coming back. Same thing. In Swift, you can have tens of thousands, hundreds of thousands, millions of objects in your containers. Just bringing a list of those objects back is a lot of data. So you need to paginate it. And the SDKs help you consume those pages of data really easily as you need them, depending on what's necessary for your use case. If you want your users paging through the data. When it comes to starting up certain resources in open stack clouds, they're not always ready instantly. Take for instance, pun intended, a server in Nova. It's going to take anywhere from one to maybe even five minutes to get started. So you need to wait for it to be in that active state before you can actually start using it and doing something useful with it. And to find out if it's in that active state, you need to pull the API and ask, are you ready? Are you ready? Are you ready? Are you ready? Are you ready? Are you ready? Are you ready? Sorry, that was my impression of an exponential back off algorithm. So the SDKs make it really easy for you to do that. There's usually a utility method that just says, oh, wait for this resource to be in this sort of state. And it's just simple so that when your code will block until that resource is ready and you can start doing something useful with it. Now something that goes hand in hand with state polling, because you're asking, are you ready so often is rate limiting. This is something that a lot of clouds, cloud providers, whether they're public or private implement, just to prevent either abuse of their APIs or possible denial of service attacks of their APIs. So you can only send requests, so many requests per minute per hour per day. And it prevents people from overloading your API servers. So it's just like driving in the car with the kids. Are we there yet? Are we there yet? Are we there yet? Are we there yet? Are we there yet? I've had enough time out. Go to your room for 24 hours. The exact same thing happens in the cloud.  And you might have to pick up the phone and call them and ask them to re-enable your account.  There's going to probably be network errors at some point when you're working with a cloud API. There could be a faulty switch between you and your cloud API. There could be wayward packets. Anything could cause any kind of error when you're making a request to the cloud. The trouble is you don't actually know if these errors are transient. You don't know if they're intermittent or not. It could be just the kind of thing where you need to try again because that switch comes back online or the throughput gets cleared out. So the SDKs can be configured to just retry a number of times when they get an error. If they're getting a 500 back, some sort of problem on the service side of things for the cloud provider. Well, just try again X number of times, three number of times. But if it's actually more than that, well, then there's probably a real problem and you need to kick the error up to your user so they can deal with it. The OpenStack APIs are not perfect. They're pretty good. They're very restful and they're relatively consistent. But it's those little inconsistencies between the different APIs. They've all been developed by the OpenStack developers at different times, at different periods, on different teams. So there's these little inconsistencies between the different APIs. And the SDKs can smooth over those inconsistencies. And you just wind up calling similar methods on similar APIs and getting similar results, even if there's little minor differences in the background. So it just makes it a better developer experience using an SDK. The SDKs are always packaged in whatever is the most appropriate package management system for that language. For example, in Java, it would be in Maven, so you can just add it as a dependency in your Palmfiler or whatever. Or in Python, it would be in PyPI, so you can get it via pip. Ruby, it would be a gem. So it just makes these things really easy to consume and put them in as dependencies in your system. Of course, they're open source. You always want to keep this sort of stuff open. And even the other public cloud providers open source their SDKs, because there's no actual, you know, real monetary value within the SDK itself. It's the service that's providing the value, and it's the service that you're paying for, not the SDK itself. So it always pays to have an SDK as open source. So if there is a problem, the developers can dive right into the code and see exactly what's going on under the hood. And typically, when you get, you know, you have an open source project, whether it's an SDK or open stack itself, you get this great community along with it. In particular, I know that with my work in the J Clouds community has been really positive from the very start. It was founded a long time ago, about four years ago, and it's just been great working with everybody there. And it's really interesting to see the people, the new people coming into the community, trying new things and getting help from other people who have tried those same new things. Or they're just doing something totally different. And, you know, they want to go in a completely different direction. And it just helps feed into the community these different use cases that people come along with and these new approaches that they're trying. And it just winds up being a really strong and interesting and vibrant communities around these open source SDKs. Typically, the SDKs are all in one.  So, you know, if you want to start using, you're using Nova now, but oh, now your provider has deployed Swift. While you don't need to download a new SDK or anything like that, it's already part of the one that you're already using. And you just start calling the methods for those particular APIs. Because we're working with open stack, you're not getting locked into any particular proprietary cloud provider. And in some of the cases, these SDKs are multi-cloud SDKs, meaning they actually work across multiple different either public or private cloud providers. So, you can avoid lock-in. It's not a silver bullet coding to these, you know, abstractions, but it certainly eases your transition when you're trying to achieve application portability and not getting locked into a particular vendor. So, you know, what do you get when you actually adopt one of these SDKs? You get production ready code. Like I said, a lot of these SDKs have been around for a long time and they've been, you know, kicked and beaten and stomped on and just used in every conceivable way and, you know, lots of bugs have been filed, lots of bugs have been fixed. So, they're really ready to go. You get example code. I find that an example can be worth a million lines of code. You know, if you're trying to do something either, you know, just kind of basic in the cloud and you're just getting started, that example that shows you the proper path can be totally invaluable and get you going very quickly. Or if you're trying to, you know, do something a little more complicated, there might actually be an idiom within that SDK, within that language that, you know, makes it easy, but discovering that idiom on your own can be quite difficult. So, the example code can show you the right way and get you moving along a lot quicker. And we do believe in documentation. You know, it's not always the first thing on everyone's mind, but we always make sure that part of what it means to have a feature complete in the SDKs is documentation. So, people can either get started quickly or they can get that detailed reference documentation for the SDK so they know what kind of values they need to feed to the different parameters when you're, you know, trying to create a server or put an object into Swift. Okay. Thank you for sticking with me for so long. This is going well. Let's take a little bad slide break here. This is just plain awful. You know, video in a presentation is never good.  Text too small and obscured. It's awful. Yeah. That's me on a particularly snowy day in Alberta. It was a lot of fun.  Anyway. So, let's start getting a little more, a little more detailed and focused about what we want to do with the OpenStack SDKs. Let's actually define some criteria about, you know, what makes, what really makes up an SDK and let's set a bar for quality for OpenStack SDKs. Some criteria that will help us choose what's an appropriate OpenStack SDK. So, you know, going back to what I was saying before, we obviously need that language binding. It's got to be written in Java or Ruby or Python or whatever to talk to the OpenStack RESTful HTTP API. So, of course, you need the language binding. You need a getting started guide. I mean, this is something that's absolutely crucial to developers. I know that when I go to start consuming any sort of web service, whether it's a cloud API or, you know, an SMS API or what have you, I always look for those keywords, either getting started or quick start. And that's the first thing I click on, because I want to get going in five minutes. I want to kick the tires on this thing right away and see if it can do what I have in my head that I'm expecting it to do. So, if I can try it quickly, that's absolutely crucial. And so, we need to provide that experience for developers who are building applications on OpenStack. It needs that detailed reference documentation. So, when you're doing the more complicated operations in the cloud, you have a guide. You have a reference that you can, you know, get into and find out exactly what it is you need to do. Example code. I explained the value of it earlier.  So, it's kind of a bit of a question whether or not the OpenStack SEKs that talk to OpenStack should be Apache License V2 or just V2 compatible. So, that was a bit of an open question still. So, this criteria is actually detailed here on the OpenStack Wiki. And this is work that myself and some others did in previous design summits coming up with this criteria. You know, we're working towards having a defined set of OpenStack SDKs that developers can use to get started with. So, what are the OpenStack SDKs? What am I actually talking about? Well, on that Wiki, there's also a list of the known SDKs. So, using the criteria as kind of a filter for the known SDKs, what are we considering adopting as the OpenStack SDKs? For Java, J Clouds meets the criteria pretty well. I think all of the SDKs that I'm about to describe aren't 100% meeting the criteria, including kind of the default Python SDKs for OpenStack. But we need to start somewhere. So, for Java, J Clouds does a great job of meeting most of the criteria. For Node.js, packaged cloud is a good front runner. For PHP, there's PHP OpenCloud. This is SDK that was developed by Rackspace because there wasn't really a strong OpenStack SDK in the PHP community. So, this is one that we started ourselves. In the Python world, there's the default Python-star clients. Now, these are actually the command line interfaces also for OpenStack, and they can be used as SDKs. There's also another Python SDK that's going to be known as PyStack coming out, for Ruby. The whole Ruby community seems to have coalesced around Fog. This is another one of those multi-cloud libraries that can work across multiple public and private cloud providers. For .NET, again, this was an area that Rackspace saw where there was a bit of a gap, in fact, a gaping hole. There was no real .NET SDK for OpenStack, so we started OpenStack .NET. Another very strong up-and-coming language is Google's Go. More and more systems are starting to be built in it. I think it still has a way to go before it has full mainstream acceptance, but it'll probably eventually get there. So, again, there wasn't really one for OpenStack yet, so Rackspace has initiated another Go SDK that's going to be known as Go for Cloud, and it's going to be planned to be a multi-cloud SDK as well. Ultimately, where these things are going to not actually live themselves, because they're all separate open source projects around in the OpenStack ecosystem, but we want to bring it together in one place where developers can find everything that they need to get started with OpenStack in one place, and so we want to bring developer.openstack.org into existence, and this was a design session I led earlier in the week with Tom Feifield, one of the OpenStack Foundation members. So hopefully we'll be able to get this off the ground and just give developers a starting point for when they're working with an OpenStack Cloud. So once you've got these OpenStack SDKs, developers are going to start building really cool stuff, and a lot of that cool stuff is for other developers or other operations people. So you start getting this ecosystem of tooling around the SDKs for the OpenStack ecosystem, and for example, there's Chef, which uses Ruby Fog, Puppet, which also uses Fog. Ansible uses PyStack. Vagrant, I believe, uses Fog. Jinkins can use J Clouds to start up build slaves on different clouds. Word is kind of similar to Chef or Puppet in the Java world. It can use J Clouds. There's this PHP plugin for WordPress that will back up your WordPress site to a Swift provider, and many, many, many, many, many more tools built on top of these SDKs. Creating a whole ecosystem. Okay, so now I'm going to do the standard patches accepted pitch. I'm certainly encouraging everyone to use an SDK. I think that's pretty clear. That's pretty obvious. But I'd also like to encourage the providers and the vendors in the OpenStack ecosystem to contribute to SDKs as well. Because really, application developers are expecting SDKs when it comes to talking to an API. This is SDKs are an absolute base level of functionality when it comes to talking to web service APIs like an OpenStack Cloud API. For example, I mean AWS already provides SDKs in all of these languages. They obviously didn't start all of them at the same time and have them all available, but now that they're pretty mature, they're all there. Likewise, Microsoft provides SDKs for all of these languages. Google, their Compute Engine, provides SDKs for all of these languages. So very much, these are expected by developers. And developers who are building applications on top of OpenStack should expect them to. So it's all of our responsibility to contribute to these SDKs. Sometimes the OpenStack contributing companies can get a little obsessed with commits to github.com slash OpenStack. And it's perfectly understandable. I mean, it's their bread and butter. And they also get those lovely stats about the commits. And that's good. And I understand it. But I think OpenStack has matured to the point where the OpenStack contributing companies need to start thinking about commits to other repos around the world about the wider OpenStack ecosystem. And I get that developer time is certainly finite. I'm painfully aware of that. But really, we're in service of the application developers. I mean, that's ultimately what OpenStack is about, is increasing developer velocity so we can build stuff. And so it also enables DevOps and automating application deployment. So Rackspace has been working really hard at this stuff. We started our developer relations group a little over a year ago. And we've been working on these SDKs. We've put a lot of code behind it. And we're reaching out to developers in all different ways and manners. Conferences, meetups, forums, Stack Overflow, Twitter, IRC, just anywhere developers are, we want to reach out to them and help them work with OpenStack. And of course, Rackspace. We've seen HP do a lot of great contributions to both J Clouds and RubyFog. And we're looking forward to further contributions from them on those SDKs. But after that, things kind of trail off. And I haven't seen, at least for the SDKs that are on the Wiki there, if you look at the GitHub commits, I haven't seen a lot of participation from any of the other companies. And like I said, I understand this. Developer time is finite. And it's tough to commit resources to every open source project. But again, coming back to developer expectations, the OpenStack contributing companies need to understand that SDKs are an absolute base level of functionality for OpenStack Clouds. So not to really call out the different companies, but just to give some examples of where it would be great to see some contributions. Or even just saying that these companies are adopting an SDK of any kind to help their developers access their Clouds or the Clouds that they've built for their clients. You know, it'd be great to see Dreamhost adopt any of these SDKs for accessing their OpenStack compute and storage Clouds. It'd be great to see IBM throw their weight behind some of these various SDKs. Canonical loves getting into the mix and most any OpenSource project, likewise with Red Hat or Suze. So all of the distributions would also benefit from contributing to SDKs because, like I was saying before, once you've deployed OpenStack, so what? Now what do you do with it? Well, you want to develop applications on it and you need SDKs to do that. And again, it all comes back to the application developers. And we're in service of those developers. And OpenStack has matured to the point where we need to start thinking about the application developers first and giving them the tools they need to be productive and efficient in the Cloud. So the whole point of the presentation here is simply to please use or contribute to one of the SDKs. Thank you very much. My name is Everett with Rackspace. And again, thank you for your time and attention. There's a few minutes for questions here, if anyone has any. Or afterwards, it's fine too. Yep. Is there a difference between using SDKs for an external project or use Python SDKs for contribute to OpenStack? I mean... Yeah. And what do you mean? Give me an example of an external project. I mean, do OpenStack contributors use SDKs to communicate with other OpenStack projects instead of directly call an API? Instead of directly calling the API. So I mean, we need to make the distinction between application developers. So are we talking about application developers who are building solutions on top of OpenStack and only consuming the API? Are we talking about OpenStack developers who are actually building OpenStack itself? Yeah. Which one are we talking about? It is the same kind of SDK use. Oh, sure. Okay. Yeah. Okay. That's fair. So the short answer is no. Application developers, using the standard default Python client SDKs, those would be used by application developers or by operations people who are writing scripts because it's also the command line interface to OpenStack. So it would be application developers or operations people or DevOps people who are using those SDK slash command line interfaces. The OpenStack developers who are building OpenStack itself, if they're actually in the server side code, then they're typically going to be making calls using the RPC mechanism within OpenStack. And that would hopefully be via Oslo the OpenStack common library. So there is that difference between the two. Although the Python client libraries are a repo under github.com slash OpenStack, they're client libraries as opposed to the OpenStack server code. Does that answer your question? Yeah. No. Okay. Great. Thank you. Okay. I guess my question is what are the most widely used? So I'm on the OpenStack wiki looking at the different SDKs. What are the most widely used ones? My product has a pearl bundled with it. So I'm looking at the pearl one. But if I was to start with something, what would you suggest? The cross-cloud ones, maybe? Yeah. So without getting into like real specific details, one of the things that as a public cloud provider, Rackspace can do is actually analyze what's using our cloud, essentially. The clients that are using our cloud, we examine the user agent. It's one of the headers included along with the request. And so we examine that. And we found that the absolute number one most popular SDK is PHP. PHP is huge. It is still used all over the web by a ton of developers. I mean, Facebook is written in PHP. Second is probably RubyFog. And third is JavaJ Clouds. So those would be the top three that we've seen in our experience as the top SDKs. So a quick follow-up on that. I see two for PHP. PHP dash OpenCloud and Zen service OpenStack. Yeah. So that Zen service OpenStack was one that we stumbled across earlier. And so the list on the wiki there is kind of a full list. It hasn't really been filtered yet. I don't really know what kind of shape that the Zen OpenStack one is. So you're talking about PHP OpenCloud. I'm talking about PHP OpenCloud. Okay. Cool. Thank you. You're welcome. My question is how J Cloud can be applied in OpenStack? So is there any example for it? How can Cloud... Yeah. If I want to use how I can do... Oh, how you can use J Clouds? Yeah. For OpenStack. Okay. Yeah. So I mean, do you have an OpenStack Cloud yourself on premise? Okay. So I would encourage you to go to jclouds.apache.org. And at the top, there'll be a link that says providers. And by providers, we mean what are the different cloud providers that work with J Clouds? If you click on that, you'll get a list of all the providers that J Clouds works with. One of them is OpenStack. So if you click on OpenStack there, it'll show you a couple of quick examples on how you can get started using J Clouds with OpenStack. And if you have any problems, come visit us on IRC. We're hash J Clouds on FreeNode. If you just search for J Clouds, you'll see how you can... Again, you'll hit the jclouds.apache.org. There's a community link. You can join our mailing list. And we're happy to help people getting started with it. You're welcome. I want to know if there is a guide to how to organize our source code. I think specifically to the automatic test, when I tried to implement an application and I didn't find help... Sorry, it's in... English is not easy for me. I think about... I see that there is automatic test with stocks, with tempest, with a lot of things. I don't know if there is a recommendation to be a two-auto test for the product. So automated tests for the product in relation to a particular SDK. For Python. Oh, for Python. Yeah, so I believe that... I'm not actually familiar with tempest. That's what you were referring to, right? Or whatever, just something for testing clouds. Currently, I have an application. I need to do auto test and with Jenkins. And currently, I don't know what is easier way for me to start. Okay. So you want to automate your testing. You want to start doing continuous integration. Okay, great. So Jenkins is a great place to start. You need your unit test to eat. That's job number one in your code, is have it all unit tested. And then adopting a tool like Jenkins is a great place to start. You can use, and I'm just about out of time here, you can use... There's a J Clouds plugin, actually, for Jenkins that can start up Jenkins slaves on any clouds, including OpenStack clouds. But really, that might be something you need later. Yeah. Just use Jenkins or Jenkins as a service, like CloudBees. If you don't want to run your own Jenkins stuff, just as a way to start learning about it and kind of figuring it out. Does that help? Maybe we can talk after, sure. Okay. So I guess we're out of time here. I can, if you want to ask a question afterwards, that'd be great. Again, thank you very much.


Okay, welcome to rock paper scissors gooey version using TK inter by Tokyo Ed Tech That is me quick shout out to my channel members Kevin and Paul tonight I'm gonna show you or today is wherever it is wherever you're at I'm gonna show you how to make a quick rock paper scissors gooey version So let's take a look at what I'm planning to do now this program I'm sharing with you is actually done by one of my students and I thought she did a really great job with this So I want to show you what she did and I'm gonna walk you through the steps to recreate that So I'm gonna go ahead and run that and you can see that this is a gooey version of rock paper scissors And you see here it says junk in that's because here in Japan we call rock paper scissors junk in Or don't know why this is their word for it. So I'm gonna go ahead and click rock So you can see here the computer chose rock. I chose rock and the result up here is a tie So I'm gonna show you how to do this. So a couple things the way gooey's work We've got some different gooey elements here. We've got one two three four buttons We've got a label and we've got a second label and we actually have a third label here So what I'm gonna do is I'm gonna go ahead and recreate that as closely as I can and you can see There's a bunch of code here and we'll walk through how to do that. So you can see These are the various You know labels Buttons etc etc. Now if you don't know how to do a gooey I'm assuming you know a little bit about TK inter for this particular tutorial I have a couple other tutorials that actually walk through it a little bit more step by step But let's give it a shot here. Okay, so first thing I need to do for my gooey is to create The actual window. So I'm gonna be using the TK inter Module and I'm gonna make a root window equals TK inter dot Shit, I don't remember the code. So I'm gonna go cheat over here. It's TK dot TK. That's right TK That actually creates your your root window And then at the very bottom the very last line of my code should be root. It's root dot main loop Okay, so I'm gonna go ahead and save that and run it and just test it and see what happens So you can see here. I've got my little window now Okay, so if you remember we had a title and that title Was junk in for the Japanese version. We'll call it rock paper scissors And put by Tokyo Ed Tech a little shout out to myself there So again, if you're not sure I strongly recommend just testing things and making sure that they work You know as you're going along and if you recall She already measured it out. So thank you to my student. I'm not using your name because she's Not she's under, you know, 18 so root dot geometry and I think she had it at 400 x 500 And we'll go ahead and stick with that and for some weird reason. This has to be in quotation marks It's it's not weird reason, but that's just the way it is. So let's go ahead and test that and there we go. So This is our basic root window. So you can see how easy that is to do in TK inter So what I tell my students is to design their GUI first So what we did was we designed this on paper and then we create our widgets So if you recall we had a widget for the result a widget for the player's choice a widget for the Computer choice and some buttons for doing things. So I'm just gonna go over to here and Take a look at that. So we got some labels Okay, so I like yeah, I thought she did a great job here with naming everything. I was really really happy to see this Again, you don't have to be this, you know precise I guess with your naming, but it just makes life super duper easy, especially for beginners So I'm gonna just get started with that. So label Result equals TK inter dot result And it's not a result that is a label. Sorry so TK inter label and it's gonna go into my root window and When I start it my text is going to be You know choose something like that and If I run this now again, if you haven't seen my other GUI tutorials, you might not be familiar with this So if I run this now You don't see anything. Okay, so you also have to In this case, we're gonna use pack. It's one of the built-in geometry managers There's like there's a few different ones, but pack is the simplest one and Label is not defined. So this is label underscore result not label dot result Not bad. And now you can see the label is there and the text choose is also there so Next we had the button for rock button for paper and a button for scissors. So I'm gonna say so button rock equals TK inter dot button It's also going in the root window its text is going to be rock and For buttons, we need to connect buttons to a function So in this case, I want to connect it to the function called rock and Same thing button rock dot pack Now if I run this I'm gonna get an error. Let's take a look at that Okay, so you can see down here Something beginners really got to get used to doing is reading these error messages because they tell you basically what you need to Know for the most part and you can see here line 16. So this line here It says button rock it tells you the actual code that you typed in it says name error rock is not defined So what's telling me is it doesn't know what this rock is and of course it doesn't know because we haven't created the function yet So what I would do at this point is type create functions And I'm gonna go ahead and create my function. So rock. I've got rock and Since I don't know what codes in there yet I'm just gonna type pass passes a placeholder and we'll delete that later And I'm also gonna have paper and I'm gonna have scissors. I think there was a reset function. So resets and pass So let's go ahead and do that Okay, so now let's run it and see if we get an error. Okay, great. So rock Okay, he doesn't do anything yet because the function only passes but let's go ahead and just do the rest of our gooey first So we're a button for rock paper and scissors So I usually do this a lot you'll see I get something working and then just copy and paste if I'm just making a few changes Yeah, this is something I do recommend to beginners, especially and Is to be careful with your name so button scissors calls has a label scissors and It calls a function called scissors So it's just really really Consistent and kind of easy to understand. Let's go ahead and test that make sure everything looks like it should okay So rock paper scissors and Then we also have the labels So I think the way it was done. We had label computer choice We'll start that out blank with nothing And again, we got a packet and I'm gonna go ahead and copy that and make a label User choice So this is where we'll display the rock paper scissors and then finally we needed a reset button So I'm gonna go ahead and make that real quick as well reset text and command Again, I can't emphasize enough just consistency and naming It's just really gonna make your life super duper easy So let's go ahead and test that one last time. So basically I've got my GUI setup Yes, I've got my result label here. I got my buttons here I've got my reset button here and notice there's nothing here because we haven't put anything into it It's just blank text No, so the next part is Really to deal with the logic of the game So let's take a look real quick at the the outcome matrix for this particular game So you can see here We've got three choices For the player three choices for the computer rock paper scissors in both cases So if the player chooses rock your chooses rock We got a tie so you can see our R is a tie PP is a tie and SS is a tie Now if the player chooses paper and the computer chooses rock The player is the winner because paper covers rock However, if the player chooses scissors and the computer chooses rock then the computer wins So you everybody's I think almost everybody in the world is familiar with this game. So This kind of shows how it works. So we need to code that into our game So a couple things we got to think about is how do we get the computer to make a choice? The user is making a choice Based on which button he or she presses but the computer choice needs to be random so What I can do here is I can use the random Module I'm gonna do is I'm gonna say you know random number equals random That ran in and we've got three choices so one two or three and Then what I'm gonna do is I'm gonna convert that so if random Number equals one computer choice equals rock L if random number equals two then computer choice equals paper and I Could do an else here, but let's do an L if just in case There's something wrong with our code and we don't recognize to and say computes computer choice equals scissors all right, so The computers made a choice at the start of the game notice This is out here in the global space and normally we don't really recommend using global variables But we'll just go ahead and do it this way this time Just because it's probably a little bit easier for beginners It's something as you as you learn a little bit more you learn ways to get around that but for now Let's just keep it simple. So Let's just go ahead and deal with the rock So again back to this outcome matrix So the computer so the player has chosen rock so the computer can choose rock paper or scissors So if it's rock and rock we have a tie if it's rock and paper the computer wins And if it's rock and scissors the player wins So because I'm inside the rock function. I know that I can Assume I've chosen rock. So what I can do here is I can say You know deal with the you know choices So if just like my student had she did a really good job here if player choice actually I'm not gonna say that because we know the player choice here is rock So I'm gonna say so if the computer choice Equals rock right now, I'm just gonna say print you know tie L if Computer choice equals Paper say prints so paper beats rocks a print computer wins And then otherwise our only remaining choice is that the player wins I'm gonna code it straight out just in case computer choice equals scissors Print user wins or player wins will say okay, so let's go ahead and just test this out Okay, so when I hit a hit rock And you can see down here it says player wins now We don't actually know what the the computer choice was but we're assuming That in this case the player won then the computer choice was Scissors okay, so what we need to do is we need to display that information in the GUI okay, so We've got three labels. So we got label result Label computer choice and label user choice. Let's just go ahead and do that then So if it's rock, we know the following so we know label user choice and I'm gonna do this method text equals Say I'm gonna put rock for now and I'm gonna say label while we don't know rock so in the case of Tie so we know that the label computer choice And this is how you change the text in a label equals rock and what I can do there now is copy this and And the same thing here Texts scissors and instead of printing I want to say label results Text Equals and here this is gonna be The computer wins and this one's gonna be player wins. Okay, so let's go ahead and test it. Okay, so I'm gonna go ahead and hit rock Okay, scissors rock player wins Okay, now Nothing changes here. So the reset doesn't work Let's go ahead and implement reset real quick So reset so when we reset the game the only thing we really well a couple things we need to do is we need to do this again So I'm gonna go ahead and just copy and paste that here and indent that all But the thing you have to remember is that these are global variables again We're it's not particularly a good programming practice to use but for now. We'll stick with those. So we've got Random number and computer choice Now I don't really need to worry about random number at this point But I do need to worry about the computer choice. So I'm gonna say global computer choice and the reason is That computer choice is accessed outside this function So I need it to be able to access this global computer choice variable and That's why I use the global keyword Okay, this random number. I don't only need to use it in this section. So I don't have to worry about that Okay, now I could just basically I could simplify this take this out and make just do a function call But I'll just leave this for now because it's a little bit easier to understand and I think it's yeah, it works So let's just leave that there for now again This is a you know tutorial for relative beginners, you know my student whose code I showed you earlier She did such a great job Yeah, she's only been coding for like three and a half months And so I was really happy that she was able to convert this program To work with a gooey it was her choice to do this. This was kind of an open-ended project. So great job for her Let's see. Okay, so let's go ahead and test that So I'm gonna hit rock. Okay, so scissors and rock player wins. I'm gonna hit reset Click this again Okay, so you see paper computer wins reset Okay, scissors player wins. So it looks like it's working Okay, now we got a tie. So we've seen all three different examples So the next step is to kind of make it look a little bit better. Well, actually, maybe the other thing is with reset We might want to reset the labels. So label Computer choice You know text Equals, you know blank label user choice Text blank and I guess result as well. So label Result label not label label result Text Or maybe just I think I had it as choose initially something like that No parentheses. Let's test that real quick. So rock player wins is rock reset choose rock Okay, I think I'm pretty happy with that now. I want to get in there those really cool ASCII Designs that my student was using so You can see here We have a rock shape. We have a Paper shape and we have a scissors shape so One kind of way I'm going to make this code just a little bit more efficient is I'm going to take these images and Put them into a variable So what I'm gonna do is I'm gonna copy this Again, this will be linked to my my github. I'll put a link down below so I'm gonna say You know ASCII art So I'm gonna say rock image equals and Notice I'm using three quotes. So I'm gonna use paper image Equals and I'm gonna do scissors image And so again, I'm just gonna copy this from my students And but you know, you'll be able to copy it from my github So let's see here three And the scissors image is going to get that oops I do paper. Let's make sure you screw that up. That's scissors. That's scissors. That's not paper do Copy that. Okay, so All right, I think it's good. So what I'll do here is if the computer choice equals rock I'm gonna go ahead and put rock image And then here I'll put You know paper image Here I'll put scissors image And then up here I will put rock image So that way I don't have to keep having these images, you know all the way through the code Okay, so we hit rock Okay, so there's mine and there is the Computer now you can see how it's a little bit messed up. Okay, and that was that was to be expected Okay, so I hit reset and test it again Okay, so far so good and the reason that this is messed up There's actually there's two reasons is that the label is automatically centered and So that's kind of throwing things off and the other thing is that the font is Proportional font so the width of the characters is different Depending on the character and we don't want a proportional font. We want a non-proportional font so What I'm gonna do is I'm gonna go down to my labels And I'm gonna take a look at the code my student has just to make sure I don't mess this up so In the label, you know widget created creation We need to choose the font And this you should have courier on your computer Hopefully if not, you may have to choose a different font that is mono spaced And we justify it left and So you say justify equals tk enter left note. This is in capital letters And the font is courier. So now if I save that and run it And I hit rock Now you can see how it looks just like it is supposed to so the computer wins because the computer chose paper I'm gonna hit reset hit rock Player wins because rock beats scissors and reset And rock I'm gonna tie because we have two rocks here. It's pretty cool. Um, it's working just exactly as expected and Yeah, that's that's pretty cool. The only thing I might change on this program is I might put the result down below. I'm gonna put that Down here before the reset button But after the labels, I think that for me that works a little bit better So I'm gonna go ahead and run that and test it So I'm gonna hit rock Okay, so we got scissors versus rock player wins. I kind of like that just that arrangement a little better Um, yeah, I think we can go with that So now basically all I need to do Is to do the same thing But for paper and scissors Okay, so you can see how compact this code is And just kind of makes it a little bit easier to code it. So I know this is working as it should So I'm gonna copy that and paste it into here And so in this case the user is choosing paper So if it's paper, it's a tie If the computer So it should be a paper image Because that's what the tie so paper and paper Um, what else right here? So the computer choice equals Rock So paper beats rock So actually we'll make the scissors since the computer wins And that's going to be scissors image And down here this should be rock Because rock No way paper. Yeah rock. So player So the computer has rock Player has paper player wins And the computer choice is rock image Okay, so You got p here paper image here. You got s here scissors image here You've got r here rock image here. So let's go ahead and test that and play around with that. Just make sure it's working Okay, so we hit paper Okay, so we got scissors And paper computer wins. Let's reset paper um Computer wins again. So we're going to reset make sure it's resetting Okay rock play player wins because the player chose paper I'm gonna hit reset. I'm gonna hit rock and just make sure that's still working computer wins Because the computer chose paper Okay, so I think it's working pretty well and then we got to do the same thing for the Scissors choice by the player Okay, so in this case it's going to be scissors oops and so if the computer choice is scissors, we've got a tie And this should be the scissors image and if the computer choice equals What does what beats scissors should be rock? Because rock beats scissors And we would use rock image here And then if the computer choice is paper player wins and paper image Okay, so let's go ahead and test that last one So I'm gonna hit scissors So scissors and scissors tie so reset Scissors so scissors and rock rock beats scissors computer wins reset Okay, scissors beats paper player wins And then again, it's good to always go back and just test to make sure everything else is working as you expect it And we've got a lot of ties here Tie I'm hitting reset Time hit reset Okay, so I found that with decanter and not decanter, but with the random module I do find you get a lot in a row of the same. It's it's always disconcerting Um, so I'm gonna hit reset there and test out rock Can you get a tie? Okay, and rock paper beats rock computer wins So yeah, that is that is it that is the gooey version Of rock paper scissors and again a lot of thanks Many many thanks to my students who again did such a great job with this And I wanted to share that because I I love to share my student's success and uh Yeah, so again, she did such a really good job converting our text based version of this program to use a gooey again after only three and a half months of class so, you know give her a round of applause And uh, you know, again, I'll put this code A link down below. So if you haven't subscribed, please do if you're thinking about it Please become a channel member and support the channel more directly and uh, yeah, keep on coding. Take care. Have a good one