Welcome to the session and in this session, we will try to understand what is sustainable product and how do companies introduce sustainable product. Now, before getting into the sustainable product, let us summarize what we are trying to do in the last class about that why do company they undertake the sustainable initiative. And it is more about they have to mitigate the risk and in that process they will also get the profit. So, these are few of the factor which is summarized by brain click in his book, The Financial Time Briefing in Sustainable Business and this covers everything that why this company they should take this sustainability initiative. The first point about this is that this is for the because there is a concern for the people and environment. It is altruistic benefit and that is why the company they undertake the sustainability initiative. This gives us a license to the license to grow because if you are known as good and sustainable company, the growth in the market space is good and this gives us a license. There is a direct financial benefit in term of the reduced energy, material cost and also the cost associated with pollution abatement. This gives us the ability to continue. So, if you remember we introduced the concept of limit, there is a limit to resources. So, if there is a limit to resources unless this is being not responded well, that will stop the ability to continue in the production. Then the regulatory compliance stakeholder acceptance makes the company to undertake sustainability initiative and as we discussed in the last class also this gives a protection against risk and through this they can also enhance the or they can do a competitive advantage by addressing the sustainability agenda. Now what is sustainable product? The first definition is from Wikipedia. Sustainable product are those product that provide environmental, social, economic benefit while protecting the public health environment over the whole life cycle from the extraction of raw material until the final disposal. So, if you look at it talks about everything, it gives us the benefit that is environmental, social, economic benefit to the respective stakeholder. It protects the public health environment over the whole life cycle of the product from the extraction of the raw material to the end disposal. Now, if you have seen in most of the cases we use the word in synonym. Sometimes we use the word sustainable, sometimes we use the word green, sometimes we use the word eco-friendly, sometimes we use the word environmental friendly. So we use this interchangeably, but let us see what the differences between this different kind of product what we use in synonym. So green typically green covers almost everything related benefiting to the environment from the movement for environmental benefit to architecture to design and to the fashion everything that comes under green. Green products are energy efficient, durable, usually require low maintenance and these are often made from recycled materials from renewable sources and can be biodegradable or easily reuse recycle at the end of their life cycle. Now what is eco-friendly? It is not as broad as the previous two types of product. It means something does not have the planet and it can be used to define any product claiming minimal or no harm to the ecosystem and environment. That is what we call them as the eco-friendly or environmental friendly and this consists of the product that claiming minimal or no harm to the ecosystem or the environment. So if you look at green eco-friendly and sustainable product, possibly in the sustainable product it we represent the wide scope of issues and activity according to the UN that is do not compromise the ability of the future generation to meet the need. This is what from the definition of sustainable development. So our actions, our activity, our the way we consume produce it should be such that it should not compromise the ability of the future generation to meet their needs and sustainable product try to represent those issues activity which has been the part of the sustainable development definition. So sustainability includes eco-friendly activities, green product but green does not necessarily be sustainable like a product made from renewable resources is considered green. But if you do a life cycle analysis of the product you will find that it requires lot of energy to manufacture and ship to you. So there is a energy associated with manufacturing, energy associated with logistic. And if you there is no proper way to dispose the product then it will also create the harm to the environment. So this is not considered sustainable. This can be green because product made from the renewable resources but if you do a life cycle analysis you will find that there is a impact associated with the other loop of the product life cycle. So we cannot consider as a sustainable. So it is very difficult to get a sustainable product as a whole where the impact is lower, impact is minimum at each loop of the product life cycle. Now this is given by Kevin Braddy in Green Bees that what is the sustainability attributes of a product and it is initially the attributes are given by classical and more detailed eco design and sustainable strategy by Han Bregit and Martin Charter which is further added or further like complimented in by Kevin Braddy in his side that is Green Bees. And this is what the sustainability attributes of product. And what are the sustainability attributes of the product? We start with the, we do the attributes starting from the resource base, what is the life cycle impact and benefits? What is the human and ecological toxicity profile of this product? Then socio-economic impacts and benefit, total cost and the life cycle cost and finally the technical performance and fit for purpose. So typically when we do, we evaluate the product whether those are sustainable products or not. Typically these attributes are being used starting from the resource base what kind of resource are being used till the time this is the technical performance of the product is done and how much they are fit to you for the purpose or fit to the use. Now I will give you three examples which can be taken as a sustainable product example. This is again these examples are taken from financial time briefing on sustainable business this is by Brain Click which is published in 2011. The first example is Amazon Kindle. So this is a, Amazon comes out with this e-book reader Kindle. Now what are the impacts? They give positive impact because since it is e-reader there is no paper use over here. There is reducing paper use, there is no paper use, there is no energy in manufacturing the paper or the books. Then there is no energy associated with the distribution of books because this is electronectrically you can get and there is impact in term of reduction of, there is no reduction of tree, there is no reduction of paper use, there is no reduction, there is no use of energy in manufacturing and also there is no energy or the other cost associated with the distribution of the books. The e-link technology is energy efficient what is being used in this product and it only consume energy when we turn the page. It gives financial benefit, how it gives financial benefit because we are not using paper, there is no cost in the manufacturing, there is no cost associated with the distribution of the books. Now what is the problem with this product? Till the time the behavior, the consumer behavior of accepting such kind of product. So when it comes to book or newspaper we always prefer to or many people prefer to go for the conventional medium. So they still feel that if it is a book they want to have a hard bound book what they can read, keep after 20 years, 30 years they again want to read that book. And also there are, so initially there was no competitors but over a period of time the competitors they started also getting into the space. So mostly two problems associated with the product, one the consumer behavior associated with the product, how consumer the respond to such product and second is that competitors getting into the space. Also since the entire product is just based on the technology or the technological solution displacing such kind of product becomes easy. And somehow even if the product look sustainable what is being ignore over here is that since it is a electronics product there is environmental impact associated with producing and disposing the electronics. Now let us get into the second example. Second example is the Dairy Lent and the Tagline is Power of Cows. This is by US cooperatives and what they do? They produce the biogas from the cow manure and use that gas to produce the electricity. Now what is the positive impact of the product? The positive impact of the product is that since typically the cow manure they produce the methane and they stay long in the atmosphere it because of since it is being used from use biogas and again to produce electricity it reduce the source of global warming and the gas what we get from this cow manure is typically cleaner than gas what we get from the other sources the natural gas what we get from the other sources. Then the other benefit is that there is a income generation through the electricity and also the carbon credit project can be taken from the since this is being used this can be also part of the carbon credit and the whatever the credit you own in this project that becomes the benefit. Now what is the problem associated with the product? The problem associated with product is that it needs lot of upfront expenditure. So unless there is no third party there is no businesses get business getting into this for the farmers getting into this system produce at a scale which will be again converted into electricity becomes a problem and also you will find in the countryside there is always a resistance for such kind of use. So there is a resistance for biogas there is also a resistance for also wind turbine. Now let us get into the third example that is NATURA that is the tagline over here is that cosmetic with a sustainable twist. This is a Brazilian company and their Ecos product is designed from sustainable use of materials from rainforest and farm. So how they do it? They do a sustainable plantation and also they do the fair trading with the farmer even they use the reusable container to reduce the waste. And what is the benefit? The benefit over is that there is a increased growth because the product is known as sustainable product. There are lot of awards rewards what they got because they have incorporated the sustainability and also they enhance their image that is image of a great employer by that they could retain their existing employee and they can also they could also find out or they could also employ the better employee for the company. Now the difficulty over here is that it is very difficult to get into 100 percent natural content in the product line of cosmetics. When you know that cosmetic is initially it is all about the artificial. So changing entire 100 percent to natural content in the product line in this place is difficult. So although they did a acquisition of the natural medicine company but it was still getting difficult that how do they change this entire 100 percent content into the natural. Sustainable in the product line. Now the other thing what is given is that what are the different paths to develop a sustainable product. Since I was giving you an example over here is that since they wanted to move into the 100 percent natural content in the product line they acquire in natural medicine company. So this is one of the path that how you create a sustainable product or how you create a sustainable product line. So this is given by Andrew and attention that there are three paths to develop a sustainable product. One accentuate that is through which we highlight the green attributes of the existing product. Second you acquire a brand which is green and you develop the sustainable product and architect is which is more difficult is that you start the sustainable product or the sustainable brand from the scratch. So it is up to the firms, it is up to the company that what kind of path they would like to choose, whether they want to accentuate just the highlight the green attribute of the existing product and working more on that and converting that into a sustainable product or acquire a green brand and develop a sustainable product or architect build from the scratch entirely a new sustainable product. Now whenever you plan whatever path you whatever the path the company shows whether they accentuate whether the architect or whether they acquire how to make a successful one when you are introducing a sustainable product or when you are launching a product in the environmental friendly product in the market how to make a successful one. The first thing is that it is it should not be ad hoc one the strategy of sustainable product or building a sustainable product it is not about a ad hoc plan it has to be a send it has to be part of the central strategy. Second the company has to be transparent about the product the success factor also about the failure factors. They should answer the sustainability benefit from new project it is not about only it is a cost center since you are offering a sustainable product if it is not it is creating only a cost to the company over a long period of time possibly this will not work it may not be a successful one. So answering the sustainability benefit of the new project or the new product being prepared to use new technology since you are developing a new sustainable product and typically sustainable product should not be something very new or not the part of the core business line. So whatever the company is doing well whatever the firm is doing well they should apply sustainability to that and see how they develop a sustainable product and there should be a clear goal setting, prioritizing and also there should be a provision for reward and recognition for the employees and other stakeholders who are making this product as the successfully successful one. Then few things what the companies need to avoid in order to make a successful one is that first thing is to avoid the green wash and how to avoid green wash or typically what companies they do is that they use a low impact green gesture to look more sustainable in the long run it is not going to work and it is be considered as the green washing. Second also you will find that few of the company they concentrate image rather than delivers they spend more effort in creating an image of a sustainable product rather than look really delivering a sustainable product. Both involves the green wash typically this has to be avoided in order to get a successful product on the sustainable brand. Always acquisition will not help unless the changes are not happening to the product or whatever the development of the sustainable product whatever the changes needed that has to be done only acquiring a brand will not makes the existing company a green brand. And also need to assess does it provide benefit to all stakeholders when I mean all stakeholders by producing this green product or the producing the sustainable product whether the company gets the benefit whether consumer gets the satisfaction or whether the other stakeholder they get the share of their share of benefits. If it happens then only the sustainable product become the sustainable one and the last one is that the company should not be trying doing everything on their own. So, in some of the part of the product life cycle if they find that they are not having the capability or it can be better if it is being outsourced possibly they should outsource what they cannot do or what they do not have the capability in order to meet the successful sustainable product. So, in this session what we are trying to understand is that what is known as the sustainable product what the company they should do in order to introduce a sustainable product or what are the different paths to develop what are the success factors and what may be the possible failure factors. Thank you.


