I'm gonna talk about the new features of Ruby 2.0, the next major version of Ruby. So, this talk will be a pure Ruby talk. I mean, not a Rails talk. Sorry for the bit misleading title. All right. My name is Akira Matsuda. Matsuda on GitHub, probably known as a author of Caminari, and A, under Matsuda on Twitter, became a member of the CRB core team since when we got in New Orleans during the RubyConf last year. And I'm the founder of, I believe, the most active Japanese Ruby user group in Japan named Asakusa.rb. So, let's begin. As I'll tell you, I'm gonna talk about Ruby 2.0. Ruby 2.0 is planned to be released on the next February. Well, it's just three or four months since today. And Mats once stated that Ruby 2.0 will be 100% compatible with current stable version of Ruby. Well, who can believe it? At least, to be honest, I don't. But anyway, whether or not you believe or not, the next Ruby is said to be 100 compatible with the current stable version of Ruby, which means any of the existing application should still work, just work with Ruby 2.0 without making any change. And not only that, Ruby 2.0 has absolutely awesome new features, a lot of new features on which I'm gonna focus on today. So that means in total, it's a 200% Ruby. You know, that's why we call it Ruby 2.0.0. So, the new features. We just had the feature freeze event last week. So, what I'm talking today will basically be included in the 2.0 stable. So, I'm gonna talk about these four big features, particularly, refinements, module prepends, innumerable lazy, and keyword arguments.  Sorry. Ask the internals, don't ask me. Ask Koichi. Where's Koichi? So the first one, refinements. The feature called refinements was created by Shugo Maeda. I guess many of you still remember that he talked about his plan of this feature at RubyConf. It was 2010, I think. The author of Shugo is Matt's boss at the company named NACL. That means he is one of the highest majesty in the Ruby community. And he's also a chairman of Ruby Association, Ruby ORWJP, which runs Ruby Grand Program and host a conference named the Ruby World Conference, which will be held in the Ruby city, Matsue, in next week in Japan. And he recently joined user group, ahoxa.rb. So refinements. Refinements are, in short, a clever way of monkey-patching. As a background, there is a problem that monkey-patching by traditional class opening is considered to be sometimes dangerous or even harmful because it affects all instances in the Ruby process. For example, while there's an instance of person named Matt and then adding a new attribute onto the person class for another person named Shugo, the new attribute will also be added to the former Matt object. Do you know what I mean? So refinements are invented to improve this situation and provide a better way of monkey-patching. The feature called refinements are consistent with these two new methods, module-refine and kernel-reusing. So let's see how to use them. Module-refine. This is probably the simplest way of using module-refine. You see, here in a module named full, adding a new method to string class and calling it underneath. So what's the difference between good old monkey-patching and this technology? The difference is that you cannot call the method outside of this full module, right? In other words, the effect of this def-say thing here is confined to only the scope of this full module. Then the next method, using, having the same refinement module full, now you can set the ability of the module onto any other module or class using, using Q-Rid. In this example, here's another class named bar that declares using full, like this. And then the same method added by full can be called inside the bar class as well. The using method can also be used in a module like this. This time the bar is not a class but a module. And you can invoke the method, say, by a module eval. Now the module can, of course, be an anonymous module. So this way you can locally use the method, the same method without affecting the outside world class, I'm sorry, world string. So if you're familiar with JavaScript or other kind of functional programming language, you might think that you can use the lambda or proc for limiting the scope, the lexical scope. But unfortunately, that's not true. In this example, once you use the full module in the lambda, it affects all the string outside of the lambda scope. Actually, the world string now has the same method because you always need a block in order to limit the scope of using. If you really need the proc using refinements, you can do it this way. So that's the brief description of the refinements feature. Can you also, did you get it? So I guess you're now probably wondering how it can be used in real world applications. So I just prepared several sample applications, sample libraries in my GitHub repository. The first one is called RSpec refinements. The story behind this library is this syntax. I do prefer this should syntax over the expect and block syntax. In my opinion, this should think syntax is the taste of RSpec, I believe. But the reason the should syntax is going to be deprecated nowadays is that the should method is directly defined on the core basic class, basic object class, I'm sorry. Hence, just requiring RSpec actually changes the test target's application, which basically never happened, right? So, but I just want to use the should method only in the specs, but I don't want to change the whole application behavior. So let's see if I can solve this problem using refinements. The RSpec refinements is the name of the project. The code is available on GitHub and you can also jam install. The code is like this. Can you see it? What the jam does is simply undefined the should and should not at first and redefines these methods using refinements. Then injects the refinement module into RSpec example group in the before hook. That's all. It's super simple. And this is how it works. You see, the normal should method just works as usual, but the should method is not available outside of the example group. So just bundling this jam onto your project will make your RSpec a bit cleaner, I think. Next. Okay, the next project is the one called Active Record Refinements. The Active Record Refinements is doing something similar to your name in the squeal library. It lets you rewrite this ugly Active Record Query as this. What it does is it extends Active Record Refinements method to take a block and inside the block you can use some operates there on symbol instance, such as not or greater than or like, et cetera, et cetera. And in this jam, the column names are symbol and like squeal. And the code is unbelievably simple thanks to refinements. So here's the code again. You can also jam install. So let's take a look at the code. Firstly, there's a module that refines the symbol class to be able to respond to these operator methods. Oh, by the way, that percent I literal here is also Ruby 2.0 in a new feature that composes an array of symbols. What, an end? That's not an official feature. But you see what it means. And then creating another module defining the where method to which if not block given, then just call super at the very bottom. Else evils the given block and using a refinement module in the previous slide. Using this. Then convert the result of this array object into the arrow node. That's it. So then finally, prepending this module into active record query methods module in the active record query. As for the prepend method here, I'm gonna just describe about it later. So this prepend exact is actually somewhat related to the super call at the bottom here. Yes, and that's it. That's all. As a result, the small libraries enables this. You see that these symbols respond to the not equal or greater than equal operators and then generate the sequel strings. That happens only in the where block as you see the last example. You see it's a really elegant way of implementing your own internal DSL. All right, the next refinement example, active support refinements as a background story. I think there are two types of, two different types of libraries in active support. One is core X and the rest. What I mean by the rest are, for example, active support, loaded hash, active support JSON, active support, time with the zone, things like that. These are basically just providing their own class libraries. So if you don't like them, you just can ignore them. But on the other hand, the core X libraries are actually harmful or evil just by being there. Because when they are doing, what they're doing is shamelessly overwriting the Ruby core libraries or standard libraries like this. So only just by requiring the core X, this happens. And when once loads it, you cannot go back to the pure core library. So, by the way, along with Ruby, sorry Rails 3.0 release, Jeremy Kempu did a fantastic refactoring on active support so that we can selectively require the individual core X modules, for example. In this code, the first one, two, three, four, it has active support try method. But on the other hand, it doesn't respond to today's method because requiring the active support core X object try method by name. This way, you can choose only what you really need and reduce the global pollution by active support. However, this approach is still not perfect because, as I said, once you loaded the monkey patch, there's no way of loading it. So in this case, you cannot unload the try method. Particularly, if you're writing server-side Ruby applications, this would be very dangerous. For example, imagine you have a Rails controller like this. It looks like the required numeric time at the first line enables the three days ago in the middle. So before and after someone touches this controller, the behavior of numeric class changes. Imagine how it's dangerous. Actually, Rails framework requires active support all by default. So this code wouldn't be so dangerous indeed in your normal Rails application. But this case is just an example. So how can we more effectively and safely load active support monkey patches? It should be wonderful if you can arbitrarily load particular active support modules only inside certain limited lexical scope. Yes, time for appointments. So this gem does the magic, active support environments. See GitHub for the code and gem is also available. This example code by using active support refinements at the first line. Object try is enabled only on the first module.  You know what I mean? I said you can stop the global pollution. That means you can save the environment. You can save this planet. Awesome. So by using this feature, the format dangerous controller can be written like this. Now three days ago here just works, but it does not work inside of this controller. So that's it. Please know that this active support requirement library is really experimental and not all the modules are working at this moment. Sorry, why is it dangerous? Okay, because by default the numeric objects did not respond to, in this case, days. But once someone sends a request to this controller and the Rails process loads this controller, then the behavior of the numeric class changes before and after that request. That will cause some unexpected error. So, oh, by the way, I forgot to tell you one more important thing, refinements are experimental. And it could be reverted suddenly. I'm serious. Hope not. All right. So now it's finished. Then let's move on to the next feature. And I think I spent half of my presentation on time. Module prepent. The story behind this is in early Davis Rails, we had alias method chain, which was initially created by James Buck. Considered as a class named A having a method full. And you wanna add some new features onto the existing full method for this purpose. You can use alias method chains like this. The difference between the alias method chain and normal method overriding is that, none at all. Is it? You don't need to copy and paste the whole method of the original full method. Makes sense? So, as a real world example, here's a very simple code that extends active record three is page method, I'm sorry, relation class. Relation all method to take a page option to return the paginated query results. You see, the logic here is very simple piece of code. But to tell you the truth, this is actually like 90% of common origin does. So, alias method chain is certainly useful, but on the other hand, it has some kind of known problems. Now, consider there's a class having two alias method chains in one class, I'm sorry, in one single full method. Then, let's call one of the without methods named full without bar. The full is extended by bar and baz and I'm calling a full without bar method. Can everyone tell what's gonna happen? The answer is that full without bar method skips not only bar, but also it skips bar and baz. Who can expect this? The method named full without bar lies. It should be like full without bar and baz, right? So, the actual example of this problem is like this. On a bit, a little bit of active record. Actually, it uses the older version of active record, heavily used alias method chain. So, calling a method named save without dirty. Actually, it skips not only dirty, but dirty and validation. So, calling save without dirty immediately saves an invalid record into the dv. This is so dangerous and consider if you're installed more than two monkey patching plugins that alias method chaining onto one same method, the same thing should happen. It's possible and these two monkey patching plugins should invoking the without method internally. So, nobody can tell what's gonna happen. So, this is the problem. So, since rail three, the rail scored code gradually abandoning alias method chain and switching to more like modular architecture. For example, this commit by Yehuda totally eliminated the use of alias method change for active record. We've done in two years ago. For example, like this. It's just replacing the use of alias method chain into method override and super call. So, the format full bar base example can be written like this in this way. Using separate modules for bar and base and call super in each modules, then include each of these modules into the target a quest. There's a rule though or a restriction. The original full method has to call super. In other words, you can only extend methods that originally called super. But in many cases, what we'd like to do is to extend a method that does not call super inside. Right? So, how can we monkey patch this method without using alias method chain? I said, as I was playing, it has some risks. So, for this purpose, now we have module prepend in Ruby 2.0. This feature was proposed by Yehuda Cuts and implemented by Nobu. Nobu. This is Nobu. He's there. And we call him the patch monster because he's the monster. This is the whole Git log on Ruby, Ruby repository that shows Nobu is the definitely number one Ruby committer far above maths, right? This is why we call him the patch monster. In short, patchmong. So, in my opinion, in my opinion, Ruby is the language that maths designs and Koichi implements and Nobu fixes. And note that all of these three guys are now hired by Heroku as full-time Ruby committer. So, I really would like to say thank you to Heroku for sponsoring Ruby development in such efficient way. Heroku definitely pushes the Ruby development forward. It's so impressive that he's always drinking something, like beer in this picture, or sake or shochu or something. Even he's writing his Ruby patch. That is Nobu. Oh, and of course, Nobu is also a member of Asakusa RB. So, going back to the code. The alias method chain in this code can be rewritten like this using module prepend. You need another module defining the same full method and just prepend the method onto the class A, right? Of course, you can prepend multiple modules, in this case, bar and des, into the target class. As Matt explained in his keynote, what prepends us is like, it's something similar to include, but the order of method invoking is just reversed. So, this is module prepend version of the format simple pagination. I think the logic is not totally the same. For some reason, but anyway, it's kind of working the same. Just define, just create a module defining all method, then prepend it onto the active record finding methods module. It's so simple. And as I already showed you, there's another example of using module prepend in the format active record refinements gem. So, remember, there's a module defining where method and calling super inside and prepending that module onto active record query methods module. You see, it's far more readable, easier to read than at least method chain because there's no something with something method or things like that. Okay, it's done. So, the next feature, innumerable lazy. This feature was proposed by Yutaka Hara. He lives in a Ruby city Matsue, where Matt lives. And he's also working for NACL, the company where Matt and Shugo is working. As for the background of this feature and details of this feature, please just see the ticket here on red mine.  And what it can do with this innumerator lazy object is, for example, like this. Every enumeration method such as map or select, zip, grep, flat map. On this object will be deferred until you call 2A or force. Force is just an A list of 2A, I think. So, this way you can create an infinite collection like this. If you're not using lazy, this will never finish. But using lazy, you can defer the invocation of select even and take only 20 numbers. Or like this, you see it? It's basically the same. It's a script that picks up Friday the 15th. So, here's another really elegant example of using innumerable lazy by Y-Harris boss, Shugomaita. And actually, besides this sort of script, I'd be thinking of a usage of innumerable lazy in Rails application because I titled Ruby 2.0 in Rails, but unfortunately, I couldn't find any good example on Rails so far. So, I'm sorry, there's no gem for this feature. And maybe I can use it as a backend of active record for the interface, I think. Or maybe, for example, I can use on action pack live controller, I'm not sure. Or sprockets related something, I'm not sure. So, anyway, I could not come up with any good example. I'm sorry. So, please tell me if you find any. Anyway, in this example, Shugomaita is implementing a Ruby version of Unix root count command. Using two innumerable lazies. One is that it writes over it file names and one that lazily differs the files each lines, then counts the boorish. He says it's faster and consumes less memory. Consumes less memory. So, the next feature is keyword arguments. The keyword argument implementation was done by Yusuke Enzo. He's really an amazing super geeky hacker. He's a coin artist. And he's the release manager of the next release Ruby 2.0. So, actually, he controls the management, the release of Ruby 2.0. So, the background. This is a well-known and widely used idiom for imitating keyword argument-ish thing. Just use a hash object like this in the method argument. And in combination with Ruby 1.9 style hash syntax, it perfectly looks as if there's a language, native language support on keyword arguments. It really looks like Objective C or C sharp or something. But we need some tweak in order to use this method in our real applications like this. One is tweaking the default values. For example, if the full method takes the default values, A defaults to one, B defaults to two, we do something like this, right? We need to merge a default values hash into the argument. Or active support has a special command, I mean special method named reverse merge, which some kind of, kind of, not at all, looks better. I mean, kind of readable, but it's doing basically the same thing. So, the next problem is multiple hashes. There are tons of methods inside Rails that takes two or more hash arguments. So, there's actually a method named button two, takes two hash arguments. One is option and the other is HTML options. And if you would like to, if you wanna pass in any, what's that option into the last letter, HTML options, you need to write the hash literal onto the first action new parameter. Otherwise, the whole arguments will put into the first hash. So, this kind of looks ugly. Handling's splat operated. When the method having splat operator that takes variable arguments, and yes, this often happens, like, and takes the very last arguments of the splat option as a hash. So, this does, this extract option also defines an exit support like this. It just, if the given arguments last is a hash, then treat it as a hash. And last week, assert valid keys in order not to accept a valid argument keys, there's a method called assert valid keys in exit support. This is the implementation of assert valid keys. So, simple. And this is how it works, right? So, we need these kind of a lot of tweaks or workarounds in order to treat the hash arguments. So, there will be two point keyword arguments. I'll have one more minute, sorry. So, it treats default values, it does. And it can also treat multiple hash arguments splat operator like this. And it includes assert valid keys by default. Right? So, we need none of them. We need none of these workarounds. Yeah. The Ruby 2.0 keyword argument just does it. So, the conclusion. Everyone can upgrade a Ruby version immediately. Or, I mean, if you're brave enough, you could do so immediately. I mean, the SVN front version is also aimed to be totally compatible with Ruby 1.0.3. So, if any of the existing application except for C extensions does not work on Ruby trunk, that is a Ruby's bug. So, if that happens to you, you're so lucky that you hit a chance to contribute to Ruby 2.0. Then please file a ticket onto RedMind if you're concerned any such a problem. Or else, if you're not, if you're still not using 1.0.3, now's the time to move. Because Ruby 1.8 support will be dead very soon. You should abandon your Ruby 1.8 application as soon as possible. And standby for the coming Ruby 2.0. So, we encourage you to use Ruby 2.0 and use these new features because it's useful and fun. You know, if everyone uses these new features, then it will probably speed up the transition to Ruby 2.0. So, let's use 2.0 and let's deprecate 1.9.3 as soon as possible. That's all, thank you. Thank you.


