Okay Right, so this paper is about garbage collection, so not the usual kind but in the programming language Any case I have to say that this slugs came from The authors of the paper, so I sent them an email saying that if they could give me permission to use it for this meetup And they came back really quickly, so I was very pleased and they gave me permission to use this So this is done by the authors not by me So if you find this online, it's because it is it is by the authors They can communicate Sorry Anyway, they gave a nice name to this the paper I think they have much better scenery than the view the acronym is ORCA Orca, which is the The memo is here So it stands for ownership and reference counting based Oh, it's not reference counting rc is reference Collection to the c's for collection. Okay. Didn't know that. Anyway Uh in the actor world So, I mean if you follow the work to the authors, they're actually involved in this new program language called pony I think it's sort of the phd thesis of the first author In case you don't know, I mean when you read papers, right, usually the first author is the phd student The last author is the professor So in case you're wondering flash the email to professor. So just to Think she gave this as a workshop in europe Anyway, uh, let's skip this Anyway, I think this is the motivation of why study garbage collection, right? So, uh, there's duck lee If you don't recognize, uh, duck lee is somewhat famous for the duck lee melloc so even in non-gabbage character languages Like your basic primitives like melloc is difficult to do these Fairly efficiently for high performance systems, especially for multi-core multi-threaded systems Imagine you have two threads asking for memory at the same time, right? How do you allocate and so on I think that here we're talking about the jvm.  So if you want concurrent garbage collection Then they run together with the The application and the application could be making changes to the the memory Right and that's problematic for your garbage collector because it's trying to ascertain a particular state of the objects in memory to collect the garbage So you need to resort to things like synchronization and other tricks to Or read barriers write barriers to Get things to work but they reduce the performance because all these barriers Includes additional instructions when you try to de-reference or look up an object okay, so I think this is interesting because We are moving to a very special System which is actor base So this is from Carl Dewitt Thing in the 70s the idea of actors is Uh, they have at least in in pony. Anyway, they have behaviors So if you call a behavior, it is it is in some sense asynchronous. You don't get back any result But so it's like the idea is like you send that actor a message I mean in here they call it calling its behavior and This actually this algorithm relies on two essential properties of the system So the first is the behaviors of actors are atomic So they don't happen in the middle of garbage collection So at least to the garbage collector the actor behavior is like a single step operation So in a sense that solves kind of the concurrent problem, right? Because there's no there's never any concurrent activity with the actor and the garbage collector So that's kind of nice But it's still useful because this is kind of like the airline system where each actor has his own heap So and it garbage collects its own heat which is relatively small Compared to I mean the typical shed memory system like the jvm which is one gigantic heap shed by the entire Application so each in this case is sort of individual heaps And the second property is causal messaging So when the actors send messages to each other they exhibit this They follow this causality. So if one message was the cause of the other it would It would arrive before the effect. So the cause is before the effect the general notion of putting out there's more details in the Departments lights Anyway, okay, so the two key problems Here is okay, for example your actor might send an object to a different actor And then it itself does not hold any more references to that object So how would it, you know, be able to garbage collect right? And of course references to the object. Okay, so I think there's something which is not really mentioned here but it's in the paper is that the The trick here will be to have every actor When it constructs objects it constructs it in its own heap as I said, there's their individuals heap, right? And the actor is responsible for also cleaning its own heap So which makes sense right? So an actor can only garbage collect its own heap. You can't garbage collect other actors heap It's all separate These are sort of mini heaps or not the the gigantic heaps we're used to So but because the trouble is the actor may send objects around and how does it keep track of This object right when it goes to other actors and so on And there's the idea of foreign references Which can be more details And then the foreign references might change because of objects being sent around and then you can Just I'm just here you can send messages itself to reconcile the view of the The objects so I think there's a very concrete example That we will see very soon Okay, this is a very complicated slide. I think it's supposed to have some animation, but the animation was in keynote So not very helpful to my uh, non macintosh system But anyway, uh, so just ignore the the words for now and look at the left hand side um, okay, so Represent actors with this a so a one and a two are two actors In the system think of actors like lightweight threads kind of So the boxes represents the heap of the actors and the Blue entities are the objects. So these are just so this is actually an object oriented language you can you can construct regular structs and classes and stuff so So they call them passive Entities but actors are considered active entities so here you have four objects oh one two three four And the arrows, uh, you think of them as references, right? So actor one has references to object one and three and so on Okay, so that's the top part the middle part is the message queue So every actor has a message. That's how you actually or a mailbox actually That's how you actually send it messages it goes into this queue And the actor just you know pops off pops off, uh, I guess from the left messages and you know Runs his behavior on the the arguments That's the queues um The working set is kind of like the objects this actor knows about or he has seen before and So correspondingly for every object he knows about there is a count Which is the number or which is the total weight of the references to that object So this is going to be as the title suggests it's going to be a reference counting system Right, so basically and it's sort of a unit direction also. We're only counting references from actors to objects So it's from the active entities the actors to the sort of passive entities the objects we're counting how many Not not really how many but you think of how many references are there from From the actors to the object. So this is how many references from actor a1 to all it is known Entity so we actually also include the actors themselves this system can actually also garbage collect actors But that's not the focus of the paper actually there's a different paper talks about how to garbage collect the actors So in this paper focus mainly on the garbage collection of the objects so Total of objects that they have It's it's a weighted count actually just to be precise. So it's not really the number of count It's so there's some weight factor inside. So yeah, don't think of it as the number think of it as a weighted number Yeah, so there's some numbers, okay Oh, okay, and then I think there's some nice things which the gray cells represent owned objects So again, you can see from here. So actor one owns object one and three actor two owns object two and four Own means belongs to the heat. Yeah.  Is it? Yeah No space. No, no, no because like it explicitly mentions it, right? Yep. Sorry. Where does it say that? No, in the working A204. Oh, no, no a2 Because a2 doesn't have all three No, no, is that about oh four, right? I think it's just no space actually. Yeah. No, it definitely has a count. I'm sure Oh, no because your booking set is 010204 so your count table should be 010204 Not necessarily. I mean look at the definition of wrap count table for some addresses from the working set and it explicitly mentions that there's no entry for it Looks like there's some insight Nope, I can't kind of explain why Sorry about that Okay, it says there's no entry. I mean no, they don't show the entries. That's why I would think there's just no space for it actually Yeah, but I may be wrong I'm just guessing Okay, in any case So the approach here will be how I'm going to do this is How I'm going to show that this this algorithm actually works Is we're going to define a number of invariants so as in typically in any kind of proof and algorithm we define number of invariants and We're sort of sure that the algorithm maintains this invariance as it sends objects back and forth between actors Okay, so to define the conditions of the invariance we need to define a few terms Okay, so the first term is this local reference count So that's quite simple. That's just the reference count of the Let's look at this one lrc of o2. It's just the The value in the count table of the owner of the object So o2's owner is a2 so the local reference count for o2 is 4 and same for well, but default the actor is his own owner. So The reference count of a1 is 12 So that's just that's quite simple Okay, the foreign reference count is sort of the Inverse so it is the all the other counts, right? So all the non-owners Of the actor. So what's the example here? Let's look at the it's always the actor. Okay, never mind. So The foreign reference of a2 is there's only one other actor in the system So it's going to be just a1 But if there were more actors, then you would add up all the The a2 values in all the actors except for a2 So if there was a3 then you add up the value 5 plus the a3's value, right? Yeah, so that's just that Okay And then there's one called the increment decrement count So these are basically garbage collection specific messages that we are sending to reconcile our view of the The heat the global heat so to speak because the heat is partitioned into many actors So we need we have to send messages between actors to reconcile the view So this increment decrement count is the So there's a number here, right? So this means increment by 1 But it could be a bigger number increment by 5 Then there could be decrement count d ec is not shown here So dc messages. So just add up all the And these are these are actually called weighted references. That's why the number is not only can be 1 can be larger numbers because it's weighted So just add up all the messages in in your queue And these are okay. So the thing is these are only sent to the owner Right because well the owner is the one that has to take care of this this object, right? So whenever some other actor deals with this object Oh one he's got to send a message to the owner say, okay Here's what happened to this oh one your your guide, right? Because you know, it's being moved around whatever So so these are only ever in the owner's queue What does weighted reference mean? For the reference count I don't know about much about right Weighted reference just mean Each reference is an integer number It can be like Doesn't have to be like just like the actual number of references per se. It's it's just it has a It can it can vary right? It can be like 105 Yeah Hard to explain it's like maybe like Does it mean like higher number in the stronger reference? Not really Not really because not normally when reference counting right Yeah, I think in this case This is like more of an optimization. I think so I think we can just Pictend we ignore the weighted case actually So I think what happens in here is there's this occasion We have to send the same object many times and then instead of sending these messages Over and over again is get get kind of inefficient so we can just send like one message Hey, I'm going to potentially in the future send this like hundred times. So some other guy So I'll tell you increment 100 first Then I can do a lot of stuff with it. I don't have to tell you anymore because I told you one shot Okay, so that that's the sense of it. I guess So we can in the naive case. You can just imagine we always send increment one Right, but I think there's some optimizations where we can batch it together and send increment 100 Then I do stuff with it. I don't have to tell you I told you in a time Right. Yeah, so instead of every cent I got I got a so I got to update you. I guess I just tell you, you know Well, I yeah I'm gonna have five references. Yeah. Yeah. Yeah, then I'll just do that and then you forget about that for a while Okay, so yeah, so that that's the idea Increment reference count. Okay. Yeah, this part is a bit dry. But never mind. Okay And then one last part is the application message count. So we always write this as a pp So these are the application specific messages, which is like in your program. You say this actor Sends a message to that actor. This is in yours special in your own program, right? This is part of the garbage collection Protocol so you don't you don't have to worry about this this happens automatically So these are the ones you program in yourself, right? So these are called application messages and they may contain References to objects, of course. Otherwise, why would you send them? So They can add up all these as um, so notes actually that The definition here Let's say number which contains Alpha uh, alpha where alpha is the object addresses reachable from alpha and the owners of alpha but Which actually just involves you need to trace the you need to trace this object if it's more complex if this object has The bottom oh one actually has links to oh two So this this this this message at oh one It also affects oh two because anyone with reference to oh one actually can Refer to oh two because of this Link here, right? So you're actually worried about all the reachable objects from the message from the address in the message So we consider all the reachable addresses as also sort of contained in this message Right Okay All right now Okay, I think we can skip this not terribly important Okay, and the key invariant actually is that is w f zero. So the key invariant Say is that actually tells us how we define this Local reference count Okay, something like this the local reference count of an object is In fact the same as ignoring messages Ignoring the idc and a and c is actually the same as the sum of the foreign reference counts And then whatever you send messages, which is the amc part you also send this increment decrement messages to to update the the owner because you're transferring your Ownership in some sense all your references And the rest are just kind of Intuitive I guess so it's like reference counts are always non-negative because this makes sense to talk about negative references And this is reachable stuff like I think which is which is quite obvious So so for example w f three says if a message an object is reachable from some message Then it cannot have a count of zero otherwise when you have a count of zero will be collected Right, so just for just for correctness when you have this object in some message It has to have a positive count so that it will be alive when it reaches And really the whole point of all this Different invariants and the first one is really the one that's most important the rest is sort of the intuitive things It's really to have this consequence at the end And that is basically saying if an object is not reachable from the The owner and the count And this count is zero which also implies that nobody else has a reference to the object with address alpha and there are no messages with Alpha in the content Then this is implies this is globally unreachable, right? So that means we can be it can be collected as garbage And the crucial point is that this condition this first two conditions actually this is a conjunction of two conditions is checkable Uh purely by looking at your count the owner's count table Yeah, that's right. If actually what happens is I will tell you when they do things so you kind of update so but eventually just check your own tables and then when you see like But when there's a tracing step when you trace the object you cannot reach it and then it's counted zero Which also means nobody else Because you can't reach it doesn't mean somebody else can't right, but then this additional condition Means somebody else can't so I can't reach it And everybody else can't reach it, right? It's actually that's what it says in english Which obviously means nobody can reach it because these are these are the whole All the entities in the system, right? So you can collect it is basically garbage So so that's key the key is that you don't have to ask anybody anything to do garbage collection So every actor can do garbage collection independently of every other actor And that's why it's um Efficient also right because you don't have to check anything you have to ask anything right you just Check your own tables and then okay. This is garbage. I can get rid of it If it's not enough that the local rep count is out for zero Hmm The name local rep count is kind of a misleading thing. It's actually totally up all the foreign counts I actually never count my own references. I just do this check actually Reachable this is which it bull is for myself. This is actually asking about everybody else Although it's called the local rep count, but it's kind it's kind of a I see Yes, exactly exactly it's kind of a funny name, right? So yeah, yeah, so this is actually the sum of all the foreign counts Yeah, it's not my count. I actually don't care about the count. Let's care about which ability actually So I can't reach it and nobody else can see this Nobody's and this includes also of course not just actors Actually, this includes messages if you if you think about it. So this includes messages as well as other actors Because it could be in transit, right? So nobody can see it, but it's somewhere in between like in the messages, right? so it's a basically locally you do a It's a trace. Yeah mark Just do marking And then you also but but for me more preference This is kind of like the global view in some sense. Yeah, this is the global view. The global view is Locally Yeah, yeah, so together the two yeah, exactly We can prove that is unreachable You can't you can't collect it No, this is and and and both must be both must be both must be satisfied Oh if you can reach it and that is zero you cannot collect it otherwise what you're using is gone, right? I'm using this. I'm sorry. It's gone now. I can't do it, right? Basically if the local reference is zero then this degenerates to the one single thread Yeah, basically that means this is uh, it's my personal object. Nobody else sees this. So, yeah Okay, so that's No, they're not they're not that's that's the thing, right? So they are They're like green they're like green threads. So actually what happens is if you look at the action presentation So there'll be like a scheduler and then they'll create actual threads Which is equal number of cores and you schedule the actors to run on each of your cores We can we can have millions of actors. They're pretty lightweight And and the cool thing is they have separate heaps. It's kind of like the erlang model Um, so where is okay. Let's see. Okay. Uh, okay. I thought about the how you do the this is the marking basically This is like unfortunately the animation is not here. So Uh, so what you do is you do marking like basically and then and then you trace from your fields. Okay, so the thing Think about this also is that the garbage collection happens Outside of your behavior. So your behavior has said it's logically one atomic step to the garbage collector So what happens is after you run your behavior, it may choose to run the collector So which is why there's no problem of uh Concurrency right because we never run it together with the behaviors, right? So we always run it after a behavior. I mean you can check whether there's a lot of garbage If not then we can do another behavior. It does okay. We're kind of full. Let's do a gc And then you can do this because you have split it up into this actor model. So each Step is small enough that you can do this and that. Exactly. The popular term now is microservices. You can think of actors as your micro component services, whatever, right? Yeah Okay, so there's no need to worry about Tracing your stack and there's no stack because this is when the actor is uh Between between jobs so to speak, right? So there's no there's no active stack. So you just trace from the fields Actually, so the actor is like a class. He has some fields and all that So you can just start marking these things as reachable And so on and then all the you so this is I think a 2 doing gc, right? Yeah, so a 2 doing gc. It has no Well, I think I need to be o3 here. So o3 actually I think it's gone right because o3 is not reachable It is post animation. Yeah, I think yeah post animation. I think all the all the animation finished So basically when when o3 o3 is gone. So whatever count you have in your table, you just uh set it to zero What are you gonna tell the owner? Okay? I didn't see this guy anymore It's it's gone. So it's gonna tell the gun, right? Because a once yeah, yeah Oh a 2 a 2 from a 2. Yeah. Yeah. No unreachable, right? Unreachable. Yeah. Yeah, exactly I can't see it a 2 can't see it. This is all about a 2 So whenever I say me and I'm saying a 2 so a 2 can't see the o3 anymore So I set it to zero that previously was one assuming So I tell uh, I tell the owner. Okay. So uh, what I saw previously was should be gone So whenever I was one I should subtract Of course when he sees this message it would as you would expect update its number. So you would It would actually update its number to zero And I also don't see it right now later. You'll see okay. Let's see this So a 1 is doing garbage collection up So a 1 blah blah blah and then and so on and it process all the messages Sorry, I assume it process all the messages, right? So Uh, and o3s are reachable because you know, there's no links to it And it's zero because you process the decrement message And now we can collect, uh, o3 We turn it back to The memory allocator Basically call free on it So the queue need to be empty when the garbage collection is over? Um, no no not necessarily Uh In this case, yes, but in general no doesn't have to be yeah Yeah, there's also what what other condition which I think it's not did I Oh, it's not in here Yeah, so that that comes to this fifth thing which I didn't talk about the pending changes count Uh This is required actually so that one of the conditions says that the the prefix sum of the queue cannot be zero When the message still exists, which makes sense. So even though it's zero now, it could be non-zero later. So Any case That's kind of a detail Yeah, but there doesn't have to be anything so you can you can process some messages because each of this is like doing a behavior, right? Each of this uh message You can process some and then you can do gc Up to the schedule to the site when you want to do gc Uh So I will not talk about this Okay, so basically what what when do you need to? uh Bother of the gc stuff So when you send and receive messages because you get new references or you get rid of the ones you have Right or when you receive the special messages, you're going to update your count and Yeah, let's look at an example, right? So what happened if you if you run a statement like this so Uh, yeah, you a1 And you set your f to f is this link to now So this is running the behavior running your um Your code, right? So actually when you do this, um You don't have to do anything Because we don't care we only check at the end, right? We don't do anything in between behavior So at the end of the behavior when we let's say you have not much memory left We may do a this whole mark and trace business and we'll eventually discover that o3 is unreachable Right, and then we will say okay, and then it is zero. It's not zero So we can't kill it, but if it's zero then we'll kill it So this is fine. So this is good because you don't have to worry about it doesn't slow down your normal behaviors Not unlike your like say read barriers or write barriers Uh, oh, and here's where things get complex. So if you need to send a message so If a1 sends a message to a2 here we go with the object o1 Okay a1 and And a1 is the owner of o1 Yeah, great. It's great color box which is the owner So how so and this is the key um, the key invariant actually So how do you preserve this? So what happens is that uh, obviously you have the You have that one amc o1 becomes plus one because we just sent a new message so the number of references in that message in in all the messages combined is Equivalent by one What can a1 do? To balance the equation So basically you can just increment This number The lrc Which makes sense because the lrc is the global view, right? So now I introduce a new message I have to update myself To say that now in the global view there is this new message with o1 inside So I have to increment This is the lrc Because rc of a101 is Essentially the lrc because a1 is the owner of o1 Right and Okay, these other ones are because All these other things are also in the message because This is the owner of o1 This is reachable from o1 This is the owner of the thing reachable from o1 So they're technically Part of the message Indirectly in some sense So you also got to increment Oh no, yeah you got to increment This is some fact This is to do with o2, forget about this Anyway, this is this part Oh, o2 is because sorry So o2 is because Yeah, so I have to explain this O2 is not my Object This is a1, right? Remember? So this is the owner This is the non-owner The non-owner case is kind of the inverse So you got to This is actually the so called the foreign reference count Because this is the count of a1 In respect to o2 So you got to subtract From there Right because you incremented there So you got to subtract from here to Sort of balance the equation Right Because it is the owner of o2 And it's not myself So it's also not subtract I think there's just one more Causality Actually causality is important I guess you can see why Because otherwise these messages get out of order So it's important that these increment Decrement messages are received in the correct order Otherwise You receive too many decrement messages at the same time You would think that it's actually gone So we should sort of why the causality thing Is important so they have to come in in the right sequence Otherwise your view of the world Is a bit incorrect So Okay The other key thing that is enabled by this Is that of course you could say that Well I send an object and some other I do all this tracing And all that business but wouldn't You might argue that when I do all this tracing business What if o2 gets Changed by a2 Because when I do tracing from A1 I will actually trace until o2 But I don't own o2 So a2 might be running its behaviour And doing stuff with o2 Does that make sense Which is bad right? Because I'm trying to trace how things are going But a2 is modifying o2 Adding links and all that stuff So that's Good right? So it turns out with the type system Of The language The compiler can actually prove that that's not possible So the fact that O2 Is visible from a1 Means actually nobody else Is actually modifying it This is something from the type system Actually So when you compile the program it will not allow you to It will not allow a2 To actually be modifying o2 When it's visible from a1 Because that would be concurrent mutable state Which is not allowed by the programming language itself You know where it's immutable for example It's one of the possibilities So o2 could be an immutable kind of thing So a2 could not possibly modify this When it's being traced from a1 It's not o2 that is immutable The reference in some sense The reference exactly Of course a1 Could later modify it So a1 could be able to modify it But from a2's point of view It's true this reference Is not able to modify o2 So actually if you look at a different paper Talk about this, it introduced something like I'm not sure whether it's a bit of a cognitive overload There are six different types of references To track the Who can modify what But the good thing is This allows us to say that it's not possible You can't get any concurrent problems here Okay I think that's basically it So all these basically are No actually So that's The other interesting thing about Pony Maybe the different paper No time to talk about it here actually So you can Look at some numbers actually Look at some graphs So this is comparing Pony o1.5 I think now we're at o2.1 With a bunch of other things So the most obvious one is comparing with Erlang Which is the green line Kev is the C++ actor framework Especially the C++ I think Charm is also a C++ based Actor framework And this is Creating many many actors And also doing GC On them at the same time Pony isn't that fantastic Pony is the black one I think right Especially when you go to many many cores At like three actors This one? Oh this is Two cores This is about million plus actors Sorry yeah No idea Contention Synchronization Yes you already have overhead synchronization You don't have with one Sure But I guess if like three or four you get more work done And the overhead is actually relatively less So this is for Charm But this isn't Exactly selling Pony right Because you'd expect that Not fantastic All the other ones would not It's more like comparable Because it's the whole point That can increase the cores And you don't suffocate In synchronization I guess this means It's kind of flat right so it doesn't Get affected by this Yeah So you should always get two cores You might have big machines So let's look at something better This is the This is to do with the messages So it means you're sending messages To all the mailboxes So where is this the first I need to talk about where this is from So if you know actor frameworks Erlang is the most famous And Erlang has a little problem with this Because Erlang essentially says you shed nothing at all When you send messages you just make a copy of it So there's no sharing so that's perfectly fine But making a copy takes some time And notice in Pony when I share a message I literally just share The reference to the object Because of the guarantees that If I send to you I can't modify At the same time and so on because of the type system Which I'm not talking about But because of that I can send you the whole thing Because nobody else can touch it So it's actually More performant when you send lots of messages It's essentially what's called zero copy messaging So I don't make copies of the messages I just send you the whole reference But I have to do this tracing business to figure out Who is reachable from the message That's the caveat actually So this does pretty well on Lots of messages so more real I think this is a factoring example So a bunch of messaging and computation Combined And it does quite okay In fact I think Pony if you look at the code And this is a GitHub and it's still pretty young It's mostly written in C actually I think if I look at the master's thesis This started out mostly as a C library And then they wrote a compiler On top of it to call the runtime Which is basically in C Which does all this mail boxing And sending messages business So Pony can think of it as like a C A C thing It's a C++ but not a C It's C but the way the compiler works It's kind of The runtime is written in C And when it's compiled down to LLVM it's backed by LLVM And it calls into the C runtime But the compiler when it compiles Make sure that you don't have this data racist You can't modify something When somebody else is reading and stuff like that So that's what it gives you This kind of guarantees You couldn't use this algorithm in fact This algorithm depends on the fact that you can't Modify something when somebody else has a reference Which is guaranteed by the compiler And this is actually It's called Giga updates per second So it's to test the random access memory Actually And this is comparing against the Message passing interface MPI I think is a classical C interface For message passing MPI doesn't share anything right So it's This is testing mainly the memory updates With MPI You don't use MPI on single machine With 8 cores Yeah, that's true probably You use all open mp Then probably just Okay This is Pony 1.0 Different versions of ponies are But all this code is open source You can run the benchmark yourself Okay So I think the interesting thing here To take away is basically The combination of this pervasive Framework, so you use it also for GC By sending GC-specific Messages to updates The owning actor So the two concepts, one is the implicit ownership Which is kind of obvious right, the actor that creates the Object owns it and then the other actor Sends it special messages to update And so on And you don't need any synchronization And there's no, it's because it's all done To the same messaging framework So you really utilizes framework fully There's no stop the world For years there's no special things So just purely based on messaging And yeah, you don't have to You just need to check your own tables You don't have to ask any global things Then you can do the GC And use it for the protocol Of the garbage collection And more stuff This is actually the iCoups Loops paper I think it's the implementation Compilation Of The languages, programs and systems It's a European Object-oranger languages So you can check out Pony Language It's kind of bare bones actually, I have it here I don't know too much about Poresies, but I don't think that's it Yeah, it's That's not, that's an orca There's no, apparently they have no icon Someone might be the first person to Create the Create the icon, right Half Pony, half work And then The colors I think here's some of the examples from The paper, look at the gups example This is an example of what For example, Pony code might look like If you're wondering So BE is the behavior Or the Asynchronous messages that you send And this is like Pony code, it looks a little bit Like Scala somehow, because of the way Because they do this Column thing, you know, like This is also statically typed of course Otherwise you couldn't prove the No database thing So it's statically typed and compiled To LLVM and then to Wavecode And it looks something like this Yeah, I think it looks weird to me All the try and end blocks Anyways Yeah, in case you're wondering what Because it's defined like actor and then you have These are your fields These are your like behaviors The asynchronous things Yeah, that's That's that Sorry, where was I Questions? Did there any? Oops, yes For Higher order messages Like Sending behaviors Yeah You can send lambdas so That much I know Which might be what I want to do You can send a lambdas So I think it's quite common to send a message a lambdas It's kind of like a callback So it's like after you do this Call that thing so that Yeah, so that's possible You can send lambdas I don't know why it's not scrolling Or this is the last one Those lambdas, I mean Are they proper lambdas? The closures which can have references To objects because that's what's Interesting, right? You know that closure is done lambdas Are no big deal You can of course, but it's again bounded by the property of this So in this language For example, I don't know if you know things like concurrent hash map For example, like in Java or you can have a hash map Which everybody modifies all the threads You can't program it in this language For one thing Because it's just not allowed by the type system You can't have one object that's Modified by multiple actors at the same time So that's just this allowed completely Not really There are different types of references Because the object doesn't cross the boundary But the object stays to the wall Yes, yes So you only pass a reference to A2 to 101 They get a reference From A1 to 101 So but can A2 pass this reference to A3? Yes, yes, of course But at only one time, there's only one reference To one object No, not really Because both A You have two references to A2 You have one from A2 I guess it draws it as all black lines But in reality there are like six different colors Of lines So it all draws it at the same kind of line But in reality there are different kinds Of arrows For example, I think it's fair to say There's only one actor that can ever Modify an object Yes That's correct So it's like You do two texts without two texts It's more like you have a dedicated Actor for writing Something like that Anybody It may not be A1 It may transfer this right to somebody else But when it transfers, A1 must destroy Its own rightable reference Because you kind of have two The universe kind of blows up So you have to transfer to some other actor It depends I got to transfer my right to Only one guy can have the time To write for those characters Actually when someone is writing In fact, nobody else can read it either Because you could also be inconsistent When you allow that Because in between writing To this guy, it doesn't matter Because every single act is an atomic So you have to write and read You cannot write and read at the same time Could be different actors If A2 was writing O2 Which is actually not possible in this case Then it's not possible that there's actually a path From A1 to O2 Because they could run simultaneously The behaviors could simultaneously execute But when you say you write O2 What does that mean? Because the reference is that it can change So if A2 changes O2 That just means it has an O2 prime And the arrow from A to A No, no, no As it changes one of the fields It's like a pair of Things It could have a pair of whatever It's not drawn here It could change one of the references to now It could change it to another object As an update Literally destructively update the field Of O2 But wouldn't let me model that Separate objects Yeah, separate objects O2 can have reference to O1 Yeah It's like a reference, right? But actually it doesn't matter in this case Because we don't count all these O to O references Because they don't write each other You need to count A to O references Because A to O you can write In some sense, yes You only care about the A to O references So that means there can only be one A to O reference One write A to O reference At one time For writing, yes But reading it, you can have multiple reading So how does it guarantee I don't see how it guarantees that It reads It's not in this paper and it's not in this presentation It's in a different article actually Talking about a type system Yeah, that would be a different topic So I don't want to go into that You could do that I think you can imagine You could do that in your program by hand If you're very careful when you're writing it It's just the compiler checks that you are careful Instead of you checking that I am carefully Moving this around without Yeah, that's better So the compiler checks for you, that's all When it can be done But it requires a bit too many Types of references, six types So I think the question in the community Is whether that's too many for people to Keep in their heads, six different types You probably need to convert between the types Because Yeah, it's So Okay What's up soon by Rust It's similar but different There are some types here actually that are not Representable in Rust I guess someone said that in Rust You build some of these ownership based By using Rust primitives But these are sort of inbuilt into the language So the six types of references Are built into the language But they actually kind of Shows that these six are all you ever need To talk about the references So they actually did a comparison with Rust In this paper, you can look at it They have some things that you can't represent In Rust I think But there's a higher cognitive overload To remember the six different types of references So these arrows as I said It's not just one kind of arrow Six kinds of arrows And it gets a bit crazy But I think one thing Interesting is worth checking out The repository is interesting in contributing to A language So mostly written in C There's some C++ That talks to the LVM backend But They're using a Google test library Also written in C++ But the main runtime and the compiler is written in C So if you're interested to check this out You can see how they actually do the scheduling Of the actors, they actually create Regular OS threads And schedule them and so on Pretty small active community I think right now It was a good time to get in If you're interested So I think this is a space where You have the actor model You have sending with no copies And you have the compiler Proving guarantees that you can never get into Kind of concurrent multiple state problems So it's a pretty interesting space I think they're trying to push this For financial applications But we'll see how that goes Right To understand that from the point of view Of a big cluster I think the distributed system is good But Out of consideration What could be the bottlenecks here What happens if you say Have a central node That sends the messages to everybody And then the central node Say Or Is Encumbered by the garbage collection From thousands So actually for this one This is purely on a single machine Yeah because that's basically What made COM so crappy What do you think about it COM Yeah yeah the I'm not familiar with it but I heard about it COM is a rev counter With inter process And that's actually one of the basic Decom Yes One of the basic failure modes It might be a big problem I have to go look it up It sucks because you have a process Dying and suddenly you have all these Unaccounted references Your reference count Can never go to zero That's where your memory just grew Oh I see Yes For a single application running Of many cores This makes sense I think if you want to have a cluster It becomes As soon as your cluster reaches Certain number of nodes No I mean as soon as it reaches two More than one Certain number more than one I think right now they are in a process Of working on the distributed version I mean two is not a big cluster Because you can finish computation When on two nodes In a reasonable time You have a thousand nodes Or ten thousand nodes It's statistically impossible to have The whole cluster working All nodes at the same time You need his propagation And divide by two You need to count the electrons Providing a lot I hear that People that have sufficient number Of nodes have basically One guy per say Hundreds So as soon as you have two Or robot As soon as you have just two machines Or even just two processes If one of them goes away Because of anything Not necessarily a hardware player But just any reason Then none of the invariance What I said Very quickly for two nodes It's not that painful It's not that painful It happens once a while There is a Qualitative difference Between running something on A thousand cores Even just two processes And the difference is that In two processes One of them can go away Two down the other Even if you have a thousand cores But if you have one process It's all or nothing And you don't care what happens So here we have A perfect system for like One machine One machine multiple cores But the number of actors They stay the same throughout You can create new actors Dynamically on the fly So the reference count They will suddenly just increase Everybody's reference count Will increase by one Not everyone Only those who have seen That before When you receive a message You got to construct some new slots For things that you have not No You don't have to If you never see those That's when you need to Account Actors are lightweight You can construct millions of them So that shouldn't be the problem You have millions of actors Interacting Of objects in between them Then your reference count Can also become Yeah, so I guess You shouldn't be sending every object to every actor That would be kind of a bad idea It's a limitation for the The number of actors Yes, of course The count they will grow As the size of the actors who have seen the object So if you have Many actors seeing many objects Then there will be a big overhead for this thing I'm not saying I think in practice it's not that common to do Like multi-cars or whatever In the actor system It's not gross But you It gives a certain trailer That there is the hidden component Of this algorithm is the type system Of the pony Yes A different type perhaps Another top But Just to mention for the distributed part Of pony There is a master's thesis For distributed pony Multiple machines How do you handle machine failures I think there's no paper on it But there's a thesis Sure Sure, I'll update it in the event Okay Alright, thank you for listening


