Gosh the Friday, what if I had a weak heart or something? Oh, you ain't got a weak heart doc No, sir yours is the strongest biggest and warmest heart in Cedarton. Huh me? Yes, what are you talking about?  What do you mean? Well, you were standing out here in front of Rankins's hardware just to stare it into the front window What you looking at our doc? Well, I was just looking at that spade there thinking it was about time to dig up the old bulbs and separate them for next season Got it. I think you're right doc. Yeah, yeah won't be long now Yeah, how the time do fidget as the man says talk man. Oh, they Well, how do I know what man? Hey, that that is a powerful good-looking spade and it looks like it could stand a heap of wear and tear Yep, and I don't have to be seeing just about one of them pretty soon Well, doc Here's things as slow on your line as they is mine. Why we ain't had a particle exciting for nine hundred a month now Well, I speak pretty well for the folks of Cederton. Yeah, but do it sure do Been keeping busy doc say now you listen to me chief Benson You've been standing here for five minutes trying to pump me about my practice. What's the idea? Just being a good copper to keep your eyes ears and nose open doc, you know never can tell when you'll pick up a clue Yeah, but Stop yawning or talking or something.  All right. All right. I'll tell you no I haven't been busy. I haven't had the patient for three days I don't have any outstanding accounts payable and I don't expect to have a patient for a long time maybe ten years Say look doc. What do you see that young fellow over there across the street? Yeah, well, what about him? He looks a heap suspicious to me. What?  I don't know now I've been watching him for a couple of days He don't do nothing except walk around the streets all day long and I ain't been able to find him at night It's a tall bus to major mad. Yeah, no, no, no, no, it didn't do nothing the kind I'm just a looking out to the safety of the citizens of the city I aim to keep the pieces in it and one sure way to do it is to keep my own all suspicious Characters, well now I can't say that I see anything particularly suspicious about a young man walking around the streets Even if he is a stranger to town. Yeah, I'm going to find out anyhow. Hey, you don't want to do that It's quite dark. I'll handle this.  Yes, sir. I'll find out about him soon enough Did did it did you call me sir? Yes, I did Yes, sir, where are you from young fella from back east where back east? Oh mostly New York State What's your name chick chick Harper chick what do you mean chick? Well, my my real name is Charles, but they've always called me chick. They who are they I don't know everybody all my friend Bill What are you trying to do? Wait a minute doctor? I'm going to get to the bottom of this bottom of what have I done anything? I shouldn't I don't know young fella. That's what I'm going to find out. What are you doing in Cedarton? Well, I I'm going to get a job job What do you expect you'll find a job in Cedarton all the jobs are taken a friend of mine is going to get me one friend What friend Johnny Kemp? Oh, I see Johnny Kemp ain't he the young fella that was a quitter to bank robbery a while back?  There's let me tell you this We're peace-loving folks here in Cedarton, and we don't stand no monkey business. That's why I'm chief of police Yes, sir anybody that wants to come here and make his home is perfectly welcome. Yes, sir But let the fellow that wants trouble come to our town Well, he'll get it. Well, you got ways of taking care of you understand that yes, sir All right, that's all young fella. You can go your way. Thank you, sir Well doc I'd say he chief of police Benson that is a committee of one. You've certainly made that boy welcome to Cedarton That's all right now. We won't have any misapprehensions about there. What's expected of him if he expects to live here No, I guess you won't Let me see you. What were we at talking about talking? I don't know that I I recollect now We was discussing the general health of the town folk Oh, yeah, so we were and I said that I ain't seen you've been none too busy late Yeah, and you said that the folks in Cedarton are all perfectly healthy and I'm glad of it So you watch doc so you watch but that ain't it at all Huh, what do you mean? I mean it that you're just too good a saw bones. That's all it's you will keep some healthy Fiddler nothing's true. Why listen, do you know what you should ought to do? You should ought to go around and give them all a dose of something or other to make them sick once in a while Just to keep busy Well, I won't have to worry about you coming around to see me pretty soon What do you mean? What are you talking about? How much do you weigh well me? Oh, I don't know about a hundred and ninety-five a reckon Yeah, all of that and a good heap more what why if you don't weigh at least 225 pounds, I'll be a cast-off coin cop. Well, whatever do whatever way three hundred and twenty-five pounds What about it? Doc What are you trying to tell me? I know you're when you laugh like that. You got something on your mind. Well, I'll tell you I Don't want to scare you go ahead doc. Did you ever hear of fatty heart fatty heart? Good gosh doc. No Don't laugh. It's very serious. Oh serious, huh? Fatty heart well What's the mean doc? It means that men of your age and your weight are often afflicted with the disease of the heart Which comes from the sub cardiac region being surrounded with portions of fat? Which eventually induce a slowing down of the heart action and finally? well death yeah Often happens Hey, Bill you haven't noticed yourself breathing heavily lately. Have you well? Yes, I have And have you noticed yourself finding it more difficult to get up from the dinner table? Well, yes, I have to tell the truth What is it dr. Adams? Am I a sick man? I'm afraid you might be if you aren't now bill you might be soon Just watch those symptoms and if you know any aggravation of them well You'd better give me a call there. Yeah, better. Give me a call. Yeah. Well doc I think I'd best be get back to the station house, sir. Maybe I'll go on home Don't look as though they'd be and nothing doing in town today. No, it doesn't know but well So long doc so long bill and don't forget if you notice any of those symptoms Don't forget to call me Well, I'd best get down to the office early tomorrow morning. I'll probably be needed at the Benson residence Well, Bill I got your message. Mrs. Adams said you were feeling pretty low dr. Adams. I'm a dying man Oh, I don't think so too. Let me feel your pulse Am I a dying man doc? No, not exactly. In fact, I'd say you were almost a perfect physical specimen. Yes, I What do you mean why you aren't sick will not shake well listen yesterday you Yes, yes, I know I filled your mind with a lot of crazy ideas about breathe and heavily in the light Well, I made you think that all the little things you might notice about your own life or symptoms of a very dangerous Dangerous disease of the heart.   Not sick Well, listen doc, you oughtn't have done a thing like that to me. I might have died right in your hands Oh, no, you won't die yet bill and not have a fatty heart You might have trouble with something else though. Oh my golly. What do you mean now doc?  Yes, ran to the job Where his friend Johnny temp found it for him. He's taken over Johnny's job at May's drugstore. Oh Oh, I see Well Well, you laugh at it. I get it doc. I get it.  All right, and I deserve it right enough. Yes, sir Okay, you taught me my lesson I won't take nobody for a crook now until I know they're crook from now on a man is innocent till he's too gilly That's what it says. What says the the dexterity the Constitution and it's right. Yes, sir Fatty brain Well, all the symptoms of your high trouble seems to have left you all of a sudden Doc, I see it all now. I just thought I had him just like I thought that young fellow chick Quartz is me might be a crook All I got to say though doc is that I was right, right? And when I said is how you've got the strongest biggest warmest heart in Cederton. Yes, sir Well, I still say you'd be a whole heap better if you'd take off a little way Yeah This is the family doctor. I'll be in to see you again, right? Sure. Goodbye


