All right, so as you may have heard, or maybe not, we are going to modernize the Galaxy API and with it the backend to really make use of some of the really cool new Python 3 features. And all of that is only possible because we've finally gotten rid of Python 2.7s so Galaxy is now fully Python 3 compatible. That was a long multi-year effort led by Nikola and many others of the community, many sprints, many hackathons. And now we get to actually use cool new Python 3 things. And the Galaxy API does need some modernization. So one of the biggest problems we have is that there's currently no way that we can do work outside of the request cycle. So that means, for instance, if you wanna delete a thousand data sets, then those thousand data sets, you send a delete request and then the backend does its work and the front end waits for a response and probably it's going to time out and there are clearly better ways to handle this. So deleting is an example that immediately came to mind. There's also the issue that if you submit thousands of jobs, it's a single post request, but it just takes a while and this is not good. It's not a good design. It's also not good user experience. Like we would want to know, hey, this thing legitimately takes a while if you wanna create 10,000 jobs. And I'm currently at 1,000, 2,000, and 3,000. This is ideally how it would be, but that's something that would be complicated to implement with the current architecture. So of course we could start background threads, but just starting a new thread for these kind of things is not a good idea. I mean, the number of threads that we can start is limited. And that's actually something that the Python developers have also recognized. And there are as new now the async.io event loop integrated in Python, so you can do things basically in threads, but they're much more lightweight, so you can have many more threads. And overall, we should break the application apart so that we can create real salary workers for things that are going to take a while. So Galaxy, whenever something is supposed to happen, you do a request and you get back, either the response if it's immediate or if not, you get back an ID that you can pull and see what is the status or even better yet, we register something in the backend and you get an event sent from the server when something happened. So yeah, I mean, this is another example. So when you look at the Galaxy history, what the client does is it sends a lot of requests to the history content API endpoint. It includes timestamp and it asks, has any new data arrived or has any data been modified? And we do that, yeah, I mean, we do that a lot. We do that I think every three seconds, very periodically. That is traffic that just is pointless. I mean, it doesn't do anything and there would be much better ways to handle this. And that's also something that, by modernizing the backend, we can finally address. So one really cool way to handle this is subscriptions. Subscriptions are not really standard rest that they can be served by GraphQL. And web sockets. So Galaxy can just send out an event, hey, something happened and whoever's interested can listen to these events. That is much better than polling. And there are also other techniques that doesn't need to be web sockets. It can also be servers and events, long polling. All these things are more efficient if we can use a sync area. And then there is another thing that I think limits Galaxy adoption as a work engine for genomics informatics which is our API documentation is, I mean, I'm saying not great. I mean, it could be better, right? So it's relatively unstructured. Everybody's using doc strings, right? We have rock doc strings for our API routes. But a lot of arguments are also repeated so they're not listed in each of the doc strings. So I think generating API documentation from doc strings is inherently limited because they're not gonna copy paste all those arguments around. And then for the user, you read those API documentations and they're like, basically not super useful. So our stance so far has been, well, look at BioBlend docs, they are well maintained but they don't cover all of the API. Or you need to go read the code, which is not a great thing. People should be able to build Galaxy clients without needing to read the Titan source code. Yeah. And there's also not really any type of information on what the things that are returned by the API are actually like a common thing that we see is that there's a data set returned. But what is this data set? Is it the data set that corresponds to a data set on disk or is it the data set that is a history data set association? You know, these kind of things I think are for us developers that might be something we know we've learned, we've looked at, we've maybe seen the database schema but for somebody consuming the API, this is just super confusing. And there's no linking between the objects that are returned. So all of this can be addressed with open API. And open API is something that is really built in into a fast API. And so we get like really nice looking documentation. So this is actually, this is actually from a Galaxy instance that has already some of the migrated new routes. So this is already using fast API. So if at that Galaxy instance, you go to slash docs, you get the individual routes, you can expand on them, you can click them. You can try them, you can change parameters. So here it's a little, okay, this is better. It's a bit small, but here's an execute button and then you get the result back here. You can change parameters. You can see models. So fully annotated routes, annotate what they return. This is what I was talking about before. And it tells you what these things are and how they relate to each other. And I mean, there's a ton of advantages to open API. Another possibility is that there are translators. So you can take the open API specification and like automatically build skeletons of client libraries. This could, for instance, in the future, become the base for Biobland or for a Go client or for a Java client or whatever people want because there's a huge amount of available languages that can clients in different languages that can be generated from this back. Yeah, so another reason why, so I mean, I guess the question now is why Fast API, there are other ASGI frameworks. And ASGI is the async equivalent of whiskey, the previous standard that we've been using. So the documentation is really excellent. If you go to the Fast API homepage, so I've just taken screenshots here from the left-hand panel of the documentation and this is great. You can read this, this is interesting. The examples are well highlighted. We can really follow this quite closely. And that is something that we couldn't possibly do for ourselves in that much depth. I think, yeah, we don't have the resources to do this. And I think for onboarding new developers that want to write API endpoints or improve something or add new functionality, this is like super important that there is good documentation. And it's extensive, like there are things that are common, there are things that are not so common.  I think this is really, really the main thing of, like why I think Fast API is a good idea. Yeah. So how do we do the migration? The Galaxy API, I mean, it does a lot of things, right? So we couldn't just replace everything at once. That's, I mean, maybe it will be feasible, but it doesn't seem like a worthwhile project. Instead, we should, you know, build route by route, go look at these things. And there are basically two ways, okay, let me back off, that was not a great start. So the most important thing is that we can do step by step. So I'm showing here sort of the core of how we started a Fast API app. So we pass in the old Whiskey app, we start Fast API instance, we add some middleware, and here's a Whiskey middleware. So this is part of Fast API. So Fast API can then serve a Whiskey app. And now what we do is we walk the module where the Galaxy API controllers live. And whenever there's some object called router, so that's typically how you call individual parts of Fast API component package module. So yeah, I mean, these are instances of a class code API router and you're supposed to call them router. So if there is a router, we include it in the app. And because we included it last, it overrides any previous route that is registered through the Whiskey app. And that's it, that's the foundation. This means we can really go step-by-step and add new controllers. Or I mean, we don't need to migrate everything, we can also work on the routes that we want to modernize, where we want to take advantage of async capabilities where we need web sockets or GraphQL or other things that are not really fitting within a Whiskey framework. And then, yeah, I mean, so this is already in Galaxy. It will be part of 2101, but if you want to work on Fast API, look at the Dev branch, of course, everything should go to the Dev branch. This was going to be more up to date. We've updated the API guidelines with some explanation and some philosophical aspects. So this is a good thing. If you want to start hacking on Fast API, have a look at the API design guidelines. And yeah, I mean, Nikola recently added the regular building of the documents. So this is also up to date if you go here. Yeah, so how do we migrate? One core thing is that we want to remove as much logic as possible from the API controllers and instead move that logic into smaller functions that are living in the managers. So here's an example. So we need to keep those old routes around, right? So people are currently still starting their Galaxy service with Whiskey. We can modernize routes while keeping the functionality the same. And we can do this by pushing everything out of the API controllers and into managers. So here's an example where some of that custom logic has been moved out into controller, giving the much nicer, smaller function. And here's the new equivalent. So yeah, I mean, this is kind of the way that you can build Fast API routes. The only way we differ from what you typically see in the documentation is that we use a class-based view. And the advantage here is that common arguments can be stored as, or common dependencies can be stored as instance variables. Class variables, I'm sorry. Yeah, then you add your configuration for Fast API. So this is a decorator coming from Fast API. You annotate what is being returned. I mean, that's one way to do it. This is another way, and actually we could remove that particular thing. So that was maybe not the best example. But yeah, I mean, this is all there is. So we are currently migrating to Fast API, but this sort of thing is generally useful. It's really small. It returns a standard model. And what has been returned here are pedantic models. So these offer type validation, conversion coercion. And we'll see more about that later. Yeah, so another core thing here is that a lot of the functionality that we want is based on having pedantic fields and models. And models are basically a collection of fields or models. So models can be nested, of course. So your history can have data sets that can have metadata and so on. So here is an example of a field. So this is probably the most commonly used field in the Galaxy API, which is the database ID, which is a hash of the numeric primary key of the object in the database. And we can associate certain things about it. We can say it's a string. We can say that, well, it needs to follow. It can only have hexadecimal representation. It needs to be multiple of 16 characters. And anything that doesn't fit this thing will be denied by the API. And you will have a reasonable error message saying, why did this thing not work? And also, you can try that out in the documentation I showed earlier. Just put in anything that is invalid and the API will tell you it's invalid. Well, we have a lot of routes in Galaxy that currently you put in something invalid and you either get your own result or you get internal server error. Which we see a lot with bots and stuff which is automatically hitting our APIs. Yeah, and so on the right side, here is a model and they're really easy to construct. So each field here, you list each field here and you say what type it is. And then you can add extra metadata. And that metadata will be available in your documentation. And this becomes also more interesting when we have linked models that interact with other models. So that the developers are not completely lost. I mean, consumers of the API are not lost in what these things are. So if you wanna get started, we have a couple of different ways in which you can currently start Galaxy under fast API. I kind of like this variant here, Python scripts, FAPI. You give it path to the config. That's not actually a flag, that's my comment here. It is great for development because you can just stick that into your IDE and start Galaxy in your development environment. There is more standard ways to start Galaxy. So UVCorn is kind of the recommended driver by fast APIs. So you see that in all the examples. So this is what you would replace the example in the fast API logs with. This would be how you start the Galaxy app. And that's important because this is also going to be the way that in production we're going to set up Galaxy. Of course, at a higher level, this will either be managed by the RunSH script that we currently have or something else. And then have a look at an example PR. So I just did an example PR by David Lopez from the Freiburg team. He's new, he's done an excellent job on starting to convert different routes to fast API based routes. So this is a great example. Yeah. John, do you want to talk about this? I can, yeah. Want to is a strong word. So I threw a couple of slides together 30 minutes before the meeting started. Just about typing. Well, maybe we should stop there because I guess we're going to get into backend architecture stuff. Is there any questions about fast API? I guess these are supposed to be fairly interactive. Yes. Does anyone have any questions about the controller level above or the server components or API stuff? Sorry, so this means basically you're one or the other effectively in terms of APIs, right?  Yeah, so if you start with Uiskey, if you continue to start with Uiskey or paste or other Uiskey servers, then you continue to serve the old API, but we try to have the old API and the new API share as much code as possible. We have an intermediate layer that takes the pedantic models and pushes them out over the old API. So the behave similar, but you're not getting the new ASGI features there. Yeah, but the other part of that is that there are like all of the quote unquote new APIs have two implementations, right? So we made the implementations as small as possible, but there are two sets of controllers for each of the new APIs. Yes. But then when you do run under a fast API, you have the old ones and you only serve the old ones because there's not what you want. Oh, okay. I see. So effectively you can bring it in as you implement things, because I'm just wondering how this works with the web stuff. So the web stuff will use the old API until the new one. So when you start up Galaxy in one of these ways, I mean, the UI doesn't care how it contacts the API. So, you know, it's just the API that decides, I mean, the backend that decides how it wants to answer. And the specification are the same between the old and the new currently. Oh, okay. Yeah, that's actually another reason why we, why you think it's a good idea to document stuff more clearly because with an open API, you have some standard ways to deprecate routes and arguments. So once we have that in place, we can also more aggressively change some things that are not great. Like I was showing you this kind of thing where we have Q update time, and then you need to go to the QV that corresponds in position to the same thing, which is like not very easy to build in whatever client you are, except maybe backbone for which it was written. But probably not even there. So I had, sorry, I had a question, Maris. Is it, is Unicorn communicating with the fast API through ASGI, right? Is that correct? Yeah. And then ASGI, at least fast API wraps the old you with, sorry, the with the modules and serves it and we can do async as well. Is that correct? Well, not in the same route. So a route is either either sync or re-sync. All right. And currently all our fast API routes are also still sync or, well, that's not true, but almost all of them are still sync because we're using SQL alchemy and we're using the ORM of SQL alchemy and that's not yet compatible with async.io that's gonna come in the 1.4 release. Once that is out, we can use the async mode in the async controllers. So does that entail another rewrite or just inserting async a rate all over the place? That's gonna involve putting async await where there is something with a blocking code. So, you know, when you fetch models from the database, you have to use await. But the pedantic models, so the pedantic models can also get things that are coming from the database. So if these are complete, they replace the serializers we currently have that you see ORM and so they get around that problem and should also be more performed because there's no more lazy loading and only fetching of attributes that we're actually going to use. Thanks. I mean, that's in theory how it should work, but we don't have an implementation yet. So I have a question. So it goes a little bit in the same direction. So the client routes will be replaced. There will be the same routes or there will be new routes for the fellow. There will be the same routes currently until we kind of like reasonably saying bye bye, you whiskey. Everybody should be using an ASGI driver. When that is the case, of course we can start adding new routes or new mandatory routes, right? I mean, of course there's a possibility that we have the client check what the server can do and then use maybe the new cool thing if it's there and the old thing, the fallback if it's not there. So for instance, if we add a history update subscriptions, we could of course check is that possible with this server? And if not, we use the old pulling mechanism. But after the migration period, we would remove that here. And another question is, would it make sense to kind of transform the models first to pydentic and then work on the API or is it better to do both like successively like step by step? Both make sense. I don't think you have to decide. I mean, there's many places where we can use pydentic models that don't necessarily pass over the API. So yeah. Yeah, I also mean like for the database models we have right now. So we have this in the models, we have like this init.py I think everything is in there. And I was wondering if we should or could replace that file first basically and have everything all those database models, but maybe that's just technical how to do it. I was just curious. No, I mean, it's an interesting question because we also got into the situation where we wanted to serialize a few things from the database without having access to the database, right? So that's for instance, how the new metadata generation works. And we, you know, we wrote some custom to dict methods that just take the database model and turn it into JSON. So I think the right or like a better way to do this today if we have pydentic models is to use those, right? And I think we will continue the need to have the database models and to have the pydentic layer sit on top of it because there's different requirements from the pydentic models. So for instance, you may wanna serialize just a subset of fields where you don't wanna include the relationships. So then you can build models that only include parts of what you need to return and build them together. So I mean, I think it's actually if we can replace the serializes that we currently have which are just taking the database model and then requesting one attribute after the other.  I think that would be a big advantage. And the other thing is that we can use those models for, you know, getting things out of the database and into the database and validate things before as well. Am I understanding that there's a way to like connect SQL alchemy to a pydentic directly bypassing our models though? Yeah, I mean, you can get any, you know, anything that can be serialized as JSON, sorry, can you ask your question again? Well, it sounds like, I mean, I generally agree we probably need to preserve the model layer or what I would call the, like Sam, the in it got models layer, but is there a way to just sort of in pydentics to say, grab this out of SQL alchemy and sort of serialize it directly? Like, is there a way to bypass, you know, what we're doing inside of our models or like performance or something? This is kind of what we're talking about with the GraphQL layer, right, Marius? Yeah, yeah, yeah.  So then it just takes things from the instance and my understanding of this is that it doesn't need bypass the ORM. So I'm actually, I'm sure that it bypasses the ORM because in the async example in the FEST API docs, that's how it's done. They still use the core of SQL alchemy and they use the model definition, but they don't use the ORM. Does that make sense? Yeah, that makes a lot of sense. That's cool. So again, I mean, the, you know, I really like the FEST API docs because they talk about these things, right? And like they are not, they are not books. They're not super long and not super detailed, but they are enough to like, yeah. It's somewhere between inspiration and instruction. I think they have the right length to look into these things. Yeah, I mean, I've been hacking on this and I want to like, I do think to Sam's original question, should we be working on the back end first? I mean, I don't necessarily think we should be replacing the models first, but I do think that there's a lot of value in basically taking all of our controller code and making it pydentic for that layer that says, here's the thing we're sending off to the user. So replacing all the serialization code, all the code that's in controllers, we can push those down to models, push the views into pydentic, do the input validation in pydentic. Like I think I'm getting nervous that we've converted a lot of routes and we're getting a lot of duplicated code and we still are a release or two away from like ripping out UWSGI. So I do think if it were just up to me, I think we would be putting a little bit more effort into getting that back and ready, making those controllers all like really as thin as possible and ready to just swap over. But that's just my bias. I'm obviously not sort of eagerly waiting on the open API docs. And those will be amazing, but I don't use them, right? So I guess that's really the benefit that we're getting in the meantime by thinking the two layers or the two different implementations is that we've got those nice docs in the meantime. So that would be, you know, just as like a playground experiment with it, but I do worry that we're gonna get to a point here where we've got too much duplicated code. As thin as we're trying to make it, it's still a lot of duplicated code. But yeah, that'll be my sort of alternative answer to that. So I mean, you also mentioned that we can only start, you know, really ripping out serializers once we make the switch. But you know, the way we do it, we should be able to do that today as well, right? Oh yeah, no, I put all the, you know, you can return gigantic models from our legacy framework. I mean, I added that. I thought that was a really cool idea. We've been doing that forever. Like, so you can take all the like existing controllers and basically make the backend look like it will be looking for fast API. I haven't opened, yeah, I mean, yeah. So I think that's a good approach is to like sort of start at the layer just below the controller, right? Okay, we do payload and keyword arguments very ugly in the API. I don't even, I mean, I've written dozens of API endpoints. I still don't quite understand when we're getting keywords and when we're getting payload and when payload is a keyword. Like it's really ugly and fast API is much better documented for all that. But I mean, if we could start at that layer just below it and get all that stuff ready. I mean, I think there's some examples now where we can sort of see, like if we get the controllers to look like this, they will work in either framework just fine. And I think those examples, I mean, I completely agree with you and we should definitely pay a lot of attention to this during the development process. I think the nice thing about also doing the fast API route is really the thing that we can get outside contributions this way because you actually do something, you can see something as a developer, you can say, hey, this thing now appeared because I did this because I actually went in and documented the things that need to go there. That's sort of my idea of why we should already start doing fast API routes. But I also agree with you. I mean, this is not exclusive. Yeah, that's a fair point. I don't disagree that that's very nice and it is very great to get that sort of visceral, like, hey, look, the documentation for Galaxy now works. That's awesome. Yeah.  And they do make the Sphinx docs a little better. They're not like, it's still not good, right? But it's, and there is a plugin to integrate Pydantic into Sphinx, but it doesn't work very well. But yeah. So the other thing is that when we add new routes, we can already use the proper way to do things. So for instance, I've done some work on adding this workflow in location detail component. So you can see now the workflow in location details. What is sort of missing is filtering invocations. So you wanna look at like ordering vocations. So you need pagination, search, and all these things. So these are all parameters that have not been there previously. So that is also an opportunity to add new things in the way we really wanna do them currently. And then the same way I was talking about adding GraphQL and web sockets. So these are things we can start adding them. So that doesn't need to, you know, wait at all. And I guess one conclusion here is that we should push for getting rid of you whiskey as early as we can, right? I mean, it's not fair because I've said this for years, but yes, me too. And it's also not fair because I think our admins are not in on the call. Yeah, it was Nate. The perfect venue for determining that. Can you talk a little bit about like the plan for like message queue and like asynchronous tasks? I mean, I'm trying to help with the effort, but I still don't see, is it like requiring unicorn or like how does this get us closer to having workers or is it a sort of a parallel effort? I think, and then correct me if I'm wrong because I think you looked at this longer than me, but one of the things is that we traditionally didn't really have a good way to start workers because, you know, we still wanted to have that run as age experience where you just step run as age and Galaxy is functional and working. And so I think one part of the solution there is to decide on something that can manage these processes for us and the other thing is, yeah, I think that's the main thing actually. I have a PR on Galaxy that adds a really stupid way of starting a salary worker within the Galaxy process, which is of course not a good idea because we shouldn't get into the business of handling processes, but if we can find something ideally Python based so we can pip install it that can handle the basic requirements of starting processes in a coordinated way. I think that gets us pretty far. The other sort of, let's call it potential blocker is, we didn't use to have this dependency on for instance, having a real AMQP server, RabbitMQ or I don't know, SQS or whatever salary we can use. So that's I think another challenge, but we've always required, for instance, PostgreSQL to set up a production Galaxy instance. So maybe we have to say, we now need RabbitMQ. I'm sorry, go ahead, John. Oh, no, no, I had just another question Oh, I was gonna say, yeah, that just about sums it up. The crux of it was we had no way to start a real process manager. So that should be, yeah, that's step one. And then once we can start a salary worker or a number of salary workers, there's real value and actually decomposing stuff until then not near as much. We don't have to be stuck on RabbitMQ though, I guess is what I was gonna add there. We could look into other transports that we wanna use, whether that's zero MQ since that's what Circus uses or any number of things. So I want to add here that I think zero MQ is fantastic. It's like super easy to set up, super easy to control. And I have a WebSocket subscription endpoint that sort of works. That's why there's no PR yet. But like, you can open a WebSocket in your console and you can see when Galaxy finishes datasets. And that's just adding zero MQ messaging whenever we also write things to the database. And that works across all processes because it's zero MQ. I think the problem with zero MQ was securing it. And that's, again, that's also the problem with Circus. Because they don't really give you a ready to go recipe for securing zero MQ. And that's probably not a problem for 99.9% of instances where hand is just run on a single machine but like use Galaxy.org runs it on multiple VMs. And so we need to figure out how we wanna secure this. Does answering that question limit us in terms of which, how we run Galaxy? Like, is this gonna be like, we're gonna want something that runs Galaxy that's also a process manager like Unicorn or do you think that Unicorn could also work? I don't, I mean, I was looking around and I didn't really have the impression that people use Unicorn to start salary workers for instance, whenever you look for that, people are using Supervisor. But Supervisor seems to be quite centric on this approach where you have it installed system-wide. And I don't know why in the past we haven't gone down more of the Supervisor route. So maybe I should add Supervisor here. Yeah, can we just run Supervisor in user space and just you get that with Galaxy? Yeah, I mean, that would be another option. I don't know how people, for instance, the cloud team would feel about this or how the admins feel about this given that they like SystemD. So that would be the advantage of Chaperone which has a SystemD interface and understand SystemD signals and these things. We should just start a big collection of options and start adding data on a big issue, I think. Yeah, and I mean, these things are not hard to set up. So maybe we should just, I mean, there's an issue. Hey, I want to link the issue, but there's an issue on the Galaxy repo where Nate sort of specced out what we should be able to do and I don't suspect this will be a hard job just trying how that will look like with Circus and Chaperone and Supervisor. I get the idea that with Circus, it will probably be possible to stuff this into Galaxy YML which might be nice, but might also be a bad idea, I don't know. But just having a single config file might be nice for our users, it's like happens.  So I mean, at least for the Kubernetes case, I guess it would be preferable to have Kubernetes as the supervisor without having a separate process, right? So there is that.  And then for a more production grade one, you have to start them up separately anyway, so. Yeah, I mean, that's kind of the route I went except I started the worker during the hand rest setup. But yeah, I mean, that would be another option, I think. Although, you know, if, so the cloud setup doesn't necessarily need to use this, right? So if we integrated this with run SH or whatever successor to run SH, you know, that's just the very light wrapper and coordination for starting stopping processes. So yes, of course, Kubernetes could bypass that and go directly to the code that Circus or Chaperone or Supervisor would manage. It does seem, I'm trying to think about, it seems like we lost some time and some development effort, maybe even the significant amount, like investing in UWSGI messaging. And I'm trying to think if there's like lessons we learned there and maybe, maybe, and I don't know what those are, but maybe one of them is we spent too much time trying to get run.sh to be too production-y. And so, you know, maybe something to keep in mind going forward, but that might be the wrong lesson. The wrong lesson, the lesson might have just been UWSGI is, you know, not a good piece of software. I think we also put our eggs in one basket and when that wasn't really necessary, right? So this in-process communication, we went with the UWSGI protocol of this messages that we could have easily gone with zero and Q, for instance. And then, yeah. I think that's a good point though. John's and before that there's no reason just run.sh has to be anything, but it's sort of a functional development setup. It doesn't need to be production-y at all. Yeah. Yeah. Hey, Marius, can I ask a question real quick? Sure. You said you had sounded like an experimental branch where you were able to open a web socket and sit there and watch datasets finishing off. Do you, could you point me to that? I'd love to take a look at that and just see how it all kind of fits together. I'll do it after the call. Excellent, thank you. I mean, it's like, I'm not sure I put it on the right place. It's probably all horrible places, but like, as an experiment. I just like to see how the parts connect. You know what I mean? Sure, yeah. So another branch that is probably very similar to Daman's branch for GraphQL. So I think this sort of thing probably goes together that we manage the subscriptions with GraphQL because GraphQL has language for doing subscriptions, which I mean, there isn't really a standard in a regular HTTP API. I mean, not that you couldn't do it, right? But I might have to. You don't want to replicate Q and QV in GraphQL. No. Do that again? Exactly. I mean, that's exactly what I meant not to do because there is like this standard way of doing it in GraphQL. Yeah. Is there anyone that would like to start working on this? Are there questions on like how to get started? I do have questions on how to get started, but I got here late and I got a feeling if I rewind this video, my answers will be there. Yeah, it did. There's also this like slide just, you know, yeah. It's all right. If somebody's recording, I'll just watch it again. Yeah, it's being recorded. I will forget to publish it for two weeks and then give it to Dave. But yeah. Sometimes in March, you'll be able to see the video. Well, sometime in March, you'll have your PR.  Also, you know, if you don't like the approach or you think we should do something differently, like now's the time to do that. I just- We're still trying to figure things out, so. I just love to get an experimental subscription that replaces that polling that I do. You know, I just love to try and generate one of those. I do not like polling either. I noticed that one of these, one of the slides that was up here when I first came in was like, we do a lot of inefficient polling. It's like, yeah, we do, we really do. And I would love to eliminate that. So I don't know if there's no other questions, and I guess I could say we need more people to present. And not everything needs to fill an entire hour. So if you have small projects, get in touch. But do you want to present or, you know, you have something that we should be working on or you want to make a case for something or against something? And if it's just five minutes, that's totally fine. I mean, but also there are people who have requested to present and we've had like several full sessions and it's kind of like a boom bus cycle. It seems like, well, weeks were like, ah, you know, we haven't got nothing and then several in a row, but yeah. So apologies if you're hearing that and you're like, I want it to present but we're gonna get to you, but also we need more. It is Janet. Sorry, if we've got a few minutes, can, and since you got Janet here, it doesn't even mind if I ask some questions about the format of the Galaxy workflow files. You've got six minutes. Go ahead. Okay. So I'm trying to, I'm dealing with some bugs on the IREDA side. And IREDA parses the galaxy.ta format and converts it into its own format and then yeah, link holds an interface to Galaxy. Okay. And so things seems to change somewhere around Galaxy 18, 18 points something. So, and I'm busy fixing things up at the moment, which is forcing me to learn closure, but where are things going with, because I don't want to like fix everything up and then format changes again. So where are things going with the.ga format and what can we look forward to in the future? Um, I would say that Galaxy is going to continue to support the.ga format for the foreseeable future. Now we might, you know, we can now consume .yaml files, if you want to build GX format to stop and there's a schema available to see what that looks like to some degree. We use that extensively for testing, et cetera. Plenimo supports it, but as like, I mean, reproducibility is our thing, right? So we're gonna continue to support the .ga format indefinitely. And if something, I mean, apologies if something in there broke, we try not to break that in big ways or really at all. Sometimes there's some things we assume are non-functional but turn out to be functional, you know, depending on how people are consuming it, just cause like something's, you know, not being used when Galaxy reads the file back end doesn't mean, you know, someone wasn't reading it in a certain way. But I mean, I would not worry about .ga files disappearing. We'll continue to be able to consume them, I think. Even internally, the way we implement, you know, GX format two or CWL also is to convert something that looks native, you know, looks like those native models in the database internally. You know, we take those external formats in, we tweak them to make them basically extended .ga files and then we consume the .ga file sort. I mean, that's a very hand wavy thing. That's not what really happens, but that's a sort of approximation of what happens. So I wouldn't worry about, I mean, I would feel comfortable continuing to support the .ga files and fixing whatever that issue is there. Yeah, we would like to have better formats for, you know, reading and consuming and writing these things, but yeah, you can't go over, I mean, going through the miserable experience of dealing with those .ga files is gonna continue to work. So apologies for how ugly they are, but it's gonna continue to work. Is that a sufficient? And is there any documentation about what's meant to be in there? No. I presume no. No. Any way to validate one, anything like that? Plenimal lint will validate it sort of. It will catch big issues, big glaring problems with it, but yeah, that's about it. And it won't go through and validate tool state and stuff. So if you've got a tool ID and it's got, it's contents don't match what the tool is extracting. It can't catch that. The only thing that can catch that is loading it into a running galaxy with those tools loaded. Okay. I guess we need probably to end on time. So thanks everyone for coming. You in two weeks. Go paper. Hi. Hi, everyone. Thanks, Mary. Hi. Thank you. Thank you. Thanks.


