Good morning. Welcome to CMC markets on Friday, the 23rd of April and this quick look at the week ahead with me Michael Houston and what's going to be a very very busy week not only on a macro basis, but also on a company earnings basis because we've got an absolute plethora of Announcements over the course of the next week or so in fact It's been pretty challenging in the context of really I think what to leave out as opposed to what to keep in And and for me, I think it's given given the fact that this week has been a fairly choppy week and looks likely to Be the first negative week for European stocks in the last seven. I think it's a good time to sit back and reflect on where equity markets are likely to go to next I Think one of the things That's been borne out of over the course of the past few weeks And if we look at the German DAX is a very good Indicator of that is how much good news is currently priced in in terms of The post pandemic recovery if we look at this long-term chart and forgive the lines on that There's only a couple but they sort of give an indication of an overall direction to travel But certainly I think we can certainly see Apart from bit of choppiness at the beginning of 2021 The the line of lease resistance has been higher And we've seen seven successive weeks of gains on the DAX and this week is likely to be the first weekly decline In quite some time Now there are a number of reasons for that. Obviously we were overdue a little bit of a poor back but to hear some people talk you'd think that the That Armageddon was coming our way ultimately these sorts of corrections are very healthy and while They could be uncomfortable for long positions We are still not far away from record highs for the likes of the euro stocks 50 The stock 600 even US markets as well US markets have continued to do very very well Let's we've seen a little bit of a sell-off and I think there is a potentially a fear That may be an awful lot of the good news is already priced in and I certainly think that there could be a case for that when it comes to events perhaps In Asia which could impact on the airlines if you look at the way airline stocks have gone up over the course of the past Few weeks you could argue that they're probably priced a little bit too high Given the fact that international travel Given what we're seeing take place tragically in India and to a lesser extent in Japan where infection rates are also rising It will mean that international travel is likely to take an awful lot longer to get Restarted than say for example more domestic travel and I think that's why you're seeing a little bit of divergence In terms of how companies like British Airways I AG are performing Relatives say for example easy jet or Ryan here Ryan air Ryan here Ryan air Which has a much more domestic focus and want to say domestic focus. I mean in terms of closer to home There is also some talk that the US and the UK could open up some form of air travel corridor Given the fact that their vaccination programs on our are on a fairly similar track and Some of the data that we're seeing come out of the US and the UK is very very positive indeed this week US weekly jobless claims fell yet again. Now that that goes very very well for April non farm payrolls in two weeks time We've seen UK retail sales Jumped 5.4 percent in March despite the economy being in lockdown February was revised up to 2.2 percent Again, you know a really solid bounce back hasn't completely reversed the 8.2 percent decline in January for the UK retail sales But nonetheless it points to a direction of travel. The big question is Will that recovery be sustained? Well, I suspect that can be I think it can be maintained Over the course of the next two to three months at least so that should bode well for Q2 GDP growth certainly Q1 Does look as if it's likely to be better than expected certainly in terms of the UK and in terms of the US We've got US first quarter GDP the first iteration of that coming up on 29th of April next week and And Given the data that we've seen out of the US over the course of the past few weeks This looks set to be a bumper number for US Q1 GDP You know, it's the first iteration which means that some of the later data that we've seen in March May not be included in that number But ultimately we're still expecting an annualized expansion of 6.5 percent You know a really big jump from what we saw at the end of last year And personal consumption is expected to drive that quite significantly With a rise of 10.3 percent We've also got US personal spending and US personal income on Friday 30th of April again and again here what we've seen is that The expectations for that are likely to be fairly high indeed not that you'd know it To look at what the dollar has done Over the course of the past few days It's very much on a downward track and that makes the upcoming Fed rate decision All the more important Probably less important in the context of what bond yields are doing because I certainly think that Bond yields US 10 year yields have Found upward progress slightly more difficult to sustain than was the case say for example a month ago And I think a large part of this softening in US yields is on the basis that I think markets are slowly coming round to the idea that This outcome based guidance that's now part and parcel of the US Central Bank's new policy of not reacting to perceptions of a Not reacting to perceptions of a direction of travel But waiting until both goals of higher inflation and full employment have been achieved it's cutting through and That narrative is likely to sustain Or keep a lid on bond yields US 10 year yields for the short term But we'll do it in the long term will another one million payrolls number in April start to raise concerns About rising costs higher cost push higher cost push Inflation because we're certainly seeing evidence of higher costs Being passed on down through the supply chain So it's really just a question of whether or not that translates into to higher higher yields I'm digressing ever so slightly So personal spending and income on the Friday now Expected to see a big jump in personal income not surprisingly a rise of 20% We're expecting there. We saw a 7.1% decline in February now The 20% rise that we're expecting to see in March is largely down to stimulus checks hitting the door mats of US consumers in March So that will disappear in April what I'm particularly interested in is the US personal spending Component how much of that rise in income Translates into additional spending now if you look at US retail sales For March they were fairly decent. They were fairly decent indeed But the estimates for personal spending for March is slightly more conservative and we saw a February decline of 1% Economists are predicting a 4.2% rise in March now That could be that that could be as a direct result of people not spending it all at once But ultimately that money is still there and it's still available to be spent or to go into the stock market or go into crypto currencies I mean, let's not talk about crypto currencies this week. They've had a nightmare And a large part of that could well have been down to that announcement on Thursday night that came after European markets have gone home The Joe Biden was looking to increase the rate of capital gains tax to thirty nine point six percent for those Americans earning One million dollars a year or more and that prompted a little bit of a little bit of weakness in US stock markets Last night a slight over reaction I would suggest and you can see that you can see that there But what this tells you is we've been very choppy this week I mean, obviously this is Monday Tuesday down Wednesday up Thursday down and now we look as if we could well go high You know capital gains tax rates when Democrats talk about raising capital gains tax rates You know, that's all well and good but You know talking about it and actually legislating for it to totally different things and I think When Investors and markets are near all-time highs. There's concerns about Slowing recovery a global recovery because of events that are going on in the Far East Asia India Japan rising infection rates their lockdowns There then it's not unexpected given the fact that we've got a whole host of earnings announcements about to hit the tape in the coming weeks The investors will start to take a little bit of money off the table so last night's reports of a potential rising capital gains tax Slightly to be an opening salvo in a guerrilla war campaign between Democrats and Republicans on how to pay for the huge fiscal stimulus plan. It's only just been unleashed As recently as a month ago. So I think talking about tax rates is all well and good But the devil will be in the detail and we're a long way From a doubling of capital gains tax hikes and even if we do get them They won't be anywhere near as high as the numbers that were being touted last night But you know never let the never let logic get in the facts get in the way of a nice little You know sort of byline in the story And I think a large part of that was obviously behind the big plunge that we saw in Bitcoin Over the course of the past Few days that started to look a little bit frothy. We saw a big sell-off. It's now below $50,000 But ultimately what we do have now is Where do we go to from here because ultimately this week's price action has seen a little bit of a pause on the Upward momentum that we've seen over the course of the past few days and weeks, but it is just that It's a pause Nothing more and ultimately if you're not going to put your money in stocks Where are you going to put it? given the fact that bond yields and now Now now appear to have found a little bit of a level so For me it's important to pay attention to the headlines and the narrative But don't lose sight of the price action and the price action Ultimately is still by the dip and that's essentially You know my my my mindset hasn't changed on that We are still very much in an uptrend for markets in general And if we look at where the support levels are on the S&P 500 we can see quite clearly Through these series of loads through here. There's a nice area of support in and around 4,110 It's the low four thousand one hundred and eighteen there four thousand one hundred and twenty there And then you've got this low here four thousand one hundred and twenty one And then you've got the low here four thousand one hundred twenty three to the big big low Or between forty one ten and forty one twenty So for me we're still in an uptrend and we still look fairly positive while forty one hundred holes If we drop below forty one hundred then we may need to reassess our overall strategy But at the moment There's a decent area of support all the way through these series of loads through here And if you want to basically show that in slightly better detail We can we can show it in the form of a four-hour chart where you can see the number of times That level has found a little bit of either resistance or support all the way through there So forty one hundred is going to be a very key pivot in the course of the next few days If we fall below that then we could we'll see further declines in US markets more broadly And this is this is why looking at charts is so important. It's about identifying a level and Then adapting a strategy to fit a Move either off that level or through that level So let's look at the footsie one in that context Let's look at the footsie one hundred because seven thousand was a bit of a level for me last week We went above it. We weren't ultimately able to sustain a move above it Which is disappointing. Obviously, that's a big down move on Tuesday We've seen a little bit of a recovery back in the course of the past few days But for me now, I think the big level is six thousand eight hundred as long as we can hold above six thousand eight hundred And this trend line here the 50 day moving average the current uptrend remains intact So while this set off is not particularly welcome It still remains very much a by-the-dip opportunity to you buy into weakness in an uptrend You sell into strength in a downtrend. It's not rocket science You're not trying to reinvent the wheel if we look at the line through these lows here You can actually draw a horizontal parallel line through the highs as well So we're in a very nice upward channel in the footsie one hundred So the upward momentum that we saw put saw us push through seven thousand is still intact despite the dips that we've seen this week Okay, so I've talked about Potential hurdles risks and what have you with respect to what's coming up in the week ahead There's a fed rate decision on the 28th Again, I don't think we are going to see too much of a change in tone From Fed chair J. Powell when the Fed last met in March Their biggest concern was trying to balance the optimism of a strong economic rebound against rising expectation But the central bank might start to look at tapering its bond purchase program or start to raise rates will before 2024 Now the data has moved on since then and obviously Fed policy makers will have to adapt their messaging To fit the narrative of that bumper payrolls report that the strong ISM numbers that we've seen over the course of the past Few weeks as well as the strong retail sales numbers But they are only one or two months of data and central banks by and large in my experience don't generally tend to react To a single data set or even a multiple day or one months Set of data no matter how good it is the Fed will be pleased how the economy is looking And with a number another burn for payrolls report expected For April, I think they will be keen to temper any enthusiasm or foster any expectation of a change in stance So we might see some Fed policy makers alter their dot plots to signal a slightly earlier taper But it's more than likely the messaging will remain exactly the same with respect to this outcome-based guidance which I referenced earlier so For me the narrative remains the same when it comes to equity markets more broadly at the moment the trend continues to be positive Despite the set off that we've seen this week and while if we look at the candlestick chart There's nothing particularly concerning here in terms of a potential reversal Then the bias remains very much towards buying the dip as we can see from from the DAX We didn't stay much belong We didn't we didn't even get close to testing 15 000 So at the moment it's very much the trend is your friend. So in terms of looking ahead to company earnings, it's an absolutely huge week for Company results both UK and US we have got BP's first quarter numbers on the 27th of April. We've got royal Dutch shells First quarter numbers on the 29th of April. We've got Lloyd's banking group Nat West group We've got Barclays first quarter numbers. We've got AstraZeneca's first quarter numbers We've got Microsoft's third quarter numbers. We've got Apple. We've got Amazon. We've got Facebook. We've got Tesla I mean, where do you want me to start? What do you want me to leave out? So what I've done is I've basically gone through big oil first and foremost and looked at BP share price and certainly I think the rebound in the oil price has certainly done an enormous amount of favors over the course of the past few weeks very much In an upward trend here oil prices continue to look fairly robust and ultimately after overseeing a 5.7 billion dollars annual loss at the end of its last year accounts um, I think most of the attention now Will be on BP's debt levels overall debt levels because I think one of the one of the targets that CEO Bernard Looney set When looking ahead to 2021 was getting overall debt down to 35 billion dollars and that gearing level down Um as well now we've seen further progress on this front sale of a 20 stake in the amount gas block um and in april it was announced um that the intention to get 35 billion the debt levels down to 35 billion pound Was expected to come at the end of this quarter q1 So we'll get an update on that whether or not they've hit that target my biggest concern about the oil mage is is how How slow they are being in terms of trying to adapt their operations to um a slightly greener business model Um, and I think this is the thing they spent billions of dollars over the years on trying to source new fossil fuel Resources, but they're not spending anywhere near as much In terms of green energy. Yeah, but you know, they're they're buying You know, they're buying various small companies In terms of Charging networks for electric vehicles and what have you solar businesses in spain in the case of BP Um, you know, they've expired a 1.6 gigawatt portfolio across spain from r i c energy But they're spending a very small amount of money to do this So really it's a question for me with BP. It's about the dividend obviously Um, and it's the same with raw Dutch shell dividend, but ultimately what we've got here looking at the price action We still very much remain in case of we're in an uptrend refining support in and around this 286 area here We can where I've drawn that line in there It's acted as a decent area of support all the way through here Can it continue to do so or will BP disappoint in its first quarter numbers when it releases them on the 27th? Um, certainly looking at the looking at the the highs here We're starting to run out of steam a bit. So my concern is if we do drop below 286 We could see a little bit of a slip lower but overall um We're enjoying a little you know fairly decent recovery when it comes to BP I wouldn't surprise you to know that raw Dutch shell is probably fairly similar Trading in a little bit of a range So I think in the in the case of this particular chart. It's very easy to Um define your trading boundaries. We've got fairly decent support in and around 1225 1227 1230 depending on where you want to put your line and on the upside fairly decent selling interest anywhere above 1420 1430 there or thereabouts. So Very much trading in a little bit of a range when it comes to the oil majors banks um Lloyd's banking group it's been one of the serial under performers When it comes to the uk banking sector now, this is where we were Just over a year ago. So if you look at How people are perceiving the uk economy now And how they were a year ago um well over a year ago Lloyd's bank shares are still well below The february peaks the pre-pandemic peaks that for me makes no sense whatsoever. None zero um If we look at Lloyd's bank if we if we take us banks as a template and obviously you you're comparing apples and oranges because obviously Lloyd's bank doesn't have an investment banking division But one of the key takeaways that I took from us bank earnings was the fact they're rotating capital back out of um potential impairments Back onto the balance sheet um ultimately us banks are much more optimistic about not taking As many impairments as they thought they would a year ago and I think the same probably holds true for The uk banks as well um, you know Lloyd's set aside 4.2 billion pounds In terms of non performing loans for 2020 now I would be very surprised If they use all of that So the big question for me then is What happens with that money? Do they pay out in the terms of an extra to the term in terms of dividends? Do they rotate the capital back onto the balance sheet? does There's there has the recent increase In bond yields actually improve profitability for these banks. I mean if you look at the way Lloyd's um Interest margin has been it's one of the better ones in the uk banking sector So there's no reason to suppose that won't improve either. So certainly in terms of first quarter The trading I would be very disappointed if those numbers Didn't actually put a flaw around about 40p on the share price and send us back up towards The highs that we've seen earlier this month in april and back towards 50p Very surprised indeed given the data that we're seeing coming out of the uk economy Given the fact that the impairment numbers may not be anywhere near as bad Or I was budgeted for It's going to be a similar sort of story for nat west group as well With nat west there's been probably more outperformance there because of the fact that the evaluation on nat west and say for example Barclays has probably been slightly more bombed out. But if we look at nat west group We've seen a much better outperformance in terms of the share price Where it was at the end of september and where it is now we virtually we've almost doubled the share price, but we're still Below the levels that we saw in february all be yet We've come back an awful lot more than say for example Lloyd's house, but we can see from this chart here that there's still potential for us To go a little bit higher. We're earning a bit of a barrier Just below 200p. That's probably more psychological than anything else and certainly nat west have had their fair share Of negative headlines over the course of the past few weeks So that's probably holding it back as well. But if you look at Barclays, which does have an investment banking division We have recouped all our post pandemic losses. So certainly I think when it when it comes to good news A lot of the good news for Barclays is already in the price probably less so in Lloyd's But again, they they set aside Quite a bit in terms of non-performing loans as well 4.8 billion pounds So again here, you may find that get revised. You also may find That they could pay out a bigger dividend. So again here. I think there is potential potential Nothing more for a significant, you know beat towards the upside. We'll see certainly us banks have outperformed I see no reason why UK banks can't do the same thing based on that same model So I'll be paying close attention to bank earnings over the course of the past few days And then of course, we've got AstraZeneca, which has been in the news by and large for An awful lot of the right reasons, but also for the wrong reasons And you know, whatever whatever your views on the AstraZeneca oxford vaccine Certainly their PR has probably Been less than impressive But ultimately they are they are they are supplying a vaccine at cost They're not making any profit from it It's not something that they're particularly known for in terms of vaccines And ultimately, I think the share price has underperformed say for example relative to It's peers like Pfizer nonetheless If you look at the way the share price has gone it's one of those share prices that's really You know, I struggle I struggle with enthusiasm for it. So I think irrespective of the numbers that we get out on on on Friday um The expectation is that total revenue is going to rise by a low teens percentage So we're talking about 12 or 13 percent and one of the things that I think will be particularly noticeable will be How Is COVID-19 vaccine costs And such like are included In this quarters numbers because of the in the four year numbers None of those none of those costs were actually included um at the end of last year And it's something that AstraZeneca said that they would include in the next set of numbers So i'll be interested to see what the dynamics are in terms of Whether or not there's been a significant impact on revenue and profit from the sale of its COVID-19 vaccine In this particular quarter So That more than anything I think probably won't dictate the share price too much But it's ultimately interesting in any case we've also got apple and tesla earnings So let's go with tesla because I think these could Again here nice little uptrend for tesla And if we look at what's expected Last year So it's only just missed out on meeting its target of selling 500 000 cars In a single year now obviously was helped in this by the addition of its chinese factory the q1 The hope is well In q1 the company said it's delivered 185 000 vehicles with most of them being the model 3 and the model y Now the model x and the model s saw about 2000 Deliveries in the first quarter with the hope the production and deliveries can be ramped up Further so looking ahead tesla says it's going to be hoping to start production of its new crossover suv model A new plants in austin and at brandenburg in germany now the plant in brandenburg in germany Apparently is rolled into delays. So it'll be interesting to see whether or not Elon muska revises down his expectations for the number of cars sold this year It'll always be interesting to see how much the recent slide in bitcoin As a cost of the company as well given the fact that mr muska said that he's a big supporter of bitcoin I think the one thing that I would say about tesla is that despite the fact that they've made Profits In every single quarter over the course of the last five or six quarters The market cap their market cap is still in excess of the entire automotive sector So for me Can they can they sustain this sort of valuation at a time when the likes of general modes ford and damler Are starting to ramp up their own electric vehicle offerings and have the ability to scale that much quicker I mean, I think that's the thing for me You know tesla's scale Means that they don't have the same production capacity Even now There's the big automakers. So does that justify the current valuation at the moment still in uptrend? So there's still capacity for us to dip back to look towards The 200 day moving average and while we do so We still remain in the uptrend and the if if the past few Years have taught us anything it's always foolish to bet against Elon musk But at some point his luck is probably going to run out and the big question is when will that be So that's tesla still in an uptrend Still fairly decent support in and around 700 dollars So keeping on that and then let's pick out our old favorite apple seen some fairly decent gains over the course of past few months broken a little bit of an uptrend here Bounced off the 200 day moving average and rebounded back above the 50 day moving average in the process and they have Also announced a whole host of new upgrades in the past week or so So the launch of a new ipad pro and ipad mini a new iMac as well as air tags Which are bluetooth tracking devices. So in terms of their expectations for q3 their q3 Coming up They'll be wanting to really push out these new upgrades and these new products and what have you and certainly they blew the doors off expectations for q1 with 111 billion dollars of q1 revenues Three months ago. You know, I mean I was I was absolutely amazed by that. I really was I mean I'm I'm an apple i'm an apple user. I wouldn't say I'm a fan But I certainly like their products um and There's five g iphone Continues to be its biggest revenue earner it it accounted for about 65 billion 65.6 billion dollars Of the overall revenue that we got in the first quarter. So it's still a big revenue earner um and Services are also expected to do well though given what we saw with netflix and maybe it won't we'll have to wait and see With respect to that, but certainly I think the netflix numbers were shot across the bowels The streaming services if anyone needed When economies unlocked very much very much still in the case of an uptrend for apple And ultimately I think even with all this talk of capital gains taxes and what have you apples valuation still Even if you think it looks frothy, you know, it's a cash rich company. It generates lots of free cash flow And has in recent months been acting more like a safe haven Than anything else in the same way that amazon has also Attracted a similar sort of flow in terms of the way the nest egg has been performing as well So we got amazon first quarter Facebook first quarter. I wish I could go into more detail. Some of these we've got microsoft It's an absolute plethora of earnings announcements that we've got coming up In the next Few days, so it's going to be a busy week A lot of these earnings announcements expectations the bar is very very high Remains to be seen whether or not those Those expectations will be valid, but overall Expect to see a fairly decent decent indicator of Guidance in terms of how these companies Expect to perform over the course of what's likely to be a bumper quarter for personal spending and consumption Going to finish off with a quick overview of currencies Because at the moment the dollar is continuing to look a little bit weaker. We've already seen euro dollar push higher Finding decent area of resistance between 120 60 and 120 70 See where we react here, but even if we do push higher, we've also got this up a line here So even though the dollar is looking a little bit weak at the moment Bear in mind what the price action is telling you and while people are talking about euro dollar back at 125 I'm not in that camp not yet Not by any stretch of the imagination I might revise that opinion if we break through here, but for the time being We're still in that downward channel for euro dollar. So it remains very much a case of sell rallies for euro dollar in cable We are starting we are still we've still got a fairly solid base in and around 136 70 Now if we can get through 140 20 Then we can revisit the highs of 142. So 140 20 on the upside 136 70 on the downside. That's the range Um, but overall I'm still very much in a case of buy the dip on cable Sell the rally on euro dollar, which obviously means sell euro sterling on rallies and here again We've got fairly decent resistance At 87 20 87 30 as well as we've got the 100 day and the 200 day moving average So keep an eye on those particular levels there 87 30 on the upside euro sterling Finding support around about 85 80 but again I'm of the opinion that euro sterling probably goes lower over the medium term and Until such times we break above 87 30. That's the narrative that I think will play out So that's pretty much It for this week. I know I've gone on a little bit longer than perhaps I should have done But thank you once again for listening I hope you all have a pleasant weekend and I'll speak to you all same time Same place next week. Thanks very much