Welcome to today's lecture. So, let us have a quick look at the topics which we have been trying to learn as part of the third module. So, till now throughout this module, we have been understanding about image classification as in what is an image classification, what are the different types of techniques that are used for classifying images. Remember classification as such, it consists of two steps, one is recognizing or identifying real world objects and by real world objects, remember I am referring to urban area or it can be water body or it can be vegetation, built up area and so on. Recognizing or identifying real world objects that is the first step and the second step is labeling of the pixels to be classified. Now this is where we discussed about different algorithms of supervised and unsupervised classification with which we could label the pixels, is not it? So, now we are in the fifth lecture of the third module and today we shall be introducing the fuzzy classification. We have learnt about supervised classification, unsupervised classification and the method of assessing accuracy of classification using the error metrics or confusion metrics, the different metrics that can be extracted from a confusion metrics like the producer's accuracy or user's accuracy, overall accuracy, kappa statistics and so on, is not it? Now with all that background in mind, let us try to understand what is fuzzy classification, okay?  Towards your left side, the image is a Google Earth representation and towards the right side, you see a false color composite created using synthetic aperture radar image. So, the reason I am showing you this image is to highlight that till now, our entire discussion in image classification was focused towards something known as a hard classification, okay? Hard classification. Remember, wherever we discussed maximum likelihood classification or minimum distance to mean classification or parallel piped classification, so in all these algorithms, each pixel is definitely allocated to one of the n classes, okay?  Every pixel is going to be allocated compulsorily to one of these five classes irrespective of what is the maximum reflectance that is coming out from the pixel. For example, with the maximum likelihood classification that is one of the most widely used hard classifiers in remote sensing, that is the maximum likelihood classification, each pixel is going to be allocated to the class to which it has the highest posterior probability of membership, okay? Let me reiterate and we are talking about maximum likelihood classification wherein each pixel is taken, the probability of that pixel belonging to each class is calculated and the pixel is finally assigned to the class to which it has the highest probability of being. It falls under the hard classification technique, is not it? Because all these hard classification techniques, they rely on probabilistic approach, probabilistic approach. So the standard assumptions followed in the algorithms that we have seen so far are purity of every pixel and the discrete mutually exclusive nature of each class. Now what do you mean by purity of a pixel or discrete mutually exclusive nature of each class? Let us try to understand this through this slide. You know, if you look at real world landscapes, they do not follow whatever is shown at the top, you know? There is a gradual transition of one land cover type to the other and I am using the example of coastal areas where water and land gradually blend into one another before you see land, okay? There is water body and a region where water and land are slowly trying to blend together and then there is land area, is not it? So real world landscapes, they I am going to say that they are going to transition gradually to one another and for this reason we will have pixels in a satellite image that contain proportion of materials rather than just one single class because you know the landscapes themselves are heterogeneous, okay? And limitation in spatial resolution of remote sensing images because of that it is possible that satellite images will contain something known as a mixed cells. I am going to call them as mixed pixels wherein one pixel can be representative of multiple land cover classes like the example of a coastal region wherein if you recollect the image of Mumbai region whenever we have pixels in the coastal region it may represent more than one land cover class as in a small part of it can be water, another part can be urban area and small part can be land. So, you know mixed pixels multiple classes may exist in the same pixels and the presence of these mixed pixels has been recognized as a major problem, serious problem because it tends to affect the effective utilization of satellite imagery in per pixel classifications, okay? So shown in front of you at the top is the representation for a conventional per pixel classification, okay? Where two classes are shown water and wetland and if I try to classify an image that consists of these two classes using any of the hard classification algorithms, every pixel irrespective of whether it belongs to the coastal region or not it is going to be compulsorily being classified to either water pixel or it is going to be a wetland pixel, there is nothing in between, you know? The concept of a pixel consisting of more than one classes does not exist in hard classification approaches. Now look at the diagram, second diagram that is below, this is the classical way in which fuzzy classification algorithms perform, okay? So, there is something written known as membership function in the y-axis, is it? We will define membership function but to understand assume that every pixel will be assigned a membership that shows you how much of what class is contained in that pixel. For example, assume the pixels in the coastal region, okay? Which may have a little bit of water, a little bit of wetland, so using membership function we get to classify each pixel as, for example, we can classify it by saying that 70 percentage of that one pixel consists of water and rest 30 percentage consists of wetland, okay? You are partitioning between a pixel, you are partitioning within a pixel based on its membership to other classes. In hard classification there is only 0 percent and 100 percent as shown here, isn't it? Either a true or a false, it is either completely a water pixel or either completely a wetland pixel whereas the concept of fuzzy classification allows us to define every pixel in terms of its membership to all the other classes. As I mentioned, we can use membership functions to define the percentage of pixel that belongs to each of these two classes. I am using the example of two because in the example shown here two classes are just mentioned. Okay? Now with this logic, let us try to understand more about fuzzy classification. So, it was in 1965 that the fuzzy logic was first initiated by Zaday. It is a multi-valued logic which allows intermediate values to be defined between conventional evaluations like true, false, yes, no, high, low, etc. Okay? So, fuzzy logic and probability both are, you know, two different ways, completely different ways of expressing uncertainty. In the case of fuzzy image processing, we use fuzzy set theory, okay? Whereas in probability theory, it uses the concept of subjective probability. I won't get into that now. But for our discussion in today's lecture, we are going to focus on fuzzy image processing, fuzzy set theory and the classification algorithms that are part of fuzzy set theory, okay? Now, there are three main stages in fuzzy image processing, okay? So, what I have done is I will try to explain the stages using a small flow chart. Okay? So, firstly, of course, we have to use expert knowledge to fuzzify an image, okay? The main power of fuzzy image processing lies in creating and modifying membership functions, creating and modifying membership values. Because once you transform an image into a membership plane, note that I am using the word membership plane. Once you transform an image into a membership plane, appropriate fuzzy techniques tend to modify the membership values. And this can be achieved by using, you know, fuzzy clustering techniques or fuzzy integration approaches. And, you know, understanding of fuzzy image processing as such, it is much easier if we try to study about fuzzy set theory, okay? Because, you know, fuzzy image processing, it is not a unique theory in itself, but it is a collection of different fuzzy approaches to image processing. So, here I have written that the aim of any classification algorithms that is based on fuzzy set theory is to transform an image into the membership plane, okay? If required, you can perform image defuzzification to see the result. I will be explaining these through a case study. But for now, let us try to understand the underlying logic of fuzzy set theory, okay? So, as I mentioned earlier, fuzzy set theory allows an event to belong to more than one sample space, where sharp boundaries between spaces are hardly found. If X be a collection of objects with elements noted as small x, then a fuzzy set A in X is a set of ordered pairs given by the relationship shown. Here, mu A X is nothing but the characteristic function or membership grade which can take any values between 0 to 1. Thus, nearer the values of membership function to unity, higher the grade of membership of X in A, okay? So, membership functions, they are going to have values between 0 to 1. You know, in fuzzy set theory, the operations on fuzzy sets are based on the original work of Zeta. So, I am going to write it down so that if you are interested, I would urge you to read this reference. So, whatever is being discussed here, please do not consider them as a complete collection. I am just showing you a glimpse of the operations that can be performed using fuzzy set theory. For example, we can perform fuzzy union, the union of two fuzzy sets A and B with respective membership function mu A X and mu B X is nothing but a fuzzy set C which can be written as A union B. So, the membership value will be the smallest fuzzy set containing both A and B. Let me give it some time to sink in, okay? We are trying to understand the operations in fuzzy set theory starting with fuzzy union, okay? All right? Moving on, we can also perform fuzzy intersection. The intersection of two fuzzy sets A and B with respective membership functions mu A X and mu B X is a fuzzy set C which can be written as A intersection B whose membership function is related to those of A and B by this relationship, okay? We are talking about operations in fuzzy set theory and we discussed fuzzy intersection. So, fuzzy union is possible, fuzzy intersection is possible and fuzzy complement is also possible, complement of a set, complement of a fuzzy set A in this case, okay? Here you can see not A and A. So, with the operation of union intersection with this it is easy for us to extend many of the basic identities which hold for ordinary sets to fuzzy sets, okay? Now, there are other ways of forming combinations of fuzzy sets and relating them to one another such as we can conduct algebraic sum of A and B which can be written as mu A plus B which is mu A plus mu B. We can perform algebraic product of A and B in terms of its membership function, okay? We can even carry out absolute differences of A and B. There are many operations in fuzzy set theory of which a few were discussed now, okay? Moving on, in fuzzy image processing at the end of the day membership function is the underlying power of every fuzzy model as it is capable of modeling the gradual transition from a less distinct region to another in a subtle way and membership functions they characterize the fuzziness in a fuzzy set whether the elements in the set are discrete or continuous in a graphical form for eventual use in the mathematical formalisms of fuzzy set theory. And you know there are infinite number of ways to graphically depict the membership function. The membership grades you know they themselves they can either be chosen heuristically or subjectively. The direct use of available shapes for membership function is also found effective for image enhancement. For example, you know we can have a trapezoidal membership function or triangular membership function. So, when you are trying to work with fuzzy image processing, you can either use the existing membership functions or you can create a membership function from the data themselves. So, the choice of membership function it is going to be problem dependent which requires expert knowledge and in situations where say you do not have any prior information about data variation. So, in such cases membership values can be generated from the data themselves using clustering algorithms which is what is normally done in research which is a normal practice. So, now with this background let me show you a case study where we performed fuzzy image classification using synthetic aperture radar images and specifically we were trying to use the fuzzy Gaussian maximum likelihood algorithm. We will also see what is the difference between fuzzy Gaussian maximum likelihood algorithm and Gaussian maximum likelihood algorithm. So, it is between fuzzy classification and hard classification. We will see what is the difference between both. So, for this study, the study region used is depicted here and shown are the images which were used for fuzzy classification. So, what you see here are the same study regions which were shown as part of the previous lecture. So, this study site it is located in parts of Guntur and Krishna districts of Andhra Pradesh. So, towards the left side you see synthetic aperture radar imagery after it has been subjected to pre-processing. A shows the HH polarized band, H stands for horizontal and V stands for vertical. So, B shows the HV polarized band. By now I am assuming that you are familiar with what is meant by polarization and what is meant by HH, HV and so on. And towards your right side you see an image obtained in the optical region of the electromagnetic spectrum in the visible region of the electromagnetic spectrum. So, here the land cover classes are specifically highlighted as paddy, water, sand, cotton, pallow land. So, as part of this study what we did is we tried to create a false color composite using synthetic aperture radar imagery that is HH and HV bands. And then once there was a false color composite created we tried to implement the fuzzy Gaussian maximum likelihood algorithm. Now, this algorithm it is an extension of the conventional hard per pixel Gaussian maximum likelihood algorithm. And the fuzzy representation of geographical information as I mentioned earlier it enables a new method for partitioning the spectral space. Now, in this approach the informational classes as well as the spectral classes are represented as fuzzy sets. The whole concept is that if we have a spectral space it is not partitioned by sharp boundaries. So, the gradual transition of one land cover to another is realistically represented by using fuzzy set theory by using fuzzy image processing. So, that is the whole concept but nevertheless in fuzzy Gaussian maximum likelihood algorithm we are performing a fuzzy partition of the spectral space. What you see in front of you is the fuzzy partition matrix and it is a family of fuzzy sets like f1, f2 and so on up to fm where they represent the spectral classes. And see it is the number of predefined classes in this case it is 5, 5 classes and x is nothing but a pixel measurement vector and mu f1 you know all these are membership grades, membership functions. So, this is how a fuzzy partition matrix is recorded. So, our aim is to convert an image into the fuzzy partition matrix. We need to convert an image into a new plane the membership plane. Now, assume you have five land use land cover classes. So, when you generate the fuzzy partition matrix you are going to get images that represent only one class at a time. I will show you the results but for now let us go through the steps that lead us to the results. So, come see when we are discussing these steps I am assuming that you recollect what we discussed when we were trying to understand the Gaussian maximum likelihood algorithm. So, the first step is same for both hard classification and fuzzy classification that is we need to select the training data first step is same. Second step here we are carrying out the hard Gaussian maximum likelihood classification to find the partition matrix. And from third step please note the difference. In the third step what we are going to do is we are going to determine the fuzzy mean and fuzzy covariance fuzzy mean and fuzzy covariance where instead of mean of a cluster I am going to use mu c membership in the class C cluster C mu c. Look at the difference in mean covariance and fuzzy mean and fuzzy covariance. As the fourth step we recalculate the probability values finally we determine the membership function. Now when you look at the fuzzy mean and fuzzy covariance you know these can be considered as extensions of the conventional mean and covariance matrix. Here n is the number of pixels and the step when I say determination of membership function I am actually calculating a posteriori probability of a pixel belonging to class C. Now the disadvantage here is that we are assuming normality of data. We are assuming that data are normally distributed and compared with the conventional method the fuzzy Gaussian maximum likelihood it improves remote sensing image classification in the aspects of representation of geographic information more realistically partitioning of spectral space and estimation of classification parameters. So all methods have their own pros and cons. What we see here is the fuzzy version of Gaussian maximum likelihood algorithm wherein each time we calculate the a posteriori probability of a pixel belonging to a class as given here.  We call it as fraction images wherein a represents phalloland, b represents cotton, c represents sand, d represents paddy and finally e represents water. Now we have to assess the accuracy isn't it? Just because we get an output we cannot be sure that it is absolutely correct. And as we discussed in one of the earlier lectures there are many ways to assess the output of a classification, accuracy of classification. It can be done visually, statistically as well by using a confusion matrix. Now typically you know whenever classification is performed using a course resolution image the output of that is compared with another satellite image which is having a very fine resolution, very fine spatial resolution. Let me be more specific isn't it? But in this case I have fraction images one for each class and to compare or to assess the classification accuracy I need another set of fraction images isn't it? So that is what you see here that is the fuzzy reference images created using the image captured in the visible region of the electromagnetic spectrum which is having better or finer spatial resolution and spectral separability. Note the words that I am using. So we call it as soft reference images showing phalloland, cotton, sand, paddy and water. For example in the fraction image that shows water only those pixels that have water will be represented. Even if there are mixels which has a small percentage of water that also will be represented but in colors between 0 to 1.  Visual comparison you have already done. Now statistically instead of creating an error matrix for fuzzy image processing there is something known as a fuzzy error matrix. I won't get into the details of that but just so that you know fuzzy error matrix can be used to tabulate and estimate the classification accuracy obtained in fuzzy image processing. All right. So in this particular lecture we were trying to understand about fuzzy set theory and how it is used to create membership functions and how we can classify images using fuzzy image processing. And we also saw a case study example wherein fuzzy Gaussian maximum likelihood algorithm was used to classify a false color composite of synthetic aperture radar images. And what you see are the fraction images that are obtained which can be used for assessing the classification accuracy using fuzzy error matrix. So let me hope that you understood the concepts which were discussed in today's lecture and I will be meeting you in the next class. Thank you.


