Hi, guys. So in this video, we're going to be looking at how we can go about copying an array into another array in Java. And specifically, we're going to be looking at the difference between a reference copy and an instance copy. Now, we talked about reference copies in our video on creating arrays, which is the first video in this series on arrays. So I'll put a link to that video in the description box below. But just to recap, if we create an array such as this one, and we then create a new array that we set as equal to our first array, then both of these arrays refer to the same instance, and they will both have the same ID. And 21 here is just an example. Furthermore, if we change the value of one of the items in one of the arrays, for example, B2 equals negative 50, then that same item in data will also be changed because both B and data refer to the same instance. So this becomes negative 50. So that's reference copies. But what if we want to avoid this situation? So what if we want to create a clone of data that we can then manipulate and change without worrying about our new array B affecting our original array? So in other words, how can we create a clone of an array without having both arrays refer to the same instance? Well, what we're going to do is create an instance copy. So let's say we have here an array x, and we want to create a clone of x. Well, we know that the clone will have the same number of items as x. So we can start by creating a new array with this with length equal to x dot length, like so. And then for each item in y, we're going to simply copy the current item of x into the current item of y. This will result in x referring to an instance that has four items. And y referring to another instance that also has four items. So now if we change y to to negative 50, y two will be changed. But x two will remain the same. So that's the difference between a reference copy and an instance copy. One more thing to note, I mentioned that when we create a reference copy, both arrays have the same ID. But when we create an instance copy, both arrays will have different IDs indicating that they both refer to different instances. So now let's just pop over to Eclipse so that we can confirm this using the debugger. All right. So first of all, you can see here I've just created our array data. I've then created an array B, which is just a reference copy of data. And I've then changed the value of B to to negative 50. So let's run this through the debugger so we can see what happens step by step here. All right. So first of all, we have our array data, you can see it has an ID of 22, and those are its four values. If we move on, we have B. Now you can see that B also has an ID of 22 indicating that it is indeed a reference copy of data. And you can see it has the exact same items it refers to the exact same instance as data. Then we step through we change B to to negative 50. And you can see that because these arrays are reference copies of each other, data to is also changed to negative 50. And then at the end, we print out data to and you can see in data was negative 50. All right, now let's just look at the next example below. I'll just hide this. And we'll just pop some break points in here. So you can see here I've got our array x, just like we saw in the example earlier. We then have the array y, which we are creating as an instance copy of x. Here, we're just filling it with all of the values from x. And then in the end, we change y to to negative 50. And we'll see what happens. All right. Okay, so first of all, we have our array x ID of 22.  Now, when we create y straight away, you can see that y has a different ID. Because in this case, we have created an where well, we're creating an instance copy. And you can see at first, since we haven't filled y yet, it just is each item in y is set to the default value of zero. All right, then in the for loop, we just move through. You can see here step by step, we're filling y. We exit the loop. Now we're going to change y2 to negative 50. And when we do this, we can see that y2 has changed, but x2 remains the same. We print out x2 and indeed it is 20. So that's just to give you a clearer look at what we were looking at earlier. So that's it for this video. I hope that you now have a good understanding of the difference between reference copies and instance copies of arrays in Java. Thank you for watching and have a great day. Bye.


Now, a piston cylinder assembly as in the figure contains 1 kg, 1 kg of saturated steam water mixture with a quality of 0.6 at 100 kilopascals. It is gradually heated until it becomes saturated vapor. So, x2 equal to 1, saturated vapor. At this point, at this instant, a spring, ok, so that is when it is heated, basically it actually moves up and becomes saturated vapor. At this point, a spring with a spring constant of 11.49 kilo Newton per meter just touches the top portion of the piston without exerting any force. So, till this point, it is constant pressure process. P2 is 100 kilopascals, so that is the state 2. The piston has negligible mass, that is m mass of the piston is approximately 0 and its cross sectional area is 0.1 meter square. Now, after the spring just touches the top portion, the heating is continued, heat transfer is continued until the steam attains the pressure. Now, P3 equal to 200 kilopascals, so pressure increases. Why pressure increases is because of the spring is now compressed and that exerts force on the piston. So, the pressure increases, calculate the work and heat interaction in the final temperature of the steam. So, this is the problem. At mass is pressure, so initially only at mass is pressure of 100 kilopascals acts and when the state 1 to state 2 is a constant pressure process, so that is in this. So, let us do the calculation v state 1, so saturated state, saturated liquid vapor mixture at 100 kilopascals and the quality 0.6. So, these are the two things which we know. So, go to the tables now, saturated tables here, so 100 kilopascals is 1 bar, so this is the point here. So, I can take the value of vf vg uf ug from this table that I will do now, so we can say v1 will be equal to vf plus x1 into vg minus vf, so this is equal to from the tables I have taken the value of vf etcetera, 1043 0.001043 is vf value plus 0.6 is the quality into vg. So, vg is 1.694 minus vf is 0.001043, so that will give you v1 as 1.0168 meter cube per kg, so that is the state 1. State 2 is when the pressure just touches the spring constant pressure process, so p2 is 100 kilopascals again, but it has now become saturated vapor, so that is x1 equal to 1 that implies v2 will be equal to 1.694 meter cube per kg and u2 will be equal to 2506 kilojoule per kg. Here also I can calculate u1 ok. So, u1 from this I can calculate u1 as uf plus x1 into ug minus uf which is equal to 417.3, you can take the uf value from tables are 417.3 plus 0.6 is the state 1 x1 into ug is 2506 minus 417.3, so that will be equal to 1670.5 kilojoule per kg. The state 2 u2 equal to what? ug at 100 kilopascals that is 6506. So, now state 1 and state 2 are fixed with properties for evaluated for v1 and v2 u2. So, now for this I can find the work interaction constant pressure process. So, that is m into p into v2 minus v1 which is equal to 1 into 100 into 1.694 minus 1.0168. So, this is equal to 67.72 kilojoule. Now, q1 to 2 equal to w1 to 2 plus m into u2 minus u1 which is equal to 903.2 kilojoules. So, this is when the system is further heated what happens piston rises compressing the spring correct. So, that means, here the pressure increases linearly. So, what is the height the pressure has gone final pressure 3. So, this is the 2 2 3 process is called 2 2 3. So, pressure at the final state is given in the problem as 200 kilopascals here 200 attains the heat. So, until the heat attains the pressure of 200 kilopascals. So, p3 is given as 200 kilopascals that is done. Now, but what is the height which is reached to find the volume correct what height has gone. So, this p3 is equal to p atmosphere plus p spring because the mass of the pressure is negligible. So, there is no pressure in part by the mass. So, what I can do here is 100 kilopascals this is 200 is no 100 plus for the spring I can say k into h divided by area which is equal to 100 plus k is given as 11.49 kilo Newton per meter into h which I do not know divided by area of processing is 0.1. So, using that I will I will get h equal to 0.87 meters. So, the spring is now compressed by 0.87 meters. So, from this I can get the volume what is v3 v3 will be equal to area v3 can be calculated as v2 plus h into area correct. So, that is equal to that will what is v2 we will go back and see what is the value of v2 we have got small v2 as 1.694 into mass is 1 kg. So, capital V2 will be 1.694 meter cube. So, this is 1.694 plus 0.87 into area of cross section is 0.1. So, that will be equal to 1.781 meter cube per kg. So, this is the way you calculate this. I can say v3 specific volume will be v3 by capital v3 by m, but m equal to 1 here. So, this will be 1.781. So, this is actually meter cube with total volume and here this will be ok. So, I got the state 2 fixed as pressure as 2000 say 200 kilo Pascal and volume is 1.781 meter cube per kg ok. Now, this is the situation here what is this state? So, you have to go back to the tables 200 kilo Pascal. So, I go here 200 kilo Pascal I find vg is 0.886, but v2 is 1.781 ok. So, we can say vg at 200 kilo Pascal equal to 0.886 meter cube per kg. v3 is greater than vg which implies state is super heated vapor. So, we have to go for the super heat tables and get the values. Go back here 2 bar table ok. Now, please see the value given is 1.781 exactly we have this. So, 2 bar specific volume is 1.781. So, this is entry straight away no interpolation required because the value which we got for v3 is same as in this entry for 500 degree centigrade. So, u is 3131 kilo joule per kg. So, for v3 equal to 1.781 meter cube per kg at 2 bar ok t equal to 500 degree centigrade and u equal to 3131 kilo joules per kg. So, this is the state. So, let us say u3 t3 500. So, that is the state here. So, now we can find first law q223 equal to w223 plus delta u223 ok. Now, how will you find w? w is basically the work done by the spring and work done by the atmosphere that you have to take into account here ok. So, this work is minus of w atmosphere plus w spring. We can also find a pressure no. So, pressure linearly increases. So, we can take an average pressure in delta v that also we can do or it is p2 plus p3 by 2 because pressure from 2 to 3 increases linearly. So, this is somewhat average pressure into v3 minus v2 that also we can apply. So, we can do this. So, what is p atmosphere? Sorry work atmosphere work atmosphere will be equal to minus p atmosphere into delta v. So, which is equal to minus 8.7 kilo joules. Similarly, pw spring equal to how much? Half minus of k h square which is equal to minus 4.35 kilo joules. So, I know these two values. Now, I can say w223 will be equal to 13.05. Just add these two 13.05 kilo joules plus m into m is 1 into u3 3131 minus u2 2506. So, that will be equal to 638.05 kilo joules. So, these are the heat and voltage. So, total q if you want you can add this q122 plus q223 that will be total heat. Total work is w122 plus w223. So, this is the problem here. So, we will draw the diagram, tv diagram. Now, see this what is the initial state for 400 kPa. And the quality is 0.6. This is state 1. Here x equal to 0.6. State 1 is 6. State 2 is x equal to 1. This is state 2. x equal to 1. So, that is done. Then what happens? The 200 kPa something like this. So, now what is the temperature we have seen? It has reached 500 degrees. So, 500 degrees is somewhere here let us say. So, that is state 3. Now, this linearly increases. So, state 1 to state 2 constant pressure process. State 2 to state 3 there is an increase in the pressure due to spring compression. So, finally, this is for 200 kPa. So, 200 kPa this is 500 degrees centigrade that is the state. So, this is what? 100 kPa it is 99.6 degrees centigrade and this 200 kPa saturated temperature is 120.2 degrees centigrade. So, this is the way you have to show these states. Initial state saturated constant pressure process occurs until saturation where saturated vapor is got. Then the pressure increases linearly and reaches the super industry. So, this is the problem.


