inspections of the nine challenge authorities included colleagues from Lord at Scotland working with Education Scotland at that time. We know that it's a different it's a shift in the rationale and a new mission for the challenge and that's what's really important for us all to really be considering here that it is about a new mission about improving outcomes for all learners who are living in poverty across Scotland. To be fair what's really concerning to me as a Dundonian around this but on a national level as well these many authorities is that it's a 79% cut to that amount of money it's a hundred posts that work with the neediest kids in my community that's what I'm concerned about today in these questions so did you not raise concerns about that was that was that not on I understand the other rationale in terms of hidden poverty and I think we'll accept that someone had to be done but for those local authorities it's an extraordinary challenge and other other evidence has admitted so again was there no concerns raised by Education Scotland at all about the impact on those local authorities and the children who live in them. I'd actually like to pursue with it and then I'll certainly come to you Elizabeth if that's okay but just on this point I'm asking specifically were concerns raised did you raise concerns? I think when we're looking at funding distribution it's always it's always a difficult issue. It's a bit of a yes or no question Craig if I can I'm sorry did you raise concerns about that about the impact because we've heard a lot about the work you've done great work with head teachers with people did you raise concerns or not? We were looking at the bigger picture I think there so I think concerns is the wrong word I think what we were trying to do was to look at the most equitable way of the most reasonable way of distributing the funding and that was that was the approach that came we came up with and I would say we came up with that collectively so it wasn't Education Scotland saying that's the way of funding it wasn't you know there was consultation throughout that process to come to that is the most that is the best way to distribute the resources that are available. It's not the best for those kids though is it I mean to be you know I know it's not your decision alone clearly it's it's you know a cabinet secretary's desk and cosilist desk there's conversations up there I'm not saying you guys have to blame on this I'm just asking I would have thought in terms of the work you've done over these years you would have recognised that I would and what I'm hearing is no you didn't raise any concerns about that. I would advice as the education agency working jointly with scotch government to deliver on the challenge was as I've said based on the evidence that we have over the first five years based on the international evidence based on the feedback from the OECD from Water Scotland and also to look at the impact of the pandemic that's all of that came is is how we presented any of our advice in terms of the refresh of the challenge we also were involved with Scottish Government in a range of stakeholder consultation including with the directors in those nine challenge authorities to look at how they had made progress what they're learning you heard Ruth last week herself saying again of course she would have liked to have had more money that isn't our decision as education Scotland but those local authorities understood that there was learning it was a fund at a point in time that was about innovation it was about trying new things it was about learning it was about you know really looking at this putting this issue on to us we also heard from a head teacher on Monday night who was in her words raging raging we've heard from trade unions have said this is immoral we've said that they are to have no idea as to how trade unions represent saying have a no idea how these local authorities will cope I mean if I can't list maybe you're keen to get in here because I'm just going to have fallen on what Patricia was saying there around you know Ruth was very clear and in reply that you know this was always about a sustainable strategy the Scottish attainment challenge money is about finding out what works putting that place naturally I'm going to go back to my motorway analogy here we also need a motorway analogy that talks about sustainability and talks about intervention till we get to a place where you know we have that solid approach that is embedded now what I would suggest is that local authorities who have all hit challenge authority funding where also encouraged to look at a sustainable strategy which may involve exiting from some aspects which may involve maintaining in a different way aspects and also the transfer and responsibility if I can give you some examples of that for instance one local authority previously used some challenge authority funding to employ an educational psychologist on a temporary basis okay actually over the last wee while that educational psychologist has actually been consumed into the service and is now part of their the delivery that they're actually putting in place was all about upskilling their staff and actually changing that culture so actually that post is no longer needed and actually as it happened they've been unable to fill that post in the last wee while anyway so nobody's losing their jobs but actually what we're seeing is that is now embedded in that service we're also seeing some services that we know that local authorities will not want to do without so for instance you know some of the third sector work that's going on should we expect them to pay for some of those services through peft money then things that the reduction in no I'm sorry what would that be allowed this is actually coming through in some authorities they're actually prioritising this and saying that this needs to actually come in and through other funding now if we take some of that third sector worker what we've actually what we've got is very very strong evidence of how that is working effectively and you know yourself third and you heard from them third sector workers and third sector managers are very very skilled actually getting alternative funding so what we're seeing is a bit of that coming through as well and we're also seeing that kind of match funding going on as well to to actually help support the reduction in the the new SEF money which is the attainment challenge money previously and we're also seeing services where the responsibility for some of this some of these pieces of work are transferred and that can be for instance a piece of work with speech and language therapy where really looking at that vocabulary gap in early years establishments and there's been a a whole lot of funding put into place to actually bring on boards against some additionality people you know who are maybe part time going full time for a year or two to really upskill the practitioners and the nursery service in that early years in that early years provision and then what they've decided to do is well actually we're going to make this part of our core business because we actually see the benefits for us because we're not seen as many children coming through who are needing that specialised support because we are we are putting that early intervention in place so in some ways we're seeing that sustainable strategy actually coming through and actually it was coming through before even the cuts were announced because people were actually beginning to say this is now embedded and for me that's where we want to end up. That's really useful examples and you say that where the Dundee City Council for instance with our evidence from them previously who've said they don't know how they're going to cope with this and that would be incredibly challenging so you know some of the examples you used there. My last attempt at this, convener, if I can, if it wasn't raised, concerns weren't raised by Education Scotland or concerns raised in the discussions you talk about by anybody else? Not particularly? No, okay. Thank you, convener. Oh, that's an interesting answer. Graham Day, I think, I'm very very short. Thank you, convener, and thank you for indulging me. I want to take us back a few moments to the oil and the question that Oliver Mundell was pursuing and apologies if I've missed this, but it strikes me from what I heard. Surely there's a role, an active role, for Education Scotland in addressing this in terms of you have a Scotland-wide remit, you have an involvement in each of the collaboratives, you talked about good practice in the Northern Alliance around rural, remote rural schools. Is it not a role there or should there not be a role there for you guys to be saying to the other ricks, look, you will have rural schools who would benefit from the sort of amassed corporate knowledge that we have in Scotland and we want to make sure that you are taken into account the needs of your rural schools. I mean, I heard the use of the word intention though, the use of the word aspiration now and I'm more interested in practical application. And this wouldn't, if you're not already doing this, it wouldn't require government direction or a policy change, it just strikes me as being a self-evident thing to happen if it's not happening already. Yeah, and apologies if I didn't make that clear earlier, I mean it's just, I suppose it was acknowledging that there's, that there may be some schools or some individuals who feel that that particular way, but the way the ricks are working, so they're working within their own areas, you know, sort of taking the northern lines for example, so that, so they're learning from each other, they're sharing good practice, they've got their own plan and so on, but I think increasingly what are seeing that work happening across the ricks. So given the example earlier where two ricks are working together on data for example, but that rural question, we've shared good practice with all the rick leads, and we'll have meetings with the rick leads and so on, either individually or collectively, and at those discussions they've got an opportunity to put things on the agenda, we put things on the agenda. And a lot of that is about how do we learn from each other, we had a conference set up to do that very thing, but unfortunately that couldn't have happened because of, because of COVID. That still seems a bit, with respect, a bit vague. I'm talking about this being, I think it's a self-evident thing to be doing on a proactive way, that if there is a risk that some schools are falling through the cracks, and it's avoidable, let's avoid it. I think I'm doing a good question, but I'm, I would argue to say that that is taking place, I would say that that is taking place in terms of schools, and I've already used this as an example, so forgive me for repeating myself, but in terms of self-evaluation where the AAs and our teams are working to support schools, that then being led and linked into the local authority improvement agenda, that then is captured through the regional improvement collaborative where there's multiple priorities across the local authorities which it serves, and then they put it on their RIC plan, so that's in response to all of our rules very much about, as that headteacher, let's use those channels, it's meant to be a networked learning system where we're listening, and ourselves being a listening organisation, how can we use those channels and seek those views in order to identify improvement priorities, seek out great practice and share it, and that inter-authority work as well as cross-RIC work is absolutely taking place, and we do have structures and mechanisms, as I said, there's six SRAs that create that space, there's senior partnership officers that sit within the RICs, there's RIC leads, so those conversations as part of that networking space is absolutely there and it's possible. Prudently up until now it has been about recovery, and in terms of the pandemic it's been quite reactive, and this is an excellent opportunity for us now to be more proactive in that space. It's not a new point. Oh, okay. I got, thank you Graham, and thank you to our panel. Two very, very quick questions, forgive me. There is a monthly, there's a quarterly progress meeting you have with the Scottish Government in relation to the topics we've been discussing. Where would one go to find the inputs and outputs of that meeting? They're only just emerging, you know, as the refresh has started, so we've had discussions with the cabinet secretary. Oh, you've not had a meeting yet? We've had one meeting, but that meeting was more about discussing the process that we'll undertake over the next few, as we develop the stretchings. So those quarterly meetings have not been held yet, there's been one pre-meeting, as it were. Where would we go to get the inputs and outputs? Scottish Government. And in the spirit of the fact that we've now got more admirals than we've got ships in the Royal Navy, as a question I've been dying to ask from the beginning, you're both the strategic directors? Why are there two? Different responsibilities. Also there are a bit behind your title, we didn't get that in our previous, so that was a bit confusing. What is your full title then, Patricia? So we are both strategic directors for regional improvement, but my lead role is with the Scottish attainment challenge, and Craig's lead role is in the performance, as we heard earlier. We have six regional improvement teams, local authority performance, and the whole transformation. I see, so you've got a little bit behind your title. We have different remits, we actually have six strategic directors in education in Scotland, with different remits. With all the different bits behind the titles, right, very useful, maybe you should have asked that at the outset, but thank you to Craig, Clement, Pamela, Denardo, Liz Somerville and Patricia Watson, who have been with us this morning from education in Scotland. This brings the public part of today's meeting to an end. Again, many thanks to our panel and to those watching. Have a very good rest of the day.