Good morning. Welcome to CMC Markets on Friday the 29th of October and this quick look at the week ahead beginning the 1st of November and we've seen more record highs again this week for major US markets, US companies once again delivered numbers pretty much ahead of market expectations. UK companies have also by and large managed to deliver some fairly decent numbers. Notably, Wreckett Bank Kaiser who followed on from Unilever and Procter and Gamble the week before by posting improvements in sales and what have you showing that despite rising inflationary pressures they were able to pass on price increases to consumers. We've also seen fairly decent numbers from the UK banks this week from Lloyds from Barclays from HSBC. Now West numbers slightly underwhelming. They've slipped back this morning down around about 4% despite the fact that they managed to boost profits from a year ago. Having said that, I think the decline in the share price is more down to the fact that profits were lower in Q3 and they were in Q2 and their interest margins were lower rather than higher which was the case in the case of Lloyds Bank. Anyway, one notable thing that we have seen over the course of the past week or so is the FTSE 100 has broken towards the upside broken above that 7190 area that I have been and I've identified over the course of the past few weeks is a fairly key level. If we look at the lows from the 21st of October and the 18th of October around about 7180 that I think remains the key support in light of the gains that we've seen thus far as we're heading into the end of the week or also heading into the end of the month. So we could be seeing a little bit of profit taking on the back of that and I think that potentially could be weighing on the FTSE 100 and equity markets more broadly. We're also seeing a little bit of weakness in the S&P 500 and NASDAQ over the disappointing reaction to the numbers from Amazon and Apple overnight and one of the key takeaways that we saw from those numbers was higher costs, particularly in the case of Amazon and increased supply chain disruption in the case of Apple. iPhone numbers for Apple came in below expectations around about $38 billion. We're expecting a number in the region of $41 billion, although sales in services and iPads were better than expected and Mac sales also held up fairly well. And I think this goes to the point that while expectations around Apple's numbers are fairly high, let's not forget Apple hasn't given any guidance for the past six quarters. So I think market expectations were a little bit on the high side, but that's not to say that Apple's still listening to a very, very good company. Unfortunately, they're having to contend with the same logistical problems that everyone else is. And as a consequence of that, they're not being able to ship as many iPhones or product as demand would dictate. And I think that is the key factor here. And they've identified it as a key factor over the course of the next six to nine months. Tim Cook himself said that the various delays in supply chains cost the company $6 billion. While Amazon has said that higher costs are likely to push its cost base up in Q4 over the holiday season up by another $4 billion in terms of extra staffing costs and the like. If you look at it over the course of the year, Amazon expenses have gone up from $12 billion to almost $20 billion over the course of the past two quarters. So that gives you an indication of the challenges being faced not only by Amazon, but I think the markets more broadly, higher costs, higher inflation and supply chain disruptions. So seeing significant resistance up around $4,600 on the S&P 500, but let's not forget we're still near record highs. And while we're seeing a little bit of weakness today as we head into the end of the week and the end of the month, there's still very little sign that stock markets are losing their attractiveness to investors, despite the fact that inflation expectations are rising and central banks are looking potentially at a modestly nudging interest rates higher. Now, earlier this week, the Bank of Canada unexpectedly called a halt to its bond buying program, sending the Canadian dollar sharply higher. And I think that's the narrative that I'm going to be looking out for over the course of the next week or so, because we've got three central bank meetings having got past the European Central Bank, which was pretty underwhelming as normal. And where Christine Lagarde indicated that it wasn't for her to say whether or not market expectations of a European ECB rate hike next year will right or wrong. Certainly, we've seen a pick up in the euro from the lows earlier this month, around about 13th of October, but we are starting to run into resistance from these trend line highs in May. So keeping on the 50 day moving average and this trend line resistance here as to ascertain whether or not we've seen the highs in euro dollar or whether or not the Federal Reserve will burst the euro's bubble and basically push the dollar back up after the declines over the course of the past few weeks. We look at the CMC dollar index. We can see that born out here. It's heading towards a fairly key support level. And we can see that we've seen fairly gradual declines over the course of the past few weeks, but we still remain very much in the trend, the trend that we've been in over the course of the past few months. If we look at the lows down here and the peaks here, we've only seen a really modest pullback. And given the fact that we've got non-farm payrolls coming up, there could be an expectation that while the Fed is going to outline a tapering timetable at its meeting on Wednesday, I'll be surprised if there's a significantly hawkish tone from that meeting, but you just never know. So as we look ahead to the upcoming week, there are, I think, four key events that I've got my eye out for, notwithstanding the earnings numbers that we've got coming out as well. First and foremost, non-farm payrolls. Tune in for the webinar then. Apologies for there not being one in October where we saw a big miss. But ultimately, I think even though there was a big miss on that October payrolls number, sorry, September payrolls number, that's not really altered the narrative when it comes to a tapering of asset purchases going to be outlined at the upcoming meeting. So payrolls numbers, they've been a little bit of a letdown, if truth be told, for those who thought that the impending roll-off in stimulus measures on the 6th of September would herald a strong rebound in the US labor market. Since then, we've seen all of August payrolls coming at $366. That was a chested hire. And when Powell suggested that a half-decent jobs report would be the final piece of the jigsaw for tapering to start in November, I don't think he had a number of 194,000 jobs this September in mine. Nonetheless, whether or not the Fed starts tapering in November or announces a taper to start in December, I think the broader narrative is that it's going to start, and the bigger question is how quickly they roll it off. And if tapering starts with around about $10 billion on treasuries and $5 billion on US treasuries, then I think that will be potentially a little bit on the dovish side. If on the other hand they come in higher than that, that could well be construed as particularly hawkish So keeping an eye on the payroll's numbers, expecting a number of around about 400, 425,000. The US labor market has got an unemployment rate of around about 4.8%, saw a big fall there. The participation rate still remains fairly weak. I think what was particularly interesting, though, in the recent jobs numbers, the continuing claims, was the fact that we're now down at 2.2 million continuing claims. Pre-pandemic, we were trending at 1.7 million continuing claims. So we're only 500,000 above on the continuing claims than we were before the pandemic hit. So that suggests that we are getting a normalization in terms of the US labor market. The bigger concern for me is the fact that the participation rate is showing no signs of getting anywhere near back to the levels that we saw in February 2020. 63.7%. We're currently at 61.6%. So non-farm payrolls, that's the big number of the week. I'll be holding a webinar on that basis and that will start at 1pm on the 5th of November. We've also got the, obviously we've got the Federal Reserve rate meeting. And again, timeline for tapering. I think that's going to be the key takeaway there. And whether or not we get a move in the doplots, which currently suggests that the committee are evenly split when it comes for a rate hike in 2022. So we'll be keeping an eye on that as well. We've also got two other central bank rate meetings. We've got the Bank of England and we've got the RBA. Now the RBA, I think what we've seen in Australian dollar yields has been particularly noteworthy and particularly if we look at the Australian dollar. You know, there's been an awful lot of speculation that the RBA may look at start to raise rates from 0.1% where they are now to 0.25%. What's more broadly forgotten though is the way the RBA, at the beginning of August, back in September rather, there'd been an expectation that they would look at delaying their decision to start tapering their weekly bond purchase program from five billion Aussie to four billion Aussie a week. Now in the event they basically extend and it was due to end in November. They were due to end their bond buying in November. Now they didn't do that. They extended it into February on the basis that they felt that the lockdowns that were being imposed on the Australian dollar economy would merely delay the recovery and not undermine it completely. Now with the RBNZ raising rates earlier in October, I think the narrative has shifted now in terms of when we start to see central banks push rates higher and I think the speculation has shifted to the RBA. If you look at three-year yields, they've moved significantly higher and they're well above the levels that they were around about a month ago. They're currently around about 0.7, 0.75. So I think it's a remarkable turnaround from two months ago when markets were speculating about a delay to tapering. Now we're talking about the potential for ending the asset purchase program completely and I think that could be a middle ground for the RBA as we look ahead to the second of November meeting. The RBA rather than raising rates could end their asset purchase program as a means to signal a glide path to a potential rate rise going forward. So that's something to keep an eye out for. A middle ground could be the RBA ends its asset purchase program. Will they raise rates based on what the RBNZ is a good chance they could, but if they wanted to sort of strike a middle ground, they could potentially just end the bond buying program. Now we're heading towards key resistance on the Aussie dollar. We can see here we've got the 200-day moving average. We've also got 50% retracement of the entire down move from 0.8 to 0.71. So this level here around about 75, 60, 75, 70, that's a key resistance level. We'll be paying particular attention to that over the course of the past few days or over the next few days, I should say. Cable, Bank of England, will the Bank of England raise rates in their November meeting when they basically set out the November inflation report? Well, if you look at UK two-year guilt yields, then a rate rise is already priced in. In fact, more than one rate rise is already priced in and they sort of painted themselves into a corner. So I am expecting a rate rise between now and the end of the year. It's really just a question of when. The bigger question is how the Bank of England dials back the narrative of potentially interest rates or base rates up at 0.75 or 1% by the end of next year. We've heard an awful lot that the Bank of England is on the cusp of a policy mistake by looking at raising interest rates, but that same narrative is also telling the Federal Reserve that they're on the cusp of a policy mistake because they're not acting fast enough. Both of these arguments cannot be true. You can't criticise the Fed for not acting quickly enough at the same time as criticising the Bank of England of acting too quickly. A rate rise of 0.15% to 0.25% is not the end of the world and I think markets in some respects need to get a grip. Yes, market expectations for a rate rise are a little bit on the high side, potentially in terms of what to expect by the end of next year, but certainly I don't think an interest rate rise of 0.15% to 0.25% is the end of the world either. It's how the central bank manages the message and certainly I think the change of narrative, the shift in the narrative, suggests that there is a growing concern about rising inflation expectations, which recent events haven't changed. We've already seen in Europe the German PPI prices at the highest level since the 1970s. You've got German CPI at 4.6%, the highest levels since 1992 when interest rates were 6.75%, not minus 0.5%, which is where they are now. So, you know, a small modest adjustment in interest rates is at the end of the world and I think sometimes it's very easy to get caught up and get too close to the narrative of the news flow. Sometimes it's good to take a step back. So, what does that mean for Cable? Well, we've got 50-day moving average, which is acting as support on the downside. We've got the 200-day moving average, which is the next key resistance. So, 138.40.50, as well as these peaks here, they're the next key resistance level for me on Cable. We've got modest support in an around 137.20, the 50-day moving average and the market is looking a little bit on the overbought side, but that doesn't necessarily mean that we can't go higher. So, for me, I think next week, keep an eye on the upside. I'm still moderately bullish Cable, more on the basis of a little bit of dollar softness than anything else, but overall, still modestly bullish and Euro-sterling, more importantly, has made a marginal new low around about 84. Significantly, it didn't take out the 84 level. It's prompted a little bit of a short squeeze. Now, we could squeeze back through 84.80, all the way back to the 200-day moving average, but overall, I'm still mindful of the opinion that the ECB is a long way from even considering the possibility of a rate hike, unlike, say, for example, the Bank of England. So, that should continue to push, put downward pressure on Euro-sterling. And I think that, for me, is the key takeaway. So, that's the Bank of England meeting. We've covered the RBA. We've got services PMIs and we've got payrolls data. And let's not forget also that we've got services PMIs, which showed a bit of an improvement in terms of the UK numbers in the flash numbers from a couple of weeks ago. So, those are the key macro announcements as we look ahead to the upcoming week. Now let's look at some of the key earnings announcements. I think I've covered pretty much everything in terms of the major markets. Let's just quickly have a look at the Germany 40 as it is now. I've seen a little bit of a roll-off towards the end of the week. I think a large part of the reason that we've seen a little bit of weakness in the past few days is because we've got a little bit of end of week and end of month flow. But overall, we're still on course for a fairly decent month or told for equity markets, even though that does potentially look a little bit like a bullish engulfing and we haven't taken out the previous highs. So, there is a little bit of concern there in terms of the DAX, but warra above 15,000, then the outlook still remains fairly positive. So, that potential monthly reversal does need a confirmation. And let's not forget that the S&P showed a similarly negative monthly reversal earlier this year and we've gone on to make new record highs. So, it's important to understand that these sorts of reversals always need confirmation and we didn't get that on the S&P 500. There are early warnings, but they don't necessarily signal the potential for a sharp reversal. All reversal candlestick patterns need confirmation and it's important to remember that. Okay, so let's look at earnings numbers. We heard from Royal Dutch Shell earlier this week and by all accounts, they're pretty disappointing numbers. When you've got record natural gas prices in Europe and you've got seven-year highs, natural gas prices in the U.S. and oil prices are at multi-year highs, you don't expect Shell to miss profit expectations and more than that, see them come in below the levels that they did in Q2. And I think this is the key conundrum that markets are wrestling with. How do oil majors who rely so much on legacy fossil fuels transition to a much lower margin of renewables and more importantly, what happens when the sun doesn't shine and the wind doesn't blow? And I think that was one of the problems with respect to Shell's numbers is that even with the disruption of Hurricane Ida, they were unable to really generate the type of profits that you'd normally expect from the higher prices that we've seen over the course of the past quarter and BP is going to be faced with similar problems. We've seen a fairly decent round in the BP share price. We are now starting to see a little bit of a roll over. The key support level for me is that 345 area which we've managed to hold above thus far. Certainly there is much more potential I think in terms of BP to see further gains. In the first half of this year, replacement cost profit came in at the best level since 2019. As well as the company increasing its dividends and they did go on to say that oil prices are $60. The scope to deliver buybacks of $1 billion a quarter. So I think given the fact that we've seen oil prices well above that, then really the expectation is they should do very well indeed. But it needs to use this surplus cash well and recycling it to shareholders just doesn't cut it in my book. There is going to be an awful lot more investment needed to be done in its performing while transforming strategy. But it needs to prove to shareholders in the market it can transition to renewables in a way that doesn't hammer its margins. So it needs to use the available capital in a much better way. I recently signed an MOU with Piagio to explore charging stations in India. But I think the real challenge is I think this is just as true for Shell as it is for BP. It's it's grip capacity and at the moment you know you can have as many charging points as you like and you can you know car makers also makers can sell as many electric cars as they like but unless you upgrade the grid then these all companies are not going to be able to generate the revenues from the charging points that they push out there. So solar renewables you know wind power and what have you that's not the only game in town and certainly the answer isn't with respect to Shell to spin off the legacy business because it's the legacy business that's going to fund the transition so there needs to be a certain element crossover. So we pay in particular attention to BP's numbers when they come out on the 2nd of November. Big oil in particular. We've also got next retail one of the few retailers that's done very very well over the course of the past few months upgrading guidance on a fairly regular basis but as we heard from Amazon we're seeing increased costs which are likely to impact profits going forward so management upgraded four-year guidance up to 800 million at the last set of numbers and that's a five-year guide. So Simon Wolfson CEO did warn about the risks of longer delivery times in the lead up to Christmas and stock levels are down 12% compared to pre-pandemic. They were coping costs are likely to go up as warehouse space becomes more expensive so this week's Q3 numbers from next do run the risk that we could see a potential downgrade as we look towards the Christmas period. Amazon has pointed to that and it could be something to watch out for as we look ahead to the rest of the year. Shares are still up on the earth still made really decent progress but we could start to see few headwinds in the in the in the guise of higher costs also got Sainsbury's numbers due out and they've been basically making some fairly decent gains so far yesterday an awful lot of that has been on speculation about M&A in the in the wake of the Morrison's takeover which finally completed earlier this month and which has seen dark trace take its place in the FTSE 100. Petrol shortages also saw could well have seen an uplift in their fuel sales the flip side to that could have seen shoppers reduce the number of visits to supermarkets as a result of that which could mean bigger shops but overall fewer visits also online sales. How does it how has Argos done now that the economy has started to reopen and they were a particular disappointment in the last quarterly numbers but Sainsbury's did upgrade their profit forecasts for the year from 620 million to 660 million so it'll be interesting to see whether or not they stick with that guidance and also more importantly what their guidance is was a Christmas period going forward so that's those numbers are due on the fourth of November we've also got IAG IAG's numbers are due out they've had a pretty poor year started off really optimistically at the start of the year in the hope that restrictions would get eased fairly quickly and obviously that hasn't proved to be the case and as we look at the way the share prices rallied in early September an awful lot of that early reopening enthusiasm has dissipated somewhat so it continues to be a challenging environment in Q2 IAG reported an operating loss of over 1 billion euros it said that it's only planning on resuming 45% of its 2019 capacity in Q3 and they've they haven't offered a financial outlook for the rest of the year so even though we've seen US and UK travel restrictions getting eased in early November and travel restrictions have pretty much been moving across the board the rising infections in Asia is obviously going to temper expectations with respect to business travel and obviously the recent UK budget and the imposition of higher surcharges air passenger duty surcharges easy for me to say on long haul flights could will impact the long haul as opposed to short haul where they've been dropped but you know it's a it's a fairly low bar for AIG which would suggest that potentially there is potential for further there is potential for further upside going forward we've also got numbers out from AMC and potentially AMC entertainment is there slated for the second of November but they could get pushed to the ninth so looking at revenues there then you know time to die James Bond film could well have seen a significant uplift there as people venture back to the cinema and certainly the anecdotal evidence would suggest that that has got people back into movie theaters certainly on both sides of the Atlantic so even if we don't get those numbers on the second of November I'll be paying particular attention to them if they come out the following week we've also got Pfizer their Q3 numbers they've been cleaning up along with beyond tech on the vaccine front at its last set of numbers Pfizer raised its forecast for vaccine sales to 33.5 billion dollars for this year from 26 billion dollars now we could see another upgrade to that guidance at the Q3 numbers which are due out on the second of November revenue estimates for 2021 are currently sitting at 74 billion dollars with adjusted their income expected to double to 21 billion dollars well when you consider that Pfizer's total revenue in 2020 was 42 billion dollars that gives you an indication of how important the vaccine is now the share price did take a little bit of a tumble along with Moderna on the back of that news from Merck that was so they've done successful tests on an antiviral pill for COVID-19 so that could be a head wind particularly if those trials end up being successful and the pill gets ratified let's face it I'd much rather take a pill than get a jab in my arm so same applies for Moderna on the 4th of November we've seen a little bit of a modest tick back in the share price on the basis of that Merck news but also concerns about myocarditis risk in younger in younger cohorts adolescents with respect to the Moderna jab there now a year ago Moderna generated 158 million dollars in revenues this year we can expect to see a number in excess of 6.2 billion dollars while profits are expected to be $10.33 this year so paying particular attention to the revenue numbers there and more importantly I think in terms of whether or not Moderna will look at potentially returning money to shareholders I mean when I looked at the Q2 numbers revenue is at 4.4 billion the vaccine contributed 4.2 billion of that number and we're expecting a number of 6.2 billion for this quarter so a $2 billion increase in quarterly revenues for Moderna that's quite something so that's pretty much I think that's pretty much it other numbers that are due out Aruba Q3 numbers on the 4th Peloton Q1 numbers on the 4th and we've also got BT Group as well but anything with this sort of stuff it's all about the timing and I think I've gone on for long enough so just to recap Bank of England, RBA, Federal Reserve non-farm payrolls the key macro numbers for next week don't forget to tune into the webinar on the 5th of November 1pm to 2pm with me until such times have a great week have a great weekend and speak to you all same time, same place next week, thanks very much for listening


