Hey Virgo, welcome back to your love reading. This is for Virgo sun moon rising your Venus if you're new to my channel Please do hit like share and subscribe. I would greatly appreciate it. This is a love reading for all Virgos Virgo your love life is just insane The drama Always some drama Let's see what's going on if you guys want to get a personal reading. There's a link in the description box below this video Just click that link that will take you to my booking site and Yeah, just remember that's a general reading. Okay, you guys so some of the messages may or may not resonate take what fits leave the rest I'm gonna do the Celtic cross and take a look and see what the energies the love energies are here for you Virgo playing out Okay past position you have the five of wands current you have the magician Then you have the ace of tentacles you have the hermit You have the page of tentacles the eight of cups the nine of wands the four of swords seven of cups and your outcome is the king of wands and the night of cups bottom of the deck you have Justice, okay. There's something happening here. There's a win-win. There's a truth coming out for you. Okay, we have Libra Sagittarius Leo Aries Gemini Virgo Showing up so far. Okay. I feel like somebody's coming in to talk to you Either to make something right or to try to give you some type of truth. Whatever it is This is something that you Deserve or something it's like facing their fears. We have the death card and Judgment so that's double Scorpio energy. Somebody could be on the cusp of Libra Scorpio But this is like putting an end to something overcoming fears getting out of a tumultuous situation and Opening up. There's reconciliation happening here Okay, there's victory now some of you Might be at this point. We also have Aquarius some of you might be at this point where you're indifferent to this so this could be a surprise coming in for you Something that you don't expect Okay, but it feels like this person coming in It's coming in with a very positive energy a very positive. All right, let's take a look here. So the past You know what? Let's look at the love messages first What are the love romantic messages? Okay, let go of control issues allow the situation to unfold naturally Make the effort great love is worth taking the steps you've got it to take and getting to know each other Okay, interesting. So some of you definitely have somebody coming in here That's gonna read they're gonna reveal something to you and I just really it's simple. I just feel like this person wants to Bring justice to the situation make something work. They want to tell you They want to be fair And they may tell you that they weren't fair with you or something in the past. What else? What's coming in here? This is like someone's coming in like a fast talker They have a lot to say as soon as they open up. It's just gonna like spill out of them Which might not okay So the four of wands here they want to be in some type of a relationship or a committed relationship with you Virgo This could be like celebration renewal reunion holiday time Something like that. Okay, that might not be related to this But this is just the energy that I'm picking up here You know, I see in the past Virgo, there was a lot of Some conflict there was a lot of conflict uncertainty In a past situation. Okay, there was a there was a strong there was an imbalance There was a this need to bring harmony to a difficult situation or Something in your past, okay There was a lot of conflict and Struggle in the waiting Definitely in the waiting. Okay, that's such terrius energy Karma, okay, it was just trying to get at the truth about something But you struggled with that and I do feel like it's connected or at least it's connected to this past position You were trying to have things be revealed open up You were trying to like get at the truth of a situation in your past and you couldn't get that there was too much back and forth drama Fricking drama all the time or just conflict or like this Competing some of you felt like you were competing to have somebody's love or just both of you were competing with one another That was just you just wanted peace for ago. You just wanted things to be fair You wanted things to be balanced and tempered and even and easy Okay, that energy that thing that you were wanting this person's coming in here. I do feel coming in now to Try to make that happen. Okay Opening up. I feel like they're gonna tell you what was going on. There was a lot of fear in them They may tell you that someone they were close to passed away and that person had a huge effect on their decision And why they couldn't do something going forward or that person has just moved on May not have just it may not be like a passing away in the sense of like a physical passing away But has moved on this person I feel like they're charging after you this person might have fear of being open Being honest being true. They they had a lot of restrictions on them They couldn't overcome or pass a threshold or overcome Their mental struggles, right? They were just fear-based is what I feel.  You've already taken you've made a decision. You already have your focus You're waiting for your blessings to come in you're staying open I'm waiting for something new and a potential new beginning or a new opportunity to come into your life Okay, I see you here with the hermit where you're definitely in this like reflective mode You're not talking. You're not communicating. You're alone.   I just kind of feel like some of you you just feel like Whether it's too late or not for a relationship to come to fruition or be revived a lot of you are just kind of like Not ready to revive it just yet. Okay, and this is energy going into December I feel like some of you are just not ready to revive something just yet. Yeah, you are thinking about Love you have the night of cups. You are thinking Reflecting on a love offers you've made in the past to people or love offers that were made to you You're questioning. You're trying to gain clarity Or illumination about did you really love someone or did they really love you? Okay? You're not fully sure about a lot of things at this time. And so you're just instead making a Strategic moves for yourself Okay, you're looking at what you want what you can focus on where your abundance lies What you're able to have what you can manifest for yourself in your own life And that's a good place to be you're not so Virgo I feel like even if somebody from the past is coming back or somebody new is showing up You're kind of like well, I'm not saying no, but I'm not seeing yes Because you're still in this transition period You're still thinking about what you want where you're going what you need and you're sorting all that stuff out, okay? So interesting moving forward Going towards Like in the near future. I see you on some kind of journey or you're taking some kind of a trip You're temporarily, okay You're separating yourself. You're making this decision Here I get a sneeze. Hold on excuse me. I've been sneezing for like the whole day night. Um, I Feel like you're surrendering and you're I do feel like you're gonna walk away Virgo if an offer comes in from someone from the past.    There was some kind of betrayal and you're not staying in that energy anymore You're letting it go and That's very healthy for you. Are you forgiving someone?  Look here.  Well, here's the fool You're taking risks Virgo. You're moving forward Okay, your other person though does not want you to go of course They're in a healing position as well here, I feel they're definitely thinking and praying about you I feel like this person really wants to try to make the effort I feel like they want things to go the way they're meant to go But they do want to put something in here and it's amazing to me how much a major arcana is back here I mean the most significant thing here is this person for themselves personally that they are going to Come out of their comfort zone and make that move and talk to you But the major arcana is here You know and talk to you about Reuniting or trying to make something work the major arcana though here is this person is having a major wake-up call in their life and they are Oh I just heard being reborn they could be spiritually reborn or you know Becoming more reborn like not who they were in the past and trying to come in and Like make things right with you, but they're doing a lot of praying for you this person might have like They might be like Becoming a born-again Christian I don't know or they're getting their faith back. This person has died and has come to the light. That's how I feel Okay, it's reconciled.  This this person's soul. They're past They're just everything's done and coming to the light and their deeds and all the things and Asking for Justices coming in they want to make things, right? They've seen the light. That's what I feel this person has seen the light. I Don't know how I don't know what's going on with them But they've had some kind of a wake-up call in their life now for you. You might just be happy with that For others you might have been praying for that and hoping for that But you're also I feel like, you know, these communication and messages are going to be coming in and I feel like a lot of you are Very hesitant to kind of go back down that road again. A lot of you are just like, you don't know You're not sure that's something you want to do Okay, this person though Look Six of swords is the same person. Okay? Six is a reconciliation. You have a reconciliation card twice So I feel like this person is like praying for the strength and the faith Healing to get over their fears Look, there's justice again. Okay, these two cards are showing up here. And that's twice Okay to come in and make things, right? Tell you the truth About what was going on with them. Okay And I feel like Virgo, you're just kind of looking at like is this person's really coming in or they just lip service They're just saying what they're saying Because they're you know, are they still in fantasy land? Are they really going to commit? Are they going to ghost again?  They're working on this for themselves But Virgo, it doesn't matter what anybody does where you and your healing and your growth That's the question because I really feel like even if they do come in and make things, right? You may not be ready to is to receive some of you have already started over Some of you have already taken off on the journey of a lifetime And have already implemented new beginnings In your life here. Look a lot of you are trying to get into your emperor's energy or your emperor energy, whichever Having that new beginning for yourselves Okay nurturing yourselves powering up leveling up this might even I don't know what you did Virgo. I don't know why this person it might not have anything to do with you With why they're coming to this place that they're coming to now Okay, but here they are coming to that ace of cups a blessing. You're a blessing to them They've been given this opportunity They've been given a second chance at life another shot to do things right and they want to make things right between you Virgo, I feel like You're just I don't know. I just I feel like your advice here is to Not jump right back in Into anything I feel like you got to wait Virgo This is really going to be a shock to you Virgo when this comes in from this person It's going to shock the hell out of you And you're going to be very hesitant very hesitant because of the way they come in They come in fast and quick like I said Constant communication with you and it's like, whoa wait a minute Some of you like you let this person go because of all the conflict Some of you just said no the drama and maybe there wasn't any communication or you told this person I don't want to see you ever again. I'm done with this I mean it and they may not have responded or they just Agreed and you went your separate ways and now all of a sudden this out of the blue It feels very out of the blue Shocking energy right when you're getting yourself in a better place and you're moving on That's just sometimes the way it goes Virgo But look this person's trying to come in and like win you over They want to win you over Hmm the sun they want to have that success with you Virgo and open up Oh my goodness Bring that healing four of swords here. It's I you can't make this up when these cards come out like this You can't make this up and this is what I feel like is coming in here with this person And Some of you I will say you might be very happy about this However, for some this might be something that you've wanted but your hesitation is weighing heavy On me here as I'm looking at this because I feel like a lot of you made a decision and you're moving on Let's see what the hidden truth oracle messages are this person wants you Virgo They want you they love you so many things remind them of you Are remind yeah remind them so many things remind me of you This person they they have some good. That's the good news. They want to share for some It's like I'm ready to be married. I'm ready to do this And they want to share this with you. They regret lying to you But they're definitely look they're becoming a better person and this may be You know, is this true? I feel like to some degree. Yes, they're trying to be better for you They want to be better for you Some of you were hoping and praying for that And for others it's too late. It's just but can it be healed? Of course it can if that's something that you want and that person wants They know they messed everything up and they want to tell you how they feel Virgo Okay I don't this person may not have expressed their emotions to you in the past You may have been spending a lot of time trying to get them to open up and tell you how they feel To bring balance and peace into the relationship, but they might have been dismissive or avoidant or adverse You know resistant in a lot of ways to open up because of their own fears Not because of you or anything you did. I feel like you love this person as best as you could But you weren't getting anything in return This person cannot stop thinking about you Virgo. They feel that you've left them behind And that's giving them a bit of a wake-up call for sure Okay, yep, I feel you even though we are apart Yeah, this person cannot seem to get you out of their their head their heart space The timing just wasn't right. You were trying definitely wasn't the timing wasn't when you met this person It wasn't meant at the time for you both to be together I do feel that way and I feel like this person wasn't able to Give you what they wanted what you wanted because timing wasn't right for them either Some of you tried to make the timing right You tried to push the timing to be right and you became more frustrated and impatient and let it go Okay, um, but some of you did come to a place where you're like, huh, maybe it wasn't maybe that maybe that's what it was all about Maybe I need to just leave this be and go live my life And if it's meant to be that it will come to me and if it's not it's just not meant for me And I can't do anything about it Okay, you were the best thing in this person's life Virgo. Don't forget that They want to take back the things that they told you so The things that they told you where they placed obstacles in front of the relationship going forward um, or they didn't or They regret it just feels like a regret Even though they may feel like it may not have been divine timing It may just have been that this person told you they can't right now or they have other things going on I feel like there's some regret because mostly I feel like a lot of you just Removed yourself from the relationship It was my fault, but I blamed you and I lost myself for a little while So Virgo, you know I do see this person coming in They want to try to make effort here with you Okay, try to get to know you all over again Um, they want things that they might have had some control issues to some degree They were controlling the relationship are trying to like thinking it was Burger King They were going to have it their way They might have been trying to like make things go a particular way You guys there was a lot of battle between the two of you A lot I see a lot of battle um Let's see what the messages of love cards are Self-care Virgo clear your energy field and focus on yourself right now before acting That's your biggest message here. Go slow Take time to get to know each other.   That's what they taught you by You know You having to wait a lot of you spent a lot of time in the past trying to push it forward The lesson a lot of you learned was wait. I have no control over this or another person. I got to let go. I can only control myself Okay, children might have played a huge role or have a huge role in this relationship Okay, could have been pushing for children or to have children together It could have been like interference in a sense with children to separate ends parties having children and I'm trying to figure out ways to make something work. I don't mean interference in a bad way I just mean it was like a extra decision that needed to be considered Okay, you can be completely open with this person Virgo You can be vulnerable and you can open up and reveal some things about yourself should you choose to go and Repair a past relationship Support your ass being asked to lean on your inner circle during this time your soul tribe talk to your soul tribe or Get a professional to help you if you're going to go back healing old wounds the childhood issues need revisiting you know Virgo, I feel like Two people came into this relationship with wounds from past Maybe childhood and stuff like that that stuff has to be healed And that doesn't happen overnight. That's not like, oh, okay I see it and Because I see it therefore it's healed. No When you see where your wounds came from it's not just about recognizing acknowledging them. It's about learning new skills The wounds heal by new interactions with people in our relationship, so If you had A relationship with someone or one of your childhood wounds was abandonment When you address your abandonment issues in your other relationships part of that is like Becoming secure in yourself and that also takes action to become a safe person in order to feel safe in relationships We first have to start with ourselves like the man in the mirror from michael jackson We have to become safe people in order to have safe relationships when we become safe With others then we're able to just Determine if other people are safe for us, right? We're better able to say oh this person's crossing my boundaries. This person is Toxic or what have you getting safe? That's part of your healing Instead of latching on to people because people are Imperfect Instead of latching on to people and holding on to people to make them your safe place You make yourself your safe place so they can always depend on you because you Will never abandon yourself and part of your abandonment issues In your relationships are that you Are abandoning yourself to other people that's that's where the crux of the issue is when people abandon us in our childhood We learn to abandon ourselves That we learn that we are not important if we're not important to them. Why should we be important to ourselves? So that's part of your healing journey Read up and learn about abandonment and how to heal the self that way Okay time apart distance is bringing clarity I feel like there's distance or time apart between the two of you and It's actually causing more growth Away from one another and then how'd you stayed? And I don't know that either one of you made a decision to separate Like deep in your hearts. I don't feel like either one of you really wanted that. I feel like it's something that had to happen Okay patience Virgo everything will unfold and divide timing like I said before Um, what's meant for you will be for you and there isn't anything you can do about that And what is not meant for you will not be meant for you and there isn't anything you can do about that either So just let it be Just let things be get your healing live your life be happy and don't stress about things. It works both ways as well Let's take a look at your dates I want to see what dates we have coming in for you Hi everybody in the chat. I hope you're doing well. If you've made a super chat payment. Thank you I'll give you a little minute to Listen to this amazing music All right, let's take a look at your dates here What dates does Virgo? And initials if they give me initials I'm gonna call them out Dates and initials for Virgo I think this reading is going to be a little shorter than than usual Um, but we'll see how it goes You hear that screaming? That's my grandson He's tired. He has to have a nap Okay So we have Oh, hold on Hold on Sorry, you guys my grandson screaming He's only three. So you have the two sorts. So we have um We're starting with the letter h somebody's got an x or a v in their name An x or a v Okay So august 2nd i'm picking up the letter c I'm picking up Okay Let's see october 3rd Somebody's name is joanne And i'm also picking up um Oh, they're just giving me this name uh Oh zamir or it's zamir Or azzy Is it azzy or addy or abby? azzy zamir Okay Let's see Okay We have a we have a p a letter p um Somebody i'm hearing october 23rd for a birthday somebody is I'm hearing ages 20 22 or somebody's 32 I don't know But Who that's connecting to Oh, um ken the name ken Or keneth Or kenny All right, somebody was born in I'm hearing the two years uh 1972 1973 um somebody's Somebody is jogging right now a jogging or running or somebody likes to jog or to run um They're also giving me um Greg or a g Somebody's name with a g. Oh wow Um A g maybe there's a gemini a g Did I say an r a letter r they're saying a ryan or um Rian I keep getting joe Again Keep getting the name joe or josephina or joe or joann or joel It's like a joe thing Um Oh, sorry for my sniffly sniffles. Um There's um An april 7th Uh, something happened. They're saying okay. No, they're saying something happened between the week of april 2nd through the 8th Or april 2nd through the 10th At some point in life april 2nd through the 10th either something happened. That's a significant date or time period for somebody Or will be going forward april 2nd through the 10th Vicki, I just heard the name vicki or vic Vicki or vic somebody lives in a place called Uxsenberg or ux Or luxembourg or ux Or like a city or a town that starts with a you Something along those lines um september 10th Is coming out. Okay. They're giving me birthdays. Wait, they're giving me birthdays in september Uh, september 2nd 3rd, they're telling me 4th 7th 8th 9th and 10th. Okay Those are energy Um Okay, are you connecting with the pisces so many might connect with the pisces whose name starts with the Whose name could start with a c I feel Somebody here just woke up and is listening to this reading Somebody has an irish last name like mick mick Like mick it's mc an irish last name starts with an mc Oh, they just gave me mckayla But like a last name doesn't have to be irish, but it's a last name that's like capital m and small c July 14th July 18th Oh, I just got a letter b a b. They just gave me a b Somebody's name starts or ends with a b And there's a q There's a q somebody's name is me me or uh Or am I me me? Mia short for short There's a t. I just heard someone they they're saying a t t t Teresa Te Or t t i M e m o H o j i Okay So you guys um December 15th is going to be a significant day Very significant day Hold on a second my music just stopped Okay, December 15th something profound Things are going to come into balance. I'm not exactly sure What that might mean for you specifically, but it's coming up There might be some type of communications or something. Let's get a couple of charms and see what the messages are for your charms I think the music is done for now. So that's okay. All right. All right. We got a whole bunch Yeah So we've got a rabbit Okay, does somebody have a bunny rabbit? Maybe there's a bunny rabbit We have um, I'm gonna pull the ones that we haven't seen yet Oh flamingo, maybe somebody lives in an area where there's flamingos Um, there might be the birth of a child or something new with a bunny like something happening in the spring For some of you a star is born.  You're replacing the one that you have I just heard Okay, you've definitely got soulmate energy here. There's seahorses that's going to resonate for someone Um, there's also a wrench like a tool.  It's going to come in and stop and Help you to fix your car. It could be like calling a tow truck tow truck driver or something somebody's coming in to help you fix a car If you're completely you don't never met this person. This is your soulmate coming in Okay, it could be around december 15th for some of you It's interesting let me say I'm also seeing somebody's baking cakes Like three or four tier cakes or maybe there's going to be a wedding I don't know if people do cakes like that anymore, but it's like One layer with different flavors on top of the other keeps loading up Or you're making that or you're baking them or you're some of you are making like trays Of food as well. Maybe you're having a party or you're doing something or a buffet or you're serving Food to less fortunate or something like that Coming up around this time. You also have an owl And I feel like there's um Oh, they just gave me the vision of a pinwheel Weird I just saw a pinwheel You know One of those kids toys like a pinwheel Maybe you'll be seeing one or you just saw one somewhere somehow So this would be your message And there's also a gold rose here beautiful gold rose somebody you're gonna get um It's like uh, they just gave me it's wrapping gold wrapping over like a chocolate rose You know like a chocolate shaped candy mold a chocolate shape In the shape of a rose you get it or you give it But it's wrapped in gold foil So it's very beautiful. All right you guys that was your short little message for Saturday evening or Saturday day morning And I'm gonna leave it there for you guys. I hope that resonated and I will see you all Um tomorrow, please don't forget to hit like share and subscribe And if you need a personal reading there's a link in the description box below. All right Virgo. Love you guys. Take care