Good morning everyone. I am Vidhi Thakrar. I am Nazu. We both are application developers at ThoughtWorks. So, in this session we are going to discuss about a test pyramid of any normal Android application. What are the problems with that test pyramid and together we will achieve the pragmatic test pyramid by applying some design principles. We have created a very small basic shopping application as an example on which we are going to work together to achieve the pragmatic test pyramid. If any of you don't know what this test pyramid then it will be covered in next few slides. Now, Nazni will explain the functionality of this application. Hello. Yeah. Hello. Okay. So, we have created a shopping application Gadget Stop where you can purchase some electronics and accessories. So, when you launch the application you can see some the concise information about some products like the image, the title of the product, the price and as you can see some labels new, popular. So, the business requirement between about this label is if a product is new, the label new will come up. If the product is popular, the label popular will come up and if the product is new and popular, the popular label gets precedence and the popular label will come up. So, as you can see there are no products in my cart right now. Let's go and add some. I click on one of the product. I can scroll down to see the description. Okay. It looks very interesting to me. Let me buy it. I add the item to the cart. If I try to add the item again to the cart, I get a dialogue saying this item is already added to the cart. Again, a business requirement. Now, if I go back, you can see one product is added to my cart. So, that's the functionality we are going to be working with today for the achieving the ideal test pyramid. There is no function. We are not implemented the functionality for cart. Okay. So, let's do a quick code walkthrough for this particular application. So, the very first activity we launch is the shopping activity. In its own create, we set up the action bar. We create the fragment and set up the view pager. Let me go into create fragments. So, there is an electronics fragment and an accessories fragment. Now, each of these fragments inherits from a product based fragment. Let me go into that. So, the product based fragment, basically, on its own create callback, we set some products from the server. So, there's an API call. We make an API call using an API client, a wrapper over the HTTP client. We take in the URL. Okay. Do I need to fetch electronics or do I need to fetch accessories? And I pass a product, I pass a callback. This callback basically, if I get a successful, if I get all my products from the server, I render these products. And if it's an error, I show a dialogue that some, there's some difficulty and close the activity. Let's go to render products. On render products, it's a simple setting up our adapter. It's a base which helps you set the products on the view. We clicked on one of the products. We chose one of the products. And when we clicked on it, we went, we open up the product details activity. Now, when I go to the product detail activity, on its own create, I render the title, I render the description, I render the cost image and the label, either it's popular or new. I do all this on its own create. Well, this is about the rendering part. There's one small functionality left. When I click on the buy button, I add to cut. So either if the product is already in the cut, I get a message, okay, this product is already in the cut. Or if this product is not in the cut, you're adding it for the very first time, you get a message item is successfully added to the cut. So this is the functionality we are going to be working with today. So before we go jump into, okay, what are the various test scenarios and what should be the testing strategies for this product, for this application. I'll ask Vidhi to just explain the importance of test. How many of you have written a test for any example? Oh, nice. What do you think? Why you should write this? Anyone? No one? Yeah, correct. Let me go through quickly the importance of test that why we should write test. It proves that your code actually works. Whenever you develop a new feature for our system, right, we develop it incrementally. So whatever you have developed, it actually works test proof that it improves design. So without thinking of the responsibility of the class and the collaboration between multiple classes, you cannot write test. So it always helps you to design your application correct. It allows refactoring. Just think about a situation that you want to refactor a piece of code and there are no tests around it. It's scary, right? You might miss some scenarios to cover in your refactoring. But if you have tests around that code, then refactoring becomes a pain list because by just running the test, you make sure that you have not broken anything. Good documentation. If you have written a test, you don't need any sort of documentation because test describes the functionality and behavior of your system. It forces you to slow down and think. This is my favorite point. So whenever you write test, you first have to think about the class in which you are going to test something and you also have to think about the expectations from that class in terms of assertions and then only you can jump to the code. It reduces fear and boost confidence. So sometimes test help to catch a very critical situation or a critical scenario of your system. I'll give you an example. For example, there is a legal link in your application, right? Somehow it has been broken. And without testing the application, you have deployed an application. Just think about it. Your company might pay a lot because of such violation. If you write test around it, then you can avoid being in such a situation. It makes deployments faster. If you have written enough number of tests for your system, then just by clicking a test, you can make sure that your system is working as expected and you don't have to spend so much time in manual testing and regression testing and you are ready for the deployment. Is this clear to everyone? Now Nazmin will discuss the test scenarios of the application which we have created. So now that you have got an idea that okay, we feel it's important to write test for this particular application that we saw, gadget stop. What are the tests that you think you know you should write? Anyone? Write test for the labels in the sense new and popular is coming up. Okay. Okay. One. Any other? No duplicate items, right? Okay. So all you're going to assert on the dialogue or the message or what are you planning to test around your for the scenario you just stated. So are you going to be testing some dialogue appeared and this is the message or what are you thinking when you said that? Okay. Anyway, any other scenario one last? Sorry, to check that is no? Error. Okay. Yeah. Okay. Okay. Let's proceed with this. So some of the scenarios that you listed and some of us we had a few scenarios. Now, most of the scenarios six months ago with the team we were working six months ago, if we have thinking of the scenarios, most of the scenarios needed something of the UI to be there. Like we would think, okay, is the new or popular label being rendered on the screen? Is the price being rendered on the same? That is what is going to be seen to the user, right? So you'll think, okay, we need to test it's getting rendered or not. So most of the scenarios we have with the UI for the so we ended up with an inverted test pyramid where we had a lot of tests in the functional side in the sense which needed the UI and a very few unit tests. Now, by unit test, we just checked, okay, the logic in the model, okay, if you know the label is new, popular, something that way we tested in the unit. But most of the tests were on the UI side pertaining to see that, okay, the view is rendering fine. We and this is the inverted test pyramid. Now understand why is this and call an inverted test pyramid or why this is not the great way to go? Let's quickly see what should be the ideal test pyramid, okay? So ideal test pyramid or the pragmatic test pyramid or the testing strategy you can apply for your application should involve three main components, unit, integration and functional. By unit I mean you take one particular individual component and unit tested. These components are tested in isolation. It has a disadvantage, of course, these components are unit tested in isolation. You do not know that, okay, a unit A works in collaboration with unit B perfectly fine. And there is when integration test come into picture. The integration test give you the confidence that, okay, my two, three units are working together. You don't need a functional there and that's where you integration tests shine. Functional in that way helps you as the name suggests gives you confidence that your user flow, what your real user will use is actually being tested is actually working fine. So to just summarize it, integration and unit being technology facing, they help us understand are we building the system right? Just going back to the point where he said are you designing the system right? Are you designing it in a way that it's maintainable, etc. Functional on the other hand puts across are you building the right system? Are you building the system that your clients want or what the users want? So as we move from unit to functional the confidence that you're building the right system increases because you have more coverage on the unit integration and functional of course because you're testing that your system you're building a right system. But at the other hand once you move from unit to functional the speed of your test decrease. The amount of data or the amount of time your functional test run compared to your unit and integration is much more. So let me put this all let me summarize them and put the characteristics of these tests again. So just to summarize unit tests are fast. What I mean by fast is your test refactor cycle is faster. You write a code you test it, it stays you understand okay what is broken you fix it, make some changes again take on your test and you come to something is wrong right? Okay perfect. So it's very quick in feedback. Your feedback is okay something is broken fix it.  Unit tests they don't have a lot of dependencies first of all you mock most of the dependencies and they do not have UI in the picture so it's much more reliable. Whereas functional you deal with UI and and take into consideration you have a scroll view you may not know that why is your test fail? Has your scroll view genuinely started lagging behind or you know your motion or the emulator is slow and therefore start lagging. You never know why your test has failed it's not really reliable in the in at some time. Unit test as your testing just one single unit it fails you come to know oh this has broken my price is not getting upended with the indian currency that's where it's broken. So when you run the same thing with functional it can be anywhere that failure. It can be that even if your test find a bug that bug can be anywhere in the product. So it does not help you isolate the failure immediately takes you time to understand where exactly something must have been broken. And of course unit don't help you stimulate the real user flow but functional does. So we realize okay we understood these problems we understand the disadvantage of having so many functional tests but still we ended up with such an inverted test pyramid as I showed before. We analyze and figure out okay why do we have less unit test what's the problem. We could not write unit test because there was no capability of dependency injection dependency injection sorry. What I mean is when you're creating so first of all in your view so Android framework gives you activities fragment is where you write all your view logic everything to render talk to the data base talk to the network everything is where you is your starting point. Now as you're creating them in the activity if you can't inject them how will you test it and the reason you can't inject them because you can't create them on your own you can't create a activity you can't create a fragment in the test it's only through callbacks or through intent so if you can't create them you can't inject things and therefore you can't test it first problem I mean the first thing that cause the hindrance in writing unit test okay you all may say come on there was roboelectric why don't you utilize that there are roboelectric test that is for unit testing why don't you write that. Now there are two issues that we face first roboelectric test to write non-non-UI sorry to test non-UI logic you need to set up a lot of data prior to 2.2 version of roboelectric you have to create shadows of activities of fragments etc to test non-UI logic why do I do all this setup when I don't want to test something on the UI but I have to put an entry point to set up all that data and test it second if you're testing get text set text etc you are actually testing them on JVM okay JVM it runs fast it gives me quick feedback but your actual application runs on a DVM so you're running it against an altogether different ecosystem now we didn't really like that and so we ended up writing no unit test JVM unit no J unit unit test no roboelectric unit test we had hardly any unit test so as a team we have come across some we came up to some pattern which will help us increase the unit test we will take us through that okay so as we understood that there are disadvantage of writing so many functional tests let's see what can we do application which we have developed so that we can write unit test easily let's go to the product detail activity here we have returned some rendering logic let me go to the render product popularity here we have quite some logic you can see over here what we are doing here is okay if the product is new then the label should appear as new and the color of that text should be red if the product is popular then label should appear as popular and the color should be purple if there is no product coming if there is no popularity coming in the product then we don't have to display all together this text view and if it is coming then only we want to make it visible so we have quite some logic here can we do something so that we can easily write unit test for this have you guys heard about MVVM how many of you have heard about MVVM how many of you know MVC quite a few I don't have to explain the MVC we can directly move to the MVVM is that fine alright so here the responsibilities and view and model stays the same let me just quickly repeat it what is model anyone sorry so that is like your data right it represents your data which can be retrieved based on the user interaction and it is displayed on the ur what is view you are right which presents to user it's your graphical user interface okay now what is view model here so let me just give you a brief idea about MVVM and then we'll talk about the view model component MVVM was developed by Microsoft Architects to simplify the event-driven programming of user interface cool so what it does is it separates the development of user interface from the development of the business logic which you write now let's talk about what is view model here so the responsibility of view model is it can update the model based on the user interaction and it can also update the view in the MVVM there is one very important component which is not here which is a binder okay what does this binder do so view model exposes the public properties and commands this binder binds the public properties to the view to render it on the UI and it binds the commands which is exposed by the view model which can help to handle the user interaction I will give you a quick example of the binder I don't know how many of you have worked with the Microsoft solution stack but there is a markup language called XAML so XAMLX is a binder which binds this view model on the view alright and it frees developers from being obliged to write boilerplate code to make view model and view in sync are you guys with me till here yeah okay now let's see the relationship between this components here you can see that there is a many to one relationship between view and view model what does this mean this means that as view model does not know anything about the view because that is binder who actually binds the view and view model the same view model can be used by multiple views so that's why there is a many to one relationship let's see the relationship between view model and model it's bi-directional because view model can update the model based on the user interaction and view model is dependent on model because it exposes the public properties which helps to display it on the view so view model is dependent on the model because this is your data cool now this was the code which we were discussing right here we have like quite some conditions over here what do you think can we apply MVVM here yes no yes but we have a very important component of MVVM which is binder and we don't have it so I hope you guys know that android has come up with the binding mechanism recently right it's in beta but they have come up with the binding mechanism where you can bind your data on the view for this application we have not used this binding mechanism so we have to write this boilerplate code to bind the data to the model but so what if we don't have binder for example let's take an example that our activity will act as a binder and let's see that now can we apply a MVVM pattern and can we extract out a view model so that this all logic which we have here can be shifted to the view model yeah let's apply MVVM and see that how this looks like after applying MVVM we have created a view model so we have now this the view you see the before like everything was being done in the view now everything of all the logic has been moved to the view model your view is only asking for the label sex color and the visibility status it doesn't care about okay I have to understand it's new or I have to understand it's popular all that responsibility is delegated to the view model it's just the act view just has to consume whatever the view model gives it so your view has become relatively very thin here now how is this helped us test it right okay so let me go to the view model so your view model takes in a product and it takes some resources it takes in your domain because the domain is giving you the attribute is giving the view model the attribute it needs to massage for the UI so it needs to depend on the domain in this case the product the resources is added here because we need to get certain things from the strings.xml colors or xml so it's past here past in the constructor so once your view model is created let's look at this test we could write because we created this view model so these are j unit test first scenario is the the label the popularity view should be visible as the product is new the popularity view should be visible if the product is popular the popularity view should be visible as the product is new and popular there's a condition right like it's new and popular still it should come up because you have an if condition there your label should be new as the product is new I'm getting a new product I'm getting a product which is new so I should show the new label on the view on the view your label should be popular as the product is popular the main thing is the label should be popular even though your product is new and popular we had a condition right it, popular label should take precedence over new, right. So, that is what we have tested. Similarly, the popularity label color should be red if the product is new, it should be purple if the product is popular and similarly it should be popular, sorry, should be purple if the product is popular and new. So, every single in condition around the popular, around the label is tested. There is no, there is no problem or we do not find any insecurity that something we have missed. Let us quickly see if we tend to make some change in the code, does it really fail? Let me quickly run the test and there it gave me a failure stating I was expecting a popular label, but I got nothing because I removed the code of actually getting a popular label and this was so quick, it ran in 0.3 seconds, I got to know what has failed, where did I make a mistake and I can quickly fix it. So, this has given us advantage of immediately from the unit test of immediately understanding what is my view model going to be 3 and how is it correct, is it not. We have missed one, we missed instance, there is one more thing remaining, we have talked about the data massaging but there is something around the event interaction which we have not talked about, let us look at that. So, after applying this MVVM, let us see that what is the code which is still lying there in the product retail activity. This is the rendering part which we have already covered through view model, let us look at that two cards. Oops, here also we have some business logic, but okay if product is already added to the card then do not add it and display a dialogue message, if the product is not added to the card then save it in the database and then display a toast message. What can we do so that we can unit test this part of the activity also. Have you guys heard about MVP? Yesterday we had a session on MVP, right? I hope you guys know what is MVP. Let me just quickly, okay let us just quickly understand what is MVP, okay? So, here also we have view model, the responsibility of view and model stays the same. What is presenter here, right? So, the presenter is the same thing, it updates the model based on the user interaction and it also updates the viewer, but unlike MVVM we do not have a binder here which means all the blue code to bind the data on the view that we have to write over the presenter. So, MVP was developed mainly to becomes a view very thin and so that view does not know anything about the backend logic which you can write on your application. Everything should be driven by a presenter. So, that's why MVP was are developed. Let's look at the relationship between this components. There is a one-to-one relationship between view and presenter which means that view can hold only one presenter and presenter should only know about one view, right? Because here there is no binder, it's presenter who actually binds the data on the view, right? The relationship between presenter and model stays the same, it's bi-directional. So, let's not talk about that. Now, let's see can we apply MVP on this logic, yeah? The obvious thing which could come to your mind, why are we not using MVVM? View model is also responsible to handle the events, right? Why are we creating something like a presenter? But as we discussed that we don't have binder so that if we want to move this logic to the view model then we have to expose view to the view model which is a violation of the pattern because here you can see that we are updating the UI, we are displaying a dialogue, we are also displaying the toast message. So, if we want to shift this logic to the view model then view model has to know about the view which is a violation of the pattern. So, then we thought let's apply a pattern MVP and let's see that how my after applying an MVP how this code looks like. Wow, it's just one line. Everything has been shifted to the presenter. So, this is my view. You can see here that my view has become really thin now, it's very dumb, it doesn't do anything, right? And everything has been shifted to the presenter. Let's see the code of the product detail presenter. Alright, in the presenter we are passing product as a dependency because this is my model. We are passing a product repository. This is a repository through which I'm saving a product when user adds the product to the cart. Resources as explained by Nazneen if you want to render something and you are depending on the string.xml or colors.xml then you can pass resources and we have a product detail view here. Let's look at the contract of this product detail view. Product detail view can render the title, price, popularity, description. So, this is all my rendering part. Detail view can also display the toast or it can display the dialogue also. So, whatever UI logic which we have to do from the presenter, it is the job of product detail view and my product detail activity is implementing this product detail view. Is this clear? Are you surprised with me? Let's look at the test of this product detail presenter. So, I can write a test for the rendering part which view does. Here, we can write a test that display the toast message on saving the product to the TV. If the product is not inside a TV then save it to the TV and display a toast message. Also, if the product is already added to the cart then don't save it and then display a dialogue message. Product is already added to the cart. We can quickly run this test because it is pure JUnit test. There is no UI dependency over here. So, this test has run like in 0.37 seconds. So, like till six months ago, we were not using the MVP. We just have MVVM in our project and we were just writing unit test for the data massaging part.  So, we have applied two patterns here. MVVM and MVP. Let's look at the bigger picture that after applying this two pattern, how my application architecture looks like. So, here we have view, we have view model. Also, we have model. So, the relationship between this is same as whatever was there in the MVVM. We have view, presenter and model. Also, the relationship between this component stays the same as it was in MVP. The only addition here is this. So, what does this mean? So, actually whatever, so view is very dumb. So, view delegates everything to the presenter and it is the presenter's responsibility to create a view model and update the view based on the view model. So, here now a presenter acts like a binder and presenter is also responsible to handle the user interaction. Is this clear? Yeah, cool. Any questions so far? No questions? Yeah, go ahead. So, here, so what view model, anyways view model does not know anything about the view, but view knows about the view model, right? View is depending on the view model because based on the data whatever we have in the view model, we are rendering it on the view. So, actually there is no dependency of the view on the view model and that was there in MVVM also. In MVVM also there is no dependency of view on the view model. We aren't invoking anything of the view like show to show dialogue of the view from view model. It's only pure massaging of the data. Let's move forward. One more question if you want and then because these are on the pattern then we'll move to the next level of test. Yes, we have we will share the code which is this fine. Yeah, we will share the code which is all of it. It's on GitHub, we push push push in the input in the url so you can take it from there. Yeah, let's let's let's see that what can we do with the integration testing here? Right, so kind of using a mix of the MVVM and MVP, we achieved a good number of unit tests at our end like we could increase the number of unit tests in our in our code base. So, it helped us also scale our team. So, otherwise if the team was growing and we had no confidence of what we are building, we kept stepping up stepping on each other's work each other's features and it and things kept breaking and we came to came to know about it very late. So, this helped us here. This this is this is evolving this architecture as as as we go on working on our project. So, this is about unit when we go to integration, we have so we have tested presenter in isolation. We have tested the view model in isolation, but we haven't checked the binding of these components. So, from the view, the view talks to the presenter, presenter talks to the view model. This kind of binding the collaboration between these components are not tested, right? We need some confidence that this is working fine. So, let me let me walk you through the scenarios for the integration test. First, let me change the build variant. We have tested, okay, the UI, the image, the title, the label, that the cost is coming up on the UI or not. So, we have used Expresso here which helps us test that okay on these particular IDs is this particular ID actually the value is being seen or not. So, we have tested that that everything is rendering fine on the UI. Second one is, okay, are you being able to scroll? So, we have a scroll view on our details activity, right? Are you being able to scroll and then scroll to the bottom and then click on buy and is the product actually getting added to the DB? That's the second test. So, we have also tested interaction with our database. Third scenario is the dialogue of, okay, the item, sorry, is the dialogue of the item already added in the cut actually coming up on the screen. That's the third test. So, let me just run these tests quickly. Need a functional test to completely build the APK, then run the synchronous nothing. So, we could get a good understanding, okay, all my components I tested in isolation are working fine and I'm getting whatever is needed on the screen. So, this is with integration test. Now, there's only one functional test and I'll show you on. We ended up with only one function because everything else was tested and what the function test was, sorry, what the function test is. It's just about, okay, I launched the very first activity, okay, I'll actually open it up. I launched the very first activity, shopping activity. I scroll, I scroll to the data, I can click on the electronic, I click on the item in the electronic tab, then it opens the product detail activity, I click on cart, I purchase it, I press back and I can see that the number of items in the cart has increased. This is what a real user will do, right? This is what your app was intending to help the user do. Go see the details, purchase it and see that my item is in the cart. We ended up with, let me show you the coverage. We actually ended up with 20 unit test, six integration and only one functional. All together the other way, then we were some six months ago with the inverted test pyramid. So, we have, so we kind of achieved the pragmatic test pyramid. So, this is Jacoco code, the Jacoco result, code coverage result. So, this is around for the view model. I have 100% coverage for my product view model. Every single statement is unit tested there and for the presenter, which allows you to save the product, render the product, I have 100% coverage. So, this also gives me confidence everything is tested fine. At the end of it, applying MVVM, MVP, writing of your integration and functional test, we kind of came up to the correct test pyramid, which is suggested, a 70% at unit, 20% at integration and 10% at functional. That is how the ideal, how Google suggests and we, we achieved it in the last six months. So, point we learned and you want to share with you all, unit testing or TDD or you know, the achieving the correct test pyramid is not only for web, it's very much possible for mobile application and mobile application should not be related. Okay, it's a different set of tools, it's a different, it's a different ballgame altogether. So, it's not achievable. It's very much achievable and it has helped us also from the capability of our team also get a faster feedback all the advantages I just discussed. So, yes, that's it from us. Thank you and any questions, please open for questions. Okay, you can go ahead. I'll answer the first one around how do we understand what do we have to, where do we have to test. So, anything that, anything that deals with massaging of the data, like, okay, again, going back to my example or take a book, my show also, if you have to show some Indian currency or some data, which is particularly only for the view. It may have to be later with, let it, let us keep aside from where we got the data, we got the data and we need to render it for the view that we put in a view model. So, anything that is related to massaging, regardless of where the data is coming from, we put it in view model. Coming to where we understand, okay, we need a presenter here, whenever we need to talk back to the view, like kind of, we need to show a toast or we need to show, okay, our dialogue is a loader. A loader has to be started or you need to start some other flow. You need to talk to the view that is when you put it in the presenter. So, that is how we decide the interactions. There is, I don't know, I hope that helps to answer that. I would have to interrupt. I'm so sorry. We are running out of time. We can definitely take the Q and A outside. Let me, we can talk offline. Thank you. Thank you.