Everybody forced here ripping 21 22. Well, that's not the right title once I wrote in 22 23. It's like basketball. Hobby hybrid 5 box Thought I All I didn't save it. There it is There you go. It's like basketball. Hobby hybrid 5 box number 14 random teams. Good luck Roll the dice or the random. Then we'll rip the boxes right after Six times we're on a lot of sixes tonight names first one Two three four five and six Matthew be down to Gregory M and The team is now one Two three four five and six Lakers down to heat All right, Matthew be Lakers Josh W. Jazz Ross P. Blazers Joseph M. Magic Thomas M. Pacers Chris W. Spurs Chiakai T Wolves Nate M Nuggets Thomas C bucks Ryan B. Pistons Charles F Charles E with a Mavericks Ryan B. Pelicans Gregory M. Rockets Paul R. Kings Tom C. Grizzly's Selmere with a thunder Timothy F. Warriors Tom C. Nick Gregory M. Sixers Charles G. Cavs Luke S. Hornets Jeffrey M with the Raptors and Nets Rory Seahawks Thomas C. Celtics Paul R. Bulls Thomas M. Wizards Joseph D. Clippers Sons Gregory M. Heat Do the Phillies need to score some runs here All right guys last break tonight with spots left is flawless basketball That's it. Everything else is sold out if we're looking for something else check tomorrow's schedule We got day and night breaks. We got Natix live breaks. We're all over the place three streams tomorrow Results like is in chat if you want to see them again find them anytime a late in sports cards.com here we go This go concourse sexton for the jazz Bit of black Oh, it's a white We're gonna have a one-to-one It is a so on though nice car for the spurs 16 to 75 white concourse rookie What kind of question is that illegal? I have no idea Silver premier level rookie AJ Griffin for Atlanta. He is how does it affect me? Light blue rookie jang for the Thunder the 99 What do you think illegal trash and adi is illegal? Yep. Yep Red concourse Pascal Siakam raptors to 49 and a silver concourse rookie of Johnny Davis for the Wizards White concourse to 75 played Thompson Warriors got gold That is gold gold premiere level rookie Patrick Baldwin jr. Warriors Seven of ten Your tubs and silver concourse is Halliburton Pacers Together with Mcnaven Hertz What's over Mars Three of ten Max Christie Lakers gold patch rookie auto Two golds in the box. I love Red concourse to 49 towns T Wolves Edwards carry team USA today Yeah, it on there Light blue premiere level is a tomorrow rose into 99 for the bolts concourse rookie silver tie-tie Rockets Yeah, at least I'll get a chance to play in the even of the playoffs. Yeah Get a chance to play for something concourse just go Jalen Green Rockets I don't know the bucks are kind of like that until they just won. They you know got blue premier level rookie Or sorry, not blue, but white Kennedy Chandler to 75 Grizzlies premier level rookie silver Diabate Clippers Get a court side Kevin Durant light blue to 99 for the Suns Jdub base Very nice, who's my jang rookie court side a white to 75 for the thunder and a silver Jalen Brown for the Celtics Legal MJ or LeBron who's better? Everon our chat's gonna send Concourse disco PG-13 for the clips got a court side blue Chris Middleton to 25 for the Bucks Silver premier level debook Suns. You just don't have a ton of young people No, it's gonna say LeBron light blue concourse of a cell for the spurs It's out of 99 Mike D. What up? What's going on Mike? white premier level CP 3 to 75 Suns Premier level disco Towns Wolves Concourse light blue rookie Dillon Terry for the Bulls to 99 Keegan concourse Red concourse rookie Caleb Houston to 49 for the magic silver Towns premier level Yeah playing GM has probably held LeBron back, especially in like his older years here Like getting a D was a good move for them Like he plays really well with the Brawling's on the court concourse. Just go to our Eastern Rockets It's not the bronze ball one guy can't say healthy. I mean But that's how they that's how they were so freaking good in the playoffs last year. It's like just them and Reeves light blue premier level Chris Paul It's a 99 Suns and a concourse silver of MPJ For the nuggets. Thanks again everybody that'll do it for the break moving on now to some optic choice


