All right. Hey, everyone. I'm Hershey pronounced like the Hershey's chocolate. So excited to be back here at product school. And today I'm going to talk about creating closed loop feedback with data driven decisions. So as PMs every day, every hour of the day, literally, we are using data to drive decisions for our roadmaps. However, customer feedback is so important and having a closed loop feedback in processes even more important. So in the next 25 to 30 minutes, I'm going to share some strategic and tactical concepts that we have seen work with our customers and you know, we applied here at Gainside. And hopefully you'll find some actionable takeaways from from the session. And a little bit about me. I'm I've been at Gainside for about a little over two and a half years heading up the customer success team for our product line Gainside PX, which is centered around capturing product usage analytics and driving in app user messaging and service again to drive data driven decisions, but also orchestrating entire user journeys. So day to day, I'm dealing with all the product managers product leaders from companies of all size and segmentation. So lots of learning and exchange of information there. Super excited to be here. And please put in your questions that you may have in the chat and I'm happy to take it as the session ends. So what are really the goals of creating a closed loop feedback. Essentially, it's for our teams to have actionable insights. So if you break it down in sort of two categories. First, I would think is primarily for our product team. Second is primarily for our customer facing teams. So for our product teams, you really want to have a voice of your customer their sentiment in the roadmap decisions that you're making for your upcoming sprints and overall strategy of your roadmap. So you want to get their sentiment or their voice around any new features that you're planning, or also particularly identifying friction points so you can improve existing workflows and effort scores that you may have in place and ultimately help them to get the time to value and outcomes very quickly within your product. The second goal essentially is identifying potential advocates for your in your customer base so they can talk to your references or give you nice GTC reviews and whatnot and do webinars for you. And for your customer facing teams, it is also essential to identify at risk customers and get ahead of it before your renewal discussions and have a pat to green. So these are essentially the high level goals of creating a closed loop feedback and how you can leverage all of this data in your roadmap decisions. Now what could be typical challenges I mean we all know about closed loop feedback you know we all know what the goals are, but what are some day to day challenges you may be running into in creating a program around closed loop feedback. So number one is low survey response rates with emails the typical channel that we're using today are emails, and we all know like the survey response rates about are about two to 3%. So that is not really good enough data set for us to make roadmap decisions just based on two to 3% response rates of our customer basis. The second challenge is having an effective plan in place. So many a time we would collect feedback but we are not really closing the loop or don't have a nice plan in place to close the loop with our customers. And thirdly, scalability to run a feedback program. You know, many a time we're trying to close the loop by getting one on one interviews or as a customer basis growing, we may not always have the means resources time and the bandwidth to scale our feedback program. In my next few slides I'm going to share some strategies tactics and tips to overcome all of these challenges and help you build out a scale close loop feedback program. So here are four strategies. Number one, it is very important to identify your goal and the eligibility criteria. So defining your objectives of the survey because they're different types of surveys. Identifying that goal is super important so we can choose the right type of survey and I'm going to talk about this in one of my next slides.   So really identifying whose opinion matters which persona matters. So you can define an eligibility criteria for your surveys. Secondly, having an action plan is super important. So a few examples are once you identify a potential at risk customer to reduce churn. What are your what is your playbook what are your steps that you're going to take to turn that sentiment around Incorporating product risk in roadmap decisions now we all have those customers in our customer file where they're like hey if this feature doesn't come out. I'm not going to renew so identifying those situations incorporating that in your product risk, which you can ultimately make a decision in your roadmap. Now again, marketing teams love this. So having that action plan in place is great to close the loop around the feedback that you're collecting. Thirdly, leveraging technology to scale. You know we all doing email responses but how do we follow up how do we close the close the loop in a scalable way is super critical, especially as the B2B space is booming. So how do we scale our programs in place so thinking of automated email follow ups right to in product responses, creating CTAs and slack updates for your customer facing teams to follow up with with your customers survey response analytics for your pms and pmm so that they can look by each feedback one by one, but also they can review overall trends and comments that are coming in that can help them to categorize their overall service. And fourthly, standardizing or centralizing your efforts. There's so many different customer facing teams that touch our customers lifecycle so for example, once you close the deal there is services team who will come and on board the customers. Then there'll be CSM team then there is support team then you know there'll be product teams talking to them. So really centralizing the multiple feedback programs with the multiple teams in place, putting them on timeline so to avoid fatigue and also inconsistencies around capturing feedback in a timely manner with your customers. So these are four strategies that can help you define what that closed loop feedback looks like and developing a nice and scalable program around this. So let's go into now how we can implement these strategies. So if you think about this three step this is a good three step framework to implement the strategy for closing the loop. Simple. This might look like oh hey I already know this right. But there's some points here which from our experience and working with product managers that we found very useful to implement. So when you're listening or listening to both the qualitative data and the quantitative data. So what is qualitative data it is pretty much you know what you're hearing. First hand from your customers directly or from your customer facing teams your CSM your support teams your sales team. So that's all that is qualitative data and it's called very unstructured way of collecting feedback. So as much as that is important quantitative data is important as well. So that is the surveys that we want to trigger to our customers and hear from them firsthand, but in a quantitative way so really looking at you know what the survey data is showing, comparing it with the product usage analytics as well. So let's say if my enterprise customers specifically admin role give me this particular feedback that helps me put things in perspective and compare it with other similar feedback that I may have gotten based on their usage of the product where they are in the journey what's their role what's their role. So again combining that qualitative and quantitative feedback, and then that quantitative data further thinking of two things one is the feedback and the survey that we collect survey responses that we collect from our customers. And secondly the product usage analytics that we have to sort of marry that data and see what are the trends coming out and validating it with the hypothesis and qualitative data feedback that you're hearing from your customer facing teams. From there, analyzing the data like I mentioned enterprise customer or admin user role. So really segmenting cohortizing your customers slicing the data is super important. So you know the three things typically want to think about when you're analyzing the data and how you can slice it up or cohortize it. One is your customer segment. So always I'm sure you all relate to this that the enterprise goals of customer the enterprise enterprise customers their goals are very different than the customers when the SMB segments. The way each of these segments utilize your product the feedback that they have enterprise always thinking of enterprise great features scaling multi product and whatnot. So always thinking of okay, what are my customer segments here breaking your data when you're analyzing based on that. Secondly, your life cycle of your customer customers who are in onboarding versus who are in adoption customers who are in year one versus year two customers who are in first seven to 15 days versus customers who are in 30 to 90 days. Very different goals, very different experience. So again, when you're analyzing the data breaking it out my life cycle. And then of course you want to look at their usage as well. So when you're capturing that feedback and analyzing the data, look at how their usage has been somebody who has not used the product. Now, you know how much would you give weightage to their feedback and services responses. So these are some things to consider and attributes that you want to add in your tools where you're analyzing the data of course in the inside px you know these are out of the box options that are available but any other tool that you're using I'm sure they offer these kind of functionality so it's always good to take these attributes into into consideration. And lastly, acting on the feedback right now there are two ways broadly I think how we can act on the feedback is number one. We're not really reviewing the feedback and seeing and categorizing hey is it really a roadmap request or enhancement, or this is actually a user knowledge or training gap that we can overcome by providing guidance to the customer, either why our customer facing team or through in app guidance and messages. So providing guidance or making changes in your roadmap to improve workflows and improve customer sentiment. These are typically two ways you how you want to close the loop with your customers. So going double clicking into number one little bit here. So how do you listen right so map your feedback to a timeline. And for that what is important is identifying your goal of what you're trying to achieve with the feedback as you can see there are at least five types of surveys today that we have in hand. You don't want to overwhelm your users. And at the same time you want to have a very clear objective very clear goal of why you want to collect feedback. So once you are looking at the feedback goal so for example, your onboarding is finished and you want to get feedback how the onboarding experience was. You use a CSAT survey for that or how the support experience was, or if you're trying to do roadmap decisions, then you know for you want your goal is okay how was the intuitiveness of my product for my first time users, or how powerful is my product so that you know to target your frequent users. You want to you know your goal is how was my, how was my new release and product enhancements. So for these you typically want to do customer efforts score. So really identifying your feedback goal will be number one that we super important. And from there, like I mentioned in the strategy. That was the number one strategy was identifying your goals and whose opinion matters so so the responder column helps you define is this feedback targeted at end users or buyer and then further breaking it down by user roles or personas. And then then you define what is the frequency and so here's a typical you know the suggestion that we have put that we've seen works very well. These are the types of feedback goals for that you know quarterly by annually feedback frequency that works and here's a typical month this month basically talks about once your customer your prospect becomes a customer it is their month one and six or month five and 11. So this is a good framework to think about when you're applying a closed loop feedback program. So once you identify your goal responders, map it to a timeline. Right. So here's the month one post contract of my customer. They're in onboarding phase I typically want to trigger CSAT in month to week one from there in month to week week two or three because they've spent about three months two months in my product. Maybe I want to capture customer effort score and understand how was the user intuitiveness for my first time users. Then in month four you want to capture the buyer NPS month five you want to capture quarterly NPS from your users as well because they've spent four to five months enough time in your product. So once you've mapped it to a timeline, you know, map it to the channels where you want to which you want to leverage to capture these feedbacks. So in product is a great way than the other channels like email one on once your community online community that you may be having. So once you've identified your goals and objectives your user roles, map it to a timeline to find the channels you want to use and then from there go on and implement this program. Now once we have put this program in place you started collecting data, how do you analyze all of this rich feedback that your customers are taking the time to provide. So analyzing the feedback as I was mentioning slicing the data by various cohorts as you can see these are screenshots taken from game site PX these are some out of the box reporting available the filters as you can see on the right. This is an example of using different filters and co-hortizing my survey data right so I'm really looking at folks who are product managers who are in the game site PX product. And they belong to the enterprise segment of customers and also are in adopting stage they are not first time users or they're not an onboarding stage. So analyzing and co-hortizing slicing your data is super important so that you can really focus on the right persona right cohorts as you're driving the decisions but also passing on the feedback to your customer facing teams for example enterprise. We are very high touch so it is great to bring in your CSM so that you know they know about this and they can have those one on one conversations interviews with your customers. So analyzing the data by various cohorts super important. Then is the onboarding experience is another example onboarding is super critical in a customer's life cycle and journey. So you want to you know put a probably a multi-question as survey and understand how their onboarding experience was so that you can optimize their onboarding experience their journey with you. And also in future how can you reduce the time to value for your customers so that you know your product becomes more sticky in the first initial days what was their initial experience with configuring and setting up your product. So those are you know good questions to ask and to be curious about how their onboarding experience was not just with your team but also within your product. Did they have access to the right documentation that they needed how easy or how hard it was was the time something similar to what was promised to them and sales or what they were expecting. These are great questions to ask and from there gives us good data points to make decisions as to in what parts of the organizations we want to change is it. Is it the you know changes the services team that we need to make is it to change in the product flow that I need to make maybe improve my documentation. So really helps you understand area of improving the customer experience and where you know there may be delays and how can we reduce that time to value for our customers. Thirdly you can use this data to learn about user priorities and again these are all screenshots from Ginseng PX these are like out of the box supporting this is a screenshot of multi-question as survey so you can really learn about your user priorities as you are planning your roadmap. And understand what do different cohorts care about and you know before your release and then once you made the changes in your product then capturing their sentiment after the release. So again very powerful tool surveys and feedback to get your voice of the customer in your roadmap and also getting ahead of any potential at risk or you know turn customers. This is another example live that we're right now running in Ginseng PX gotten feedback around hey the editor experience is not super intuitive. So what we did was we we triggered a customer efforts code triggered it very contextually so we identified our audience criteria is now again in Ginseng PX it gives us a lot of flexibility to identify the right cohort target audience that we want to go after so. You know users who've been in the system greater than 30 days and segmenting it by customer lifecycle your ARR but also most importantly when they have taken the specific action where you know we want to capture their deeper feedback. Going through those four or five steps at that point triggering the survey in the product and capturing there in the moment sentiment that is super key here and also collecting comments of you know understanding why they gave a seven or two or a three and then you know you can prioritize the feedback based on the the stage their persona the revenue impact it will have and your if it goes overall with your long term strategy of the product. These are some experiments and you know feedback loops that we are running within insight as well. Lastly, once you've collected you know implemented the program collected all this rich set of data you've analyzed it. Now how do you act on it. So to close the loop to close the loop very effectively you need to be sure that it is timely. You know you need to act after the feedback shortly after it's provided not to you don't want to too many days to pass by otherwise it loses its relevance and the customers already lost the trust in you. Also having you know that accuracy having a very clear and specific idea about the customer's relationship with you to date the the events that have taken place the usage that actually led to their feedback so having that you know accuracy and clarity about those customer relationships again if you're using products like inside PXES you have all of that rich context along with the feedback when you're collecting it in the product. And then having you know having an action plan proportionate to your segment of the customers of different customers will have different needs. Different personas will have different needs you'll have different segmentations based on the ARR so how can you also tailor your responses or thinking of these three things, timely accurate proportionate when you're defining the program around how to take action. So some examples and ideas that we've seen work with you know hundreds of customers that we work with or some things that has worked for us as well here at Gainsight is set response and cohort based on automated email follow ups so for example, if a customer has responded with a promoter or a passive or a detractor having your three different templates around that. And also having templates around like based on hey these are my enterprise customers versus these are my SMB customers so having that automated email follow ups that will help you scale as a company now of course if you're using a tool like Gainsight PX it lets you close the loop in an automated way. If you're using Gainsight CS as well you know it creates CTAs for your CSMs especially enterprise customers to tell them that hey you know this user from this customer base gave this response to CSM go and follow up with them. So again this is recommended in enterprise customers otherwise the program doesn't become very scalable if you have your customer teams follow up. Also identifying your customers where you want to conduct one on one interviews. So again identifying whose opinion matters going over the comments and really learning about their new challenges and sometimes again it may come out as hey this was just a user knowledge gap so providing them that guidance over a call or via documentation or via in product guidance because if one user has that comment for you or feedback for you it very well might be that there are other users having similar journey in your product so then how do I scale that experience of providing guidance to my users. So in product guidances and walkthroughs you know which we very regularly do using our Gainsight PX platform is super critical in improving these experiences for your customers. Also you know you can improve your documentation use knowledge center bot like we have a checklist like a bot which sits in the bottom of the of the product and we place our most frequently asked questions in documentation there as well. And also then you know when you're conducting one on one interviews you've learned about new challenges and they're really like hey these are good things to be added to the product you review with the product team for specific roadmap changes. These are some like simple basic ideas to start with as you're you know putting an actual action plan in place. And then there are some advanced ideas as well so you can you know collect feedback from beta programs and early access users before it is you know G8 to your rest of the rest of the team so again closing the loop there is is a very scalable program there to put in product ways for your beta program for your early access users so not always having to do one on one interviews but you can very quickly collect the feedback make changes to your roadmap before you G8. Another advanced way is you know when you're doing release surveys you can do survey check sentiment checks before and after the release to learn what works and what doesn't work great example is like a CS score. Let's say if you're targeting on improving a workflow you know this is a common challenge or pain point across our customer base. So collecting that CS survey before in completion of that workflow making your roadmap changes you know released it and then collecting the feedback after and seeing what worked for them what did not work how the you know ratings differ. And then you know message any upcoming roadmap items as well that is another way you can close the feedback because you know hey these already on my roadmap customer thank you for your feedback really appreciate it. So these are some advanced ways of you know programs that you can put in place to close the action is super simple not very high effort, but definitely high ROI. And then thinking about your strategic accounts which have the biggest impact on your retention numbers on your expansion metrics dramatically which can, you know, really swing the numbers they're not some metrics for your overall company. So tracking product risk against IPX we actually like you know, when we capture feedback from the customer if we determine there's a potential risk to renewal, which is specific to the product roadmap item. We actually create a product risk, you know the CSMs can provide that invaluable product feedback and really understanding the use case and what what solution the customer is looking for. And the product teams uses that product risk and prioritizes deep prioritizes based on the revenue impact it might have and how it sits well with their roadmap strategy overall that they're thinking. It's important for pms to balance out features and you know, held accountable for revenue attribution as well so so increasingly you all may be seeing that the jobs or the expectations of the pms are evolving and going beyond just shipping features but balancing feature requests and being held accountable for really attributing your features and roadmap to the revenue attribution and retention numbers. So, these are some ideas you know can work cross functionally with your teams to close the loop and feedback with your customers. So here's an example of one of our customers Autodesk who's using PX to actually go from a program of insights to action this is the program that they call it insights to action. If you're interested you can actually go to pulse everywhere from from June where Autodesk actually also did a 25 minute deep dive presentation on how they rolled out this program what was their challenge and what was their pain point. But here's a summary of you know what they were trying to achieve is they really want to you know measure user sentiment so they can very early on get visibility into the customer journey that can help their product teams to use that feedback for the roadmap items and also for CSM teams to get early insights into new risks and Autodesk is a desktop application. So you know there are not many tools out there actually very limited a couple of tools that allow for desktop in product surveys and messaging and you know offline tracking. So they use Gainsight PX to do that. And here are the results. 30% improved response rate from the 2% email response rate that they used to give can you look at the look at that number massive increase right 28% increase right there. And they you know because they're a global company they also localized the languages of the surveys into 16 different languages with that survey and got a 30% response rate. So get super efficient for them super scalable for them and super valuable feedback for their product teams and and data science teams. And from here you may be wondering okay hey great Autodesk got a 30% response but what is the really the benchmark what is the response rate I should aim for my size of the company. So here are some survey benchmarks know that we have looked at our data sets in Gainsight PX and and we were able to come up with some of these benchmarks from the surveys hundreds and thousands of surveys that our customers have been running using Gainsight PX. So the average response rate as you can see from this graph is about 27% for in in product survey types right now in that as you can see based on the survey type. They're the benchmarks differ but on an average about 27% for NPS as you can see is about 25% bullion is the top one almost close to 40% because it's a simple thumbs up thumbs down customer effort score also typically it's 127 doesn't take from the customers again close to 40% 37% response rate. As you would have expected multi questionnaire has the lowest response rates from a benchmarking point of view so about 20% but still not bad compared to email response rates. NPS about 25% rating about 32% because again ratings also a simple one. So here are some great benchmarks as you're thinking of launching your in app or surveys programs. These are good benchmarks to refer to. And also doubling down on multi questionnaire survey you may think hey, how what is the right number of questions I should put in. So you can see the average response rate is about 20% for MCQ surveys from one to 10 questions questions now 10 is of DC as we increase the number of questions the graph is very obvious here that the response rates are going down. So typically, you know, of course the one question highest response rate, you know, more than 40%, 223 dramatically drops but still hovering around 25%. So you if again determining your objective is super important, and from there identifying what are the right questions and most important questions I want to put out there, and based on that defining your multi questionnaire survey. So yeah, rounding up our discussion here how do you close the loop on the feedback and make data driven road map decisions listen, use your qualitative and quantitative data look at the product usage data look at the survey data and talk to your customer facing teams, and you know combine all of that data and and make your decisions to going into how do I now analyze this data and I've got all this rich set of data, analyzing the data based on customer segment lifecycle usage. And from there, you know, deciding an action plan, either providing guidance to the feedback your customers, or making road map decisions and changes. So yeah, look forward to hearing any questions that the group may have anything that resonated or did not resonate, you know, some of these tactics that you may have already applied, worked for you did not work for you would love to hear so you know we I love to learn from the community and see what are the changes, you know, I can make an intern help out the you know product leaders and managers that we are working with.