Welcome to the Tick-Mill Update. I'm Canada and you're the founder of the Investiva movement. Before we get started, please make sure to subscribe to the Tick-Mill YouTube channel and support us by liking and sharing this video with your friends. On Tuesday, we found out that home prices increased 3.8% in December. Markets bet is pushed to cut rates in coronavirus response and the U.S. consumer confidence for February comes in lower than expected. On Wednesday, the ECB President Lagarde speaks in Germany, but today I'm looking at the pound dollar pair, which has been moving in a downward channel and has broken below the daily HMQ at the beginning of February. But now, it may be in the process of forming a double bottom bullish reversal chart pattern at the 38% level of 1.2897. This could also turn out to be another range within the downward channel, which could create rain-trading opportunities for medium-term traders. Do you think the pound dollar pair will find a new solid direction soon? Head over to the comment section and let me know. Of course, trading in the financial markets involves a risk of loss and you should only trade the money that you can afford to lose. If you liked this video, give it a thumbs up and subscribe to the TechMill social media, including the YouTube channel. We'll get back to you with more updates tomorrow.


Okay, do we have everybody? I think we do. Is this starting time, Liz? Is this starting time? Welcome. I'm Jonathan. It's very nice to be here at the Dutch for Work Trouble together. I've missed this for the last couple of years and It's very good to be back. So today I'm going to talk for you on reactive programming. This is something I've been very excited over recent years. It's something that I've been bringing to the world of 12.6 over the last year or so, and there's a lot of very exciting stuff to talk about. Now, the topic really that I want to address today is the way we deal with asynchronous stuff, okay? What do we do about asynchronous stuff?  So we're talking about UI events, okay? We don't get to choose when the user clicks the button or types in the text box they will do it whenever they feel like. We're talking about things like web requests, okay? If we are server, the web request will arrive whenever the user makes the web request, and we don't really have much choice in the map. If we're making web requests ourselves, the response will come back, you know, whenever it feels like it. We have all kinds of other sources of asynchronous data, too.   I'd better, you know, notify you of this change. Things like timers, okay? It's something that ticks every second. Tick, talk, tick, talk, okay? We're going to do something about it. Unique signals. All of these are things that just happen. And dealing with them is kind of fun, especially when you start getting multiple sources of them. Because when you start getting multiple sources of asynchronous data, you get into all of these interesting synchronization problems. All of these problems where you want to make sure that you're not maybe doing two things at the same time. And you get really horrible things. Look at this little autocomplete thing here. Okay, this is what people apparently search for on Google. I'm a little concerned about the second one. But I'm glad more people want to do it than the third. Anyway, basically what can happen with these things, if you've implemented one of them, is, you know, the user types something.  And, you know, on the server it starts thinking about this. And then the user changes what they've typed.  And it turns out that the second one gets an answer really, really fast. Okay, maybe you hit a different server that's less loaded, or something like that. So when you get back to the results of this latest thing, the user typed. And you update the data that is there in the drop-down. And everything is really good. And then the first web server that you contact, it comes back, gives you more results. Okay? And what do you do? Well, if you have a program link carefully, what you're going to do is end up replacing the latest data in terms of, you know, what the user wants to see with the data that you just got back from this older request. And doing all of these sorts of things gets really kind of fun and tricky. Now, you might wonder, am I going to be talking about threads in all of this? And the answer is, well, sometimes they may be involved. Yes. If you kick a bit of work off on another thread to do it in the background, perhaps because you're building a training user interface and our users expect responsive applications now. Okay, they don't expect that they say, do this. And then the UI freezes up for like 10 seconds.  Okay, we don't know that. We should work off onto other threads. But that data comes back whenever it likes. And the user might be doing something else when it comes back. And we need to deal with all the synchronization issues there. So there's lots and lots of things to worry about when we start doing asynchronous programming. And generally the reaction traditionally to this is, okay, or maybe more like, er, er. So before we try and take this off, let's talk a little bit about something more familiar. And how we deal with the problems that it, er, it gives us some facts against. This is the one bit of Pearl 5 in my talk. It's er, it's a while loop. Reading a file, I hope it's correct. I don't write much of this anymore. But er, the thing to note about this is that it basically is going through the file line by line. At some point, you know, we will block, maybe we'll be waiting for the disk, okay, to slowly churn around and give us some more data much slower than the CPU. So the real pattern at the heart of this is what we call the iterator pattern. Okay, we, we have this data and we're working our way through it step by step by step. Line by line by line in the case of a line based file. Now, if we consider, er, lists of things, er, you know, if we're working with arrays, lists, we don't just have to do it all by writing loops and if statements and doing the normal imperative programming stuff. As we tend to get a little bit more, you know, skill with developers, we start reaching to, because let me hire all the tools, er, things like map. Okay, so in map, if you think about what map is doing, it's basically creating a new array, doing a reach loop, running your piece of code, okay, and er, then just, just showing the results of that, that code block into the new array. And that's what the map does. The graph is kind of similar apart from there's an if that. These things factor the flow control out of that code. And er, we, we kind of like that, er, I guess, and we, you know, we, we maybe go using them. Er, actually we like these a real lot in PeltSex and we've got a whole bunch more of them. If you walk me through this example, er, we're getting the gold members of, say, our frequent flyer program. And then er, what I'm doing is I'm graphing out those who have more than er, 10,000 points. And er, that startup point syntax there basically is er, creating us a little closure. Okay, so er, that's like a dollar underscore er, dot points. Er, but er, without writing a dollar underscore. And it actually realizes that it should drag that, er, greater and operate it into the, the whole thing as well.  Er, so anyway, er, even forgetting that it's, it's fairly clear, I think, what, er, what it's trying to achieve. Er, then we've got a whole bunch of entrants to add a little competition. We pick 10 of them. That's just grabbing 10 at random. Okay, there are winners. And then we just use math to grab the name of each of those, those winners. Er, now er, you know, that's, that's fairly nice. And you might say, well, how does this relate to the iterator pattern? And the answer is, well er, in full six, our lists are lazy. Meaning that you can actually have an array and work through it a piece of the time, or an element of the time. In fact, you can even have infinitely long lists. For example, that is an infinite list of the Fibonacci numbers. Er, now of course er, we don't have enough memory to store infinite lists.  Er, but you'll notice there that I've actually used the bind operator. Okay, which is your hint that something a little bit unusual is going on. Er, now, one of the big cultures when you start putting laziness into programming languages is people don't expect things to go executing later than they kind of intuitively think they will. Er, so, for that reason, we've typically kept assignments as being what we call mostly eager.  Er, you know, we don't expect code problems to be sort of Haskell level purity or something. Er, but er, when we do want that, we go and stick our column in there and what that means is I just want to talk about this list and then I can go and grab it. Okay, and I'm not actually doing any work here. In this graph, what I'm saying is I would like to set up a thingy. Now, if I ask it for values, we'll grab values from Fibs, which is a sequence. Okay, the numbers 1, 1, 1 plus 1 is, you know, 2, er, 2 plus 1 is 3, 3 plus, er, sorry, 2 plus 3 is 5, okay, and so on. Er, and er, we're just grabbing those out there and we're just indexing into it, we're getting numbers up to 10. That's actually syntax for a range, okay, 0, 0.9. And er, you're kind of looking at this and you're saying, well, okay, that's kind of nice because it means that er, we can talk about it from the long sequences of things but just, you know, consider the ones we care about.  I never use the Fibonacci numbers in my programs. Er, why do I care about this? Okay, well, that's a really good question. The reason you might care about this is because we can do this with files. So you can actually write a for loop, okay, over a file handle, grabbing in its lines. Er, you can even grab it like this and it's not going to pull the whole thing into memory. It's just going to let us step a line at a time, filter out the wants and start with comments, okay, and put each one into dollar line. You'll see that the variable goes over here. In Pulsex, we've got rid of some of the friends, okay, but er, what we're doing there is we're just going through the lines of the file. And er, that's kind of nice. That's a much more practical use of laziness. And er, it means we can, we can now actually just go and start grabbing, er, you know, however long lines that we get from files without having to care if it's a really big file, we can just work through it a bit at a time. So, one of the things that you note about all of these things is that it's de-facto outflow control. Okay, they sort of take this, this sort of looping this, er, conditional stuff and they drag it out of our code and they let us just write it once. And of course some mapping, Greg, it's not a lot of code, but it's like pick where you want to pick ten things at random, but without duplicates, er, there's some sort of harder math in there. But then we get things like unique, unique filters out duplicates. Inside of unique, by the way, the ads is just specifying the, er, the thing I want to make unique in all of them. So here I've got a bunch of, say, search results from Google and Bing and er, I want to just make sure I get unique ones. I want to toss the overlaps, okay? So if they both gave the same URL back to something, we'll er, we'll just have it in the results once. But er, the thing about this is that inside of unique, there's actually a hash and er, it's going and it's storing the, you know, the things that we already saw and er, that one is actually dragging not only flow control out of that code, but also state. So we don't have to think about all of that, you know, those variables. I mean, we, we talk a lot about, you know, global variables are bad, why are they bad, because they can change everywhere. Er, so then we try and put things into classes and make them attributes. Er, but of course we don't make things an attribute if a local will do, we don't declare a local start of a subroutine if it's just needed in one if block. We do all of these things because actually state makes programs harder to read. Er, when we start using things like say unique where we can talk about oh, I want a unique list of these things, we get to get the state and er, you know, hide it away and er, not have to care about it quite so much. Now, one of the things that, you know, I kind of got thinking about all of this is er, what if we could do this for er, react for er, you know, asynchronous data, okay? All of the er, the stuff that we've talked about so far is synchronous. So when I had the list of the Fibonacci numbers, you know, I'm sort of down on me and he's like, give me another Fibonacci, okay? And er, slowly my program gives me them. And it's the same with the file, I mean, they're begging the file system for more and more data and lines of the file off disk.  Okay, I'm blocking. And er, databases are like this.  And that's the very nature of synchronous programming and synchronous data. Yeah, you know, we ask for it, we wait for it, we get it. But asynchronous data is different. It's this data that can just come and occur at any time. And one of the things that we might wonder is er, you know, is there a way that we can perhaps, you know, take some of these ideas and er, you know, factor out the complexity. So we can do asynchronous programming, but just like very synchronous programming of lists of data, we use things like grep and map and unique to, to not have to talk about the exact details of what we want. You know, what if I could do a grep on a stream of data and it's just being thrown at me? Okay, what if I could take a bunch of mouse clicks and just grep out the left clicks, okay? It's kind of an intriguing idea. Because if we can do that then, you know, we can drag the complexity out of things. We can hopefully bring together different sources of asynchronous data. I mean, we know there's things we can do with a list to bring them together. If I have two lists, I can zip them. There I can make one result list, which contains hair-wise combinations of the other two. So if I have two sets of numbers in two lists, I can, you know, maybe take them and add each number hair-wise together and get a single result list out. That's a zip operation. So, you know, there's lots of ways of doing that with synchronous lists. Maybe we can do that with asynchronous ones too. That would be really nice. And, you know, in theory, if we can tackle all of these things, we might even be able to get to the point where things that feel complex, like taking a piece of work, getting it done on another thread, and updating the user interface in a safe way with the result, that sort of thing might actually be kind of made easy.  But the thing is, now, how can we get that? Well, some years ago, this joke's only funny if you know supplier and category theory. That's a very select audience, isn't it? Yeah. Anyway, category theory is this really strange bit of mathematics. I actually got a friend who's reading a lot of category theory at the moment, and it's kind of a thin line, but no matter if he's still sane or not, I'm never quite sure.  But anyway, this apparently can give some quite nice insights. And one of the things it's really good at is revealing relationships between things that we maybe hadn't realized before.  And observers, what are observers? Well, the observer pattern is when you go to something like, say, a text box, and you say, here's a piece of code, call it back whenever the text in the text box changes. Okay, whenever we change that bit of text in the text box, we get a notification, okay? So, the thing that we're observing, we call it observable, just like the thing you can iterate, we call it this rule. And, you know, the thing we get as an iterator, well, the thing that gets called back as an observer, it's observing the changes to the text box. And if you think about it, that's asynchronous, okay? The observer doesn't have any choice about when he gets caught. It's all about the text box saying, oh, hey, I got some text. Ooh, I'll better, you know, call my observers and tell them. It's all asynchronous. And what they realize is that these two are, they call them categorical jewels. Now, without getting into what that means, because they'd really rather not, the big result that comes out of this is that anything you can sensibly define in terms of iterators, you can also sensibly define in terms of observables. That means that deep down in the map, there's something telling us that, yes, we can do map on a list, but we can also do map on an observable. We can do graph, we can do unique, we can do a squish, we can do all these different things. That's kind of exciting, because what it unveiled was that we actually can deal with asynchronous data, okay, in a very kind of familiar way. We can use a lot of the same mechanisms that we used to for dealing with synchronous data. They call this reactive programming, and synchronous programming got recoined as interactive programming, okay. But that one kind of got ignored, so reactive programming is the term that we pretty much always use to describe this kind of thing, okay. It's essentially programming where stuff happens and other things react to it as a result. So, let's actually get into the practicalities of doing this. So in PEL6, we have a type called supply. A supply is something that you can observe. And it's actually you tap the supply, okay. It's a little like a beer barrel. And when you want to beer, you go and, you know, open the tap and the nice stuff flows out, okay. And later, of course, your class might be full, so then you hopefully close the tap. And it kind of works in exactly the same way here. So here I have a supply, okay. And this actually is the interval supply. It's something that gives me a tick every time interval, every second in this case. Now, what I can do with that is I can take this little tick and I can just tap it and I can just say, oh, we started a couple of seconds ago. And actually what that's going to do is it's just going to start at 0, 1, 2, 3, et cetera, once per second. The thing about this is that because it's just a set of observables, we can map it. And the thing to realize about this map is that what we're actually doing is we're mapping the future, okay. We're talking about the map on things that haven't happened yet. And what happens is the flow control goes the opposite direction. This is very typical of Joules. The way Joules work is you basically separate, sorry, swap around your inputs and your outputs, okay. So what happens here is that every time you get a tick, then the map is run and the result of the map is then pushed on downwards, in this case into this save, okay, I just grabbed the save function there. And what happens is we get a zero in, we get tick, talk, tick, talk, et cetera. So, well, okay, we map it. So, fine, this looks kind of interesting.  Does it involve threads in any way? The answer is that yes, that one does. When you get that callback, that little save there, okay, this is actually all running up on a thread pool. So, yeah, we have real threads.  This, on the other hand, does not. There's sort of a principle of minimum concurrency. So here, I create a supply. You don't have to obtain one from something like Interball or one of the many, many other factories for them. You can actually just create one. And you can just start spewing data out on it. You call more, say, here's another bit of data, here's another bit of data, okay. And there's also done and quit, which are for the science now. But what we can do is we can just tap that. And as many things can tap it as they want. And what will happen is every time I push a, in this case, a Chime, a Duvel, down to this, okay, it will just run that little block there, okay. Now, this doesn't actually involve any threading at all. It doesn't just go and magically introduce it just because I started using a supply. Okay, so this is not necessarily about threading. And there's not going to be threads introduced for you just magically. You actually have to use something that, for example, involves time where we actually, you know, you're going to go and get on with stuff and then we're going to have these ticks coming through to actually start getting into having threads. Okay, so that was just some, you know, introduction to what we can do. But what I want to do for the rest of the session is we're going to be building two, sort of slightly more real world things using React's program. Now, who uses Git? Yes, Git is awesome. I love Git. Okay, I actually get to teach Git as well. It's a fun job. The nice thing about teaching Git, by the way, is it's got one really simple data structure at the heart of it. You can explain everything in terms of that. That's always a good system design. So, one of the things that I like about Git is that you basically can't lose stuff. You know, once you give something to it, it's essentially immutable. You might lose a reference to it, but then you can go and recover it somehow later on. And it's very hard to actually lose your stuff. However, that only applies once you've talked Git about your stuff, once you've committed your stuff. What happens in the in-between time? Are I changed stuff and, you know, maybe I, you know, I do something I regret. Say I do a change and then I somehow wipe it out and I can't get it back. It might almost be nice just to have something that, you know, between commits just makes me a little backup. So, I built one. Let me just go and demo it to you. So, what I'll do, I'm actually in a Git repository here. And when I just pull this thing up, it tells me the way that I can use it. What I'll do is I'll just tell it to watch. And that tells it that I wanted to watch the current directory. Now, what I'll then do is I'll just go and we'll actually create a file. This is going to be extremely creative. Oops. There we go. Okay. And if I just go and look over here, it tells me that it's back to bar. Actually, I did it twice because I touched the file the first time. And then again, what other files do I got in here? I think I've got an XP6. Let's just put something into that as well. Okay. And echo. Echo. I didn't do enough coffee today, apparently. So, what I can then say is intercommit list. And what it will tell me is that there's these four things that are recorded and I can then intercommit show, say, two. Okay. And it will say, oh, that was food.  Great. What we should notice over here is that it noticed and the head moved, okay, I committed, so it's gone and cleared away my backups. So, that seems kind of nice. So, how do we build it? Modern operating systems provide us with what we call IO notifications. That is, they tell us when something changed. If you think about it, this isn't a synchronous source of data. And we actually exposed this in Peltex. That's an IO notification class. You can say, watch path. If you give it a file, it'll just tell you when that file changes. If you give it a directory, it will tell you about directories in that file, files in that directory that change. Okay. So, what I can do is I can, to actually deal with detecting commits, if you know a little bit about git, the head moves, you update the ref log, okay, which is in git logs head. So, what I'm going to do is just tap, okay, the file system notifications, and we're going to say, oh, I commit. Okay. And what that will do is every time I do a git commit now, I'm actually moving my head around, it will come and just say this message. So, what do I want to do now? Well, what I can actually do is just tap that, okay, and instead of saying a message, what I'll do is I'll simply get the directory listing, and I'm using this .intercommit directory to keep my backups. And all I'm going to do in .intercommit is I'm just going to loop over the files and get them linked. Okay. And that just lets me get rid of those. So, that's how I can just toss the stuff, and I'm doing it just as I get notified. So, what about the files themselves? Well, let me just talk a little more about what this thing does. When I actually watch a path, I don't just get a list of file names. I actually get objects telling me the nature of the change, so I can see that here the path was awesome.p6, the event was a file change event. You can actually get renamed ones as well and things like that. So, what's going on in here is we're able to tap them and say, what we want to do is a little more interesting than that. So, one of the problems that you get into if you actually start doing this is that operating systems really suck at this.  On Windows, if I change a file once, I get two notifications. Why? Well, because some deep reason that I shouldn't have to care about, that's how they implemented it. These notifications arrive within 0.05 seconds of each other. It's really annoying. They just show up together. Now, of course, this is silly because I don't want to make two backups of the file just because the operating system thought that it should tell me twice about the same thing. How do we deal with this? Well, we can actually unique them. We saw this function on lists earlier. We can unique them by path. So, there's nothing new. Now, it turns out that because asynchronous things often have a notion of time involved, there's various extra options that we've put onto some of these various methods when you're dealing with a supply rather than a list. One of the ones that we have put on unique is actually expires. What expires will do is that it will basically give you a unique one once per that time unit, in this case, one second. So, if I get, say, I have two files and it's called foo and bar because we really imagined. So, I change foo and bar. I'm in my editor and I save all, so I save the two of them. So, they both get written out to disk.  But what will happen is the first foo will come in, we'll get into here, and what it will do is it will look at the path and it will say, oh, we haven't seen this in the last second. Okay, it spits it out. The second notification foo comes in and says, oh, we just saw that within the last second. No, I won't bother spitting that out again. Okay, but if we were to save it again, like five seconds later, it would say, oh, I forgot about the fact I already saw foo. So, I'll let it through. What you'll kind of note about that is that that's a not quite trivial thing to do. Now, there's something that makes this even less trivial, which is not necessarily very apparent, which is that IO notifications get shoved onto the thread pool. And what that means is that there's a whole bunch of threads that are happy to react to these different notifications. So, that's kind of nice in that we can make use of our shiny multi-core CPUs, which are getting more caused by the air. But it also means that there's a real risk that two notifications come in, two different threads are processing them, and what happens to the hash inside of here? It's not just that we manage to factor out state and flow control. In all of these things, very often, what we're also factoring out is synchronization, okay, and thread safety. We're taking it out of your code and basically solving a whole bunch of these things inside of these methods. Let's take a look at dealing with the actual backups. How do we do this? Well, for the backups, what we're going to do is we're going to watch the path. We've got a little bit more work to do. We're going to do the unique trick again, just to get rid of any due notifications. And then what I'm going to do is I'm actually just going to map the object and I'm just going to map out the path. That's the only piece that I care about. So I map out the path. Now I'm going to grab to make sure that they don't back up the backup directory because that would be really silly. Then I tap it, okay, and in here I've got a state variable. We just increment it. There's a very nice function called spurt, which is an inverse slur. Okay, it just shoves something out to a file. Spurt can, it was the least disgusting word we could find. Like spew is worse, spit is even worse. Spurt mostly works unless you, well, yeah, let's not go there. Anyway, the nice thing about spurting is that you can append, okay? So when you do that, basically it takes that file and just shows whatever you give it at the end of it. So that's perfect for us. We can write the change ID and the file name and we just do the copy of the file. Now if you're looking at this category you might actually come up with one concern based on what they told you, which is that multiple threads can basically be dealing with two of these notifications at once. And sometimes that's not a problem. This time it is because I have this little state variable here. I'm appending to this file. I don't want to get this all screwed up. So what I'm actually going to do is notice that I have this state. And when you're doing side effecting things and dot tack is not what you want. If you're actually going to do something where there's data involved that you're going to be competing over the potential of a friend and responding to the same kind of event, use act. This actually makes sure to do them one after the other. The act is actually meant to mind you of actor as in the actor pattern which might help you if you know what it is and won't help you at all if you don't. But basically what's going on here is it's making sure that we're only in this piece of code once at a time. So we back up the files one after the other and that solves that problem. So that's how we get to my back up program. Factoring wise all I did is I just actually created myself a class and put the two things into a pair of private methods. I also decided I wanted a log of what's going on. You saw that log. Let me just pull it up again. Okay, you saw that there. And that log is actually also a supply. What I've got in the main is an entry point of my program. Here's the main sub. This is how we tell it. This is how we tell it. We want to respond to watch being passed as an argument to the program. It's just a sanity check we're in a git directory. We make that directory. That's all boring. But here what I do is I make my new intercommit watcher and then I just take the log and I tap it. I pass say there and then the main thread is just going to sleep. It's going to be happening over in the threads. That's basically it. The whole program if we just go that's not the right file. It's doing dominance calculations. This is the class. You can see there's the overwatch. Down here there's the one I just showed you. There's actually these two other candidates for list and show. What they are telling the thing is that we only want to react to the list being passed. I did intercommit list, intercommit show and you can actually you might say where is that that nice usage message when I type that. The answer is it's generated automatically based on the main sub-routines that I wrote. There's just a side bit of shiny for you. That wasn't too bad but it was a bit of a compound because we only had one source of asynchronous data. We only had file notifications and I told you that we could deal with those in a nice way with this and we kind of did but I want to just step it up a bit for this final example and talk to you about what happens when we have some kind of asynchronous data and what I actually have in this case I'm going to have time and I'm actually going to do background computation on a fret. I have the idea of making this really silly application. It's a code golfer system. What happens is you type your code in here and then this little character count as you type and the more characters it tells you how long your golf is so you're trying to get the code as short as possible and that's code golfing trying to solve the problem in the few as possible characters. Of course I want to know how much time I've wasted in my life golfing this code so here is an relaxing number of seconds which I want to count every second. Now as I type this in suppose it takes like a second to actually figure the thing out. I don't want my user interface to freeze and I'm actually going to run this piece of code on a background fret and then just pop the results into this text box here. So that's quite a lot of things going on. There's three different sources of asynchronous data there's a user typing the stuff here there's these ticks from the timer and then we're going to have to deal with a fret asynchronously telling as it got done with the work we asked it to do. Now what I wanted to show you is I had a small problem and I realized on the way here that no one actually have done a GTK library in Palsox yet we got SDL and all of those so I had like an eight hour trade journey to get here so I actually wrote a GTK symbol on the way so it doesn't have all the control to it it does this one. So here is how we set the user interface up. I like simple APIs so there's not too much going on in here all I do is I make a new app that's the title of it and all I'm going to do is the way GTK works is that it basically uses these boxing things to lay things out that's a vertical box which means shove things one below the other so what I want to have is my source code tech box and then I want to have a label saying the number of characters I want to have a label for the amount of time that has elapsed and I want to have a text box where I will show the results of executing the code. So I'm just putting each of those into a variable because that gives me a nice way to refer to it later Here is how we deal with taking changes to the text box and updating that label. Now all events in this module I've written are exposed to supplies. Okay that means you can just tap the change event supply you can then set the text of that Charles label to say characters and we just grab the number of characters that are in the text box okay it's not bad so let's step it up a bit what about the elapsed time here we have to be careful and the reason we have to be careful is that here is my interval ticking away and the problem I've got with it of course is that this is running on the thread pool and if you update user interfaces from thread pools things get really really unhappy and then your application explodes very happy so what I basically have here is a little thing called a GTK simple scheduler. A scheduler is something where you give it a bit of work and it figures out somewhere to execute it the GTK simple scheduler basically takes a piece of work and hooks into the event loop of GTK and makes sure you run it on the user interface thread so the update is thread safe and it doesn't conflict with other user interface operations so the way we use that is we just take event source, intervals here we say schedule it on the GTK simple scheduler that basically takes this flow of seconds shoves them over onto the user interface thread and makes this update work out okay that's two pieces of functionality down, long to go so of course the stupid way to do it is whenever the text box changes okay we eval the code that sucks in two ways the first is the user is typing away and we don't want to eval the code for every single keystroke we want them just to hesitate for a moment and then we'll do it. The second thing is we don't want to do this on the UI thread because it will freeze the user interface so the first problem is solved using unchange unchange basically waits for the data to be stable for a time period then passes it along so if I keep typing, keep typing stop for a second on there and then it says okay now I'll pass it along so that lets me get a stable value okay another nice tricky problem that backs it away into one of these maps what about getting it done on a thread threads are dangerous and I mean you know how do we deal with this and you can sort of see the problem coming there's not just that we need to get the user interface update on that thread there's also the problem that what if the user types something we start evaluating it and then they type something else the second thing runs quicker as the problem we described earlier auto complete so we call start this is the way that we get a bit of work shoved off onto the thread point so we eval the code but this does something clever it gives me back not just a supply but a supply of other supplies now that's a bit of a headache when you first see it but let me show you why this is really nice we have something called migrate migrate moves its way between a set of different supplies so whenever a new one arrives it says this is my latest source of events it ignores all the previous ones and it therefore solves the problem so we're taking the text box we're saying let it even change for a second and start evaluating the code on a different thread migrate between the various different evaluations so we only ever care about the latest one schedule updating things on the UI, thread and doing a bit does it actually kill the older processes? they're not processes though they're threads so if you have a thread and you type sleep can you cover they're here to your problem what if it's holding a mutex things like that yeah exactly that's tricky we can talk about that after the talk because I'm out of time already I suspect but anyway in 29 lines of code we've handled UI events we've worked with time we've handled race conditions full threads that's the busy 29 lines of code it actually fits on one screen full on github this I don't really have time for but I just want to say in one word what two slides here have I didn't write a single line of C code all of this is done with native code including callbacks this is how I call the GTK signal thing so when it gets an event I toss it into a supply you can go and look at the code if you want to see more of that so let me wrap this up oh it says one minute oh wow that was three minutes ago oh wow go me so I handled asynchronous sleep so asynchronous things have traditionally been hard to deal with and I think that now reactive programming gives us a paradigm where we can deal with different sources of reactive data in a fairly nice way we can compose them together we can get a lot of complexity especially of timing and synchronization issues that kind of don't go away we can actually act them out of everyday users code get them into a bunch of these nice methods we have more than I have time to show you but really I the sort of philosophy here is asynchronous things easy you know getting a bit of stuff don't have a background thread and getting it back on the UI should not be too hard here I think we've made that a good bit easier the code is over there if you want to come and ask me afterwards that is how to find me or I'm around all day I would love to do questions but I'm out of time so find me at lunch or break or something like that thank you very very much