How to gain respect from your team is on the mind of every manager taking on a new team. It doesn't matter if you are new to management or an old hand. How you approach managing others, the actions and the decisions that you take, and the behaviour you display will determine how quickly you get respected at work. I'm sharing 10 tried and tested approaches for how to earn your team's respect quickly. None of these approaches are underhand or psychological tricks. You can tell your team exactly what you're doing and you will not lose any respect by telling them. These approaches work quickly and will still be working five years later with the same team. As we go through, I'll be giving you practical tips to implement each approach. My name is Jess Coles and if you're new here, Enhance.Training shares people management expertise, resources and courses so you can become a better manager quicker and help your team deliver a lot more. I've included links to additional videos and resources in the description below as well as a video timestamp so do take a look at these. And if you like this video, please give it a thumbs up and subscribe. Probably the most important starting point in how to gain respect from your team is your mindset or approach to the team. Your job as a manager is to help your team members do better. Work hard to make your team members ability to do their job well, easier and more enjoyable. The more you demonstrate your willingness and effectiveness at helping team members do better, the more respect you will get. After all, who doesn't like and appreciate a manager making our lives at work easier? You should be absolutely focused on helping your team members because when they do better work, more work, smarter work, the team overall performs better. And when the team performs better, you the manager will be doing your job well and will get rewarded with promotions and more people to manage. The most effective way to consistently increase team performance that I've found is to, for example, firstly help each person overcome the hurdles they face. Secondly, remove problems that impact the team. Third, help develop the team skills. Fourth, work hard to create a positive team environment. And fifth, setting really clear and consistent directions. I.e. do your absolute best as a manager to get the best from each team member by setting direction, creating the right team environment and supporting wherever you're needed. There is no better way to earn respect as a leader. The second approach in how to win your team's respect is to respect and admire each team member. We all tend to like and respect those that like and respect us. This response is part of group social rules hardwired into us over generations. I think managers need to get on with as many people as possible and certainly team members. Find something that each of your team members does well, professionally or personally. It must be something you admire, something they are good at. Each person has something, even those that you don't like and are not great at their jobs. Look hard until you can find at least one thing, preferably more. Then, with total sincerity, you can show your respect and admiration towards each team member for what it is that you like about them or what they do well. This is a great step in how to win your team's respect. Tell them you respect their skills or their approach or their behaviour or their choices in this particular area. Show your respect in an authentic way for you. How to gain the respect of the team should start with you building your respect for them. The third approach in gaining respect from your team is to be friendly but not friends. To be respected by your team, I think you need to be confident in your own self-worth as a manager. If you need to rely on your team to give you a confidence boost, then you are going to be taken advantage of by team members or struggle to make the right decisions for the good of the team. So be friendly to each team member.  Be personable. Demonstrate your empathy. Maintain a positive professional and personal relationship to a point. Keep some separation from team members so that you can make the right tough decisions when needed.  Your professionalism as a manager and your judgment will be questioned if you do. And plus you become in danger of treating some team members differently from others. I don't think you can afford to do this if you want to do a good job as a manager of others. To gain respect at work as a manager, be friendly but don't be friends. The fourth approach in how to gain respect from your team is match words with aligned actions and decisions. One of the biggest killers of trust and respect from your team is if you ask them to follow rules that you're not prepared to follow yourself. Do as I say is not enough. You must do as you expect your team members to do. Lead by example and behave at work in the way that you expect your team members to behave as well. You must also match your actions and decisions with what you say and what you ask for. If you're asking the team member to work hard then you should be working just as hard or harder to help them deliver as a team. Another example, if you ask team members for ideas then you should listen and implement the good ideas provided. Match your decisions and actions with what you're asking from your team to make your team respect you. The fifth approach in how to gain respect from your team is to listen to team ideas and solutions and then act on them. There is no bigger vote of confidence in ideas or solutions provided by the team than to implement those ideas or solutions. The team members are at the coalface as such. They're wrestling directly with the problems faced by the team. Team members should have more expertise in their area or at least more firsthand knowledge of a given situation than you. This puts them in a great position to produce great solutions or input ideas into creating great solutions. I've never felt it important that the manager comes up with the ideas. What I thought was very important for the manager was to recognize the best ideas and solutions and make sure they were implemented. For these reasons ask your team for their input and implement their ideas when you see their value. What better way for you to show your respect of what team members can offer the team? And in doing so you'll get a lot of respect back from team members and the team as a whole. The sixth approach in how to earn your team's respect is to be prepared to change your mind. There is no way a single person could be right all the time. A manager of a team is certainly not going to be right all the time. A really practical and effective way of going right more often than being wrong is to listen carefully to ideas, solutions and challenges your team members provide you. Compare them to your options and keep aiming to choose the best one regardless of who it comes from. I can't tell you the number of times that I've approached a situation with the preferred option to resolve it only to change my mind after listening to a team member or being given a better solution. Every time you see the team members smile a bit brighter, have a slightly bigger spring in their step it generally appreciate that you prove through your actions that they have something of value to offer. Showing that you're prepared to change your mind is a great way of getting respect from your team. Taking this step will also give you better solutions to problems giving you more time and less personal stress. All these lead to a nicer time as a manager and a better team performance. Can you afford not to listen to your team members? The seventh approach in how to get your team to respect is to extend trust and responsibility to each team member. Do flex the level of trust and responsibility you give to each team member depending on their skills and behaviour. For inexperienced team members or new joiners this level would probably start fairly low. If you don't trust your team members and give them a responsibility how will they trust you and allow you to have responsibility over them. For experienced team members and high performers provide them more responsibility so they can continue developing their skills and decision making. Use reporting, visibility and regular contact to exert a level of control while providing responsibility instead of micromanagement or only asking team members to do tasks. If your team members are not trustworthy and don't show responsibility towards their roles and other team members why do you have them in your team? If they are in your team trust your team members and give them responsibility and you will get respect at work in return. The eighth approach in how to get your team members respect is be humble. No one likes a manager that goes on power trips that has an inflated sense of their own importance that looks down at others or any other negative behaviour that leaves team members unhappy. A team member or leader is a privileged position. You are responsible for the culture, work and output of the team. You have a different role from the team members both manager and worker roles are important.  Work on ensuring your mindset and where thinking shows the respect you have for your team members. Part of motivating others is knowing and reminding them of their value. Be humble to a point and your team will respect you a lot more. The ninth approach in how to earn your team's respect is be consistent. If you as a manager can be consistent with your behaviours, your decisions and your actions you will give the team a loss of confidence. The more consistent you are, the clearer the boundaries you set for the team. Apply the same rules to each team member and yourself. If you don't leave your own rules then your team won't either. If you struggle to keep your behaviours decisions and actions consistent then focus first on keeping each as consistent as possible towards each team member. You can't afford to have favourites as a manager if you want to keep everyone's respect and keep the team happy and motivated. Every time you need to take a decision or undertake an action, ask yourself. Firstly, is this consistent with my previous actions or decisions? Secondly, if not, am I setting a precedent that I'm happy with? Third, how will this affect the team, the team's culture and the team's performance? The more consistent you are, the less problems you create for yourself as a manager. And it does take work, effort and discipline to be consistent. I personally think this is a lot less work than dealing with the problems caused by not being consistent. The tenth approach in how to gain respect from your team is celebrate your team members' success. Always give credit where credit is due. If Dave contributed a great bit of work or implemented a solution really well then praise Dave in front of him and the team. This encourages Dave and the rest of the team to work to earn praise. Compliment great results, actions, choices and behaviours. Team members need to be praised three times more than criticised to remain happy. And in top performing teams praise is given 5.2 times more than criticism. Both are high bars for managers. Team members respect managers that celebrate their successes and give credit where it is due to team members. So in summary, use each of the ten approaches we've gone through in gaining respect from your team. The more effort you put in and the more consistently used each approach the quicker you will make your team respect you. The ten approaches for how to gain respect from your team are Firstly, help your team members do better. Secondly, respect and admire each team member. Third, be friendly but not friends. Fourth, match words with aligned actions and decisions. Fifth, listen to team ideas and solutions and act on them. Sixth, be prepared to change your mind. Seventh, extend trust and responsibility. Eighth, be humble. Ninth, be consistent. And tenth, celebrate your team members success. If you have any questions on how to gain respect from your team please leave them in the comment section below and I'll get back to you. Thanks very much for watching and I look forward to speaking to you again soon.