Good morning, everyone. This is Melissa Arma with the stocks. What should I do a market review today? Because the market's gapping down. But it is a holiday week. I said last week, don't be surprised if the market ends up rallying this week on low volume during the holiday. Today's Tuesday, I did look at the market briefly yesterday. It looked like it was barely even moving. Literally, this is not a week to really be trading, because at just low volume, everybody off. Holiday week. At one point, I remember looking at charts in the middle of the afternoon, I was like, is the market closed? I mean, that's what stocks look like they were not even moving.  And then we gap down today. Just a little follow-through from this move downward yesterday that happened just very slowly and not on a lot of volume. And like I said, really didn't show any weakness. And I don't even think this gap today is weak. So this is not a shortable gap in the market. I didn't rate it to short, because I'm not gonna short it, but you could have rated this morning, it wouldn't have rated well. But I will tell you that it was a follow-through from the move that happened, the sell-off here a little bit yesterday. But the market's very strong. Will we still make a new high before the end of this month? We might, because really Monday is the 30th. So we have Tuesday, we're not gonna do anything today. I think today the call is neutral for the market. Like really neutral. Back and forth, back and forth, no directional bias in this gap down. We might gap up tomorrow, a neutral tomorrow in rally on a Wednesday, right before the holiday. Friday, the market's closed to half day. I don't think we'll really do anything Friday. On Monday, we may end up gapping up. So I have to see where we actually close on how we trade Tuesday, Wednesday, Friday. Market's closed Thursday for Thanksgiving, but I wouldn't be surprised if we gap up the last day of the month. I'm gonna make a new high for the year then. Either way, we're gonna rally this year into the close of the end of the year, the calendar year. So nothing here even remotely looks bearish, even though we're gapping down and we had a little bit of a sell-off yesterday. So still look for us to continue higher, get over this number of 1,1550, the timing of it. You just have to watch and see every day how the market acts, trades, gaps, and look at the gaps in the market. But it still could actually happen by the end of this month. It doesn't have to. It's gonna do up for the end of the year. But it could do it still for the end of the month because next Monday is November 30th. Have a great day, everyone. If you're interested in more information about the upcoming gap class, email me at melissathestockswish.com.