Alright, I might just start then. Hi everyone. My name is Shannon Lee and I'm a senior content designer here at Pragma. Thank you Michael and Marge for organising this event. I want to also thank the sponsors, Ironstar, Annex, Jetbrain and of course Pragma for putting on a good spread. Round of applause for our organisers and sponsors. So a little bit about me. I've worked on several website enhancement and redevelopment projects over the years. Namely have done things for the Australian Cyber Security Centre, also the Commonwealth Environmental Water Holder Content Development and more recently the Clean Energy Regulator working on a project at the moment to redesign their website for next year. Also prior to this I worked in a not-for-profit government sector for over ten years as well. So I led the basically Communications and Branding for the Australian Water Partnership which is a DFAT initiative specialising in overseas development aid in the Indo-Pacific region and so I was responsible for developing and maintaining their website communications and branding at that time. So my talk today is about streamlining content operations for Drupal. And I have an Aladdin theme because I feel like gather content is much like Genie from Aladdin. It makes your life so much easier and I believe there's even a Genie here. There you go. So it was Seren Dippity. It was also one of my favourite animations, animated films growing up so I think that all made sense to me and hands anyone who was really into Aladdin as well. Oh good. Excellent. Same era. So like the Genie Gather content is a whole new world of content development and migration that streamlines content ops for Drupal and here at Pragma we've used that across many projects. And content governance, let alone migration is a pretty tricky task as well so you might be thinking if only there was an easier way and there is. So who here has anything to do with developing, migrating or publishing content at all? Yeah, quite a lot of you. Who here has had anything or worked with anyone who has to do that? Okay. Great. So I think I've probably captured the entire audience there almost. So we know that there are many apps and plugins for migrating content to Drupal but today or tonight I'll be focusing more on the high level overview of what Gather content can do and how I've used it with some brief examples of Drupal integration noting that I'm a fairly recent user of Drupal so I started this year. So by the end of the talk though I hope that you will all feel pretty excited and empowered to adopt Gather content for you and your clients because it really is a game changer. So please join me on this journey. So I'll just quickly summarise, I'll go over some traditional tools and workflows then I'll go deeper into Gather content and the benefits of that and I'll touch briefly on the migration to Drupal and then I'll share a couple of tips and tricks I've learned along the way with Drupal and I'll do a quick summary after that. So traditional tools and workflows so much like sand as my friend the genie explains, Microsoft tools are everywhere. The Microsoft ecosystem contains many useful and powerful tools for organisations but there isn't one particular one on its own that manages the entire content life cycle. There's drafting and reviewing in Word docs for example and tracking and spreadsheets, there's communicating via email and through all these different applications it tends to lead to fragmented processes for example all these docs, spreadsheets and emails are a recipe for errors and delays using Word templates is really great for writing and reviewing we all know that and as Sharon pointed out it has some great consistency and design sort of ease with that but it means also you have to migrate everything manually across Drupal as well and you also have to save it somewhere and make sure that you manage file sharing and there's a lot of human error involved. It's also hard to get a really clear overview so there's no sophisticated tracking capability in Word SharePoint and emails for example and you need to track down who's responsible for a piece of content at any one time and there's no really easy way to share progress with stakeholders. There's content bottlenecks and so for example people are unsure of who's action in content in an email chain and attachment or share links and context is buried in email threads and there's filing and versioning control issues happening which can impact your deadlines and there's also tedious content migration so for example you need to manually edit and create content in Word and you need to manually transfer it to Drupal as well. So once again it carries that double handling and a lot of delays but what if you don't have a luxury of gather content or you need some time to get it approved so here's some alternative. I'll give you an example of how I've managed this in Word and so using Word can become as in but you can also do some nifty things with Word developer tools and this helps more with content development rather than migration itself. So this is an example of a template that I've used creating content controls using the developer function in Word. So this is like details for the page, you can put all of this into your Word doc so for example you can put information here for date and all of the things listed here there's some controls around dates and checkboxes and things like that and some structured data as well that you can specify and instructions on how to fill out the template as well so which has information and links to writing and style guides you can put all the information you want in there for Australian government style manual for example organizational guidelines and links to those as well and further on down here I've got a components list as well which maps what page types they can be used on and these will match the component names in Drupal as well so it lists out what page types they're on and also you've got a component builder so this is what options and fields for a component are available what's a required field, character limits, help text, that kind of thing how to fill up the field as well so there's some nifty things that you can select here that ensures that you get that structured content and there's also some repeatable sections as well so for example here clicking on the plus icon in the bottom right adds another heading and body area for an accordion group so they're just some of the things that you could do in Word itself if it's a bit of a hurdle to get to gather content but noting that there's finally also a content area which then you can copy and paste the components into so you can manually copy and pasting across but you're creating the flow of the page at that point so it's pretty helpful for structured content but again it's a manual process of reviewing and approving and migrating and it's a one-way transfer to Drupal as well and be aware that some of your clients may not be okay with the macros and the security issues around that so that's just a note so gather content now I'll show you what your world could be like so why gather content? well it gather content GC for short has powerful content development features it works with Drupal version 7 onwards it's easier to set up and use and it alleviates those issues of those content pain points that I mentioned earlier so this is a headless CMS that uses an API to deliver content based on REST API which means it's a back-end only content management system acts primarily as a content repository and this just shows you what other platforms it currently integrates with it's one platform instead of six tools so we know Office 365 is pretty powerful and it has powerful tools in its ecosystem however to replace this functionality you would have to use Word, Excel, OneDrive, Email and Calendar and throw in Trello as well for that project management in comparison gather content allows you to manage your content operations from draft stage to publish to all from one platform so that will reduce errors and double handling as well and that's all done in GC and then migrated via that API then you have templates and repeatable components as well so it provides those guardrails for creating structured content making it clear to content authors what format content needs to be in and then you can map that to Drupal paragraphs and nodes and so that will save your team time and it will ensure some consistency as well so just zooming in on that as well you can set that fairly easily in gather content and then those are the components that can be reused and repeated and mass updated in one area and then you can embed your content style guide and migration related syntax in your editing environment as well so that all content authors have everything they need at their disposal to ensure that they can follow those consistent guidelines as well it will also offer a collaboration custom workflows as well so it makes it clear what everyone is responsible for and when and you can clearly understand the status from this image here what needs to happen next and across different stakeholders as well and so it's really easy to see that if you've got some production bottlenecks where they are and obviously you can set those deadlines as well and it does some other cool stuff so I think they're pretty self-explanatory I won't go into that in too much detail so a little bit about the gather content Drupal integration that we've been working on currently so this is the current project here while there is an out of the box GC module that works with Drupal it wasn't fit for our purpose so we ended up using a custom migration for our current website redevelopment project so simply put we needed more flexibility with how the content was mapped to Paragraphs in Drupal and so that's just a view of the API configuration there this is an example of what Brynn and the team have been working on this is the configuration area and the plan is to map out the content using simple syntax as shown with the double curly braces start and end tags and these are just some settings for the API and then in the gather content editor view we use those tags to map the pieces of content to the Drupal components there so for example the image and call out tags in there this is just the data mapping screen that's going on behind the scenes so this is a push simple one click push to Drupal and next this is where it ends up in the editor view in the back end so that was the broad strokes of what we've been working on and these are just some simple tips and tricks I don't have a specific screenshot for these because I don't have access to the back ends of these anymore but one for example is flagging errors through formatting rules to help validate content this is something that March set up in a previous project and she just made sure that the WYSIWYG editor could display text as read if there was any heading tags that were also in bold as well so it just made sure it eliminated just excess markup and ensure that accessibility as well that when we were copying content across from documents it was copied across correctly so this is more in a very manual process situation but we found out that was really useful for just ensuring that we had a good efficient and accessible workflow we also, this is something I worked on specifically was adding some help text on the field labels in the back end of Drupal so you can embed your instructions into the back end making sure that it's in context on top of fields again providing somewhat of a guardrail system for those content authors and then again embedding a guideline for content authors in the editor sidebar so this is something again that March helped me with but this also ensured like if you're developing star guides for your content authors you want to make sure that they're referring to them so we found it useful to create that link in the sidebar there so everything again was in context always enforcing that consistency so in summary, it's possible and worthwhile to convince your clients to adopt gather content because we've actually used it for many large federal government organizations already so it provides that rich tapestry of features such as better content governance integrated workflows and structured content that can fast track your content operations and so it really is like a magical carpet ride to a successful website builder enhancement Thank you Thank you, Shannon Questions for Shannon Oh, sorry about that Hello Hi So I used gather content module a couple of years ago and one of the problems we found is that you couldn't save directly to paragraphs and I guess it's similar to the inflexibility that you spoke of so what we had to do is write a custom module so we saved it to a separate content type and then when it saves, it would then create the paragraphs and then save it on the page what did your custom module do to alleviate the issues with paragraphs? Okay We are currently, I am will throw to Bryn so we are currently in the midst of still developing that You don't need to stand up, you don't need to No, I'm not standing up, obviously So, like you said, some of the limitations of the module that it doesn't... Well, it currently does map to paragraphs but gather content has limitations on its end which doesn't allow us to have dynamic page templates of components So we used the curly braces syntax and then we wrote a custom module that grabs the content from the API and using those mapping things that we saw before it allows us to write basically a schema in our module around each component it creates a JSON file with that structured content and then we run a Drupal migration which is also a benefit that the migration the gather content module doesn't have it uses batch processes and not a Drupal migration under the hood How do you reach out to the gather content module to see if some of the changes you've made can be integrated into their code? I think... So I'm planning on writing a migration like a gather content migration source like plug-in but I don't think... like I think that they're different spectrums because like our module requires gather content to have a very particular structure which is... It's not... it's somewhat flexible in the fact that like your content designer gets to decide what components go where but not every single person who uses gather content will want to use it in that way So there are some limitations there but for our purpose it's seemingly work fine Thank you You're up Don't get up It's fine You're really at the stand, aren't you? I was just wondering Last time I used gather content linking between pages wasn't something at least that I figured out at the time like obviously when the content goes into Drupal you want people to be able to click a text link on one page and go through to the other page Can that be done in gather content where you can link one page to another page and how is that then handled when the pages become into Drupal and you need to be linking between Drupal pages Great question You answered the gather content so I'll answer the Drupal Great question, we were just talking about this earlier So this is more Brins territory still Shall I let you explain it relative links? Sure So you can do linking inside of gather content from like the pages in gather content basically our migration runs the import of all the paragraphs and then runs the pages they're all orphaned and then it reruns the linking of all the pages again so it goes and grabs the IDs of every page and then basically that is the ID that's also used to build the page so we can do a reverse lookup of how Drupal mapped that to a node grab the node ID then replace all the links with the node ID Yeah, I've written a custom plugin Yeah It's the only way I can figure it out but I'm not genius so Yeah, you just press a button and it doesn't now so I'm thinking about it So I think the next step will be if there's an alias attached to the node use that instead because we do a database query so we should be able to grab the alias seems a lot normal Very edgy and cool things It's a whole new world Like I said So one thing you can do is you can use the link module use save nodes slash ID and if you have alias it will pick it up automatically because the problem is if you save the alias, the alias might change and then you have a problem Yeah, cool. Thank you Conzer