What's good job your boros back again with another video. So we're gonna check out triple H hires Marvel writer for WWE and Sammy Gavar destroys Andrade Yeah, I've been seeing some stuff on social media. I guess Sammy Gavar and Andrade had a back-and-forth on Twitter They got some heat against each other right now. I don't know what's going on with that specifically But we're gonna check this out and it's interesting to see Triple H hiring a writer from Marvel to see maybe they could come up with some interesting ideas for You know Monday night wrong Friday night smack down and maybe NXT who knows but we're gonna check out all this and other wrestling news Let's get right into this video. I'm excited about to see what wrestling here has to offer us today What's going on guys? It is WrestleMania here backwards some more news join us now as we look at the wildest news stories and rumors You need to know including Sammy Gavar absolutely destroys and try to on Twitter WWE hires a Marvel writer more white rabbit riddles is a superstar really injured And AW star knows his days are coming to an end and much more be sure to subscribe For daily wrestling videos and follow us on Facebook for exclusively also check out wrestling.co.uk and an un-wrestling channel Incredible for now. Let's do the intro and get straight into our first story And first story looks at Sammy Gavar a char broiling andrade on Twitter Top of today's news is some apparent backstage drama. That's boiled over onto social media Sammy Gavar isn't holding back what is thought about fellow AEW wrestler andrade the Spanish God recently did to Twitter after Andrade commented in an interview with Mass Alucha that Gavara complained to him about being too stiff in the ring This led to the Gavara tweeting you didn't say to me you liar But here's some truth you ungrateful prick.   Oh Responded with this love note. Okay. I'm Alaya. See you on Wednesday I'll tell you to your face again and nothing you say that you do not have any problem Gavara's fiery response got fans talking oh damn Regardless of the issue Sammy won the social media melee Let's hope this is a work as the last thing AEW needs is more backstage drama Sammy spoke about the political problems during an episode of his vlog saying there's just so much drama that goes on in wrestling It's really exhausting. It's tiring seems like every couple of weeks is something I'm minding my own business on vacation And then you know people want to start drama with me. It is what it is It's the life I signed up for I suppose But it's definitely tiring and maybe I'll need to go on another vacation next week because it's stressful is a three-time TNC champion experiencing backstage heat with another wrestler. Is it all the work? What you guys think let us know in the comments down below. Yeah, I don't know I don't know if this is a work. It could be but aw they They it seems like there's something going on with within the locker room with the roster It's like boys is not really getting along in you know They're there their frustrations are either getting leaked out on social media or you know They're telling it to the world on Twitter or whatnot. I don't know what's going on But he did bury my guy on Twitter.  He cooked him well done on social media So I don't know if it is a work or whatnot. Hopefully they ever sort things out Damn Next up WWE hires a Marvel writer a recent Triple H hire is likely to have fans talking is the company recently brought in Marvel Comics writer Rob Fee Fee whose comic writing credits include Daredevil Spiderman and the Avengers has also written for the Ellen show and various Disney shows Including player select Fee has also produced television shows such as well Smith's Fresh Prince reunion He's also known for his work in the horror genre So he sounds like a well-rounded acquisition The new highest title is director of long-term creative According to fight for select he pitched a fiend horror movie project before Bray Wyatt's release and has been working on the white rabbit QR Codes post the good news on his LinkedIn page saying well This is the most excited I've ever been to post on LinkedIn This is my absolute dream job and the entire team is fantastic If you think it's been while so far just wait and bringing Fee onto Team WWE Seems like it's already paying off in specially in light of the white lines while success next up That's actually pretty cool. The white rabbit situation with the QR codes is actually a good way to Most likely it seemed like it's gonna be Bray It's a good way to kind of incorporate him back into WWE if this is the route they're going. I do like it a I See it all the time in my chat. Oh, just qr code qr code like people are actually paying attention To like really solve and decrypt these codes and what they mean or whatnot So he's bringing some intrigue there if that's part of his brainchild And obviously he wanted to do something with Bray before WWE released on the first time around So it's interesting to see where things would go It seems like he is a fan of wrestling. I've I've been one of those people that Have been on the side of if you're gonna have writers for the show. They need to know what the hell wrestling is They need to know like the wrestling business in a sense of they need to have watched it in my opinion like It's it's kind of hard for a writer to come in blind They don't know anything about wrestling But they want to write a character and write storylines about wrestlers or wrestlers within a story So hopefully, you know, he's well versed in his wrestling knowledge and you know How wrestling should be pitched, but it seems like he has a good idea of how things or should be going So I'm looking forward to seeing what they do in the future storyline wise for For the different shows or white rabbit riddles speaking the WWE's Bombastic bunny Bray white recently added this tantalizing tagline to his Twitter account A villain is just a victim from a different story When many fans confident that Bray white will be revealed as a mastermind behind the white rabbit riddles The WWE threw a red herring at the fans on NXT ringside news discussed a brief white rabbit clue that aired on the most recent NXT WWE dropped the white rabbit tease during NXT tonight while the company did not drop a QR code like it usually does it tested a different formula with the tease NXT star Joe Gasey dropped the white rabbit emoji during the grace and wallet effect live Instagram session And it seems to think the WWE baby trying to do people have been saying that so it could be it could be a Situation where they pull a swerve deflect the fan's suspicion from Wyatt to Gacy And for those not in the know Joe Gasey's name was mentioned in the QR code tease that popped up on the screen during war last night That speculated that it could be WWE's way of getting their attention away from the signs that point to Bray white making his return at extreme rules At this point it seems unlikely that many fans will change their mind about who is driving the white rabbit mystery Indeed if the WWE were to switch the rabbit's identity to Gacy just to fool them it would be a major blunder Where fans of wrestling pundits theorizing the mystery will be sold at extreme rules fans will have to wait until Saturday's pay-per-view Before they get the answers they've been going bonkers over. Yeah, if it is Gacy Oh bro the backlash, but once again, no one said it was gonna be Bray. We just assume It would be Bray but once again The backlash that they would still get you know No one said it was gonna be Bray if it happens to be Joe Gasey people are gonna be Fucking pissed would I be pissed not so much because once again, I think this is very cool. How they're teasing something I'm just me personally. I just rather see it happen Didn't get my hopes up for something and it doesn't happen, you know Next up main roster star bouncing back to NXT Advir Mahan to the list of main roster super stars who have been moved to NXT Oh, yeah In the backstage segment on the 4th October episode of black and gold brand as wrestling news is Paul Davis commented on the segment Vera appeared after Sanger was shown talking with Nathan Frazier about the final slot in the North American title match That is scheduled for the Halloween Havoc show the segment ended with Frazier leaving and Mahan and Sanger Staring at each other. They've speculated that Mahan will team up with Sanger and those of the two have teamed up before Wrestling news pointed out that this monster push seemed to evaporate once mr. McMahon left the WWE in Triple H took over David said it that it's unknown if the move means Mahan will only wrestle on NXT What do you guys think of this move though? Let us know in the comments down below You know, it's crazy. They build up Vera was coming for like goddamn six seven months.  It hasn't been spectacular No, if anybody needs to probably go back down to NXT Maybe it's probably a homage that experiment did not work. It's not working So it's crazy like Vince just love these larger than life guys, but when you see them in the ring It's nothing special. It's just like we've seen this before, you know, I'm saying so I don't know. Maybe they can find some better use for him in NXT and maybe bring them back to the main roster Who knows we will see next up Chris Jericho fans didn't know who Cody Rhodes was A controversial words from Chris Jericho as a former AEW champion recently claimed Cody Rhodes Kenny Omega and the Young Bucks were relatively unknown to US fans when AEW launched in 2019 the wizard appeared on the AEW restricted podcast claiming keep in mind No one really knew Cody at that point been gone for years the last time we'd seen him He was started when he left WWE and as much buzz as Kenny Omega and Matt Jackson had they were still most just regional guys There were worldwide stars, but when it comes to national TV in the States, they didn't have any experience with that One of AEW's goals was to introduce US fans to talented wrestlers They may not be familiar with who could entertain with the best of so-called named talent This panned out with the emergence of stars such as Darby Allen, MGF, Wardlow and Sammy Guevara However, would fans have tuned into AEW without a main event star like Chris Jericho headlining well Jericho said if I'm the bridge to get here check me out and then look at all these other guys that we have Would the company have happened if I wasn't there? Probably but I don't think it would have grown as quickly as it did or maybe gone off to such a huge start While Jericho does make a good point We're not so sure about his take on Cody Rhodes A wrestler didn't main event in WWE but was well-known to US fans for his famous father and is running WWE That's kind of where Jericho has a point because Jericho Being in the company from the start. I believe Jericho was the first AEW world champion It made sense people knew who Jericho was but at the same time people also knew who Cody was not I don't think you can not as much but they know Dusty Rose. They know his father. They know Dustin It's just he wasn't I guess you can say as big as Jericho and a mainstream since when you think of Wrestlers like people that used to watch wrestling back in the attitude air that don't watch it now They wouldn't really know who Cody Rose is They may know who Dustin is gold dust, but they wouldn't know Cody Rose is as much They may know his father or whatnot, but they wouldn't Automatically associate with oh, I know who that guy is but when you see Jericho, I'm like, oh, I know who that guy is You know, so he has a point there But at the same time, I do believe Cody did have a solid fan base where just Enough of enough amount of people actually knew who he was his his family his lineage Wstar knows his days are numbered would wrestlers reportedly requesting the releases from AEW What should fans make of a top AEW star stating? I know my days are numbered Now if you're wrestling great sting is just an instance of knowing that you can't beat father time the stinger recently spoke with Sports Illustrated's Justin Barrasso recalling the epic moment when rival wrestler the great Muta helped him and Dalby Alan out against the House of Black during an episode of Rampage that was a moment flashbacks when he stepped into the ring seeing him face to face It took me back in time the man calls sting talked about how Muta and him are closing out an error as they work their last matches I know my days are numbered so I'm trying to make the most out of my time left and give the fans everything I have before this wave comes in to shore for good I'm grateful that Muta was able to be here with me in the US. That's a memory I'm gonna hold on to and it signifies the end of our era I'm looking forward to having one last grand who are with the great Muta, especially in Japan Stinger Muta had some fantastic matches in WCW in 1989 when they clashed over the WCW World Television Championship And now the two former opponents are scheduled to team up for a six-man match in Japan Next up is a superstar really injured or would a wrestling promotion try and fool the fans about an injury? Well, while we don't want to be perceived as maligning the integrity of the WWE Fightful select recently commented on Montez Ford's apparent injury raising the possibility. It could be a kayfabe injury Hmm, we haven't heard of Montez Ford's injuries legitimate or not But we can confirm that the walking boot was actually brought in by the prop department on Monday While Ford accompanied tank team partner Angela Dawkins during Dawkins match against the bloodline Solacekoa He wasn't able to do much of anything to deal with bloodline members J&J Musso not to mention honorary Usami Zayn from interfering in the match And finally Alicia Fox gets engaged Alas, but at least congratulations to former WWE superstar Alicia Fox for a recent engagement 36 year old Fox aka Victoria Crawford ironically debuted on the main roster as a wedding planner She went on to become the first and only African-American devious champion after defeating Marisse in a fatal four-way She was last seen in the WWE ring in the 2022 Royal Rumble many Congratulations to Alicia Fox and her fiance That's pretty fucking cool on the whole Montez situation. That's pretty interesting if this is like a work I'm not sure what they're doing Montez We will see in the upcoming weeks and yeah, man, this is this was a pretty interesting video the whole Sammy Guevara situation I know they had a back-and-forth. I didn't know how brutal Sammy went on Twitter Against on dry days. I'm not sure if this is a work or if this is another backstage situation in AEW But comment down below. Let me know if you guys have any more information on the Sammy Guevara situation How do y'all feel about Triple H hiring a Marvel writer? Do you think that would help the shows overall and do you think this whole white rabbit situation is Bray Wyatt or Joe Gacy, do you think they're just putting like a they're trying to pull a swerve to try to keep people to not predict Predict this whole situation being bray or y'all sticking It's with it's bray Wyatt and they're just trying to pull a swerve they're trying to confuse people Let me know down below, but I appreciate all the love and support roll two I'll honey. I appreciate y'all kicking with me. See y'all next one. Peace