The deeper challenge of agency is not in the legalities that are recognized. It is in that wonderful human capacity to trust another sovereign citizen. Agency is in common law, more like a personal relationship than like a matter of law. Somewhat like marriage, the relationship of parental agency and spousal agency are more realities recognized and honored by government than any creation of law. The heart of common law agency is trust by the one who establishes the agency in the one who accepts the agency. There is a trust that the one who acts as agent will truly act in place of the one they represent. The officer who gives a verbal message to a soldier to carry to another officer has entrusted the task to the soldier. When the soldier delivers the message that was entrusted to him, the other officer receives it as if the first officer was standing there. The family that has a community meeting attended by only one adult member of the family has entrusted that member to act on behalf of all the members of the family. It does not take an act of law to establish that relationship. The law accepts that the trust relationship is part of the family. The hospital who accepts one party of a marriage to be a guardian over the other during a time of incapacity does so in general trust that the marital relationship has the one seeing to the wants and needs of the other. Parents are presumed to act for the benefit of their own children. These all are agencies based on trust alone. When it comes to agents who are not personally trusted, it takes a writing signed by a client or an order signed by a sitting judge to establish the legal relationship where one sovereign citizen is able to place another where they will do what that citizen would do as if they're in person. At a parent-teacher gathering at the local school, Billy's mother rises and speaks concerning discipline issues. Others, both teachers and parents, accept that she speaks on behalf of her child and also speaks on behalf of her family. She speaks as a parent as well. It takes no law to establish this. It is something recognized by being human and having the common experience of living in a human family. Parents speak for their young children and it is an anomaly when one parent would deny what was spoken by the other in public. Agency is part of our lives. Common law does not create agency, it just gives it a name. What common law has accomplished is to widen the definition to include business dealings where one person can be entrusted to act as the agent of another. Darrell buys a stamp and puts it on a letter he drops in a mailbox. He has entrusted the U.S. mail to finish the delivery of that letter to the address on the envelope as if he were able to deliver it himself. The mail worker who receives and sorts the mail sending it on to the right center for delivery is his agent. The mailman who delivers the mail to the address is Darrell's agent and the one who receives that letter receives it as if Darrell had left it in his mailbox by his own hand. Legal agency is based on trust that the agent will do as the client would do. Seven-year-old Betty is shopping for groceries with her mother. As her mother selects the light bulb they need, Betty sees a small set of gift bags sporting her favorite cartoon characters and she picks them up carrying them in her hand. When her mother is checking out and paying for purchases, Betty lags behind looking at the pictures on the magazine covers and as her mother takes her hand, not really paying attention to what she carries, intent on taking the groceries to the car, she is stopped by the store manager who points out that the child has attempted to steal the gift bags.  There is of course no criminal intent and the mother would either return the items or pay for them and that would be the end of it. The parent is the agent to set things right. She would accept personal responsibility for her child. The store manager would not find this particularly disturbing as children will always be children and the agency of the mother would assure correction even if the mother had only found out about the bags on helping her daughter into the car it is likely she would carry them back or otherwise find a way to square it with the store. She is the child's agent in dealing with the world. Other agencies are generally purchased and are accordingly business relations. A citizen who hires an attorney entrusts that attorney with authority to act in his or her best legal interest in a matter for which the attorney is hired. The citizen family that purchases a home entrusts a broker to manage the transaction and the broker is paid for services rendered. Len, a plumber, gets a call to clear a clock drain. The homeowner would clear it himself but does not have the tools so he calls a plumber to do what he would do if he could. Len arrives and does as the homeowner would do if he could. He is the agent for restoring the sink and drain to useful condition and he can be trusted to do the job in order to gain the price of his services. Terry and John Bascom, a young couple, decide to attend a parents group meeting at their church. They hire a babysitter to see to the welfare of their two children caring for the children as the parental task but they pay a 16-year-old Debbie to take on the responsibility for normal care during the time that they are away. They trust Debbie to act as they would when it comes to assuring that their children are safe and continue their normal routine. Debbie is their personal agent in the home paid to do as Terry and John would do as if they were there. It is a trust relationship that is secured by payment. These are common business agencies where one person pays another to take actions and they pay as dependent upon the one who acts as agent performing the task or handling the situation to the satisfaction of the one who pays. Yes, this has one foot in the business concept of contracts where there is an element of agency in any contract for services. It is one person doing what another would do if they could or wanted to do it themselves. These are paid agents. The simple trust relations are also the foundation for a large part of business law. Personal or family agents can be purchased. And then we must deal with the anomaly of legislative agency. Agency created by passing laws. The first reason that these are addressed as anomalies instead of simply accepting them is that one citizen cannot assign an agent that his or her neighbor must accept. That is a violation of the very principles of agency. Agency is almost by definition a trust-based relationship. It is a serious breach of personal sovereignty whenever and wherever the government attempts to establish personal or family agency by law removing the choice of the sovereign citizen or family to select their own agent as someone they trust. You might say that this certainly could not happen, but it is actually quite common. Greg, a man facing serious financial difficulties, is accused of burglary, of stealing something. On being brought before a judge and accused, he finds himself being assigned a public defender. How could a judge tell him who he has to trust? The judge is not there to dispense justice, but to maintain the arena in which the attorneys, the knights of the legal system, fight for their clients. Law courts are part of a government system based on a service by sovereignty of government. The judge is doing all that he can in this environment to give Greg a fighting chance against the ones who accuse him. The judge has no power to change the law that is designed to serve attorney combat. The courts are told what services they are allowed to give. They are not empowered to deliver justice to sovereign citizens outside of their prescribed operation. This does not make the court system into good government. It does not make it right in what it does. All it accomplishes is like a bandaid applied to hide a wound. But there is even more common anomaly seen in the operation of public schools. It is legislation that a parent must accept whoever the system would put in authority over their children. It is such a common anomaly in personal agency that it is even given its own name in Loco Parentis. The teacher stands in place of and are given by law the authority to act as the agents of the parent in whatever they are directed to accomplish as public employees. It is only humanity that keeps this from becoming a monstrous abuse of citizen sovereignty. It is only the fact that these public employees are part of the same public and understand parental purpose that they can act to the benefit of children in spite of the challenge of their employment answering to other authorities. Will teachers and administrators represent parents for the pay they receive? Will they represent the families of children over whom they assume authority granted through legislation? The answer is obvious. The trust is personal, not public. If a child steals a book from the school library, will the teacher have responsibility to pay for it or to see that it gets back? If the senior class of a school dropped their studies and assembled in the auditorium to protest unfair administration decisions, will the teachers be there to represent the children who are in their charge or will they represent their administration that pays them? This is the answer to the question of agency. Educators are agents when it suits their purposes to be agents and they are public employees when it suits their purpose to be employees. They are paid agents but are not paid to be parental agents. They are human and understand the responsibility of parents but are hired to be public servants with others selecting them instead of parents of students who are set under their authority. This is an act of government that accepts its own sovereignty, not the sovereignty of its citizens. We have a public system that is not well conceived to provide what sovereign citizens would value. Is the one you elect into public office an agent? Can you trust them to do what you would do? Are they responsible to you for what they do in your name? If they represent a sovereign government, they answer to nobody. If they represent citizens, the government is not sovereign.