Live from Las Vegas, it's theCUBE. Covering Dell Technologies World 2019. Brought to you by Dell Technologies and its ecosystem partners. Hello everyone, welcome to day three live coverage of theCUBE here in Las Vegas for Dell Technologies World 2019. I'm John Furrier, Dave Vellante. Dave is Dell Technologies World. This is our 10th year, if you count EMC World 2010. First ever CUBE event where we go out to the events and extract the signal from the noise. Now we're the number one in tech coverage. Howard Elias has been with us the entire way. Our next guest CUBE alumni, Howard Elias, who's currently the president of Services and Digital for Dell Technologies. Howard, great to see you. Hey, great to see you, John. Dave, always great to be back with you. Thank you. You've been with us for our entire CUBE journey. It's our 10th year. It's been a great ride. And one of the benefits of doing theCUBE, besides learning a lot and having great conversations is, as the industry evolves from true private cloud to big data meets technology, all the different iterations of the business, we get to have the conversations and look back and see who's right. You get to go back and see what we said. And hold you accountable. Not that you guys said anything crazy, but you were unique because we've had many conversations and most notably, during the acquisition of EMC, you were on the team leading the effort with your partner in crime from the Dell side to make sure the acquisition goes smoothly. And a lot of people were saying, oh my God, iceberg's ahead. We were pretty positive, so history treats us fairly on the CUBE. We tend to got it right. But you said some bold things that was pretty much the guiding principle of the acquisition. And I just tweeted it out this morning. So you got it right. You said some things. Looking back, almost two, three years later. Well look, John, first of all, I appreciate that. Appreciate the opportunity to be back with you. And it's amazing it's been 10 years, huh? But yeah, so over the last couple of years, I did help co-lead the integration. And we said, look, first and foremost, we're going to do no harm. The way customers transact with us, buy products, the way we service them, that's not going to change. But then that's not enough, right? It's not just about doing no harm. It's how do we add value over time? We talked about aligning our teams in front of our customers. Then we talked about unifying the approach, not just in the go to market, but in services and in technology and ultimately delivering more integrated solutions. And we've executed on that, as you rightly say. So thank you for pointing that out. And this week was a great embodiment of that because not only are we listening to what our customers want, we're delivering on it. We are actually delivering these integrated solutions to Dell Technologies Cloud, the unified workspace for client. These are things that we've delivered over time. We stitched it together and now we're unifying it, integrating it, actually now even embedding services into it. So that's the journey we've been on and we've been very pleased with the reception we've had from customers. And Michael too also was very bold. But the key on all the conversations we had on this was, and we'll get to the current situation now because that's important, is that you guys saw the growth opportunities on the synergies. We did. And we kind of had those conversations. So align the teams, unify and integrate. You're at the integration phase now. We're starting to see some of the fruit come off the tree with business performance significant. Well we appreciate that. We're gaining market share across the board and we had a hypothesis with coming together, we had complimentary product portfolios, complimentary customer segments. We were very thoughtful in how we organized our go to market. And we're seeing that. We're seeing that in market share gains. But more importantly, we're seeing the customer conversation saying thank you for that. Now I want more. How do you deliver more value faster? So I think we're past the integration stage. Now we're into the accelerating the value stage. Howard, you've been through and seen a lot of acquisitions, large acquisitions. I mean I think of the compact digital. You know, not a lot of overlap. HP with compact, much more overlap. Maybe didn't go as well or maybe a smoothly. Massive acquisition here. Why do you think it worked so well here? Because there was a fair amount of overlap. You know, definitely some shared values but maybe some different cultures. You've been on both sides and it just seems to be working quite well. You seem to be through that knot hole of maybe some of that uncomfortable early days. Why do you think it worked so well? What was kind of the secret sauce there? I think a couple of reasons. First, the hypothesis of coming together was all very customer centric. Customers wanted fewer, more strategic partners. They ultimately, from infrastructure, want more integration, more automation. They want to, as Pat said yesterday on stage, they want to look up to apps and data and somebody else worry about looking down and taking care of the infrastructure. So the hypothesis was very strong. Michael had a bold vision but the boldness to actually execute on that vision as well. I would say second, we have, yeah, while the cultures in terms of how things got done were a bit different, the values were frankly not just similar. They were identical. We may have talked about this before but when we did the integration planning, we actually surveyed half the population of both Dell and EMC. The top five values in order were the same from both team members. Focus on customers, act with integrity, collaborate, win as a team, results orientation. It was phenomenal. I would say third, it's just the moment in time and it's really a continuation. You think about the 10 year partnership that Dell and EMC had back in the 2000s. That actually helped us get to know each other, how we worked and helped form those shared values. So, and then finally, approximately 150,000 team members signed up to the mission. You know, the tech industry is Star for Tech talent and the fact of the matter with that we have approximately 150,000 team members across Dell technologies signed up to our vision, signed up to our strategy, executing every day on behalf of customers is just awesome to see. So, digital transformation, of course, is a big buzzword. So, I got to put it on you guys. What are you doing for your own digital transformation? You have proof in the pudding. What gives you the right to even talk about that? What are you doing internally? Yeah, you know, it's a great question and to your point, we talk with customers all the time. In addition to looking after our services businesses worldwide, I also am responsible for Dell Digital inside of Dell Technologies. That's our IT organization. We purposely named it Dell Digital because we are on our digital journey as well. And so, we are transforming everything that we do the way we do. We actually call it the Dell Digital Way. We've got a couple of nice breakouts. Our booth in the showcase has got TED Talk style conversations around this and it's really embracing this notion of agile, balanced teams, getting close to the business. Actually, the business in the dojo with our developers moving more to a product orientation versus a project orientation and it's really focused on outcomes and IT, you hear us talk about this all the time. Technology strategy is now business strategy and whether it's in sales or marketing or services, Doug's doing great work and support assist using telemetry and artificial intelligence and machine learning. The recommendation engines in our dot com, the onboarding within hours now with what used to take weeks with our business customers and our Premier Portal. We are looking at every opportunity, everything from the introduction of bots in RPA, all the way through machine learning, AI and true digital transformation. We are walking that talk. Really, you're going hard after RPA. That's a, what are your results? We've actually been doing RPA for many, many years and for, especially when you have a complex system, a complex ecosystem, as you're rewriting and developing either replatforming, refactoring or cloud native, you still got to get work done. So, I'll give you a great example. In an online world of today, it's amazing to know that we still get millions of orders by email and fax. And instead of outsourcing that and having humans retype the order, we just have robotics. Read it automatically, translate it and... So, the narrative in the media you hear a lot is, oh, automation is going to kill jobs. But I've talked to several RPA customers and they've all said the opposite. We love this because it's replacing mundane tasks. It allows us to do other things. What's your experience?  I'm a technology optimist and I believe that AI, machine learning robotics will do the tasks that humans are either not good at or don't want to do or don't like to do and allow humans to be more human. Creative thinking, creative problem solving, human empathy, human compassion. That's what humans are good at and we need more people focused on those things and not road tasks. One of the things that Michael Dell and the key themes in the keynote, day one and day two and some day three, a lot of societal impacts, I love that, it's kind of touchy-feely. But the reality is of re-skilling people. The skills gap is still a huge thing. Culture in the enterprise is moving to a cloud operation which favors your strategy of end-to-end consistent operational excellence as well as data-driven value of the app layer. By the way, we've been saying on the queue the same thing for years, horizontally scalable, vertically specialized in all industries with data at the center. So, good strategy. Gaps in culture and skills are coming up. How are you guys doing that? Because service is, you've got a lot of people on the streets, a lot of people that need to learn more about AI dashboards, taking the automation, flipping a new opportunity to create value for people in the workplace. We have this conversation continuously inside of our teams and inside of our company. Look, we have a responsibility to make sure that we bring everybody along this journey. It starts by painting the vision, being that technology optimist. Technology is a force for good and how do we apply the technology and the digitization and creating our digital future, bringing our team members along. So, setting that vision. It is about culture and behavior, set the tone from the top. But we also have a responsibility in retraining and reskilling and bringing team members new opportunities, new ways to learn. Our education services team, for example, you see it here, the certifications, the accreditations we do, the hands-on labs that we do. It's all about allowing opportunities for people to upskill, learn new skills, learn new opportunities that are available and customers need this higher value health and support. What about the transformation that's been impacting the workflow and work streams of your services group with customers as they are maybe not as far ahead as you guys are on the transformation. Maybe they're cloud native in one area, kind of legacy in the other. How is the impact of delivering services, one, constructing them services, formulaing the right products and service mix to delivering the value? How has technology changed that you mentioned, R.P.? What are some of the highlights in your mind? Well, it's a journey and mileage varies here, right? Depends on what you're trying to accomplish, but we never do wrong by focusing on what's right for the customer. So what are customers looking for? What are their business outcomes they're looking for? Here's a great example in the unified workspace. We've been doing PC as a service for a while. Even before PC as a service, we're delivering outcomes, delivering PCs, doing some factory integration, some image management, lifecycle management, deployment services. But now what we've done is really taken not just the end-to-end view, but we've packaged it and integrated it into a single solution offering across the life cycle. So now once we understand the customer and users personas, we can factory image the configuration, ship it to the team member's desk, not just to a doc someplace, but right to the team member's desk, have auto deployment, auto support, telemetry back and manage that life cycle. We've packaged that up now end-to-end. This is a new capability that customers are really looking for. Before I know, D, you've got a question. I want to get your reaction to a quote I'm reading from an analyst, big time firm. New solutions launched at Dell World Show that work to align seven businesses over the last 18 months is starting to pay off. We just talked about that. Cross family solutions minimizes time on configurations and maintenance which opens up incremental total addressable market and reduces IT complexity. Michael Dell yesterday said that there's a huge swath of market opportunity revenue-wise in kind of these white space gap areas that we're servicing, whether it's image on PCs, and you kind of mentioned PCs as service. The analyst see this as TAM expansion. You're coming in reaction to that. I couldn't say it better myself, and look, the two integrated solutions we announced this week is a great example of that, of the seams. It's Workspace One. It's security from secure works. It's the Dell endpoint management capabilities. It's the PC hardware itself.  We're even doing our consulting business with our new pro-consult advisory offer. But look at the Dell Technologies Cloud. Dell Technology infrastructure with VMware. We'll be adding PCF as a service on top of that. This is exactly what customers are looking for. So what's your marching orders to the team? Take that hill. Is it a new hill? Is it the same hill? What's the marching orders down to the team?  Make sure we understand how our technology and services are being utilized, consumed and impacted, and where do we add more value over time? So I want to ask you from a customer standpoint, we were talking about digital transformation earlier. And the customer's always right is the bromide. You guys are very customer focused. However, when it comes to digital, a lot of customers are somewhat complacent about it. Obviously technology companies like yours embrace digital transformation. But I hear from a lot of companies, well, we're doing really well. I'm going to be long gone, but before this really disrupts my industry, it's somewhat of a concern. Do you see that? And how do you, I mean, I think one of the reasons you're so successful in your career is you take on hard problems and you don't freak out about it. You just have a nice, even keel. What do you do when you encounter that complexity? Do you coach them through it? You just say, okay, hey, customer's always right. But there's a concern that they'll get disrupted in there. Your customer, they're spending money with you today. So how do you get through, break through that complacency? Yeah, it's a great question. And one of the other marching orders I give to my team, is that things are going so well, it's time to change. And so this is what we have to take to our customers as well. And look, we have to be respectful about it, but we also have to be true telling. And so we will meet with our customers, hear them out, and where they're doing well, we'll point it out. But where they're not or where we've got different examples, we'll just lead by example. Our own internal example, other customer examples, in a very respectful way, but in a very direct way, especially at the senior levels, where that's what they need to hear sometimes. So, do you have a question? Because I want to sort of switch topics a little bit. Yeah, I want to just follow up on the one problem statement I heard. I wasn't really announced as a problem statement, but it was a theme throughout all the breakout sessions and the keynotes. And you guys are aware of it, so it's not a surprise to the Dell senior people. You guys recognize that as things are going well on the acquisition and the integration, Dell Technologies, there's still a focus on still working better with customers, taking away the friction of doing business with Dell Technologies. It's a hard problem statement. You guys are working on the problem. What's your view on that? Because we hear that from your customers and partners. We love working with Dell, which is going to make it easier. We still have more work to do. Actually, Karen Kintos and I are partnered up, our chief customer officer on Ease of Doing Business. And look, we are a complex company. We have a lot of different business units, technologies, brands. We're working to bring them together in more integrated solutions like we saw this week. But we still can be complex sometimes in front of our customers. And we're working on that. It's a balance, because on the one hand, customers want more aligned, coordinated, sometimes single hand to shake. We get that. But the balance is they also want access to the right subject matter experts at the right time. And we don't want to inhibit that either, either way. So whether it's with our customers directly or with our partners, we're on that journey. We will find the right balance here. We've got new commercial contract mechanisms in place now to unify our core Dell EMC as we're packaging more VMware content, more security content into the offer and be able to deliver it as a package solution in one quote, one order, one service. Doug's doing some great things in the back end of services, connecting our service request systems, our CRM systems. Actually, even with VMware and core Dell EMC technicians co-locating in support centers to solve the customer's problem in one call, not in three calls, we still have a ways to go, but we are making progress. So I wanted to switch gears a little bit and tell you and I, Howard, have known each other for decades and you've never wanted to talk about yourself. You always want to talk about the team, your customers, your company, but I wanted to talk about your career a little bit because John Furrier did an interview with John Chambers. And it was an amazing interview. He talked about when he was at, you know, the WAG and the 128, there is no entitlement and you've seen a lot of the waves. You started out your career, you were electrical engineer, back when, you know, that was like hardcore physics, assembly language, it was sort of the early days of computer science, awesome. And then, you know, it had a number of different, you know, roles. You, as I mentioned, there was digital, there was compact, there was HP. And then you- Don't forget Radio Shack. Radio Shack and Chandy. Yeah, yeah, right. Radio Chandy. That's right, the early PC days. And then you joined EMC in 2003, which marked the next era. We were coming out of the dot-com boom and you and Joe Tucci and a number of other executives built, you know, in the amazing next chapter of EMC, Powerhouse, and then now you're building the next new chapter with Dell. You've really seen a lot of major industry shifts. You seem to have been on the wave. I wonder if you could reflect on that, reflect on your career a little bit for our audience. I'm just amazed and blessed to be where I am. I couldn't be more pleased. Sometimes I wonder how I even got here. But when I do reflect back, it is my love of the technology. It's my love of what technology can do for businesses, for customers, for consumers. And frankly, my love of the customer interaction. This is, you know, from that first time in the Radio Shack retail store. And, you know, the parent coming in and learning about this new TRSAD. And I've, you know, heard about this and what does this really mean? And being able to help that person understand the use of the technology, how to make it happen for them. It has always given me great satisfaction. And so, you know, from those early days, and I've worked with a lot of great people that I've just, you know, listened and learned from over the time. But, you know, when I mentor, you know, people coming up in their career, I always say, look, you know, it's not work if you get up every morning. You love what you do.  You like the people you're working with.  And those things have always been true for me. I have been so lucky and so blessed in life to be able to have that be the case. And you're operational too. You understand how to make operations work, solve problems, as Dave pointed out. It's been great. From my first basic program I wrote was on a TRSAD in high school. So thank you for, you know, getting those out there. And then I've actually bought a Tandy, got an IBM with a 10 meg hard drive. And I bought my modem from PC's Unlimited. Some small company that was selling modems at the time. Michael, we remember those dates. Howard, great to have you on theCUBE as a distinguished CUBE alumni, great career. And always we got it all documented. We have all the history. There you go. Calling the shots. Howard Elias, calling the future, predicting it and executing it. Living the dream here on theCUBE. More CUBE coverage here at Dell Technology World after this short break.