This is stock number 21T43. We are here at Summit Automotive in Fond du Lac, Wisconsin. You're new and used RAM and light-duty truck headquarters. Today we are checking out this brand new 2000 and 21 RAM 1500 Crew Cab Short Box Big Horn Level 2 Sport Appearance Group. This vehicle has the 5.7 liter V8 Hemimotor with MDS and it's going to get you 21 miles per gallon on the highway, 15 city in an average of 17 miles per gallon. Patriot Blue Metallic is the color. We shoot all of our videos in 1080p 60 frames per second so if you have HD capabilities on your computer tablet or smartphone device turn them on right now because it is definitely your best way to check out the looks and styling and color of the vehicle before seeing it in person. And if you'd like to check out all the photos on this truck in the upper right hand part of your screen is a link to our website click that and check us out there. It comes with the 20 inch factory alloy rims with the chrome covers. I believe that's a special rim for this truck has Bridgestone Duler HL tires on here. These are 275-55R20s and they are kind of a highway tread pattern on there. This is a big horn level 2.  The painted bumpers part of that sport group. Fog lights, halogen headlamps. Really like that Patriot Blue color. They had it back in like 05, 06, 04. They brought it back I think last year. Take a look at the original window sticker. Feel free to pause this at any point. I'm not going to go through everything but I'll go through you know kind of some of the big things here. The 5-7 Hemi, 8-speed automatic transmission. Everything on your left is your standard equipment then your optional equipment starts right there. Patriot Blue Procoats 100 bucks sport appearance package is $12.95 and that gives you the black interior accents on the interior here. Big Horn level 2 is a $2,500 package. Gives you the in-floor storage bins, the receiver hitch, 115 volt front and rear power outlet, 8.4 touchscreen. Gives you Android Auto and Apple CarPlay, the dual zone temperature control heated seats, heated steering wheel, the front and rear parking sensors, and then the power driver seat. Adjustable pedals, powerful mirrors, power slide, rear window, remote start system, and the Series XM for six months. So a lot of stuff that you get with that $2,500 Big Horn package. This one also has the anti-spin rear differential. The 5-7 Hemi is a $17.95 option. The rear wheelhouse liners are $195 and then those special rims and tires are $15.95. Total MSRP is $52.660. If you want to get your summit price in the upper right-hand party screen, it's a link to our website with all the rebates and incentives on this truck. Check that out there. Three-year 36,000 bumper to bumper, five-year 60 power train. There's your miles per gallon. And the thing for the Rams for me is the safety ratings. You have five and four stars up and down the board. Very, very safe trucks. Definitely feel safe hauling your family around in this vehicle. Patriot Blue, really good-looking color. We actually did a Hydro Blue, which is the other blue color available for the Rams. And it's the exact same truck. We did a video on that. If you want to check that out, it's in the upper right-hand part of the screen to see the Hydro Blue compared to the Patriot Blue. And yeah, pretty good video on that one, too. Four-wheel disc brakes. There are those rear wheelhouse liners. Coming to the back, you get the dual rear exhaust, the towing package. Full towing package, of course. Receiver hitch, four-pin and seven-pin wiring. Chrome tipped exhaust has the shock down assist tailgate, so it's never going to slam on you, which is really nice. And of course, the bed's in nice shape, because it's brand new. This one does not have the LED bedlining. Tailgate shuts nice and solidly. All the Rams come with the bed rail covers, which keeps your investment looking good for years to come. Those sport logos are just decals, so if you did not like them, you could definitely get those removed. Has the capitalist feel-fill, which is really nice. Never get gas on your hands again. And you do get the heated power mirrors, blind spot mirrors, and directional signals in the side there. They also power fold-in, like the window sticker said, which is pretty nice. You get the cloth bolsters and wood grain trim on the doors, power windows, power locks, and power mirrors. You also get auto headlamps and power pedals. The Big Horn Level 2 package is going to give you this dark charcoal and black on the sides. Seats, power driver seat, lumbar, and then these seats are heated because it is a Big Horn Level 2. Get that cool design on the backrest there and the seat. Factory floor mats throughout as we hop inside the vehicle here. Turn the ignition on so you can check out everything. You get the digital speedometer there. You got the compass. You can do outside temp display. You can change each of these corners to read pretty much whatever you'd like from the information center. You get the heated leather wrap steering wheel, which is really nice. Cruise controls and gear selector on the right, bluetooth and information center controls on the left. You get audio controls on the back and what I like about Chrysler Dodge Jeep and Ram is that they have pretty much the same steering wheels. Of course they got different logos, but all the setups are very very similar no matter which Chrysler Jeep Ram product you get in. So really cool that they do that. You get the push button start, turn dial, eight speed automatic transmission, push button, four-wheel drive, including four-wheel drive low.  You can do your heated seats here as well as your heated steering wheel. Then the backup camera shows up right there. Now what's really nice about this backup camera is that it number one it's HD so it's super crystal clear. These grid lines are dynamic as well meaning that they turn as you turn that steering wheel and then you get a plus button right there which zooms in right over the receiver hitch so you're always going to be able to get lined up and right on whatever you're towing the first time every time without help. So that's pretty neat too. You have your climate controls which you can do here dual climate controls where it's blowing AC all that good stuff and then you have your apps here. This one also has projection so you can project your cell phone to the screen through Android Auto or Apple CarPlay and if you have a different or if you have a navigation system on your cell phone you can project it to the screen and then it's like you have nav right on the screen. We actually did a demo on Android Auto if you want to check that out it's in the upper right hand part of the screen but really cool system really nice radio and that is all included with that big horn level too. Down here you have your more tactile buttons and knobs for climate controls. You also have a volume and tune control knob and then your heated seats and heated steering wheel buttons. Down here is your stability control toe-haul, front and rear parking sensors. You do get two USBs, two USB C's and an Augs jack right here for a media center. Cell phone holder. Down here you have a 115 volt four-under watt plug-in. Your keyless entry does have the remote start. Nice bulky key.  You get home link buttons with your garage door security systems and lighting systems and you have map lights up there and your power sliding rear window button. Auto dimming mirror. We'll take a quick look at the back seats and then we'll do one more final walk around of the truck. Lots of room in the back of the Rams. I think they have just about as much room as any half-ton truck on the market except maybe the Crew Max. Power slide rear window with the built-in rear defrost. These headrests do fold down for better visibility when nobody's sitting back here. Same design as the front seats and you do get the latch child safety system.  In-floor storage on each side with removable bins for easy cleaning you can put ice and drinks in there. It's like you have too many coolers wherever you go because there's one on the passenger side as well and then a 115 volt 400 watt plug-in back here as well as two more USBs and two more USB C's. What I like about these back seats is that there's no latch there's no lock. It snaps into place but to get them down you just have to pull them. There's no release that you need to do which is nice especially if you have stuff in your hands and or just have one hand available. Child safety locks on the back doors and we'll do one more final walk around here. You get the LED license plate lights as well and I would personally like to thank you for checking out the video today and hopefully from this HD video you will have gotten a really good idea of the Patriot Blue metallic color. A little bit about the big horn level 2 group as well as the sport appearance group and if this is a truck for you feel free to check us out and see more pictures of this truck or one of our other 450 new and used cars, trucks, SUVs, minivans, wranglers, half tons, three quarter tons, one tons. You name it we got it. You guessed it go to that website right there www.summitauto.com full pictures and descriptions of every single vehicle from two locations all at summitauto.com and if you'd like to check out more HD videos you can go to youtube.com slash summit auto remember to like subscribe and share on this video and all the videos that you see there in fact in a second you will see a link to subscribe to our YouTube channel on your left it links more Ram 1500 truck videos like this one on your right if you have not been to our website on the bottom link to this vehicle on our website click those check us out and we're super excited to be offering the 2021 Ram 1500 crew cab short box big horn level 2 in patriot blue towel thanks again for checking out the video