The President of the United States. Please be seated. Secretary Dole and Vice Admiral Irwin, Charjaye Sokolov, American and Soviet citizens, good morning and welcome to the White House. And I want to make my welcome especially warm because for so many of you coming here today was, well, let's just say it was unexpected to say the least. The first distress signal reached the Coast Guard Station at Cape May, New Jersey at 8.20 this past Saturday morning. Just 15 minutes later, the Coast Guard had established radio contact with the stricken vessel, a Soviet freighter, and fixed her position at a point some 200 miles east of Cape May. The first distress signal reached the Coast Guard Station at Cape May, New Jersey at 8.20 this past Saturday morning. Just 15 minutes later, the Coast Guard Station had established radio contact with the stricken vessel, a Soviet freighter, and fixed her position at a point some 200 miles east of Cape May. The first distress signal reached the Coast Guard Station at Cape May, New Jersey at 8.20 this past Saturday morning. The first distress signal reached the Coast Guard Station at Cape May, New Jersey at 8.20 this past Saturday morning. The first distress signal reached the Coast Guard Station at Cape May, New Jersey at 8.20 this past Saturday morning. And what took place next represents one of the most dramatic rescue missions in the history of the Coast Guard. 3 Coast Guard helicopters left Cape Cod to rendezvous with two C-130s already flying above the troubled vessel. The first chopper piloted by Lieutenant Keith Comer reached the ship at 11.19 am. I'll get it right. He found her listing 26 degrees to port in seas that were running 20 feet, with waves that would soon crash over the pilot house, the highest point of the ship. Lieutenant Comer's helicopter was being blasted by the C-130. He found her listing 26 degrees to port in seas that were running 20 feet, with waves that would soon crash over the pilot house, the highest point of the ship. Lieutenant Comer's helicopter was being blasted by rain and sleet and gale force winds that were gusting up to 55 knots. But Lieutenant Comer managed to hover steadily some 75 feet above the ship. He found her listing 26 degrees to port in seas that were running 20 feet, with waves that would soon crash over the pilot house, the highest point of the ship. Lieutenant Comer's helicopter was being blasted by the rain and sleet and gale force winds that were gusting up to 55 knots per hour. But Lieutenant Comer managed to hover steadily some 75 feet above the ship. His crew rescued 15 people before heading back to shore. Be very careful. He and his crew sent a basket to the deck that was rising up and down. The woman was the first one to enter this basket, and the other one. Only Lieutenant Comer and his crew rescued 15 people and headed to the shore with them. The third helicopter, piloted by Lieutenant Commander Gary Poe, plucked up the last six crew members and carried them to safety. The only injury in all of this, a cut finger. Coast Guard officials said afterwards that it was hard to overstate the skill and bravery that the rescue involved. I think we all know what they mean. Screaming winds, the rain, the sleet, the pitching seas, transferring people from a moving ship to moving helicopters, pilots contending with the helicopter's fuel range. One Coast Guard spokesman said with admirable understatement that, quote, in view of the fuel situation, they had to do it pretty rapidly. This mission represents just one more example of cooperation between the United States and the Soviet Union in search and rescue missions. Indeed, the Coast Guard and the Soviet merchant marines are scheduled to hold further talks in Moscow early next month. But in the end, the story of this rescue is above all the story of human beings, of men and women in desperate danger and the men and women who saved their lives. And if I could just interject something here, in the past I've often talked about what would happen if ordinary Americans and people from the Soviet Union could get together, get together as human beings, as men and women who breathe the same air share the same concerns about making life better for themselves and their children. And here we have a case where just that happened, where pilots from Mission Viejo, California, Cincinnati, Ohio and Prince Edward's Island, Canada reached out to sailors from the United States and they were taken to the United States. They were taken to the United States and they were taken to the United States and they were taken to the United States. And here we have a case where just that happened, where pilots from Mission Viejo, California, Cincinnati, Ohio and Prince Edward's Island, Canada reached out to sailors from Leningrad, Novgorod and Yaroslavl. I hope and pray that no matter how stormy international affairs, the leaders of the world can look at what happened when these flyers and sailors are between these flyers and sailors and be duly inspired. After all, this good planet whirling through space isn't so very different from a ship upon the sea. We must reach out to each other in good will, for we have no other alternative. And so to Captain Karazhov and his fine crew rescued from the Soviet vessel, welcome again to our country and we thank God for your safety. As you prepare to return home, I'm going to be very brave here, as just leave of a good life for the rest of the world. And to all the men and women of the United States Coastal Army, as you prepare to return home, I'm going to be very brave here, as just leave of a good life for the rest of the world. And to all the men and women of the United States Coast Guard, who made this rescue possible as your commander in chief, it's my high honored to commend you on a job well done. And to all the men and women of the United States Coast Guard, who made this rescue possible as your commander in chief, it's my high honored to commend you on a job well done. And to all the men and women of the United States Coast Guard, who made this rescue possible as your commander in chief, it's my high honored to commend you on a job well done. I would like to take this opportunity, Mr. President, to express to you personally, on behalf of the Soviet government, and of course, on behalf of the Soviet sailors present here at the ceremony, our gratitude for the successful rescue operation. Our special thanks go naturally to the United States Coast Guard, to all those who were directly involved in this courageous effort. It was conducted very expeditiously and efficiently. We also highly value the care and the friendly treatment according to our crew. Let me recall in this connection that the sailors of our two countries have a long and outstanding record of helping each other on the high seas. It underscores a broader point. When our two nations, their people, act in cooperation in things big and small, it brings the best out of them, helps worthwhile and noble things happen. Let it serve as an inspiration for our joint efforts in other areas as well. Mr. President, we appreciate the personal attention you have given to these men and women, American and Soviet, who, though coming from different lands, are united in this triumph of courage over misfortune. Again, thank you very much. On behalf of my commanding officer and the officers and crew of Coast Guard Air Station Cape Cod, may I present you with a model of our helicopter. Yes, thanks very much. Now it will be my honor to present the medals.