Energy drinks are garbage. Now look, I know many of us when we're tired or when we're having a slow day, go do an energy drink or for some people coffee. But I think for many of us, these do more harm than good. Now in this video, I want to share a why and some other things and substitutions you can use. Hey guys, I'm Dr. Alex Hein, author of the health book, Master of the Day, doctor of acupuncture and Chinese medicine. So before we jump into this video, there are two very important links right below the video. The first is if you'd like to become a patient of mine in Los Angeles or virtually via telemedicine, you can reach out to my private practice and contact it there below. The second is I put together a free guide, which is for daily rituals that could potentially help you add years to your life with traditional Chinese medicine, and that is the first download right below this video. So first of all, I want to throw out this philosophical point here, which is that where does energy come from? Like what makes someone fundamentally feel energized or feel tired on a daily basis? And let's go back all the way through evolution just for a second. Imagine if we were genetically wired to be exhausted all the time. That was our template from nature to have no energy whatsoever. Clearly, this is antithetical to evolution because a person that's exhausted can't forge for food, can't defend themselves, can't hunt, can't protect their spouse, can't raise offspring. All of this is antithetical to surviving and to evolution. So first and foremost, being energized is our natural, healthy, balanced state, right? My very first point is that to have energy is the fundamental base state of good health and it means that you're doing something right. Now if you don't have energy, it doesn't necessarily mean you're doing something wrong, but first and foremost, trying to out optimize what has been optimizing for tens of thousands, hundreds of thousands, millions of years is stupid. So the biggest aspect of energy is always going to be good health, no matter what you do. So people are always trying to find a way to optimize or increase the amount of energy. But what I'm trying to suggest is that when you look at people who have very strong resources, Chinese medicine calls this yang. If you have strong yang, look for example at children who have so much yang, so many resources, run around all day, scream all day and it's unbelievable the amount of energy they have. According to that to a 90 year old grandma and who can barely make eye contact, slow the process, move slow, loses her appetite, our fundamental state is being energized. So if you are doing things like taking energy drinks or multiple cups of coffee, thinking that it's going to give you something other than what a healthy body has for energy, you're wrong. For me, energy drinks are like antidepressants for most people. I don't think the average person that has mild to moderate depression really needs an antidepressant to get through their hard phase of life. Just my two cents. I think they help some people, but I think for a lot of people, going through mild anxiety or depression, put on an antidepressant and then they stay on it for years, which commonly happens, is doing more harm than good. So for many people, reflexively reaching for an energy drink or coffee or something else like that is like reaching for a donut just because you're starving and you haven't eaten since you woke up and it's now 2pm.  Most of the time we're grabbing them reflexively and we're not thinking that is this going to help me a week from now, a month from now, a year from now not have this issue. And on top of that, that's assuming that they don't do any harm, right, which I think frankly for a lot of people they do. But in terms of pragmatism, fundamentally, low energy in some ways is both a symptom and a cause. And figuring out why that is will prevent you from needing energy drinks or five cups of coffee in the first place. Now one final example here. For so many people I know that are entrepreneurs like me, they will try to sleep five or six hours a night to gain two more hours in a day and then rely on coffee all day long thinking that the loss of two hours is somehow made up by the three cups of coffee they consume to be more productive. Now this is a very short lived promise because talk to that entrepreneur in six months or a year or three years when suddenly their health is much, much worse and they're riddled with acid reflux and they're not sleeping well and they realize that they haven't felt rested in three years and you're going to realize why this is a very false form of energy and it's not something real and sustainable. So I want to give three alternatives to energy drinks. The first is the substitution ritual. So for many people like myself I have coffee from time to time a few times a week and trying to quit it completely has been very difficult. So for a month what I did was habit substitution. It was the ritual of leaving my apartment at 7.30 in the morning every day and walking down to my really quaint neighborhood and getting a cup of coffee that I craved more than the cup of coffee itself. So for me trying to stop that ritual was very difficult. So instead I kept the same habit, the routine and the ritual but instead of buying a cup of coffee I got matcha instead. So the first is if you have some kind of ritual you use an energy drink before studying or before work or before a certain time a sports game. Try swapping it with the exact same ritual you just drink something else and that way your body isn't going through a sense of what like a habit withdrawal so to speak where it's so used to this thing that makes you feel good in the morning and you just go cold turkey which doesn't tend to work. The second thing that I would say that I've seen is using Chinese formulas. That's personally what I do a lot of the time when I'm having low energy. So again for a lot of people low energy can in some ways be both a symptom and a cause right for some people they sleep eight hours but they have very low energy in which case the sleep is probably not the cause of their low energy. So for myself and within my clinical practice we utilize these Chinese formulas to fix whatever organs are not functioning properly. For some people it's digestion that's the cause of the low energy. For others it's the stress response or the adrenals like people like to think of it. That is the cause of the low energy. So we utilize these formulas to adjust the functioning of those organs that are causing the fatigue so that's really the underlying cause. Now the third is really actual substitution of coffee. So for some people if the ritual isn't important to you it's the warm earthy beverage in the morning. So three of the substitutes I recommend for coffee are dandelion blend which is a mix of dandelion and chicory and some barley I believe. Tastes very similar to coffee and you could put milk in it. Oat milk tastes almost exactly identical. Second is tachino and the third not due to taste but just the ritual is matcha. So a lot of people get matcha lattes instead of regular coffee lattes. That's a good substitution as well. So these are three things you can swap out for energy drinks or for coffee that will still give you the ritual and the sensation without some of the downsides as well. So that's my two cents on energy drinks and to a certain extent coffee but we'll talk about that in another video. Before you guys go check out those links right below this video and I have two other related videos for you right there.