Hey everyone, this is Dan with another episode of my weekly reviews. Last week, as of Friday, July 22, SPY was up 2.6% and QQQ was up 3.5% for the week. Is the market heading higher from now on? What are the issues driving the recent rebound? Let's check out the details. First of all, let's look at how SPY and QQQ have been trending since the beginning of the year. We can see that overall is still a downward trend, although since June 17th, both have been rebounding and making higher highs and higher lows. We can see that between April and today, SPY has been forming this triangular or pennant pattern, just like SPY QQQ also formed a triangular pattern. In the last few days, both SPY and QQQs have broken above the triangular patterns, which is the bully sign, at least for the short term. What we see now are the two channels here, outlining the movements of SPY and QQQ since the middle of June. This is a new pattern. Will the market be making higher highs and higher lows from now on? Or maybe we will pretty soon see bear flags like this. The outcome will very much depend on the current events and corporate earnings and third quarter projections that will unfold in the next few days. Let's look at the recent events that have been influencing the market. There has been a war going on in Ukraine since February 24th, which has caused unimaginable human suffering and disruptions to the supply chain for various commodities. The supply chain disruptions have driven up prices for commodities such as oil, natural gas and wheat. Because of the high inflation rate, the Federal Reserve Bank raised the Fed funds rate by 0.75% in June and the Fed has been doing quantitative tightening or QT, which supposedly reduced total Fed assets by $47.5 billion a month for each month between June and August and then starting the month of September, they will reduce Fed assets by $95 billion a month. On June 20th, the Senate advanced the CHIPS bill, which will provide about $52 billion worth of subsidies for U.S. semiconductor companies. The bill will most likely be voted in the Senate in the next few days. After that, it will be sent to the House of Representatives for discussion, revisions and voting. Hopefully it will be approved and will be signed into law by President Biden within a month or so. The tech sector has been getting a boost in the last few days because of the progress with the CHIPS bill. And related to the CHIPS bill, interestingly, the Speaker of the House, Ms. Nancy Pelosi's husband recently bought somewhere between $1-5 million worth of NVIDIA stock. This is a bit of a controversy for Nancy Pelosi. This piece of news has also been driving up NVIDIA stock as well as other semiconductor stocks in the last few days. June's CPA came in at 9.1%, which was higher than the May figure of 8.6%, and which was higher than the April figure of 8.3%. The inflation rate has indeed been very high, which compels the Fed to raise interest rates and to do quantitative tightening. Some cities in China are still in partial COVID lockdowns, which caused supply chain delays for many commercial products. The European Union leaders said they would be reducing the imports of Russian oil by two-thirds by the end of this year. They are also talking about putting a price cap on Russian oil. On July 17, President Biden returned from a visit to the Middle East, but failed to bring back a commitment from Saudi Arabia to increase oil production, and because of that, the oil price popped up for a few days. Since April, Russia has already shut down or significantly reduced the supplies of natural gas they send to Germany, France, Poland, Bulgaria, Finland, and Denmark. This has caused the price of natural gas in Europe and around the world to shoot up. On July 23, Russia and Ukraine agreed to open a path for Ukrainian grains to be exported from certain Black Sea ports. Recently, both the US Fed and Atlanta Fed produced computer models showing that the economy is more likely heading for a hard lending, or the economy is already in recession. That's certainly a bearish piece of development. Commodity prices have been going up since the beginning of the year. Then the prices started to fall in the beginning of June. Hopefully this will reduce inflation pressure in the next few months. At this point, I'd like to remind you to subscribe to my Twitter account, which is Dan Market L, in addition to subscribing to my YouTube channel. With my Twitter account, I update my subscribers almost on a daily basis about some of my trades and about any significant news developments. If you like what you've seen so far, I'd like to remind you to click the like, subscribe and notification button so that you'll be notified when I post my next video. It'll also encourage me to make more videos like this in the future. Thank you very much. Let's continue. We have a lot of interesting stuff to cover. A few important pieces of economic data were published last week. For example, the API weekly crude oil stock went up by 1.86 million barrels. This will reduce immediate pressure for higher oil price. Building home sales came in at 5.12 million units, which is lower than the previous month of 5.41 million units. That means the housing market is cooling down. Initial jobless claims went up slightly from 244,000 to 251,000. This is another sign that the economy is cooling down. The Philadelphia manufacturing index is at negative 12.3, which is a very low level. As you can see from this chart, the last time we had a lower level than negative 12.3 was at the beginning of the 2020 pandemic. Manufacturing PMI for July came in at 52.3, which is the slowest growth rate in two years. There will be a few very important pieces of economic data that will be published next week. They include the new Fed funds rate, the initial jobless claim, and the core PCE price index. I've shown here the second quarter earnings that were announced in the last couple weeks for a few major corporations. They are Taiwan Semiconductor, JPMorgan Chase, Citigroup, Wells Fargo, Bank of America, Netflix, Tesla, ASML, and Snap. Among these nine companies, four of them came in with negative earnings surprises. With the exception of Snap, which went down by 27% during last week, the stock prices of the rest of the companies have been holding up well in the last week. Netflix went up by an impressive 16.6% last week because of the 10.34% earning surprise. Even though Snap is not nearly as big as the other companies listed on this page, I showed it because its failure in the second quarter is so severe that many people said Snap brought down the tech stocks last Friday. If you look at the EPS of these companies, comparing the second quarter of 2022 to the second quarter of 2021, six out of the nine companies registered a decline, which is another sign that the economy is indeed slowing down, although this is still a little too early to tell whether we are heading for a recession or not. Next week, a few major corporations will be announcing their earnings, including on July 26, Microsoft, Google, Visa, Coca-Cola, Modano, and UPS, on July 27, Meta, and Qualcomm, on July 28, Apple, Amazon, and Mastercard, and on July 29, ExxonMobil, and Chevron. A few minutes ago, we saw the chart for SPY and QQQ that the market has been rebounding since June 17. This is a table showing the change in the performances of the various sectors. In the first column here, you can see that here today, the best-performing sector is the energy sector. The rest of the sectors have been going down since the beginning of the year. The second column here shows the sector for last month. Consumer discretionary turned out to be the best-performing sector in the last month with 11% increase. The tech sector went up by 8.12% in the last month. I will be monitoring the tech sector and the consumer discretionary sector very closely within the next few weeks. If the market continues to show definitive sign of rebound, I will most likely shift some of my investments into these two sectors. Since the middle of June, we are seeing possible signs of a recovery. Although from the economic data we looked at a minute ago, we also see a lot of signs of the beginning of recession as well. So what we are seeing is a lot of conflicting information. At one point, will the market definitely recover? In my opinion, the market will definitely recover when the Fed stops raising interest rates and stop quantitative tightening. And when will the Fed stop doing those? I believe when the CPI is less than 4-5%, the Fed will declare victory and will slow down its tightening process, eternally, which is not a desirable scenario. That is, if the unemployment rate becomes higher than 6-7%, then the Fed will have to be loosening money supply to try to avoid making the unemployment rate any higher. Of course, if the Ukraine war comes to an end in the near future, there will be a market recovery. The recovery, however, will only last for one or two months if the inflation rate continues to be higher after that. In that case, the Fed will be compelled to tighten again to control inflation, and the market will then drop again. As I mentioned a minute ago, if the market is heading for a steady recovery, I will be investing in consumer discretionary stocks and semiconductor stocks. However, if the market rebound fizzles out in the next few days, I will continue to focus on the ETFs that I have been trading in the last two or three months because these ETFs had been going up when the market was going down. These ETFs include SQQs, which is a triple-inverse ETF pegged to the Nasdaq 100, and also SPXS, the triple-inverse ETF pegged to the S&P 500, TMV, the ETF pegged to the 20-year Treasury rate, UCO, the crude oil ETF, UGA, the gasoline ETF, XLE, the energy ETF, and UNG, the natural gas ETF. Because of the opening of the corridor for shipping grains out of Ukraine, the wheat ETF is no longer a good investment choice. And because of the slowing down of the world economy, the copper-related ETFs are no longer good investment choices either. This is the chart showing how the ETFs that I just mentioned a few seconds ago have been trending since the beginning of the year. As you can see, they went up quickly from January until the beginning of June. Since June, many of them have been dropping, with the exception of UNG, the natural gas ETF, which has gone up quite a bit since the beginning of July. SPY is a candlestick chart here, and the blue line here is QQQ. They are the worst performing instruments on this year-to-day chart. The chart for the last month is very different from the year-to-day chart. UNG is still the best performing instrument up almost 33%. This one down is QQQ at 1.28% increase. SPY is about the same as QQQ. The rest of the ETFs actually have been going down in the last month. If the broad market starts to head down again after the Fed interest rate announcement this coming Wednesday, July 27, then SQQQ and SPXS will start to go up again. Also, as long as the Ukraine war is going on, I believe UCO, UGA and XLE, the oil, gasoline and energy ETFs will most likely go up again. Let's look at the SPY chart and the QQQ chart in more details. For SPY here, I'm showing three panels. The left panel is the minute chart. The middle one is the daily chart, and the right panel is the weekly chart. Also on each chart, I'm showing the Bollinger bands, the volume, RSI indicator, DMI indicator, and MACD indicator. Let's go to the daily chart first. We can see that SPY in the last four days has broken above this upper boundary line, but it dropped down on Friday. In the next few days, we'll see whether SPY can stay above this upper boundary line and start to make higher highs. If SPY can get above this previous high, then it will indeed be a very bullish sign. For support levels, let's zoom in closer. I see the next level of support, of course, being the upper boundary line here at about 390, and then the next level of support after that will be the middle of the Bollinger band around 386, and then the next level down will be 373, the lower Bollinger band. Of course, this previous bottom of 362 will be another support, and if SPY falls below this point, that means the bears have controlled the situation, and SPY will most likely be hitting down a lot more before recovering. For resistance level, if SPY is going to go up, I see the next level of resistance at this point 401, which is gap closure, close to the gap, and then the next level of resistance will be this historical top achieved back in the beginning of June at 417. If SPY can get above 417 level, that will be a very bullish sign, and most likely it will just take off and start shooting up for a few more days. Let's look at QQQ. For QQQ, it's very similar to SPY. It has popped above this upper boundary line for the last four days, and after going up for three consecutive days here, it finally dropped a little bit on Friday. So in the next few days, we'll have to see whether QQQ can stay above this upper support line. If it does, and if it can exceed this previous top, then it will be a bullish sign that most likely QQQ will then go up for a few more days before pulling back. For support levels, I see the next level of support, of course, at the upper boundary line here at 296, and then the next level of support will be the middle of the Bollinger Band at 291, and then if it falls down, then it might be able to get supported at the lower Bollinger Band at 276.5. Now if it continues to fall and drops below this previous bottom established around June 15 at 269, and if QQQ drops below this point, it will indeed be a very bearish sign, and most likely QQQ will then head down for a few more days before it will have a chance of rebound. For resistance, I see the next level of resistance at this previous top of around 314, and if it can exceed 314, that's indeed going to be a very bullish sign. That means it's going to be making higher highs, and then after that, the next level of resistance will be this other historical top at 329 right here, and if QQQ can exceed 329, that's certainly going to be an extremely bullish sign. Not a financial advisor, I share my stock trading strategies and analyses for educational and entertainment purposes only. If you want to buy or sell stocks, you should make your own decisions, and you should definitely consult with your financial advisors before you do so. This wraps up my video for now, I will chat with you again in the next few days. In the meanwhile, I'd like to wish you the very best of luck with your financial investments.


