Oh, sorry, sorry, oh my God! I'm so excited to meet her here. We know how we love her so much, and we're so honored to have her on the show. Who am I talking about? I'm talking about Joyce Omoni, the very beautiful Joyce. Where are you guys? Watch out, do you want me to see it? She's very beautiful. That is between us. See, I'm going to say it. Thank you, girl. Thank you, you wish to have that, Joyce. Thank you so much. Thank you guys for having me on the show. It's such a pleasure, yeah? What do you think? Yes. Freyjavgil. Yeah, I was tempted to play at TBT, so not at TBT. Actually, it still looks new in Itwakonkara. And so I think it's one of my favorite among your songs. Thank you. Today, Nakwonga blessing to me. Amen. It's an honor to have you today. Thank you very much. So, this is something we do here on J.C. Circle. OK. We have friends of J.C. Circle shop. Those are our viewers and those who keep in touch with us on social media. So, Salami are friends of J.C. Circle. Wow, which camera? This one. So many friends of J.C. Circle. I pray that you are well this morning. Thank you very much for tuning in to the show. And God bless you and may he continually guide your paths in all that you do. Yes, now you can tell us more about yourself. Well, so, Joy Samondi, first and foremost, I'm a daughter of the Most High King. In addition to that, I am a wife to an incredible husband. I am a minister of the gospel through song. I am a TV host, and I am a founder of a women's empowerment movement. And I'll be sharing about that later on. But I do all of those things and more. But most of all, I just I love God and I love people. And I'm excited to be able to share what he's given me with others. Amazing. Thank you so much. Now we want to talk about music. Music, is it something you really wanted to do? Is it something you had planned to do or is something you just met along the way? And you decided to do it?  My granddad was in a band. So I had a saxophone and the trumpet. My parents, they were in the choir together. Canisani, that's how they met. Then they got married. And my dad had bought me a toy piano when I was three years old. And I used to just gong it all the time. So he was like, I love that she wants to learn how to play the piano. So he actually went and bought me a proper piano, an upright piano. And then I started lessons. So by the time I was six, I was in the worship team. I was playing the keyboard and eventually grew to be like the lead keyboardist in our church. But honestly, all of this was never just not the plan. It was not what I wanted as even in like girls like the worship leaders at church. We formed a group, the female ones. We were called wow, women of worship. Oh, wow. And so I used to be the one to play the keyboard for them. Then they used to come and be like, come and lead this song. And I just, I never used to like that. So honestly, it's been a journey. I struggled writing music. Then only after some certain experiences in my life is when God started depositing songs in my life. So now I am out here after a lot of hesitation, a lot of nervousness, a lot of self doubt. But God has been faithful and to hear how my songs have impacted people. I still have that piano. My dad bought me. All of my songs have been written on it. Imagine, since the time I was four years old. So interesting.  They will be passed the faith down. They will be passed the music down to you. I guess so. Amazing. That is so amazing.  Sure. Yes. For me, you know, there's a lot of talk that goes on in this gospel industry about, and it's disturbing that even secular guys now start questioning the social music that we do, right? So for me, I believe my fans and the people who follow my journey know my music as scripture based. Me, I sing the word of God. I sing it back to him. My songs are not about myself. Yeah. My songs, I believe worship is about an object before us. And that's what we do. Anything that we, you ascribe a lot of power to and a lot of attention to you worship it. And for me, that person is God. So my songs are based on scripture. And it's not Jesus that you may add to God, but I don't know. Like I literally find my inspiration from scripture. And I, my songs are really love songs to God and just declarations of what he has promised in his word. Love song. Love song to God. Yeah. I've never heard of that. This is the first.  So there's a difference between ministry and industry. Okay, so there's a difference between ministry and industry. There's a difference between ministry and industry. Well, I was told that too once. I went somewhere to sing. I wouldn't say with Kinanani. But I was told that I was going to attend the ceremony. I was told that I was going to be patting their pockets, right? So I'm like, what's going on? So the aid that I was with at the time went to be like, what's happening? Like what's going on? What's for Joyce? I love what I'm doing. I'm the artist. Joyce is the minister. Wow. So I guess the artist is going to be there. I'm the minister. The minister is going to be here tonight. And he's going to say, God bless you. So he's going to be there tonight. God bless you. but look I mean God has been so faithful I mean I've been in this journey for a little bit in and out you know doing other things but it doesn't bother me because I think motive is very important in everything that we do whether you're a DJ a TV host a musician your motive is very important so I believe that our gifts will make room for us and God will provide for our needs so for me I'm dependent on God not fans response I'm not looking at you to views to determine my whether not even my my worth whether what I'm doing is me my audience is one because I came to an realization very early on in my career that I could have a million people screaming my name 10,000 10 million views but God is not pleased with me and for me that is what matters the most so if that one voice is not happy it doesn't matter if 10 million are so you know in my life I have chosen to make that sacrifice and that means then I am very strict about what I sing about and I don't compromise my content to create a hit song right and sometimes it means that I have to be willing to pay the cost to work elsewhere to get my you know provisions and you know my income but as long as my ministry remains just that ministry then that's a cost that I'm willing to pay yes speaking of resources in terms of money there's something unique about you you've done two albums yes what made you do albums because what I hear this is that albums are very very costly and even you'd not give it your all yes what's your take on that so honestly because going back to my journey about not being able to write music so it so happens that both of my albums have been written after I graduated from school okay the first one was after I graduated college and up until that point I was never able to write music and then I don't know I'll just be up at 3 a.m. I can hear everything conquer I could hear like these are the drums I want the baseline to go like this like I could hear everything and before I knew it I had like 10 songs written okay might as well put them in an album similar process with spirit versus so it took you know a few years between conquer and that one because I went back to school came back to the country and then those songs began to to come into into life so for me it's kind of just been like I have this collection of songs anyways so let me put them in a way that I can give them out to people but also I do a lot of church tours sometimes and when you go to churches people are like so albums for me for me so far you know but I understand I mean obviously consumption patterns are changing so maybe from hell start now James you know they say every song is a Samo and there's this one song you did that's my favorite because it's actually speaks to my spirit called satisfy yeah fridge to be about it's a beautiful song and it just that one has a very special place in my heart satisfy for me it's just that reminder that everything I'm chasing is futile unless God is at the center of what I'm doing and what I'm pursuing and I think I was just struggling with my own challenges at the time and I was just trying to remind myself like God even if this thing doesn't work out it is you that's going to give me happiness it's not a job you know as young people and the economy has been tough so a lot of young people are like no there's plenty of people who have fantastic jobs I had a very high-flying job and I still wasn't satisfied right there are people who are we were just watching a movie by the late Robin Williams the other day and he was famous beyond fame making money all over the place and he wasn't satisfied with struggling with some issues took his own life so it was just that reminder that really only in God can we find sort of all satisfaction there is that God-shaped hole in all of us you can fill it with whatever else you want at the end of the day it's not going to match it's not going to be enough only God can satisfy us I mean the genics eat and a conspiration but anyway this is my God the first time we saw it to the DJ makes we're like hold on I was so scared releasing that video it took a while I kept asking my husband I'm like hey should we should we do I look silly don't look but I love music I wait by the way I'm half-Costerian half-Jaluo yeah I have to read them somewhere up with Danny but this is my God is a fun fun video to do and yeah I guess the motivation behind it come out from my shell the motivation behind it is just to say there are things in our lives that we go through that and here we're just like hey you're new Mongo too yeah it is just to say that anyway this is my God there's no way I'd have survived this thing if it wasn't for God so it's a testimony but the same time I look at it as a declaration of faith moving forward to say I don't know what it is that is happening and I don't know how this situation is going to work out but who has never failed me and I can trust him eternally so whatever challenges even this corona you know God is not asleep he does not sleep or slumber he is awake even these locusts he will deal with them and we will testify that this is our God okay so encourage guys encourage guys you know there we have ladies who want to venture into music yeah yeah and I couldn't believe they are hurdles they are challenge they just want to give up but this is an opportunity for you to encourage them yes on camera for okay yeah again I'll just repeat the message that your motive is so important in life and if God has given you that desire the other thing to learn is just to trust in his timing and to wait on him to bring it into fruition so many times we get impatient and that's when we start doing things by our own might and by our own strength and that's how we mess everything up so trust in God trust in his timing and as you wait be actively waiting that means you're seeking him okay so present the desires of your heart to him but his word tells us in Matthew seek he first the kingdom of God and all of these other things shall be given unto you so we'd be lying to ourselves if we said that we're seeking you know all these other things fame marriage because that's a thing nowadays to say marriage but God is nowhere in that picture we'd be lying to ourselves and most of all we don't want to be the ones to disappoint him either so you know keep on keep the faith keep trusting him and above all just surrender that desire to him because at the end of the day only he will satisfy okay thank you now how can people get your music yes but from youtube other avenues yeah yeah you can catch up with my music of course on youtube and then it's on all those digital platforms when you are my itunes what were itunes were coco sour you can get it on and if you want the albums you can also visit my website www.joysomondi.com and they could also follow me on social media at joy so mondi that's on facebook on instagram and twitter and of course youtube at joy so mondi yes thank you so much thank you for making time thank you guys for having me maybe uh before she leaves you know i uh when you talked about albums um i was tempted to ask and i will ask okay about uh should we expect some collabs from you because actually yeah so what should we expect from you maybe yeah that's true i think i've only done two collabs actually and they're both from my first album um spirit versus soul is very like yeah but yeah i would absolutely love to do more collabs in future it's something that i feel everyone should you know prayerfully consider so i'm not the third but you know i'm not that chick but um you know i feel it's very important to be on the same page with someone as far as these things that i'm saying the motive and what is the purpose of this song do you miss that he's on my drama but yeah sure yeah but um definitely that is in the works for 2020 so watch the space it's not going to ask you guys on social media with everything that is happening lately they played the false prophecies do you think this the end times what's your view on that i think it's absolutely the end times already um not just because of corona or the locus but just because even the way we live our lives i mean uh the bible talks very clearly about how in the last days men will be lovers of themselves instead of lovers of god and if you see it i mean we're so vain all over the place social media i make what you try to manga or to clear my picture if you're watching you know what i mean because you're all trying to attract attention to ourselves it's become about money it's become about fame about flossing so yeah for sure in the end time so people need to get themselves ready yeah yeah but you know what the the thing about the end times is it's not about doom and gloom there's this beautiful story of hope for those who know jesus christ so we have an eternal glory to look forward to we have eternal life to look forward to because one day this king of ours is coming to carry us away to live with him in this beautiful paradise of heaven so i'm excited anyway we're just about to dance oh okay this is my god for the very first time dropping your own jessie's show and if you're about to dance the genics will be joining us