My name is Karthik Ghazala. I work in the Cloud Engineering team at eBay. Our team is responsible for all of infrastructure service and platform as a service at eBay. So, my name is Xiao Gang. I come from Shanghai, China. So, I'm currently a Cloud Engineer at eBay and I'm recently working on the next generation containerized platform based on Kubernetes at eBay. Today we're going to walk you through our journey in building a continuous integration platform on top of Kubernetes. We'll cover just a nutshell, an introduction to our infrastructure and our applications, what they do at eBay.  Xiao Gang will go more into the details, the technology details. We'll cover what we've learned, what worked, what did not work, how we fixed things. And then, like, where we look into going further with this platform. I hope all of you should know eBay.  And I hope most of you had an experience either buying or selling on eBay. We're a global company. We are one of the largest marketplaces online. We have 168 million buyers around the world. Quarterly, we do roughly $22 billion in gross merchandise volume. There's the total amount of transactions that happen in the marketplace. About half of it comes through mobile devices and more than half is international. So, we have quite a bit of customers across the globe. 88% of our sales are actually fixed price and more than 80% are new items that are bought or sold on eBay. At any given point in time, you're looking at more than a billion items for sale on eBay. So, a business of this size requires a very large infrastructure as well. We started our journey in building a private cloud about six years ago. We have a private cloud that does everything with containers, virtual machines, bare metals. All aspects of the data center are fairly automated. We manage a fleet of about 80,000 bare metals, more than 200,000 virtual machines, and roughly five petabytes of managed storage today that our cloud platform manages. So, what you see on eBay.com is a composition of about 4,000 different applications that are serving more than 100 billion requests a day. Our internal cloud platform hosts more than 95% of the traffic that comes into eBay.com. The applications that are written on eBay are very diverse in nature. We have a very good choice of programming languages our development teams use with Java, you know, traditionally in Java, but a lot more on Node and Scala and more recently with Go. These development teams are continuously changing their code, releasing their changes to production, and the continuous integration is a very critical piece of it. So, the platform that we're going to talk more in detail about that today does roughly 10,000 bills a day, over 300,000 a month. So, a few years ago, the continuous integration journey at eBay has been that there's a self-service way to get virtual machines, and every team would set up their own Jenkins instance on that virtual machine. They would find their own way to get the right set of plugins, configurations, and all that, right? That only went on for some time, then we realized that things are getting out of control. And a few years ago, we started a journey where we built a Mises-based continuous integration platform. We have two separate Mises clusters for masters and slaves, and we have a pass layer that provisions a Jenkins instance on this Mises, and users would get that self-service. We deployed a shared file system so things could be persisted in the configurations to the file system. About a year ago, we made a strategic shift towards Kubernetes. That's when we started the journey of rewriting the system to run on Kubernetes. Thanks to Carlos for his plug-in with Mises plug-in. I know he's sitting right here. I attended your talk this morning, very good. We run today our continuous integration completely on Kubernetes with Jenkins. We run two separate pools of nodes for masters and the builder parts. We have separate images for both masters and the slaves. We use service, we use ingress, we use traffic as an implementation for ingress controller inside Kubernetes. We use persistent volume claims, the construct of Kubernetes to persist the configurations for masters. That itself is backed by Ceph. It's one of our managed storage at eBay. We have petabytes of it that forms the backend for the PVCs. It's been pretty highly scalable and resilient for us. Let's go more into the technical details of the architecture. In the next few minutes, I will show you our CRS service platform in-deep on how we build our CRS service platform based on Kubernetes. Let's take a look at the architecture first. But before that, before go deep into architecture, please be noticed that the big blue rectangle is Kubernetes cluster. The light blue boxes are Kubernetes pod. The red line in the diagram shows CRS service platform controlling while the blue line in the right. It represents the data plan. Let's start from the control plan. If a user wants a CI, he or she can easily post the third party resource, CI config specification, either through PAS platform at eBay or against the Kube API server directly, to tell Kubernetes cluster that, hey, I want a CI and here is my definition. There is a CI controller running in the cluster which watches the CI config object and converts the user requirement, user definition of CI to a real CI instance. Here's the works CI controller do. So, firstly, it will create a persistent volume which will be used as Jenkins configuration storage. And then CI controller will spin up in a Jenkins master pod, mount with this volume, and we'll leverage replication controller to provide high availability for the Jenkins instance. Besides that, CI controller also create a service for this Jenkins master as well as the ingress object which wrote a request to this service. So, the blue line, when there's a build happens, the build request actually first touch the ingress endpoint of CI as a service platform. Actually, there's no ingress controller provided by Kubernetes, but we find that traffic ingress controller is amazing which can meet our requirement very well. Traffic ingress controller will help to route the build request to specific service and eventually the Jenkins master pod. Jenkins master will leverage the Jenkins Kubernetes plugin. Thank you so much. And talk to Kube API server to spin up Jenkins Swift pod to do the actual build. This is the whole architecture of our system. Before going on, let's think about a question. So why we need a third party resource CI config with a controller loop to spin up Jenkins master? Some people who are familiar with Kubernetes would say that that is amazing because that is model driven. But is model driven the real reason we use it? I would say no. Model driven is only methodology but not solution. We should always think from user requirement perspective. So let's think about it. What user really want? In most of the cases, what user want is a CI on a build while not a heavy Jenkins. So a CI is nothing but a process from source code to manifest. It's not equal to Jenkins. Jenkins is only one of the build engines. So let's look at the CI config model in detail. How we model the process from source code to manifest. We use third party resource in Kubernetes. We register a new kind. We call it CI config. The most important part here is the specification. If a user are using Git as their source repository, he need to specify the Git URI in the source section. Strategy means what kind of agent you use. If you're using Jenkins, you need to specify the Jenkins master image with volume size. There can be more and more other build engines besides Jenkins. In builders section, currently we support two major builds, standard build and generic build. As Karthik just mentioned several minutes ago, there are four major tech stacks in eBay, that is Java, Node.js, Scala and Python. As a platform service, what we provide to our user is the most popular cases, that is Java and Node.js, which covers almost 8% of the cases at eBay. We call it standard build. User does not need to provide their own builder image. They just claim their stack, for example, moving. For others such as Python and Scala and some very specific build requirements, we dedicate the manageability to our user so that they can build their builder image and claim it as a service configuration. From CI controller side, after the user puts CI config into Kube API server, the controller will do the real provisioning of the CI instance, which is PVC, pod, service and the ingress, I just mentioned. We also support hibernation. Why? Because per our experience, in our journey, we find that over 60% of the CIs, they are not actively used. Some CIs, they create from the first day, but no use actually because of different reasons. So as a platform, we provide a platform, we want to make a high utilization of our computer nodes. What we do is hibernation. By specifying hibernate flag in the CI config specification, CI controller will tear down the master pod while leaving persistent volume because there is data in persistent volume. And also, service can be deleted, but it will leave ingress. What's the reason? I will talk more about hibernation in the following slides. This is what the build really happens. When there is a builder request initialized either by GitHub or human being, Jenkins master will use Kubernetes plugin to spin up Jenkins sleeve pod to do the build. Jenkins Kubernetes plugin is nothing but a plugin which manages the Jenkins sleeve pod lifecycle on it. The plugin will compose a Jenkins sleeve pod specification according to the pod template configuration and a post to API server. Then there's a Jenkins sleeve pod up and do the build.  But here I just want to list three most important ones we think here. The first one is Docker image. It's the builder image. We recommend our user to compose all the build dependencies such as libraries and packages into a same builder image. A builder image should be self-contained, which can be used in CI or shared by different development environments. Tender toleration, if you want your builder to tolerate it to a specified nodes, volume amount such as secret. For example, a user might want to push their build manifest to a protected repository, which needs credential. I'm sure that they don't want to share the credential with you, right? They just need to store it into Kubernetes secret and mount the secret into their builder pod. Host path month. So why host path month? I just mentioned that it is the best practice to compose all the build dependencies into Docker builder image. But if your project depends on too many dependencies, your builder image is going to be very huge, maybe 10 gigabytes. So it will take a long time for Kubernetes to bring up your sleeve pod because it needs to pull image. So some people would say that dependency can be downloaded during build time or run time such as Maven. But it still needs time. How could we solve this problem? We mount a specific host path from our Kubernetes node to the sleeve builder as the Maven cache, which means on this node, only the first builder needs to download the Maven dependencies. And it can be reused in the proceed build. In this way, we save a lot of time. Okay, ingress. Actually, without ingress, there's a lot of ways to expose your Jenkins master service to the user. But for example, we use load balancer web or node port. But we have met the following two major problems when we design CI as a service platform. The first one, every CI instance needs a durable access point for a user. If we use load balancer, that would be a huge waste of web. As you know that load balancer is really expensive. And there's only one pod, Jenkins master pod in each web. It's a huge waste. By leveraging ingress, we can use the L7 routing so that we only need one web for the ingress endpoint. The second one, an eBay, it is not allowed to use a wild card SSL certificate. It's not secure enough. And it's really hard to issue a specific SSL certificate for each CI in short term. Then by enabling ingress, actually we only need one certificate for the ingress endpoint. Here is an example. CIS.corp.eb.com is our ingress endpoint for CI as a service platform. CIS is the CI instance. That is L7 pod. So when user visits the CI, the requester will go to load balancer first and then reach traffic and ingress controller. Here, TRS just terminated. And ingress controller will do L7 routing. According to the mapping CIA with the specific service we created for the Jenkins master. And then just wrote the request to that Jenkins master in cluster using cluster IP. Hibernation. As I mentioned that around 60% of the CIS are not actively used. For example, not used in recent 30 days. So what we do is hibernation. The CI controller will delete the service and the pod to release the resource but leave PV and ingress there. It's very easy to understand why we leave PV because there is Jenkins master data configuration in the precision volume. But why we leave ingress? Hibernate a CI does not mean we delete that CI. Maybe user want to reuse it after 30 days. So we configure the ingress, the L7 routing from the existing service to the reactive service. That means if the user revisit their CI, the request will be handled by the reactive service. The reactive service do a very simple job. It just change the hibernate flag in the CI config specification. And then CI controller will wake up the CI by recreating the Jenkins master pod in seconds and monitor the existing volume and recreate service and configure the ingress routing from recreation service to that new service which point to the real Jenkins master pod. So in this way, in several seconds, user can get their CI back without any more click. Okay, this is all about the details of our system. CI as a service platform. And next, I will hand over to Karthik for the learnings and the roadmap in the future. Thank you. So a few things just to reiteration of what we covered in detail. I think the CI config as an abstraction is a very helpful thing for us. If users want to use something other than Jenkins, they can use the same abstraction from a platform perspective. We run two separate node pools for both masters and builders. On the builders is where we use the host path mount to leverage the Maven caches. So the builds happen very quickly. One of the things that we take very seriously at eBay is developer productivity. So we want to make sure that the builds are occurring as fast as they can. And whatever tuning that we need to do to make them faster, we invest into that. The pod templates is a very powerful concept. I think we saw much more detail today in the cloud B session about how to use pod templates. We've also built an internal monitoring system for this. We roughly have about 2,000 Jenkins masters at any given time on our platform. And we've noticed some issues. Sometimes traffic does not catch the creation of new CIs. So we continuously monitor all our CIs to make sure that they're available. If they are not, we look into why they are not. Last thing is we've been using the persistent volumes for CIs. And the volume attachment or detachment has been pretty... We went through some issues in terms of reliability. And we've introduced fixes into the Kubernetes layer as well as under the Kubernetes cloud layer to make that much more robust. Some of the things that we are actively looking into right now is... Today we use all of our CI platforms on one Kubernetes cluster in one availability zone in our private cloud. We're finding ways to see if we can span across multiple clusters. So based on where the resources are available, we can actually schedule the workloads across multiple clusters. Some of the challenges that we've noticed with PVCs is something that keep bothering us. So we are looking into... Maybe if object store is a good semantic that we can use for persistence. We're playing with Swift. We have a huge Swift in our private cloud today. A few petabytes of Swift. So we're looking at that. The other thing is the declarative pipelines. We don't use much of Jenkins pipelines features that we saw today, but we're looking more into it. Then one of the things that we are also looking to do is leverage public clouds. We've done a prototype this year to see if we can do our builds on public clouds seamlessly. That's an interesting area for us to look into next year. That's all we have, and we are actively hiding. If you are interested to work at the platform of our scale, please reach out to me. My email address is right there. Thank you.