We're already in April. That's four months into 2024. I did the math there in real time, so you don't have to. And I have some updates on the channel. They're all, I think, yeah, they're all positive. Oh, how refreshing. Let's start. First off, and this one is very important, I want to thank you, as always, for watching the channel, watching the reviews, the rants, the rows, live streams. When I do them, it's been tougher lately. I've been busy. If you're like me, you probably watch this type of show while you're doing something else. I can't imagine you sit down for 15 minutes at a time and just look at me ranting or talking about films. You're probably doing the dishes, mowing the lawn, folding laundry, whatever. And I appreciate that too. Multitasking's, it's fine. I think I do it all the time. That's how I usually use YouTube at this point is as a companion, as someone that you can kind of have chatting in your ear. And that's how I've kind of taken the approach to the channel this last year is, how do I kind of listen to content on YouTube and watch content in different places? If it's not a movie where I'm sitting down giving full investment, what's the thing I like most about YouTube? And that is people just talking like real people, having some fun, trying to entertain and be engaging. So that's always been my mission. And I think we're really turning a corner this last year, finding an audience and having people kind of speak out about what works and doesn't, me listening, and then taking care of business. And that has been happening. I'm very happy to report I get about 100 new subscribers a day now on the channel, which is freaking unreal for me. That that's nothing that's ever been close to happening in the past. And so because of that, I'm not really planning any crazy shakeups, although I do have a big addition. I have two big additions actually. I launched a brand new channel on YouTube this week called Adam does rants. It's exactly what it is. I do movies here. I do rants over there. Of course, there's some crossover because I also rant about film here. But on that channel, it's everything non movie related. I just recently bitched about public bathrooms and how disgusting they've gotten. There's not any political talk over there. There's no religious talk over there. I understand people watch this show from not just America, but from Europe and all over the world.  There's so much more we can agree with like bathroom etiquette or how rude people have become on their phones or missing ingredients. And you know what?  It was absolute bad lump. And so these are the first world problems I plan on bringing to the table on that channel. So please subscribe over there. It's growing at a decent clip already, which I'm happy about, but full disclosure, that channel was at one point called Adam Olinger, which is my first and last name. And then I killed the channel. I made all the videos private. So this is the Phoenix rebirth. I renamed it. And now I'm going to kick it back into life again, like I did with this channel two years ago. This thing was dead in the water and we brought it back. We Frankensteined it back. So please do me a favor and subscribe to that channel. There will be at least one new video a week, if not two. I'm hoping for two, but that was a perfect segue before into my other big bullet point, which is all those videos that used to be on that channel, over 300 of them are available for Patreon users at patreon.com slash Adam does movies. Or if you're a YouTube join member here, although I will tell you point blank, if you are looking to support the channel in any capacity, even at a $1 tier, YouTube does take like 30 or 40% of every YouTube join member. Patreon has a far more generous split in that regard. So if you're thinking about maybe switching over, that would be fine with me for sure. And you get more perks over there as well. So not only at $1 a month, do you get access to all of those videos that are private. You also get if you are a gold member for $10 a month, an exclusive vlog every single month, as long as you stay on that membership. And this isn't just me in the car talking, there is some of that, but these are very produced videos. I'm doing different camera shots, different angles. I'm going through different more personal things in my life. I have one where I it's like a 20 some minute long video at mega con. And it's basically documenting my entire trip from beginning to end. I have lots of footage at the booth. I have other creators in the video. It's a great video. There's also one where I go with my daughter to her first day at work at Ben and Jerry's ice cream shop on Kiowa Island. So I kind of go over the island and what I do while I'm there, how I work remotely from my computer. It's a it's another great vlog. And I found this was a great way to kind of say thank you to people that are supporting me because at the end of the day, really patron what it's for is to just say, Hey, Adam, I love what you're doing. I understand that you work full time. You got a family and this is a secondary job. And so it's just a way to say thanks and to support at any tier you want. But I want to give you something for that. So if you are a $10 member every month, you get that vlog. If you are a $20 member, which is platinum, I think or something, I don't remember the names of them, you get two vlogs a month. If you are a mithril member for $30 a month, you get three. So you get all three each month. And that that stacks, of course. Third thing I want to go over the live videos. I had a couple recent issues with live streams. In fact, my last one, which is a complete disaster, I was froze up constantly. I don't know what's going on. I fought with my internet provider about a million times. They gave me this brand new package. I got all these different hubs that are bouncing wifi signals. It says it's really strong. I don't know if it's the software or what. I'm working on it. But the goal is to bring these back for Tuesdays. I missed two in a row. I actually jumped on my buddy's Hack the Movies live stream right at the end of it. And my mic dropped and smashed. And it was a complete disaster. And so I have a brand new mic I'm using. Hopefully it sounds good. Hopefully it sounds really good because I want to keep this one for a while. Tuesdays, I want to bring those back though. And I'd like to have a guest on for every one of those. I have lined up a couple for the next weeks to come. So hopefully things line up and I'll see you Tuesday nights at 9 30 p.m. Eastern time. I'm not going to do the conversion chart for you, but where I'm at in the south, it's 9 30 p.m. I used to do Tuesday nights and Friday nights, but engagement wasn't that high on Fridays because I guess people do have some sort of a life or they're probably going out to see a movie, which is what I used to do. But I go on Thursdays now and that's a lot easier and get the review out faster. Lastly, and I suppose I could say least as well because I don't put too much stock into it, but I am on Instagram pretty regularly now. I post a lot of what do you call those things? The stories? I post a story at least a couple of times a week.  I post those there. I post a lot of the YouTube shorts there and on TikTok at Adam Does Movies. I'm also on X, the artist formerly known as Twitter. Hate that freaking rebrand with a passion of a thousand sons. But you can find me there as well. And then I have a letterbox to count and there's a Discord server, Adam Does Movies. I think that's it. I think that's all the updates. I don't plan on really changing anything because things seem to be going pretty damn well. I'm happy with the growth, at least. The plan is to keep reviewing a bunch of movies, watching some of the streaming stuff and reviewing it.  This is me, dot, dot, dot, now. This is me, ellipses, now. But yeah, I plan on doing more streaming stuff as well. So yeah, thank you guys very much and hopefully I see you soon. Take care.