Check out the view we're about to see. You get up early and there's no tourists. This is why you get up early to go for a walk where normally there'd be flood loads of tourists. How good's that? There's a whole bunch of stairs you have to go up but if you are wheelchair bound they've got a rail thing going. Everybody can enjoy the view. They've even got the restaurants in the right places overlooking the city but you probably would have had to book a table four years ago.


Everybody forced here up in 2023 top Star Wars signature series 20 bucks case number two random hit style So as you know, we got 20 hits in the case here 20 names in the randomizer We'll random everything off at the very end Let's get to it. Thanks everybody for joining Well, we need a monster here Case two is the one who does number two work for let's do it clean here. Let's do it clean. I do Shane. I do My head does hurt right now for some reason. I think it's because I was like pounding my coffee that I have and not drinking enough water So now I'm pounding water His mind can't handle what he saw the bat-knob book. Oh my god dollar wise it might not be the Biggest thing in there, but I mean it's still one of the coolest thing right like there there might be some supers of like maybe certain rookie that would go for more but There would have to be like another bat-knob cut auto book that could like top that I think that's like the only thing I could top something that cool Or like a you know So blaze, how you doing a nice Shane Zeb arellios auto Zeb arellios Steve Blum First hit there Zeb. Is the Tron coaster open it? Yeah a month, right? Yeah I don't have like soft opening stuff for like a while, but it was like open But it like wasn't it was only open to I think like certain people they like didn't yeah like past holders like in like past members and stuff and then like It was like soft because they never like formally open it because they could just like not run it one day a four LOM auto Chris Parsons for LOM that might be an easy one to take like a few cases pretty much get them all Kerr santo in auto Kerr santo and Kate Kerry Jones Let's go causes I hope he does well I know he's over two on the day Adi Gallia auto Adi Gallia is Angelique Perrin Perrin or Perrin Adi Gallia. Yeah, like I was pretty I was I didn't really do much today like I was gonna try to go get a haircut and When I woke up like 10 30 or so I'd only say I didn't know I went to bed late too even for me Lyra or so auto A lot of the duplicates from last case valine cane Lyra or so auto Woke up. It just felt like a little a little exhausted What you don't find now Oh, that's that's a pretty one fifth brother auto 24 of 25 fifth brother 24 of 25 philip anthony Rodriguez But dubstep show tomorrow night a walk for a coffee. What happened walk or uh hit I don't know missed it Come on a royal Next up is a grand moff Tarkin auto Guy Henry Grand Moff Tarkin I believe that would be the most recent one, of course Who played the original grand moff Tarkin? Peter Cushing. That's right. Peter Cushing I don't know what can think of his name You still got the invite last night. So that's that's big. That's huge Rio Durant auto katie cartwheel rio Durant Next up Is a beru lars auto beru lars number seven to 50 bonnie peace ps Beru lars to 50 Some of those make sure you're checking the back for numbering I think they're all the because those are on the back but the other ones are on the front Oh, yeah, I think I think it is too shame from what I've Been like we were talking like a breaker chat from what lane was telling me. Yeah, it's probably it's probably worth that for sure Imperial freighter pilots auto alexander wraith Imperial freighter pilot I am not sure the next almanac is I'll have that's lane when he gets back We've been waiting a while though. All I know is when we start um When we start ramping up our drip personals and doing more stuff on drip, we're gonna have a like a I don't know if it's gonna be titled almanac, but we're gonna have a Like a buyback product that we do we're gonna have three different tiers as well of a price of pricing That'd be kind of cool Ben Kenobi auto Stephen Stanton is Ben Kenobi Carson Tiva auto 32 of 50 back-to-back case with numbered Carson Tiva Carson Tiva is uh Paul Sung Hyun Lee Sung Hyun Lee 32 of 50 Oh, it's Jake's favorite Evan PL auto Evan Peele Michaela Cattrell as Evan Peele Football is later again. We always have a break schedule on the site if you need to check it out Yeah, SPX release the other day Hopefully we can get some of that a Andrea two tubes Just take second favorite Andrea two tubes David Accord auto. I'm not sure Drew. I don't think we got any yet if we did Maybe it's on its way or something. I don't know again. No one's here for me to like Ask questions Everyone's in vegas I don't really text rich when he said something like the mint collective because he's always got stuff going on Or ants probably on his phone all day answering the text and emails Hey, pommet warwick auto Harrison Davis five of ten Pommet warwick Five out of ten Yeah, should I definitely try to make it work? I know I know you know that but definitely try to make it work And if you can you can always just uh Sell and save up for the next one mon mothma auto caroline black caroline blackistan mon mothma So dan all right four more here It works. I mean it works fine for me. They wouldn't have a trouble with that schedule link You can always click on it from the website yourself I'll drop a Main site link as well. You can click on break schedule there But it's out later tonight Still got six or seven more breaks to get there 11 to go on court kings Again two teams were spot. We marked that price down earlier A sefton vanik. This is a different variation than the last time yosef alton as sefton vanik Base auto but pretty sure with the invite you get a hotel stay. I think Pretty sure you get you might get that. I'm not sure Airfare not included but hotel. I believe is tuscan warrior Uh, joanna benet tuscan warrior auto rick olie auto rick olie ralph brown Uh, they don't announce where it is or who's gonna be there yet You have the rsvp first And a quaren trawler auto Demetrius Mastrebsky quaren trawler auto But usually I mean usually it's in new yorka from what I understand because that's where tops is located Vaughn it's not that terrible of a game like They're down three you'll freak it out, man Yeah pitching stink so far, but our best pitchers yet to start a game brian bayo And then the the second best pitcher nicky smooches hasn't started a game yet either I don't know. I don't know why I call him. I think it's his birthday some valentine's here. So I have no idea all right Let's uh do the random names and hits Are both I mean move the hits over yet names and hits same amount of times We'll we'll match them up and that's how we know who's got what good luck everybody three and six three and six nine times names first one two three four five six seven eight nine Hilton down to drew b and the hits now one two three four five six seven eight and nine Crescenton down a pommet work to 10 All right, Hilton with the Crescenton lu y beru lars to 50 and edgerio two tubes Harvey with tuscan warrior francis fifth brother lu y carcentiva francis also has rio durant an imperial freighter pilot adam k grand moff tarkin hilton t zeb orellios drew b ben canobi adigalia Edward p quaren trawler david c evan pl drew b with lyre urso calvin l sefton vanik Edward p moin mothma drew b for lom roman aceric olie and drew b with the uh pommet work to 10 Good stuff y'all case three up next