In this video, we want to prove Euclid's fourth postulate, and we're going to prove this as a theorem of congruence geometry. Now, it might seem weird. How can you prove a postulate? Isn't this something like an axiom? You just assumed to be true. Well, it's called Euclid's fourth postulate because in the book The Elements written by Euclid, Euclid took this as his fourth postulate of geometry, which of course then later on became known as Euclidean geometry. He didn't name it after himself. It is, of course, in homage to the work that Euclid did. Now, we took a different axiomatic approach to Euclidean geometry. In particular, we're taking the axioms of David Hilbert to axiomatize Euclidean geometry, and we're taking one group of axiom at the times. In our lecture series, we took the incidence axioms, proved some stuff about incidence geometry. We took the betweenness axioms and then proved stuff about order geometry. Now, currently, we've added onto those the axioms of congruence, and now we're proving things about congruence geometry. As such, we took a slightly different statement for our axioms. We have angle and segment translation, angle and segment transitivity of congruence. We have angle and segment addition. We have the side angle, side axiom. This is our bedrock for congruence geometry. Now, we defined right angles as those angles which are congruent to their own supplement. Now, we're in a position where we can actually prove that all right angles are congruent to each other. I should point out that we've already proven that if an angle is congruent to a right angle, then it must also be right. This sort of gives you the other side of the coin that all right angles are congruent to each other. So, what we have to do is we have to take two arbitrary right angles. So, we're going to take angles A, B, C, and A prime, B prime, C prime to B are right angles. So, let's say we have one of them like so. There's a right angle, and then we're going to have another right angle, maybe something like this. And they're not necessarily related to each other in space whatsoever. So, we'll call this one angle A, B, C. Let me lower my B here to be something like that. A, B, C, like so. Let's take this one over here, same basic idea. We have A prime, B prime, and C prime, like so. And we know that both of these are right angles. So, I'm going to draw a little rectangle here to indicate that we have two right angles. Now, what does it mean to be a right angle? It means that you're congruent to your supplement. So, it makes sense to introduce the supplement in this conversation here. So, there is going to exist some point D so that B is between A and D. And so, these two angles are congruent to each other because they're both right. The right angle is congruent to its supplement by definition. And we can do the same thing over here. We can extend the line so that there's some point D over here. And it's just, and it will then be the case that D, B prime, C prime is congruent to A prime, B prime, C prime. Oh, sorry, not call this point D. It should be called D prime, like so. And so, by assumption, because these are right angles, A, B, C is congruent to its supplement, C, B, D. And then, the angle A prime, B prime, C prime is congruent to its supplement, C prime, B prime, D prime. And so, we know that these angles, these angles are congruent to each other. And these angles are congruent to each other. Our goal is to prove that these two angles are in fact congruent to each other. And so, this is what we're going to do. We are going to do angle translation. So, we're going to translate one of these angles onto the other one. And in particular, we're going to translate the angle A, B, C onto this angle over here. So, what does that exactly mean? It means there's some point P which lives in the open half plane determined by the boundary line A prime, D prime, and is on the same side as the point C. So, there's some point over here. Let's just for the sake of it, say it's right here. There's some point P over here that when we construct this ray, B prime to P prime to P, then we get that the angle A, B, C will be congruent to the angle A prime, B prime, P, like so. And so, this seems alien, but that's because of course we're sort of considering the possibility that maybe that's not the case. We're then assuming that A, B, C is congruent to the angle A prime, B prime, P. So, I don't want your diagram to have any, lead to any confusion here. I'm not saying that P is interior to the angle A prime, B prime, C prime. It could be, we don't know that. It could be over here. It could be on this ray. There are some possibilities, but for the sake of drawing, I had to draw one of them. Now, what else can we say here? Now, since CBD and P, B prime, D prime are supplements to congruent angles, they are also congruent to each other as well. This angle right here, so this notice here is D prime, B prime, P. This has to be congruent to the angle D, B, C. Because if they're congruent to, if your supplements to congruent angles, then you're likewise congruent with each other. Now, P is on one side of B prime, C prime. Without the loss of generality, we can assume that P is in the same half plane that B prime, C prime, excuse me. We can assume that P is in the same half plane bounded by the line B prime, C prime that A prime is. Basically, what I'm saying here is I can assume, because if you look at the line B prime, C prime, right? I can assume that P is inside this angle. That's what I'm doing right here. I'm saying without the loss of generality, it looks like my picture because if it was over here, if this is where P was, we could be like, oh, let's make this become A prime and oh, we'll make this become D prime.  And so we can swap them around and there's no loss in doing that whatsoever. So we can assume that my diagram is actually the one we're okay with. The diagram we have is acceptable here. P belongs to the interior of the angle A prime, B prime, C prime. Because if not, we could relabel things or we could just provide the exact same argument twice, move in the appropriate parts. Not a big deal. So because P belongs to the interior of this angle, this means that the ray B prime P lives between the ray B prime, A prime and B prime, C prime. Which then implies that the angle A prime, B prime, P is less than or equal to the angle A prime, B prime, C prime. Just like the diagram seems to suggest right here. We do have a total order on angles, just like we have a total order on segment congruence rate, on segments. So again, our diagram is then correct, up to, without the loss of generality. Now on the other hand, if you look at the points A prime and C prime, like so, A prime and C prime, they're going to be on opposite sides of the line A prime, B. So if you think about that right there. Okay, if you look at the crossbar, for example, this ray B prime P must intersect the crossbar somewhere between A prime and C prime. This is the crossbar theorem. And as such, A prime and C prime need to be on opposite sides of the line B prime P. And similarly, the points A prime and D prime are on opposite sides of this as well. Because after all the line segment between A prime and D prime, it contains B, B is obviously on the line determined by B prime and P right there. So we get that B prime sits between A prime and D prime like so. So since A prime and D prime are on opposite sides of the line B prime P, and since A prime and C prime are on opposite sides of the line B prime P, then by plane separation, we have that C prime and D prime are actually on the same side of the line B prime and P. Let me move my diagram a little bit, zoom out. This is actually a really nice argument what we're going to do here, believe it or not. So let's see where were we. So this of course gives us that the segment B prime C prime sits between B prime P and B prime D prime. Basically just justifying that the diagram I have in front of me is in fact valid. So since this ray sits in between the other two rays, that means that the angle, the angle C prime B prime D prime is less than the angle A prime B prime P. So this angle right here is bigger than this angle right here like so. So what we're trying to do is establish a bunch of inequalities. We have this one right here, we have this one right here. And remember this symbol less than or equal to is really less than or congruent to. So we have a bunch of congruences because right angles are congruent to their supplements and we had some other assumptions about congruence. We have these inequalities as well. And so I want you to notice here that we get this chain of inequalities here. The angle ABC was congruent to the angle A prime B prime P. The consequence of angle translation now just we just observed that a prime B prime P is less than or equal to a prime B prime C prime. As we track down where C prime lives relative to the other points, you know, other points A prime B prime D prime and P and things like that. Also, the angle A prime B prime C prime is congruent to the angle C prime B prime D prime because their supplements and right angles are congruent to their supplements. But then this angle C prime B prime D prime, we just argued was was less than or equal to the angle A prime B prime P because again P is the interior point to A prime B prime C prime. But then this angle right here P D P B prime D prime, this is congruent to the angle CBD. Why is that? Because these angles are, we said this one earlier, these angles are supplements of congruent angles, therefore they're congruent as well.  These are right angles so they're congruent to each other. So I want you to notice what we had going on here. We have the angle ABC is ultimately congruent to ABC. So we have this we have this string of congruences and less than or equal to is right. We start and stop with ABC the angle. So some of the times that's congruent that's okay but some of the times you have less than or equal to the angle ABC is not strictly less than ABC. So the only way we could have this string of inequalities that all of the inequalities actually had to be congruences. So these two congruences excuse me these two less than or equal to is actually had to be congruences. That's what they had to be for which then if we track down what's in the middle of the list, we have ABC, which of course is what we start with. But we also have a prime B prime C prime is in there as well. So those two angles are congruent to each other by this transitivity of congruence. And as these are two arbitrary right angles, this then proves Euclid's fourth postulate that all right angles are congruent to each other. And so that brings us so proving Euclid's fourth which kind of sounds like it's a symphony or something like that. Proving Euclid's fourth then finishes lecture 16 in this lecture series so I appreciate you watching it. If you learned anything about angle congruence and things like that please like these videos subscribe to the channel to see more videos like this in the future. And always post your questions in the comments below and I'll be glad to answer them when I can. Thank you everyone. Bye.