Hi, everyone. I think we're going to get started. We're going to be on time, just our one goal for today. So welcome to one marketplace to rule them all. I hope we don't make too many Lordeer jokes for you, but I hope you're into Lordeerings jokes because there are a couple. My name's Laurel Gray. I'm the product manager for the Cloud Foundry Services API team, and we're focused on making the developer experience of provisioning and managing services in Cloud Foundry awesome. And my name's Matthew Mignini. I also work for Pivotal with Laurel based out of London and do a lot of work on marketplaces and one of the co-chairs for the Open Service Broker API project. Amazing. So we're going to run through a couple of things today. One is a very brief but hopefully interesting and illuminating history of Cloud Foundry and services in Cloud Foundry. We're going to then talk about the many, many marketplaces problem, and then we're going to do a demo. We're doing it live. And we'll leave some room for questions at the end. Matt and I actually timed this, and we're pretty sure there will be plenty of room for questions at the end. Cool. All right. I'm at first, a brief history of Cloud Foundry and services. I wasn't in the Cloud Foundry world in 2011, so hopefully not too many of you can correct me on this. But back in 2011, a shiny new platform appeared on the world of technology called Cloud Foundry. And that was a good place to run 12-factor apps like the World Wide Web. And that was great. And customers could run lots of those World Wide Web applications on their Cloud Foundries in 2012. Cloud Foundry being the best place to run 12-factor apps, as you probably all know, they tend to need backing services. That's one of the 12 rules.  And we wanted a really easy way for those service providers building things like Mongo and New Relic to make their services available to all those Cloud Foundry apps. And so we, some clever people, not me, put their heads together and thought, OK, let's make an API. And the Cloud Foundry services API was born. It's a very simple specification, which basically has five lifecycle API calls for provisioning, updating, deprovisioning, and then getting access to and revoking access to these backing services. So that was all good. And the world was happy. And all of these applications can consume the backing services that they need. And then fast forward two years into 2014. And the world's still good. And this blue wheel thing starts appearing on everyone's radar. And over the next few years, that blue wheel gets quite big. And lots of people think it's quite cool. And then applications running on those wanted to play in the same game. There's this really, by now, a pretty diverse set of services you can make available to your Cloud Foundry applications. And Kubernetes workloads wanted to get involved. And so what was the Cloud Foundry services API? It transformed, got renamed, to the Open Service Broker API. And now both these platforms and all the applications or containers running on them can consume this big marketplace of services which have been made available by all the service providers out there. So that's 2016. Over the next year or two, all these companies got involved. These companies are not only building Cloud-based platforms, providing the developer experience to consume these backing services. But many of them are also building services to be plugged into your various marketplaces in the platforms that you're running today. So this was good. And things were still good. And then you started scaling up how many Kubernetes clusters you had and how many Cloud Foundries you were running. So that reality there where you have one cluster and one CF, we all know is not really the case. You have probably at least a few of those. And we see many customers now as they're getting more and more successful with these platforms, end up with much more, and then many more of them. And that leads to kind of the end of 2018 when we pivotal SAP, many of the companies realized that this was really a problem that we had to start solving. And so like Frodo leaping into Gandalf's arms, that's what we're aiming to do now in 2019. Adding up to Laurel. Great. So I'm going to dig a little into the many, many marketplaces problem. I'm sure if you are using services on Cloud Foundry or in Kubernetes, you're intimately familiar with this. So bear with me. If you're going to create a service instance in Cloud Foundry or in Kubernetes, the user experience is actually pretty simple. In Cloud Foundry, you use CF create service. You give it the service name, the plan name, and then you give your service instance a name, and you tell the platform to do this. It talks to the broker.  There's a pretty similar experience. In Kubernetes, if you have the service catalog project installed where you just kubectl apply and then give it the manifest file. So magic, lots of magic. And then what actually happens, too, is your platforms become the source of truth for information state about that service. And this is fine. You might have many service instances attached to each of your platforms. This isn't that big of a deal. But like Matt said, the world isn't so simple. If you're using Cloud Foundry, you probably have more than one Cloud Foundry. If you're using Kubernetes, you almost definitely have more than one cluster. And so this problem can become a little bit more difficult where you have your state of your service instances spread out across many different platforms to the point where a really simple question like, how many MySQL instances have been provisioned across my platforms becomes really difficult to answer. And it's not so simple or straightforward. So what we see a lot of people do is one of two things. Either you'll write a script that will aggregate information across each of the platform APIs, or you use some kind of bespoke pipeline that you create using Jenkins, or concourse, whatever flavor you prefer, maybe something else. And this kind of works. The problem is everyone is having to create their own bespoke scripts, their own bespoke pipelines. And then you're having to manage this across many different platforms. And we imagine as the world becomes more and more interesting and things are moving faster. And you all become more successful. You're going to have more and more platforms that your scripts or your pipelines have to work with. And there's another side to the problem, too, which is the Marketplace itself. So in Cloud Foundry, if you're using services in Cloud Foundry, which I hope everyone is, you have a Marketplace already embedded into Cloud Foundry called the CF Marketplace. And if you have the service catalog project installed in Kubernetes, you use kubectl. And you can use the cluster service classes custom resource, which is a tongue twister, if you want to impress your friends later, to access the Marketplace of services that you have available on the platform. And just like the state of the service instances, you have many different Marketplaces that you're having to create across each platform, which again, becomes a bit untenable to the point where if you have tenants who are asking you for the brand new shiny service spanner and they're really excited about it, if you want to make it available into each Marketplace, having to do that isn't very simple. You don't just do one thing. You actually have to, again, write a script or build a pipeline. And again, as you have more and more platforms, you have more and more Marketplaces, and you're having to manage more and more different places for things to be available for your tenants. So what we'd like to talk about today is pulling the Marketplace out of the platform and all that it entails into one thing called the Independent Services Marketplace or ISM. Cool. So I think just, yeah, the ISM is basically our attempt to eventually provide a very Cloud Foundry-native experience to have many Cloud Foundries, especially backed by the same database. So you can imagine a world where you, in one platform, run CF Marketplace, and that looks the same as in your other Cloud Foundry. And then depending on my permissions, I could maybe do CF Create Service, Postgres, in one of my Cloud Foundries, and bind it to my app. That's great. But we all run probably pretty big distributed apps, probably across different foundations. So what we really want to happen is then I target a different Cloud Foundry. I look at the CF Services output there, and I can see my instance I provisioned somewhere else. And I can just run CF Bind Service, which is amazingly simple, and bind that to the same backing service. So that's what part of one of the aims of ISM. ISM is open source. Right now, it's hosted under the Pivotal CF org. And it's built on top of Kubernetes. So we make use of things like CRDs for extending the platform. We'll show you in a minute the ISM CLI that we've started to build. But you can also drive this if you're like a big Kubernetes fan through just manifests and that declarative model that many of you probably like. So there's three goals of ISM. The first is to solve that many marketplaces problem. Laurel has talked through enabling operators to intuitively curate a marketplace that spans multiple platforms. The second goal is enabling workloads on different platforms to share service instances. About a year or so ago now, the Cloud Foundry services API team that Laurel manages introduced the ability to share service instances across orgs and spaces. That was our attempt at recognizing that not all apps that need to share a backing service live in the same Cloud Foundry space. This is getting one step further now. We now understand that those apps don't always live in one platform or one foundation. And they may even span different platforms like CF and Kubernetes. So enabling different workloads, no matter where they're running, to share that same backing service, be it persistence database or a configuration server is pretty important. And then finally, we want to allow developers to provision services for off-platform applications in one place. So for those familiar with CF Create Service Key, that's kind of great if I have a Redis. I could create a service key that essentially gives me the access credentials to it. I can then either use that as a human if I want to log into my Redis, or maybe if I have an application not running on CF or Cates, I need a way to just copy and paste those credentials into it. The problem with that is just like the state of instances and the state of that marketplace get distributed across all of those platforms. All the service keys that have been created are also distributed. So again, you know, security team comes over and they're like, OK, how many people have access to this MySQL? It's a pretty hard question to answer, and security teams are pretty unhappy about the answer that they get today. So now for the best bit of this talk, hopefully, I will switch out of slides and get into this demo. So there has been a little bit of setup here. We basically just deployed a couple of apps, and we have a Cloud Foundry running in AWS and a Kubernetes cluster running up on GKE. But we'll talk through the bits that are relevant as we go through. I'm just going to quickly run the help command just so you can see what the ISM CLI looks like right now. So when I run ISM, I get a number of available commands that I can interact with. So there's bindings, brokers, instances, run times, or platforms, as we've called it most of the way through this talk, and then services. Is that readable for everyone at the back? Yeah, all right. Cool, so first things first, I'm going to list the brokers available in ISM. This is similar to the CF service access command that you can run today in Cloud Foundry. And I can see I have my Azure broker running. We're going to use this later on in the talk, but this is running through a broker proxy on Cloud Foundry, but this gives us access to the Microsoft Azure Cloud broker, which gives us access to a number of Azure services, including Postgres, which we'll need later on. But for now, we can ignore that one. So just like those of you who are familiar with CF create service, I can use ISM to register a broker, giving it a name of a broker that I choose, the URL, where that broker is running, and the username and password. In this case, we're going to ask the broker for its catalog, and that catalog contains all of these services and plans offered by that broker. In this case, assuming all this works, our broker should give us a catalog containing a Redis service with a couple of plans that we can use. So if I now list my brokers that have been registered, then we should see the demo broker there at the bottom. Let me clear the screen so you can see. If I look at the services, so this is similar to the CF marketplace command, although we're using a slightly different syntax here. We should now see my new shiny Redis service at the bottom there. So I have Redis, two plans, simple and complex, and it's from my demo broker that I just registered. So nothing mind-boggling here. This is exactly the same as the CF experience today, if many of you have used that. So just like in CF, I can now go and create an instance, giving the name, a service, and a plan. This will go off to the broker and ask it to provision that new instance. And I'm going to wait a couple of seconds so it makes sure it finishes. And if I list those instances, again, just like CF services, I should now see my instance, the Redis service I provisioned, and finally, just like CF create service key. So this is really focused on this off-platform use case. I can go and create a binding for that service instance. Assuming that's been created, if I go and get that binding, using ISM binding get, you can now see I have some credentials. So I can use my username admin, and my password, my unique credential, and my unique password to go and access that Redis service. And let's say I had my app running on my Raspberry Pi, wanting to consume that, I can go and copy and paste that in. And all is good. So that's the more boring bit of the demo. Like many of you have probably seen that before, just with swapping ISM for CF. So this is the more interesting bit. So ISM actually knows about some runtimes that are connected up to it. So in this case, ISM knows about a Cloud Foundry that we've called CF1. That's the one running in AWS. And we have a Kubernetes called Kate's one, and that's running in GKE. So the reason ISM knows about that is because it wants to start orchestrating what is happening with those workloads and those platforms and which services they can access. So again, if I could elist my instances in ISM, we can see I've already created this PostgreSQL instance here. It's a PostgreSQL 96 from Amazon. Amazon, sorry, Microsoft, the basic plan. And we created it a few days ago. But that's all ready to go for me to use now. And that's a real PostgreSQL running in Azure. In my Cloud Foundry that I've targeted, in my demo and demo org and development space, I have the Spring Music app running. This is a basic app, which gives me a music album curation tool. So what I want to do now is use ISM to inject a binding into that app. So as Laurel mentioned before, when we have the state of instances and bindings embedded within each platform, it's quite hard for those multiple platforms to then start sharing those instances and bindings. Because if you're familiar with the Brokersberg, each platform is the source of truth. And so as soon as you start trying to share those resources, things like ownership, who can upgrade things, becomes a challenge. So I'm going to here go, ISM binding create. I'm going to call it my CF binding. It's for the PostgreSQL instance I've already created. And then I'm going to use this runtime flag. So what this is saying is for the CF1 runtime that's registered, the demo org, the development space, and then the Spring Music app, I want to go and inject a binding into that. This is actually what it's doing in reality is creating a user-provided service in that space and binding Spring Music to it. And the reason that's kind of cool is because the concept of user-provided services and bindings has existed in Cloud Foundry for probably three years now. So if you're running a CF and you haven't updated it in a while, you could use ISM out the box today and it would work with that very old version of Cloud Foundry. So if I go and create that binding, then wait a few seconds and run CF services, then what we will hopefully now see is a managed service being injected into that space, my development space, and my demo org, and it's automatically been bound to my Spring Music app. What that means is Spring Music now, I'm going to restart in the background, the Spring Music app now has an environment variable called vCAP services, and then environment variable contains any information it needs to access that backing service. In this case, it's going to be the URI of the Postgres instance that's running and the unique credentials to go and access it. So once this has restarted, we're going to do the same thing again. But this time, the other runtime we registered, which was the Kates 1 cluster, we want to inject the binding into that cluster. For those familiar with Kubernetes, you'll know there's already a concept of secrets, which pods and deployments can make use of. So the way ISM is going to interact with Kubernetes is by creating secrets in a namespace. So once again, I can create a binding for my Postgres instance, and this time on the runtime flag, I can give the name of my platform or my runtime Kates 1. And all I need this time is the name of the namespace. In this case, it's demo. So again, just like I do with CFBindService, that goes as the broker for a set of new unique credentials to access the service, creates that secret. And if I now go and look using kubectl, I can see the same name as my binding. We've got Kates' binding secret down there. And if I actually open up that secret in YAML, then we can see here I have my base 64 encoded credentials, which will include all the information I outlined earlier, so how that Kates deployment can actually access the Azure Postgres. I'm going to quickly run this rollout status command just to make sure that my deployment has actually picked up that secret and restarted, which it has. And finally, I'm going to port forward the spring music deployment onto my local port 8081, so that we can all see it. All right. So switching back to the browser, I have two browser windows here or two tabs. I have my Cloud Foundry one. And if I refresh this, this should be up and running. And if I click on Info, you can see here that the ISM, I'll make this a bit bigger, actually, you can see that the ISM managed service is shown here. And we can see that the profile it's automatically detected is this Postgres Cloud profile. So that's cool. Now, this is my local host 8081. So this is just looking at my Kubernetes deployment. And again, it's the same application running on Kubernetes. And again, it's automatically picked up that there's a service it can make use of, which is a Postgres service. So in my case cluster, I'm going to add a new album. And I'm going to call it Journey to Modal by Gandalf. And it was released in 1300. Cool. Hit OK. And by magic, we have Journey to Modal. Cool. That's not very interesting. We've just done that in a Kubernetes cluster. But this is running on GKE. And now I have my distributed app. And this is my app running on CF. So if I go and refresh that and scroll down, then we can now see that in my Cloud Foundry app, on a completely different platform, my Journey to Modal has been there. But then there was a big internal fight and Frodo said he was the artist, so I can change it to Frodo. So now in my Cloud Foundry environment, we know it's Frodo. And automatically, because they're using the same persistence layer down in my case, I can see that Frodo's done it. And they can delete it because they've settled their differences. And I refresh over here. And it's gone. That is it. And awesome, jumping back into the deck. This is the most important part of the presentation for us. If you are interested in providing feedback, either unfiltered and telling us exactly what you think, or by being a part of our beta user testing group where we're doing a lot of prototype testing just to get feedback on how the user experiences, just send us an email. It's at isim.pivotal.io right now because it's a Pivotal open source project. And if you'd copy of the deck, you can get it at the bit.ly link. So I don't know if there's a mic or anything, but there's 10, 11 minutes for questions if anyone has any. Do you want to repeat it? Yeah, so the question was, when do we see this hitting, basically, being released for people to use, right? Yeah, yeah, for PCF. So soon is our hope. We're calling this alpha, even though we don't really have a good roadmap of when it will go beta in GA. The alpha right now, this is all real code, except the binding injection bit. That's been hacked together for the purpose of this demo. Getting what you've seen today into a place where it can be run in production, we're hoping is a couple of months away, there's a lot of work that has to be done to make that happen, mainly because we talk about ISM helps widen the gap between workloads and where their backing services are. And obviously, if they're not running in the same Bosch director or in the same kind of AWS environment, networking becomes a challenge. So there's lots of work going on there to try and automate that networking in the open service broker group. There's also some work being done around having some service brokers today make use of credential stores to store those binding credentials. And again, widening that gap between these two things makes it harder. We have to somehow negotiate a credential store for both a platform like Cloud Foundry and a service to use. But assuming we keep making progress, working through those problems, hopefully, by kind of summer this year, we're looking at having this available to be used. As I said, it's currently open source. The nuance to this is that I mentioned earlier, we want this experience eventually where I can do CF create service here in one platform and CF bind service or the Cates equivalent in another platform without having to go get development teams to download ISM, the CLI, target this ISM as well as targeting their CFs and Cates and then orchestrate it from there. Cloud Foundry is a big, complex system. Moving to that world is probably 12 plus months to get right. That will be further or straight, but assuming you're happy to give developers access to ISM and for them to orchestrate bindings from there, like we're looking at this summer. Yeah, so the question was around disaster recovery and what happens if a foundation goes down? Is that the foundation that's running ISM? Yeah. So if you were running ISM in a foundation and it went down, you would lose the developer experience for provisioning and generating new bindings. But the ISM is out of the workflow when an app is actually communicating with a service instance, right? The app has information to directly connect to that instance. So you would lose the control plane if you were running a single ISM and it wasn't HA and it went down. But the applications would still be running that have been bound to services through ISM because the ISM or the service broker isn't in the path in that world. Yeah, so the question is about, like we see customers today who are, when they create a service today, they don't create it in just one Cloud Foundry, they create it in multiple. Yeah, that's fair. Actually, we've seen a lot of customers doing that, maybe partly if it does last recovery also because of the limitations that exist today. And if I wanna share a gemfire across two Cloud Foundries, I have to do two create services and then the broker has to magically handle, okay, we want those to be in the same super set of gemfire and handle communication. Yeah, I think you raised an interesting question around how ISM would help in that world and how make sure that we don't become a single point of failure. So yes, I will, yeah, can I outcome grab you after this chat? That's it, sounds good. Any other questions? All right, thank you very much everybody.