So when I did Steve Harvey, that was in my podcast, I just was like, what, what, what, when, yeah.  I'm gonna tell you right now, I'm from Cleveland, y'all. It's not about Steve Harvey. This is about y'all, 85 South, I'm real proud to see that. You know, yeah, because I don't work. I remember when I had $5 in cleaning.  See y'all walking around here, got two shoes. I used to do comedy barefoot, but God has blessed me.  See what he done did. See, I got a gang shoe, I got a whole bunch of shoes.   See, I understand, you guys got to believe in yourself. You can't just walk around here.  I'm gonna tell you what I done did. I done forgot, because you know Steve Harvey ain't, it's ain't about me.  And God has blessed me, I'm from Cleveland, y'all.      I was like, damn, and so Steve, I guess it got to Steve Harvey, so Steve Harvey sent me a text, when I see you in my whoop yo ass, I can just hear him going, yeah.    Yeah, yeah, yeah, yeah, yeah. Yeah, you take me tight. Yeah, yeah, yeah, yeah. See that's the funny part, you think he playing. I don't think but I know Steve Harvey against me. He thinks that he takes the lamb. Yeah, yeah, yeah, yeah, yeah, yeah, yeah.  I'm sure. He gonna walk straight up to you.  Yeah.  I'm gonna have to be him.  You clean, I'm Chicago. God has blessed me. I'm gonna just imitate him.   And he don't know where, I got a knife. And you on the wind. See, now that ain't a skit. All right, Steve. And you don't know.