Going on everyone. I have one last top 10 list for you guys And this is my top 10 most anticipated films of 2019 so if you're watching this after the New Year's well happy new if you're watching it before yet Still happy New Year's to you got one thing that I do want to address guys is again This is my list. These are the top 10 films that I am personally looking forward to but I want to hear You guys's list down below. So make sure to comment down below Let me know what films you guys are looking forward to the most next year and also make sure that like and subscribe But if you guys are new here, I love making movies. I love talking movies I love talking and reviewing just all sorts of things anything options to do with movies I love doing on this channel. So without further ado, let's get to this top 10 discussion right now Before I get to those top number 10 I do want to give some honorable mentions which I have John Wick chapter 3 really almost got there a lot in I'm really curious about this film God Zilla to I wasn't a fan of the original Godzilla conch skyland was all right But God's a little tube looks really good Spider-Man far from home a spider-man's we're here superhero I didn't include this because as much as I am curious to see how Mysterio is I'm not liking some of the stuff. They're saying about it So kind of got my temptations gone plus the trails and shown up since of recording this Zombieland 2 it's not a mention because I have no idea if this is actually happening. I just read about it I'm hoping it does it's supposed to start filming, but we'll see hellboy like that new trailer really like that new trailer Hobbes and Shaw They're the best part of the Fast and Furious franchise right now and it's plus is directed by the guy who John Wick So I'm on board for that and my last one is Lion King again This is not a mention because I love the animated so I'm kind of sitting there. It's kind of same thing with a lot I'm curious about it. I love the trailer so far I'm loving the looks of all these teasers But I need to truly see the film before I can really judge anything else But like I said, that's my honorable mentions. So what's my number 10? Well, my number 10 is actually be Pokemon Detective Pikachu or maybe it's the offset Detective Pikachu Pokemon whatever it is I'm really excited about this movie I wasn't initially when they announced it but after that first trailer I was sold and on board with this film the fact that you have Detective Pikachu Pikachu himself becoming the star of this and just Ryan Reynolds voicing it kind of seems weird But it just works that trailer seems like what happy time murder should have been But this one looks better and I'm all down for it I'm it could be crap. It could be one of the worst films next year. The CGI looks cool for the Pokemon I'm all for it. I can't wait for detective Pikachu Which brings me to my number nine, which is it chapter 2 now The first it was one of my favorite films of that year It brought me closer to it made me meet a lot of youtubers Especially Cody Curtis who you see on this channel a lot and I am so excited for it chapter 2 It falls at number 9 though because I haven't seen a trailer I haven't seen anything really for this film yet, but I'm still really curious about it Stephen King thing it's adapting from that that first one we have it's a film back to back new cast love the adult cast love the director That's on board for this. I love what he did with the original one. I'm hoping this one's scarier, but again that number nine I'm really excited for it. I'm psyched I'm curious to see if Penny wise and what they'll change from the books this time I mean I'm wondering if we're gonna get that talking turtle Yeah, number eight is the Joker film with walking Phoenix and Todd Phillips directing this now I'm dying to see his jogging walking Phoenix's hands down the best actor working today And I mean just because Daniel Day-Lewis retired I think walking Phoenix is the best actor working today and him playing the Joker is everything that I could have ever Wanted Todd Phillips directing after war dogs do whatever you want Todd Phillips. I'm on board for it. I'm hoping it's rated R. I'm hoping for good things. I don't know I'm a little nervous, but I'm still excited for this film overall the makeup looks good Everything that we're seeing behind the scenes looks great Still no trailer though. I don't expect one for a little bit longer Maybe that'll bump it up a little bit more on my most anticipated right now It falls falls at number eight. You know number seven is gonna be Star Wars episode nine Now this would probably have been bumped up if I had seen a trailer or any footage or photos of it so far But I haven't there hasn't I don't think we'll get anything till Star Wars celebration I'm one of the people who enjoyed the last Jedi initially when I came out a little bit this point I saw it again really liked it actually kind of loved aspects of it I actually love a lot of aspects of it, but it still felt Weird after Force Awakens, which I contend that Force Awakens is one of the best Star Wars films of all time Given I know that's a little controversy to some people, but I'm looking forward to episode nine And how they ended and where JJ takes it next. I'm curious It has my speculations has my theories But in the end of the day when I made all those for Force Awakens and then I got last Jedi It just got thrown out the door, so I'm not really theorizing on this I just want to see the film and judge it for myself brings me to number six Which I will be seeing very very soon and that is M. Night Shyamalan's glass now I'm a big fan of M. Night Shyamalan put aside after earth definitely put aside avatar. I enjoy what this guy has done Six cents great unbreakable masterpiece split Fantastic signs my favorite film personally of his I like the village. I like leading the water I like this guy's creative mind and I even like the visit and I understand not a lot of the glass to register people don't love But I happen to like what M. Night Shyamalan does. I think he's a good director I think split got him back on the market. I think glass looks excellent. I love unbreakable I loved split and I'm curious to see how this trilogy ends off, especially bringing back Bruce Willis David Dunn. I'm so pumped bring me it now Coming in at number five is a film that I've seen no footage for just a couple photos But I know who's in it and I know who's directing it and it's Quentin Tarantino's new film once upon a time in Hollywood I get people do not like Tarantino at this moment because of some of this controversial stuff with Luma Thurman But I have to say when you have Brad Pitt, Leonardo DiCaprio and a whole bunch of bigger cast with Margot Robbie also getting thrown in there And it's throwing it back into the old days of the Hollywood days I'm all on board for this. This kind of takes me back to the days of when Tarantino would make Pulp Fiction, which is My second favorite Tarantino film. I just love seeing Tarantino's films It's an event for me the dialogue the stories everything that happens within the film I'm just dying to see this film as of right now, especially since this is his first film not a part of Harvey Weinstein It's gonna be curiously different to see what a studio lets him do and I think the studios are probably gonna like do whatever you want You're Tarantino and I get I'm one of the people who like hatefully I loved Django and Shane and I'm a big fan of Tarantino So bring me it. It's a Tarantino film. It's an event film for me But coming in at number four is gonna be Shazam Shazam is hands down one of my favorite DC characters I'm one of my favorite superheroes of all time. I was super excited for this film when they announced that Pony Smasher David F. Sandberg was gonna be doing it I was all for it even more excited Then you announce that Zachary Levi who I think is one of the most underrated actors in Hollywood I hope this role does what Chris Pratt what Star-Lord did for Chris Pratt back in The first Guardians of the Galaxy. I think this is gonna do what did for him I love Zachary Levi and Chuck it's one of the best TV shows ever made if you've never watched it if you're a geek You're a nerd you're gonna love it, but I'm so pumped to see what he does with Shazam I'm so excited Shazam again is one of my favorite superheroes of all time that first trailer Exceeded any expectation. I wanted threw it out the window. I don't need to see anything else I just want to be there first day. So count me in in number three Oh god, I wanted this to be number one But the two trailers came out before this and it's Toy Story 4. Toy Story 4 is my number three It's one of my most anticipated films of next year. Biggest reason being is I am the biggest Toy Story fan out there I love Toy Story to death. It's literally my favorite franchise of all time and one of my favorite films of all time and I just have grown up with Toy Story since I was literally born Woody and Buzz have always been a part of my life and I get it a lot of people don't think we need this and I'm not saying We need it either But I'd be lying if I don't want to go on another adventure with these guys I'd be lying if I don't want to I'm about to start crying and tearing up because I'm so excited for Toy Story 4 I don't know what the stories. I don't know if they flip flopped the Bo Peep stuff apparently she's still in it I don't know. I just hope whatever this is about is that it works and it doesn't need to Tie in to the franchise But it just is a nice addition and a nice story that makes me just my heart feels so warm and it's not a cars too I don't think it will be I'm so excited though story story for come on And I know a lot of people aren't gonna be excited for it, but come on that that trailer just I'm on board. I'm on board with everything they do with this film in number two and a couple days ago This was really low on my list. I like probably number 10 But it got pushed up out of this trailer and that is us Jordan Peele's new horror film and I'm a horror fanatic I am all on board for horror and get out was one of the most surprising films I had seen that year and it was also one of my favorite films of that year and now I get us Which looks more conventional horror, but different it looks insane and I'm all for it I want to see us right now that trailer is one of the best trailers. I've seen in the last couple of years and Now Jordan Peele can just have my money. Just let me throw it at the screen. Just take it It's only a couple weeks away. Get me there now What is my number one and without it being any sort of surprise? It's Avengers 4 end game I went flip-flopping between a lot of these films, but I looked this list and I said damn I'm like if I had to pick three films to see for the rest of the year It would be us toy story for and Avengers end game And then I was like damn if I had to choose only one of those to see this year And I couldn't see any other films. It would have to be Avengers 4 end game Us being really close to it But the fact is Infinity War left me with my jaw on the floor and not knowing what's gonna happen the first trailer for Avengers 4 left me So many questions, but it was like a nice little short film getting me to like okay now. I'm on board Just give me the film. I don't need to see any other trailers and usually I'll watch every other trailer But I'm not watching anything else for Avengers 4. I don't want to I don't want to see the poster I don't want to see anything. I want to go straight into this film So surprised and so excited of what's gonna happen next and that is what I'm excited For I had no nothing about it. I've seen some set photos. I've seen some theories I've made my own theories, but I'm ready to just throw them out the window and just go into this film and then get some different type of stuff I I just think end game. I hope it lives up to my expectations It's my number one most anticipated film of the next year And I think that's gonna be out for a lot of you guys unless you're not Marvel fans And maybe us might be up there for my friend personally. That's how it is, but it's freaking end game I have to be that excited but most anticipated film of 2019 Let's talk about it. Tell me your list down below top 10 honorable mentions Let's discuss it guys and again if you're new here hit that like and subscribe button Then also hit up sandwich on films down below cuz right down there you guys can get into advanced movies screens You can check out some movie news and even some movie reviews, but guys until next time stay glass


