Okay, good afternoon. My name is gamma night burger. I'm with wreck space and we are here to talk about load balancing That's basically the our introduction glass the 101 tomorrow. We have more advanced things going on Also in case you are here for the lunch. That's not a lunch here. It's It's open. It's load balancing. Here's my dear colleague. Oh, yeah, I'm Adam Harwell. I'm with go daddy I'm gonna be helping German out with this talk today and I just have to remember to face the mic And as on the slides you find the Michael Johnson. That's our Project technical lead. He couldn't be here today. He would love to be here and he wanted us to video him in but we said no He'll do it all by ourselves Okay, so then let's get started. Whatever you're going to talk today I want to talk about what is load balancing at all. What are some of the use cases for load balancing? I want to talk about how we do that in open stack And we talk about how you can do it in the back end what providers we have Talk a little about how you can set them up with a api with a cli We have a graphical use interface and then a bunch of other things you might not be familiar with like session persistence tls termination and l seven or layer seven l seven load balancing And so let's start off for people not familiar with load balancing. What is it all about? So let's imagine we have a user Who wants to get to open stack.org his sensors request It gets sent by the load balancer to a server server returns it And then he gets his website Now with the second user then this request and it goes to another server And means send back To the user so they both use the same dns address which went probably to the same ip address But then was serviced by two different servers And that's what a load balancer does. It basically balances the load of incoming web traffic between However many servers you want to put there. So there are four here, but in production environments people have hundreds so so, yeah this Is that so basically and then what are some use cases for the load balancers As I said the first one is you want to distribute a network load between many servers So a lot of requests coming in and then it's being distributed between many servers There's a one increased availability So a load balancer usually checks the what we call the back end servers and if one of them is not Responsive then it will take them out of rotation out of rotation means that subsequent requests by users Don't get sent to this server until it's been repaired and be Available again And so users don't see downtime because if you just do it that way and you always hit this broken down server users Keep getting their 500s or whatever So it also increases the ability availability because now you can have servers coming down and everything still works We will talk later about ssl offload and centralized certificate management So there's a little bit about that Another use case a lot of people have is protocol protocol conversion. Some people might want to Advertise the services as ipv6 But still under data center ipv4 so load balancer can take ipv6 traffic And convert it to ipv4 or the other way around they are really modern data center everything ipv6 But I still want to have an ipv4 address where people can come to them And then the load balancer can then translate ipv4 requests into ipv6. So it's very common because Then l7 policies you have a extra slide on that where we go more into details Just an example right now is so static image files Might be on a on different servers Then you have your application server those servers might have caches and things But you still want them on the same address so still going to say open stat.org slash images You don't want to say images dot open stat or when I do it that way and then And then the load balancer can redirect that to specific image servers and the application Things to specific application servers Another thing load balancers can do for you. They can abstract the physical network topology So basically all what people All what your users see is the address of the load balancer They don't really see how it looks behind it And that basically allows you to do upgrades or you can keep adding new Um application servers you service in the back end without anybody noticing can take old ones out And you can move things around as you see fit without Changing anything and keeping all your services up Yeah, there's actually a neat trick you can do with this I don't know if you have tried this But if you're introducing a new version of your software for example, you can actually just throw One node into your pool with the new version that way like every 10th or 15th requests hits that or you can wait it to be even lower Watch what's happening with that and if you notice that something's going wrong You can easily just pull that right back out of rotation But if it looks good, you can roll all the rest of your nodes in that way You know really minimize the impact of a possible bad upgrade. So we use that trick sometimes it works pretty well There's the same with a b testing if you want to do that just post stuff in and see how people react Okay, so that's the open stack model how we kind of broke that down So at the top of the things we have a load balancer, which basically this object keeps the VIP the IP under which you can access a load balancer This is our top level bar check So you can only have one of those ip's associated with load balancers. So to kind of Think about it. So the load balancer object holds the ip address of your service Then we have listeners they do the port. So like if you have an hdp traffic you put in a hdp listener at port 80 You might have a hdps there too, then you put in a listener at port 443 So basically listen us they specify the ports Under which the system should listen on this ip. We specified on the load balancer Now they listen now we have that end. They're listening to something requests come in they need to do something with them And they basically forward them to what we call a pool a pool is a collection of members with members You mean back end servers Which basically then do the do the application or serve the website or whatever needs to be served And we we kind of put them together in the pool And as you can see you can use the same pool for instance for two different listeners in the same load balancer The other thing we have is a health monitor So you can specify how the pool checks the health I said when a server goes down when it isn't responsive We take it out of rotation and a health monitor allows you to specify exactly When we decide on that so so there's for instance could be a symbol as just hitting the hdp page and if it's a 200 We are we are keeping it or it could be going to different port Doing internal things whatever to decide that this members unhealthy The other thing Which is you could have the same server At the same server as a member twice if you have a web server listening on different ports It's very common if you want something like kubernetes where they put all those pots on Very esoteric ports and so you can then add each of those ports As a member even if it's on the same ip in your back end And the computer will load balance that for you Okay The other thing um, so so we talked about the model the other thing when I talk about is How how it does actually happen in real life in open stack. How does the load balancing work? So when you create a load balancer you can specify a provider And that will basically implement will do the work of load balancing And the providers available are our octavia reference implementation So so what we are working on is octavia. That's the open source open stack Load balancer. It's operator grade and everything But there are also hardware vendors who sell load balancers and they have written drivers for our load balancing system There are a 10 brocade citrix net scaler F5 networks camp technologies redware and also vmware and sx So if you happen to have something like that in your basement you can continue using that with open stack Another thing we have is a legacy h-oproxy namespace driver Which we have planning on sort of deprecating because it's not really scalable highly available and whatever And so we don't really want To have that out there because people usually use load balancers to get their services highly available highly scalable And and if you have a load balancer, which can't do that that defeats the purpose of load balancing Okay, so how Can we set up things our load balancer? Well, we have an application programming interface So it's all like everything in open stack is all microservices rest base and so on so are we So we have a rest interface We can basically send some json to which specifies a load balancer and you see in the middle of the slide See how it says load balancer That does the load balancer can give you description. You have to give it a subnet where you want the whip beyond so and Can give you the address or not other if you don't give it the address it will allocate one itself, but if you Want to give it to that? That's good. You can give it a provider like in this case We are asking for an octavia load balancer And we always like to give octavia load balancers the name best load balancer If you like them the most I'm talking about The subnet and those things so our load balancers they So in open stack you can have subnets some people have public subnets some people with private subnets So you can put a load balancer for instance on a private subnet it gets an ip And then it would load balancer under this ip maybe want to expose it to the public You can then put a floating ip on it other people have public subnets you can put it on there You can keep your members still on some private subnet on some private tenant network And add them to it and the load balancers basically in the middle between your public subnet and your private subnet And has ports in both So you can be very flexible with that technology and a lot of And there are some people have provider networks for their public subnet So they have more performance we support that too. So it's really what works for you Maybe you don't want to even expose it to the public and just have it to load balancer databases Whatever you want to do. So there's all kinds of possibilities The other thing Our api supports is a single call grade. So so you can create everything pools listeners members, whatever you want in one call To make that much much quicker if you Need to set up them in a hurry The other way we do things is our load balancing command line interface like everything in open stack You also have a cli tool and We are we are having a python octavia client which will be coming in in pike right now We are still on the neutron client So if you are in a pre pike release like okada or even earlier You would have to use the neutron client, but the commands are almost the same And you can also create a load balancer with the command line So it's again the name best load balancer and this time we don't give a VIP address We just give the subnet and I said in that case the load balancer will we will allocate an ip for you based on the dhcp system might have in neutron and then Then when you run this command it will return to you some some statistics What's happening operating? So each load balancer starts with our operating system Static operating status offline because it takes some time to build it and provision it and you see the provisioning status pending create and then After some time it will switch to active One thing to keep in mind If a load balancer is in a pending create pending update Status, then you can't do any changes to it. So if you then would say, okay, I want to change the name I want to add a listener then we'll get back. You can't do that until it's in an active state again That's just For us to keep things Seek when and make things more logical because otherwise just queuing up stuff and yeah gets gets messy Okay And we also have a horizon dashboard and my colleague will show you more about that All right So, uh, we've actually a note about this. Um, I know In the past we've had some questions about, uh, our dashboard Because there was a I think we missed releasing a version there haven't actually been any changes to it since what uh, maybe Newton Yeah, I think I think Newton was the last actual change we had to the dashboard because the api has been stable since then So I think if you're if you notice that there's a version missing just install the version before that and it's the same thing Um, we we started doing releases. So so we started doing so basically people got confused and so we started releasing things But it didn't change the code. Yeah, we've we've done releases since then We hope to have some a few changes around this In the next Maybe queen's release, but for now what you should see in pike should be what we're showing you today. So Just gonna walk through really quickly creating a very basic load balancer. Um, so this ui is Made to capture the 95 use case There's some stuff that you'll notice here Maybe if you've used our api that's that's missing But the api will let you do a lot more complex stuff. So Just Let me just check when we designed the user experience for this ui What we had in mind was that somebody who has no idea about load balancers can get one very very quickly So when you they go through that will everything will be pre-populated It will be very easy for people to get a load balance. Of course, we had to cut down on complexity. So But people get if they have no idea to get to one very quickly So I'll go with yeah, and I'll have I have some more notes about that that I can explain after this So just walking through creating a very simple load balancer here So you would just go to the load the load balancer section of the ui click create load balancer We'll get a load balancer description up here. We'll put something in octavia Yeah, octavia rocks who I will select our subnet We're gonna go ahead and put this one on the private subnet And go to the next screen So now we would define our listener. So like I said, this is where we say what port and protocol we're actually listening for Um, so in this case, we're just gonna do hdp80 pretty standard We're gonna make a pool Round robin is probably good enough for us for this demo So we'll go ahead and define some members Here we'll just pull in a couple of our web servers that we've got in nova already Um Let's us select things really quickly. Uh, and then We will create a very basic monitor Just a little hdp monitor here that'll check for status code 200. So once we click create We'll go ahead and send the api requests Our load balancer will be in pending create status It'll be offline until it's fully created And then you can just you know check this page again until the load balancer is up and running So I don't think there's anything else to this demo Oh, here we go. We're refreshing it. Yep. And now it's online and active So You can from here you can do some of the more complicated stuff like add more listeners to it, etc The initial create workflow just has the one listener because it's just trying to get things up and running quickly So Do uh some quick notes about session persistence. Uh, if you are not familiar with session persistence um, basically It allows us to keep requests Going to the same server for the same user in case you have like some sort of state that you're maintaining inside your application so Without session persistence. What happens when you go to a website like open stack.org is your request will go in It'll go through the load balancer be sent to a server return to you And then if you make the same request again as the same user or let's say go to the news Site it might send you to a second server Because it doesn't have any sort of state tracking built in So if we enable session persistence, there's a few methods to do this but Http cookie is a really easy one. So if we enable session persistence, it will Be somewhat intelligent about things. It'll send the user to a server that it picks for the first request And then for subsequent requests, it will attempt to send the user to the same server obviously if that server goes down it will Redirect them to another one, but if it can it will send the user to the same server The other interesting thing that we can do with load balancing in open stack is we can do tls termination at the load balancer So this makes the load balancer actually decrypt the request When it goes to the before it goes to the back end server and then re-encrypt When it's returning the response to the user So this has the the benefit of all of your back end servers don't have to handle all the heavy lifting of decrypting your tls requests All of that is handled by the load balancer And if your load balancers have special like hardware to do that you can decrypt way more requests that way Very quickly It also simplifies certificate management because certs only need to be installed and updated on the load balancer You don't have to maintain all of your certificates on every app server in your fleet And they're stored they can be stored in a secure location. So octavia Uses and neutron albass uses the barbican project to store our certificates So the user will actually put their certificates And their private key in barbican, which uses a secure storage mechanism And then just pass the id reference to the load balancing so we can go fetch it from there So when we when we handle it, it's all over hdps We throw it away when we're done with it And on the load balancing servers It's kept in memory or In the case of octavia or stored However, hopefully securely The third party vendor does That it also allows for some advanced load balancing of tls requests like header inspection and injection government There's an important thing so so when we had on the case where we didn't encrypt hdp requests on the load balancer and hdp protocol allows a client to specify a timeout And then when you go and the client specifies a timeout, which is longer than the timeout You have set globally on the load balancer then the load balancer will prematurely cut a connection And it will be very bad experience on the client So when you do hdps termination on the load balancer, it can pass the hdp headers See that somebody requests a longer timeout and then implement that on the load balancer And make sure that doesn't cut a connection prematurely So that's it's usually best practice to kind of terminate a load balancer So it can do the timeouts and read all those other things which are in the header and do something smart about it But if you don't do that be mindful that you Might end up with prematurely Disconnected things if you don't choose your timeouts wisely on the load balancer Yeah, definitely that I know also it's useful to be able to inject headers like It exported for exported ports So your application knows where the request is coming from because otherwise that gets masked in this process The only other thing I would note about this is we don't do Re-encryption to the back end yet So what that means and we'll see in this little demo is that when your request Comes into the load balancer It's encrypted but then when it goes to the back end member it's decrypted So this is fine if you're on like a private tenant network If you're confident of your local network security But if you're not It would be good to Push for us to implement re-encryption because I know we're looking to do that. So We're also I don't know how many of you guys are upstream contributors But we're always looking for for help on some of this stuff. So Yeah, let's see. So the last thing I want to talk about I think is Layer seven load balancing. So if you're familiar with the OSI model Layer seven is just the application layer. Mostly most of our load balancing happens at layer four But you can do some interesting things at the application layer. So We have two objects that are relevant for this in open stack We have the policy which is describing what you want to do And then the rule which describes when you want to do it So an l7 policy could be like I want to reject all traffic or I want to redirect traffic to this url Or I want to redirect traffic to this pool of members And then the rule could be like if the host name is abc or if the url path is slash images or if the file type is exe Or any of these things starts with ends with contains So for example, I could say reject all traffic where the file name ends with exe Just I know I don't serve executable files. Let's not take a chance. Let's just block possible malware attacks You can also do things like uh redirect to url is useful If you wanted to redirect all your traffic from htp to htps So you can actually put in a policy that says redirect to url htps colon slash slash urip And do that always And it are on I think path slash is how we do that It's that captures every request and that way if a user goes into your website Unsecure, it'll automatically redirect them to the secure site So just an example of what things look like in this case So I know we had our our load balancer here And listeners and pools and you've seen that before German showed you that part What we have now is on our Our listener port 443. We have an l7 policy And I guess we're saying redirect to a different pool And then we have some rule we didn't define what this rule is but What this is going to do is if it matches the rule It's going to instead of forwarding traffic to The default pool there the the one with our two members It will forward traffic to an additional pool with this one member so Just in case you have like two apps running on under the same ip And they're like separated by different addresses You could run them both on the same load balancer and just split them off with this rule so Like I said earlier, we love when people get involved Whether that be contributing code or just giving us comments because we love to hear what users actually are looking for We don't like to operate like In behind the scenes in a inside of a black box or something. We want to hear what you guys have to say so if you have Suggestions if you have Bugs that you've run into by all means Come report those to us. Talk to us. Give us feedback. Yeah. Yeah for bugs Launchpad slash octavia Is just file bugs there. We really do like to see stuff show up there because If we if we don't fix stuff, you know, it It's just as hard on us when we have to track this stuff down by hand because we're going to run into it eventually hopefully But any reports you can give us are are great And yeah, definitely get involved. We have weekly meetings on irc We're always around on our irc channel Yeah, i'm rm work. This is ex-german And our fearless leader is johnson. Yes michael johnson The ptl is johnson. He wasn't able again to make it today, but he's on there as well So thank you very much for coming Questions. Yeah, do you have any questions because we think that's probably the most valuable thing here is if we can Get your questions answered I'll run around in the microphone. Oh, is there cool? Awesome. Yeah, we are recording this session So it would be very good. Awesome.  No As far as I know, it's still possible to use lb AA as As was the agent only so I would like to know if this deprecation of the h.a proxy namespace driver Is it for octavia only or for both projects? so Octavia right now is In the process of adding the Existing drivers under it. So there's another talk actually. Did we put the slide on? Okay, we didn't do to talk. Okay, we don't have the other There's another talk where we're going to talk very in-depth about that tomorrow About exactly what's going on with octavia versus neutron lbass right now neutron lbass Not octavia has then the namespace driver running under it octavia does not yet Octavia will as of I think queens is our target Support third-party drivers under it, but for now, that's all still under neutron And we have and we understand a lot of people are still using the namespace driver So there's so so there's a plan to maybe move it in its own repositories So the community can take care of it because as we said we Yeah, we don't think people really need a non scalable non ha Driver, but it's very useful for testing. So the thing about porting it over. Yeah Yeah, I know you can yeah, and we're actually using ha proxy in our ha solution, which is octavia It's just the namespace driver itself is not a great implementation of that So this is this was my second question because I was asking what's wanting to ask Which features depend on octavia and which are with Yeah, just the agent but now wait till tomorrow Yeah, sure Any other questions? Okay, I guess then Thank you everybody for coming. Please get involved and Yeah, thanks