Hi, and welcome to the session. Let us discuss the following question. The question says, if the p of q of and r at terms of a GPR, a, b, and c respectively prove that a to the power q minus r into b to the power r minus p into c to the power p minus q is equal to 1. Let's now begin with the solution.  In the question, it is given that p th term of a GP is equal to a. That means tp is equal to a and tp is equal to a implies a into r to the power p minus 1 is equal to a. Now in the question, it is given that q th term of a GP is equal to b. So that means tq is equal to b and tq is equal to b implies a into r to the power q minus 1 is equal to b and it is also given that r th term of a GP is c. So this means tr is equal to c and this implies a into r to the power r minus 1 is equal to c. We have to prove that a to the power q minus r into b to the power r minus p into c to the power p minus q is equal to 1. Let's name this equation as equation number one. This as 2 and this as 3. Now consider a to the power q minus r into b to the power r minus p into c to the power p minus q. Substitute the value of a, b and c. From 1, we know that a is equal to a into r to the power p minus 1.  Now substitute the value of b. From 2, we know that b is equal to a into r to the power q minus 1 whole to the power r minus p, c to the power p minus q is equal to a into r to the power r minus 1 whole to the power p minus q. This is equal to a to the power q minus r into r to the power p minus 1 into q minus r. This is equal to a to the power r minus p into r to the power q minus 1 into r minus p and this is equal to a to the power p minus q into r to the power r minus 1 into b minus 2 and this is equal to a to the power q-r into a to the power r-p into a to the power p-q into r to the power p-1 into q-r into r to the power q-1 into r-p into r to the power r-1 into p-q.  Now this is equal to a to the power 0 into r to the power 0 and this is equal to 1 into 1 and 1 into 1 is 1. So a to the power q-r into b to the power r-p into c to the power p-q is equal to 1. Hence we have proved that lift inside is equal to write in site. This completes the session. Bye and take care.