Producing healthy seedlings is a challenge many farmers face. To help meet this challenge, scientists from the International Rice Research Institute and the Tamil Nadu Agricultural University in India have developed a best practice in crop establishment, growing seedlings in a modified mat nursery. In this video, you will learn how to establish a modified mat nursery and its benefits and limitations. But first, what is a modified mat nursery? A modified mat nursery establishes seedlings in a layer of soil mix arranged on a firm surface. Seedlings are ready for planting within 15 to 20 days after seeding. But what are the advantages of a modified mat nursery over traditional wet bed filled nurseries? First, the modified mat nursery uses less land and can be established right in your own backyard or in a small section of your main field It requires fewer seeds and lower amounts of inputs, such as fertilizer and water, thus reducing nursery costs by up to 50% Separating seedlings before transplanting is easier, thus minimizing root damage And most importantly, a modified mat nursery produces healthier and faster growing seedlings, which produce higher yields Now that you know the benefits, here are 10 easy steps to prepare a modified mat nursery Step 1 Use good quality seeds To plant 1 hectare with 1 to 2 seedlings per hill, 20 cm apart, use 12 to 25 kg of good quality seeds with a minimum germination rate of 80% It is important to use good seeds because they result in a lower seed rate, more uniform germination, less replanting, fewer weeds, healthy seedlings, and 5 to 20% higher yields Step 2 Pre-germinate your seeds Soak your seeds for 24 hours. Some varieties may need a longer time to bud Drain the water after 24 hours and keep the seeds moist by covering them for another 24 hours By this time, the seeds will have sprouted buds and the first seed root will be about 2 to 3 mm long Step 3 Prepare the soil mixture You need 4 cubic meters of soil mix for every 100 square meters of nursery area Mix 70 to 80% soil, plus 15 to 20% well decomposed organic manure, plus 5 to 10% fresh or charred rice hull That is, mix 7 pails of soil with 2 pails of manure, preferably chicken manure, and 1 pail of fresh or charred rice hull Step 4 Prepare the nursery area Prepare a 100 square meter nursery area for every 1 hectare to be planted Select a level area in your backyard or in the main field Level your seedbed and spread banana leaves or plastic sheeting on top to prevent the roots of the seedlings from penetrating into the soil Step 5 Lay the soil mixture You can do this with or without using a wooden frame If you use a wooden frame, place the frame on top of the banana leaves The frame should be 50 cm long, 30 cm wide, and 4 cm deep, divided into equal segments Then, fill the frame almost to the top with the soil mixture you prepared Step 6 Sew the pre-terminated seeds uniformly Sprinkle soil and pat gently to embed the seeds at about 2 to 3 cm into the soil Then, sprinkle water immediately Step 7 Remove the wooden frame and repeat laying the soil mixture and sowing seeds until you have finished the whole nursery area For those who prefer not to use a wooden frame, you can use banana stalks instead Simply create a fence around the nursery using banana stalks pegged with wooden sticks Pour the soil mixture inside and level before sowing Cover the nursery with banana leaves or plastic sheets once you're through Step 8 Water the nursery twice a day for 5 days and keep it covered with banana leaves or rice straw to keep the soil moist Make sure that you protect the nursery from heavy rains for the first 5 days after seeding Step 9 Five days after seeding, remove the cover and flood the nursery Maintain a 1 cm water level around the mats, then drain the water two days before removing the seedling mats for transplanting If your seedlings show yellowing after 7 days, it means they lack nitrogen You can solve this by sprinkling the seedlings with 0.5% urea solution Simply dissolve 1.5 kg of urea in 300 liters of water to sprinkle over 100 sq.m Step 10 About 15-20 days after seeding, your seedlings are tall enough and at the ideal 4-leaf stage, ready for transplanting Now, you can either transport the seedling mats as such or pull them gently and transport them to the field Now, let's go over the 10 easy steps in preparing a modified mat nursery Step 1 Use good quality seeds Step 2 Pre-germinate your seeds Step 3 Prepare the soil mixture Step 4 Prepare the nursery area Step 5 Lay the soil mixture using a wooden frame or banana stalk fence Step 6 Sew the pre-germinated seeds Step 7 Remove the wooden frame and repeat laying the soil mixture and sowing seeds until the required nursery area is completed Step 8 Water the nursery twice a day for 5 days and keep it covered with banana leaves or rice straw Step 9 Five days after seeding, remove the cover and flood the nursery Maintain water at a 1-centimeter level around the mats Step 10 Pull the seedlings 15-20 days after seeding and transport them to the field Now, you are ready to prepare your own modified mat nursery and grow strong and healthy seedlings