What is going on everybody? This is Giovanni from the options training channel Really quick as usual. I want to tell you exactly what's going on I'm actually having to record this video for you today during my lunch hour Because I'm gonna have my son in the evening and I want to spend more quality time with him So I probably won't get this video out until after work after five o'clock easily Mountain standard time. That's why I'm coming at you and you're seeing live market action right now So I did get myself into a trade today winning trade already. I got a signal for the MOBO band strategy got it here at 830 candle one-hour candlestick and I didn't actually get in my full position here on this candle at the start of 930 mountain standard time For those of you new to my channel welcome greatly appreciate you subscribing to my channel a quick breakdown as to what you're seeing here on The far left we have the intraday one-minute chart of the options that I am trading. Those are options are the 326 calls that expire in eight days January 21st and the middle Chart here is the one-hour chart on spy and the far right Chart is the daily chart of spy Let me show you my trade That I got myself into I bought in 13 minutes before the close of the candle, which is not great It wasn't bad because I'm in a winning trade, but I got to get better at my entries there bought at 917 man's standard time my time 235 bought a second one at 238 at the start of that candle right right here this one and my average at this Point was two dollars and thirty six cents thirty six five That's my actual average price there and I sold one my strategy involves me selling half of my position for a 10% gain So I locked in some profits and it got up there to 59 and I'm holding the other one for higher gains Now let's see. They're currently trading at 264 by 266 I'm hoping for bigger gains here again to break down my strategy I sell half of my position at a 10% gain the other half either or either it's gonna come back down to my break even point at 236 five, but I'm gonna probably sell out at between anywhere between, you know 236 or 237 somewhere around there or I'm either I'm gonna sell for way bigger gain right now We're just hovering right there where I originally sold they got up as high as two dollars and seventy cents Again, I'm not too worried about it right now right this minute But I would be lying to you guys if I told you that this wasn't uncomfortable Believe me, this is very uncomfortable and that's okay as soon as I got in sure it went up But during this part these two candles, especially this one since it came back down Those options got down to two dollars and forty cents I was thinking that I was about to sell out and really and truly my attitude right now is I don't care What it does sure I do I wanted to go up higher, but really I'm looking for gains I'm not in this game necessarily just to see an X amount of profits Percentage wise when I want to play the stock market game. That is my attitude. I'm playing the Infinite game not the finite game the infinite game and I I believe that I have a very good strategy very good plan For for this game now, so stay tuned. Let's see what happens tomorrow morning at the open I'm hoping I hate using that word hope when day trading when trading money But I am hoping for the stock market to open higher have a gap up higher It'll allow me to sell at bigger gains So unless something happens down below Let's say it just comes crashing back down and those options come down to two thirty six two thirty seven around there I would be selling out. We'll see what happens only time will tell right? Thank you everybody so much for tuning in This is a quick and short video. I'm making this or recording this on my lunch break So I apologize if it's very vague if you have any questions or concerns about the strategy that I'm using I'm gonna leave my email down in the description below. You're more than welcome to email me with any questions or just post up a comment with your question that way everybody can see What people are asking and see my response if you didn't buy into the vertical spread options trading Offer exclusive offer that I posted up a couple days ago Getting in on the $45 a month service for $15 a month. I'm so sorry guys But I will keep you up-to-date with any other promotions that might happen in the future guys So don't forget to hit that like button down below Also hit that subscribe button or comment down below with what wait, what did you trade? Did you make money? Did you lose money? How can I help you become a better day trader guys? Thank you so much everybody for tuning in I will see you here on the very next trading video hoping it's a green trade. Take care