OK, I'd like to introduce Durgall Matthews to you. Durgall is currently one of our PyCarn UK guys. In two months' time, that may be different because he comes from Scotland. And in contrast to Germany, which has unified, we seem to be possibly deconstructing in the UK. So after that, we may call it the disunited kingdom. Anyway, carry on. Thanks, John. Cool. Yeah, so I'm a PyCarn Easter and I'm a skier. That's like two of my favourite things. And as John said, I'm Durgall. I live in Glasgow. I am a developer at Red Hat, where I work on OpenStack sort of day-to-day. And that's my Twitter. It's Durgall with a zero rather than an O. But yeah, and that's my GitHub and various other things as well. But this project is nothing to do with work. This is obviously like a side project of mine, something I've been working on for around six months on and off and that kind of thing. So just to talk about home automation, I'll first define what it is about home automation that interests me, the things that I'm aiming to do. And I'd like to split it into three different categories. So the first one's monitoring. It's like what is happening now in my house? What is the temperature? How much electricity am I using right now? The next one is historical data. So this is sort of collecting this over time and hopefully identifying trends and learning something from it and then adapting. This one will take a lot longer to pay off. And I probably don't have enough data yet because seasons change things so much and how you sort of behave. And then the last one's pretty obvious, it's controlling. So it's like I want to turn the lights on, I want to turn something off. I want to sort of turn off power sockets overnight because I'm not going to be using the TV like between 2 a.m. and 6 a.m. or something ever. And you can just stop things using a bit of power on standby. So that's the kind of the things I've been doing. So yeah, then for my setup, the sort of the brains of operation at the moment is a Raspberry Pi. I've actually bought a big old own Black that I'm going to move to just for a bit more speed essentially. And then the sort of the core communication of everything is using a device from a company called RFX-COM which is a TRX RFX radio transceiver. So I use that for sending or receiving and sort of communicating between all these devices. It's a radio device and it works on 4 through 3 megahertz. And one of the things that surprised me about getting into this is how many companies make devices which work on this frequency. And that's been quite nice because I kind of figured I'd have to support a bunch of other things but so far I've managed to avoid it. I might look into Bluetooth low-energy because it's quite neat but for now it's not really on my radar fully. So just to sort of quickly go through the devices and let you see what they are. This is what the actual radio thing looks like. It's not particularly attractive but it works well. And it's a serial device that works over USB. So you can just see the micro USB input there. And yeah, it works well but the only thing I have issues is I live in like a really old house from like 1900 or sorry 1920s I should say. And some of the walls really block the signals but otherwise it's really good. Then for electricity I use, there's a company called Al and they make this device which is the LCM 160 I think. And basically there's a little clip on the left that you can attach to the cable going to your electricity meter. And then every minute it sends out a packet which has got like the current watts and the total watts. And then you can just pick this up and I'll show you that in a minute. And you can get a display with it. It's kind of it's more expensive you buy it with the display side. If you're actually quite serious about doing some of this stuff I'd recommend not getting it. I got it originally because I wasn't sure if I'd get bored of this project. So I wanted to at least be able to see the data somewhere because otherwise it's useful just having radio waves. Then temperature humidity is again pretty boring in terms of looking at the device. And it updates every minute again sort of roughly and it just spits out the temperature and the humidity of wherever you have left it. I've got these kind of scattered around my house so you can kind of start to see what's going on in different rooms. And then sockets and light switches from a company called Lightwave RF. These are just remotely controllable so you can turn them on and off. The one thing I should have made a bit clearer. So the electricity readings and the temperature and humidity they are transmit only. They basically send a message and assume somebody is going to receive it. With the switches and sockets they are received only. So you kind of have to send something and assume they have had you. And the way it works is you put them into a learning mode and you send a command with an ID. They remember that ID and then if you send a game with that ID they will listen to you. So to kind of give you an idea of how the data looks like this is an example packet coming from one of the electricity devices. I'm kind of going through this stuff fairly quickly because it's I don't know it's not that interesting but I didn't want anyone to have like not really understand what I was using at all or like how it worked underneath. So that's the kind of takeaway from this bit. So this is it's an 18-byte packet and there's sort of a similar standard for all of them but they vary after the first four bytes. So the first byte the X11 tells you that it's a 17-byte packet so it's the length of the packet but excluding the first byte. And then 5a is the so it's the hex for the sort of the family of devices so I know it's an electricity monitor and then 01 tells me that it's that specific L and then after that it can vary depending on the first three sort of things. So you've got to really look into the spec and that's quite hard to get your hands on. The guy who makes the RFX column you can get the sort of the SDK but you've got to sign an NDA for it so you can't actually give out the SDK to anyone else. His reason being is he doesn't want anyone to ask them questions it isn't a real programmer. He just does not want to support this thing basically to anyone else. Yeah and that at the bottom there that then just shows the actual extracted data from that packet so there's the ID, the total watts and the current watts. That's basically all you get out from that. There's other things like battery level but yeah I mean that's the interesting data. And with a system like this we basically the whole thing is like an event stream there's just stuff happening all the time and you just have to sort of react based on what's going on. So some of these are like incoming and some are outgoing so the lights is like an outgoing thing. I'm sending that message to say I want to turn on a light then I get readings from a room sort of a month in one room and so on and then an electricity reading and it just continues over and over and over. So that's kind of what drew me to something like async.io. Well actually I kind of wanted an event loop. I wanted something where I could react on events and it seemed like quite an obvious match to me but then I wanted to play with new stuff so that's what actually brought me to async.io and now we'll sort of move on to that part of the talk. This is how the Plec and Documentation describes async.io. I personally don't find that a very useful description. It's kind of unless you are already familiar with a lot of the internal terminology it's really it's kind of confusing. Daniel poked on a talk earlier this week and he went into a lot of more detail in sort of event loops. It was actually the title is a G event talk but he went into a lot more detail about event loops and how sort of async.io works. So if you want to really understand that in a lot more depth you should watch that one. Check out there's some good talks by Guido on async.io as well. It's fairly new so there's not a huge amount out there but there are some good videos. But basically I sort of the really dumbed down version of what an event loop is is that it dispatches, sorry, it waits for and dispatches events and then calls an appropriate handler for that event. Oh yeah and just sort of before I move on to this because one of the things about async.io is it's Python 3. It can have a little show of hands of who's using Python 3 at the moment. Sort of in work or anything like that. Okay, it's a small number and keep your hand up if you have used async.io. Alright, so that's probably about half the Python 3 people so you're all in at least 3.3 then so that's good. Right, yeah so let's look on some code. This first example here is kind of a dumbed down example. It's just Python, right? There's nothing non-standard here. This isn't async.io yet at all. One of the things that Guido is sort of pushing for is that the async.io code should just read like normal Python when you strip everything out. So I kind of proved this fact by going to the documentation, taking one of the async.io examples, removed all the async.io special bits and now just works like a normal code. So basically what we're doing here is we've got a function which calls out to an expensive compute function and then we would get a result from that. So just to turn that into like a non-blocking operation, you just need to do a few minor adjustments. So you'll see here that we put on a decorator on each function and then when calling the expensive, sorry, when calling compute and when calling the sleep, we use the yield from. So basically when that happens, we suspend the code routine. So we'll go into print, we'll get to the results and when it yields to compute, that will then be suspended and then we go into the compute function and then it is suspended when it gets to sleep and then it kind of moves up and down the stack like that. So I'll just quickly skip back again so you can kind of see the difference because it's really, it's fairly small there. They're really quite similar apart from the decorator, the yield from and then there's a little bit down at the bottom which kicks off the event loop, which is kind of ugly, I think, but you only really do it typically once per app. You can use multiple event loops, but that's a fairly advanced feature. So to move on to something that's a little bit more relevant to what I've been doing, I never actually mentioned this device because it's really quite simple stuff, but I've got like a webcam which you can just access over the network so you can just make a request to a URL, grab the image and then store it. And what I was trying to do is I wanted a recent image that I would just store and have it in a convenient place so I update every five seconds and I just have one. So when I want to view the live stream, that's fine, but I don't want to load that on every page. I want a nice recent image just to show in someone browsing the website which I'll show later as well. Yeah, so basically I'm using here, I'm using this async.io. There's another library called AIO-http which is like async.io requests clone essentially, and then there's an async.io redis library, which again is just like another library written for async.io to interact with redis. And this is actually one of the sort of the pain points that I find when working with async.io is you suddenly have to start looking for libraries which support the protocols and the way that it's working. So you've got to kind of rethink things and it's like you're suddenly back at a really small standard library, or sorry, not standard library, a really small ecosystem of things you can use that will be non-blocking. But again, if you read this function, you will find that it's really fairly straightforward to read. So if you ignore the coroutine decorator and the yield from, it's a simple procedural code which would otherwise work as normal. But instead it's got, it's yielding to creating the connection, it's yielding to downloading the image and then yielding to the redis so it's all non-blocking. And then it just repeats every five seconds, so I'm just pulling down an image every five seconds that I've got stored in redis, which is convenient. Although I actually stopped using this approach, this is something I was just messing around with, but I thought it demonstrated quite well there's a bunch of different libraries that are useful. The main reason I was trying to do it is I didn't want to write to an SD card on a rush-by-py every five seconds and eventually burn the thing out. Okay, so Python RFH com is an ASIN-Coreo-based library for working with the radio device, so this is something that I've been writing. There are other Python libraries for working with the RFH com, but there are no other ASIN-Coreo libraries. There's one that uses Twisted, and they've actually done a reasonable abstraction for the transport protocol, so I did think about just writing a different sort of transport for it, but some of the code choices I kind of objected to, so I decided to write my own and sort of a reach-quit when it started suppressing errors. But since I wrote this myself, it's fairly new, and it's currently limited to devices I support, but it is working fairly well, and I'm adding things when people are sort of helping me out with testing. So the problem I found is when I got into this, I was new to ASIN-Coreo, and I walked straight away into the callback trap.  In this particular app, it's really fairly simple, so I'm basically setting up the transport, I'm passing it the serial device I want to read, and the event loop I'm running on, and then the callback I want to be called. It works fine, but it just doesn't really feel very elegant, and there's sort of a bunch of pitfalls with callbacks, and the biggest one really is it breaks out of your standard Python development flow. I'm still working on a better solution for this, and if there's anyone that's like familiar with ASIN-Coreo, then I would love some help. The problem is some of the APIs are restricted to callbacks only, so I use the low-level function for calling the file descriptors, and that expects a callback, so I need to somehow go from... I want this callback when I can read the serial device, but then I want to move to this of the generators and futures, and I found that a bit tricky so far. So this is showing another example. This is something that I've actually found quite useful with the yield from, is you can be more explicit about how you... When you've yielded to the event loop, it allows you to do a combination of blocking and non-blocking operations. So this is actually kind of pseudo-Python, which is just copied and then reduced down a bit from the code, because when I'm doing the setup of the radio device, I need to reset it, and then I've got to wait a period of time and then send a status packet to check that it's ready. And if you get the timing of this wrong, it just doesn't work right, so I wanted to be more blocking in the way I was doing it, but then afterwards I wanted to not be blocking, so it kind of switches to then using the yield from where I set the mode, which is how I enable and disable different protocols. And I'm not sure how you do something like this in CG event when you want to have a mixture of things when you've got the monkey patching happening. So for the... That's kind of like the data collection and how I've been working with that kind of thing and with the actual physical devices and then presenting the results on the dashboard that I've written. So it's a fairly simple web app, and it's kind of a side to the bits I find interesting in the talk, so I'm kind of skip over this fairly quickly. It uses Flask Redis, SQL, Combo, Bootstrap, and basically it's just a way of viewing this data, sort of graphing it, so I've got a sort of a simple time series, which I implemented, although that turned out to be a big mistake, I have to say, to write your own. And all the code for this is on my GitHub, so if anyone actually wants to dive in or try and use it, they can do the code. It's horrific. This has been kind of like the dashboard. It's kind of been like my play area, and I'm slowly spinning stuff off to actually make more reusable stuff which is tested and not just terrible. Yep. Would you like to say that Flask Web App is not using Asyncio? No, yeah, that's kind of why I'm glazing over it. It's just, yeah, it doesn't, just for the mic, it doesn't use Flask at all, which is the... Sorry, it doesn't use Asyncio in the Flask Web App. Yeah, so this is kind of the results of what I'm seeing, so this is just like the default view which shows you the 24-hour period of what's going on in my house. I kind of cut it out to remove some of the more sensitive information, but you can get the idea. So that's like the electricity uses aggregated over the day and at the top, and then that's the current readings at the bottom, so you can kind of see things happening like when an oven's been turned or you're boiling a kettle, you get huge spikes. And the one that I try and get down as low as possible is at the beginning, there's this sort of idle period where we're sleeping or we're not in the house, and that's really when you're wasting a lot of energy, a lot of the time, just because there's stuff in you, sort of the things are happening and you're not there to take advantage of it. And then just to show another graph, we've got the... This is humidity and temperature. It was in my lounge, it was like when we had a really hot period, we do have them occasionally in Glasgow. And as the afternoon comes round, the sun goes right into the living room and it just looks like you see the temperature rock up. Okay, so to sort of move into some of the lessons I've been learning, how we're doing this project, I'm finding ACNCO is pretty nice to work with, but it does feel quite at a low level. This is one of the actual points of it. The idea is to have further abstractions added on top. So I'm hoping that, say, Twisted is probably going to support it and that might aid their port to Python 3. I don't have a clue if they're actually doing that, but I'd be surprised if it's not on the cards at some point. The ecosystem is young, so at the moment it's quite tricky doing things. There's not a huge amount of examples or documentation out there. So when you're learning about ACNCO, it's kind of tricky. And most people that are building services or they're doing, I guess, network traffic and things, there's not really anyone else that I've found doing serial devices or messing around with these particular APIs. So if you go looking, for example, some GitHub, I can find how to scrape websites, that's fine. But yeah, doing something like this doesn't really that popular with Python 3.4, right? Yeah, and the other sort of the key thing is I should have used Graphite for my data collection.  And yeah, the reason I didn't, I was just being really lazy about actually getting set up and I just wanted something running. So I started just inserting data into Postgres and it's kind of slowly moved. But Redis on a Raspberry Pi is actually still amazingly slow. Okay. I think I've kind of touched on some of the other things, but the co-routines of futures is something that... When you're working with them, they feel a lot nicer to work with. So there were some in my examples, I probably didn't call them out that well, the difference between the two. But the problem with, as I was saying with the APIs, is it's hard to know how you can use callbacks in futures when the documentation is explicitly just defining only callbacks. So the kind of confusion between the two is a bit tricky. And that really is about everything for me. So I went through that a little quick. But yeah, we'll have you take some questions if anyone has some. Have we any questions? Okay. Just a quick question. What sort of money is involved there in these sensors? Oh, it's an expensive hobby. 100,000... I've spent a few hundred, I guess. I could actually go and find... I can give you links to all the devices you want to find them there. They're pretty easy to buy on Amazon. It's tricky knowing what is compatible, which is partly why I wanted to list everything at the beginning. Yeah, it does get quite expensive, because you're kind of like, oh, I could just buy another one of these. But yeah, it's an expensive hobby. So I'm definitely not saving money by cutting down my electricity usage yet. Okay, I have a question as well. Are there any sit-will devices for monitoring gas consumption? So this is kind of odd, because there's an area blocked out on the speck for it, and it's actually to find how it will work, but I can't find anyone selling them. So I've been trying to think of creative ways to do this. The only option I've thought of is a webcam and OCR-ing the number, but that seems a bit crazy. Hi, Diggle. So, I'm here.  What about the security of all this?  In theory, you could do some of that. So the range isn't that great on the devices.  Well, that'd be kind of fun to watch the lights switch on and off, wouldn't it?  Okay, and given that this talk is being live-streamed on the internet, it will be available on YouTube. You don't have any concerns about the... I don't think I included my address, but... Good point, good point. Thank you very much. What about higher-level web frameworks? And I think, do you know if anybody's doing any work on doing that sort of thing in Python at the moment, and if there's anything that's particularly difficult about that? I don't really know, to be honest. I did spot, I think there's somebody who's done a port of Flask, but it just seemed like I already feel like I've been learning a bunch. There's a web developer, all these kind of bikes and stuff is a bit odd to me, so I feel like I've been learning a lot, and then I started looking at Async.io web framework options, and I was like, I don't have time for this, so I just went with the Flask approach, which seemed simple enough. But yeah, I've actually been kind of regretting that in a way, because I then ended up writing my own REST framework on top of Flask, right? So ideally what I want is an Async.io REST framework, because I can just do the UI all in JavaScript, that would be much nicer. Hey, you said something about a gas meter reading just now, about an idea of looking at it with a webcam. I don't know if your gas meter is also from the 20s, then you're probably out of luck, but usually these meters have an infrared beep for every cubic meter, or so you can look into that. Cool, I'll take a look at it. The one extra ratio I have is my gas meter is outside, so it's like weather considerations, but... RF, right? Yeah, well, I'll have a look. Thanks. Do you have any support for motion sensors? Yeah, so the company that makes the switches and the sockets, they've also got... Actually, loads of people make them, but I've got some from the same company, the PIR sensors. I'm not doing a huge amount with them yet, so that's still kind of work in progress, but... Yeah, so the one thing I've got is in the hallway, I'm turning on the light when it's dark, and so if you're going to the lewitt night time, the lights turn on for you, that's my girlfriend's my favourite feature, I think. Thank you. Anyone else? Oh, well, thank you to all that's been interesting. Can you tell me if we've got another one? Sorry. Hi, let's not make a question. If you would have chose Python 2.7, which technologies would you have choice, for example, for the library? Yeah, so if I'd done it in 2.7, I would probably have been twisted, simply because they have got serial support included in the twisted standard library, I don't know what they call it, so that would have been a lot easier. I ended up having to kind of figure out a bunch of stuff there, which I wasn't too familiar with. So, yeah, twisted would have been a good choice, I think. Well, you've certainly provoked some interest there. I expect all the euro and pythonesis will have their houses automated next year. If anyone else wants to try my code out, as I say, it's all on GitHub, so I'd be happy to help anyone, because it is a good one. Thank you, and 12.30 at 7.30.