Hi, I'm Zor. Welcome to UNISOR education. Today we will talk about Galileo's Relativity Principle. Now this lecture is part of the course called Physics for Teens presented on UNISOR.com and I do suggest you to go to this website UNISOR.com to watch this and any other lecture, because every lecture is also has notes, very detailed notes, where basically I'm explaining, well, the same thing, but it's like in a textbook, so you can always refer to a specific topic and read about it, not necessarily to listen to me. Plus the website has many problems and exams for all those who are ready to be challenged. All right, so back to Galileo's Relativity Principle. Now it's called Relativity Principle, but it should not be mistaken for Einstein's theory of relativity. Einstein developed his theory in the beginning of the 20th century and this principle is about 300 years earlier than that. Now although very important developments of contemporary physics like atomic bomb was related to Einstein's Relativity Principle, this Galileo's Relativity Principle is very, very important because the entire history, like 300 years of development in physics, well basically are in some way related to this particular principle. It's the foundation of the physics. Now in the previous lecture we're talking about inertial frame references. Well, this principle is about inertial frame references. Now let me just get into details one after another. First of all the most important formulation of this particular principle is that an experiment which is actually conducted under exactly the same conditions and it's kind of difficult to specify what kind of conditions, but if everything is the same basically. One experiment is conducted in one inertial system and another in another inertial system. There should be no difference in the results.  If you are doing exactly the same thing in two different inertial systems, results must be the same. This is the principle which in more mathematical language means it's an axial. So all these inertial systems are equivalent in the respect that all the experiments conducted in different inertial systems are actually having exactly the same results. Now this principle is very very important from two different standpoints. One standpoint is what's not said in this axiom, what's emitted in this axiom. This is very important and here is why. We do not have any reference to the time. So we are saying that in any two inertial systems results will be the same and we are not mentioning that one should be conducted at exactly the same time as another. One can be in the future or in the past relative to another, which means that the time is actually not a particular argument into this function, the function being the result of the experiment. It does not depend on time. Today the experiment will do exactly the same as tomorrow. What it actually means in more scientific terms that the time is invariant relative to the well particular moment in time or there is another word isomorphic. Isomorphic, which means basically isomorphic, which in plain language means the same. The time is the same. Today, tomorrow, whatever. So the time is isomorphic or uniform or whatever other term you can or invariant, whatever term you can use, that's okay. The only difference is there is no peculiarities in one moment of time relative to another. Now that is a consequence of emitting the time parameter in this particular axiom, in this Galileo's relativity principle. Now another thing which is emitted is location. It doesn't say that these two experiments must be conducted at the same location in different inertial frames of reference, which means location is also irrelevant in this particular case. This location is exactly the same as that location or that location. The entire space is basically uniform as far as the results of the experiment. If the experiment is exactly the same conducted in this particular location, we'll give exactly the same results as in that particular location. So now we have exactly the same isomorphism. The space is isomorphic. It's uniform in every particular location. And the third thing, which is also emitted, that is related to direction. So we can arrange our apparatus, which we are using to make our experiment in one particular direction, or we can turn it in another direction. Or if we are throwing the ball, for instance, as an experiment, we can throw it in this direction or in that direction. Again, direction is emitted from the formulation of the principle, which means our space is, well, unidirectional. I know how to characterize it. Isomorphic is in relation to a direction or there is another scientific term, isotropic. So our space is isotropic, which means it's invariant relative to a direction. So it's isotropic and it's isomorphic, and the time is isomorphic. So these are very important characteristics of space and time where all these experiments are conducted. Now, obviously, this is an approximation and they're not talking about this. It's an ideal kind of a thing. It's like mathematics is not exactly what we have the real world around us. Mathematics is some kind of an abstraction. Now, this particular concept of inertial system and the time isomorphic and the space isomorphic, etc., these are all abstractions, which we believe are relatively close to a reality. And that's why we can live in this much simpler abstract world where our laws are very nicely formulated and receive reasonable results, which are applicable to our real concrete world. So, we were talking about something which was omitting, omitted from the relativity principle. Now, let's talk about what is explicitly specified. Now, what's explicitly specified is that two inertial systems, the same experiment, the same results. What it means is that being in one inertial system, you cannot actually distinguish what is this inertial system is. Maybe it's moving relative to something else to, let's say, stars. Maybe it's not moving. Maybe it's just changing still. Now, you can imagine, for instance, two people, one standing still on the ground and another in the train, which is moving along a very, very straight line with a very, very constant speed. Which we can approximately consider to be an inertial system, as well as the person who is standing on the ground can also be considered as being in the inertial system related to our planet. And we disregard the curvature of the Earth because Earth is very big. We also disregard gravitational force because it's balanced by the force of reaction of the ground. So our gravitation goes down, reaction from the ground goes up, and that's why we're standing still. We're not going down to the center of the Earth, right? Same thing, the person on the train, it does not fall down through the floor because the floor resists. So the gravity goes down, the floor reaction of the floor goes up, and the person can actually sit still in the train. So these two people, they can conduct exactly the same experiment, and one person who is in the train, if the windows are closed, if he doesn't really know whether the train is moving or not moving, he will not be able to differentiate standing still or moving with a constant speed along a straight line. That's what basically this principle is all about. Okay. Now, what kind of experiments actually can be conducted in this case to exemplify this situation? Well, first of all, both people, the one who is in the train and the one who is standing on the ground, can roll the ball. So if the balls are of the same mass, the same size, the same material, etc., they will roll relative to their system of reference in case of the person standing on the ground. So the ball will roll relative to the ground. And for the person who is on the train, the ball will roll relative to the floor of the train. And we can measure the relative speed for one relative to the ground for another relative to the floor. And the speed will be exactly the same. Speed, acceleration, whatever else you can measure. Now, what else, what kind of experiments? Okay, part of water. If you take the part of water and just put it on the train, which moves with a constant speed, it will be no ripples, no waves. It will be a horizontal level of the water. Exactly the same as the level of the pot standing on the ground when there is nothing touching it, right? So that's another experiment. So we can also weight certain things. For instance, you have some kind of a weight and you are weighing one particular object. In one case, on the train, the same kind of object on the ground, they will weigh exactly the same weight. Okay, I think that's enough of different examples. Now, what is very important, what I was just talking about, I was saying that you can measure the speed, the acceleration, the location, the whatever relative to corresponding system of coordinate corresponding frame of reference. For the person who is standing on the ground, this frame of reference is connected to the ground. And for the person who is in the train, it's connected to the train. And these two systems, these two frame references are both inertial. So this relative to individual inertial system is a very, very key word in this particular case. And that's why actually the principle is called the principle of relativity. Because everything is somehow related to the frame of reference. Any movement related to some frame of reference. Because if I am standing still and somebody else is walking past me, now he is actually moving relative to the frame which is connected to me. And I'm considering myself in this frame as standing still and he is moving. But at the same time, there is nothing wrong for him to connect the reference frame to himself. And if he is moving along a straight line with a constant speed, that frame will be inertial. In which case, he will consider himself as standing still and me moving past him. That's what relativity means. Excuse me. Everything is moving somewhere relative to something else. And maybe it's standing still relative to something else. So it's very important whenever we are solving any kind of a problem, we really have to realize what kind of a frame reference we are talking about. What is the frame reference relative to which we are calculating certain things. Okay. Now, another thing is very important. All these relative things. What are these relative things? Location is relative to the frame of reference. Speed, acceleration. Now, all these motion related things are related to some frame of reference, which means they are relative. I'm moving relative to something else. Well, however, the time is not relative. The time is considered to be absolute in the classical physics. By the way, it's not the case with theory of relativity with contemporary physics, but we will talk about this separately. In the classical physics, which was accepted as the reality, which, well, basically, it's an abstraction which corresponds to reality. Let's put it this way. We are assuming that the time is absolute. Now, what it means that the time is absolute? It means that if I have an ideal clock and the person on the train moving with a constant speed on a straight line has a clock, and we have synced that particular, these two clocks at some moment in time. Then the guy is moving somewhere, wherever he is moving. Whatever time passes, our clocks will still show exactly the same time. So, the time is considered to be absolute. Location, speed, acceleration, they are all relative to one or another inertial, usually inertial frame of reference. But the time is considered to be an absolute, the same for everybody. We are considering that everybody's time is moving with exactly the same speed, whatever the speed of time is. If one passenger on the train, then exactly the same second has passed for the person who is extending still on the ground. One second here is equal to one second there. So, there is no frame of reference, so to speak, for the time. I mean, we can always find the time, whatever the time we are accepting as a zero point, and starting from this, we can count an absolute time. But usually the time is measured not from some abstract point, but we are measuring the time interval. So, the time interval will be the same in one case or another, moving or stanging or moving with another speed or a different direction, whatever else. Time is absolute in the classical physics. Yes, Einstein has corrected this slightly. But that's another topic and we will address it in some other time in the future. In the absolute future. All right, so basically that's it for today. Thank you very much. I would suggest you to read the notes for this lecture. It's on unison.com. Go to this course. And that's it. Thanks and good luck.