The Executive Director, African Pulling Institute, Professor Bell Ihua, lamented the wide division and polarization among social, ethnic, religious and political lines in the country, despite many years of nationhood since independent on October 1, 1960. Nigeria has not in its history been divided as it is today. So in 2019 we found that 45% of the country said the country was divided as at that time compared to four years ago, but in these 2021 studies 65% of Nigerians say that the country is divided, you know, compared to four years ago. Despite the findings, Professor Ihua says the research data guarded can assist the government in future national planning, where Nigerians will think more nationalist and not separatist. He urged the governments to activate a new movement that will galvanize Nigerians towards social cohesion and integration. He alleged that the government has failed to provide a platform or a justification for the country to remain as one indivisible entity. What the data does is not just to tell us grim stories about the country or tell us that things are not working, but it helps us to provide evidence for which policy makers can then sit down to say let's come back to the drawing board. If this is how citizens think, then how can we implement policies to build cohesion? He urges the media to assist government in nation building and national cohesion in their reportage by emphasizing aspects that unite the country.


Most people like me would never say this to you. Get dailies immediately. Those are like way more expensive, right? I was like, why do you say that? Just think about how even the cleanest of hands, right? At the beginning of the day, end of the day and then you're adding solution. But even that case is like festering all sorts of stuff. And so by day like 20, she's like, how long do they usually last? Probably like two weeks, maybe three if I'm lucky. She goes, right, but you have another 10 days with those on average. It's disgusting. She's like, stop doing it. So instead of getting dailies if it's too expensive, just swap them out every two weeks. This is a problem though. How many people can actually afford this?