Lake Bemidji fishing pier has reopened and is back in operation, but it may look a little different last weekend High winds combined with strong waves cause significant damage to the popular dock a 20-foot section that sustained the most damage was removed and the length of the dock was shortened Park staff tells us that it may not be able to be repaired leaving the the department to explore new options You know over the last couple years We've really had a lot of wind a lot of waves a lot of movement to that dock so We we did manage to repair it But the whole dock itself has sustained some some damage So we'll be just kind of evaluating it this year make sure it stays in place and kind of come up with a new plan Probably for next year the shortened fishing pier reopened Tuesday afternoon so that it would be ready for the Memorial Day holiday weekend If you enjoyed this segment of Lakeland news, please consider making a tax deductible contribution to Lakeland PBS


Hello and welcome to the session. In this session we discuss the following question which says if two straight lines intersect each other then prove that the ray opposite to the bisector of one of the angles so formed bisects the vertically opposite angle. We know that that if lines intersect then the vertically opposite angles are equal. This is the key idea to be used in this question. Now we move on to the solution. Consider this figure where we have lines A B and C D intersect at point O E that is the ray O E bisects angle A O C that is we have angle 1 is equal to angle 2. We need to prove that the ray opposite to the bisector of angle A O C that is the opposite to ray O E bisects the vertically opposite angle that is we need to prove that angle 3 is equal to angle 4 that is ray O F bisects the vertically opposite angle angle B O D. Now we have ray O E bisects angle A O C ray O F is opposite to then we say that this E O F a straight line is a straight line and we have that E F intersects C D this would mean that angle 1 is equal to angle 4 since they are the vertically opposite angles and we know that when two lines are intersecting the vertically opposite angles are equal. Also E F and A B intersects 2 is equal to angle 3 as you can see there also the vertically opposite angles and so they are equal. But we already have angle 1 is equal to angle 2 this would mean angle 3 is equal to angle 4. So we were supposed to prove that angle 3 is equal to angle 4 so hence proved this completes the session and we have understood the solution for this question.