Good evening everyone and welcome. This is Melissa Armo with the stockswish.com and I'm reviewing IBM. This is actually a live got live well it's closed it's 801 but if you go back and look tonight about a few minutes ago anyway so the reality is that I looked at the gap I was watching the gap I knew IBM had our names tonight it could be gap up it could gap down guess what a gap down and as you know I love shorts this actually rates 23 points so the reality is that IBM is a good gap down a short tomorrow now where do you take it that's always a situation when I look at the time of the day it's 802 when I look at the time the market opens at 930 it's so far away I have absolutely no idea where this stock is tomorrow morning pre-market that will determine a lot of information it could rally before the open it might drop before the open so the benefit of being in the live training with me and having taken the golden gap class is you know what to do with it on the live day because that's all that matters that's how you make money but I'm telling you right now at 803 if you were trading the stock if you were in the stock if you wanted to do something with IBM it's a short but the problem is between now and tomorrow is so far away it's like 100,000 miles away it's it's farther than France if you were in New York it's like it's like it's almost going to like Malaysia because by the time you get to Malaysia the market will open it's 12 hours or more it's actually more so I have no idea where the stock opens in the morning but I will tell you if it opens tomorrow at exactly 142 short it that's not gonna happen so the reality is you really have to learn my method and trade to take it right but I'm telling you right now I rated the gap tonight which I really do but I was trying to find something good I really wanted to find something good I'd like to get excited for the morning because guess what it's earnings season and it's a time to make a lot of money now let's just pretend in an ideal world this stock opens and gaps down and opens at 142 which it's just really not going to but let's just see 130 that's great wow so I'm just saying I mean I'm putting this out there I have no idea where this opens tomorrow it could rally all the way up to 150 but I'm saying if IBM opens tomorrow morning at 142 on the correct setup the target's 130 that's really insane actually but the thing is I just don't know where it opens it's almost gonna have to break 140 before the open to actually drop and drop down to 132 if it doesn't it could rally all the way up to 145 146 and then the targets 140 so we'll see what it does tomorrow morning but either way IBM is a short it's a short it's a short tomorrow morning no matter what it does unless it opens and reverse wishes how would you know what a reverse wishes you'd have to learn it in the golden gap and the amazing thing is I take the information from the pre-market and the post-market I rate the gap and then I take everything I teach you on the live trading day so that you know what to do because it's a combination it's not just like one thing or two things or three things it's a combination of all the information it's the gap and the poster pre-market and then you rate the gap and then you figure out the targets and the resistance and the support and then you go into the gap in the morning you watch in the live trading day and you take the entry and you get the target and you time it with the right time of the day and everything else this is Melissa with the stocks wish calm have a great night everyone good luck tomorrow and IBM I have no idea if I'm doing this I might do something better you never know how would you know you'd be in the live trading room with me and those are the people the very very special people everyone that's actually in the live trading room with me in the morning are very special people because they get the live calls with me and I make it so easy for them good luck everyone and have a great night if you're interested in the golden gap course email me and Melissa at the stocks wish calm and have great meeting