Our valiant veterans who are with us this morning, participants to the 2023 Philippines-United States Balikatan exercises, fellow workers in government, other distinguished guests, ladies and gentlemen, good morning. My beloved countrymen, we are here today to commemorate a defining moment in the history of our people. We are here to once again remember the heroism, valor and sacrifice of the countless heroes who, with every ounce of their being and often with their passing, have made this hallowed ground. This ceremony gives us an opportunity to pause and reflect on the present peace that their sacrifices made possible for us. And this month, more than 12,000 American service members will visit the Philippines to work and train with Filipino service members shoulder to shoulder in the largest Balikatan exercise ever held. We thank our heroes, those who fought and bled and died here. May the Philippines live, may our veterans live, may the Philippines live. Thank you.


Damian. Yes. So hello everyone. Welcome to the Jenkins infrastructure team meeting for the week of the first week of August. So let's start with a few announcements. So the weekly 2.305 has been released. So congratulations on the release officer and everyone involved. I assume because I did not take part on that part, Mark, can you confirm there was no issue on the infrastructure part for that release? I haven't double-checked doing the weekly release checklist yet. So I've got to check still the Docker image arrived. I assume that you and Tim were discussing Docker image build, but I haven't checked to see if it's there yet. So need to, whoops, Mark, to run the weekly release checklist. The update is 20 minutes ago. You saved the website. So that's good. I mean, while we're here, I'm just going to go ahead and check Docker hub. Let me see. We have the tag yet. It's there. So I cannot confirm that we have all the expected tag, but at least we have the weekly tag 2.305, slim, alpine, 11, 7, Selma Linux, and Russia. Excellent. Okay. So yeah, it sounds good. That means no publication issue. So the last elements that we tackled down with Tim have been fixed. So for the record, depending on the kind of hypervisor and VM and cloud provider, when you enable Kemu, the setup of Kemu being enabled might be persisted across reboots or not. So just to be sure, Tim did the force enabling it again before any pipeline and it's okay. So if the release went successfully today, it means that Tim's fix has been successful. So yes, thanks, Tim. So Damian, does that mean we've done a multi-arch release as well, or not yet? This is still single architecture. Not yet. However, the images have been built and tested and rebuilt on the publication environment, but not pushed. If I am correct, this information, the publication, I'm not completely sure. I need to remove the dust on my Raspberry Pi testing. Okay. All right. So multi-arch images have been built, but not yet published. Exactly. I need to check the code or ask Tim for confirmation. Let's say that will be a goal for the team meeting next week. That's an information I'll share. And maybe the next weekly could enable pushing this new experimental architecture. That would be exceptional. That's been on our roadmap for an extended period. That would be a great accomplishment. Now the second announcement. So we have to prepare for the next LTS release that will be end of August. So that one might be a bit tricky. Mark, I will let you on the line if there are elements related to the infrastructure, but the JDK11 is the main one as far as I know. Right. Yeah. So we're changing JDK11. The plan is JDK11 as the default JDK for Docker images that do not specify a specific JDK. So for instance, latest LTS, LTS-alpine, et cetera, 2.282.302.1-slim, all examples of that. And so that's a question for me. Does it mean that we keep the old JDK8 still being built, but with the suffix, the JDK8? Is that correct? That is the proposal. And that was what was discussed at the contributor summit. And that's the phrasing that is in the draft Jenkins enhancement proposal that I hope to submit today. I'm way behind on getting that submitted. And I apologize sincerely to everyone for that. But Tim Jacome has thankfully looked at it and others have discussed it with me. So we believe we're OK for that plan. I'll publish it and we'll see where we go from there. OK. JDK8 should be kept but defined. Yeah. And that's your performance improvements are crucial for that because that means we're increasing the number of images that we're actually building. We've previously been building only alpine for JDK8, for example. And now we'll be building alpine for both 8 and 11. So because of thankfully DockerBuildX bake should help us still keep the performance reasonable. I think these are the folks at Docker that we need to congratulate for that tool. We do. We need to thank them profusely for that. And OK. So if you see this recording and you already are using Docker images, you can start as for today by adding the dash JDK8 if you want to keep using that image. So you will be sure that that that is always a good practice. But yeah, don't let this change by two and you can already change the tag. The image are the same. They're just aliases. So you can start right now to fix your dependencies. So you can take then the time to switch to JDK11. If you need some additional time, you won't be forced by that chance from the community. Yeah. So good insight. Thank you. And that's all that I had on. There are certainly other changes. The change log has not been generated yet, but we'll likely do that in next week's documentation office hours with Dheeraj Joda, Meg McRoberts and Kristen Whetstone. OK. I have one more add-on for us for the infra. We need to audit all the changes we did to the whole release process, including both the normal process and the Docker image publication. Because as far as I remember, the latest LTS, we forgot some that were done on the weekly. And so we add to cherry pick. I think that's you, Mark, who opened the code that issued during the LTS release. So it's not really time consuming, but still, if we could have that good target for the infra team, if we can audit any change that could help. I'm thinking specifically on the pod templates and the publication for multi architecture images. Right. So the Docker images, we build from a single branch. So that should be OK, because Docker build processes are doing both LTS and weekly from a single branch. However, your point is correct that release and package repositories for the Jenkins core release need to be, we need to be sure that we've kept those up to date. And that's a checklist item that I have not added. So let me give myself an action item, add to the Jenkins release checklist, because it should be there. And I had said I would do it, and then I failed to do it. No problem. Don't hesitate if you need help on that one. Don't hesitate to delegate. If it can help, I'll let you the judge of that part. I am happy to take care of it, particularly because it's one that I said I would do. I should do what I said I would do. No problem. There is no shame in asking for help or asking for delegation on this. Great. OK. So these were the announcements. So then about the, let's say, the weekly activity of the infra team now. So this is the nuts part. So first of all, a progress on Docker. So with the recent changes, Docker Buildings, et cetera, we discussed that last meeting. So if you're interested, look at the previous recording. So this week, team started to work on the Docker agents. And I'm helping him on that part. So the idea is to use Docker Buildings as the default builder for the repository Jenkins CI slash Docker agent, which is related to the base image Jenkins slash agents on the Docker hub. That image is the foundation for the inbound, outbound, the former gen LP agent and a bunch of more images. It's the base image that has Java declined on a bunch of different Linux distribution. So team did a cleanup on that one, enabled Buildings and enabled everything we did on the controller image, in particular, the test parallel. The goal is to shrink the build and test time for Linux. We are one test away of merging that part. So it's end of week. It will be finished. It's only a side effect of parallelization of the test. And we have identified the issue. We see exactly the same result. The time for the build part only has been shrunk fourth time from four to one minute. The impact on the test is not that much. It's 10% only. But overall, the build and test of all the platform on Linux is now at four or five minutes instead of 20 before. So same kind of improvement overall. Now Windows has to be the next port. And it also helps to clarify, as we did for the controller, the list of images supported on the tags. So the GDK 11 as default will be easier. We should not be able to catch some. And so we cleaned up and also used that to remove some unused or not maintained Windows image of the agent, such as a nano server on GDK 8 on Windows or the whole Windows server core. GDK 11 still has all these declination, but on GDK 8, they have been removed. So here we are. I think the next step next week will be the inbound and outbound agent. The discussion and the exchange have been started, had been started on the IRC about maybe merging all the repository. Right now, I'm collecting all the knowledge from Oleg and from other former contributors that will include you, Marc. On the reason, I want to confirm the reason why we split the repositories to see if there is a compatibility or not. The goal will be to have all the Jenkins agent image on the Jenkins slash Docker agent repository. And all the other ones should be archived in the future. So kept as it has knowledge with a message to say, okay, look at this one. And so we could benefit from a single process build that we don't have to duplicate or update everywhere. So less maintenance pain, easier contributor setup. So a lot of benefit can be added and a centralized configuration of the older images we have. So especially when there is a security issue that could help. Don't worry, we won't take any decision before starting an email thread and the discourse to collect advice to see what the community think. Right now, we are just trying to understand the reasons so we can then see if it makes sense or not to push that subject. That's all for the Docker progress. I don't know if you have question or okay. So for me, is there a potential that the single agent repository will also gain us some even further performance improvement because of common components between those between those agent images? Yes, because Buildix is able to understand the dependencies between images. There is a keyword that allows you to say that image depends on that image. In support, either the keyword, which is explicit, it depends on and it also supports multi-stage Docker file. Since we are using a bit of both for all the use cases, both are supported and so Docker Buildix will be able to have all the tree and we can release everything at the same time when we change GDK for instance. So the time between a change is asked, let's say a new open GDK has been released and the moment where all the images are updated, that time should be shrunk by merging everything. That's the idea. I'm not sure if we need to be sure and confirm that in practical. Yeah, that sounds very promising then. Thank you. Thank you, Damien. Congratulations to you and to Tim. What a great outcome and I'm looking forward to more. This is really wonderful and I agree with how easy it was to handle the tags thanks to that declarative syntax that is specified of which things are being built where that made it much easier. I understood it. I can make the addition. It just worked. Brilliant. Then the next topic is the replacement of the archive.genkins.io machine. So good job, Olivier. Olivier is not available this week, but he did a bunch of work on that part. So now it's running on Oracle Cloud on an IRM-based machine, which is good enough for the role here, downloading things on her sync. The synchronization of the artifact has been improved by Olivier. So we should see a shrunk time between a plugin has been released and the moment it's available on archive and then the subsequent mirror. We don't control the synchronization frequency of the external mirrors, but at least archive will be updated way more often and in a faster way. The goal of that machine is to decrease the cost for the infrastructure given that the bandwidth cost will completely change by changing cloud. And so it means that we might be able, the old machine on rack space is still up. We should stop it in one or two weeks, but we should be able to stop that machine that for the record has been created with Ubuntu 1204. So that was a nice machine, but it's time to retire your machine. Yes. One last thing on that part, it was all that work from Olivier allowed us to validate the new process on the Poupet code that we use on the repository jenkinsinfra slash jenkinsinfra. So we don't use staging branch anymore. So we explain why during the previous meeting we don't have staging environment to validate the changes. So it was only slowing us down without testing anything. So we decided to be able to deploy to production in a faster way. So if we break something, we are able to deploy the hotfix in a much more faster way and with confidence. There is still some work to improve the test harness. We are working on that. But it was Olivier sent, let's say, four pull requests and he was able to deploy in production the four pull requests the same day, which is a rate far, it's far more frequent and faster than what we used to do. So it allows us to be way more responsive on that part. And secondly, we started to update on the go a bunch of the dependencies we used on the Poupet stack after upgrading the Poupet master to the latest LTS minor version we had. We have a bunch of game dependencies on that repo. So we are updating them on the go, especially Poupet modules. So Olivier did a brilliant job also at starting that part. We are still struggling with the server spec parts, which is why staging and tests were not there for acceptance testing. So we are working on that part and preparing the upcoming Poupet and Yara upgrades. So not only we validated something real, archived less money, but also we used the opportunity to improve our process. So congratulations, Olivier, that was quite a huge amount of work and it has been well documented and shared in terms of knowledge. So that was really a good team effort led by Olivier. Yes. I did have one question. Oh, I did you raised his hand too. I had, oh, that was a clap. I had one question. So I was accustomed to, for a brief period at least, seeing archives.jankens.io in the list of mirrors provided by the mirror, the mirror stats. And when I looked recently, it's not in the list of mirrors any longer. I wasn't sure if it's intentionally not in the list, or if it's accidentally not in the list. It was, it used to be, at least for a brief period, it was the very bottom of the list. So if no other location had it, we would seek it on archives.jankens.io. Any guidance there, Damien? So the fact that it's not visible on the mirror list, Olivier told me that it's the current behavior. We'll confirm that once we will have stopped track space machine. I understand that the change to be made here might require to not rollback. So that's why we want to be sure that we won't have to rollback. However, archive is also still used as a fallback. If no mirror has a file, that will be used as the reference. So that's why it could have been sometimes on the mirror list before it was excluded on the mirror system by Olivier. But yes, it can be used as a fallback. Thank you. Okay. So Olivier has discussed it with you. There is thought about it and more when he returns. Exactly. I think we still need to catch that, to have a precise answer from him when he will be back. But yeah, he gave me that information to be sure we don't have to worry what he's out. Excellent. Thank you. Okay. That's all for me on archives.jankens.io. Thanks very much to Olivier for making that transition. And I'm excited to see the comparative cost savings and measure those numbers and see results. So now the next one is CI jankens.io. So since the past week, we were able to deliver the configuration as code as defined. We had to do that a bit earlier. So I don't know who is the culprit and I don't want to know. But yeah, I think we, the team or people having admin access to CI jankens.io, did a mistake. I'm not sure if it's a plugin upgrade, someone missing with the agent and cloud configuration. But the result was before previous week, weekly release, there were no more EC2 and Kubernetes configuration on CI jankens.io. I think that that was a plugin update that did not finish, but not sure. Because the configuration was not, has been deleted by jankens on the XML files. So we had to deploy the cask configuration support on Poupet, which allowed us to reuse the configurable that was taken the day before. So we did not lose anything. It was a kind of backup. And so we were able to, in less than one hour, make a CI jankens.io back with the correct configuration on the agent, validated by team. We have done one subsequent pull request to update the reference of the machines related to the Docker builds. We had to update the VM templates. So team updated the file and we were able to merge it on jankens on fraud and it automatically deployed the new version on CI after a reload. And thanks to team careful review, we finally implemented a cask reload because initially we were doing jankens safe restart. But the inconvenience of a safe restart is that the UI and the webhooks and points are not available for 20, 30 seconds on CI. It's quite fast. However, it's still unavailable. So now if we change the agent configuration, the configuration as code reload does not stop the service, at least for the agent scope. I don't know for other casks scope. This has to be verified, but yeah, that is really useful because we can update without being scared of putting CI jankens.io down, which is a good improvement. So the next step now, now that cask are first, I have to check with the security team that all their process when they update CI jankins.io is in sync with the changes we did and the changes we plan to do. We need to be in sync on that part to avoid someone thinking that they are able to change the configuration and their changes not being persisted by our system. So we need to double check that everything is okay. And if there are some points that we forgot. The second step is team and high are going to start working on moving part of the workload from ACI to Kubernetes. Why is team involved in that part? Because initially it was not part of that section. It's because he saw a bunch of errors on the build during the previous day on CI jankins.io.  And most of the agents were ACI and they were struggling for CPU, mostly because these are shared machine. So since ACI are a container, our idea is to start on some pull request of the BOM, which is a great candidate because if it works, then all the other builds should work because it's one of the worst. So we will want to try and experiment the BOM on a specific pull request that will use Kubernetes agents. Our goal is to transplant the configuration of ACI and translate that to the template with the same Docker images and run these on the current KS cluster. We might be able to do have something, however, in terms of performances. We don't know because the machines are static. We only have three machines, no toe scaling yet, because we decided to have a static capacity to avoid bad surprises in terms of budgets. So it's a step-by-step process. I understand that it can be frustrating for developers. So sorry if it slows you down. But our goal is to also not break the existing developer workload. We want to start with specific and surgical pull requests, and then we're going to grow that. The reason is because if it works with Kubernetes and if the only issue is that it's the capability of the cluster, we now have digital ocean and scaleway sponsorships. So that will be adding two new Kubernetes clusters with also static, but on different providers. And we can start mixing the workloads. So right now, the stretch goal is a specific pull request with specific labels. That means the other build won't benefit yet from that. Is there any question on these topics? So Damien, for me, there was one. So the decision then is to switch from using a label-based configuration to using pod templates. And I'm used to thinking in my simple mind of how easy labels are and how hard it is to express a pod template. Can you tell us more about what we gain by switching to pod templates instead of just using simple labels? So the pod template won't be the job of the consumer of the pipelines. The pod template can be defined at administration level on Jenkins or on a share library that depends on the two-use case. But we, the infra team, are still responsible to provide these predefined pod templates as a service, like we provide the ACI. And they should use, they can be associated to label. That means the pod template can be used if such label is asked. I don't know and I have no knowledge and I'm not sure it's possible. I'm interested in knowing that. If Jenkins is able to, if there is a rule, if we have ACI and Kubernetes with the same label, I don't know what is the rule. Is it trying to pack on first on ACI and then on Kubernetes? How does it work? I assume that it's an algorithm close to the try to reuse as much as possible where they have been success. So ACI will still have some way. So that's also why we want to first start with specific labels. We will define pod templates at administration level with specific labels different from the existing builds. And then the pull request will use these specific labels to be sure that we only use these pods for this pair. And then we will decide based on the result of that. Excellent. Okay. Thank you. So that clarifies for me. It is that there is the responsibility to define the pod templates remains with the infra team. And everyone else is just consuming those templates, not having to define them and learn all of the complexities of what it means to define a correct pod template. Exactly. The goal is to use an abstraction layer here, either a pipeline library or Jenkins config as code. So developer don't have to care about that part. However, developer right now are able to use pods if they are able to edit the Jenkins file.  Well, yeah, but in that case, I have to be a maintainer, right? Because my Jenkins file changes as just a submitter of a pull request who is not a maintainer is just ignored until after the merge. Okay, great. And we have Falco running and we are going to add more and more restrictive rules on the cluster. So for instance, we are at the moment in time, we should and I think that's going to be the next step. We will have an allowed list of the images that kind of run. So if you want to try whatever new images, we should not be able. We already disabled, you cannot run a pod as privileged, for instance. And we will add a way more security measure on the cluster just to be sure that you might be able to use images or customize, but there will be a limit to the customization because it's a shared instance and we don't want everyone doing whatever they want. Right. Yeah. So this is that a technique that then helps us somewhat guard against somebody, a malicious maintainer deciding to use an image that is a crypto minor or something like that? Exactly. Okay. Also, this cluster are stateless using a case or whatever. So the idea is that weekly this cluster will be completely throwback, the machine will be destroyed and then a new one will be initiated and cask. But right now we have to discuss that. We should also be able to efficiently implement credential rotations also. So this is a multi layer situation, but we have to sync with the security team as well to see what are the requirement, what they feel like is mandatory, what is important, what might be less. Because sometimes it can be important from our point of view as maintainer of the infra, but there are other topics that are more concerning for them. So that's why we have to sync with them. All right. And finally, I started today to work on something we discuss, compatibility of Terraform 1.0. That includes Datadog and AWS Terraform projects. As for today, these are tiny projects. So mainly modules update and a bunch of syntax fixes and preparing a new version of the Docker image we use for running Terraform on our CI. The goal is that we should be ready to start resources on digital descent and scale way with Terraform 1.0, either mirror machines, Kubernetes cluster or any other resources in the future. Why Terraform 1.0? Because we are two versions away. There should not be so much changes, but 1.0 is a kind of LTS. That means the Terraform syntax should not change for the upcoming three years. If you have a Terraform project compliant with 1.0. That's the reason why we need to do that effort to be sure the maintenance can be then spread across multiple years. Okay. And that's all for me unless you have questions. I'm six minutes late. I should be... No questions from me. Oh, I mean, I had a question, but it is absolutely fine if we can take this asynchronously on IRC as well. So in the point of replacement of archive.jentons.io, you wrote synchronization of the archive has been improved. So actually I wanted to know how does the infra team kind of make sure that synchronization is in place. I just wanted to know the architecture behind that, but it is absolutely fine if we can take this asynchronous or answer later. So that's a set of shell scripts that are available on Jenkins infra. There are two synchronization, one that's up on every 15 minutes and that triggers an alert if it's not run. And the full synchronization of everything every hour or three hours. I don't remember exactly. Everything is based upon AirSync. Each time there is a new PKG distribution, so a plugin is updated, a core or whatever is updated on the reference, there is a file with the timestamp in Unix. So if you want to check, you have to compare the timestamp from PKG to archive to any other. And this is how our monitoring system, if after let's say a few hours the timestamp are still different, then it means that something is wrong and we receive an alert to react. So it's let's say AirSync shell and the timestamp based on text file. Thank you so much. No problem. You can still go on Jenkins infra repository. Don't hesitate to look at the code specifically for archive. This is Puppet manifest and you will see all the shell script listed there. Okay, I will do that. Thank you. You're welcome. If there is any missing documentation, don't hesitate to raise your hand on IRC and Olivia and I will try to complete write down and improve that. Okay. And that's all for me. And that's all for me as well. Damian, thanks very much. We're ready to end the meeting and call it done for today. Yes. All right. Thanks, everybody. Thank you. Have a good day.