friends welcome to my channel I am Arpita Karwa last week I was going through a ton of doubts that students have asked me and I was surprised to know that a lot of students have asked me about UGC net pattern eligibility whether they should fill the form for net or GRF what is the cut off how it is calculated and a lot of other questions in regards to the UGC net examination so I thought of making a YouTube video where I can directly address all those questions that students have asked me so that others who also have such questions in their brain would find their answers in the same video also I would like you to know that this video is specifically for two kinds of students number one who are very new to the field of UGC net who are not aware of UGC net what is NTA what is UGC why net exam is conducted should we give it or not my subject of masters is this and this whether I'm eligible for net or not such kind of questions and number two this video is for students who are already appearing for net exam and who know what net is all about but who might find themselves asking a few questions which they are not able to answer or find anywhere else so for all this video is for all those candidates make sure you watch it till the end because I'm going to take all these questions that people ask me one by one and I'm going to explain that very clearly in this video so let us start with a very basic question what is UGC net exam so let me tell you my friends UGC net exam is given by students who wish to start their career as an assistant professor or lecturer so those who of you who want to become lecturers in any prominent university or college across India then this is the minimum eligibility criteria for you only after clearing net you can sit for the interview for the post of assistant professor or lecturer but it's not just that students who want to become lecturers sit for this exam there's another category student who wish to pursue research or who wants to do phd would also sit in this exam so the students who clear this exam are of two kinds number one those who are eligible to become an assistant professor or those who have got both net and jrf that is junior research fellowship so anybody who only gets net that means they are only eligible for the post of assistant professor whereas students who get net and jrf both in the same exam they can either go into the research field and get in stipend every month from the government and continue their phd for next two three years or they also have the option to directly become an assistant professor now the next question that might might come up in your head is that who conducts this exam so this exam which is commonly known as net stands for national eligibility test and this is conducted under the guidance of ugc university grants commission the main body that looks over all the universities and colleges across india till june 2018 this net exam was conducted by cbsc central board of secondary education but from december 2018 onwards it was conducted by nta national testing agency now if you don't know what is nta let me tell you this is the same body that conducts the most important exams of the country like je and neat so nta stands for national testing agency a separate body that has been made so that all these major exams can be conducted so you need to remember there are three major people involved three major bodies involved in conducting this exam so we have got cbsc whose role was only till june 2018 then we have nta who started conducting exam after december 2018 and then we have ugc who supervises and looks over net exam so you make sure that you are aware of all these three bodies so that you don't get confused as to why it is called nta ugc net and not just net so nta ugc net is the actual name of the exam by which you will be able to find a lot of information about this exam on google as well now a lot of questions that i get every day comes from this particular section of the video where students ask me that what is the difference between net and jrf are these two different exams let me clear that net and jrf is basically the same exam you sit for the same exam if you get a particular percentage you clear net if you get a slightly higher percentage then you clear net and jrf both but you have to only give one exam to qualify either net or net and jrf both so basically what happens is that if you look at the examination form that you are going to fill you will find two options either net net and jrf both you have to checkmark any one of them so if you checkmark net and if you got 54 percent and the cutoff of net was 50 percent you will clear net but if the cutoff of jrf was 52 percent and you got 54 and in the form you have only marked net only then in that case even after clearing jrf you would not be given jrf award later because you did not checkmark that option so if you are under the age of jrf jrf eligibility criteria we are going to discuss in this video but you just need to remember that if you fall under the age of jrf then you should fill net and jrf both if you clear net then you are eligible to apply anywhere across India for the post of assistant professor if you clear net and jrf both it is said to be slightly more prestigious because in that case if you choose to do phd in future you will be given 25 000 per month from government of India as stipend so make sure that if you fall under the age limit of jrf you always mark net and jrf both there's no harm another question that students ask me that suppose the cutoff of net exam is 55 and the cutoff of jrf that year in your subject is 60 and i get 57 so if i fill net and jrf both will i be getting net or i need to clear both net and jrf no let me clarify that if your marks are 57 percent and the cutoff of net is 55 you will clear net and if you score 62 and the cutoff of net is 55 and jrf is 60 then you clear both net and jrf so there's no harm in checking both the option net and jrf both because even if you fall short of jrf you will be awarded net certificate another question that students ask me that suppose this sat for net exam in june 2021 they cleared net exam now the student wants to again attempt for jrf so he sits in december 2021 for net and jrf both and he finds that he did not clear net or jrf this time so will his previous net certificate become invalid no it will not net is something which is going to have a lifelong validity so if you clear net any time in your life it is valid till the end of your life in case of jrf if you want stipend then you have to apply in any university or college within two years of your jrf award letter or else you will not be awarded jrf stipend so that's the only difference so never make a foolish choice by only check marking net because if the paper is simpler or if you are able to attempt all the questions correctly and if you have not checked mark net and jrf both even after clearing jrf you will only be getting net and in the other scenario suppose the paper was really tough you checkmark both net and jrf but you only qualified net in that case you will only be awarded net letter so there's no harm in checking both net and jrf if you fall under the eligible age of jrf the next question that i would like to take up in this video is that who can sit for u gc net exam so let us first understand you can do graduation in either of the three streams science commerce or humanities you can either do bsc or bcom or bba or ba okay so ba is for humanities bba and bcom are for commerce students and bsc is for science students so people who have done their graduation in commerce or humanities can sit for u gc net exam but students who have done their bsc should sit for csir net exam and not u gc net exam so u gc net exam happens in 81 subject which includes all the subjects of science of commerce and humanities csir net is similar to u gc net but the body the governing body is different and that particular exam csir net happens only for science students so if you have done your graduation in science then and if you're planning to do your masters in science then you should apply for csir net if you have done your graduation from commerce and humanities and you plan to do your post graduation in the same field then in that case you should apply for u gc net this is number one number two when can a student apply for u gc net so once you have done your graduation you can either apply for u gc net exam directly and simultaneously you can enroll yourself in a master's program in the same subject for example if i'm planning to write u gc net exam in english then my master's subject master's stream should also be english i should do m a in english and then i can write net exam in english if i want to write net exam in history then i need to do m a in history i cannot do m a in history and write net exam for english so make sure that you understand the fact that the subject of your master's and the subject of your u gc net exam should be same if in case you don't find that out of those 81 subject your master's subject is listed then the most similar subject should be opted in case of u gc net so what happens when you have completed your graduation you either enroll yourself in a postgraduate program and once you've completed the postgraduate program you sit for net exam this is an ideal case because in net exam the syllabus of graduation and postgraduation both are clubbed and asked in the paper another scenario is that you can do your graduation and while you are pursuing your master's you can simultaneously sit for net exam this is what i did i cleared my net in the first year of my master's so that can also be done you just need to put a little more effort in order to complete your master's syllabus beforehand because that would be asked in net exam third scenario is you complete your graduation you give net exam and then after you've cleared net exam you enroll yourself in a postgraduate program and within two years of your net result declaration you submit your result of master's so the only criteria that you should meet is that once you have got your net result within two years of that result you should also get your master's degree for example i cleared my net in december 2021 so my master's degree should be there with me by december 2023 so in all the three scenarios you can give net exam once you have completed your graduation you complete your postgraduation then give the exam you give the exam while you are in your postgraduation course or you give your exam first and then you enroll yourself in a postgraduate course in all the three scenarios you are eligible for net exam there are a lot of other questions that students ask me about ugc net like what is the eligibility criteria what is the exam process or how the cutoff is calculated what is the paper pattern is there any negative marking all these questions would be addressed by me in the next video so if you have not subscribed to my channel make sure you do it right now and you also click on the bell icon so that you don't miss out on any notification apart from that you can also visit our website arpathakarva.com to check out our course for ugc net english literature and you will also get past your papers for free on our platform so that you can start your preparation and know how to uh crack this exam in the first attempt so that's it for this video lecture we'll meet very soon in the next video lecture till the time we meet next happy learning keep loving literature and stay tuned to arpathakarva.com