Because life, success, happiness, joy, peace, all of those things, they're not difficult. We make them difficult. Today, we're going to talk about the seven tips to be more disciplined.  So let's talk about discipline before we dive into it. The easiest way to think of it, when you look at discipline, what exactly is discipline? Because what discipline means to me might be different than what it means to you. I guess it could be a little bit depending on who the person is. You can see discipline as a bad connotation, right? Like if a child is bad, you discipline that child. That's a bad connotation for discipline. But for me, I don't see it as a bad connotation. I see it as a prerequisite to get the life that I want. Simply put, the way that I see it is being able to take action even when you don't feel like it. That's it. Just take action regardless of how you feel. That's it. There's nothing else to it.  It's feeling that resistance of, I don't want to do this, but then leaning into it and doing it anyways. Doing it regardless of how you feel. It's following what the mind tells it to do versus the body. Because sometimes the body is like, well, I'm exhausted. The mind knows what you need to do to get stuff done. But there's a disconnect somewhere in there. There's a disconnect of the body doesn't want to do it or you're thinking the wrong thoughts. So it's about connecting to what needs to be done.  So let's go through the seven tips right now. So number one, this is super important one that I tell a lot of people I've coached over the years is if you're unmotivated, if you're not taking action, if you're not disciplined, you need to start focusing on the opportunity and not the obligation. So what does that mean? You need to stop looking at the obligation that's in front of you. You need to start looking at the opportunity. So a good example would be, let's say that you want to make $100,000 a year for your first time in sales. And the reason why you want to make $100,000 for the year is because you want to buy your family a home so that your children can have a backyard and be in a good part of town and get a great education and get out of the neighborhood that you're in. That's a beautiful thing to be able to think of that. That's the opportunity. The obligation is that you've got to sit down to make 50 cold calls today, maybe. So instead of looking at the obligation of, damn it, I've got to sit down. I've got to make 50 phone calls. I don't want to make 50 phone calls. You look at it and go, when I make these 50 phone calls, it'll get me one step closer to my children having a safe environment that they can grow up in with a better education. If you think about that, the opportunity and not the obligation, the 50 phone calls, don't you think that you'd be more motivated to make those 50 phone calls? So if you're not disciplined to take the action that you need to to create the life that you need to, it's probably because you're focusing on the obligation that's in front of you versus the opportunity that you get. For me, I'll be honest with you. I've said this many times. When I sit down to plan episodes for this podcast, it's not my favorite thing to do in the world. I love shooting the podcast. I love recording them. I love all the other aspects of it. But to sit down and plan is really not my jam. I'm not really keen on it. But I have to force myself to do it.  But I have to remind myself as to why I'm doing this. Right, if I remind myself that there's hundreds of thousands of people that listen to podcasts, that there's gonna be people whose lives are going to change and remind myself as to why I'm doing this. Maybe there's someone out there that's really depressed and if they listen to this episode, it's gonna turn their life around or at least they're gonna feel better. If I can make somebody feel better, that makes it worth it. Now, I'm looking at that which is the opportunity versus the obligation of I gotta sit down and plan. Great, beautiful. So remind yourself why you're doing what you're doing is the biggest key behind it. That is the opportunity. Why are you doing it? What are you doing it for? What is the life that you can create? How would your life change? How do other people's lives change? Find and focus on the opportunity to stop focusing on the obligations. That's number one. Number two is to start mastering the small things. Figure out a way to get really good at the small things. If you've been a listener of my podcast for some time, you know I'm a really big believer in the small things and just doing the small things right because success in life are not about some big massive cataclysmic event that make you successful or change your life completely most of the time.  Success is usually not sexy.  The best athletes in the world, they're not the ones that have, if you look at the best basketball players, they're not the one with the best crossovers or the best anything. What it is is that the people who master the fundamentals of being a basketball player. If you look at a football player, if you look at a wide receiver, they've mastered the routes that they're running. They've mastered stopping on a dime and turning to the right. They've mastered every single aspect of it.  It's not even about all the other things. It's about how can I know that I am a football player? I catch these balls if I'm a wide receiver. I need to make sure that it's so built into my programming, into my hands and the muscles in my hands that no matter what happens, my hands are gonna catch the ball as I fly at it. It's about mastering the fundamentals and everything that you do. Success is doing the small things. Day in, day out, whether you want to or not. So what are the small things, if you think about that, what are the small things required for you to get what you want in life? Let's figure it out. That's number two, master the small things. Number three is to design your environment. I'll give you a great example. If you're trying to lose weight, have you designed your environment to help you lose weight? For me, I'll give you a great example. My body loves sugar.  I'll give you a perfect example last night. We were driving to go to dinner last night. I was in Dean's car and he's got kids. So he had, on the right-hand side, I was in the passenger seat. I reached down and he had some of those welch's fruit chews, whatever those are. I had one of them because I was like, I haven't had one of these since I was a kid.  I can't have one because my brain's like, we gotta go.  I know that. So I don't buy Skittles. I don't buy candy. If you come into my house, my environment is built around not allowing myself to eat candy because I know I'll finish the entire bag. So what do you do that you need to design your environment for?   So what do you need to do? You need to design your environment. What can you do?  Maybe you spend too much time on the couch.  You're not gonna be hanging out on your couch if there's no cushions, right? What are you gonna do? Lay on the floor? Probably not. So then you try to go in and you're like, well, this doesn't look comfortable. You might as well go do what needs to be done.  How can you design your environment? Put the phone in another room and don't allow yourself to use it for an hour. Do you have a roommate? Do you have a spouse? Do you have someone that you live with? Give them your phone and say, hey, don't give it. You're not allowed to give me this phone for two hours. Even if I come and ask for it, say it's an emergency, don't let me get it. That's designing your environment. Andrew Huberman, who is the neurobiologist I had about a month ago on the podcast, says he knows that he's addicted to his phone. So sometimes he's literally taken his phone and thrown it on top of the roof because you have to literally go and get a ladder. You gotta get on top of the roof.   I'm gonna get done what I need to. Let's give you another example. Do you wanna wake up and go for a run? Put your running shoes next to your sink.   How can you design your environment to support the life that you're trying to create? Think about that. What do you need to do to design your environment to make it better? Do you wanna meditate? What do you need to do to design your environment to meditate, to make meditation easier? Do you wanna floss your teeth? What do you need to do to design your environment to floss your teeth? Design your environment to support you taking action towards whatever it is that you're trying to do in life. So that's number three. Tip number four to make sure that you have more discipline is to make your body move. This one you've heard me talk about if you've heard other episodes, your body will respond to whatever you make it do.   So what do you need to do to make your body move so that it starts creating the chemicals that it needs to? I'll give you a perfect example for me. I almost never wanna work out. There's really most of the time I never want to work out. I'm like, dammit, I got so much other stuff I could do. I've got a business, I've got employees, I've got so many other things. In reality, I'm just making up excuses to why I shouldn't work out. So then I have to force myself to work out. So before working out, I never feel like I want to work out. I'm never like, yay, today's leg day. Never, I don't know if I've ever said those words in my entire life. But then when I get done with the workout, my body has woken up, my body has responded. It has changed its chemical compounds inside of it. It's switched around from laziness to moving, to motivated, and it's a lot easier to keep going at the end of a workout, simply because my body has all of the chemicals in it to keep going. And a lot of times by the end of a workout, I'm like, why don't I just do a couple more sets? And I feel amazing after. What happened? I forced my body to create action. And in that action, chemicals change in my body, chemicals change in my brain and gave me more drive to keep going. Action creates more action. Inaction creates more inaction. So if you're not doing what needs to be done, you need to break the cycle of inaction. What do you need to do? Well, tip number five will help you. Tip number five is to countdown and go. Don't allow yourself to think. Mel Robbins wrote a book on this called The Five Second Rule. And for me, it's funny that she wrote a book on this. I literally have been doing this for a really long time, but I used to count down from three. I would go three, two, one, and I would force myself to do whatever that thing was. When I was younger, I was really shy. And I knew that if I wanted to start making more friends and wanted to get some girlfriends when I was younger, I would have to figure out a way to start talking to people. And so what I would do is when I would start to think of what I needed to say, I would get really nervous. And I would think of the first word that I needed to say, and I would go three, two, one, and then I would say the word. And I would force myself to say the word because forcing myself to say the word, it'd be really awkward if I just said the word and didn't say anything after. And forcing myself to say the word, within, at that point, I had to finish the sentence. It would force me to finish my sentence, whatever it is I was talking about. And I still do it. If I have a tough conversation with my girlfriend or a tough conversation with my employee, I still do it, three, two, one, and then I say it. And I think this is ingrained in a lot of us as kids where we're in trouble and our parents want us to do something. They're like, you better go, put your shoes away, and you're like, I don't want to do it.  I got to go and run.  But you're like, I don't know what happens when she gets to one or when she gets to zero, I might as well go run and do it. So I think it's kind of built into our brains, like I'm afraid to find out what happens at zero. So with that being built into us, it doesn't allow us to sit around and think. I've never heard someone just think their problems away. Well, I'm just gonna think them away and they're gonna disappear. It's usually some sort of action that's required to get you past it. The best thing to do is to count down three, two, one, and then just force your body to get up and move in some sort of way. That's tip number five. Tip number six, it's a good one. This is something I used to do with all of my clients, my one-on-one clients when I was coaching people for years. Ask yourself this question. How can I make this easier on myself? Whenever I would have my clients set goals, I realized that a lot of times they would set a goal and then they would mentally make it harder on themselves by starting to tell themselves all of the struggles, all of the things that were coming up. And I was like, well, instead of finding all the reasons why not and why it's gonna be hard, why don't you just find the reasons why it's gonna be easy and in fact, why don't you just make it easier on yourself? So when you figure out what is it you need to do to get life done and to get the disciplines you need to, ask yourself, how can I make this easier? Because life, success, happiness, joy, peace, all of those things, they're not difficult. We make them difficult. Why not find the easy route? Like we think that we have to struggle our way to success, that life has to be so hard. It doesn't have to be so hard. You can make everything in your life easier. And if you can make it easier, if it doesn't feel as hard, guess what you're more likely to do? You're more likely to take action. So ask yourself the question, how can I make this easier? And then tip number seven, get an accountability partner. Get an accountability partner that is on the same path that's also working at something in their lives and talk every single day. Even if it's just through text message, say, hey, my goal is this, if your goal, we go back to the 50 phone calls to get you $100,000 for the year. My goal is 50 phone calls every day, Monday through Friday, I need you to check out on me every single day. Can you do that for me?  Get an accountability partner. You hold them accountable to their goals. They hold you accountable to your goals. And with this accountability partner, if you really want to make it fun, if you don't hit your goal or you don't check in, there needs to be some sort of reprimanding or there needs to be something that you lose in some sort of way. So one thing that I've really found that motivates people, there's a lot of people that are politically charged nowadays or they believe very deeply in something. And so what I always say to people, we have very advanced people that work with us and we literally say, we did this inside of our Kaizen Mastermind, which is in our mastermind of, advanced mastermind that we have for an entire year with entrepreneurs and leaders and managers and sales leaders and all that, is we match them up with an accountability partner. And I said, one of the things that I recommend is that you guys figure out something that they need to do if they don't hit their goal. And that something could be, and the example that I gave that everyone seemed to react to is donate $1,000 to the political campaign that you hate the most, right? So if I believe in X, whatever that is, and there's Y that's out there that is the exact opposite of it, if I don't hit my goal, if I don't do what I say I'm going to, if I don't do that thing I'm supposed to do, I actually have to donate $1,000 to Y's campaign. That motivates a lot of people. To donate to somebody that you don't like is a big motivation. Could be anything. Could be something else. Could be that you have to give your accountability partner $1,000, give them $100, give them $200, give them $50. I don't know what it is, whatever it is that's motivating for you. Where your accountability partner will then be motivated to keep you even more accountable.  Of course. So how can you bring in an accountability partner? You hold them accountable, they hold you accountable and the goal is for you guys to up level each other's lives by checking in on each other and making sure that you get it done. Because ultimately, a lot of times you're not disciplined just because there's nobody checking in on you. Just because there's nothing that you have to do if you don't hit that goal. So get an accountability partner is tip number seven. Hey, thanks so much for watching this video. If you want to learn even more about master your mind, click right here and watch this video as well. Every single person has 24 hours in the day, no more. You'll never be given anymore. So either you get it done or you don't and it's that simple. Either you make excuses or you figure it out. Get the life that you want to or you don't, there is nothing in between.