And to some entertainment news, the family of a cinematographer killed during the filming of West Rust has filed a wrongful debt suit against actor Alec Baldwin, and others claiming that they disregarded several industry-wide practices meant to keep movies set safe. The suit was filed in Santa Fe country, New Mexico, on behalf of Matthew Orchens, husband of Helena Orchens, and the couple's nine-year-old son. The Anthony Bryan Panshee told news conference in Los Angeles that the lawsuit names Alec Baldwin and others who were responsible for the safety of the set and whose recklessness and behavior caused the untimely death of the Helena Orchens. Helena Orchens was killed and the director, Joel, was also wounded when bloodwine was using during a rehearsal fired off a live bullet. Hello, hope you enjoyed the news. Please do subscribe to our YouTube channel and don't forget to hit the notification button so you get notified about fresh news updates.


Dracarys. I'm not one to see sheep. That's exactly what I was thinking. He's got too much net in him. Someone has betrayed me. Varys? I'm glad, Sons. It's all me. I am your hand. I need to be aware of any threats you're facing. You want it, but you want a better world. All of us. Varys as much as anyone. But it doesn't matter now. Does he rest now? It was me. I hope I deserve this. Truly I do. I'm wrong. Goodbye, old friend.  It's from my leg, guys. Dracarys, and mother of dragons.   Dracarys. I don't have a little fear. You will always be my queen. Your brother will stop trying to get past our lives. Seems he hasn't abandoned your sister after all. Okay. Where are you going? I'm Isdark.  Kill Cersei. We're also going to their siege.  I need to go talk to my captain. Go ahead, talk to him. I'll wrap you up just like season one. He's got a beard and everything. More and more? How did they find you? You're going back to her. To die with her. You weren't supposed to meet her before. She's going to die. I think it's going to serve you very well. If not for yourself, if not for her. And for everyone with a million people in that city. Innocent or otherwise. To be honest, I never really cared much for them. Let's get the two of you together. Remember where we met? Tyrion, what are you doing? Oh, Tyrion, what are you doing? Tyrion, what are you doing? Oh, Tyrion, what are you doing? That shot, yep. Now we're expected. I'll bring your hat to Cersei's conclusion. That was a great episode. Best directed episode. Best episode of the season. It's hard to imagine that to say that because the long night was such a good episode. It was long. This was the best directed episode of the game. You can definitely see this one better. Yeah. Yeah, but that didn't bother me. But everything in this, the shot choices, the use of score, the use of not using score, the intimacy of some of the shots, especially at the opening of the episode when he was up super, super tight. And there were so many people. Whoever was directing this episode, it was immaculately directed. Yeah. There was just so much going on. Just a beautiful piece of art. He lost the Hound, the Mountain, Jaime, Cersei, the Spider, what's the space from Iron Throne? Oh, Jaime. You're on. You lost me. Yeah. Oh, yeah. You lost him aside. Yeah, we lost seven key players. I was surprised Cersei died in this episode. I was expecting that to be like, because now it's just, I, is it going to be, now it's basically Daenerys is the, is the, she's got the throne and less arguments to say about it. Well, it's basically Daenerys is the villain. Yeah. Yeah. They've played her up as the villain. Yeah. We didn't see Sansa. Yeah.  Anyways, but like, like she's now the villain. Yeah. But you can't blame her. Well, you can for, for destroying the entire city. Yeah. She should have gone for like, she should have just gone for the Red Keep. I would have been like, I understand. But she's just blew up the whole city. That's true. Yeah. She's turned into her father. Yep. That's exactly what I was thinking. When Cersei was watching her burn the city, I'm like, wow, that's exactly what happened with her dad. That's what her dad did. Yeah.   Danny ain't sitting on the throne. It's a start. Which one? Well, John is the most worthy. I think Tyrion's going to do when he finds out his brother and sister have gone. Well, I mean... Well, I think Tyrion's dying. I just think maybe he kills Daenerys.  And then Tyrion's... And where does the dragon end up? I've always felt the dragon. Arya and Tyrion sit on the throne and... Yes! Perfect. The two most worthy. I just, how, I just thought the juxtaposition of Arya falling and the hound falling. Oh, so good. And her fighting for her life and the hound fighting for his life have been tied for much longer. I know. So beautiful. And how, epically Shakespearean of the brothers falling to their death together into the fire.  And how did the hound die? With his brother. Epic. Epic, epic, epic. Blood force trauma, actually, I believe. Yeah, no, ultimately. Hit the ground. Blood force trauma with fire. The fire finished it. Ultimately the beauty of seeing the hound going with his brother in fire. That was poetic, man. But who's going to sit on the throne? We have one episode of... That's the saddest sentence in the history of your life. I know, I know. We have one episode of Game of Thrones left and who's going to sit on the throne? We still don't know. Like, we can't be dandy now. The one everybody's wanted for the entire thing. Can't be her? It's either... No. Unless she, like, I mean, but she destroyed... Unless she kills everyone. She literally murdered thousands of people just now. None of them will want to follow her. They will all want to follow Jon. Jon. Yeah, and if she kills everyone, they just don't have her to leave. And Tyrion knows the truth. Tyrion's going to tell everybody the truth because he's going to be very angry with Daenerys. Tyrion's dying next episode. Yeah. Which is... Tyrion, no sense in his life. I knew he would die and I'm... I thought he actually would die.    I mean, sorry.  Sansa's still in Winterfell.    Jon will sit on the throne. Yeah. And then the Starks will... And who needs to do the prediction we're staying on the throne for next week? Jon. You think Jon? What's everybody else in there? Jon. Micah? Probably Jon. Jon? Probably. I feel like Jon is too expected. The Emmy too. I think that he won't take it. I think that's where we're at. I think it'll be Gendry and Arya. What if it's Sansa, guys? That'd be sad. I don't want that. Sansa? I don't think... Yeah, Sansa. I'm sorry. I'm sorry. Who's Sansa? As long as Jon is alive, if Jon is alive and Tyrion is alive and Arya is alive and Sansa is alive, then all of them are going to tell Jon. It is the... All they need to tell him is, Ned would tell you this is the right thing to do and he would do it. And it would be the right thing to do because he is leap... Ned and the Starks are all about doing what's right. And whether he likes it or not, he is the rightful heir to the throne. Whether he... Just like Ned didn't want to be the hand to the king. We all know that the end is going to be the creator. George R. R. Martin said it's going to be better sweet. That's not a better sweet ending. Jon is for Jon. Yeah, but for us, he wasn't saying Jon. It's going to be better sweet ending for Jon. He said it's going to be better sweet ending. Well, that's because we're going to see Tyrion die and we're going to see Jon take the throne. That's better sweet. Jon, it's too expected. Yeah. Jacqueline Haga is going to come back and he's going to sit on the throne. No. Hodor will sit on the throne.