So the usual slide, which I explained in the beginning, so I don't have to explain it again. I add sort of, you know, you're free to copy, share, take pictures, blog, blah, blah, blah, as long as you give attribution. And I have a disclaimer, which actually all faculty should have, especially Mike Stromberg. He will next year is that I will not profit in any way, shape or form for many of the products, brands, and what not that I may mention. That's my email address, that's my handle on Twitter, that's the hashtag for the workshop. I should have given this on day one, but I didn't, sorry. And there's actually, if you want to follow what Galaxy is doing, this is the hashtag for Galaxy. So use Galaxy, so pound use Galaxy on Twitter, you can follow with all the people that use Galaxy or saying about Galaxy, so that's a good sort of tag to follow. So one of the big things about Galaxy, sort of behind the philosophy and the design of Galaxy is reproducible science. And the idea there is that it's really important for science to be reproducible, and it's very important for scientist one does experiment one, that he or she can hand it off to their scientist number two, and they should be able to reproduce and get the same data. And so when you're talking about bioinformatics, what would be the sort of the main things, reasons why an experiment would not be reproducible of software, and that's the one, David, no more from Michelle, but that's a good one. Yes, yes, so that's a good one. Can't find the data. Can't find the data. Yeah, that's a good one. The methods, exact methods, yeah, the sample, the data, the sample, the sample is different. Some other one would be the software, the so-called code that was available doesn't compile. I mean, that's a very actually common one that, you know, you have software, oh yeah, I use this package in Belva. And so you have the same version, but you didn't use the same parameters. So there's little flags, you know, sort of arguments, command line arguments to use. So Galaxy really tries to capture all these things. And actually there's ways in Galaxy to capture the data, the tools, the versions, and everything, all the sort of the metadata we call it around experiments. And so it really facilitates reproducibility of science. The Galaxy hasn't figured out how to do it with the biological samples yet, but they're working on that. So I'm going to talk a little bit about that. I'm going to talk about a Galaxy, the various forms of Galaxy, the interface, getting data in and out of Galaxy, processing data. And we're going to do, in the lab, Emily is going to run a next-gen sequence analysis on Galaxy, which is actually going to be the same lab you just did, basically. So we're going to do the same RNA-seq analysis in Galaxy. So you'll see the pros and cons of Galaxy versus and so forth. And one of the questions that may be on the survey would be, would you consider having a next-gen workshop, and we're going to ask you after the work, after you do this next lecture, would a next-gen sequence analysis workshop only in Galaxy, the whole workshop in Galaxy? Would that be something that would be useful? And another question that might be on the workshop is, should we do a separate workshop just on RNA-seq analysis, for example, and not have that part of this workshop? Anyway, so Michelle's writing the survey right now, so I'm planting some seeds. So Galaxy is also another, it's a very, sort of, is considered as a pipeline tool. There are many, many pipeline tools. We've actually published one many years ago, which nobody uses anymore, which was very useful at the time. And basically, pipelines are developed, pipeline tools are developed, and really to fill in a gap of things that need, you know, need to be reproduced, need to be reproduced in very similar ways and so forth. At the OICR, we actually, we use this pipeline tool called Seqware, which is a more, it's a less user-friendly, more, sort of, command line-driven type tool, but it is a pipeline tool in the sense that it allows, it writes, sort of, a metadata file and it keeps track of all our pipelines and the arguments and so forth, so that we can have, we can reproduce it, but more importantly for us is so we can automate it, so we've got a thousand samples to rerun and so forth, so we could be able to do it. And so, actually one of the things that the Seqware group, and as I've been and myself are doing is actually trying to put Seqware into, which is not a command, it is a command line tool, putting it into a mod, like a tool in Galaxy, so we're going to, sort of, put a pipeline within a pipeline, but that should, that should be, you know, technically doable and, but if you have a pipeline that works and you want to distribute it to people, that should be possible. So, as you may have gathered so far, I'm really, sort of, strong advocate and as the CBW in general, we're really strong advocates of open access, open source and open data and so is Galaxy. Galaxy is really trying to, to make things, making things and open from a, sort of, literature data and software point of view is really key to science. And so, I, I do bug our friends at Galaxy. I know, I know the developing team at Galaxy. Not all their publications are open access. And so, I, I, sort of, give them a hard time. But this one, which is, and your binder is, and it's a really good, sort of, paper about the overview of Galaxy and the philosophy and, and about, sort of, reproducible science. They have, so there's different ways of, of, of working with Galaxy. One of them is to use, it's, use Galaxy itself, which is what we're going to do today. You can also, from their website, you can also get Galaxy and you can write it on your own server and your own institution. We actually, at the OICR, we have actually two versions of Galaxy. So there's a public one and then we, in-house, we have two versions. We have one as a standalone machine and then we have another one that's behind the cluster, which is, sort of, a different configuration and can handle and knows to send jobs to the cluster. And so we have, and it's one of Ben's job to, sort of, make sure that, that puppy is happy and, and, and working well. And it's not quite the same configuration. There's some tweaking involved. But the, the website is really helpful. And the folks at Galaxy are very helpful. They have actually quite a, they're well funded group. They have quite a team of, of help desk and support and so forth. And they were willing to send somebody to OICR to help us install in the cluster. So they, they're really, really keen. There's also on the website, there's lots and lots, tutorials, screen counts and so forth. And, and you can also then, and mailing groups and so forth. So the main site of, for Galaxy, the main, once you use, is, is basically usegalaxy.org. This is the public, it has a cluster of about 300 cores behind it. So it's quite, and there's very generous sort of disk space. Not really intended for next-gen sequence analysis, but there's a lot of other things that Galaxy does. And this website for that is actually, and actually part of the lab today, we're going to go on to this website as well. Not just the, the public instance of it. And it's really very, very sort of powerful and rich. Basically it's a Swiss army of bioinformatics. And on the left panel, you have all the tools and different types of things you can use to, to, to get to, to analyze your data. And on the right panel is sort of your history. And so what you, all the steps you've done, where you're at in the various datasets you get and so forth, they all show up on the right-hand panel. And in the, in the middle panel is what's happening. And so basically you're going, you're getting stuff or doing things from the left, you click on things that shows up in the middle panel. You do an application and then it goes to the right column. And so you'll, we'll, we'll do that in the lab. So how many of you have ever, have ever used Galaxy? Actually, let me put it the, have never used Galaxy. Okay, good.  Huh? Sorry? That's why they hear it. Yes. So which Galaxy? So there's a, the main Galaxy, which is the one on, on, at usegalaxy.org. That's the main one. There's the getGalaxy so you can install your local one. And then you can use Galaxy on the cloud, which is also what we're going to do today. And, and which one is, is the right one for you? Well, it really depends what it is you want to do. So, and there are actually others as well. So the others here represents two other groups have installed, have a version of Galaxy, which have made public, which have separate kinds of tools in, in it as well. And so that's what that last column is. But basically, if you have moderate size, so if you're in that gig size and sort of mag size type of files, so that's moderate. If you're in the multiple tens of gigs or hundreds of gigs, or larger, that's starting to be more sort of traditional sort of sequencing type projects and so forth. And that's more the cloud or the, your local version. And local version, of course, you can, you know, whatever you want to throw at it. So if you have, if you want to share objects with others, so that any platform is able to share things with others. If your computational needs are moderate, again, so you don't need, you know, 1000 nodes or what have you. If you have large needs and large file size and so forth, the best version may be the cloud. If you have a really absolute data security requirement, the cloud is actually very secure. And of course, your local version will be very secure as well. So the, when you download Galaxy right now, it actually comes sort of preloaded with, like I said, sort of a Swiss Army knife of bioinformatics tools. That they're actually, the Galaxy team is actually moving to a new mod, a new mode of operation, basically, is that they have now the, when you download Galaxy, it's sort of a more or less an empty sort of Galaxy from a tools perspective.  And so they've made it easy for people to either contribute to the tool shed or for their developers, put the tools in the tool shed and then makes it easier for you to install the administrator of Galaxy to just get the tools they need and not sort of download the whole package. And so this is like the whole page. So this is the number of tools in the right column here of each sort of types of tools. And this is if you look at the sort of next gen sequence analysis. So along your page, it gives you the sort of the types of packages and what they do. So it's sort of the idea of the tool shed here. So you would get one of these tools. So the way it works in workflow is you get data, you upload your data, you manipulate the data somehow, you save it, save your output.  So you have the whole thing which then sort of saves all of this. And then you can publish it into a page, what they call a page, which basically captures the data and the workflow into one page, basically a Galaxy page, which you can then either share with your colleagues in-house or share with the world or whoever. So you can explicitly name people you want to share it with, or you can just make the whole page public. And so Galaxy staff have made a lot of these pages public on their website. So you can see the data, the tools, and so forth that they've used to do things. So Galaxy is really an integrator of data sources. It allows you so you don't need to install and maintain a lot of tools unless you're doing a local install. Of course, you have to get it from things from the tool shed. You can maintain workflows, reuse them and share them, publish experiments. And it's definitely in the next-gen space and also in the cloud space. And this was, next-gen space was actually sort of, is, I don't want to call it an afterthought, but Galaxy would do a lot of analyses, which would be basically talk to the UCSC browser, get some annotations, get some sequences, do some analysis, manipulate the data and save that. That was a lot of those things that where people were doing it first with Galaxy. Now they're doing more and more, the Galaxy team is paying much more attention to the sort of next-gen space. Like I mentioned, reproducibility, keeping history, what you did and what you didn't do, what you forgot to do. Galaxy also makes it easier to collaborate with people down the hall or across the ocean. Really, and this is really at the core of Galaxy, it's really meant for biologists. It's not, if you're a tool developer and you want to put things in Galaxy, that's good. But really, it's not meant for the people, it's not meant for the genome centers in a way, for example, that want to publish, that want to process a thousand samples. It's not, that doesn't have that kind of automation. It's really meant for the biologists that are handling one, two, ten, twenty plus type samples. There's a lot of, it's a clicking sort of environment where you have to go get things, input files, process and so forth. All the steps you'll see, you can, if you put it into a pipeline, you can automate a lot of things and you save a lot of clicking, but you're just pushing one sample at a time as well. So it's really, so it's sort of medium to small to medium scale sort of type of analysis. And Galaxy, like I mentioned, is well supported. All their stuff is open source and they've got really sort of active mailing lists and so forth. So they're really, really doing well at that point. So they're helping biologists, funding from lots of places and actually I think this URL is out of date. I'll update that on the wiki. The one earlier on in my lecture note is more up-to-date. So if I mentioned on the left side panel of all the various tools and so you can, the first one is get data. So you can actually from within Galaxy you can get lots of, it has links out to many data sources. Of course the main one is you can upload a file yourself. You have it on your computer or you have a URL and so forth. That's one way of doing it. But here are all the sort of basically the fly people that all the various model organisms, human, UCSC of course has, you know, 15, 20 different organisms, encode, modern code and so forth, warm base and all of them. And then a lot of the files are sort of sort of the unixy stuff we've been doing the last couple of days are available through a basically a click through type, how to cut a column from a file, how to cut a row from a file, how to manipulate sort of merge two columns into a third file and so forth. All that kind of stuff we do with very nifty one line Perl scripts. Galaxy can do for you with sort of push button operation. How to change case and you know you sort of don't want, you don't care if they're repeats or you want to make them all the same case. You can use that kind of stuff which is very easy to do, relatively easy to do in unix, but is very, very easy to do with Galaxy. Joining files, base coverage, you know, statistics and all that kind of stuff is also available. Like I mentioned a lot of next gen sort of tools are now and this is actually, there are more tools and are actually shown here and sort of fast cue manipulation and so forth are available. So more next gen sequencing tools, mapping, BWA, cuff links and so forth. All the things are now entering Galaxy. So one important thing to do whenever you start an instance of Galaxy, be it on the web, on the cloud, at UPenn, you should always log in. And so the main thing, the main advantage you do when you log in is you're able to have your histories and share them and data sets and so forth that you have access to. And so that's going to be a thing to remember all the time once you get into the, you start Galaxy, you know, log in and do things. As I mentioned, so one of the main things about the UCSC browser, and I'm sure many of you have used the UCSC browser, it has many periodic genomes from yeast to human. All the annotations we know about are usually there. A lot of variation data and evolutionary relationships is really powerful. It has graphical, the main use of the UCSC genome browser is to have a graphical representation of the genome. The main use that Galaxy makes of the UCSC browser is actually to get data and tables. And so GTF format, we talked about, GFF and fast day files and so forth are all kinds of files that UCSC genome browser generates that Galaxy likes to get from them. And you can also upload your data to UCSC and show it on a track and share it and so forth. So all of that's possible. So this is UCSC genome browser. This is like the home page which has access to all the various types of things that they have available. When you go to UCSC genome browser, by default it shows you a human genome. The latest release, which in this case is HG19 or the genome research consortium, human 37, which by the way, they've announced in a year, it's going to increment to HD20. So they've warned you. So don't be upset next year when the release has changed and I didn't know. I told you. So they've given like a year and three months notice of this change. So it's a new build. So a new build of the human genome has repercussions to a lot of gene prediction, a lot of coordinates. All the coordinate system have to be remapped. So from a, and knowing which build you're working from is critical at any, so if there's one type of metadata that you've always, always, always have to keep track of is what's the reference genome I'm working from. Be it human or mouse or deer or wolf or whatever, it's always critical to know what version of the reference genome you're using is what the version is. And for the heavily used ones like humans and mouse, there's a standard nomenclature, but for the more obscure ones, check to see what the standard nomenclature is for your community. There is one, I'm sure, and it's going to be critical to know which one it is you're working with. Because if there's a change in the coordinate system, then I say my gene is from 2 million to 2 million and 500, that's no longer true as soon as you have a new version of your genome. And so everything goes out the window. All the mapping RNA, mapping genes, everything means is useless. Atmetrics coordinates, the whole thing, if you don't know which genome it's based on, you're screwed. So it's very, very critical to know which version you're at. And so if you do a simple query, in this case, it was RAS, K-RAS, you get the UCSC genes that are represented and you click on the one, then you'll get the graphical representation, RefSeq, non-human RefSeq genes and so forth. And this would be K-RAS in the UCSC genome browser with different mRNAs, different, all the SNPs and so forth, lots and lots of data. And if you look at the whole page from UCSC browser, basically all these represent tracks which are shown or not shown and most of them are hidden that are available for you to look at. And so there's lots of configuration possible with UCSC browser. And of course, all that data is also available in tablet format. Yes. No, no, no, no. So UCSC is not a BAM file. It doesn't read BAM files, so per se. There are other browsers. I mean, we've seen a few here. There are G-brows also reads BAM files. There's a few other browsers that, yes. Yeah, so you have to have your files. So UCSC browser itself doesn't host the BAM files. If you have the BAM files on the web somewhere and then you can make, if they're readable by anybody in the world, then your UCSC, but it's not the best tool to look at BAM files. So custom track could be your interpretation. So let's say where your variants are, where your SNPs are and so forth. That's how you would have a custom track. Yeah. And bed files, yes. So we'll talk a bit about that later. Actually, a couple of slides, like this slide. So many of the file types that you can output and read, so you can read bed files, which is basically their UCSC formatted file. But then there are other file formats that you can generate and that are used by, have become a currency as we saw, for example, in the RNA lab of many other tools in the world. So for, and bioinformatics. And so, so a tab doing a, tab separated files. I don't, I'm not going to show an example of that, but you imagine whatever value separated by tabs. A fast day file, which I'm sure you all know, is, is the requirements for fast day, which was quite interesting from a historical point. It was like the fast day tool, which is the predecessor of BLAST, had a file format requirement for a query. So if you had to put in a query actually for its database, also they searched against, it was that you had a greater than sign and then one line. So this is actually this first two lines here is actually one line of anything, basically. So no format. And then your sequence and your sequence could be nucleotide, fast day, or it could be amino acids. And, and that was the only requirement for fast day file format. And it, it was sort of for many, many years. Now it's fast Q and so forth. It's lots of more, you know, sort of differences and so forth. But this was the standard file, most tools read fast day file formats. That was the input for any query was fast day. So NCBI. So this is a fast day from NCBI has their version of what the definition line. So this, this greater than sign, greater than sign followed by this. So there this information is structured and is sort of a standard way for NCBI. But that's only enforced by NCBI, used by NCBI and, and everybody else does a different. So, but so they have GI numbers, reference number, accession dot version numbers, and then a short description what that file is. This is an example of a bed format. So there's three required fields in bed. And then there's nine additional sort of, and you can sort of go to this page here for the, all the, the rest of the requirements. But basically, you have the chromosome number, you have value, chromosome start, chromosome end. And so you know exactly, and not in the bed file, but you actually know which chromosome, which version of which genome we're talking about. And so you know exactly where your coordinates are. And then you have some values, which could be, there's all sorts of kind of information could be gene structure, it could be annotations of other types, it could be color of the track, it could be I did an experiment at this position. And this is where my transcription factor binds to. So it could be chip seek data, could be all sorts of different things. And there's different ways of, of coloring things and so forth, which are obviously going to be used in the, in the graphical view. As we saw earlier today, there's also GFF, which is sort of a very poorly, I mean, it's defined well here, but it's actually, there's GFF3, there's GFF. There's all sorts of variation. Everybody makes their own version of GFF. And unfortunately, it's not a very well sort of maintained and standard file format, except that when people talk about GFF format, they talk, usually talk about these types of annotation that are going to be represented basically at a, so one line per interval. So it could be an exon, it could be a single nucleotide SNP, it could be all sorts of, of difference. It could be from one nucleotide to full chromosomes and, and everything in between. And GTF format has, is like GFF plus it has these two extra fields, the gene ID value and the transitive ID value, which is sort of, this is how this is represented here. And basically it allows for specifically annotation of mRNAs and coding sequences. So express sequence. Which, of course, we know doesn't entirely, the gene is bigger than that, right? That's a good question. What is a gene? So where does the gene start? Not all at once. Of what? Good answer. No. A bit further, more, what's more five prime end of that? Five, even more, what's more five prime end of that? Promoter. Yes, so the five prime end of the promoter. And maybe the attenuator, and maybe sort of anything that will affect gene expression, right? So if you, so what's a definition of a gene from a sort of a Mendelian point of view, if we take the classic definition of a gene, is a change in the DNA that causes a mutation that's observable, right? And so if you can change a piece of DNA, and you can observe the impacts, it changes the color of the peas or makes them different, their shape and whatnot, that nucleotide is part of that gene, right? So the gene, yes sir. So are you saying if you have an enhanced base of zero? Yes. So your gene, so yes I am, yeah. So, so that is part of the definition of the gene. Because it's testable, it's testable, and it is, so from a DNA sort of GenBank sort of point of view, it's a bit, very rarely do you see that. Very rarely do you see a gene annotated sort of five megabases upstream. But technically from a sort of a Mendelian sort of point of view it should be. Because you know, and it could be, they may get around it and they may annotate that region of the genome as being part of that gene. But if they do, a gene is a single interval. That's the other sort of sort of constraint there is about the definition of a gene, is that it's not, you don't, because we haven't done the experiment of course, of removing everything between two intervals to see if it affects the gene expression. But it probably would, and it would probably be part of that gene even though it doesn't have a known function. So the gene interval is the whole region that is affected by phenotype X. And so in this definition of the GTF definition of a gene, it's really only the mRNA and the exons, right? The exons which are the non-coding, the UTRs and so forth. But a gene is much, is much bigger. So Galaxy on AWS, Amazon Web Services, there's a whole, yes. So you have, so each, it could be all one line. So basically you have, you'll have multiple lines describing the intervals that belong to exon that is part of that gene. And so that will be part of the mRNA and will have the gene feature, the gene name associated. So multiple alternative splice variants will all have the same gene name. And so that's, that's the glue that sort of keeps the parts together basically is, is the fact they're all part of gene X, right? Okay. It's a very important biological question. You have to remember the biology. So Galaxy on AWS, so on Twitter, if you do a pound so it's a, everybody knows what AWS is. It's Amazon Web Services. And so there's a whole page on, on how Cloudman or Cloud on, on Galaxy is run and so forth. And so that's some of the things we're going to do. So we did this already. We did this, this, all this part we did. So you have all the instructions on how, you know, then you're supposed to get this screen and this screen. So this is what if you select four instances that they all light up and so forth and access Galaxy, if it becomes black, then you click on it, then you get this. And then this is a coffee break. So it's the end of this lecture.