Hi everyone, I'm Joe for JaspiesCaseBreaks.com with another three box break of 2022 Tops Triple Threads Baseball. Pick your team too. The next three box break in the store now, if you missed out. Lot of great stuff in here. All card ship. It doesn't say all card ship, but if it doesn't, that means all card ship. But we'll specify like that common selling ship. Big thanks to this group for making it happen. Appreciate you. Here on Monday the 29th, May 2023, where did the month go? Month went by pretty quickly. Andrew LastBotMojo star next to his name with the Blue Jays, 70% of the time LastBotMojo hits, 100% of the time. Now remember in pick your team one, I made those squiggly marks on the box so you know that they're from the same inner case. We'll go one, two, three for the left side, four, five, six for the right side. Four, one, two, three, four, five, six. So we will save this for break three. And like I said, that's already in the store right now, jaskyscasebreaks.com. All right, good luck. Correct. The white whale is the printing plate with the relic and autograph on it, which is one per inner case. It's either that or the triple relic or block. It's got a little cold here. You see a little too efficient. Do they do two per inner case? I feel like some years they have done a triple relic, triple auto and a white whale in the same inner case. And some years it's just been one or the other. There's a redemption there. Interesting. That's red right there. Interesting. There's CJ Abrams to 125.  Ken Griffey Jr. to 199. CJ Abrams goes to Greg and the Nationals. The kid goes to Chris and the Mariners. Joey Votto to 75. That'll be for the reds. That's going to go to Lucas. And there's Brewer's McCutchen for Ed P. It's to 299. All right. We've got a triple relic, Mookie Betts. Nice. Eight out of 18 Dodgers edition to win or go home. It's going to be for James P. and the Dodgers. Nice little win today. For the Nats and behind Goldschmidt is a one of one Jeremy Pena. Red rookie auto for the Strohs. That's going to be for Paul. Congrats. Very nice. So Paul all aboard the Big Hit Express. Behind the redemption is Reed Detmer's 45 out of 48. Rookie relic for the Halos. That's going to be for Tristan. Behind the Reggie Jackson. Behind upside down Reggie Jackson. Triple Threads autograph relic card of S San Francisco, Seattle, T St. Louis, Yadier Molina. What's going on with the bottom? It's for Ed P. and the Cardinals. Oh, yeah. So there's like a coating or like a film that goes over the top of that card. There's a machine that pushes in these cards at some point in the process. You can see that peeling just a little bit. That's unfortunate. But you know what Paul? Good eye J-Look. What we're going to do is, I guess we'll send you both of these. You have the video evidence obviously and then we'll sometimes they ask for that stamp I've heard. Sometimes they just need the empty boxes, but whatever the case is, we'll send both of those to you and hopefully that'll help your case. I'm getting that fixed, especially since it's a one of one. We've heard varying levels of success on those requests, but yeah. I think for that it's worth a shot. But nevertheless, a nice hit. Next box. Nice one, J-Look. Well, yeah. Astro's cheating us on cards now. He's here all week, folks. Unsullied by sponsors since 1992. 1982. 1992. Nice wander Franco rookie card. That's for Tristan and the Rays. Byron Buxton to $259 for the twins. That'll be for Jarrett. Bo knows. This guy knows. Royals. That's for Gabe. Gilo. That's his team. Got Mike Piazza to $150. That's for the Mets. That's for Allen S. and Goldie to $50 for Ed P. and the Cardinals. All right. On this side, we got a legend, Hank Aaron, Hammer and Hank to $27. That's for Greg and the Braves. And then we got Casey Meis, $8 out of $75, Jersey and Autograph. Get well soon, Casey Meis. That's for Percy and the Detroit Tigers. It might be a keeper. Hold on to this one and hopefully he bounces back nicely. But next year should be slated to come back from Tommy John. I think he's going to miss most of this season. Beyond Buster Posey is Donnie Baseball, $25 out of $27. That's going to be for the Yankees. That's for Allen S. And beyond Buster Posey is Paul Goldschmidt, a piece of his jersey to $48 going to the Cardinals. Ed P. for the Cardinals. Yeah. I heard. Lea Hendricks activated, right? Did he play today? No, he didn't. I was watching that game. I had a little financial interest in the success of the twins today. They managed. Good. Firing it. Lea Hendricks firing it in at $96. Good to hear. Great story. Good comeback. He's Yellich coming back. I feel like he's been putting up some decent numbers. They stand the man to $125 for Ed P. and the Cardinals. And there's Bryce Harper to $199 for the Phillies, Greg. And there's a Spencer Torples and Rookie card, former number one overall pick. It's Kershaw. There's Ted Williams, $259 for Boston. That's for Ed P. And a Manny Machado to $299 for the Padres. That's for Stephen. And we've got a triple relic and autograph to Zaya Gray. He's having a nice season. He's not getting the dubs because of the place of the Nationals. But look at the numbers. It's playing for this former Dodger prospect. Looking real nice with the Nationals. $49 out of $75, although the Dodgers could have used him now. Could have used him now. It goes to Greg and the Nationals. There you go, Greg. And that this junior is Tim Anderson, $27 out of $36. Some rumblings here in Los Angeles that maybe the Dodgers might want to look at maybe getting a Lucas Geolito-Tim Anderson deal done. Could use a shortstop. That hits a little bit better than Miguel Rojas. Could use a, sorry, Lucas Geolito will come back home. We've got a triple relic legend, Ken Griffey Jr. to $36. That's pretty cool. Jersey Bat Jersey, the two different colors. It actually pops real nice. That's going to go to Seattle. That's for Chris Butler. And behind the O'Neill cruise rookie card is another Mariner, $4 out of $99. Jared Kalaneck, who's been playing pretty well as well. Chris and the Mariners. And not a lot of hits. No hits for Ryan, but an O'Neill cruise rookie card going your way. Thank you. Still got a shot at the Wax Party. For you and everybody else, let's gather everybody's names, one through 30. New dice, new list. Name on top, gets an invite to the Wax Party. Win some Wax after seven, six and a one, seven times. One, two, three, four, five, six. Once more, seventh and final time. After seven, very close, but just not quite. Close only counts in horseshoes and hand grenades. But it doesn't work here. But I appreciate you trying, Greg. There'll be other opportunities, so keep trying. But after seven times, it's going to be happy times for Stephen. You got an invite to the Wax Party. Check out the details on jashbscasebreaks.com. I'm Joe. I'll see you next time for the next break. Bye-bye.