statistics and excel average deviation get ready taking a deep breath holding it in for 10 seconds looking forward to a smooth soothing Excel first a word from our sponsor yeah actually we're sponsoring ourselves on this one because apparently the merchandisers they don't want to be seen with us but but that's okay whatever because our merchandise is is better than their stupid stuff anyways like our CPA six-pack shirts a must-have for any pool or beach time mixing money with muscle always sure to attract attention yeah even if you're not a CPA you need this shirt so you can like pull in that iconic CPA six-pack stomach muscle vibe man you know that CPA six-pack everyone envisions in their mind when they think CPA yeah as a CPA I actually and unusually don't have tremendous abs however I was blessed with a whole lot of belly hair yeah allowing me to sculpt the hair into a nice CPA six-pack like shape which is highly attractive yeah maybe the shirt will help you generate some belly hair too and if it does make sure to let me know maybe I'll try wearing it on my head and yes I know six pack isn't spelled right but three letters is more efficient than four so I trimmed it down a bit okay it's an improvement if you would like a commercial free experience consider subscribing to our website at accounting instruction dot com or accounting instruction dot think of it dot com here we are in excel if you don't have access to this workbook that's okay because we'll basically build this from a blank worksheet but if you do have access three tabs down below example practice blank example in essence answer key practice tab having pre-formatted cells so you could get right to the heart of the practice problem blank tab blank worksheet so we can practice formatting the cells within excel as we work through the practice problem let's go to the example time to get an idea of where we will be headed we're going to create a very simple data set on the left-hand side to practice concepts which will lead up to the concept of standard deviation but before we get there we're going to start with the average deviation which is probably more of an intuitive concept and will give us a sense if we were to kind of create these from scratch or an idea of how they might have been created over time so we'll calculate the the average deviation and then in a future presentation use those concepts to continue on with the variance and standard deviation all right let's go to the blank tab to to check this out and so let's start by formatting our worksheet the way we do every time i'm going to select the triangle up top to format the worksheet right click on the selected area format the cells and then i want to go to the currency negative numbers bracketed and read remove the dollar sign let's get rid of those decimals as well so there we have it and and i'm going to pull in some of the calculations or formulas we did in the past i won't recreate them because we've created them in the past but this is our you know average calculation probably don't need it at this point but i'll pull it in anyways i'm going to hold down control and scroll up a bit and let's just create our data set so i'm in cell a one just going to be our data set hold on i want to make everything bold i got to make everything bold so i'm going to select the entire worksheet again and go to the home tab font group and we work bold here we do things boldly everything is bold uh so any case negative you're too bold way too bold yep so let's go ahead and uh put our data set very simple data set we'll be working with so we have a negative six a four a positive four and a positive six now obviously that data set will uh will net out to zero we're kind of doing that on purpose so that our mean calculation will be at zero at that this point that's going to be the idea let's go ahead and put a little table around our data set so i'll put my cursor in a cell uh that's in our data set insert tab up top and totals and then we'll put a table within it dancing ants working their voodoo magic dancing around the cells and there we have it i'm going to make column b a little bit wider so it's so our formula is down there and i don't kind of run into that formula when i start working on stuff let's do our mean calculation the mean calculation we're getting mean man this is average average no more messing around anymore we're getting mean with the mean calculation get it because it's a mean count okay we're going to say this is going to be equal to let's do it with the average so this is going to be basically our formula down below where the average calculation is going to add them all up and divide by the number that are there right so if i select this little data set it'll add them this plus this plus this plus this divided by four right and that's going to give us zero because when we add those up we have zero so our mean is at zero let's go ahead and make that blue and bordered which is our custom dropping it down on the borders and blue and then on the bucket if you don't have that blue if you want to find that blue you can use a different color but i like that blue standard color wheel there's the blue that's the one that's the one all right let's do the uh the actual calculation let's do a mean manual calculation just to practice that one more time make sure we understand the concept i'll say calculation and so let's make this a header tab so we'll do a little table calculation home tab font group making this black and white and then i'm just going to sum it up so let's go with the sum of data which is x so i'm just going to sum up this data set which is summing up like the numerator up top which you can see in these two ways we can see it equals the sum our most famous function if you know nothing else you want to know the sum function summing it up comes out to zero and then we're going to divide by divide by i'm going to say i'm going to put this character so that when i put a divide it will not try to try to do something because the divide is a mathematical uh function although i don't think the divide would do anything anyways but just a note if you're trying to just type something and you're starting with something like a plus or a minus then you could put that first and and see it doesn't show up it's just telling excel this is not a formula i want you to just type this thing out we're going to divide by the count i'm going to make the i can count them myself there's four of them but i'm going to use the count function to do it because that's way cooler and it helps us practice so put the dancing ants and work in their magic with the count function four of them home tab font group let's put an underline so we can get to the mean we get to the mean this equals this divided by this so zero divided by four i don't want to get to the mean i want to get to the nice that's two you got to get through the mean before you could get to the nice so we're going to then go up home alignment let's do some indentation and double indent home alignment double indent we'll put some blue borders around this by going to the home tab font group border it drop down and making it blue okay so now that we have that i'm going to give us a a calculation a new formula which we're going to call the average deviation so remember the mean is telling us kind of like that middle point and we have different kind of calculations to do that but now we want we want to kind of think about the spread and so we so another calculation is going to be the standard deviation but we're going to kind of gradually get into that first thinking about what we might do intuitively which is going to be the average deviation so let me let's actually practice writing in this formula i'm going to make this black and white for the header and i'm going to enter the formula we're going to type in the formula and then we'll kind of work it out in excel so if i go to the insert tab and go to the symbols if i make an equation let's do our equation again i'm going to make it with an ink equation so ink equation in the tools so equation tab tools ink equation i'll make this a little bit larger and let's type this thing in so it's going to look like this we're going to say we're going to use that some thing so it looks like this and so there it is even though it wasn't very nicely put i'm going to put the n on top it might not see the n at first but once i put the i equals on the bottom it will usually pick it up so i equals one and so there it is so that looks good and then i want to take the absolute value so when i do the absolute value it'll probably read it as a one but then it'll see it when i finish it so i'm going to put absolute value sign so see it thinks it's a one but then when i put inside it i'm going to put x i x sub i and so and then minus the u which is a mu and that that stands for the mean and we're going to put another uh so absolute value symbol and then i'm going to put this whole thing over underlining n okay so there's our what is that that looks like a funny it did something funny hold on a sec we just want an n n there we go okay so what is it so what so if we're trying to think about the the the spread of the data the first thing that we might do which is an intuitive thing to do is to take a look at all these data points right we could take a look at these data points and kind of think about where each of them lie in relation to the mean the middle point uh the the zero so so that's what this is saying we're going to say we're going to take each of these data which is going to be represented by x so uh x uh is going to be you know six four four and six taking each of those minus uh the mean which is now represented by the mu here and so that's going to give us our distance of each of the data points from the mean now we purposely made some data points positive and negative so that we can take into consideration this issue of what if we have negative data points that's that could cause us kind of a problem uh so what we what we want to do is is is not have positive and negative data points but see the distance from the mean whether it be positive or negative and that's why we take the absolute value so right so these are all going to be the mean is zero so these are going to be positive and negative from zero so it's going to be the absolute value will give us a positive number no matter what so it's going to be six four four and six right and so and then we'll take that we'll sum those up and then we're going to take that and divide by the count which is which is n so this is kind of an an intuitive the first thing that would probably come to mind when we're trying to you know deal with this concept of of of of the spread right we could we could start to think of a calculation like this let's make the home tab font group let's make it a little bit larger and make it orange this is a drop down orange all right so there it is okay so now let's do this let's actually do it so the numerator is going to take all of our data minus uh minus the mean so i can make that with a nice little table so i can be we can do that quite nicely in excel so i'm going to make uh column e smaller put in my cursor between e and f and making it smaller and then i'm going to take my data let's just copy the table over here i'll just copy it right click and copy it that'll be my starting point right click and paste and then i'm going to i'm going to compare each data point to the mean i'm going to compare it to the mean which is equal to that zero now when i hit enter it's it might try to take the cell below it see it's all zero but it's trying to take the cell below it i don't want it to do that so i'm going to put my cursor in here double clicking make it an absolute reference you can do it by selecting f4 in the keyboard or simply typing a dollar sign before the d and the one the dollar sign not representing dollars in this case but telling excel don't move the cell references down keep on pulling the same cell of uh this zero up here in d1 you only need a mixed reference by the way with just one dollar sign but the absolute is easier to remember so uh that's why we'll just use that so there we have it and then let's take a look at the difference so now we have the difference and the difference is going to be equal to the six in this case negative six minus the zero so the distance is six but this is now still giving us a negative number now we picked the mean to be zero on purpose so that we can kind of easily see this issue with negative numbers and positive numbers right so so now we have to say well i don't want negative numbers i want to measure the distance from the mean whether it be positive or negative that's why we would say if we were trying to think this out intuitively we would say well this makes sense we're taking each value minus the middle point which we're designating as the mean and and now we're going to but but this doesn't work if there's negative numbers so i'm going to take the absolute value right so we're going to say let's do absolute absolute value now i'm going to scent i'm going to center and wrap these headers so i'm going to select these headers home tab alignment wrap them and then center them okay so then now the absolute value the way to do this in excel there's a formula equals abs now obviously if you don't know that formula you can clear you can just look it up right you could type you could google search how do you do absolute value in excel and it'll and you know you'll find the formula but absolute value of the six because excel's quite a lot of people use it so there's so finding out those those kind of simple formulas is pretty easy to do if you have internet connection so there we have it so now we've got the absolute value now because i'm in a table i can add a total column so let's add a total column by being in the table going to table designs and then the table style options i'm going to add a total column over here so in the total column the data if i was to add up or sum the data let's hit the drop down it gives us our options of what we're going to do by default let's sum them up so it comes out to zero of course and then the mean calculation maybe i'm going to use my count this time so i'm going to say count the data just to show me how many data options because there's no point in summing up the the mean which is the same number all the way down and then the difference i'm going to sum this one up which is going to come out to zero now these two look the same because the mean is zero but they won't always be the same if the mean is not zero as we will see in future problems but the difference will always add up to zero uh when you sum it up because the differences from the mean which is the middle point will always result in in amounts that are going to add up to zero okay and then and so then we're just going to and over here we're going to uh we're going to sum them again so we took the absolute value of the difference and now they're all positive numbers so we get up to a positive 20 so once we have that we could say okay then the average average deviation calculation according to our formula let's put a i'll put a uh header column here home tab font group black and white and let's say this is going to be the sum of the distance from the mean right the sum of the distances from the mean uh let's put it over here is going to be equal to that 20 so we took the distance from the mean summed it that's going that's basically our numerator and then we're going to divide by i'm going to put this here and then a divide sign divide by the count which we're counting as which we're recognizing as n so we're going to say the count and i did the count up here which is four i'll pick it up right there in our table there's four items one two three four and let's put an underline here home tab font group underline and that'll give us our average deviation so our average deviation is going to be 20 divided by the four so we get five let's add some decimals just so we can compare it to what we'll do next time i'll add a couple decimals and so there we have it so that so that would be like an kind of an intuitive calculation right when you're trying to when you're trying to think about well how can i get some some calculation that will give me an idea of the spread of the data well you could say well if i think of the mean as the middle point then what we'll do is we'll take all of our data and we'll compare it to the middle point so that we can then see the distance of each item from like the middle point and the sum of those should add up to zero because the middle point's in the middle and that's how we calculated the mean and then we can take the absolute value of those distances and divide it by the number to get to get kind of a number that gives us an idea of the spread and that and so that could be a kind of a numerical way for us to represent that now this isn't the way we normally do it in practice though because we usually use the standard deviation which has a little bit more of a little bit more complexity to it and we'll try to explain why maybe it would have more complexity because often because normally when you think about mathematical equations you're usually saying if it's simpler that's the one to use right there's got to be a reason why you would make something more complex in order to use it because the because math is supposed to be elegantly simple right so you want to so we'll try to say well why why don't we just use the average deviation versus like the standard deviation so we'll get into that a little bit but of course this will also kind of lead into you know the same concepts will be used in the standard deviation which we'll do next time all right so let's make this blue and blue and bordered home tap font group blue put some borders around it let's do a spell check just to make sure everything is uh as is spelled right or at least spelled good enough so spell check wouldn't catch it okay so there we have it