SharePoint Framework developers often face the challenge of determining how to share code or refactor it from their project in order to make it available for multiple projects. The objective is to avoid duplicating code, which is a common issue in development. Now I have never used or found a good use or need for SharePoint Framework library components. There's simply no need for a SharePoint Framework specific solution to a problem that has already been solved with NPM packages. We've already got a wheel, we don't need a new wheel. In this episode, I'm going to look at the two options for externalizing your code to share across multiple projects. And I'm going to compare the advantages and the disadvantages of each one. And then I'm going to offer my thoughts and opinions on which of the two options I prefer and why. But first, let's look at the challenge and some of the unique aspects related to the SharePoint Framework. Hey, I'm Andrew and if this topic interests you, please hit that like button below the video.  And if you're new here, consider subscribing to my channel with the button below the video to see when I publish more videos for Microsoft 365 and Microsoft Azure full stack developers. And check out my biweekly newsletter where I talk about the same topics and share them the most important news in the Microsoft 365 and Microsoft Azure space for full stack developers. Delivered straight to your inbox. And you may have code that's shared across multiple SharePoint Framework solutions. Duplicating your code in projects, not ideal. It's not ideal for maintenance and performance. So it's recommended to externalize whenever possible. Now, how can code duplication impact performance? Well, if you've got multiple web parts on a page that all reference the same code, you don't want to load the same code multiple times. Ideally, it should only be loaded once on the page. Similar to how we don't load or react multiple times on a page when multiple web parts depend on it. We want to ensure that it's only loaded one time on the page. So how can you share code across your SharePoint Framework projects? The solution is to externalize the shared code from your project and then consume it from one or more components. And there are two different options available to achieve this. Now, the option that most developers look to is the library component. And that was introduced in the SharePoint Framework version 1.9.1. And this is a Microsoft and SharePoint specific solution that's covered in the documentation. But the other option is to use an NPM package. This is the standard way to distribute JavaScript packages. And it works for all JavaScript-based projects, including SharePoint Framework solutions. So let's explore these two different options, including the advantages and disadvantages of each one. SharePoint Framework library components were introduced in the SharePoint Framework version 1.9.1. And they allow you to have code that can be versioned independently of the SharePoint Framework project that consumes them. Any SharePoint Framework component can consume an SPFX library component. And once deployed, when an SPFX component that depends on the library component is loaded in the page, the SharePoint Framework runtime is going to load the library components bundle. Now, every subsequent request for the same library component on that page by other components won't result in additional requests to go load that library that's already on the page. So let's look at the advantages and disadvantages of these library components. Now, these are some of the advantages of using a SharePoint Framework library component. First, there's no extra deployment step that's going to be necessary. The SharePoint Framework package that contains the library component is deployed just like a package that contains a web part. Everything it needs to run is included in the package as it's all hosted by SharePoint. Number two is not publicly available outside of the deployment scope, like a site collection or a tenant scoped app catalog. The third advantage is they can be created using the SharePoint Framework Yeoman Generator and the Build Toolchain. And the fourth advantage is the development process is similar to any other kind of a SharePoint Framework component. The project scaffolding contains everything that you need to get started right away. No additional typescript, compilation, or packaging process is necessary. But there are some disadvantages. Library components can only be used with SharePoint Framework solutions. They can't be used with other Node.js based projects because they must be hosted within SharePoint online. And another disadvantage is that you cannot have multiple versions of the same library component deployed simultaneously. There is only one version deployed at any given time. Now that means that when you deploy version two of your library component, you better make sure that all the components that consume v1 are ready and compatible with v2. Why? Because the SharePoint Framework runtime does not factor in version numbers when loading an SPFX library component. The third reason is that library components are limited to the scope where they've been deployed. They can't be mixed and matched across different scopes, such as the site collection or the tenant app catalog. Another disadvantage is that it's hard to implement automated testing with library components. See, library components are intended and expected to be run within a SharePoint Framework runtime context, which is very hard to simulate in an automated testing scenario. Another disadvantage is they're only available for SharePoint Framework solutions in SharePoint Online. Library components were introduced in SharePoint Framework 1.9.1. And no on-prem SharePoint Server deployment supports a SharePoint Framework version higher than SPFX version 1.5.1 at this time. But library components are not your only option. In fact, they're not even a good option. Oh, I'm skipping ahead. Now an NPM package is a standardized way to share code in a JavaScript or a Node.js-based project. In fact, we're already using NPM packages in all of our SharePoint Framework projects. It allows for independently versioned code and any SPFX component can consume a bundled NPM package. We are currently using this approach with React and other libraries listed in the package.json file. Now some of the advantages of using packages include the following. Reusability is a big one. An NPM package can be used in multiple SharePoint Framework solutions and non-SharePoint Framework solutions providing flexibility and saving development time. Another benefit is versioning. NPM packages can be versioned independently of other projects that depend on it allowing for better control and management of code changes. The third advantage is automated testing. Implementing automated testing is so much easier with an NPM package enhancing code quality and reliability. Another advantage is it's standards-based. An NPM package provides a standards-based solution to a common need. In other words, unlike library components from the SharePoint framework that only work with SharePoint Framework projects, you can use an NPM package within a SharePoint Framework project, a Node.js project, or any other client-side-based web project. And they work in all SharePoint Framework versions including the oldest SharePoint server on-prem deployment. Now it's not perfect and when compared to the SharePoint Framework library components one could argue that there are some downsides to using NPM packages for sharing across SPFX projects. So here are some of the disadvantages that I could find of using an NPM package for code reuse within an SPFX-based solution. It does require an additional deployment step that is going to be required if you decide to externalize your bundle. You need to decide where you're going to host the bundle that's going to contain the entire NPM package, the resulting bundle. Probably some CDN, but that's not a big deal. Another disadvantage is the inability to use the existing Yeoman Generator for SharePoint Framework projects in the build tool chain. You're going to need to create your own generator. Although there are many open and standard examples that are available for reference. Another disadvantage? You can't easily use a SharePoint Framework-based component inside these solutions. I mean, technically you can, but the testing and the development process is very hard because you can't inject the SharePoint context into them without a lot of additional work. Now that I've gone over these two different options, let's look at how to use NPM packages in your SPFX projects. There's already plenty of examples on using SPFX library components and SharePoint Framework projects. So I'm going to skip that for now. Let's see how that we can create and use an NPM package in a SharePoint Framework project. Now I cover this topic at a lot more depth, including a step-by-step instructor-led demo in my course Mastering the SharePoint Framework. And for viewers of this video, enter the code YouTube at checkout to save 20% off any of the bundles. Just don't tell anybody. It's just for you guys that are watching this. And by default, during the build process, WebPacket is going to ingest the reference dependencies and include them in each project's bundle. For smaller projects where duplicating code in the bundles won't add much to the size of the generator bundle, this method might be acceptable to you. However, if you have one common package that's used by multiple SPFX projects, anytime you update the common package, you're going to need to redeploy or rebuild and redeploy the consuming SPFX projects. Now the other option is to externalize your common package's bundle and host it in a CDN or in some other location where the bundle is accessible by your deployed SPFX projects. That could be a publicly accessible CDN or one that's only available to users within your organization. Now to do this, you're first going to build and deploy your common SharePoint packages bundle. Now to do this, you're going to first build and deploy your common packages bundle to some location. So let's say, for example, that you've externalized code into some new package called the Apollo Mission Service and deploy the bundle to CDN.contoso.com slash AMS, some version number, and then whatever the JavaScript file is. Next, you're going to install the NPM package of your common library in your SharePoint framework project using a standard NPM install command to list it in your project's package.json file. So you're just going to use something like NPM install ApolloMissionLibrary-SE to save the exact version. Next, configure your SharePoint framework project so that Webpack will ignore the library and not include it in your SharePoint framework project's bundle. Instead, it will be listed as a dependency, so when the SPFX runtime goes to load your dependencies, it will ensure it's loaded on the page from the CDN location before it loads your SPFX components bundle. Now this is done in the config slash config.json file within your project. So what does this do? Well, now, anytime that Webpack sees our library referenced in a module like import ApolloMissionServiceLibrary from ApolloMissionService, instead of including it in the generator bundle, it's going to ignore it assuming that it's already going to get added to the page some other way. Now another part of the SharePoint framework build process is that it's going to generate a component manifest that's going to include with our library as a dependency. Now when the SPFX runtime loads the manifest for a component, it's going to see this reference and ensure that all the dependencies are downloaded onto the page before loading the components bundle that the libraries were already present. Now from my point of view an NPM package is a much better option for externalizing your code in a SharePoint framework solution. It's an established solution to a common problem unlike a SharePoint framework library component which, in my view, it simply creates a SharePoint framework-specific solution to an already solved problem and at the same time it introduces a bunch of limitations that you don't face with NPM packages. Honest to God, I've never used or found the need for a SharePoint framework library component. I simply see no need for a SharePoint framework-specific solution to a problem that has already been solved and doesn't have all the baggage a SharePoint framework library component introduces into the scenario like only having one deployed version and not being able to be easily testable. In my SharePoint framework projects I always rely on NPM packages and generate bundles that either I host on my own CDN or include the code directly in the consuming projects bundles. If I'm adding the packages to the bundle if it doesn't significantly increase its size and the externalized code isn't used in more than just a couple projects that are only updated every once in a while I usually bundle it just for simplicity. Otherwise, I'm going to store them separately in my own Azure hosted CDN and reference them as external resources in my config.json file. In Azure CDN it's incredibly cheap so the cost is really no concern. What about you? Have you tried both options and prefer one of them over the other? Why? Let me know by dropping a comment below and let me know if you want to see more Microsoft 365 videos for full stack developers. And if you found this video useful or you liked it, please give me a thumbs up. It really helps me grow the channel by reaching more people just like you. And if you haven't already, please hit that subscribe button below the video. So you're going to see when I publish more videos for full stack developers Microsoft 365 and Microsoft Azure topics. And let me know if you want to see more videos about reusing code and SharePoint framework projects. I just went over the basics here and why I prefer NPM packages. But is something confusing to you? Well, let me know. Let me know specifically what's challenging to you and what you want to see. Maybe that'll make the next video. I'm Andrew Connell. Thank you for watching and I hope to see you in my next episode.