7 Wrong Assumptions The Narcissist Makes About You Narcissists have an exaggerated sense of omnipotence, where they believe that they have great power and influence, as though they can do or accomplish absolutely anything, especially things that defy logic, things that go against conscious reasoning that would otherwise be conducted and assess according to principles of validity, reason and good judgement, which would then ground them in reality, but because they believe that they have unlimited power and they are the ultimate authority, it gives them a psychological blind point, a persistent lack of insight and awareness considering certain aspects of the target's personality and behaviour, which causes them to be out of touch with what is actually happening, because they are always fault finding, they are very disapproving of anything that you say or would do, and they display an overly critical point of view, where they don't even think before they speak or act, when this is a basic concept that is typically instilled in a toddler and yet it's something that narcissists can't seem to grasp or achieve or understand, which is why a lot of their thoughts and concepts do not align or correspond with what is actually truthful or factual, they're just going off of what they feel because in their minds their feelings are facts, but this way of thinking and feeling is what leads them to proceed along the course of action and behaviour that ultimately leads them to danger, difficulty and failure, and it's something that they cannot refuse or change, because they have to see themselves in this way, it's the only way that they can function, they have to see themselves as being all powerful and all knowing, because deep down they're actually very insecure, they don't really believe in the things that they say, and you will notice this, if you press them on their ideologies and you try to get them to expand, they won't even be able to give you a logical explanation for why they think in the way that they do, all you will get from them is false truths, world salad and gaslighting, because when it comes down to actually having a genuine conversation about it, they haven't got a leg to stand on, they wouldn't know where to start, because these are just ideas, fantasies and illusions that they have created in their minds, and it's the competency for their insecurities and deficiencies, which is why they will make a lot of wrong assumptions, so here are seven wrong assumptions that the narcissist makes about you, one, they underestimate you, they estimate you to be less important than you really are, because they underestimate your intelligence, power, capabilities and emotional strength, so at times they don't even entertain the possibility that your opinions and judgments are actually pretty accurate, and they overlook your ability to deal with challenges and bounce back from them, because they've already managed to trick and deceive you, so they assume that they're greater than you, they see it as though they're the ones who are in control, they're steering the ship, so they can't even acknowledge the fact that as an empath, you're naturally positive in attitude, you're full of energy and you have new ideas, they can't even see it, because if they were to do that it would take away their position of being in control and of them being superior to you, so it really doesn't matter to them how wonderful of a person you might be, because they're too preoccupied with ignoring you and treating you as unimportant, instead of challenging your power and intelligence, but by choosing to go at it in that way they're actually making a big mistake, because they're just overlooking you, they're not fully understanding your capabilities, they're underestimating your power, so they're making a highly inaccurate assessment of you, they're not seeing that you can actually be a very valuable asset to them, which ultimately ends up backfiring on them, it has the opposite and undesirable effect of what they intended, because while you're giving them all of your love and attention, they just see you as being weak and ineffective, as though you can't survive without them, but you're not displaying weakness, you're displaying strength, because it takes strength to be vulnerable and to have patience, so they're completely misidentifying you, while you're overlooking their faults and their failure to meet a certain standard, but they see that as a weakness, as though it's you who needs them, because you're tolerating them, when maybe at times we can be naive and maybe a little bit foolish, because we think that we can see some potential in them, so we're trying to help them, as we're continuing in this course of action in the face of difficulty, even with little or no indication of success because we're trying to correct it, and we're trying to make things better for them, when in fact there is no possible way to make it right, but when you're making an effort to please and satisfy them they're just seeing it as a weakness, as though you can't live without them, because they're very arrogant and delusional, which is why they're so shocked when you leave them, because they thought they had you wrapped around their finger, they thought they had complete control over you, so they assumed that you weren't going anywhere, two they believe that their flying monkeys can save them, the flying monkeys typically have personality disorders or mental illnesses of their own, and yet these are the people who the narcissist picks to do their bidding on their behalf, because the narcissist is hoping that their flying monkeys are going to reverse the trend of events, and then you're going to submit under pressure and return to the narcissist, because that's all these people really want, they want you to return to your abuser, because they see it as though the narcissist owns you and that's it for life, as though you are the narcissist's possession, because by nature narcissists cause certain situations to happen, they're almost always the cause of anything that goes wrong, because they provoke people, they incite people to do or feel something by browsing and getting them, because that's how they get their narcissistic supply, which is why they need to have people at their beck and call, people who will validate their side and battle and crusade for them, while they're making no effort, and they're just observing the events and information as they gradually developed or as they are revealed, when it all began with lies anyway, so the flying monkeys are nothing but fools, which is why they tend to be miserably inadequate at an either lower level than narcissists, because they're just people with inflated egos who attempt to get and do attention for themselves, they lack the mental capacity to know that they are being used, they can't see that they actually have no identity of their own, and that they're just latching onto the narcissist's ideas to be popular, or that they're behaving in their own self-interest rather than adhering to set beliefs or morals, so they're equally as delusional, because they just get off and obey the narcissist, while believing that they are worthy and significant, because they have attached their sense of self to carry out the narcissist's commands or instructions, but they're actually only caught up in it because they're insecure, or because they have a personality disorder or mental illness, which is why they tend to throw a temper tantrum at like a two-year-old child when things don't go their way, three, they assume that you will always be under their spell, they think they're highly skilled in their lies and imibrations, as though they're always saying or doing the right thing at the right time, while they're working secretly using a false appearance in order to get information, so they assume that you will never figure out what's really going on, but they're often very careless, because they're dealing with so many other issues at the same time, which often impacts and conflicts with the effect and the position that they're trying to have over you, so you may often see what's going on, and you may direct your gaze or attention towards it, or say something to make them aware of a fact or circumstance, but because they're so overconfident about their situation, they're assuming that you still don't have knowledge or that you're not suspicious, as though you're not aware of their actions, behaviours or intentions, and it's not going to affect you to the point where you're going to get tied and see through it, they're often unaware of it, which is why they just continue in the same way as before, even if you've already called them out in it, they will still continue to defend something that you already know is wrong, because that's often the only thing they have to support their point of view, but it really just reveals how mentally deranged they are, when they're still trying to defend something, when you already have facts against it, but they assume that it's working as long as you're still staying, because they have incorrectly defined the meaning of love and acceptance, so they see it as though you're still a participant in their game, as though they have you wrapped around their finger, because in their minds they're telling themselves that they're very attractive, so they're projecting their confidence, because they believe that they have the ability to be in control of any situation, in their minds they think they're this wonderful person, as though you can't do any better, because you can't get away from them, so they're thinking they're the best thing since life's bred, and that's what they're depending on, that's why they're expecting it to keep working, because you can't do or have anything better than them, when that's not even true, because they have no inner value or substance, so there's nothing worth you sticking around for, because it's just a fabricated character, they're just mirroring your interests why deals, or it's just something that they've made up in their minds, for they assume that people are unaware of their dishonest activity, they think that people don't know what they're really about, or what they really like, but annoyingly to you a lot of times people already know, they see through the facade and they don't want to get involved in it, or in the case of the flying monkeys, they just don't care and they prefer to keep the focus on you, because that's out of their scope and out of their range of power, so they've got to work within their means of whether and what's available to them, they're delusional but at the same time they know their place, but the people who really witness their trickery are the people who are closest to them, outside of that they're able to maintain fake and superficial relationships and acquaintances, but they keep them at arm's length, they distance themselves emotionally, so that all those people see is the facade, which is why it's only the people who live with them or deal with them every day who really know them, so they're wise enough not to get too involved or not to call them out on certain behaviors, but the narcissist is convinced that people aren't onto them, they think they're so on top of things and in control of any given situation that they can get away with anything and no one will ever unravel their motives, when it's just their arrogance, because that is what causes them to engage and brisk in extreme behavior when all it really does is reveal their character, it just shows everyone who they really are, which is why if you give them enough rope they will hang themselves, they will end up exposing themselves, five, they assume that they can replace you, narcissists are very arrogant, in their minds they are superior, so once you submit to their demands and you agree to do what they want, they believe that they have complete control over you, so they can focus their attention somewhere else because they can have you whenever they want, they believe that everything you're doing is because of them, so in their minds they created you, which means that they can do whatever they want whenever they want to do it to you, they can have you back if they want to have you back because they're completely delusional, they believe that your behavior can be influenced by their thoughts, so they hold a set of belief for two unrelated events because they believe that they can always keep you around them, when the reality is that you always have multiple options available to you, things that do not involve them, but because of their arrogance and entitlement, they often won't even see it, six, they assume that you will never recover from the abuse, if you're dealing with a malignant narcissist, they will torment and persecute you, through a repeated inflecting of suffering and annoyance, to drain you mentally and emotionally, to the point where they believe that you will never be able to move on, and you will always be attainable and within their reach, because now you can't do without them, so they assume that you're never going to experience a healthy relationship with anyone, but when you do it makes them really angry, because they don't want anyone to be better than them, they don't want anyone to replace their sexual favors or anything else that they've done for you, but they assume that it's never going to happen, that you're never going to be able to move on, which is why they feel as though they can come back whenever they want, because they believe that you will always be an available option to them, seven, they believe that they should still be a part of your life, they believe that they should still have access to you, because in their minds they've done nothing wrong, you're to blame for everything, but deep down they already know what they've done, they know why you don't want to be with them, they know what they did which made you not want to be with them, they're just in denial, because they don't want to accept their faults and wrongdoings, the narcissist may assume certain things about you, they may accept things to be true without question or proof, so that it makes them feel like they have some level of power over you, but regardless of what they assume, it never works out the way that they want it to, it doesn't impact reality, and instead it just ends up being the cause of their dissent in the end, because they're completely delusional, and they're not even concerned with what you're thinking or feeling, they don't even know because they like empathy, all they can really do is read into your weaknesses and vulnerabilities, but even then it's typically just a response to what they're doing to you, so that really has nothing to do with you, but other than these negative qualities that they assign to you, if you don't relate to associate with it, as far as they're concerned you're unreachable, for all they know you're in another reality, because they're of a lower consciousness, they can't read into that, so it does nothing for them, they can only relate to you by bringing you down, which means that they can't even see anything from your perspective, because they can't attain that level of aeration, which ultimately leads to their loss of power over you, thank you for watching, if you found this video helpful please give it a thumbs up, share your thoughts in the comment section, hit the subscribe button to receive the notifications, if you would like to support the channel, you can donate to payboy.me.narchsurviver, you can book a one-on-one with me on the website, it's narchsurviver.uk, thank you for watching and I'll talk to you soon.


Hello friends! Let's solve the following question. It says, in an entrance test that is graded on the basis of two examinations, the probability of a randomly chosen student passing the first examination is 0.8 and the probability of passing The second examination is 0.7. The probability of passing at least one of them is 0.95. What is the probability of passing both? Let us now move on to the solution and let A be the event of passing. The probability that randomly chosen student passes the first exam is 0.8, so probability of A is 0.8 and probability of B is 0.7. And we are given that the probability of passing at least one of the two examinations is 0.95. That is the probability that student passes in any one of the examinations, at least any one of them examination is 0.95. That is he either passes in first examination or he passes in the second examination. So the probability of A or B which is equal to probability of A union B is given to be 0.95. We have to find the probability of passing in both the examinations that is A and B. Now we know that probability of A or B is equal to probability of A plus probability of B minus probability of A and B. So this implies probability of A and B is equal to probability of A plus probability of B minus probability of A or B. Now probability of A is 0.8, probability of B is 0.7 and probability of A or B is 0.95 which is equal to 1.5 minus 0.95 which is equal to 0.55. Hence the probability of passing in both examinations is 0.55. So this completes the question and the session. Bye for now. Take care. Have a good day.