This is stock number 10605. We are here at Summit Automotive in Fond du Lac, Wisconsin. You're new and used sports car headquarters. Today we are checking out this extremely clean 2017 Ford Mustang GT Premium. This vehicle has the 5-liter V8 motor which pumps out 435 horsepower stock. This vehicle has been fully-safetyed and inspected by our service shop. It has a fresh oil and filter change. All the fluids have been checked and topped off. The car has been gone through mechanically 100% and is 100% ready to go. Race red is the color paint code PQ if you were wondering. One of my favorite reds. It's almost got a little bit of orange to it. 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's like you're right here looking at the car with me. And definitely your best way to check out the vehicle quality and condition wise before seeing it in person. If you want to check out all the photos in the upper right hand part of your screen is a link right to our website. It comes with the Pirelli 25540 ZR19 tires with the painted alloy rims. In the front we have the Brembo brakes because this one has the GT performance package. And you can see these tires have I would say probably about 70% of the tread left on them. Brakes are in really nice shape. I didn't see any dents or dings on that front fender. It has the HID headlamps, the LED fog lamps and the running lights there and the LED running lights up there. Lower valance is in excellent shape. I didn't see any scuffs or scrapes on that. And the front bumper is in excellent condition as well. It doesn't look like it's ever been drilled into and the hood is in very, very nice condition too. The passenger side fender, I didn't see any dents or dings on that. And the passenger side rim is in really nice condition as well. As you go down this side of the car take note of how clean the body is, how reflective and mirror-like that paint is. No dents, no dings, no scuffs, no scrapes. Very, very clean down this side. We want to make sure that whether you're close by or far away you just can't make the trip down but you're still interested in purchasing the vehicle, that you can see the vehicle, hear the vehicle and have confidence that you're dealing with the right car and the right people before you make a buying decision. So that you can make a buying decision from the comfort of your own home. That's why we offer the Summit Auto FastPass option in the upper right hand part of your screen. A link right to our website where you can apply for financing, get pre-approved, see a payment quote, even appraise a trade all from the comfort of your own home. Back rims in nice shape as well. And the back tires, a little bit less than half the tread left on them. As we come around to the back of the vehicle, rear bumper is in excellent shape. No dents or dings on that rear bumper, no cracks. The deck lid is in nice shape as well. Back storage area is very clean. Those seats do fold down and it does have the tire inflator kit. Back up camera. Back up parking sensors. Has the capitalist fuel fill, which is a nice feature. And this rear quarter is in excellent shape as well. And for full disclosure, this back rim, no scuffs or scrapes on that. Down the rest of the side, the door lip looks really good. Didn't see any chips on there. Has the intelligent enter key. Heated mirrors, built in directional signals, and blind spot mirrors. Inside the GT Premium package gives you the light gray and black leather interior. Back seats are very clean. No rips or tears on those. Latch child safety systems. And it is bucket seats back there. You do get power windows, power locks and power mirrors. Auto headlamps. And as we hop inside the vehicle, you can see that this one has 8,046 miles. You get the information center there. Very nice and clean. Has the leather wrapped steering wheel, audio and Bluetooth controls on the right. Cruise controls and information center controls on the left. Notice you get an oil pressure PSI and a vacuum gauge right there. That's part of the GT performance package. You also get this cool machine finished dash trim all the way across. This one has the sync 8 inch radio. AM, FM and Serious XM radio capabilities. It also has Android Auto and Apple CarPlay capabilities. This is also where your backup camera shows up. And you can do your climate controls here as well. Down here are your heated seat and heated steering wheel. Or I'm sorry, heated seat and cooled seat buttons. You also have your stability control, steering modes and then driving modes. So you can see that you get a couple different driving modes. You get normal, sport, track and snow and wet. It will actually turn off the traction control for the track. It has a USB push button start. This is what your key fob looks like. And the passenger side, floor mat and seat are in excellent condition as well. Headliner is in great shape, no rips or tears on that. This vehicle has never been smoked in. Home link buttons for garage door security systems, lane systems and you got map lights up there. We'll take a quick look under the hood. My battery is going fast here on my phone. I'd personally like to thank you for checking out the video today and hopefully from this HD video you'll be able to tell just how clean this car is all the way around inside out. Under the hood we have the 5 liter VA motor. 435 horsepower engine bay is very clean, runs very smooth. This car has been fully safe and inspected by our service shop. It has a fresh oil and filter change. All the fluids have been checked and topped off. This car is 100% ready to go to see more pictures of this car. 450 new and used cars, trucks, SUVs, minivans, Wrangler sports cars. You name it we got to go to our website www.summitauto.com. Full pictures and descriptions of every single vehicle from two locations all at summitauto.com. If you'd like to check out more HD videos you can go to youtube.com. Remember to like, subscribe and share on this video and all the videos that you see there. In fact the second you'll see a link to subscribe to our YouTube channel on your left. A link to more Mustangs like this one on your right. If you haven't been to our website on the bottom link to this vehicle on our website click those checks out. And we really look forward to helping you with this super clean 2017 Ford Mustang GT Premium. With the GT performance package. Thanks again.