The COVID-19 pandemic has caused many clinical and translational scientists and staff to work remotely in order to prevent the spread of the virus. This has had an impact on their research programs, as many have been forced to slow down or stop their work due to the lack of face-to-face interaction and the absence of routine activities. In order to better understand this issue, a survey was sent out to Colorado Clinical and Translational Sciences Institute, CCTSI, scientists and staff in April 2020. The survey asked about their experiences working remotely, including any barriers encountered and strategies used to maintain productivity. The results showed that most respondents, 75%, were female, ranging from 21 to 73 years old, with a majority having either a PhD, 44%, or MD, 55%. Additionally, prior to the pandemic, 77% of respondents had never or rarely worked remotely, while 76% reported that it had some effect on their research program. Furthermore, 71% of respondents said that it had slowed or stopped their research. Common barriers included missing interactions with colleagues, 6. This article was authored by Heather M. Gilmartin, Bridget Collily, Annika Hebbie, and others. We are article.tv, links in the description below.


Well good morning, neighbor. I'm all dressed up. Not all dressed up. It's not my Sunday best, but I'd say it's a solid Friday night out best. And it's Friday today too. I didn't even think of that. See what I'm smarter than I think I am. It is Friday. Happy Friday. So we've gone down the road. Probably about 10, 15 minutes. Maybe even more than that. Maybe about a half hour. And we're just gonna check the load real quick. Make sure everything is good back there still. Chevy's very concerned. I would like some pets, please. Please. Could you spare a pet for a Chevy? Maybe. I guess I could. Alright, let's go out and show you this load. This guy here at the rest area. The red truck back here obviously got here really late. And he parked right in the driveway. And people can barely get in here now. Oh well. It is what it is. That's the load. I think it turned out pretty well. It's not pretty much one height. I was happy with it. Used three out of the four tarps I have. I have four tarps because sometimes if the load comes all the way to the back of the 53 foot trailer, I need that fourth tarp. I don't even say so myself. Let's go take a look at the other side. In the light, here you go. Very nice. I like the way that looks. Pull into South Dakota here. I'd like to get another four hours behind me today yet. So we've driven over half hour day already. Time to stall for some fuel. I need some DEF. I'm getting kind of low on that. Stop at this flying J or it's actually a pilot. Several times. You guys should remember it if you've been watching long enough.  I need new wipers. This is Murdo, South Dakota. Population 679. Exactly. That's what the sign said and signs don't lie. It couldn't be 680. Nope. 679. I wonder how often they change those signs, you know? Do they change it every time they have a census and how often do they do a census? These are questions I think about. I know, right? What's wrong with me?  They really like their gambling out here. Get some fuel. Where is it? There's no fifth street here. They're in the back lane. Oh, I hope their DEF pumps aren't frozen. Oh, I really hope they're not frozen. Really preferred if they worked. Looks like they're working. There's no signs on there saying that they're not working. Fantastic.  It's been a very uneventful day driving across the plains. Scenery has been riveting, though. You get a lot of good scenery of the sky. Fueling now, yes. No, not that. There we go. Excuse me, guys. Excuse me. I need to put my belt on.  That's a problem. Chevy, you want to go pump my fuel for me? How about you pump the diesel? No, no, diesel. You pump the diesel and Chevy will pump the DEF. How about that?  Have a nap. How's that sound?  Chevy, you look excited about it.  Are you still growing?   Chevy, I really need to get past. Okay. Sitting all day can really take a lot out of you. Tell you what. Messy night. Temperature is one degree Celsius, one degree above freezing. So everything is melting. Everybody's spraying me. Making me use my washer fluid. Crafted City, isn't this... No, that's Sturgis where that big bike rally is. I'd love to be able to get my motorcycle out of the garage this summer. I'd like to trade it in for a Harley one day. It's just so expensive to register it in Manitoba. You have to pay the whole year's insurance on it, even though you can only drive it for the summer season. You have to pay the whole year, which is $1,700 to $2,000 for the year. And you have to pay it, if you want to do it on payments, you have to pay it within the six month riding season. So insurance with everything else included was over $300 a month just for the motorcycle insurance. So I can't afford that right now. I'm thinking what I'll do this year is I'll probably get a temporary permit and just take it out some days on the nice days. I'd say I'd go riding with my buddy Will, but he sold his Harley this last year. I was shocked. I was very shocked. Sad. I think he was sad too. I don't know why he decided to sell it, but he made a decision. Made a decision and maybe one day I'll get another one. Britt's dad used to also have a Harley. Sold it as well. I know that was very tough for him to sell the bike. But it's just so expensive in Manitoba. They have a very bad bias against motorcycles. I understand that insurance costs a lot, but you go to Alberta and you can register your motorcycle to ride around for like 40 bucks a month or something. Something affordable like that. Why is it over $300 a month in Manitoba? It's not fair, but it is what it is. So we'll see. Maybe if I win the lottery, I'll be able to register my motorcycle this summer. That'd be nice. Anyone know where I can get the winning ticket? Every time I go to the counter, I ask for the winning Lottomax ticket. And every time they lie to me and they tell me, this is it. Nope. Still haven't found it. Let me know if you know where I can go get it. Bell Forge, South Dakota. Remember we stayed here the last time we had a load going out to BC? Seven kilometers. That turn left on US2 Plow. There's like midway truck plaza up ahead here. There was no parking and then someone pulled out just as we were about to give up and leave. So it's pretty late now. It's just after midnight. So I'm guessing that we might have a little bit of a tough time getting parking there. I hope not. Today's Friday. Oh boy. So hopefully a lot of these drivers around here are at home and not at the truck stop. Unfortunately for me, I've got to work. I've got a freight to deliver. People need me. That's what I keep telling myself. Fun fact for you. Did you know that this town, Bell Forge, Bell Forge, South Dakota is the center of the United States of America from east to west? We are right in the middle of the country. Fun little fact for you.  It's bigger than Steinback, that's for sure. And Steinback is apparently considered a city. Debatable. I would rather call it a town. I don't want it to turn into a city. I want it to stay a town. I think I've got a different street. This must be the old downtown. There's the old saloon. Cowboy Back Bar is what it's called. These little western towns, I just love them. Let's see if we can get parking for ourselves here. I just got this feeling it's going to be full. Oh, what do you know? There's a spot right there for us.  I just got to go turn around. Oh, good. See that right there. Oh, can I fit in there? Oh, I can't fit in there. It's the guy parked all crooked. That's not very nice. Park straight. Look at that. Well, just wander around here and hopefully find a spot. Looks pretty full. More people parking crooked. Is it really that difficult to park straight? You're snoring, buddy. It's been a long day. A very long day of trucking. I'm a tired weasel, man. Let me sleep. I'm an old man. It's true. According to the internet, diesel is a senior dog for another two years yet. Then after two years, he's an elderly dog. You're going to go from weasel to old man weasel to really old man weasel. You're such a good boy, buddy. Stop growing up so fast or stop getting old so fast. Stop it. Poor guy. Why can't dogs live as long as we can? Why can't everyone just live forever, right? Anyways, thanks for watching today. I found a parking spot here at the truck stop. Another 2,000 kilometers to go tomorrow yet. That's 12 or 1,300 miles. I'm tired. I'm going to put this together here and go to bed. Take care and I'll see you tomorrow. Please don't forget to subscribe to my channel. I make a new video every day. If you want to see my wife's channel, Brits Beat, it's down below in the description of this video. Go there and subscribe to her as well. I'll see you then.