On Tuesday, January 24th, Pike County Tourism held an open house event at their new location in the historic Flat Iron Building in Pikeville. Each room on the third floor is dedicated to the rich history and culture of the mountains. The Tourism Committee welcomes any and all visitors who want to learn more about Pike County. We really enjoy the building at this point. It gives us so much more room. Actually, it's a tour in itself if you look at it that way. We've got the Laurel or Lynn room. We've got the Hatfield McCrory room. But most of all, we want people to be proud of what we have done as far as Pike County Tourism and visit this office at some time at their convenience. They're always welcome. And, you know, we're not going to have any feuding and fussing going on here or anything like that. But come in, visit us. And most of all, the thing I would like the people to recognize is realize what's in your backyard as far as tourism. We're sitting on great economic opportunities. And I think that's something that we can help bring to the table. And we look forward to that challenge. Do you worry about having enough money to last throughout retirement? Give Reed Potter at Raymond James a call. Reed has 26 years experience helping folks enjoy their best life in their retirement years. Members of Pike County Tourism are encouraging more area residents to get involved with local history. Their goal is to instill a sense of pride to those who visit. Well, naturally we're going to have tour buses coming that will meet here, go through the tourism office. We have a gift shop here. And we're wanting to get people involved and realizing, you know, Pike County Tourism is something that I'm very proud of. Myself. And that we bring to our area and we hope people in our area respect that and join us in taking pride of where we live. Reporting from Mountain Top News, I'm Nick Colum.