All right, well, I'd load up and hold tight until we hear that cannon. Campers, day two. Didn't sleep much last night. Not gonna lie. Well, one because birds are tripping here like 430. Other is thinking about championship Sunday, baby. It's game time. Wind though, a little worded. That flag's kicking. And we're gonna have to deal with adjusting for wind a lot more today, which is much more challenging. Even with that scope technology, it's not adjusting for wind for us. So we're gonna have to do that on our own. But team's feeling good.  About to kick her off. Day two. Top shot right now. You're gonna get the cannon to the next level. Have you ever shot a cannon? Never. No. That's what we're using pretty much most of the day, though. So you got a stick. Yeah, he said this is like hotter than the hubs of heck. And you just take this and just put it around the side. That's already lit. Yeah. Okay. It's already lit. Learned super slow. And you just stick it on there. Old school style. Yeah. And she goes kaboom. And we're gonna kick this off. All right. Pretty awesome.  So we're gonna stand back, let him get the cannon blasted. It's off to competition. Yesterday, Yoss knows how to shoot a gun. Let's see if he knows how to shoot a cannon. So Trent, get us going today. All right, here's the hole. Talk to me on the sagebrush. Right. Looks like you're clean. Yes. I'm just seeing a little bit of sage. We just need to go a tiny bit left. Okay. I don't know what that was left. It skipped off the tree. That second one skipped off the tree. What do you need? I don't know. It's hard to see the actual target. I can't see the steel at all. I say we just go through this quick. We got to get the L because it's easier. So let's go left. It went through the tree, though, Trent. Okay. Lucky that it went through the tree and actually hit it because it's so hard to see it. It went through that tree farther left. That tree's not gonna last much longer through the tree. I wait for time. Nine minutes in. You're all right. Just shoot it at decent points on which is shooting a bear with a pistol coming at you. So this should be interesting. But we got down one out of our system and should be you're just going to start walking. Okay. And when you get to this white line, something's going to happen. When that thing happens, you will push the gun out and take your three shots. Your shots have to hit the bear. If it hits the top corner or, you know, somewhere not the bear, it doesn't count for a hit. Okay. I will also ask, please, for the love of Christ, do not shoot the bear when it's on the ground because there's stuff here. All right. Go ahead and load up and hold tight until we hear that cannon. Go ahead. I'll take that. Break shooting. Easy. Dead bear. That's a dead bear. Let's see. Okay. A little low there, but yeah. Got him right in the face. Good job. Yeah. I got lucky. Got two our shooters in. Both have gotten the bear. Now we just got Scotty. I know he's going to hit it. All right. Smoked him. That was good. Good control, Scotty. You stayed with him. All right, boys. Here we go. Did we get him? Look at that. Smoked him. Face shot him. Look at that. That's a good group too. All right. So nailed the bonus round. Thanks, Bill. Appreciate it. And on to the next one. It's stage one we're going to. So this was 10. Good hit. Get him guys. Dead hold. Yeah, just need a little more height. There we go. Got your other mag right here. There you go. Nice, juicy. Clip here. Big bag. No, you need the big bag. Big doggie. There we go. Pack. Push that pack against me hard. There we go. Lock it. That feel good. 237. Good. Nice. Good shooting. Just give me that big bag. I just was taking a breath and kind of holding it. Aim at the fattest part of the target, remember. All right. Position. It's actually good. You see the plate well? Yeah, it feels good. Good hold. I was just holding kind of that lower quarter. Stay with it. What was that? Yes, Scotty. Good job. Good job, guys. I want to know where I went wrong on that second shot. It felt good. It felt good. We're about to help you with that. Good. All right, gentlemen. Mr. Eli Crane, Navy Seal Sniper. Just going to talk through the prone position. One of the things you want to do if possible and terrain from this is you want to have your spine in line with as much in line with the weapon as possible. Now, obviously, it's not going to be completely a straight line, but the reason we do that is because James probably was, you know, two twenties, maybe two fifteen. I don't know what he weighs, but we want as much of that weight behind, you know, this weapon is possible to absorb recoil so that his follow up shots are he can get that weapon back on target as quickly as possible, right? And if you do it well enough, sometimes, I'm not good enough, but sometimes guys are able to even spot for themselves, okay? Another thing that we look for is sometimes you guys will be up on your toes. We want to see them flat. You'd be surprised that believe it or not, just having your toes up like that takes muscle and anything that takes muscle means that your heart rate has to pump more, right? And so what that equates to when your heart starts pumping more, that crosshair starts moving more, okay? And the same thing, when I come over and I watch you guys and I watch as I instruct, I like to see this flap of skin, this cheek kind of hanging over the buttstock. What that tells me is that he's got good bone, cheekbone on buttstock positioning. So what that means is the same thing as the feet, because if I see this, if I see this, not this, I know that you're using neck muscle to keep that eye relief where it is, meaning your scope clear. And the same thing, then your crosshair is going to start doing this, right? And it doesn't seem like a big deal when we're taking these 150 yard shots, but when you start moving out to, you know, four, five, six, seven, eight, a little mistake down here means a miss that big down there. If you guys want to wait to get back where you start practicing that natural point of aim, you know, when you can dry fire in your apartment or your house, or even if you get a chance to try it today, it'll make a difference. Cool. Alright guys, good job. Appreciate the info. Thanks James. Appreciate the info. Yeah, absolutely. There we go. You want your cover? Sniper cover over the top? Nope, I'm okay. You're ranged. Rain? How far? I didn't move. 127. Put the center hold. Is it good? Yep. Sun's a little issue, but we'll be okay. You got this. Let's go. 132. That sounds about right for yesterday. Yeah, 136. Walks out. How many shells we got in there? Two. Now we're talking. Level plex and let it rip. Yeah, you'll be good on this one. Feel good? Yep. All right, bud. Good squeeze. There we go. One more, one more. Let it settle down. That target's moving a lot. One more, totally clean on this round. All right. Okay, let's back. Good job, Scotty. All right, perfect round on there. That one, guys. Nice job, guys. So right now we're three shots behind where we were yesterday. Yeah, dude. It's because of me. All right, we needed, we kind of knew that was going to happen, but it needed to happen. You know what I mean? Yeah, I did need to happen. We got some difficulty up ahead. The winds are going to be kicking up. Up in the 20s, 25 miles an hour, shots are going to be difficult. It's going to get harder from here, but if we can just stay on it right where we're at, it'll be okay. It's one of the time, guys. One of the time, which one are you going for first? Let's just stick what we did yesterday. Yeah, we got three targets. So you want to go that guy first, get it out of the way. Just left down the hole. And then some of the guys can scan over here for these other two. Let's do it. Let's do it. Got 327 on it. Feel good about it? Feel good about it. I was holding just above that grass line, just a hair. Got it, boy. Nice job. I got the waffle. Just stay on it, Trent. Where's your binos? 134 should have adjusted. Come on. Jump in there. Let's do it, mate. So far, we're acing this one. Nice shot. Nice. Huge. Huge. Great job. You got plenty of time. Great job. Good job. Cleared it up. Yes. Good job. Yeah. Yes. Made up some ground right there. Well, guys, I know we're still up. We're still better than we were yesterday. I think we are. You want to go for it? Move first. We've got the one on the right or the left? This next stage is going to be really tough. We did not do well here yesterday. And the last stage, that was freehand. I goofed up. Missed the first shot. We actually lost. We lost like nine points. It was not good at all. The opportunity, if we do hit the plates, big time making up points, since we did it bad here yesterday. We only have two more courses and it's going to be very windy. They're long shots. It's going to be tough, but if we could just hang tight and get our same scores we did, I think we're going to get the dub. So, wish us luck. Go ahead and smash that like button just to give me some luck right now, please. It's a little elevated, so we might need a bag or actually put it on this right on top of here. You like that? Get a feel for it. We got plenty of time. We're five minutes in. Okay. We're good. We got this. Let me get a range for you. Don't move. I gotta range it. Okay. Yeah. Let me do one more. Let me do one more. We're good. Keep it up. Got a jam. You sure there's shell in there? There's a shell in. Got three? Yep. New mag. Here. Where's the vitals behind that bush? Just shoot right in that bush. Just on the top of it. All right. Take your time. You got plenty of time. Let's get some good trigger pulls. Wait for this breed maybe. We've got all the time in the world. Let's just give it some time. I think you're good enough. Go ahead. Good job. Hold up. Hold up just a second. Right here. I think you're good now. We're good now. I think you're good. Good job, bud. Good job. Yeah, boys. Good job, guys. All right. Great job. Yesterday. Here we go. Boom. Great location. Nice find. Yeah. That was clutch. One more round. Let's finish strong, guys. One more. Yeah, y'all. We shot a perfect round right there, made up some points. So huge side relief. We got lucky with the wind dying down just a bit. But we're going into our last target. Hopefully the wind dies down a little bit more. We got the longest shot on the course. Let's make it happen. Yeah, fingers crossed. And by the way, I think we're looking at MVP of the event right now. I don't want to speak too soon, but that's kind of what I'm feeling right now. Team event. It's a team event. But I tell you what, we'll get Trent on the gun first. He's the best at judging windage. And then he can kind of tell us go from there. But it's a ton of teamwork, guys. This is such a fun event. Last station. Hopefully we finish strong. And then we go, we go to the weigh in stage. weigh in stage. I'm used to saying weigh in. We got this. Good enough for me. We go to the point stage. Good enough for me. Come inside the plate that far. Go just off the plate, about five or six inches down there. So basically on his shoulder. Yes. Yes. One more, Scotty. Oh, this last stage is super windy. So I'm just going to send it back to the cabin. But oh my gosh, what a fun of fun event. I don't know what's going to happen here, but it seems like there's that little feeling like we got it. Can't be happier with the team. Regardless of what happens, I hope we get invited back because this is so, so much fun, y'all. We're just going to see what the standings are. Enjoy a good night, celebration, hanging out with other outdoor people. And let's hope get the dub, guys, my brush fingers. We're gathered here at the table. Hopefully we're going to get the dub. So I'll talk about some individual results first. So on a high individual, who would have thought a fisherman would have the fourth highest overall score? So we're just going to do that. And then top overall continued from yesterday, Trent Fisher. 146 points. So that was, that was pretty impressive. That was more than we got on the team. So finishing third place was 659 total points. Team Bullseye, Trevor, Colin, Logan. Third and second is another two points. So from 659 up to 661 points, team Maverick, Brian, and your first ever SIG Hunter Games champions, team Ramsor, Trent Fisher, just at SIG Hunter Games. Let's pass those guns out. Oh y'all, we just came away with the dub. I can't even believe it. Not, not even just a squeaker. It was a, it was a pretty impressive win. We had a 60 points, almost 60 points over second place. And, you know, there's some pretty impressive teams out here. I just think that, that our team, Scotty Lego, my boy Trent, that you guys know from Born and Raised, you know, he's essentially our team leader, our guide. It was a team. I know you're humble, Trent, even though we all did it. You, you were the best shooter here. No, but we did work very well as a team. It was awesome, dude. We, we all came together. So well, you watch Rackley's channel, you've seen Championship Sunday, you've seen Bassmaster, you've seen all these things. We grew up doing all that and seeing all that. It was like that this morning. We were up at 245 this morning. We're in it. And we were just like, okay, how can we get more stable on stage eight or whatever it was? It was awesome. It was awesome. I can't believe we won. Scotty, your nose. Got it. Your nose stranger to being on the podium. I made a career our seconds and thirds. You know, we won though. We won today. We'll always have this one. The inaugural one. We'll always have that. Dude, our names are etching to the show. Big thanks to SIG for inviting us out to do this. I hope we get invited back. Yeah. I've been told that some people will get fired if we do not get invited back. So I'm hoping it happens. So thank you for tuning in for the awesome shooting event that we had here today and we took home the dove. I still can't believe it. If you want to stay tuned for more outdoor action, you know what to do. Subscribe right here to the channel and you better smash that like button. We'll see you on the next one.