What's up everyone? It's your girl Kinsey here from Layton Sports Cards and I'm ripping a personal for Dennis G. We've got a 2023 Panini Prism UFC Hobby Box. All right, best of luck Dennis. Thanks for hopping back in. Two autographs here. Empty. Um, Tarik Lewis-Silver. Love watching him fight. Henry Sehudo, Ruby. Zero gone in. Zero gone. Patty. Got Purple. Brandon Royval. 38-149. Lauren Murphy, Ruby. And Dominator Shevchenko. That's Rodriguez Ousmane. Hasbulla Ruckibase. Got Silver. Dominic Cruz. Aqua Wave of our Radahu. And Sean Brady, all out. All the way. Justin Gaethy, Whitaker, Oliveira. Purple. Al-Dana. 83-149. Sean Brady, Hyper. Torres, all out. That's Sonia. Silver, Adrienne Ines. Anderson, Silver, Ruby. Moreno, Fearless. Blue, Mackenzie Dern from the Women's Bantamweight Division. 86-175. Alexa Grasso, Hyper. Sparza, Dominators. Silver, Ortega. Carol Rosa, Aqua. And Blazowicz. Mallie, Ken. Got Orange, Raquel Pennington. That is 54-99. Ruby Wave, Rookie. Phillip Rowe. And Hallmonitors, Matt Hughes. Silver, Jorge Mazvedal. First Ottawa, Champions. It's got to be a Glover, Teshara. Nice one there on the Silver. There you go, Dennis. Glover, Teshara. And Dominator, Chuck Liddell. We've got Rachmanoff on the Blue. 149-175. Madison, Hyper, Rookie. And Peter, Jan, Fearless. Here's Nunez. Bittory, Silver. Next, Otto. Gonna be a Joe. So, Solekki. Solekki on the Rookie from the Lightweight Division. Dominators, Max Holloway. Last pack here for you. Old Ghana, Cannonier. We have Red, Rookie. Of Karizzi, Karit Karizzi. 170-199. Some of these names. Hyper, Katar, and Fallout of Mackenzie Durr. Alrighty, Dennis. Congrats again on these two autos. Nice to share on the Champion Signatures Silver. That'll do it for you. Thanks for helping back in. We'll get these right out to you.