is Fox 26 Morning News at 9 a.m. connected to you. Melissa is live in the Medical Center right now and she's bringing us reports from one of the pioneers of Texas medicine and we want to check in with her. Melissa. We are celebrating the hard-to-day mic. That is because St. Luke's is now celebrating 30 years of their transplant program. I have a patient here who had a transplant 22 years ago when you barely even heard about transplants plus one of the pioneers right here in our Medical Center. It's an exciting story I can't wait to share with you. I am so excited to be here in the Texas Medical Center this morning because something big here is happening. In fact we are celebrating the 30th anniversary of the the heart transplant program here at the Texas Heart Institute Hospital. This dates back all the way back to Dr. Denton Cooley who has really become a household name. I'm sure you've heard of Dr. Cooley. He's a legend in the world of medicine. It goes back to 1968 when he performed the first human heart transplant right here in our country and the first implantation of a total artificial heart. This was a huge deal that has ended up saving thousands of lives. His legacy also includes the founding of the Texas Heart Institute at St. Luke's Episcopal where we are today. As I said it's celebrating 30 years of life-saving surgeries. At 91 Dr. Cooley is no longer in the operating room but one of the surgeons is certainly taking up where he left off and I'm going to be talking to him in just a bit. But first I have a special patient with us today who knows all too well what a heart transplant means. That's because he underwent one 22 years ago. Please welcome Randy Creech with us this morning. Good morning to you. 22 years ago you had to face the news that you had to have a heart or you wouldn't make it. Let's go back to what happened and why you had to have a heart transplant. Well back when I turned 40 things really do sometimes go south. In a normal physical find out I had a little problem and testing showed later that actually had a viral infection in the heart muscle and began to cause congestive heart failure and some irregular arrhythmias and it deteriorated into the point where transplant was the only option to save my life. When you think of a virus you certainly don't think that that could ever lead to a heart transplant but you did it and when we take a look back here at this heart and you see how complicated it is can you believe that they were able to pull that off and save your life and you've gotten 22 years and and hopefully decades to go. Every day it's still a miracle to me but the real miracle is that a family somewhere would love others enough to share the gift of life and that the technology and the medicines advance to the point where we can lead in many cases you know normal lifestyles and enjoy years of life after a transplant. We are here in the museum at St. Luke's where they have all this history of how far heart transplants have come and it is truly incredible. Now you have spent these last few decades helping others going through the same thing you drive in every single day or every single week to this hospital to help people going through the same thing can you believe how far it's come? We apologize for those technical difficulties Melissa will try to get that signal back up and we'll check back with her in a little bit. I'm live again with Randy Creech a wonderful man who has survived and lived 22 years we give a heart transplant thanks for sticking around with us I'm sorry we lost you just a moment ago because we were getting to an intriguing part where we were talking about you found out who you're who the person was who donated the heart to you a 19-year-old young man who was the same age as your son at the time and very emotional for you and certainly for his family as well but you got to meet them. Yes I did and it was a great experience someone asked me to describe the emotions I guess probably my best description would be it's like the saddest you've ever been because you've met someone that lost someone they really really loved but the happiest to to be able to at least attempt to thank someone for saving your life which is an incredible gift. And the young man's dad embraced you and you know that he probably was hoping to fill the beating heart of his son that his son lived through you again. Yep I just feel I have an obligation to you know to that family to to take care of myself and to take care of the gift that they gave me and God's blessed me with all these years and you know how many more I'll have I don't know but I am really thankful for each day and very very thankful to that family. I think it's a real wake-up call when we hear stories like this that that family gets to have a part of their son still alive because there are very few donors when you really think about how many people are in need of a heart and other organs right now. There about a hundred and fourteen thousand people in the United States waiting for life-saving transplants of some particular organ each day 18 people will die because there's not enough donors so that's why I share the news about you know registering to be a donor and thinking about giving life to others because incredible gift obviously. It's so amazing to be here in this museum and see how far it's come and we're going to be talking to the doctor in just a little while who is one of the pioneers here who has seen it come from from the very humble beginnings to how far it's come today to save people like Randy. Randy thank you for being here today.  Yep I'm certainly gonna enjoy them and hopefully I'll have more but who knows but that's the promise and that's the hope. I'll make God bless every one of your days thanks for talking to us and again we'll have that doctor coming up to you. Welcome back everyone I'm live at St. Luke's Episcopal Hospital this morning with they are celebrating 30 years of their heart transplant program and right now I'm joined by one of the pioneers here at this hospital we're talking about Dr. Oh H. Frazier better known as Dr. Bud Frazier good morning to you. Good morning. What an honor to be with you today we take a look at the history here in the museum at St. Luke's of how far we've gone and your research helped lead to these heart pumps so we're talking about just a completely different step even than a heart transplant. Well I've been working on these pumps since I was a medical student we've made a lot of advances in the field since then and they've already been here at the at the Heart Institute. This is the first continuous flow pump that we implanted in the early 80s and that's a very good pump and it was worked experimentally. These pumps actually have gone on to become very small and they're very effective and they generally have been much more widely used than a heart transplant which is always dependent on a donor. Unfortunately we always have to depend on someone else's misfortune in order to help these poor patients. These pumps help us a lot in that.  Well I think we just do what we we address the problems as they come up you know we have a dying child you do what you can and it was a very gratifying experience but of course the child died after ten years and that's what we've got to do we got to improve the longevity of these patients so they can live a normal lifespan and currently we can't do that. Everything I read about you shows that you're quite the humble man considering you've saved thousands of lives. Any idea how many about how many heart transplants you've done? Well I've done about a thousand but it's still you know there's still a lot of patients. The thing about medicine is very humbling you know we've lost two patients this week that we could have saved if we'd had a had a good total heart replacement. You've made a huge difference here in our community and it's such an honor to have you here in the Texas Medical Center and I understand that in school you will thought about being a lawyer and your mom said when you decided to go on to being a doctor that I don't think you'll make a very good doctor is that true and I guess you heard her wrong. I didn't hunt you know I wouldn't she thought I would be better if I could like to hunt and I said you know mother I don't like to kill things and she said and I don't think you need to be to kill things to be a good doctor and her response was well I don't know but it might help I as I grew older I realized what she was talking about but but it is very gratifying to have been able to make these contributions in our Medical Center. I think our Medical Center is probably not appreciated as much by the people even in Houston the largest Medical Center in the world. Well Dr. Frazier thanks for talking to us this morning I know you're a busy man and you've got to probably get back to the operating room great to talk to you this morning. Thank you very much. We'll be right back.