What's up everybody JC over jazby's case breaks calm just quickly doing an actual randomizer for this unnumbered card our Sipping our shipping team, which is a one caught that Joe forgot to randomize this card to one customer in this breaks Due to it being unnumbered, which was this player right here So unnumbered cards get randomized as you can see it's unnumbered So everybody have a shot of that's in this break. So we're just quickly just doing the randomizer for you guys So from Gary all the way down to Eric. We're gonna put you in a randomizer customer number one gets that extra hit in the break Let's roll it five and one six times one Two three four five and six Max there you go max Anderson you'll be getting that extra hit guys So appreciate it. This was just a randomizer for an extra hit In uh, 2020 leaf metal draft football, uh, love size zero number break number 10. Appreciate it guys


So we asked ourselves last time whether there are rules, duties, obligations that we have in relationships. So to be clear, there's not a whole lot of disagreement that there seem to be things that you should or should not do in a relationship. But one wonders whether there's genuine obligations in relationship. Well, let's suppose there are. What would that be like? What would that mean? And so to this case, we have a couple walking down the street and the guy is a little distracted by something that he sees. His girlfriend's upset and says, what do you think you're doing? And he says, hey, relax. It's not like you have anything to worry about. What do you mean I've got nothing to worry about? Well, since we're in a committed relationship, I'm morally obligated not to cheat on you. So I'm not going to cheat on you. I don't think this is gonna have the reaction he anticipates. And to be clear, such a reaction is certainly justified. But the point being, or the reason why this reaction is justified, is that when one performs an action out of obligation that should be performed out of care, something went wrong. Well, suppose we have something like the following scenario. We have a child and a dad. The child comes in and says, dad, I didn't get a birthday present. That's because I didn't get you one, son. Why didn't you get me a birthday present? Because I'm not obligated to. And for what it's worth, at least under some versions of these moral theories, it may not be, right? So under Locke's theory, there's no obligation to purchase a birthday present for anybody. Under John Stuart Mills, utilitarianism may be be obligated to purchase presents for other people because it would increase the greatest overall happiness but not your own child. And these under some versions of moral obligation, sure, this dad may not have an obligation to purchase a birthday present for a child. Well, it still seems like there's something wrong here. But that just shows that there's some sort of difference between obligation and relationship. Admittedly, that case seems a little harsh since the child is going without something that the child wants. But suppose we change it up a little bit. Suppose the child gets his favorite dinner and the dad walks out the room. Dad, you didn't let me tell you thank you for my dinner. You shouldn't tell me thank you, son. Why not? Because I'm obligated to feed you. So the child is getting something that the child wants in this case. But what seems to kind of go wrong here is that the dad did it out of obligation as opposed to some kind of care or concern for the child. So this point's kind of a problem when we're talking about obligations and relationship. If you're doing something because you're obligated to, maybe you went wrong somewhere. Let's just grant for the sake of argument that you do have obligations for certain behaviors in relationships.  Feeding, children, for example.  But the point is when we're dealing with relationships, if you're performing these actions out of an obligation and not out of some sense of care, some desire for the well-being of the other, well then something went wrong there. Well, like I said, let's grant for the sake of argument that there are obligations to fulfill in a relationship. One thing we haven't really talked about so far and one thing that's very important to consider is what happens when you fail to fulfill an obligation. Understand the conceptions of justice or obligations and morality, say something specifically like Locke, well then if you fail to fulfill an obligation, you're liable to judgment. Let's consider our rather dim-witted friend here who decided to get distracted while walking down the street. I am not going to say his actions that are all justified.  Sure, let's grant that her reaction to him is justified. And let's grant that he did something completely wrong. I mean, now these are really all that controversial. However, does this mean that he is now liable to punishment, to condemnation? Let's just grant for the sake of argument that if one person does something wrong in a personal relationship, the other one is justified in punishing and condemning the other. Well, this sets a moral inequality between the two. Their moral standings are no longer the same. One is somehow superior to another. That effectively kills the relationship. Even if that isn't true, if there is no inequality in moral standing, nobody likes being punished. Chances are that if you administer punishment in a relationship, that's the end of the relationship. I mean, let's be clear. Nobody is obligated to be in a personal relationship with anybody else. So if one person does not like being punished by the other, they are under no obligation to stay in the relationship. Even if the one person is justified in acting and punishing, it's still gonna be the end of the relationship. In short, whether because acting out of obligation ends the relationship, there's something wrong there, or punishment and failing to perform an obligation, the obligation kills the relationship. So we've seen how obligation can impact or change relationship, but one wonders whether relationship can change one's obligations. To see what I mean, well, let's consider a good old trolley case. Remember, if you do nothing, then the trolley goes forward. But if you pull the lever, then the trolley goes off to the left. And for John Stuart Mill, of course, you pull the lever and kill the one for the sake of the five. And if you remember that discussion, it wasn't as if this was a completely problem-free solution. But something that everybody did kind of agree on, even though it was never really discussed, is if you decided to pull the lever and kill the five for the sake of the one, well, something really went wrong there. Well, suppose we change up the case a little bit, and instead of a complete stranger that's laying on the left side of the track, it's one's own infant child. It's not completely implausible to say that one would not need to pull the lever after all, it's not you, that's killing the five people, it is the train, and it is your child that's on the left side of the track. If confronted with the same situation, I think it's at least understandable, if not defensible, that you would not pull the lever to kill your own child to save five people, especially five people you don't know. Well, now change the case a little bit. Instead of five strangers on the right-hand side, it's your child.  Again, it's understandable. I think a lot of people would agree or probably even perform the action.  It's at least understandable. Now here's the question, was it wrong? Do your obligations change depending upon the people who are affected by your actions and whether you have a personal relationship to them?