Hello, welcome back to my YouTube channel. In this video I'm going to introduce a new QGIS feature on 3D tiles. This amazing new feature was developed by North Road and Lutra Consulting who were awarded a grant from Cesium to introduce 3D tile support in QGIS. This feature is available from version 3.34 Prisren. What are 3D tiles? 3D tiles are a standard and OGC community standard for streaming and rendering large-scale 3D spatial datasets. They use a hierarchical structure to efficiently manage and display 3D content, optimizing performance by dynamically loading appropriate levels of detail. In that way it's very similar to vector tiles. Currently QGIS only supports the Cesium 1.0 format fully and parts of the Cesium 1.1 format. And why is this so useful to having QGIS? It's because it is another great spatial data source and many countries are developing digital twins and provide data in this format. And therefore it's also great to use as a 3D base map in the 3D view when you want to combine it with other spatial data and other 3D spatial data. So let's have a look at how we can add these layers to QGIS. From QGIS 3.34 you will find in the browser panel the scenes folder where all your 3D tiles will be shown. You can easily add the 3D tile using the data source manager and then go to scene. You can add as a source type a local file and then you need to look for tileset.json files or you can link to a service on the web and that's what we're going to do here. You can find 3D tiles on the web and this website shows examples for the Netherlands and I'm going to add 3D tiles for part of Rotterdam. Simply right click on the link and copy the link. Back in QGIS click new to create a new season 3D tiles connection. Give it a name, here I just call it Rotterdam and then I paste the URL. Click OK and click add and then the 3D tile will be added to your QGIS map canvas. Now we can clearly see the mesh structure of the buildings in this 3D tile. Just to be sure that I'm in the correct location I also add an XYZ tile from OpenStreetMap and overlay this with the 3D tile and you see it fits. I'm just going to adjust the projection to the projection of the Netherlands. Let's have a look at the layer styling panel. The 3D tiles for now only have the textured and wireframe renderers. If we go to wireframe I can have a look at the mesh which has been flattened to 2D but I can see here the faces of the mesh. I can check the box to use texture colors but this layer doesn't have colors in the texture so that doesn't do much but you will see later what that does. Let's have a look in the 3D view. Let's maximize the view and have a look at the 3D buildings and here they show up. The behavior is very similar to other data sources that we could already use in the 3D view such as point clouds or 3D shapes and I can use similar settings. For example I can use idome, lightning or show ambient occlusion or drop the shadows. I can also use the 3D measurement tool to measure 3D distances between objects. Let's say from this rooftop to the next building and there it gives me the 3D distance. In a similar way I can measure the height of a building. Here you see that I'm not straight so I'm going to do this again. There we have the height. So that was a very simple example. Now let's have a look at a more impressive example and therefore I'm going to install the new cesium-ion plugin. Cesium-ion is a cloud-based platform for managing and streaming 3D geospatial data and with this plugin we can use it in QGIS but you first need to configure it and you need to have an account and a token but that will be automatically linked, it will be stored at the level of your project. So when you share your project others can use your token and don't need to bother about it. So when I first click there on cesium-ion it will open this page where I need to give permissions for QGIS to use this service and that's done now. So here under cesium-ion in the browser panel I see two layers. You can also add other layers to the service but by default these two layers will be there. Now let's have a look at the Google photo realistic 3D tiles. Before I load that I'm going to set the boundaries of this project by going to project and in the properties I go to view settings because these datasets are huge I'm going to limit the extent to the map canvas extent. We can easily check that when I zoom in and then I zoom to the extent you see that we are zooming to the extent that we have set. Another thing that we need to do for these big datasets is to increase the network cache. So under settings options you will find network and there you should make it at least 1 GB. So I'm just going to add a zero there. And now I'm going to load the layer and you can use the existing default token and then depending on your internet speed it will load and it will load quite quickly because it uses these tiles with different zoom levels and when I zoom in it has to load more detailed tiles and there it comes. Now that's in 2D the effect of using these 3D tiles that we see more detail when we zoom in and this can be visualized also through the wireframe. So different zoom levels show different degree of meshing here and when it updates you see that the further we zoom in the more faces of these meshes will show up. Here it also makes sense to use the texture colors which gives the average color of the texture to the wireframe to fill the faces and it gives a nice mosaic here. At the bottom you also see maximum error. We can lower that and then it will have more details visualized but will be a higher load on your network. So I keep it at the default maximum error of 3. I'm going to add a new 3D map and maximize it. To use most of the screen I'm also going to hide the compass and let's fly around a bit. I zoom in and then I'm going to look at it in perspective and there we see these beautiful buildings from the tiles dataset on the Google photo realistic dataset and here we get a warning that our video memory is already limiting this. So you need a good graphics card with a lot of memory and of course it works smoother for smaller areas but this goes quite well, center of Rotterdam and you see how detailed everything is in this 3D tile dataset which is freely accessible. I hope you've enjoyed this video, I will add some additional resources in the description of this video and please subscribe if you want to receive updates. We look forward to see you next time.