Okay. Thank you. Thank you guys for joining us here. My name is Rodrigo. I'm going to present to you Zbuss a new Zephyr bus, right? I don't know. I have asked before, but I think many some of you are using that. But today we are going to, I'm going to describe that in more details. The presentations are really dense, in fact, but I guess we are going to have another moment on Thursday. If you need to go deep in details, I'm going to have a tutorial about Zbuss. So this talks about the general idea and things that we can do, right? At the beginning, when we start to work with some art tools or applications or something like that, we need to make threads talk each other. It's usual, right? And we have several topologies of communication between threads, right? And one-to-one is the first one that we started, right? And we have several kind of objects to help us, free-for-leaf, full-stack, message queues, and so forth, right? But when we start to talk from one thread to several threads for many threads, we don't have that. Just in this scenario, we already don't have this kind of thing. Mailbox may be helping you with that, but it's not so easy to do because it's not able to make one-to-many simultaneously. So you have to do that manually, doing that for each thread you need to send, and you need to do a lot of work by yourself, right? And when we think about many-to-many, it's even harder, right? Because we have so many threads, we have to connect each thread, and sometimes we have to have full communication from A to B, for example, and B to A. And if you are going to think to do that with a message queue, for example, you need to have a bunch of that, right? So it's hard to keep and hard to scale with this kind of thing, right? So the idea at that time was to develop a bus to help developers to make threads talk each other, right? Because we didn't have any tools for doing that, so we needed to create the bus. And the bus could solve the one-to-one, one-to-many, and one-to-many communications topology, okay? Is that good? But we have seen that on Linux, on Windows and Mac, for example, we have applications and the applications can talk each other. But here we are talking about embedded systems, right? We have different kind of challenges. And when I am telling embedded systems, because I am talking about really constrained devices, Zephyr can run on really constrained devices with, I don't know, 16 kilobytes of memory, for example, where we cannot run Linux, for example. And we have processing limitations as well. We cannot run that in a pulling, a really fast way to guarantee that everything runs, right? Because we have a bunch of battery-powered devices, right? So we need to think on this kind of scenario as well. So energy is part of that. We need to focus on that as well. So I started Z-Bus as part of my PhD. I work in university, I am a professor, but I am part of a novice center, I have a company. We work a lot with embedded systems. And we did that internally in the past. And we came out with a bus, right? Bus that could make threads to talk to each other like MQTT or like something like that. Where you have the publisher and you have the subscriber which can receive the notifications and things like that. But to make like MQTT, we need to have topics and topics usually relies on strings and it's not easy or good for embedded systems. So here we have a kind of pub-sub using channels, addresses and things like that. It's more efficient for our cases, right? So we have two kind of observers here. We have the subscribers. Usually we see that on MQTT and other communication protocols. And in Z-Bus we have subscribers as asynchronous entities that can receive notifications from the bus. When a channel change. When someone publish to a channel, the channel will notify the subscriber asynchronously. And we have also the synchronous observers because we have two kinds of observers. We have subscribers and listeners. And listeners are synchronous and they are mainly callbacks. When a channel change, the bus calls some callbacks. You can just make the listener to see, to observe a channel and that's it. We are going to talk more in details. And a good aspect of that is that subscribers are decoupled in terms of code, right? In time, space and synchronization. I've roughly talked about that. In time we can say that when a publishing action occurs, the thread doesn't need to execute at the same time, right? So the subscribers are synchronous so it doesn't need to have at the same time the coupling. They don't need to know each other. So the subscriber and the publisher don't need to know each other, right? So the coupling time and space. And synchronization. We can say that the subscriber can run a different load or different execution there other than the communication. So it doesn't need to wait the communication. It can run other things and then get back the communication check if there is something there. Okay? On the other hand, here we have the listeners that are coupled in time and synchronization. So the callbacks runs exactly, immediately possible when some thread publishes to a channel. So when you publish to a channel, the callbacks are executed. So they are coupled in time and synchronization. Why am I talking about coupling, decoupling, things like that? Because we are talking about software engineering practices, right? And those kind of decouplings here gives us a lot of benefits. We are talking about that in the future, in a software perspective, right? And we have available actions on Zbos. We have the possibility of read the channel, right? Any thread can read the channel. There is not necessarily only subscribers or listeners. So any thread of the system, even a sensor or system thread can read a channel. A thread can publish to a channel, right? The publishing action causes an execution of a listener or a put on a subscription, a subscribe notification queue, right? So when you publish to a channel, the publication executes. We are going to, in details on that, but you execute the listeners and you enqueue the notifications on the subscribers. It's almost that. The notify one here is almost the same as publish, but it doesn't require to change the data on the channel, right? So when you publish to a channel and you don't need to change the data, or, for example, you are sending an event, you are not sending information just telling on some event occurred, you can just notify instead of publish. It makes the same thing, but you don't need to change the message. So the message is the content of the channel, which you can use to transfer data between the producer and consumers, right? And this is a kind of illustration. It's good to know how Ziba works underneath because sometimes we can improve our code just by knowing that, right? We have some steps here. First, for example, thread one wants to publish to channel B, right? The first steps to lock the channel. We use Mutex for that, right? And for some reasons, we use Mutex instead of semaphores. And after that, the thread one replaces the message. On Ziba, we have shared memory, right? We don't send the message from the producer to the consumer, right? We just set that on a shared memory and the consumer goes there and consumes the data. So both are talking about the same part of the memory. We are not replicating that, right? This is a kind of approach and this is the fastest one we could reach, right? So first, lock the channel. Second, you replace the message. Third, you execute the listeners and then you enqueue the notification to the thread two. In that example, I put here a queue, right? The notification queue is a message queue in fact. So when you are running inside a thread and you need to subscribe, you just receive a notification, right? The listeners are executed but the subscriber just receives the notification and with the notification, it can go there and take the information, okay? So here in Ziba, we don't have even dispatcher, in fact. We don't have a central entity doing this kind of thing. So it's really different but all the stuff that we discussed here are executed by the publisher, okay? So this is why we call virtual distributed event dispatcher. We have the event dispatcher logic running distributed by the publishers and we don't have, in fact, event dispatcher, right? This is why we call that virtual. So the VDD, I call that VDD, right? Really weird thing. But the VDD brings us a lot of good, a lot of advantages. But first, talking about the distribution of an event or a message, in fact, for example, we can say this scenario here and in this scenario, thread one is publishing to channel A, right? And all the other threads and listeners here are observing that channel. So when thread one publishes to channel A, the message needs to reach all of that, all of them, right? But for the subscribers, just a notification that the channel has changed, not the message, in fact, but the listeners receives the message here, okay? And I don't know if you already have seen the documentation. I've put that on the last version of Zephyr. And first, we can see that that publication happens in the thread one context, right? Here in A, we have some action that thread one is running. And after that, in B, we have a lock to the channel A. After that, we replace the message and execute the listeners. Listen one and listen two, right? After that, we notify thread two, thread three and thread four. Someone could ask why not thread two preempts the execution and reads the message, right? Thread two has more priority. If you take a look at the arrow here, the highest priority thread is four. T1 is just the lowest one. But when you notifies the thread, as we use Mutex, Mutex is two lock channels, we have on Zephyr, we have the priority inheritance feature. So when you do this kind of thing, thread one goes to the same priority, then thread one receives the same priority as thread two, and then thread three and thread four. So this is why we are trying to finish the published process as soon as possible. But without interfering in other higher context priority things. We are going to talk about that. And next, when you finish the publishing action, the subscribers can act. They receive the notification so they can do something. In this scenario here, I am telling you that thread four goes there and reads the channel. So it locks the channel, cops the message and locks the channel. Do something, get out of the DMCU and thread three and thread two and goes on. In this way, after this image, the message started from T1, right? And now it's on L1, L2, L3, T4, T3 and T2. So we could share our message to all the interested, the observers. Is that okay? So a big advantage from VDD is that we can run different kind of context without interfering each other. Here, for example, if we think thread three and four having lower priority than thread one and two, if they are communicating in channel B by via channel B, right? They can be preempted by thread one to make a higher priority context communication. So it can happen because the event dispatcher is distributed. It's not central. If we have just one event dispatcher, it could happen some kind of priority version like that because you would have low priority thread communication, preventing our high priority thread communication to happen. So event dispatcher is good for that as well. And it's really interesting. So another available action for this action is more for advanced use. Don't use that if you are not sure to do what you are doing. The claim finish, it's a pair, right? The claim, you are locking the channel. And after that, you can access the metadata of the channel. So we have a lot of metadata there. We have the subscribers. We have the message in fact. We have a user data pointer so you can add your metadata to the channel. So in this kind of thing, you can do a lot of stuff with the channel. You can change and finish, claim and finish, okay? And I guess this is the last action. So this is a really, really usual application mainly for IoT, for example, where we have, for example, a trash can level monitoring system or water level or temperature of a room. IoT application. And this application, we can stretch like that. You can do differently, but in a different way. That's a kind of solution. And here we have a timer. Time to time it triggers, it's published to the Start Trigger channel. As the sensor thread is an observer, it will receive the notification and start to fetch the sensors, for example. It fetches the sensor data and then publishes to sensor data channel, obviously. The name is great. And after that, SCORE is an observer of sensor data. It will receive the notification, gets the information and make some math over that. I don't know, collect some information of that, make a box plot and then send that to the payload, published to the payload. As Laura tried, is an observer of the payload. It gets the data, sends to the internet when it's finished, when the transaction is done. It makes, it publishes to the transmission. Observing both channels, Start Trigger and Transmission Done, we have the blink callback, right? So when the time triggers, everything in a kind of chain of actions is working, right? But is it good? Why is it? I have four channels, three threads. So a good thing here is that we can make changes without changing the existing code. So, for example, I would like to add a button on the system to initiate the sequence, instead of the timer, only the timer. I just need to add a button and everything keeps the same code. I would like to store all the payloads to the system in the future. I don't know, the government needs that for some reason. I just need to add another subscriber to the payload and it doesn't need to change anything, just add, right? I would like to get the storage data via Bluetooth. For example, I could do that, just doing this. And, for example, make some debug or something like that. I would like to see if the transmission done is happening, is it possible, without changing anything, right? I would like to insert a mock to test better my system to check if the core is working properly because when you receive, I don't know, a set of data, the core is not responding properly. I would like to see what's happening. I just need to add, okay? So it gives us a lot of flexibility and it gives us really, a really interest power to make our code and change things there, okay? Is that okay? Okay. And, for instance, some, I don't know, I don't have Laura one coverage. I would like to use NBIUT, just remove the code and add another one, okay? If you do that using a kind of interface, you didn't, okay, it's good, right? You don't need to change the Laura. You can reuse that in another code, right? In other products you have. You just need to add a new module that you can reuse in other modules because you can have that module working with a payload and a transmission done channel. You can reuse that. So, some, I don't know, in my product, I would like to remove the timer. Just remove the timer. The button will do the work. Okay? So, some usage considerations. It's not the end of the presentation. I have a lot of slides. I think it's good to finish a part to talk about the other. And it promotes event-review architecture. It's really good for embedded system software because of the battery-powered devices. We can go to a low-level, a really deep sleep mode, and then we can react to some things using interrupts and things like that. In this way, we have, using Zbuzz, we have a unified way to make threads talk. So, for mainly all the communications, you can use Zbuzz for that. There are some I would not... I will talk about that. We have code decoupling. We talk about that. And this is really amazing because we can reuse the code. It promotes the reuse here. If we can reuse the code, we can add some different kind of things without... Because when you have a bare metal system, for example, if you don't do that in a really good way, you are doing a kind of coupled code because all the parts talking to each other, it's really hard to do that. When you use Artos, you can do that. It's mostly separated. But when you have a message queue from a node to a thread, to another thread, and they need to know each other, you are doing a kind of coupling. So, if you want to change this part, you need to change the other part as well. So it's not good. When you are trying to maintain a code or something in the future, add some functionality, it's not easy to do when you have a coupled code. And it promotes reuse. So when you have that well-tested and you would like to reuse that on different kind of products you can do, it's really straightforward to do that. And even when you are using Zafru, that has a really big knot. It's awesome. Layer of abstraction over drivers and devices, in fact. So if you are using that over Zafru, it would be really better. It increases the testability of the system by increasing controllability and observability. What are you trying to tell us? In this case, when you can add a mock, for example, in this situation, you have sensor thread sending data to sensor data. But if you would like to check core, you could change the mock and send the data there. You can send data replacing threads, so you can send and see what the module is outputting. And it's really interesting when you are trying to test the system, because you can replace parts here. I don't have the sensor yet, no problem. I don't know, you can add a mock here, faking the sensor, and the system can go and you can continue the implementation until it gets your home or something like that. So you can observe and control that better when you are trying to use the... And it's really extensible. If you use client-finished with user data, you can add a lot of things on top of over ZBus. We can think that almost like a socket and a TCP protocol, for example. A TCP protocol uses socket to make a really interesting thing. So we can do that, use ZBus. So ZBus is the foundation. It's really simple, short, sometimes maybe when you are trying to use that if you do. And you are thinking it's a little hard to do some parts of that. I try to do the best to make it easier to use. But we have a lot of constraints, and those constraints makes us to do things in a different kind of way, okay? Some cons is we have too many possibilities. We have listeners, subscribers. We can subscribe to a topic statically, dynamically. We have a lot of details I didn't show here, because we are going to show that in the next presentation on Thursday. So there is a lot of things, but I submitted a lot of samples, the documentation. I don't know if you have read that. It's really complete and a lot of details, and I tried to show the community on this kind of thing. It's not for streaming, right? If you are doing streaming using ZBus, maybe you are increasing the lateness of the communication, right? Because I don't know if you have a sensor that reads three to milliseconds and publish to a channel. Maybe you are going to increase the lateness of the bus. But if you do that using the right priority and everything else, maybe it will work for you, okay? But in most cases, use pipes, right? Pipes, message queues, or something like that for intensive byte stream. And there is no guarantees for subscribers to receive the message. Sorry, they will receive the message, but sometimes we can lost some message. How? How? How? How? It's almost like that. If you have a producer producing really fast and the consumer is consuming slowly, the notification gets to the consumer. But when the consumers go there, the message is already changed. So maybe you have duplications. Loss, I don't know. I didn't see any losses. In fact, we have a benchmark. We have a lot of things. We don't see losses, but duplications is possible if you do that in the wrong way, okay? Ziba's feature backlogs. Guys, I'm going to talk almost all the time with a few Q&A time because we have a lot of days and we are going to have another time to discuss more about Ziba's, okay? But we have a kind of feature backlog and I would like to call you to talk about it in the Ziba's Discord channel. But I am going to talk about that because we need to know where to go, right? We have Ziba's, but what the community needs. So Ziba's async APIs are on our radar because you cannot run publishing or any Ziba's APIs inside of ISR, right? So I am planning to implement a kind of async set of APIs to make that possible, right? So with that, we would avoid work kills for ISR, right? And we could have a dedicated Ziba's thread to do that. It's a kind of executor that receives the attempt to do a publishing or a read, for example, and quee that and then executes. It's almost like that and we can control that with, I don't know, the priority we wish and the stack size we wish, right? So this is a really interesting thing that we need to think about. Omsubscriber to help us to... Omsubscriber is just a subscriber that listened to. It's not good to hear. A subscriber that observers all the channels, right? It can help us to extend Ziba's features. Sometimes we need to do a lot of things and it's hard to do that in the way because if we need a subscriber that has all the events, all the notifications on it, we need to subscribe on all the channels. It's a sugar feature, right? I would like to do some Ziba's integrations with other subsystems, right? Input subsystem is one of them. I guess it's a really good match with Ziba's when you press a key, you could receive an event on Ziba's channel. This is a really good thing to do and add some samples for Bluetooth, sensors, FSM and other parts of the system that can be good with Ziba's, right? And we are going to talk about a really tricky one part is Ziba's for mood core. Oh, sorry. In this case here, I would like to add a clone of Ziba's in different cores, right? We have a Ziba's here and a clone in a different core and both are synchronized by an IPC service, for example. In this kind of thing, you can see that application I told you working in different cores. This would be interesting. I don't know if you have already worked with mood core, but it's not so easy. Nowadays, we have open AMP, right? Helping us, we have a lot of initiatives, but it's not so straightforward to do that and we need to do a lot of work, okay? And mood target, after we solved mood core, we can go to mood target. You can have different SOCs talking to each other with Ziba's clones and the transmission or interface could be Bluetooth or, I don't know, serial or internet or whatever, right? It would be really good. And the last one is Ziba's desktop version. Why that? This is interesting because you could develop some model to work with Ziba's, right? So maybe you have an AI model that generates something that you want to test on your embedded system device. You could do that in Python and make that to work with your core thread that's already implemented on the device, right? So it would be really good or use Rust or Matlab or something that you can connect to the bus on the computer and the computers and the embedded Ziba's work together. It would be really interesting to see that working, okay? If communities like that, we can start to talk about that. So I'd like to discuss more about that so please if you have any question about the roadmap or, I don't know, need, I wouldn't like that on Ziba's or something like that, go to Zephyr Ziba's Discord channel, right? And talk to us. And if you have any doubt about Ziba's as well, go to the Ziba's channel. I'm answering that a lot, right? Please read the documentation first, right? And we have a lot of things to talk, but I'm going to put that tips and tricks to the next talk, okay? And I'm going to open to questions and answers. We have three minutes and 20 seconds. Any questions? Okay. Okay, who's responsible for unlocking the channel and to allocate the data, right? Everything is done when you, the allocation is done when you describe a channel, when you define a channel, everything is done. And the lock and unlock process is during the publish, so you just need to call Ziba's, Chanpub and everything is done inside that. You don't need to figure out where about that, okay? The data is not free. In fact, the data is persistent in this kind of thing. During the communication we have transient and persistent communication, right? Transient is when I talk to you, after that the message goes, I don't know. And the persistent is when I publish the message, the message is still there. Any part of the system can go there and read the message, okay? So the message, the shared memory is static, in fact. I have a fairly long question from the online attendee that was asked a while ago. Okay, okay, go. I'll relay it now. Good to see Ziba as a firm believer in the coupling threads and avoiding callbacks were possible. I've implemented something similar on one of our freeRTOS-based platforms using queues and callbacks. However, I found that to allow interrupt handlers to use the bus I needed a dispatcher queue and a thread and a set of APIs that can be called from ISR contacts to post messages. Does Ziba support post from ISR whereby the listener callbacks run in thread context? I'm going to read that because it was so long I got lost. So you could ask it again just a moment. Oh, I'll talk to Sam on the Discord channel. Sam, please go there and we can talk later. And is there anybody, another question here? Go ahead. It's a red address. The question was the scenario I said the producer is producing more often than the consumer is consuming, right? What to do? Yeah, you can solve that using listeners. In fact, you can use a listener in conjunction with a message queue, for example. Yeah, this is exactly the solution because I was thinking I'm going to solve that in a different kind of way. It's hard to solve all the community needs, right? This kind of way you can solve this thing. You don't need that for all the channels. Some channels need that. So is a listener with a message queue together? Done. Okay. Another question. Yes. Yes. The question is then in difference between Nordic event manager and Ziba's implementation. Right? Yes. They use a message passing for the message transmission. They unlock memory dynamically. So the memory is gone. Oh, we are out of time. We can discuss more. Guys, if you want to talk, we can ask. I'll be here until 30. Okay? I mean, I can talk more. Thank you.