We would like to welcome Paul Disturheff, a long-term resident of the Haydashbury Native San Franciscan, to the Haydashbury Video Oral History Project. Welcome Paul. Thank you. All right. Well, tell me a little about your early beginnings. Where were you born? I was born in San Francisco St. Joseph's Hospital, which is up in the Buena Vista area. The hospital is gone now, but my family lived on Frederick Street at Stanion, so that was my first home. When was this? From 39 until I think 47. What were your parents' names? My father, Albert Disturheff. He came from Poland in the 1920s, and my mother's family came from Germany in the 1920s, and they all came here because they had relatives who had immigrated here beforehand. This was the place to be. Did you have any brothers and sisters? I've got one brother. What's his name?  I'm going to go visit him in Arkansas. Wonderful. The wilds of Arkansas. And you're still here. I'm still here. And where are you living present now? I'm living on Parnassus at Cole Street. My family, my father was a baker and worked in various bakeries until the war, and worked in the shipyards. And after the war, I went back to work for a bakery, Blum's Bakery. It was one of these high-end bakeries, and then eventually bought his own shop there at Parnassus and Cole, a coordination bakery. Is that the first name of the bakery? That was the first name. What year are we talking about? That was 1950. That bakery was established in 1906. After the earthquake, all those buildings after the earthquake and fire were established there. The original builder was a man named Schultz. He built that building as a bakery, complete with the brick oven. Wow. So it's got a natural brick oven inside it. Yes. So when my family took it over in the 50s, and they operated for 19 years there. And after them, they sold and the guy who owned it was there about a year or two years. And then the Zen came. I would love to back up a little bit. You were living, did you yourself get married? Do you have any children? Yes. I didn't marry until I was 25 years of age, and I was 1964. I was married at one daughter. She was about 35. What's her name? Her name is Lisa, and one grandchild. What's your grandchild? Dana. Dana. What was your wife's name? Faina. Wow. Her name is Brian. Yes. Just coincidentally. So then, despite of your life happened, and hopefully you'll have more grandchildren, when this is viewed, they'll be grown. You then went through this, got married, children, and you came back to the hate. You came back to the area. Where did you live then? Were you living now or? Where I'm living now. Oh, wonderful. My parents bought some property in the area, so that's essentially my goal minds. That's how I earn my living, is managing these properties. Understand. Not a lot. Sure. Oh, yes. Are any of those properties around the 8 Ashbury? Yes, all three of them. Where are the locations? Same place, the bakery building, and there's another one across the way from there. I live in a set of flats that's adjacent to the bakery building. Great. Have you yourself ever been involved in working in the bakery? Oh, yes. It was all family operation, including my grandmother and my brother, and we all worked in the bakery as kids. Kept the family together. Yes, aged 11. Fried donuts before I went to school. Did you take a few with you? Next time, sir. Wonderful. Do you remember in the early 60s or the late 60s what was going on at the bakery at that point? Well, during the craziness of the hate, there were so many people on the street. It had kind of a festive quality to it, and then it kind of turned ugly. I kind of come into that scene. I went to work as a probation officer in San Mateo County as an adult probation, so we supervised people that were from San Francisco in addition to San Mateo County and was involved with the Hate Ashbury Clinic, which... With David Smith? Yes. He was a neighbor of mine. He lived immediately next door, so I had some conversations with him, and coincidentally where the clinic was located, what had been the site of my dentist. So there used to be a dentist's office in the same location. Right, I'd gone back there a time or two. What is that, Clayton and Ashbury? Right. Amazing. So at that point you weren't working in the bakery anymore? No. But you would be visiting your family? Right. Well, I was living there. So had you ever woken up and walked down the street on a normal day to get somewhere? Would you ever walk through the crowds coming in and out of it? I tried to avoid that. To know where to park the car. Exactly. Have you been in the bakery in the period of that? Had you ever see young people come in and out to grab a donut, to grab coffee or whatever? Sure. So it was one of the places in that area where the public gathered. Did you also have coffee? No, we didn't have coffee. There was on the corner of Karl and Cole, like a thrift shop. I'm hard-pressed to remember who was running, but it was like a giveaway. Free store? Yes. There was some benevolent group that could go and get clothing and things there. So that brought more of the people from the hate up that way. Up that way. Exactly. Up in that district. Exactly. You were mentioning before about Quicksilver, an organization where they were print posters. Yes. I'm very interested firsthand to know anything you could think about that we can learn about that we may not know about. An example is this organization. Well, that's about the extent of it. There was a fellow that was on my caseload that I supervised, lived in the area. And he had a business. Very successful. It was called Outrageous Propaganda. What did they do? They made posters and elbow covers. He did artwork? He did artwork. And he also designed an old radio, a 1920s style radio, which I now see. And he was trying to sell that at the time. It was too expensive to be sold at that time. To really be sold at the time. It was an AMFM, which was, you've got to remember, the 70s. So I mean, that technology was there, but not used. Not used that extensively. What were some of the people he represents? I think you mentioned Quicksilver. You saw a poster? That's the only one. He showed me a couple of things that he was doing. So one was for Quicksilver, man? I remember that one pretty clearly. There was a scene of a prairie scene with a man on horseback, like the Western Union, or the pony express. Exactly. Yeah. Now in your life as you live here, I would love, I mean, your first coming to the Haydash Bay Area was what year? Well, 1939. So from 1939 to present, look at it, it's decades. What do you see that has been kept through all those years? What do you see where we are now? Well, it's changed dramatically. The people have changed. At the time that I was growing up, it was mostly old world Europeans, a lot of Jewish and German, Irish, a scattering of Filipinos, a scattering of blacks and a few Asians, but for the most part, white Europeans, middle class, blue-collar working area. I mean, Hayd Street, there were 12 bars between Masonic and Stanley. And part of the style of a workman at that day is he'd start out in the morning and go have a shot and maybe a coffee before he went to work. And then after work would stop in that bar before they went home. So 12 bars, I mean, that was a staggering amount of bars. There were at least three bakeries and barbershops. Shoe repair stores? Yes. Near where I lived up on Coal Street, there were two shoe repair stores. One of them, the man and his wife, they were German Jews and they lived above their shop. Right. That's how you make it. Exactly. So in the 60s, I was still directed for the 60s. There was a lot of vacancies and apartments and things. What did the 100,000s of people that came here change what was going on from before that? How did it can become the blue-collar worker into all these young people from all over and music on the street? I mean, did you feel that as a native resident that a part of your community was not available to you? Or did you feel you had? It was a vital time. You mentioned vacancies. I sure don't remember that. There were so many people in the area. There were a lot of property owners that had apartments and now you had all these people that were coming into it. So maybe it rented to a couple of people and now there's 20 and they're trashing the place. So I know many of these property owners just ended up walking away from them. Joseph Alioto was the mayor at that time and his wife would come into our bakery. My mother knew her in passing and they were buying up a lot of the property where these property owners had gotten frightened and ran away. Couldn't financially deal with it any longer. Did you ever have any problems yourself with the bakery? No. So I'm going to backtrack. From when the bakery opened, it was called the Carnation Bakery? That's my understanding. And then tell me the progression of the names or what happened approximately what decade, what year? None is not to be exact. From the Carnation Bakery to present. What has happened in that space? Carnation Bakery from 1906 until 1969. It was Carnation. And it was Gallo Carnation. A fellow from the North Beach had bought it and he operated it for less than two years and then he sold it to Tasahara. They decided they were going to bake bread and so the Zen Center became involved with it at that point and then they changed the name to Tasahara Bread Bakery and it remained there that name until 1991 perhaps and then Just Desserts which was a big operation. They called it a marriage. It wasn't a marriage, it was Just Desserts dominated and operated it. And then Just Desserts ran away. They just left. Kept trying to sell it, the owner of it. When was that about when they finished? I think 2002 or so. And what was the change over from that? What's going on present? And now there's a French bakery in there. They belong to Ray. Pascal Rigo has endless numbers of restaurants and bakeries and similar operations in the city. Has it always been a strict bakery? Has it ever had the edge of being a place where you went for coffee as well? No, it's just always been a strict bakery. It was a bakery but under Just Desserts they also serve coffee. So that was the only period? Yeah, that's the only change. So presently it's still operating. Is this French bakery? Yes. It's primarily an outlet. They're not doing any baking on the premises at this point. It's a shame.  Excuse me. There's the oven. It's still there. It's ready to go. I was at this point really curious if any of your family still lives in San Francisco? Just my daughter and her family, her husband and child. That's the only... Do you have any friends in the neighborhood? Oh, many friends. I mean, living in a neighborhood so long when you walk down the street you're bound to run into a hello here and hello there. Always. And how do you find, how do you find, you being a long-time resident of the hate, you find there are a lot of people like hidden away in their houses. There's a community of people who have been here for a long time. They're still here. Well... Is it completely diluted in very few? Well, it's changed pretty dramatically. I'd say in the last five or six years there are now more families with children. And I use that six-year point that I talked with a woman who's got a six-year-old child. She said when she first had her now six-year-old, she said there were hardly any children. And now they're everywhere you look. There's there's infants two and three years old. So the families have come back to the hate. But the cost of buying anything in this area is staggering. Well, renting that rent control pretty well has some control over it. But fortunately for us up there in that little coal valley area, that's a pretty desirable place to live. So vacancies don't last very long. But is that called coal valley? No, I know somebody coined that. And it's been in the last five or six years or so. Yes, it's probably about like that. I would love for you to think about any of the people you might know in the hate as a friend. Someone who's had a business and any business that still exists that you could remember that's been there a long time. I could think of one, the shoe store on H Street's been there 87 years. If you know of any other businesses in there that have been there at least from the 60s that are still there or been there from before, we would know firsthand. Yeah, I think a cache of glass was on H Street for the longest time. And where is that? What kind of business is that? Now they've moved over on Frederick. Okay, so they're still in the hate now? Yes. I'm sure that rent's probably ran a lot of there. So we've been told that the artists and the creative people can't afford the high rents of corporations that are moving in. And there are associations, Hate Ashbury Land Trust and all these things trying to preserve the buildings and the businesses. There are people who are trying to get it donated as a land trust to preserve the heart of the hate. Had you ever felt the heart of the hate? Do you? No, I don't think so. No. You got into the hate because of family and business and circumstances. Exactly. But one person, even in your walks, in your travels, to your car or to whatever, you may not even know them if they sit there every day and you've seen them for years. Are there those situations where you run into someone? Well, see, I'm so old now that most of them... I don't give you that. Yeah, see, most of those people are gone. They died. So I'm the old timer now. Is there someone you could remember that has passed on that we should remember? Is there anyone who made your day brighter when you saw them and they gave you a smile? Oh, there's always some old timers. There was Henrietta. She lived on coal. I forget what's in there now, but there's something. Henrietta was one of the characters in the street. She was Jewish and she knew Mayer Feinstein. And... She's an older woman? Older woman, yeah. She passed away sometime. But whenever there was some kind of controversy, we had some urban renewal scam that came through in 79. And they wanted everybody to open their house so these inspectors could come in and do these inspections and upgrade your house. There were federal money. And so you'd get these inexpensive loans. Well, not everybody wanted to participate in it. It was kind of some heavy-handed moves on the part of the city to do that. There was some rather threatening letters and intimidate. And then Henrietta, she told her, she said, stick it. You can't come into my house. And if you come here, I'm going to go talk to Mayer Feinstein. And if you lean on me too much, you're going to be on the six o'clock news. Right. She then hired a former district attorney, Helen Ann, who lived in that immediate area. Sure. And she, along with some others, and they went to court and the court ordered that you can't enter somebody's house without a search warrant or unless there's some emergency fire, sewers flowing out of the house. Exactly. I loved her for that. Exactly. Well, it just shows me the independent spirit of those street people or those characters that have been in the hate that are part of the charm of the hate Ashbury. Totally. I would like to know what you see, Paul, what you see yourself, what would you like to see in the future of the hate Ashbury? What would you like to see in the future of the bakery? Do you have any vision on how you would like it to be after you've passed? I mean, I pray you were here with us for many, many more years and I know you will be, but there's always the future. Well, what would you like to see the hate Ashbury? How would you like to see the hands of your bakery whose hands it falls into? What would you like to see in the future? To me, it's your family's life's work. Well, as long as it's somebody that operates it with some integrity and produces good products and treats people well, that's all I would. That's pretty much what you're saying it has been through all your years with that bakery, why you chose one renter rather than another, is what the public gets. So whether you were part of the street or not, I see the same integrity for trying to do the best and that's probably why you are a long-time resident and comfortable in the hate Ashbury, because everybody in the hate is so unique. Whether they were part of a big music scene an art scene or whether they're the name of the next door, there is much more diversity and much more uniqueness in the hate Ashbury than many other areas in the city. And that continues as I said earlier just we have families now that didn't exist five and six years ago. These children will grow up and these children might be second generation hate. Their parents might be born in the hate and other children are being born in the hate. I'm going to ask you a question. Say the world rather we've been so historical, some type of thoughts. Say the world but take your advice. Say they would really listen and this meant something this counted. And people who are interested in the spirit of the hate Ashbury, people who are interested in documenting what happened here, what was the neighborhood like. In 50 years from now or more this tape was viewed as part of a large collection of the hate Ashbury. If the world would listen to you Paul, what advice would you give the world? What advice would you give young people viewing this in the future? Well I think the world is not going to listen, it never has. So your world, whatever your immediate world is, your family and friends and neighbors and just do the best you can for the people that are around you. I think I'd leave my advice at that because I think that's that's some of my... Do what you can. You can't heal the bigger picture, heal what's right around you. Exactly. Well it's been a pleasure Paul to have you here and you've given us a lot of new insights and have barely added to this whole collection and we're really really appreciative and pleased that you've been here and we want to thank you. We may call you again to be part of some other part of it but you're definitely part of this community and now part of this project. So thank you again for being here with us.