As Brett and this 2015 Ford F350 Crew Cab Long Box Dual Re-Wheel is stock number 13245Z. I am here at Summit Automotive in Fond du Lac, Wisconsin, your new and used heavy-duty truck headquarters. This 2015 Ford F350 Crew Cab Long Box Dualy Lariat has the 6.7-liter Power Stroke diesel engine. It has been fully-safetyed and inspected by our service shop, has a fresh oil and filter change all the fluid tab and checked and topped off. And this truck is 100% ready to go. It is super clean all the way around, and that's exactly what I'm going to do in this video. Go all the way around inside, underneath, start it up and take a look under the hood and give you the most accurate representation of vehicles possible. And I shoot all my videos in 4K, so if you have HD capabilities on your computer tablet, smartphone, or television, I highly recommend turning them on right now because it is your best way to check out the quality condition, and of course options of the vehicle and cleanliness before seen in person. Very clean down this side, duly tubs all look really good on this truck, cab and doors look really good as well. Color scheme on this one is white platinum tri-coat metallic over caribou brown. And if you like the video, you can subscribe to my YouTube channel, which is youtube.com slash summit auto. Click the bell notification so you get updates every time I do the videos of our amazing inventory here at Summit Automotive. This one comes with the polished aluminum rims. These are 17 inch rims and it has BF Goodrich LT245 75R17 tires. These tires look like they have probably about 80 to 90% of the tread left on the front here. Very new tires frame and under body is in very nice shape for a 2015 very little to no corrosion. My guess is that this thing was garaged a lot. Headlight lenses are nice and clear, factory fog lights, front bumper and lower valance are in excellent shape. Didn't see any major dents or dings on there, and the grille is in really nice condition as well. I didn't see any major dents or dings on the hood, and it does come with the cab lights up top, passenger side front fender is in fantastic condition as well, and the passenger side front rim no major scuffs or scrapes on there. Now as you go down this side of this 2015 Ford F350, take note of how clean that body is, how reflective and mirror like that paint is. I take these HD videos so if you are far away, or even if you're close by and just cannot make the trip down but you're still interested in purchasing the vehicle, you can see the truck, hear the truck, and have confidence in the vehicle that you're looking at before you even get here. So when you do get here, there's absolutely no surprises and you can make a smart and informed buying decision from wherever you're at. If that helps you make this, or if this video helps you make that buying decision, let your salesmen know that you saw the video and that Brett sent you. Back rims are in excellent condition as well, and the back tires have just as much tread as the front tires. Rim into underbody, very nice condition. It does have the camper package with the anti-sway bars, which is what that is right there. Box rails all look really good, and it's like that all the way underneath. Has all the remaining factory exhaust so it hasn't been altered, and lower rockers and cab corners all look really good as well. It does have the factory chrome step bars, and once again this dually tub, didn't see any major scuffs or cracks or scrapes on there. It does have the FX4 off-road suspension package. You do get the chrome tipped exhaust, part of the chrome appearance group. Rear bumpers in great shape, does have the backup parking sensors, full towing package of course, which includes the receiver hitch, four pin and seven pin wiring. The tailgate is in very nice shape, it does have the tailgate step assist and backup camera. Comes with a linex spray and bed liner. I got the same bed liner in my truck, I love it, has the fifth wheel bed rails back here so you could easily install a fifth wheel, and there's the other side of that tailgate step assist. Tailgate shuts nice and solidly. Once again coming around the driver's side, very nice and clean end for full disclosure this back rim is in great shape as well. Cab and doors all look good again, does have the driver's side door code entry. We do have the code for this truck, and if you ever want to figure out what your code is for your 11 to 16 super duty, the upper right hand part of the screen, I got a video showing you how to do that. Heated mirrors, built in directional signals, these power fold in, they power telescope out. I'll show you that in a second as well. Inside the Lariat Ultimate Package gives you the tan leather interior, get the bucket seats in front, power driver seat, weather tech floor mats throughout, auto headlamps, power pedals, power windows, power locks, power mirrors, and these mirrors do power fold in. I always like showing both sides so that you know that both sides are working properly, and then the telescopic feature works when the ignition is on. Back seats are just as clean as the front seats, these back seats are heated on the outboard side. No rips or tears, smells extremely clean inside this truck, I don't think it's ever been smoked in. Power sign mirror window with the built-in rear defrost, you do get a lockable storage under there, and that locks with the ignition key, and then behind the seats you get the factory subwoofer and your latch tether anchors. Side curtain airbags, weather tech floor mat, there are heated seat buttons for the driver's side back seat, and the child safety locks on the back doors, bottoms of the doors all look very, very good. I did want to show you the tire and loading information sticker as well as the VIN sticker. We'll hop inside, check out the miles, the radio, and everything that this truck has to offer on the interior. And yes, we will be putting some fuel in right after this video. So this truck only has 11,566 miles, super low miles on this truck, probably why it's in such nice condition that it is. Leather wrapped steering wheel, Bluetooth and audio controls on the right, cruise controls, and information center controls on the left, and that steering wheel is in fantastic condition. It does have the six-speed automatic transmission with the optional tap shift, you do get the turned-out four-wheel drive traction control system, factory exhaust brake, and then you get the My Ford Touch radio, it does have the heated and cooled seat buttons, and then it does have your factory navigation system, there's Highway 41, so you can tell that this is working properly, CD player, climate controls, dual climate controls, factory brake controller, four auxiliary up-fits, which does have the 110-volt, 150-watt plug-in. You get four cup holders here, these are removable, so if you wanted more extra space and not the cup holders, you can just take those out. Passenger side format and seat are in fantastic condition, once again, this truck smells very clean, don't think it's ever been smoked in, and the headliners in great condition. Does have the power sunroof, map lights, power sign, rear window, and sunroof controls. There is your backup camera, and that is working nicely. Just started up and take a look under the hood, and like I said, we're going to be putting some fuel in this truck right after this video, but no check engine lights or anything like that. I would personally like to thank you for checking out the video today, and hopefully from this HD video you will have been able to verify the quality condition options and cleanliness of this truck all the way around inside and out. Under the hood, we have the 6.7 liter power stroke diesel engine, engine base, very clean, runs very smooth. Once again, this truck has been fully safe and inspected by our service shop as a fresh oil and filter change, all the fluids have been checked and topped off, and this truck is 100% ready to go. And I would highly recommend this truck to make quality and condition standpoint. I don't think you're finding a 2015 cleaner than this one, and to see more pictures of this truck or one of our other 550 new and used cars, trucks, SUVs, minivans, wranglers, halftones, three-quarter tons, one-tons, you name it, we got to go to that website right there, summitauto.com. Full pictures and descriptions of every single vehicle from two locations all at summitauto.com. And if you'd like to check out more HD videos, you can go to youtube.com, so I have Summit Auto. Remember to like, subscribe, and share on this video and all the videos that you see there. Click the bell notifications to get updates on videos I do each and every day here at Summit Auto. In fact, any second you see a link to subscribe to my YouTube channel on the upper left. There are 250 videos like this on the upper right, a link to this vehicle on our website on the lower left, and a link to one of our latest YouTube videos on the lower right. Click those, check us out. We're super excited to help you with this Ultra Clean 2015, Ford F350, Crew Cab Long Box Lariat Ultimate, and Platinum White over Caribou Brown. Thanks again for checking out the video. Remember to like, subscribe, and share on the YouTube channel. I really appreciate it. Thanks again.