Hey guys Matt back free salon education comm and I'm excited to make this video because this video is all about my favorite tools And what I'm using on a daily basis in the salon. So let's check it out We're gonna start off with combs and I'm gonna try to make this video short and sweet So I'm not gonna go into too much combs my favorite 339 ys Park and the ys Park 3 3 2 The only difference in these combs is the width of the teeth So I like the 3 3 2 for more dry cutting texture cutting things like that And then or combing through wet hair just to get it started and then the 339 comb I love for all my precision cutting scissor over comb those type of things There are other combs that I use but these are the two that if I had to leave the house with anything It would be these two combs because they work really well Now let's get into scissors. You guys know I love scissors. I love Mizatani scissors. So Favorite Mizatani scissors to date and I've been using a lot. I've pretty much used every Mizatani scissor out there So the DB 20. This is one of my favorites the thing I love about this scissor is the ball bearing Screw and the reason I love that exposed ball bearing screw and no hair does not get in that But what I love about it is that how smooth it is to open and close It's easy to maintain because you can see everything And it's also got nano powder metal steel, which is a softer metal helps grip the hair Really great for precision cutting and pretty much any type of cutting that you can think of so I use this one and a 5.7 The reason I like a 5.7 inch scissor is because the longer your scissor gets the weaker It gets to the tip most of the time. So if I'm looking to Do precision cutting you want the strength of the blade throughout the whole blade So you want to make sure that that's that your scissor is not super long for precision cutting The other scissor that I love when we're talking about a longer scissor is the blacksmith fit now I have this one out of six and a half inch and the reason I like it out of six and a half inch is because When I'm working scissor over comb This is what I do a lot of barboring with a lot of men's cutting I like the longer scissor because that allows me to cut more hair at once and It just keeps you more consistent when you're scissor over combing if you guys haven't checked out the video We just did on scissor over comb then you could check it out on our channel But I explain and break down why I like a longer scissor for that. So this is for scissor over comb love that now my texture scissor is the type Z dual Texture scissor so each side is both texture thing I like about this is a lot of times when you're cutting hair Using a texture scissor. There's a full blade and a texture blade And what happens is when you slide that scissor down the hair shaft That the full blade grabs onto the hair while the texture blade kind of releases the hair So if you're looking to not get that pull as you're sliding through the hair with the texture scissor Then you would want to use a dual texture scissor like this one Because it's gonna as soon as it cuts the hair then there's nothing no friction on it So it slides right through the hair really nice So this is another tool that I definitely would not want to go a day in the salon without For a razor. I like the plier feather razor. It's a straight blade. I like using this It's just a preference of mine I think you can get a pretty similar cut with a guarded Feather razor, but I really like this one for detail work I also shave the necks on my guys with this as well so So there's a lot of different things that I use this for and I love the plier feather razor as well When we get into brushes now brushes I'm pretty particular about and I don't understand why every company I use other companies and just drives me crazy so The first brush that I love is the 413 brush from Paul Mitchell used it for over 10 years. I love it And nobody makes a brush like this. I don't know why I would think every company would want to have a brush like this But the thing I love about it is the bristles have little balls on the end So it slides across the scalp really easy It doesn't have too much tension so if I'm looking for I'm working with more of a fine textured hair or Somebody that that doesn't have real curly hair then I can go through and use the 413 brush Blow them out. It allows a lot of air between the brush and the scalp. So you still get some volume with this brush It's not flattening it straight down So I love that The other set of brushes and this is from our friends at ergo Now I had never used an ergo brush until we started free salon education They sent us these brushes and I love everything about these brushes I hope you guys can see them on the camera, but really for the most part I'm not doing a review on these brushes. I just love them ergo round brushes I don't we don't not use them in the salon now. We use them on every guest all the stylist here So definitely check out the ergo brushes it says ask ergo.com so go on there you can get all the information I also love their paddle brush I was using the palmatial paddle brush for a long time. I like this one better. I think that the bristles are a Little softer and it glides through the hair a lot better And I love the tension of this brush So ergo paddle brush and they're set around brushes definitely good to go on those So the wet brush is one of my favorite brushes. I Do not comb wet hair out without it I don't know how we got through life without it before It's funny because this this brush I never I always saw them at hair shows And I always just never thought to buy one and then we happen to be in the beauty spy store And I picked one up and I haven't been able to put it down. It's a fantastic brush for getting through wet hair especially if you're When you want to do precision cutting you got to have really clean start to your hair cut So this is a brush that allows you to really brush through the hair glide through the hair Without having to worry about the tangles and all that so it saves a lot of time in your day But it also gets the hair perfectly smoothed out to get it ready for the haircut So definitely recommend this brush. We also sell them in the salon and they sell out right away So if you want to bring them in for that as well, it's it's a good brush to have Last couple things I love the vibra straight iron from Bercato Just started working with this company and this is one of my favorite tools I have loved the ceramic iron for a long time. This one actually has a vibrating function So as you're gliding down the hair it vibrates and I used when I heard about it I was like well, that doesn't really I don't understand why it would do that But when we do our super silk treatments the hair can get a little bit rough feeling when it has the silk protein sprayed on there The first round that you're going through and the vibration just allows the friction of the hair to not be as much So it glides right over so I really love the Bercato vibra straight iron I use it for whether I'm doing the treatment or not I use it for all the smoothing of the hair it comes in a few different sizes We have these on shop FSE so you can definitely check them out on there Last couple things is my andis master clipper I love this clipper a lot and I use it for every men's cut And I also would not the reason I love it so much is these clipper guards Are fantastic. They're magnetic and they just snap right on and they hold really tight So they're not just a plastic clip on it snaps on with the magnet and holds it right on there So you can pick up these clipper guards. I believe it sally's or I got them off of ebay And then the andis master clippers are awesome So check them out. You can get them at a hair show probably on their website I would go on their website and see where to get them But check your local beauty supply store for that, but definitely an awesome workhorse clipper Last but not least got to have a spray bottle. Love the Mizetani Rubber spray bottle. So it's fine mist works really well. It doesn't spray your clients right in the face Fantastic spray bottle. So I hope you guys like those Products those are my favorites. I'd love to see what yours are leave yours in the comments below Because if I haven't used it, I would love to try it. Maybe we can do a review on it So check it out free salon education calm We have a lot more videos to come and if you have a product that you want us to review or check out email me mat at free salon education calm, but we'll see you guys on the next video. Thanks