So, I find it incredibly inspiring to consider the impact of my research and advocacy can have in amplifying the voices of neurodivergent people. And while societal change might not be immediate or even occur within my lifetime, I'm deeply appreciative of the opportunity to contribute to a greater understanding of neurodivergent people through my work. And often, we remain unaware of our unique norms until it contrasts with that of others. And for a long time, I considered my experiences as quote-unquote typical, not realizing that they were distinct. And for example, I used to suffer from severe headaches after school, and initially I didn't see this as unusual. But upon learning about neurodivergence, I recognized these experiences were one common for everyone. My hope is that neurodivergent audience will feel that they are not alone. And equally, I hope to awaken a realization about a man in your majority, those who are not neurodivergent, about the vastness of what they might not know regarding the daily experiences of neurodivergent people. People don't have to ask for reason about adjustments, but there is just an inclusive environment for everyone, and people feel comfortable.


T F N N headline news update Good afternoon everybody I'm Tommy O'Brien comedy alive from T F N N headquarters in St. Petersburg, Florida 1 p.m. Eastern time on Monday three hours left to go on the trading day and we got markets hanging around flat territory But in the green Dow Jones up about eight points trading at twenty five thousand eight fifty seven We got the S&P's positive by four points trading at twenty eight thirty three and the Nasdaq positive by four points as well Trading at seventy six ninety two dollar index basically flat trading at ninety six zero forty five Notes and bonds close to flat as well negative three ticks on the ten-year note at one twenty two twenty seven Thirty-year bond negative two ticks at one forty six oh four gold contract Flat is the theme of the day gold contract negative ten cents at Thirteen oh two eighty and oil positive forty five cents trading at fifty eight ninety seven. We'll start things off Let's jump over to the futures markets. We'll start it off with the Dow So you can see the trading range we've been in even backing this up to last night coming in the highs of this range right around 25,900 last night we were up there at about twenty five thousand nine twenty the lows of that area Twenty five thousand eight twenty so pretty much only about a hundred to eighty points in the Dow We're bouncing up and down Nasdaq 100 a little bit of a different story We got a spike higher up until about 11 a.m. This morning the high being seventy three seventy eight We're now currently trading about forty Nasdaq 100 points below that level seventy three thirty nine S&P 500 turning at twenty eight thirty three We made a high just before 11 a.m. Of twenty eight forty so you're looking about a seven points off that high Crude oil trading higher for most of the session reached a high around 11 a.m. As well fifty nine Fifty-three currently trading fifty nine thirty six quite a run for crude We haven't seen sixty dollars in a little while for that crew contract many months going back to 2018 gold contract hanging above thirteen hundred thirteen oh two forty five and as the Brexit deadline looms It's March 18th that deadline March 29th We got some votes coming up over in Britain in England this week nonetheless You got the pound trading at one thirty two twenty three Terms of what else you have happening across the market some of the stocks making some headway this morning Tesla down about 1.8% they unveiled their new Model Y Facebook getting a downgrade as they are seeing some of their executives leave it down about three percent and Boeing with more bad news in terms of bad press having to deal with their seven thirty seven max down about 2.5% stay tuned folks Steve Rhodes coming up right now with the Traders Edge have a great Monday