Hello friends, so welcome to this session on trigonometry and we are going to start with measurement of angles. So before that, we need to know what an angle is. So an angle is a geometrical figure. So an angle is a geometrical figure in a plane. Isn't it? Figure in a plane and it is bounded by two rays. So these are the two rays two rays. And this particular measure is called angle and is usually denoted by a Greek letter theta. Okay, so now how do we measure angles? There are three system of measurement. One is called 6RJ symbol system. Another is called centesimal system, which is not that in use these days. And the most prominent one is circular measure. So let us understand one by one, each of them. So what is 6RJ symbol system? So in 6RJ symbol system, in 6RJ symbol system, we have one right angle, one right angle is equal to 90 degrees. So one right angle is measured as 90 degrees. So we know that this is 90 degrees where these two rays are perpendicular to each other. Now the further subunits of degrees, one degree is equivalent to is equal to let's say 60 minutes. And each one minute is equal to 60 seconds. These are the subunits. These are the subunits. So let us say 60 minutes will be written as 60 dash and 60 seconds will be 60 double dash and 90 degrees is written as 90 and a small dot over it, degree symbol. So this is 6RJ symbol system. Then there is another system called centesimal system. And this is much more convenient than the 6RJ symbol system because it considers one right angle to be equal to 100 grades which is written as 100 and superscript G. Now one grade was equal to 100 minutes and it is denoted as like that and one minute is equal to 100 seconds. So one grade is mentioned as 100 minutes which is denoted by 100 like this and one minute is 100 seconds like that. Now it was not popularized because you know the entire trigonometric tables which was initially done in terms of degrees would have to be changed entirely. So hence now this is not much in practice. Okay. Now third is which is found in almost all literature is circular measure, circular measure which has its genesis in the ratio of the arc length and the radius of a circle. So let us say this is the arc length and this is let's say the radius and this angle is theta such that this length, this arc length is also R same as that of radius. Then theta is defined as one radian. Okay. So this is one one radian. So now how do I define one radian once again? This is the angle of an arc of a sector such that the arc length is equal to that of radius. So that angle will be one radian. Now in the next session we will prove that this one radian is independent of the radius or the arc length because one radian is just the simple ratio of the arc length. So theta is nothing but arc length divided by the radius. So it is immaterial of the actual value of radius or the arc length because they change proportionately. So theta is defined as one radian when arc length is equal to radius. Okay. Now we know that when theta is equal to 360 degrees this is equivalent to 2 pi radians. Okay. Why? Because the angle subtended at the center is 360 degree then the arc length is 2 pi R whole circumference and then divided by R. So you will get 2 pi radians. So similarly you can now find out 180 degrees is equal to pi radians which is in short written as RAD. 90 degrees will be equal to pi by 2 radian and 45 degrees will be equal to pi by 4 radian and likewise. So for example 30 degrees will be equal to pi by 6 radian like that. This is very useful measure of the angle because the entire literature in higher order let's say in higher grades will be based on radians only. So please be familiarized with radian circular measure. So we will take a small example of converting let's say degrees into radians. So let us say I have 405 degrees and this has to be converted into let us say radians. So how many radians is 405 degrees? So this is how you will have to solve. So 360 degrees is equal to 2 pi radian. So one degree will be equal to 2 pi by 360 degree sorry 2 pi by 360 radian not this unit will not be there. So 405 degrees will be equal to 2 pi by 360 into 405. So if you see this is 45 8 times and this is 45 9 times and this is 4. So hence it is 9 pi by 4 9 times 45 degrees okay. This is how you have to convert degree into radian. Let us say we have 3 pi by 2 radian. So this is equivalent to how many degrees? Let us say we have to find this. Then we know that 2 pi radian is equal to 360 degrees is it it. So one radian is equal to 360 upon 2 pi radian. So hence sorry not radian degrees degrees. So 3 pi by 2 radian will be equal to 360 by 2 pi into 3 pi by 2. So this pi and this pi gets cancelled. This 2 and this 2 4. So this is 90. So it is basically 270 degrees. This is how an angle in given in degrees can be converted into radians and an angle given in radians can be converted back into degrees. Thank you.