Alright, so, my name is John Venter. You can find me in those places. I work at Adobe. I work full-time on jQuery Mobile. The reason that is so enormous is because I'm really grateful for the fact that I get paid money to work in open source. So Adobe is taking kind of a big stance on doing this and I'm one of that factors. I was prior to that, a rubious full-time. So I'm not a total sell-out. Okay, so what are we really addressing here today? So what is this talk actually about? This talk is about really big classes. So I think everybody is familiar with, or just quick show of hands. How many of you in here are Rails developers? How many of you have seen the gigantic user class in a Rails application? Yeah, right. So this is a pretty common thing. These gigantic classes are pages and pages and pages and pages are just my methods. So I kind of want to address that a little bit today with this as a technique. There's a couple existing solutions out there for large, really large classes and so one of them is, I like Pub, makes it into all the things. There's a couple, so you don't need to be able to read this, but if you guys have ever looked in terms of off-logic, there's a session, and to be clear, all the code examples I use for like public projects and people's projects, I'm not here to bag on people. I'm just here to use these examples. But if you look in off-logic, the session base class is just basically a big include. So everything is in other modules and about doing this gets you is you don't have to scroll down, like things are grouped logically. Other than that, it's just moving the code around. Okay, and then the other one is object composition. So this is sort of like when you think about refactoring your code base, a lot of times it involves some form of object composition. And just as a quick review, what is object composition? So if I have a lamp and I'm dependent on finding my needs maintenance method is dependent on finding out the bulb age. This is a very simple example, right? So you're not necessarily going to have to worry about refactoring something that's headlines. But as an example, this works. So the bulb age is sort of contained in the lamp class. So you just switch this out by injecting the bulb in and then asking the bulb itself. So delegate. And that's composition. You're adding, you're using your hazard relationship to move code into another place where it makes sense. Okay, so super simple. This is the most basic form of object composition. There's a lot of different types and ways to do this. And as part of that we'll discuss today, this rack middleware as an abstraction is sort of just another form of object composition. Okay, so Shane counseled me to do this as a survey. So how many of you use middleware when you say middleware if you say it at all in the singular? So when you say middleware, you talk about one thing, okay, there's three, three speakers over here and some people on the back, right? How many of you use it in the plural, middleware? Okay, you have to raise your hand for something. This is not an object. Okay, so most of you use plural. Okay, so how many of you use it interchangeably if that bothers you? I'm really sorry. I might occasionally use middle things as a replacement for you. Okay, so let's do a quick review. So it's for obviously to understand the middleware thing as a general purpose abstraction, we obviously have to look at what it looks like when it's used and it's kind of made an environment. So let's take a look at a quick review of rack middleware. How many of you in here know how rack middleware works? Okay, so that's actually pretty good. So when I gave this presentation like a month ago, it wasn't quite that good. But this will be a good review for those of you who know, and you have to cover it anyway if you don't. Okay, so when I say middleware, middleware means a lot of different things on the top part, right? So when I say middleware, I really mean middleware as it's envisioned in PEP333. And if you've never read this, it's actually kind of an interesting read because the whole purpose is more just to bridge the gap between servers and frameworks, but they sort of threw this in here as like the added incentive. You know, it's like the extra set of knives you get when you're buying, you know, oxy clean on the TV or whatever. The middleware was just an incentive for people to get excited about using this bridge between the server and the framework. And so anyway, it's a good read. You should definitely check it out.  It's not very long. Okay, so in middleware, they're very concerned with request processing. So the request as it comes in and the response as it goes back out, it gives them the opportunity to go after them. So this is what a middleware stack looks like. Now specifically this sits between the server and your framework. So in Rails, it's between whatever server you're using and Rails. There's stuff that happens there. Rails at the refactor, the big refactor for 3.0, moved a lot of stuff into this middleware space because it really makes sense because it's just request processing. It doesn't really belong in the framework level. So they kind of pulled it out and made it available. So this is what a stack looks like. And the stack operates top down. So request comes in at the top. The very first middleware there at the top gets the opportunity to operate on the request first and then it proceeds down the stack. So let's take a look at just an example of middlewares. So first things first, before it ever receives a request, it gets initialized. And when it gets initialized, it gets the next middleware in the stack as the first argument to its constraint. So it is aware of the next middleware. And that's extremely important because it is the responsibility of each middleware to call the next middleware. And this is the thing that defines the difference between a middleware and an endpoint. The endpoint does nothing further. It returns the response. So it would never make a call to it. So in that case, the app, the thing passed into the constructor, is the common model. So when you run the server, again, the request comes in, goes top to bottom. First it'll hit the, our example middleware. The call method is invoked on that middleware. It gets a hash.  It represents the request. It's got headers. It's got everything that you need in the request to deal with a web request, right? So it needs to be requested. And then you can manipulate it or you cannot manipulate it. But one thing that you have to do if you're being good at this is you have to pass it on to the next middleware. So you can do stuff before, and you'll know here that you can do something after too, right? So you have the opportunity afterwards to do whatever you want with the response. So it's very general, but you have a lot of responsibility. You have to do the right thing with the request. So as I said earlier, endpoints. The differentiation here with vagrants middleware, which I'll discuss in a minute, and rack middleware is that vagrants middleware sort of throws in a lambda at the end so you just call something so you just as a middleware keep calling the next one and don't worry about it. It'll sort of handle it for you. Whereas the rack, you have to check to make sure that there is a middleware if you're going to be both an endpoint and a middleware. If you're going to be an endpoint, just get the request and return response and call anything of this. You're never going to get another app to call. You're never going to get the next middleware. So that's the difference between an endpoint and a middleware. Okay, so at this point I just want to make sure that's all clear because this is obviously very foundational for the rest of the talk. Anybody have any questions about how this works? And I realize in our conferences it's sort of not cool to raise your hand if you're not sure what's going on upstairs, but that's fine. If you have a question before you ask it now so you can understand the rest of the comment. Anybody? Cool. I will just assume that you're all in deep understanding of this. All right, so let's talk about Vagrant. If you're interested in Vagrant after this talk, during the talk, you know, definitely check it out. I co-created Vagrant with Mitch. I'm a first-world contributor to it, though I do not contribute at all anymore. I contribute like a year or less. Anyway, how many of you have used Vagrant? No Vagrant is. All right, that's great. Okay, ops folks, I'm sure. Anyway, the internals of Vagrant we're going to be discussing today will touch a little bit off what it does, but not really. Anyway, definitely check it out. But in general, if you've never heard of Vagrant, it works on virtual machines. So it lets you deal with virtual machines locally. It kind of streamlines the whole process of using them for development. So there's a lot of stuff that goes on when you want to use a virtual machine locally that takes a lot of time. You've got a slot operating system. You have the core forwarding. You've got the folder sharing, all that stuff. That's a lot of clicking around. This automates a lot of it. So there's a lot of operating on virtual machines as I've done. So let's just take a look at one command. So Vagrant, when you have a virtual machine that I'm working with with Vagrant, and I want to suspend the virtual machine. It's a relatively simple operation. So this is what, generally, this is what the middleware stack looks like for suspending a virtual machine. So these are the operations that need to take place for a virtual machine to be suspended. And this is the way that Vagrant does it. It builds a stack of operations, and the virtual machine or the environment containing the virtual machine will get trickled down through those, and some will happen. So let's take a look at it directly. As I said, top to bottom, virtual machine will go down inside an environment, although it's easy enough to think of it as a virtual machine. So let's take a look at validate first. So real, real simple. So when we run the command on invocation, it checks to see if your config is valid. So if Vagrant does configuration, you build virtual machines through a Ruby DSL, through configuration, and it has to validate them, right? If you're doing something wrong in the Ruby config while obviously you can't, it doesn't want to deal with your VM because it might screw something up, so it yells at you and says, you're doing your wrong. And then it calls the next middleware, which in this case is checked accessible. So this is in, your VMs can get into a state in virtual locks where you can't deal with them or monkey with them. So this just checks to make sure that's not the case before it goes off and tries to monkey with them. It calls the next environment, which is spend, so this is where the magic happens obviously. This is really simple, so it just asks the driver. So this could be one of two things, depending on which version you're using. This could be the API to see API the virtual box provides, or it could be actually an exact of the Vbox managed command. Either way, what ends up happening here is your VM gets suspended. And that's important as I said earlier. There isn't actually another middleware here to be called, right? But Vagrant sort of handles that for you. Let's say you're creating a plugin and you just don't have to think about it, right? You just be a good citizen and call the next one. Because there are really no endpoints here. There's nothing to return back out of the stack necessarily. We're just operating on the VM. So that's an important difference between this and that. Okay, so Vagrant up. So this is the big one. This is, I have nothing, and I'm going to create a VM from scratch. And obviously there's a lot more operations than there aren't to spend. Particularly just thinking, you don't have to read this. These are the same two operations that were at the top of the suspend stack. So we're getting a lot of reuse here. Because there are similar operations that have to take place in almost all the commands. When you build them this way, when you compose these operations together this way, it's easier to reuse them. Generally speaking though, if you were building this from scratch, and you weren't using the subtraction, there may be something else you could use. But your VM, you can see VM all the way over there all the way down the bottom, right? If you were to show all this in your VM class, it would be gigantic, right? The VM class would be enormous. And that was the original thing as we were working on it that we came to. We realized really early on we were a Rails developer before we started working on this. We didn't like happy, gigantic classes where it was hard to figure out what your method dependencies were. You knew the balance around. It wasn't easy to test because of all these weird, you had to set up the object. So we knew very early on we had kind of an intermediate step between bloated VM class and middleware. There was this kind of action thing. You can go through the VM history or the VM history and check that out. That's something we wanted to avoid. Okay, is it clear at this point how vagrant uses middleware to operate on VMs? Is that clear to everybody? Okay, great. All right, I'm not completely failing at my job here. Okay, so I want to refactor something that's out there now as a public piece of software. I chose the diaspora user because honestly, I got it as the first Rails application I could think of that was open source. I'm sure there's other ones, but it's the first thing to pop online. Actually, their user class isn't gigantic. It's big, but it's no bigger than any other Rails user class. It's pretty good. Let's take a look. Just to get a sense for how big it actually is. I don't know how long this will take. It goes on for a couple more pages. It's a really, really big class. Ideally, what we do here is we want to find some methods that are dependent on each other, some group methods, some things that fit together so that we can pull those out into an object and then compose it using this kind of middleware idea. Okay, so let's take a method and turn it into middleware. First thing I noticed that it doesn't have a lot of dependencies, so it kind of makes sense for this. They have an accept invitation method. I am not paying attention at all to what these things do. I'm just moving them out into a class. I'm assuming that this accepts some sort of invitation based domain. I think it does. If you want to take a look at it yourself and get back to me, okay, so this is the method as it is. I don't care what it's doing. You don't need to worry about reading it. Just know that it's large. That's enough to know that it should be changed, I guess. It's really big. What I want to do is I want to move this out into a class. Remember, we have the call method convention. We're going to stick this into a class that has a method call. This will be the method in which things are done when this middleware is used. Let's move that over. The one thing that you need to take note of is that there's just that one dependency. This method is actually pretty big enough. It kind of contains everything. It only has the setup method dependency and that's another method of user calls. So we move this over. There's a couple of things that need to happen. I'll explain this to you. We need the user, right? We need the thing to operate on. There's two kind of ways you can do this. You can say, I want just a hash that will have this stuff to operate on and I'll worry about getting it out of the hash. Or you could say it's the user and then maybe another argument. You can do it any way you want. It doesn't really matter to me. This is just sort of easy to illustrate if you can mention having just a state bag. Up there, there's a user in the state bag that we're going to get out and operate on. Previously the method just referenced self everywhere. It's itself not something and it's itself. So now we're just going to change that just to be user everywhere. This isn't like a painful refactoring. We've got a pretty quick step over to doing this. At the bottom, you have the call to the next app necessarily. I think down there it's missing environment. That's about all you had to do is add those two things. Add some extraction of the user object to operate on for the environment. In this case, it has some options that need to be altered and then down at the bottom, putting in the call to the next middleware should exist. Then the setup method has to do the same thing. Specifically, when I got that user out of the environment, I set it to an input variable and then just attribute accessible or whatever. User make the alterations in the setup method which is called previously in the call method and then this sort of handle. Wrap these two things into a class and it's up. This is the controller where this happens just for reference. It gets user finds it, the user buys invitations over and then accepts the invitation. In this case, that should actually be user over here when we change it, but we'll see in a second. It accepts the invitation. What I've done now to proxy this over is I said let's just leave the accept invitation, everything else the same everywhere, and just do what we would normally do, just use the class inside of the user. Take our middleware class of users. I'm delegating this out to another class. The first option is to instantiate the middleware and then just do a call with the options. Super simple. The other one is if you want to spend a little more time, you can put together some infrastructure where you can have a registry of these middleware to use and just have them after the symbols or something and then just run them off like that so it's a little easier to repave. I'm not going to illustrate what this machinery would look like. You can look at rack, or you can look at vagrant as a reference. This has a little bit of an interaction because Mitch wanted to make users to be able to work with, but it's still followable. But this stuff can be really simple. This isn't super hard. Okay, so what if we'd buy ourselves here other than just moving code around like I said earlier? Okay, a couple of things. This is my awesome testing code. Hit mock stuff, you probably shouldn't mock, but the point is that it's really easy to test now. It's its own contained object, right? Your tests can be kind of simple. You can mock things in. There's a sense that when you look at something and you can fit it all on one screen, and you're aware of what all the method dependencies are because it's all fitting within that class, you don't have to worry about breaking something when you decide to refactor.  You don't have to go searching through the gigantic class because of a method. Also, and I'm not trying to advocate prefactoring this type of stuff, but in the future, should you decide to have kind of a set of steps that people have to go through when they accept an invite or something with that effect? So, for example, let's say that when you sign in through the web interface, you're sort of marked as a new, for whatever reason, and then they have some sort of API and you can hit the curl that would make you a veteran of some sort. So you want to, both of these times, you want to accept the invite, but maybe you want to do something extra in those cases so you have your new stack and your veteran stack. Okay, so let's wrap this up. What are some signs that this is a good abstraction for you using your code? So obviously we're used. We just talked about this. When you need to have the same functionality running all over the place, and you're tempted to use a mix-in, think about using object composition. I mean, just use object composition if you're not sure about the middleware thing. Don't avoid using mix-ins all the time, but this works really well. And if you wanted to get a little more complex as a consequence, now you can kind of compose these things together as a whole action. So serial methodification.   You may not even have arguments. So you can kind of map that over to middleware. And this sort of assumes that you have reason to extract these out into a middleware of the software. So var as a backer, ostensibly large methods, or have a lot of dependencies, you can do both ways. Alternately, because the one on the right would mean you're kind of disdaging your stack every time, you store your stack somewhere so that it's available, and you just need to call a class method or something like that. Obviously, I'm aware that that is not enclosurable. So another one is function composition. So when you're composing a bunch of methods where you're just sort of firing off stuff along the way, taking some arguments and then passing the result back and forth, you can do the same thing here by just, again, imposing the methods as middleware. And that is it.