Can you change the narcissist? Can you make them become more understanding? More easier to deal with. More cooperative. The short answer is no. You cannot change the narcissist or anyone else. We can only change ourselves. We have to make the decision to change. For someone to change, there usually has to be an incentive. There has to be something that motivates or encourages them to change. There is no incentive for the narcissist and that is why there is no change. They live in a fantasy world which they have created in their own minds. It's very superficial. It lacks any real meaning or purpose. But it is the world that they have chosen to operate in. They will not entertain anything that is realistic. They will not entertain anything that is accurate and true to life. The narcissist cannot bear to live in reality. They cannot deal with the daily life issues and problems that come along with living in reality. They cannot accept the truth and reality of the situation. It's too painful for them to deal with. They are very insecure. So they have to control you. Their control over you provides them with a false sense of security. It helps to prevent them from experiencing any pain or discomfort. It's escapism. They are constantly seeking distraction and relief from their unpleasant reality. They will do whatever they have to do to avoid facing reality. Narcissists function through a system of coping and defence mechanisms which are designed to protect them from reality. The narcissist is heavily reliant and dependent on this system of coping and defence mechanisms. It is designed to help them to escape, dodge, avoid, lie, deny, project, blameshift and gaslight. Whatever it takes to escape the truth and reality of the situation. They live in a constant state of fear and paranoia. They're always anxious or stressed out. They're always anticipating the worst-case scenario. So they try to balance this out by controlling everyone and everything around them. They try to preserve certain situations to work out in their best interests by being controlling, by directing your behaviour at the course of events. You may think that you are in a relationship with the narcissist and it is fair and equal. But it was set up from the beginning to be unfair. It was set up for them to defeat you or do better than you. They were hiding their true motives and intentions from the beginning. They were reliant on you being unable to read their true motives and intentions. They have to make it so you don't know what they're really about. You don't know what they have in store for you. They have to create this puzzle or mystery of who they really are. Something that is difficult to understand or explain. Something that you're trying to figure out and then they trick you into believing something about them which really is not who they are until you are then doing everything you can to please someone who doesn't even value you. They cannot respect or appreciate the value of someone who is real and genuine. You may often engage in long conversations with them that last longer than is usual or necessary. Trying to prove a point or make progress towards achieving something you may think you're finally going to be in agreeance but really, you're just wasting your time. They're not going to consider anything they've done wrong. They're not going to consider something where they hurt or disrespected you. They're in survival mode. They're only concerned with their own survival and their own feelings. Their own pleasure or satisfaction. They don't have the capacity to consider you. All they can do is take. They only entertain the fantasies and desires that they have in their minds.  They might tell you that they do but it's just intended to create a pleasant and acceptable appearance. It isn't genuine. You may wonder how they could make the time and effort to enter your life and do everything that they did to lock you in without it having any meaning or significance. They had to do it for their own survival. It was self-preservation. They had to protect themselves from danger or harm. They might try to make you believe that they're going to be with you long term. They will future fake and even make plans for the future with you and this could give you the wrong idea or impression. If you think that you're really getting to know them and you're really building a life with them you won't even suspect it because you're assuming that they're always going to be around so you're not looking for signs of them not being real with you. You're not looking behind the scenes at the other sources they're entertaining the other sources they're preparing for when they finally leave you. Narcissists are expert manipulators. It's easy for them to pretend like they love and care for you. It's easy for them to pretend like you're a matter of interest or importance to them but they can do it in a way where you won't even notice. These are measures taken to offset or minimize damage to their reputation, credibility or image.  They know the effect that it is going to have on you. They know that it is going to dramatically change how you live. They've done this before. You're not the first person they've done this to. They believe that any person is replaceable. You may think that the narcissist was exclusive to you. You may think that they were loyal.  If a person is constantly thinking that they can do better than you or they can have better than what they have with you then they are already demonstrating a lack of loyalty. It all starts in the person's mind and if a person thinks that they can do better or have better than what they have with you I can assure you that this will soon be followed up with action because remember, they're in survival mode. They're only interested in their own survival. They're only interested in their own pleasure and satisfaction. The narcissist cannot be loyal to you or anyone else because everything is about them. They're only focused on how they can get what they need. You're not in a relationship with a narcissist. There's no such thing as a relationship with a narcissist because they're not connected to you. It's your turn to be involved with them.  They don't see it as a problem. It's entertaining for them. Being with one person is a problem. It deprives them of their freedom but they never told you this at the beginning. They deceived you just as they will deceive their new source because nothing ever changes with them. They have no incentive to change because this behavior always gets them what they want and it minimizes the risk of rejection if they can just be whatever they think the source wants them to be. Thank you for watching. I hope this video resonated with you. Please like, comment, share and subscribe. Click the bell icon to receive notifications for my future videos. If you're a lighted tonight, my PayPal link is in the video description. Thank you for watching and I'll talk to you soon.


For this example, we have an IO device that listens to addresses around BCDUDAD. But its decoder is going to ignore lines seven and eight. So it will actually listen to more than just this one address. It will actually be able to listen to several different addresses. And thus, it can also implement multiple different operations. So if we're interested in exactly which address is this device can listen to, we'll need to figure out which ones are line seven and eight. Since we normally count bits starting from the least significant and moving to the most significant, the very rightmost bit in that rightmost D is bit zero. So bit three is the leftmost bit of that rightmost D. Then we're starting to get into that A. So line seven will correspond to the leftmost bit of the A, the most significant bit there. And line eight in turn corresponds to the least significant bit of that second D. So all of the addresses that this device will listen to will be required to have the same 30 bits except for bits seven and eight. So I'm going to begin by just writing down four copies of those 30 bits. So I have two hexadecimal digits in here that I haven't specified yet. I have the most significant bit out of this hexadecimal digit and the least significant bit out of this hexadecimal digit that I still need to work out. Since each of those bits can be either a zero or one, I'm going to have two different possible options for each of these spots. So I can either have an A here or I can have whatever the A is with the eight bit turned off. A is ten, so if we ignore the eight bit, we would still be interested in the two bit and having the one and the four bits turned off. For the D, we're interested in the least significant bit. So as a D, that least significant bit is already a one. So I'll go ahead and put D's in here. And you can notice I've got my BC doodad back. And if I take the one bit from the D and I turn it off, then it's going to be a C. So D minus one is C. So these other two have C's in them. So these are the four different addresses that this device can listen on. And as you'd expect, it does include the BC doodad, but it includes three other addresses that are slightly different. They each differ in those two bits. It's seven and eight.