All medical colleges may have to close down because artificial intelligence will make diagnosis by itself and treat you by itself. So, it is time the young doctors who are coming up now should focus on how you should be able to look beyond the symptoms. You must allow the deeper intelligence within you to function. The antibiotic resistance is increasing day by day and Ayurvedic practices are declining day by day. So, how do we create a perfect amalgamation between the practices of Ayurveda and Allopathy? Ayurveda and Siddha and Naturopathy is growing big time in the west, particularly in Europe, very big. In India, of course, it's dying because they have to approve it for us to take it. Without their approval, we cannot take it. But we must understand the difference between Allopathy and these other Indian systems.  So, what he's learning is a downgraded medicine, downgraded understanding. An Ayurvedic doctor or one who wants to practice Ayurveda should not go to a four year course. You have to invest your life in it, otherwise it won't happen. Traditionally, from childhood, they learn to feel the herbs, they learn to feel the people, the pulse and this and that. This is a developing a certain intuition where we don't go by the symptoms that you're showing on your body right now. We don't see your temperature and say, this is what it is. We don't look at those symptoms. We learn to look much deeper into the system to identify what exactly is right and wrong with your system. This will take a different level of involvement. That involvement is missing right now. We're looking at things. If I do this much, I must get this job or I must get this place in the world. With this, these systems may not function very well. You must have heard this. The same medicine one doctor gives in Ayurveda and Siddha, the same medicine in one person's hands, it works very well. In another person's hands, it doesn't work well because the person who gives it is as important as the medicine because it's not working just by its chemical composition. The entire allopathy system is working out of chemical composition. Anyway, there is a danger that in the next twenty-five years all medical colleges may have to close down because artificial intelligence will make diagnosis by itself and treat you by itself. Surgeries are all happening now, robotic surgeries are happening. Still human beings are needed because machines need to be upgraded. But in twenty-five years' time, even today in United States, I know doctors, I saw a doctor who is whom I know very well, he is carrying an old blackberry with the first model that came which is that kind of huge capability. Every time any patient, whatever, he just goes there into his blackberry. I said, what are you looking in the phone and treating people? He said, no, Sadhguru, the entire all my textbooks are here in this phone. I'm just looking and telling them. So if you can look, the phone can become smart enough now that it will tell by itself. If you just tell the symptoms to Alexa, she will tell you what you should do. So this form of symptomatic treatment may become irrelevant after some time because you're just gathering data and processing it and giving an answer. This machine will be able to do better than any human being because it can process much faster and much better and not miss anything. So it is time the young doctors who are coming up now should focus on how you should be able to look beyond the symptoms. This is what Ayurveda and Siddha is significant about. There was a yogi with whom I volunteered for some time for his medical camps that he used to have. It was like a festival.  And he himself lived to be 106. So if somebody lives for a hundred and six years of age, not in a geriatric state, fully active till the last day of his life, he must know something about health, isn't it? Hello? My great-grandmother lived to be 113, 113 years of age. I will tell you, this may sound absurd to you, but you must listen to this because if you are not open, there will be no new learning. Well, I saw her only after she is hundred. But she was still very active. She was living all by herself in an open field. She built a small temple for herself, not for a god, for herself. She built a temple and she sat in it. Because she felt she deserves a temple. This is very common in India, especially women, older women, built small temples, they sat there and they served humanity in a different way, in their own way. So when we went there for vacations and all, she would come home. If you give her breakfast, she will take this and put it to the ends, to the squirrel, to the sparrows, everything. Most of the breakfast is gone like this.  They all died. And she will simply sit there looking at these sparrows and ants eating. Simply tears would be rolling from her eyes. And when somebody said, you've not eaten, she said, I'm full. I thought she was very emotional about the ants because I was just four or five years of age. I was going stamping the ants. The best thing is she never stopped me. She never said, don't do that. She knew she's doing what she has to do for the ants.  I am as a child doing what I have to do as a child. When I sometimes saw her like this and I asked, what is this happening to you? She would just laugh loudly and she would say, someday you will know it took me over twenty-five years to know this. That your life is not nourished hundred percent by the food that you consume and things that you do.  Much larger. Before you came, this cosmos was there. Everything was working. After you and me are gone, still it will be fine, isn't it? There is an intelligence beyond you. Don't immediately quantify it as God, this, that because you're making a conclusion about things that you do not know. If you stay here, this is very important.  But you make conclusions, reading a book, listening to this and that nonsense. You say, I know this, I know that, I know that. The moment you identify with your knowledge, you will become very small because it doesn't matter how much you know. Still, what you know is a minuscule in this existence, isn't it? But our ignorance is boundless. This is called as the intelligence of ignorance. If you always know that you do not know, your intelligence will remain super alert. Whether your body is awake or asleep, it will remain super alert. This is what a doctor must do because I'm sorry to say such things. You may know medicine, you might have read all the books in the world, you might have treated many patients, but still everything seems to be perfect, somebody will die in your hands. Everything looks like he's going to die, he will sit up tomorrow morning. You will see this happening, yes or no? So there is intelligence beyond you and me. There's an intelligence which makes us happen. There's an intelligence which can make a mango into a human being.  You must allow the deeper intelligence within you to function.