Around Dodge City and in the territory on west there's just one way to handle the killers and the spoilers And that's with a u.s. Marshall and the smell of gun smoke Starring william conrad the story of the violence that moved west with young america The story of a man who moved with it matt dillon united states marshal mr. Dillon Would you mind stopping at the alf again to hear for a minute pretty early in the day, isn't it just here? Oh, I don't want to drink The bar keeps holding some money for me. I won a little last night and I didn't want to put it back in the game Ah, but you want to get it now so you can put it back tonight. Is that it? Yes, sir. I'm afraid it is Here money jester. Yep Hello there marshal dillon. How are you mic? Yep Here you are three four five six Thanks mic here Buy yourself a drink. Yeah, I sure will See you tonight. Just sure Excuse me Yeah, I heard the bartender call you marshal dillon Well, that's right.   Wilbur Hawkins. I'm a whiskey drummer. First time I've been to dodge though I worked around st. Louis till they sent me out here I did better in st. Louis. There are lots of important people there. Wait a minute. What are you talking about?  I heard them saying something. You heard who's saying so? I don't know their name. It was dark and they weren't there long I didn't dare say anything or they'd have known I was listening and then of course I'd never heard of you till just now that is You're not making much sense. Oh, it makes sense. All right You see I ruled the Santa Fe out here from st. Louis and one night I was all wrapped up trying to sleep And these two men came by and stood there in the aisle One gave the other three hundred dollars He said it was to kill marshal dillon But he didn't say where so of course. I didn't know till just now Is that all you know about it mr. Hawkins? Yeah, that's all marshal. Hmm. I've done my duty now. I'll be going Bye Well, what do you make of that mr. Dillon? I don't know jester. He acts are crazy like I don't know whether to believe him or not No But I suppose we'll find out soon, isn't it? Is your sound asleep already and it's only just got dark out mr. Dillon Well, he's got nothing else to doodle tom smith gets here. Is that who you're holding him for? I thought I told you jester. Yeah, but tom smith's giraffe atascos ain't sure why? I thought this fellow was wandering ably Oh, they never heard of him and I believe that's why I worried tom I'm going out back for a minute jester. I think I left my new bridle on the hitching rail out there Yes, well, I better get this place swept up a little bit. That's a good idea. Stay there jester. Stay there. He's killing you You've been shocked Well, I was trying to play possum jester I wanted to get him to come up where I could see him. Oh Now he's gone now.  He'll be lost in the crowd, but now. Oh, I'm sorry. Well, it doesn't matter jester What he probably thinks I'm dead So I'll just go on play and possum. How do you mean? Come on. Let's go up to doc's office. I'll tell you there If you say that whiskey drummer's name is mad wilbur hawkins doc, but you never heard of him This is his first time in dodgy Well, you think you'd have sense enough to follow those two men there find out who they were Now he was probably scared to death. Yeah, and anyway, he kind of acts like he got hit by lightning somewhere Even when he's standing still he gives you the feeling that he's sort of walking sideways like a crab If you know what I mean No, I don't but I sure think twice before asking you to explain chest Well, what is it you have in mind to do now matt? Nothing doc. Nothing Now chester's gonna do the work for a while I'm just gonna sit up here in your office and wait wait. We'll wait for what?  Dillon that's a wonderful idea. Now. Why didn't I think of that? You better get going chester I'm kind of anxious to meet this man Him and his gunman. Yes, sir. But only one thing Ain't the boys likely to run a little wild when they hear you're not around keep the lid on things Now they might That will have to take the chance Okay, sure I'll get started Well, I think chester's right matt. There's a lot of men in dodge.  Oh, yes Tell me something doc What are you gonna do to uh entertain me while i'm waiting up here, huh? Say, I never thought about that. I oh, I suppose I gotta feed you too It could be a mighty poor host if you didn't well, how long do you figure on steam here anyway? I don't know doc, but I don't think it'll be very long Well, you want to play a little cribbage or uh Then she'd rather fix supper first. Oh, yeah the first dead man. I ever saw it with an appetite Then I'll go get the cribbage board that I'm making no promises about supper Doc what time's it get to the beam? Ah It's nearly midnight, man.  Well, there's something happens. I guess Not chester. Let me know Town seems quiet enough so far Maybe nothing's gonna happen It didn't try to kill me just for the fun of it, but no, no, I guess not man All right, answer doc after I get to the back room Maybe it's a patient. I'll be holding a gun on him anyway Kitty, what are you doing here this time of night? I might tell you if you ask me and doc Well, of course. Come in. Come in. Where's the corpse doc? What's the body? I expected to find him all laid out.  I know chester too well If you were dead, he wouldn't be acting like that No, I guess he wouldn't Where is he anyway? I haven't seen him for a couple of hours, but Most everybody else believes it matt how they do Good I don't know what you're up to but I figure someone's been trying to kill you. Is that right? Yeah ambush kitty That's not the way he's telling it matt Not the way who's telling it? I never saw him before but there's a man standing at the bar the texas trail bragging about out drawing you You mean he's admitting he killed me. I kind of thought you'd like to know that she met This is what you've been waiting for. Is anybody with him kitty? No, he's alone as far as I know Anyway, you better come to life again matt. There's gonna be trouble if you don't there hasn't been any trouble yet has her No, but they're working themselves up to it. Yeah Well, maybe I better not wait any longer But I'd like to take that gunman's employer along with me though You can find out who it is matt beat it out of him.  Yeah, maybe not doc, but uh You never know Okay, kitty you wait outside when I see how he's going to behave Thanks I'm marshal dillon mister Oh Who are you and tom roger?  You've been bragging about shooting me Just talk marshal. I didn't mean nothing by it.   You got the wrong man marshal Okay, you can turn around You can't arrest a man just for talking the jails right across the street rogers. You lead the way Well, it was just talk.  I ain't even got a job Hey, mr. Dillon. I want to Mr. Dillon, what are you doing out here? Who's this fella? His name's rogers chester He's been bragging about shooting me. I was just having a little fun. I ain't no gunman It doesn't take much of a gunman to try to ambush a man, but I didn't do it marshal I heard him talking about it and I don't know why I started saying I uh, mr. Dillon. Yeah, what chester Mr. Dillon, I was on my way up the dock that I was coming to tell you something Well, I've been over to ala for ganza. I declare. I just don't understand it Well say it chester. Yes, sir. Well, there's a fella over there and he's been bragging about shooting you too What yes, that's right.  Sure Sure, I've been drinking marshal.   What about the fellow over at the ala for ganza? I don't even want to see him chester.  Yes, I'm sure sorry. I'd done it All right get going. Sure. I'm going I don't know what's the matter with me chester not figuring this I might have known there'd be at least a couple of Drunks wanting the reputation for having killed me. Yes, sir Dog done it now. We're right back where we started from Yeah Hey, maybe that whiskey drummer was lying too No, you're forgetting I got shot at chester And there's a man somewhere and dodged still waiting to kill me We will return for the second act of gun smoke in just a moment But first this monday night on most of these same cbs radio stations Here i'd a lapino and edmund o' brian in the stirring screenplay adaptation of the star on the luxe radio theater It's a hard-hitting drama about a has been who attempt to come back in a juvenile role This will be luxe radio theater drama at its best monday night at the star's address Now the second act of gun smoke It wears a man down living from day to day Waiting for a bullet in the back And not knowing who to expect it from or when Makes you feel kind of helpless And before long in spite of everything you try to do to stop it you get kind of spooky And you start shy and at the most ordinary noise Especially if it comes from behind you No way to stay alive Because this is the one time you need to be as calm and clear as you've ever been in your life And I had a week of it And nothing happened And old chester came into the office one day with a telegram from sheriff tom smith of tascosa I thought i'd better get right over here at this mr. Dillon might be important You told me it was from tom smith chester Yes, sir, it is Well, if you know that how come you don't know what the message is Oh, well, I didn't read it too close mr. Dillon Thanks He's coming for his prisoner He'll be here on the stage Day after tomorrow. Well, I figured now Anything else? What? Well, is that all it says here? Yes, sir, that's all That's just one thing you miss chester What's that the date it was sent they got delayed somewhere along the line comes during the day He is yeah, what time is it? About noon again on that stage ought to be here right now. Come on. Let's go see. All right Well, there it is mr. Dillon must pull in just a minute ago I don't see no passengers. So that may be because they haven't got out yet chester I hear they come Ain't that tom smith? Yeah, that's him Who's that other fella? He looks kind of familiar. Now, that's wilbur hawkins chester that little whiskey drummer. Oh, yes Well, I've been wondering where he's been Matt Dillon, hello tom Hey, how are you matt? Hello chester. Hello mr. Smith Hey, I'm sure glad that trip's over next time. I'll come horseback Now the stage is easier when you're taking a prisoner back though I guess you're right at that matt and I hope you still got him.   Oh, yeah, we know him. He told me you're staying at the dodge house Crazy talkingist man. I've run into I told him hawkins if you tried thinking a little first You might make a whole lot more sense a whole lot faster. Well, he means well Well, maybe But he tells some mighty strange stories. Oh, what do you mean? Well Of course could be true, but he told me he heard a couple of men in a bar talking about me He didn't know who they meant till I introduced myself on the stage and he recognized my name Well, what are you looking like that for man? Uh, no, no, no go ahead tom. What did hawkins here? Well, he said this one fella was gonna give the other fella 300 dollars to shoot me Ain't that the darndest thing? Yeah, that sure is I don't know matt. There's a lot of men who'd like to kill me, but I don't believe that they stand around talking about it that way I kind of think he made it all up. No, he didn't make it up tom. Not quite. Uh You know something about this You mean someone is out to shoot me? Yeah who? I'll tell you about it on the way over to the dodge house You wait here chester just in case he gets past us. All right, he ain't gonna get past us But I can't figure matt Why hawkins didn't want to kill you and me now that doesn't make much sense tom Now here it is Is it it's tom smith and matt dillon hawkins What are you doing here? We want to talk to you Open up hawkins How'd you know he was gonna shoot matt? Well, I just sensed it. I guess Look, I can kick that door open with one foot Then you cover me. All right, you ready?   You took a shot at me last week, didn't you hawkins? Didn't you?  Why did you want to hawkins?   I don't know Now it doesn't matter much. I don't understand it I never saw him before yesterday. Now hawkins was a murderer tom That kind of doesn't need any particular reason Nobody'll ever know why he did what he did.  Yeah, probably That's the most dangerous kind of man there is tom A murderer with no reason at all Innocent looking little whiskey drummer Gun smoke under the direction of norman mcdonnell stars william conrad as matt billin u.s. Marshall Tonight's story was specially written for gun smoke by john meston with music composed and conducted by rex quarry Featured in the cast were edgar barrier john daner and vick perron parley bearish chester howard mcnear is doc and georgia ellis is kitty Join us again next week as matt billin u.s. Marshall fights to bring law and order out of the wild violence of the west in gun smoke You've heard fictional crime cases many times, but there's nothing like the real thing We're talking about night watch this monday night following the bob trout news You'll be on the scene when a burglar is caught in the act You'll hear him break a glass window and trying to get away You'll hear the officers handcuff him and take him off to jail You'll hear this authentic case unfold from beginning to end on night watch monday night george waltz speaking john lond as yours truly johnny dollar brings you colorful mystery tuesdays on the cbs radio network