Hello and how are you all today? The question says draw a circle of radius 4 centimeter draw any two of its cord construct the perpendicular bisector of these cords where do they meet? So let us first draw a circle of radius 4 centimeter. Now here this is a circle with center C and radius 4 centimeter. Now we need to draw two cords. Let this be one of the cords and let this be the other cord. Let us name it as A, B and D. Now we need to draw the perpendicular bisector of AB first and then BD. So taking A as the center and radius more than half of AB draw an arc above AB and below AB. Similarly taking B as the center and the same radius draw another arc to intersect the previous arc at point X and Y. Join these two points like this. Now taking B as the center and radius more than half of BD we need to draw an arc above BD and below BD and then taking D as the center and same radius we need to draw another arc intersecting the previous arcs at point let's say E and F. Then we have joined these two points to intersect at point C. They all are intersecting at point C. So where do they meet? We just need to answer that they meet at the center of the circle that is point C. So this completes the session. Hope you understood the concept well and enjoyed it too. Have a very nice day ahead.


Hello, and welcome back. This is the second part of our two part lecture on introduction to pointers in C++. Here is a quick recap of some of the relevant topics we have already studied. We have looked at basic programming constructs in C++. We have looked at the pointer data type in C++. We have looked at the address of or ampersand operator in the C++ language. And we have also looked at some caveats that we need to be careful about when using the address of operator. In this lecture, we are going to find out how to find the content at a given memory address. This is also called dereferencing a memory address. We are going to also look at the contents of operator in the C++ programming language. Now, let us quickly look at our view of memory and addresses of locations in memory. So, basically a memory is a sequence of physical storage locations and each location stores exactly one byte or 8 bits of information which are also called the content or value of that location. And each physical memory location also has a unique address by which it is identified. And this is like the sequence, this is like the index of that memory location in the entire sequence of storage locations. So, for example, this memory location has the address 40a in hexadecimal. Usually in C++, when we try to print out addresses, it gets printed in hexadecimal. So, therefore, I am using hexadecimal to denote addresses of memory locations and 1111000 is the content of this memory location. This is its address and these are the contents. We have also seen that when a program is executing which is what we also called a process, then the operating system allocates a part of main memory for use by the process. And this part of the memory allocated for the process is actually divided into three segments, the code segment, data segment and the stack segment. And we have seen in an earlier lecture that all local variables of all functions in a program are basically allocated space in the stack segment. So, let us look at a simple C++ program where we will try to access the content at a given memory address. So, let us start off in this way. We have an integer variable a. We know that an integer requires 4 bytes for its storage. Each memory location stores just 1 byte. So, we are going to allocate 4 consecutive memory locations to store the value of a. Let us say for the time being these are the 4 consecutive memory addresses for these 4 locations. Pointer a is a pointer type variable. It is basically a pointer to an integer. Let us assume that every memory address can be represented in 32 bits or 4 bytes. So, pointer a being a pointer type variable it stores an address. So, it requires 32 bits. So, we are going to allocate 4 locations or 4 bytes in the stack segment for this variable. And let us say these are the 4 consecutive addresses of those 4 locations. Now, when I execute the statement a assigned hex 0 to a b c what is going to happen in the memory locations reserved for the variable a this value is going to get copied. So, that is what I will see over there. After that when I try to execute this statement pointer a is assigned ampersand a what is going to happen. I am first going to find out the address of the memory locations corresponding to the variable a. Now, there are 4 memory locations corresponding to variable a as we have seen in the earlier lecture that we are going to basically pick up the address of the first of these 4 consecutive memory locations. So, we are going to pick up hex 0 0 4 0 2 and store it in whatever part of the memory was reserved for the variable pointer a. So, that is what is going to happen over there. Now, the question is given that the variable pointer a is storing the address of the first of 4 locations reserved in memory for the variable a given that I know this address can I actually find out the value of a in memory. Now, it turns out that in C++ we can do this by means of a special operator called content of operator. In your program this will be denoted by the star symbol and unlike the multiplication operator which is also denoted by the star symbol and which is a binary operator a multiplication operator takes 2 operands. Here the content of operator which is also represented by star will be a unary operator it will take exactly one operand. So, here is how it works suppose pointer a is a program variable which is basically the address of another integer variable. So, it is type is in star it is a pointer to an integer if so then star pointer a will give the value of the integer stored in that variable to which pointer a is pointing. So, basically when I write star pointer a I am saying pick up the address given by the value of pointer a go to that memory location corresponding to that address and find the value of the integer stored in that memory location. Let us see how this works in a real C++ program. So, here is our previous program, but now we have augmented it by this statement where I am trying to print out the value of star pointer a this is the unary star operator the content of operator. So, how do we go about doing this? I am basically asking let us find the content or value at the address given by the value of pointer a. So, we are going to find the value of pointer a treat that as a memory address we are going to go to that memory address and find out what value is stored there and then we are going to print that out well. So, the value of pointer a is hex 00402. So, you have to find the content or value at this address how do we do that we have to basically read bytes starting from the address hex 00402, but how many bytes should we read? Now, in order to answer that question we have to go and figure out what the type of this variable pointer a was. Now, we know that pointer a was basically a pointer to an integer. So, it was storing the address of an integer. Therefore, when I pick up the address from the value of pointer a and try to go and access that memory location I am trying to read an integer and since an integer requires 4 bytes I must read 4 bytes starting from the location hex 00402 which is the address given by the value of pointer a. So, this statement what it does is that it reads 4 bytes starting from the memory location at address hex 00402. So, basically it reads hex 02 a b c and then it prints it out. So, that is what the star operator does it gives the content at the address given by whatever value pointer a has. As I said it is a unary operator it takes a single argument and if pointer a is a pointer type variable then star pointer a the content of pointer a is a c plus plus expression. Now, because this is an operator operating on a variable to give you an expression we do need to worry about operator precedence associativity and all of that, but we will simplify our lives and we will use parentheses to clearly denote the precedence and associativity when we are using the star operator. Now, this process of accessing the content at a given memory address is also called dereferencing of an address and it is interesting to note that we can actually have spaces after the ampersand operator recall this is the address of operator that we studied in the last lecture and the star operator which is the content of operator. So, when we are applying the address of operator or the content of operator to a variable we can actually use spaces between the operator and the variable, but we need to use these carefully basically I could write ampersand a or ampersand space a star pointer a or star space pointer a now we should use these spaces carefully to make our program more understandable more readable. So, if in the program context putting a space makes it more readable feel free to use it if not putting the space makes the meaning of the program more clear it is ok not to use that space. Now, we have seen how to dereference a memory address can we have dereferences of dereferences and in fact it is possible to do this in c plus plus. So, here is a little c plus plus program where I have a character variable which has been allocated a byte and that is its memory address then I have a pointer to a character variable and since a pointer must store an address. So, 4 bytes have been allocated assuming all addresses at 32 bits requiring 4 bytes and these are the corresponding memory addresses for pointer c pointer c is a pointer to a character pointer. And since it is a pointer therefore, it is an address it will require 4 bytes and these 4 bytes are allocated with these corresponding addresses for pointer pointer c. Now, when I execute this statement I am saying find the address of the variable c and store it in the memory locations reserved for pointer c. So, the address of the byte reserved for variable c is 0 0 3 0 2. So, I will copy hex 0 0 3 0 2 in the bytes reserved for the variable pointer c. The next statement says find the address of pointer c and store it in the space allocated for pointer pointer c. Now, we have seen earlier that when I apply the ampersand operator and when multiple bytes are allocated for a variable we pick up the address of the first byte. So, in this case I will pick up hex 0 0 4 0 2 and I will store it in the space allocated for pointer pointer c. Then I am asking for c to be read from the input let us say we read in a character whose ASCII code corresponds to hex 0 0 0 3 0 this is the ASCII code 48 because this is in the hexadecimal notation. And now we want to print out star star pointer pointer c note that I have used parentheses to clearly denote what am I dereferencing at any point of time. So, what is the value of star pointer pointer c to begin with? Well pointer pointer c has the value hex 0 0 4 0 2. So, we have to go to the memory location hex 0 0 4 0 2 and read off some bytes. So, I have to find the content at address hex 0 0 4 0 2, but how many bytes should I read from there? In order to answer that question we have to go back and ask what is the type of pointer c? Basically it is a pointer to what? Now pointer pointer c we know from this declaration is a pointer to a character pointer. Therefore, it is basically pointing to a character pointer and a character pointer like any other pointer is an address if all memory addresses can be stored in 32 bits a character pointer would require 32 bits of 4 bytes. So, when I do star pointer pointer c, I will have to find the value of pointer pointer c go to that memory location and because pointer pointer c is a pointer to an address therefore, I have to read the 4 bytes to get the address. So, therefore, I will read the 4 bytes and I will get the value hex 0 0 3 0 2. Now, once that I have obtained that star pointer pointer c is hex 0 0 3 0 2 what is the content of the memory at address hex 0 0 3 0 2. Once again I will have to go to that memory location and how many bytes should I read now? I will have to go back and ask what is the type of star pointer pointer c? Pointer pointer c is a pointer to a character pointer. So, star pointer pointer c must be a character pointer. Therefore, when I am dereferencing star pointer pointer c, I am basically trying to read a character. So, character requires only 1 byte and therefore, I must read 1 byte starting from location hex 0 0 3 0 2 and that gives me the value hex 0 0 0 3 0 that is what is going to be printed out over here. Now, how far can we nest dereferences as far as you want? For example, if x is a variable of type in star star star star star, then we can use up to 4 levels of dereferencing of x.  So, if I write star x, I can basically think of separating out this last star from here and keeping the remaining 3 stars within. So, star x is basically an expression of type in star star star. Similarly, star star x I have separated out 2 stars here kept 2 stars back within. So, star star x is an expression of type in star star and so on. Finally, star star star star x is an expression of type int. What happens if I try to dereference star star star x? Remember star star star star star x is an integer not a pointer. So, I cannot legitimately dereference it. So, the compiler will report an error. Now, there are certain caveats when dereferencing there are certain memory addresses which are actually outside the part of memory allocated to the to a process by an operating system. If you try to dereference an address outside the part that is allocated to you, it will give a runtime error. You will see error messages like segmentation violation or program crashed. Particularly, the address 0 is never within any user processes memory space. Therefore, if you try to dereference 0 in your program, you are certain to get a segmentation violation and your program is certain to crash. So, you need to be careful when you are dereferencing that you are indeed looking at the contents of memory within the part of the memory that is allocated to you. Your addresses should be within the address space that the operating system has allocated to you. So, in summary in this lecture, we looked at how to dereference a memory address which is basically how to find the content at a given memory address. We looked at the content of operator and some caveats when using this operator and now from what we have learnt in the last two lectures, we can access memory locations through their addresses. Thank you.