Welcome to my talk, my journey using Docker as a development tool from zero to hero. This is going to be kind of like my journey with Docker over the last five years and kind of what have I done and how have I been integrated into my development workflow and what changes have I done. This presentation, funnily enough, is actually running in Docker. I don't have Reveal.js installed locally so and code examples and the slides will be shared at the end. There'll be a link and I'll add it to my abstract as well if you want to go look in your own time. It's a little bit about me. I'm a software engineer. There's a link to my blog and my website. I really like cats and anyone who talks to me for more than a couple of minutes will know I'm an avid cricketer really, really into my cricket. If anyone wants to talk to me about any of those things, come catch me at the end of the presentation. I also work for a company called Zoe who have very graciously sent me over here. Zoe is a start-up in the healthcare space and we kind of have what you might call two products, a personalised nutrition product, which is all about understanding how your body responds to food and I'll show you a little bit about that in a second and a health study which is using the power of community science to tackle global health issues and this is kind of what we pivoted from the COVID symptom study which some of you may have heard of, especially those living in the UK. Earlier this year I was quite lucky to be able to try the Zoe nutrition product. These are my blood sugar levels where I was wearing a glucose monitor. On the left kind of day two or three of me wearing the blood glucose monitor and what you can see is you see after I ate something this big blood sugar spike and dip and that comes with a lot of unpleasant symptoms like crashing, hunger and fatigue. On the right hand side you can see me kind of two weeks into wearing that glucose monitor and I've kind of we've done some experimentation, I've kind of tried different food combinations and you can see much shallower peaks and troughs and as I better understand how my body is responding to food and that's kind of what the nutrition product is all about. Again if you're interested in that please catch me at the end I'll be able to show you and talk to you that more detail. Part of the reason I wanted to talk about Zoe was because Zoe, the Zoe engineering team, I describe it as a Docker first engineering team. We try and get everything running in Docker first and then perhaps there might be other ways as well but that means when developers get set up a new project so we get new developers in you need far fewer dependencies installed locally which is quite nice and Zoe is where I've really accelerated my learning with Docker and just tried to dockerize far more things than I used to before. So who's this talk aimed at? Well this talk is aimed at people who've used Docker but perhaps you're not an expert in it so you know you've used Docker builds, you use Docker run, you know some basic CLI commands, maybe you've heard of multi-stage builds but haven't used them before perhaps you want to use Docker in CI but don't really know where to get started so we'll cover all of those things. If you are an expert in Docker perhaps this talk isn't for you but of course feel free to stay. What are we going to do? Well we're going to take an example web service, in this case a fast API web service, a fast API being an asynchronous Python web framework very very similar to Flask. It's going to interact with a database and it's going to just add and create new users, sorry get and add new users. It doesn't really, the details don't really matter, just imagine it as your standard CRUD service. And we're going to use poetry for dependency management. Poetry adds a few nice things like locking our dependencies. Again if you want to know more I'm not going to go into too much detail about poetry but it's a really interesting tool and there was someone did talk about poetry earlier in a previous talk as well. So before we get into the how of Docker I think it's really important to cover the why of Docker so let me take you back five years ago. I've just graduated, I've started my first job, I'm kind of the only developer at this place and my manager comes up to me and he goes, I've heard about this thing called Docker. Do you think we could use it? And I go do some googling and I see some big words, well maybe not big words, but words I don't understand like container and image and I don't really get it. And I just say oh I don't understand and just move on and then a couple of weeks later I come across a media might call and you know we all have that penny drop moment. Well I read this one phrase and then the penny really dropped for me and it was I think it was something along the lines of reproducible builds in development and production and that's I think at the core why a lot of people like Docker is you kind of have this recipe and it then means you have kind of a more consistent environment with what you're doing locally with probably what you have deployed in production. It's much closer, that's really nice. One other thing that's actually quite nice about it is if I tell you a story from someone at Zoe, as we all are, new macOS version comes out, we upgrade straight away and then all of a sudden this developer who done this all of a sudden couldn't run anything or build anything. There was lots of compatibility issues and he spent the next couple of days actually fixing things before he could do any development and we all have been there. It's very frustrating. Since moving to Docker a lot of those problems have gone away because Docker kind of abstracts away what's running on your host machine. It cares more about what's running in you know you've got all containerizers what's running in the container so it's quite nice. So it provides this easy set for developers. It means if you're jumping between multiple projects you don't have to worry about the set up as much. You probably have far fewer commands you need to run. It's also OS independent. So the nice thing about that is you don't need specific instructions for Linux and Mac like you might use brew on Mac and you might use apt on Linux as your package manager. You just need that Docker build, Docker run wherever Docker commands and so it means you can kind of run it wherever and all you really need is a Docker demon running and then something to interact with that Docker demon often a CLI. And then we've moved to this brave new world where instead of saying it works on my machine we say it works on my container. But more seriously hopefully the fact it works on your container gives you a lot more confidence that it's actually working. So let's go back five years ago. What would have Haseeb's first image looked like? Probably something like this. I'll kind of blaze through this. We're going to use Python 39 as the base image which comes with a few nice things like Python and PIP and a few other things.  Most of these are for poetry, telling poetry where to install its dependencies and other such things, adding it to the path variable. Details don't necessarily matter. We're going to copy over the relevant poetry files. We're going to install poetry and then install all of our dependencies. Then we're going to copy over the files from our host machine into the into the Docker image. And finally we're going to start our web service. Really straightforward. Nothing hopefully too complicated there. How do we run it? Well, we've got two steps here. We need to build the image. We're going to pass the tag flag so we tag it as app. Then we run that image as a container. And again, we're using the same name app that we've tagged it as. We're also going to do some port forwarding where you see with the publish flag where 80 colon 80. And what that means is we map 80 on the host to port 80 in the container, which is where our web service will be running. So rather than having to figure out the IP address of that container, we can just access it on the host machine on local host. And that just, you know, it's a nice bit of convenience. Right.  And he comes up to me and he goes, ah, it's really cool. You know, we've dockerized our app, but now we still have a local database. Let's imagine we're using Postgres. And we're having to do some shenanigans and weird things to get it working and connecting. He's like, you know, it's really good we've got the app dockerized. Can we also dockerize the database? Because, you know, you've got different projects and we've got different versions. We've got Postgres 11 and Postgres 13 and it all gets a bit messy and it all gets a bit, you know, it's not the easiest thing to configure. So let's take a look at how we might go about dockerizing some of our app dependencies, in this case a database, but you might have SFTP server or, you know, other things that you want to use when you're developing locally. So without docker, imagine in a Debian-based system where we've got the app package manager, we probably do something like this. We install Postgres, you know, we create a service so that it will start automatically with our laptop. We create some users. Hopefully we probably have to fiddle around with permissions. We create a database and then we also have to hope that nothing else is interacting with our database. If you've got two projects and they accidentally end up using test and one deletes test by accident, what happens there? It gets a bit fiddly. So again, as we've containerized our app, let's look at how we can containerize the database and do it with docker. So we have something like this. We do docker run. We're going to pass the volume flag. What that means is going to mount a volume. In this case, it means that data will persist between multiple runs. Normally, when you stop the container and kill it, if you rerun that database container, there will be no data in there. You probably want your data to persist between multiple runs. So what we're going to do is add that volume mount and that will make sure that the data stays between multiple runs of our docker container. We provide a few environment variables such as the default database name and the default password. We do some port forwarding again so we can access the database on our local host and then we specify the image that we want to run. In this case, Python 13.4, but if your project needed Postgres 13.4, but if your project needed Postgres 12, you can specify that. Then you can see how now it's being contained to just that project and we've got really easy setup now. So if we want to bootstrap this together, you probably have something like this. We have to create some networks. We build the app. We do a bunch of stuff. You don't have to worry about the details. We'll simplify this in a second, but we probably aren't running all of these commands. We probably got it behind some script or a make target or something. We have a build.sh or a run.sh. Then we probably got some teardown work we have to do to stop the containers and everything. We probably have something like that. That's okay. That's fine. But me and Bob are talking again and Bob's like, this is a bit complicated, isn't it, Seab? Imagine we need an extra container. This script is already 11 lines long. There must be a simpler way to manage multiple containers. We do some Googling as all good devs do. We come across this tool, which I'm sure some of you have heard of, called Docker compose. Docker compose, as you may have worked out, provides an easy way for us to manage multiple containers. We can define all of our containers in one file. We'll take a look at that in just a second. Just as a quicker side, there are two Docker compose tools. There's an older Docker hyphen compose, which I'm sure most of you are more familiar with. There's a new Docker space compose. In this talk, we're going to take a look at Docker space compose, because as far as I'm aware, Docker hyphen compose has been deprecated in April. We're just going to talk about Docker space compose. Syntax is almost identical. There's nothing majorly different about the two, just for the sake of this talk. I've got a link to an article at the end where you can find out more information about why they've done that change. What do we do? We create a Docker hyphen compose YAML file. We define a bunch of services where one service is going to be a container. We have our app service here. We provide it some build information, like what Docker file to build. We provide this command. Again, we're looking to improve our development experience a little bit, so now we're going to add this reload flag. When the code changes in the container, it's going to restart our web service. Rather than what we probably had to do before was rebuild the image and rerun the container, which probably is bit fiddly. We can just simply just live reload. The second piece of that is using another type of volume mount where all the files in the root directory where Docker compose is get mounted into the app folder in our container, which means when files change in our host machine, they'll also change in our container. That then will trigger that live reload and our web server will restart.  We're going to take a 12-factor app approach, where we probably, some of this config will change between different environments, so we don't want to hard code it. Probably you don't want Postgres as your password in production. Maybe you do, but probably wouldn't recommend it. One interesting variable to take a note of is online 13, where you see Postgres underscore host. Rather than needing to supply an IP address, we can actually just supply a service name, which is what we're going to call our Postgres container as well.  Let me do the lookup for you. It's one, seven, two, blah, blah, blah. As Docker IPs can change when you run them, this is quite nice, rather than having to hard code stuff, so less boiler play. We also do some portfording. I've stuck the loop back interface. Again, I've got a link to an article at the end where you can find out a bit more about that, but that just means it will only be advertised on our loop back interface, which is only accessible on our host machine and won't be accessible on other interfaces, which potentially, if your firewall isn't configured properly, could allow other people on the same number to access your container. Then we have this Postgres container. Again, the Postgres host variable here matches what we defined here. The rest of the definition is very similar to what we had before, just in YAML, rather than a Docker run. As you can see, now we have one file, rather than that big script. Then how do we run it? We just do something like this, rather than Docker-compose. We do Docker space-compose up. Then with the build flag, this will build our images and then also run the container. Run the containers all in one step. Then to do a tear down, you can just do Docker-compose down. To summarise this section, Docker-ise your app, Docker-ise your app dependencies, and then use Docker-compose to manage multiple Docker containers. Me i'n bob a talking again, and bob's like great, we've kind of got a whole tech stack Docker-ised. But we're having this problem where, and I'm sure a lot of developers encounter this, where your tests pass locally, but when you go to integration pipeline, they're failing. It's a real pain, because you're like, ah, how do I debug this? He's like, you know how we've used bob's like to me? You know how we've used Docker to kind of have a more consistent environment between development and production? Can we do the same thing with our local environment in our continuous integration environment? We start taking a look how we can do that. Basically, what we want to do is run our tests within Docker. How can we do that? With our current setup, it's not too complicated. Imagine we're using PyTest as our runner, and imagine we're already installing it as a dependency. We can just do something like this. We do Docker Compose run, then the name of the container, app, and the command we want to run in the container, in this case PyTest. If we didn't change our Docker Compose configuration, that would just stop the app container. Let's pretend our tests needed to interact with the database, and we wanted the Postgres container to also be up. Either we'd need to run a command beforehand to start Postgres, or we could add this depends on clause where the name matches the name of the service again, so this depends on, and that will spin up the Postgres container beforehand. That's quite nice, because then we only need one command, and so Postgres will run, then our app container will run, and then it will run PyTest within that doc container. Again, that name matches what we have here. How do we get it working on our continuous integration pipeline? We don't want to be this developer where it works on my machine. Imagine we're using GitHub Actions, which is one of many tools you can use for continuous integration, along with CircleCI, Travis, GitLab, CI, et cetera, et cetera. This is just a standard workflow file. Let's take a look at how it might look before. So we need Postgres, so we define it as a service. We check out our code. We're going to use Python 3.9. We install poetry, install our dependency. We export these environment variables that we need again, because 12 factor app, and then we run PyTest. That's okay. It's a bit complicated, and as we've seen, it's a bit fiddly and sometimes things can just break in funny ways and you spend time when you don't really want to be doing that. Or after, we can just do something like this if we use Docker Compose. We can do Docker Compose run at PyTest and you'll notice this is the exact same command that we have, that we're running locally, that we're now doing in CI, which is quite nice. And hopefully again, it provides you with a bit more confidence that what you're doing in CI, what you're doing locally, are much closer. And so if something passes locally, it'll also pass in CI.  So to summarise this section, Dockerise your development tasks, you know, tests, linting, database migrations. At Zoe, we use Alembic for database migrations and we just have that all Dockerised. If you set up volume mounts, you can even copy over those migration files locally. Try and use Docker on CI to have that consistent environment between what you're running locally and what you're running in CI. So Bob comes up to me again. He goes, I see this is pretty good. Tests are running and when they pass locally, they pass in CI as well. But he's like, CI is a bit slow though. Takes three minutes and I'm really lazy. Can we speed it up? And so again, me and Bob start doing some googling and we look up what have people done to speed up their Docker images and the Docker build and all that stuff. So one thing we come across is a lot of people recommend you have smaller images. And there's a few reasons for this. One is to remove if we remove redundant dependencies, there's fewer things that can break. So there's fewer things that are interacting with our app that can break in funny ways because you don't need those dependencies to run in the first place. From a security point of view, there's fewer things that can be out of date and fewer things that can be exploited. So a hack or someone malicious trying to get access to your app will do something you don't expect. There's fewer ways they can do that. Less storage.  So you're probably saving a little bit on cost and then also upload, download as well, pushing those images and downloading or pulling those images. You're probably saving a little bit of time. So how can we do that in our case? Well, just five characters in our case. We just add a hyphen slim. This slim base image removes a bunch of dependencies we don't need, like a curl, W get, a few other things. And it really simplifies things. You could also look at using Alpine Linux. Again, I've got a link why Alpine Linux, at least my personal experiences with Python has not been fantastic. Again, link at the end. So if we do a quick comparison between our old image and our new image, we're saving about 700 megabytes from just the five character change. But I think the most interesting line there is our CI pipeline runtime is now 43 seconds quicker. And so if you imagine you have like four developers and you each run the pipeline 10 to 15 times a day because you're always pushing code, you're getting some significant savings there, which is quite nice. So to summarise this section, aim to use smaller base images, remove unnecessary dependencies and try and reduce your build time. If you do a bit more googling and I want to take this to the nth degree you end up like this, Pepe Silvia, from one of my favourite TV shows. And what you realise is we are installing our development dependencies that are running in production. So imagine we have PyTest, Flake, ISO, pre-commit, all these things that we probably don't actually need to run our application and production. But we also need them because we're running our development tasks in there. So how can we, what can we do? Well, we can look at something called multi-stage builds. Stick your hands up if you've heard of multi-stage builds. Cool, a decent chunk of the audience. So my general pattern with multi-stage builds is I will have a builder step which has a more larger image. I will build my application or dependencies wherever it may be. This will create some artifacts. I will then copy over these artifacts and you notice when we do the copy now in that step two, we're not copying from the host, we're specifying a previous stage with builder there. And I copy over those artifacts into a slimmer image. And when you actually build your image you can specify what you want to build for, builder or main in this case. And it will throw away the other images that you don't use. And it's all about this build versus run. Often you need more dependencies to build things than you do to run. And that's in a language like Golang or C where they compile, you'll see that that becomes a bigger difference. But for Python, it's mostly just around building up dependencies. So let's take a look how we can do that with our current image. So I'm going to create a stage. So the first stage I'm just going to alias it as base. I'm then going to have a builder stage which is going to install all of our production dependencies. So on line 29 you see the no def flag. So it's just installing our production dependencies and no development dependencies. Next I'm going to use the builder stage as a base and I'm going to call this next stage development and that's going to install all of our dependencies. So that's going to include pytest, flake, all those things. And it's going to do much as what it was doing before. And then we kind of have a split now. We have a production stage which is going to use base as the base and we're going to copy over just the production dependencies from that builder step and it's going to throw away everything else. At the moment probably you're not going to see any significant savings but you'll see in just a second how this can help. Then in our Docker compose file we want to come and add a target of development. So probably when we're building locally we're going to want to target that development image not that production one but when you're publishing your production image you will specify target of production. So if we do a quick comparison of our old slim image versus our new multi-stage image but targeting production you can see size wise we're saved about 80 megabytes. That's a bit conservative because in my tests there wasn't that many dependencies. As you have more dev dependencies that discrepancy will be wider and you'll be taking up far more space. Our build time is a little bit slower for the production image because we have more steps now but I'll show you a way how we can speed that up in just a second. We can use this cache from. So if we add this cache from into our into our Docker compose file again if you're publishing your images to container registry which at ZoE we do we publish our development and our production images to a container registry if the provided image and your current build have layers in common you get the same speed up as if the image had been built locally. Anecdotally I noticed it saved about five seconds when running on CI but it really depends on your change that your change will really depend on how much of the cache you use. Cool. So Bob comes up to me again he goes Haseeb sorry requirements have changed which I'm sure has happened to no one ever but he goes he goes instead of it being a synchronous call to create new users we're going to listen to an event now you know we're going to subscribe to some event and when that event comes in we're going to create new users now. That's fine at ZoE we have you know we have a pubs of library which we can use to subscribe to events that's okay but our libraries are private Git repositories so that means to get to work with poetry I'm probably going to need to have inject an SSH key which will allow us to clone those repositories and install it but I just want to inject an SSH key just at build time and I don't probably want to keep a local SSH key because you might end up accidentally doing this where you upload your private key and if someone gets access to that you know they can do a lot of damage. So let's take a look how we can use our local SSH key to do that. So first thing add this pubs of library to our poetry dependencies then we come back to our image in the builder step we're now going to install open SSH and Git and much is the same as we had before then the cool thing we're going to do is we're going to use this mount type SSH and what this will do is it will inject some SSH key just during that one step and it means when we're installing our production dependencies we will just have it just during that step you'll have that SSH key and obviously you can specify this in multiple steps and you can actually we'll see in a second how you can just use your local SSH key which I was using to clone projects already and how we do that is actually we do SSH add we add our SSH key to our SSH agent then we do doc compose build with the SSH flag and default which will use the default credentials in our SSH agent so I haven't actually really had to do anything I haven't had to move any SSH keys I already had them existing and that's quite nice. In terms of CI we have to now inject an SSH key most CI platforms allow you to inject secret somehow so we're going to inject this as a secret we do have to run a build beforehand and a quick comparison now you can see some significant savings so if we have our old image imagine with no multi-stage in our multi-stage image with production targeting production you can see now we're saving 200 meg because we don't have open SSH and Git in our production image which we don't need to summarise this section use multi-stage builds to have slimmer production images leverage SSH key injection during build time what did we do? just to summarise this talk we dockerised the app we dockerised its dependencies we used Docker compose to manage those Docker containers we used Docker for some development tasks and we looked at multi-stage builds link to the slides and some code examples any questions? Yeah, thanks for your talk you told me that your DEF looks like your CI but how does your production look like? Relatively similar I wouldn't say it's too different from development obviously there's always going to be differences it's probably going to have more memory and more things like that it's going to have the database is going to be connecting to is going to be more powerful etc but for the most part what we have running locally will be very similar to what we have in production to the point where we have if we have SFTP servers we have a mock SFTP server that we can use as well to test when we're doing our integration test to test that if we're uploading files or pulling files from an SFTP server that server is there and that code is kind of working so that gives you more confidence that when you do push something to production that hopefully it will work obviously there might always be a few teathing issues but generally I think we do a decent job at Zoe of trying to match development with production and Docker Compose really helps with that because you can have it all in one file but you're not running Kubernetes or something like that? We do use Kubernetes so that's what I'm saying there are a few differences to what you have locally in production Cool, I think that's everything then so we're done