I guess, now it's time to watch our Bluetooth. I don't know if I introduced myself. So, my name is Maciej, and I'm from Poland. Currently, I work for, oh, for BBM. Oh, yeah, I might need to turn it on. Yeah, so I work for BBM. I am an iOS engineer here. And I also run a blog called Swift.in.io. You can look it up. We usually write about Swift. Surprise, surprise. And recently about unit testing. And today, I would like to speak about somewhat new feature of WatchOS 4. However, it was introduced on WWDC last year. And starting from WatchOS 4, core Bluetooth framework is supported. So we can connect to Bluetooth peripherals on our WatchOS application. And what we're going to do also during this talk is we're going to implement a simple application for WatchOS. But before we do that, let's get back a few centuries. So this bus relief shows Harold Gormson, which was a Denmark king. And he was well known for two things. One of them is he united Norway and Denmark. And it was somewhere around 935 to 985. And it was also famous for another feature. During one of the battles, he got injured. And his gun turned blue. And from this accident, he got a nickname. It was called Bluetooth. And in 1998, there was a special interest group created by five companies, IBM, Intel, Nokia, Toshiba, and Ericsson. And they wanted to work on a standard for wireless communications. And because they wanted to unite to unify Bluetooth, sorry, wireless transmission among devices, they named it after Bluetooth, after Harold Gormson Bluetooth. And the logo of the technology consists of two Nordic rooms, B and T. And in 2011, I guess, there was another version of standard created, which was called Bluetooth Low Energy. And it had a few ideas in mind. First of them is, of course, it needed to support low energy, it should work on very little power. It supported clients' home architecture, so it was very simple. Some devices wanting data would just connect to peripherals, to servers, they would return the data and they would disconnect, and slow energy. And the data is wrapped up in services, is grouped in characteristics, and it's available in that way. On iOS, WatchOS and macOS, we can connect via Bluetooth devices to Bluetooth devices by using core Bluetooth framework. And it works like that. If we wanted to have an application that connects to other peripherals, we'd have to use object called CB Central Manager. And we would connect to Bluetooth devices that would be visible in our application as CB Peripherals. If we wanted to write an application that acts as a peripheral, namely, it would be visible as a server exposing some data, we'd have to use CB Peripheral Manager. And clients wanting to read data from our peripheral would be visible in this application, which is CB Central's. Data is grouped into services and characteristics, and all of the characteristics and services can be identified by universally unique identifiers. We have a few classes, as I mentioned a while ago, and Kerbalto framework today will be using this set of classes to implement a simple application for WatchOS. So we'll use the CB Central Manager object, and we'll connect to another CB Peripheral to read some values for the bird. Bird will have an A, a color in which we'll show its appearance, and it will also have alpha value because we want to make it a bit translucent. And the data we'll expose will be exposed as UTF-8 encoded strings, and it will be just a string or hexadecimal value describing a color, or integer ranging from zero to one that will describe how translucent a bird should be. We need some UIDs to identify their or services or characteristics. So we'll have a simple enum bird service that will have UID of our service, which is this 128-bit value. We'll also have UIDs for other characteristics, such as characteristic for color and name alpha value, and some helper will need an array of characteristics. And we can generate those UIDs on iOS or on macOS. On macOS, it can be done by using UID Gen Console Tool and on iOS or other Apple environment platform. We can use NS UID Class to generate a simple universal unique identifier because this is what UIDs stand for if I haven't mentioned that. We already have a peripheral application. So we have a few controls to select a color from. We can type in a name for the bird and we can play with the transparency of a bird. And this application will act as a CV peripheral, as a peripheral, actually. So it would have to advertise under services. In our case, it will be bird service because our central application that we'll write for watchOS will have to sense the wireless medium for packets sent out by this application. So peripheral needs to advertise services. It will also have to respond to read requests for values of characteristics. And it will also notify our application if something changes in the system. So in the application. So whenever we select a different color on the interface or we type in a different theme or we select a value from the slider, our watchOS application will be notified about the change. We're going to implement bird central, bird up here. And it will have to scan for that service that peripheral will advertise. We'll have to discover characteristics of that particular service. We'll also have to read the value and subscribe for notifications upon a value update. And of course, at PBM, so we do everything in TDD, but actually I already implemented unit tests. So we have a suite of failing tests. We're going to implement everything and maybe for today we'll skip the refactoring part. Okay, so let me do the coding part. Or maybe I can show you the application itself from the peripheral. So it has a simple interface. When I select something, you probably can notice that the color of the application changes of the interface. I can type in the name or I can play with the alpha value of this bird. And now I'm going to switch to that place. Cool. So we have a project, we have 29 failing tests. We have this bird service in which I have all the UUIDs needed for the bird service and characteristics. And we also have this helper array of all the characteristics and it will be needed while we're going through the code. So I can run tests again so you will see that they actually are failing and I am not faking it. And let me introduce you to the project. It is available on GitHub and it contains a few targets. So there's Bluetooth demo. This is application for an iPhone. We also have peripheral target which is this application that we can use for exposing the data. We also have a target for watch OS application. And we have macOS app. Hence my macbook is a very old one. It doesn't support Bluetooth low energy. So this is why I'm going to show it to you by using another phone. So we have some common parts for all the applications, all the targets. We have this bird service I described to you. We have a bird central which will be pull which will be used by multiple targets. For example this, we have another iOS application and bird central will be hosted on the iOS application and on the watch OS application. So here we have a simple interface for the iOS application. It consists of a bird that has a name. It also has connection status and an image that we'll be playing with. We also have a watch OS application with a very similar interface. Hooray, hooray. And we have a set of tests. I'm not going through all of them. There are just for me to go with the implementation and to make sure that I implemented everything correctly. So let's start. First of all, we need to import core Bluetooth because this is our entry point to Bluetooth low energy communications. We have our bird central object that the one that will be reused by iOS application and watch OS application. And this bird central object communicates with other parts of the application such as view controller or interface controller in case of watch kit up. It will use delegate to say to the view controller or interface controller that's something happened in the system such as we discovered a new value please update an interface. We use CV central manager to kick off Bluetooth communications. Here, there is a wrapper on CV central manager because I needed to write unit test but basically this is a protocol that describes CV central manager and CV central manager confirms this protocol. And we have a set of properties that we use to store values read from a peripheral such as peripheral itself, services, service or characteristics. And there are also wrap in terms of protocol. All the interfaces described in terms of protocol. Bird central delegate is a protocol that needs to be implemented by everyone who wants to use bird central. And it contains a simple method. Central did perform action. And we have a few actions. We can connect to peripheral either successfully or unsuccessfully. We can disconnect from peripheral or we can read the value. And the value is of course name alpha from zero to one this time or a core. So let's start. So there's one method that gets called whenever state of Bluetooth interface changes in your system on your phone. It's called central manager did update state. And what we want to do at that time is we want to scan for services whenever interface is up. So you need to make sure that our state of central manager is powered on. And whenever it is, we want to scan for bird service. So your central manager to scan for peripheral with services. And the services we are interested in is a UID for our bird service. And we can just keep the options part. So let me run unit test. You'll be able to see that some of them will become green. Then whenever our central manager finds a peripheral, we get notified with central manager did discover peripheral. And we also can grab the advertisement data. So now it is 27, it was 29. Good progress. Whenever peripheral is found, we need to stop scanning because we already found what we were looking for. So we need to call stop scan on central manager. We also want to start the peripheral. It's very important because if we don't start reference to peripheral, we won't get updated upon connection. So let's start peripheral in a property. And we also want to connect to this particular peripheral. So we use another method in central manager called connect peripheral. We should be good with this method. Whenever our connection request fails, we get notified about that fact with central manager did fail to connect method. So in that case, there's no need to store the peripheral we stored in this method. So we can just clear it by setting this peripheral to neal. We might want to start scanning wireless medium one again to find another peripherals that provides such services. So we can start scan again. And we also can notify our delegate that we failed to connect. So because our delegate probably will update user interface for the case of this demo, we'll dispatch callbacks on the main thread asynchronously because this Bluetooth engine works on another thread. So we just need to use our central did perform action method. And this time we will just tell that our connection failed. It's been mentioned our unit tests. And let's focus on the successful connection. So this time what we want to do is we want to become peripherals delegate whenever we connect successfully. Because from now on we won't be using central manager in order to read values from the peripheral will invoke methods on peripheral object itself. And in order to catch the response we need to become a delegate of a peripheral. So we need to become delegate of a peripheral and we want to discover services of the peripheral. And again we are interested in our bird service. And we can also notify our delegate of bird central that we successfully connected to a peripheral. Let me run unit tests again. Whenever we disconnect from peripheral we also might want to do some cleanup. So let me create a reset method that will reset all the properties used to for storing some values. So let's clear the service itself. We can clear that peripheral. And there are also properties for all the characteristics. So let's clear them up as well. We also want to kick off scanning once again because we have just disconnected from the peripheral. And then we can notify our delegate again that we got disconnected. Whenever we successfully connect to the peripheral, I'm sorry, whenever we discover services for a peripheral we also get notified via one of the CV peripheral delegate methods. And when we discover services first let's check that our bird service is actually in the discovered services. Let's use a guard statement. And peripheral contains an array of services. So you might want to filter every characteristic characteristic that doesn't have a UID, certain characteristic service. You might want to filter service that doesn't contain a UID we are interested in. And the UID we're interested in is of course a UID of our bird service. And whenever we've got this filtered array we can grab the first item from it. If we have the service, we can store this service in our bird service protocol. Bird service is a type CV service. And what we want to do then is to discover all the characteristics of a service. We need again UIDs. So let's grab an array of characteristics we're interested in after UIDs. And the service we're interested in we need to also pass it to the method. Let's run test, hopefully they will decrease. Whenever a characteristic is discovered we can finally read its value and subscribe for notifications. So let's make sure that we don't have any error. And we also can set all characteristics to our properties. So now what we need to do is we need to iterate over all characteristics. And now we need to check the UID of a characteristic and we need to store them. So we have a few cases. We have name characteristic. We also have color characteristic and alpha characteristic. So we can store them in properties and of course switch needs to be exhaustive. And default case will just return. And oops, we need to return as I said. And we also want to subscribe for notifications. And we want to read value for this characteristic. Let's run unit tests and just grab something from here. Oh no, this is bad. So whenever we read a value from peripheral peripheral did update value for characteristic gets called. And what we need to do now is we need to first check again that there was no error. And then we need to notify our delegate that we read the value. And we will use for that bird central dot action dot value time. Sorry, bird central dot value time mentioned earlier that can be a name of our core. So again, we iterate, we have a switch statement and based on the UID, we'll create an appropriate type of value. So in the first case, it's name value and we have some computed properties that extract values here. Why can't get in? So it extract binary data from a characteristic. It converts it to a string or returns something. So we can reuse these. And in other cases, it will be polar or alpha. And the alpha computed property does some manipulation on the value that was from zero to 100 that then converts it to CGFloat from zero to one. And what we need to do in this method is to notify our delegate that something happened which is a value was read. And we can use our value variable. Okay, let's run unit tests. And I think that's it for the implementation. Let's see if I forgot about anything. And in the meantime, let me prepare a phone for the final installation of this application. Okay, a few more things. So whenever we connect to a peripheral, we need to become peripheral delegates. Probably this will do. Whenever we discover a characteristic, we should store the service. And if there is an error when we discover services, we should not store anything. They burn with me a while and hopefully the demo will go successfully. Does anyone know a good joke? Because this may take a while. Okay, tests are green. So let's try installing application on our watch. I mean, not on our, on my watch. And let's see if it will work. Okay, you can see the watch and maybe in a while, it will be installed. Okay, I think it takes a moment. So maybe I can show you a bit of tests if we have a time. So we have bird central tests class that contains all the test cases. We have our subject or system under test, which is bird central. And we create an instance of it in setup method. We also have some spies that can intercept calls to this central manager we interact with. A spy contains some properties that we can assert after calling some method on our SUT. And that's usually toggled from method not called to method called. And to be honest, writing tests and Swift is really difficult because we need to create all those spies or mocks by ourselves. Okay, I think it should be running by now or almost. The question couldn't be completed. Let me see if the application is there. It's installed. Oh, but I need to trust the application. Okay, do they trust it? Maybe it will run. Let's test it in field. So I have this phone over here. Oh, maybe I could show it there. Now I will start advertising services. And if everything will be done properly, this should connect. And actually it tells that it is connected and you have a bird. And we can change its color play with its transparency. And we can also set a name for it. So let's call this one James Bond. And I don't know if it's visible but it should have changed James Bond. Okay, that was difficult. So let me rub up. Quick recap. Starting from what we have for, we're able to write applications that connect to peripherals and only central role is supported on WatchOS. We, I wrote some unit tests that helped me implement the desired behavior of our application. The code of bird central, the class that we created is portable to iOS, WatchOS, MacOS, and TVOS, namely all the platforms that support Kerbalto framework. Code is available online. And I think that's it. Thanks. Are there any questions? Good, because I'm extremely tired. If anyone has any questions, just talk to me after the event. Okay, let's now win here. So, actually you can ask the question now. Okay. So the winner will win that this book. But you also need to post a photo later. So you spoke, so you can ask the question. Okay. So raise your hand and you can do the answer. Good. The best answer wins. And the first person to give the best answer. Okay, quiz. How can you create a universally unique identifier on MacOS? Please specify a tool that can be used. And on iOS, a class framework will do. C, U, I, D, iOS. But this is not the simplest way to create a universally unique identifier on iOS.  Win a book on iOS animations. Is it C, D, C, I, T, J, X, or R, X? No. There is a really simple way of creating it. And actually, I mentioned that during this slide, sorry, where is this, here. So there is something called CBU, U, I, D. But this just creates an instance of CBU, U, I, D, object. But what we want to do is we want to generate this string that we could reuse in our application. You mentioned some things about NCU, U, I, D. Yeah. So this is on iOS. Do you also remember how to create a U, U, I, D on macOS? Yeah, I mentioned, I don't know much about it. Codgen? Codgen? Not Codgen. U, U, I, D, U, I, D. Exactly. Okay, Dom, you don't need this book, so how the book goes to this gentleman over there because he mentioned that as U, I, D first. Okay. I need to take a photo. Good. And I think that's it. Thank you very much.