The project has been about two years in the making to get rid of the biomass which is on the ground now which is covering the whole floor, not getting any spaces in amongst the power grass etc to allow other native grasses to come through. It's just to remove the excess fuel loads on the surface in a cool manner so it's not actually affecting whatever seed banks land on the ground or other vegetation. So nice, slow, cool burn in a traditional manner. The traditional land is back in the land at sea. The custodians of land at sea land and we're out here to support them. It's important to their culture to survive and actually have those learnings and teachers within their own culture to keep life going. We deem ourselves as fire practitioners. We're very much still in the learning I guess journey to understanding the implementation of fire management in landscapes and I feel that the time's sort of right for us as traditional owners to start influencing and I guess use of fire in landscapes. Try to change people's opinion on fire you know when you use it correctly at the right time of year that it's not scary it's something that we use quite regularly and frequently to help manage the landscape and I guess the quicker you can understand that you know the better off it will be.


The following is a public service announcement for solderless breadboard users. When wiring your circuit on a breadboard, take note of the lines indicating each power bus. If these lines are separated, then so are the conductors inside your breadboard. You'll need to bridge the gap with jumpers in order to use a single supply across the board. A simple fact that can easily escape the human mind when it's troubleshooting something more complex, like say an electronic circuit and or code. And if you're muttering to yourself why do they do this, consider the fact that split rails can be helpful when using multiple voltages across the same breadboard.