Hello everyone. Good afternoon. Welcome to the next session on how to develop Selenium tests using JUnit 5. And for this we have Bonnie with us. Welcome Bonnie to Selenium Conf 2020. Lastly, thanks to BrowserStack for sponsoring this session. And Bonnie without further ado, the floor is yours to take it from. Well, thank you everybody for joining me today. I'm going to present a workshop, a small workshop, and I did developing the unit 5 tests with Selenium. This is my slides. They are available on my slideshow. So, well, basically what I'm trying to explain today is a tool. Okay, I'm going to explain a tool I have created to create as the title suggests how to create Selenium tests with JUnit 5. And we can see in this slide that of course Selenium and JUnit 5 are the most important technology for this technology, but also Docker. I think I suppose many of you have heard about Docker and probably some of you use Docker. These three technology and the main building blocks of what I call Selenium Jupiter. Okay, Selenium Jupiter is what I'm presenting today. It's a JUnit 5 extension for creating Selenium tests. So, basically all that I am explaining today is open source. The tool, Selenium Jupiter, of course, is open source. The documentation is available. And what we are going to do today is to run different examples which are available in this URL. Okay, this repository I recommend you to clone or fork in order to follow the examples because the funny part of this workshop is to touch the technology. Okay, so if you click on this URL, you can go to the samples. And the presentation is divided basically in two parts. First, I'm going to explain a bit more important. This is about JUnit 5. Very briefly because we don't have much time. We have 45 minutes. And then the most important part is about Selenium Jupiter. Okay, how to create these tests, these Selenium tests using the programming model called Jupiter. So, let's get started with JUnit 5. JUnit 5, well, is the last version of the popular testing framework JUnit. Probably you know about it. It was raised three years ago now in 2017. And in that time, I followed the development of the tool very closely because I wrote a book for a pack called Mastering Software Testing with JUnit 5. And in short, JUnit 5, well, is a brand new testing framework which I'm going to present briefly. This is the architecture. We don't have many time to get all the details of the figure because there are many, many details here. But, well, the brief idea of this is that JUnit 5 is a complete new framework. It has nothing to do with JUnit 4. The architecture is brand new. It's completely modular from the scouts. And it has three main components. This big component here is called the platform. And it's intended to run different type of tests in a Java virtual machine, not only JUnit, but any kind of test. It's somehow, well, it's a revolutionary aspect of JUnit 5. It's not only about JUnit, but tests in general. Inside a platform, we execute what they call an engine. Engine is basically a programming model. And out of the box, JUnit 5 provides two engines. One for legacy tests of JUnit, which is the second component of the JUnit 5 architecture. This one, the vintage. I need to execute JUnit 3 and 4. And the most important part for tests and developer is here. It's the Jupyter component. It's the brand new programming model for JUnit 5 tests. And here is the important part for us. Today, we are going to learn how to create these tests. So in order to execute JUnit 5 tests, we have different options. We can use a build tool like Maven or Gradle, typically, also and, but I suppose Maven or Gradle are the most usual build tools. We can use an IDE, like Eclipse, or IntelliJ, or Visual Code, or Netpins. These modern IDs support JUnit 5 of the box. There are three options, which is less important. Here in this presentation today, I am going to use Eclipse. But you at your home can use whatever ID you have, or Maven or Gradle, using the command line. So in order to set up JUnit 5, for example, in a Maven project, we need to copy and paste these lines. Again, I'm going to go deeper in the detail because here it's very interesting why all these lines are in well, as supposed to configure JUnit 5. But basically, I would say that we need the engine of JUnit 5 and also we need to specify a version of the Maven certified plugin, which is supposed to run the test in the Maven lifecycle game. A Gradle is very similar. This is the configuration required to run JUnit 5 in a Gradle project. It's basically the same, but with another syntax. And if we do that, we are able to run JUnit 5 test. And if you are familiar with JUnit 4, well, at JUnit 4 test, we have a class, a Java class in which we annotate the method with an annotation called test. Well, in JUnit 5, it's the same. We have the annotation as the main building blocks to create a test. And in JUnit 5, the names of the main annotation has changed. Basically, the test is the same, the annotation to mark a method as a test to be executed. And what happened before is the before all and before each. And what happened after is the children is the after each and after all. This is somehow the lifecycle of JUnit 5 test. So here is again the same idea. We have a test, which is supposed to exercise and assert assistant under test. And an important part of JUnit 5 test, well, in general, a test is the assertions. We are supposed to verify something about assistant under test. And for that, we need to compare what is coming from the assistant under test, that is the real outcome with something we expect, the expected value. We have a comparator in between, like equals, not equals, whatever. And as a result, we have a veredict. The test passed or the test failed. Well, regarding the assertions, JUnit 5 provides a rich variety of assertions, but we all can also use a library for fluent ascents. Maybe you hear about this hand crest as a date of our trap. In fact, in this workshop, I am going to use trap. Okay? Well, it's a relative new library. It's by Google and it's okay. So in the samples, I'm going to use trap. Well, and JUnit 5 has many, many, many other features. Okay? I recommend you if you are interested to go to the documentation and have a look. There are a bunch of features, but we are not having time to review them. Okay? Last but not least, about JUnit 5, we have an extension model. JUnit 5 provides Jupiter, which is a brand new programming model, but also it's an extension model. And this extension model allows to create new feature on the top of Jupiter. Okay? When I wrote the book, I told you at the beginning in 2017, I realized that this extension model was very convenient for Selenium. Well, because it was very new, what I did is to create a tool which used this extension model, which allows to create Selenium tests with JUnit 5. And this is what I'm going to explain. This is the second part of the talk and it's the most important part because here we are actually going to understand how to create JUnit 5 tests with Selenium using this extension. So what's the motivation to create this tool, the Selenium Jupiter? Well, when I create this this tool, I realize that a JUnit 4 test can be, well, somehow, can be a bit complex because it has a lot of details that makes the test difficult to maintain and led to flaky tests. I will explain this later. But my idea to create this extension is to create clean test code, reduce what we call the bollier plate. I'm going to explain this with code, but which is the way we are going to see this easily. Then, in my opinion, using Docker, it's interesting in very different aspects of software engineering. But in testing, it's very, very interesting. And in web and mobile testing, it's maybe more interesting because using Docker containers, we are going to be able to run different browsers on 100 devices in an effortless manner. So my idea is to integrate Docker in the programming model implemented by Selenium Jupiter. We are going to see this with code. And also, Selenium Jupiter provides advanced features. Well, I have to say that I've been working with testing more than 10 years ago, I did my PhD dissertation focused on software testing with a strong focus on Selenium. And I have some, well, speed is about that. And my effort, I put somehow in this tool. Well, I'm going to explain here some of these advanced features for testing with Selenium. So with all of these ingredients, I have created this tool. I maintain this tool from three years now, I think. And today, we are going to see at least the most important parts, not everything, but at least, I hope, the most important, the most relevant parts. Well, first, to use Selenium Jupiter, we can use, again, maybe an upgrade there, typically. And we need to incorporate these, their coordinates in our project, like this or like this. The last version of Selenium Jupiter at this moment is 335. And now we are going to see the code. This slide basically, what I'm trying to illustrate is that we are going to compare, on one hand, the whole world using the unit 4 and Selenium, which is okay. It's still working. And on the other hand, what is the new primal AI I'm proposing, which is the unit 5 with Selenium Jupiter, this extension. So now we are going to start getting fun, I hope, because we are going to use code, which is funnier than my voice.  I hope you can clone or fork. And first, I'm going to show you this. This is basically a Selenium test in a unit 4. This is a unit 4, okay? Notice that we have a test here. Basically, it's a test using Selenium WebDriver to assess the documentation of Selenium Jupiter, open this page and get the title and assert if the title contains that. But in order to do that, if you are familiar with Selenium WebDriver in Java, you know that you need to do this, which is the driver resolution. You need to download the Chrome driver proper for your machine. In this case, it's a Linux machine. Proper for your version of Chrome. In my case, it's Chrome 84 or 85. I think it's 75. And I need to do this manually, okay? This test is not portable anymore. This is in my machine, but probably not in yours. And this is very bad, okay? Because, well, in the long run, this test is going to fail because Chrome is an evergreen browser, meaning it's going to update automatically. And when the browser version changes in the long run, this version of Chrome driver is not going to be compatible. So by definition, this test, this manual test, in the sense that I made the resolution manually, is going to fail, for sure. This test is flaky for definition, okay? So, well, if I run this test, run as the test, the test has passed. We don't see the browser because it's in my other screen, but the test has passed, okay? Well, not with DL so far. So we are going to compare this test with what I proposed today, which is Selenium Jupyter, okay? This is the test. I'm going to move like this, okay? As you can see, the test is exactly the same. The test logic doesn't change, but everything, the recipe code has been reduced dramatically. We're going to review this. First, we are saying that I am using Selenium Jupyter. This annotation is provided by JUnit5, I'm saying this, okay? In this class, I'm going to use the extension Selenium Jupyter, okay, which is in my class path, because I already did with maybe. And then here is an interesting feature of JUnit5. We have dependency injection, okay? We can declare parameters at method level, and these parameters, someone is going to be in charge of instantiation probably these elements. And this element is the extension, okay? Here what is happening is that, well, I declare a variable of the web driver hierarchy, and Selenium Jupyter is in charge of different things. First, internally Selenium Jupyter used another project of mine called WebDriverManager, which do this in an automated manner, okay? The driver resolution is done by WebDriverManager, internally used by Selenium Jupyter, okay? So we don't have to take care about the driver anymore. We only declare which type of driver we want to use. For example, in this case it's ChromeDriver, meaning I'm going to use Chrome to verify a web application using Selenium Jupyter, okay? And also we don't have to take care about the instantiation and the release, okay? What we do here is the proper instantiation and the proper release of this element, meaning close the browser. That's it. Basically, this test is the same, but using Selenium Jupyter, okay? And as a summary, I need only to declare the driver, the variable driver I want to use. Well, if I run this, of course, this is going to, hopefully, it's going to work, okay? But, well, in my opinion, I'm going to back to the slide. In my opinion, the battle between the old world and the new world is for the unit five, and Selenium Jupyter, because it has many, many, many, in my opinion, advantages. So here we can see the valid types for this dependent injection, not only ChromeDriver, but FirefoxDriver, all of these drivers are allowed by Selenium Jupyter. Only changing the type of the variable here, I change the browser I use. If I go to this method and I can change like this, here I'm going to use Firefox, okay? And also, I have more examples here. I can use several browsers, okay? Not only one browser, but two different browsers. In this example, I'm using two browsers, Chrome and Firefox in the same test, okay? I can declare whatever browser I want. Also, Selenium Jupyter provides integration with Appium, we will see an example later, and Selenite. Selenite provides a friendly API to use Selenium Jupyter in Java. If you are a user, you simply need to declare a Selenite driver type here, and you are going to use the last version of Selenite in your unified test. So, this is about local tests, sorry, local browsers, okay? Using local browser. I am running a test against my own local browser, iPhone, Chrome, whatever. The second big feature, let's say, about Selenium Jupyter is using remote browser, not only local, but remote. And for that, Selenium Jupyter provides two types of annotations, which are called driver URL and driver capabilities. We have, I have two examples here. One using Soslab. Maybe you hear about Soslab. Soslab is a cloud solution for providing web browsers and mobile devices for Selenium tests. We can say that as browser as a service, or mobile devices as a service, and it's very convenient, but you need to pay for that, okay? And also, we have an example about APM, which I'm going to run as an example. I come back to the code, and here in the remote package, I have these two tests. We can take a look. I'm going to use this one, the APM test. As I said, there are two annotations provided by Selenium Jupyter, driver URL, and driver capabilities. These user annotations are used at field level, in this example, can be used also at parameter level, okay? Basically, what I'm going to use, I'm going to say here is, well, I'm going to use an APM driver, because I'm declaring here, and to connect to the APM server, I'm going to use this URL and these capabilities, okay? I'm going to ask for a Chrome browser inside a mobile device, in this case, it's a Galaxy Nexus API 13. Well, I have prepared this environment, okay? You and your computer probably don't have this, but in order to run this, we only need the Android Studio. I'm going to run this. Basically, we need the Android Virtual Device utility here. It's open, so you can download it if you want, and I'm going to, well, to start this device, and also I need the APM server, which is a node application. You can also install it if you want. And you can see here that the APM server is listening to that port, which is precisely the port I'm using to connect, okay? So if I run this test I'm going to put like this. The test is again the same, okay? It's the test which opened the Selenium Jupyter documentation and verified the title. It's not there. And here you can see automatically in the mobile device that the test is running, okay? Not with the allocate, basically the same, but using this kind of remote driver capabilities. Okay. Let's load this. And now let's move on to the third part, third important part of the talk, which is about Docker. In my opinion, it's the most relevant part of Selenium Jupyter. As I said, Docker is a well-known technology to run portable containers. Basically, Docker has two important parts, the Docker engine, which is something we have to install in our host to run and create containers, and also the Docker Hub, which is like a cloud capability to push and pull Docker images. So Selenium Jupyter provides Selenium's integration with Docker using again an annotation. Since the annotation and the big blocks of the unit five, Selenium Jupyter also use. Because an annotation, in this case, I provide the annotation, Docker browser, to specify different types of browser and mobile devices to be used in Selenium Jupyter test. So the question is, what kind of browser we can use? We can use Chrome, Firefox or Opera, many different versions of this browser, even beta and unstable versions. And this version is maintained by the people of IOCube and the people by Elastest. These two projects are constantly maintaining these Docker images in Docker Hub. And Selenium Jupyter uses this work because this opensource and we basically pull these images to be executed in our machine and support our test. Also very interesting, we can use H and Internet Explorer inside the token container. Well, I can show you this running. The bad part of this is, well, H and Internet Explorer are supposed to be executed in Windows and because of the license, we cannot upload the Docker image and we have to build the image in the local machine. I did my machine and this is working, but in order to make this to work, we need to build these images locally. We need a license key. And finally, we have Android devices. These images are also in the Docker Hub. We can use these images provided by the Docker Android project. And all of these images can be used to support Docker browser within Selenium Jupyter. So let's get back to the code, which is the funny part. And here we have an example about how to use a test using, in this case, Firefox in Docker using the beta version. Here are the different important parts. First, Docker Roses, we need to specify which time of browser we want. And the supported types are Chrome, Firefox Opera, and Explorer and Android. Basically, what I told you in this slide, here we have the Java Enum to select one or another browser or device, in the case of Android. And then, optionally, the version. If we don't specify the version, by default, it's the latest. This is very interesting because by default, what Selenium Jupyter does is to connect to Docker Hub in the moment we execute the test and check the latest version. So this test is going to be somehow an evergreen test because we are going to use always the latest version. We can also use beta. We can use also an stable with this wheel cut. And we can use also this label, latest minus a number. Latest minus one means the previous version to the stable. For example, 85 is the Chrome stable. If we do latest minus one, we use Chrome 84. And this change dynamically, depending on the latest version of the Chrome, this text works in a sense or other. So let's get back to the code, which, as I said, is a funny part, in my opinion. And here in the package, Docker, we have different examples. For example, this one. This one has to test one using Chrome and another using Firefox beta, in this case. Well, if I want this, like this, I click the shortcut to run this test. Well, in this case, we are not going to see anything because everything happens in Docker. We can see the logs, which is not the most funny in the world. But we can see that we are using, in this case, Firefox beta. We are connecting to the Docker browser. And then when the test finish here, and this is the second test. In this case, we are using Chrome 85, which is the latest. For example, here, we can specify a given version. We can play with this. We can say, sorry. At the version, I don't know, it's 84, for example. I'm not going to run this. In this case, what is going to happen is that the test is going to go to, you see, 84. We have changed a version, simply changing a parameter in the test. If we don't say nothing, it's the latest by default, we can say here, for example, that. Well, this is the basic part of the new Jupyter using Docker, but there is much more, because using Docker browsers allows to, well, to use our rich variety of features. In fact, something very interesting is, we're going to try to see everything in this slide. First, the remote access with BNC. In this case, I run, we haven't seen anything. We see the trace. But very interesting, we can actually see what is happening inside the container. For that, we have BNC. BNC is desktop remote technology. And simply enabling BNC like this, by the way, this is the second way JUnit 5 provides the capability to define which extension I'm going to use. It's basically the same like this. The annotation extends with Selenium Jupyter. But in this case, I have access to the object. It's the same. I'm telling here, okay, I'm going to use the extension Selenium Jupyter. And in addition, I have the object. And in the object, I have the API provided by Selenium Jupyter. And in the configuration, I can make a lot of configuration. I recommend you to take a look to the Selenium Jupyter documentation because there is a bunch of capabilities. In this case, I'm saying, okay, I'm going to use BNC because by default, it's not enabled. Well, again, I'm going to use Chrome. In fact, we're going to make this or funny. We're going to use H, okay? Because Chrome, well, it's a well-known browser, but we're going to change this using H, okay? If you don't have this image in your computer, continue with Chrome. Chrome is going to be loaded automatically. But I have the H image prepared. And here we have the usual test I'm using in this presentation. And I'm going to wait a bit longer to play with the browser. Let's see. I run this test again. In the console, it's going to appear a URL, okay? That URL is going to be used to connect to BNC through a web application, okay? So because of H, it takes a bit longer than Chrome because here it's starting a whole Windows system inside a local container, but with a memory snapshot to be able to do it shortly. Here we have a URL. I am going to move this slide here. Yes. This is Chrome. This is the Chrome I'm using, okay? And this is a real Chrome, okay? I can navigate here. I can use... It has connectivity. It's working. Well, it has been closed because the test has finished, okay? Here, as you can see, the test has finished. And, well, I put the wait to 25 seconds. And after that, the test finished, stopped, everything. And for that reason, as you can see, the BNC connection has terminated. But the funny thing is we can interact with the browser, simply using this, okay? And, of course, we can change the browser, simply changing this, and read from it. But we are going to move forward to another very relevant feature. In addition to BNC, we can record what is happening in the browser. And here we have an example, okay? In this case, I'm using Chrome latest minus one, which is going to be 84, because now today the stable version is 84. In the future, this would be a different version, but today it's going to be 84. And what I'm telling here is, okay, enable the recording, okay? By default, the output folder is the same as the project. We can say that. But I'm going to show you here in my machine. This is the, no, it's okay. It's an individual example here. I have the source code of this repository. I'm going to run this example, okay? In this case, I have an active wait of five seconds in order to, well, to make a video of some seconds, at least, because we are doing the same test again. We're checking the same Jupyter documentation. And the test passed. But the interesting is that here has appeared an MP4 file. And this file, as you can see, is the recording of my, of my test, okay? Simply changing a line, I have the recording of my test. And this is very convenient to, to debug test. If you are Selenium, whether testers, probably many of you are these kind of people, you know that the most, one of the most, well, important things is that, well, we have a testing, a test which fails. Now we need to find which is the underlying fault. But what happened? Why is this happening? Well, a recording might help somehow. Not always, but a recording can be an offer step in that direction, okay? To diagnose what has happened with my, with my sister on the test. Then, okay, 10 minutes. Yeah. I'm going to go fast. I have to say that this workshop was scheduled at the beginning to 90 minutes. And I can't be speaking here a lot, but, well, I'm going to go fast. We have Android. I'm not going to use, to run this, but we can use Android also. And this, I think, I'm going to explain at least a bit because I think it's interesting. The template test is another feature, okay? It's a different feature provided by the Selenium Jupyter. I'm going to show you an example, okay? What is that in plate? What? Here, I have different examples. Basically, what I'm telling here is that this is not a test. This is a test in plate, okay? It's not a regular test. It's a test in which, well, the data is going to be provided with someone. And in this case, by default, the template is what I call the browser scenario, okay? It's a file which define which browser I'm going to use. It's defining in JSON, okay? It can be defining also in code, in Java code, but by default, it can be defining in JSON. And here, you see we have a Chrome Indocker version-late test, a Chrome Indocker-based version-late test, and one beta-less table. Okay, I'm going to reduce this in order to make this quicker, but I promise this is what this works. If I run this test, what is going to happen is the same test is going to be executed twice, in this case, one from Chrome Indocker, latest version, and one from Chrome Indocker, latest minus one. In fact, I'm not going to run here. I'm going to go further, and the last part of my presentation, I think, is going to be this one, the integration with Jenkins, which is something very relevant in my opinion. Well, Jenkins provides senders integration through this plugin, the Jenkins attachment plugin, meaning that the files generated by Jupyter can be read from the user interface in an easy way. I'm going to try to do it quickly. I have here a local instance of Jenkins, okay? I'm going to execute, and here I have prepared a Jenkins with a couple of jobs. It's searching. This is my local instance of Jenkins, and as I said, I have a couple of jobs prepared here. For some reason, it's taking long, but, well, here I have a couple of jobs, and I was speaking about the templates, okay? Basically, this job, what this job does is to, I can show you a bit, is to run a single test of Selenium Jupyter examples here. In this case, I'm doing something a bit, well, a bit more, this is self-scripting. I am grating the JSON file here in the same text configuration, which means I can change this simply in configuration. Then I'm running this test, okay? I run this then, and I'm going to do this configuration to store the recording and the screenshot. That's something I didn't mention, but another diagnostic technique provided by Selenium Jupyter is the capability to make screenshots at the end of the test. I know I didn't speak a bit fast, but I want to show you this in action. If I run this, this is going to execute the same test three times because the scenario defines three different types of browsers in the containers. The interesting part here, I'm going to show you the previous execution, is that when the execution finish, here is the test, okay? All the generated files are available from the user interface. This is the recording for the first test. This is the screenshot at the end of the test, and the same from the rest. This is Chrome, and this is Opera, for example, okay? As you can see, this is Opera in another container. In my opinion, this is very interesting because you can debug the test by inspecting what is happening in the recording or in the screenshot. To conclude, Selenium Jupyter is a Java tool that can be used in Java, but also can be used by a different programming language. For that, Selenium Jupyter provides two utilities, let's say. One is a command line interface tool, okay? And the second is a server, okay? We are going to see both, I think. The first one, as a command line interface tool, can be executed in two different manners, okay? From the source code, which is here. And also, for each release I made of Selenium Jupyter, I also made a release of what we call a FATJAR, that is a JAR file containing all the dependencies. So, if you download the FATJAR from GitHub, you can use the command line interface utility, for example, like this. I'm going to copy a command here. No, I copy 2x, sorry, like this, okay? I'm telling you here, okay, I'm going to use Selenium Jupyter, the FATJAR, in this case, to see a Chrome, in this case, version beta, okay? What is going to happen here? This is used for manual tests, because I don't have a test here, but what I have is basically the BNC connection to that container, okay? Here I have the URL. If I click this, I see here, that browser, okay? I have this browser, and as you can see, it's a working browser, okay? Here, I think, yeah. I have here the version, which is the 85, which is the beta, okay? And if I do this, I have five minutes, maybe? Okay, I'm going to conclude then. I'm going to conclude, yeah. As a server is like this, this as a server, and what is happening is, this is a Selenium Grid server, okay? You can use another test. I'm going to do this very, very, very fast. This test, use the Selenium server. You can run like this. Basically, it's a test. This is a JavaScript test, okay? But using the token container provider by Selenium Jupyter, okay? Okay, this, and you can see this is working, but this is the trace, and that's it, okay? It is that Selenium Jupyter can be used also for other users different to Java programmers. So, to conclude, well, Selenium Jupyter has a branch of capability, but it has many, many more. As I said, this question was supposed to be longer. I had to speak a bit, well, quick, but if you are interested in this, I recommend you to take a look to the documentation. And this project is a living project, I expect. I want to maintain this in years, and I have many different new features in the roadmap. For example, improve the test template support. For example, specify options. Using Kubernetes to improve performance test, which is something I didn't mention in the store, but, well, it's something interesting. And also improve the diagnostic capability by gathering mechanism of the project console, which is something very, very interesting, which is still to be doing a lot of it. And that's all. Sorry for speaking so quick. I think we have some time for questions. I don't know if we are running out of time, maybe. I feel very bad to have to pause you, Bernier. It was so interesting and exciting, all these features. And would have loved for it to be an actual workshop, not just 90 minutes, but people can participate and learn how to use Selenium Jupyter. It can make life of automation so much easier. Test will become so much stable. So thank you very much for sharing these experiences and what you've been developing. And thanks to our sponsor again, Browser Stack for sponsoring this session. Thank you, everyone. And talk to Boney in the VIP launch. Take care. Bye-bye. Thank you. Bye-bye.


r time that's my understanding all right sounds like that's what the motion was thank you great uh well thank you everybody thank you rafael and raiza and and tara uh we will move on now we have no written communications and we are on to our second public comment for non-agenda matters discussion if there is anyone uh who would like to speak go ahead hit raise hand on zoom seeing none and i know we already did our voicemail comments as well uh we'll close public comment and we will adjourn tonight's meeting so thank you everyone for participating and we will see you next tuesday


If you're on your medical journey, you are likely making this big mistake. If you find yourself going through your share of days and weeks wondering where all that time just went by, what value even came from that time, you are likely failing to win the day. So after now years of training, here's how I minimize essentially going through the motion and on the flip side, making sure that I'm winning every single day. Here's an example of what this would look like. In the morning, you would spend a few minutes asking a few questions, like which tasks do I want to make sure that I get done today to be considered a win? How do I want to approach my schedule for the rest of the day? And what kind of experiences am I looking forward to and want to reflect on at the end of the day? And on the flip side, spending a few minutes in the evening, ask yourself, did you get those tasks done? How did you approach your schedule? What takeaways, lessons, experiences, failures, were you able to take away from today? That could be a value to you later on in your future. Simply going through this process allows you to give each day some kind of purpose, whether it's good and bad, a takeaway that you can use in the future to help you grow and progress. And hopefully that helps you on your journey. And if you enjoyed this strategy and you want more for your medical journey, make sure you hit that follow for more tips and tricks coming your way.


Yeah, what's up guys welcome to training reviews so DJI Osmo pocket I took it out for some testing of the video and photo quality in low lighting conditions specifically at night time So what I've done is I find the darkest place I can go which is into the forest or the national park They had a little light show that was going on there So I wanted to go there into pitch darkness and see how the video came out on just looking at some of the lights That they've got on the trees Some of the structures they've created and actually see is a low lighting really good on the Osmo pocket So I've taken a few pictures. I've taken loads of videos I've created a little montage for you guys to have a look and I've recorded this on a 1080p resolution at 60 frames per second So hopefully it will give you an idea of its capability at night time recording. So let's just get straight into it Into water when they hear the sound of empty streets Yesterday is gonna sleep So all that's left is you and me in this yard only thing I say The words I say close your eyes and let us fade away A secret place for you and the voices and the time is running out of sight Whispers that the walls are listening when you walk Can do each other's eyes There's no one left, but you and me all right guys, so that was it So in my opinion, I think that it does a really good job There's a lot of dark areas in some of the videos that I've taken which obviously It's natural because it was pitch black when I was actually there But when it was picking out the colors in the lights, I think it was doing a really good job in the photos Obviously, I think if you took your SLR camera, you have a lot more settings to play with But the ideal situation is to have the Osmo pocket connected to your phone So you've got a ton more options to actually change the ISO change the aperture Change the shutter speeds and that kind of stuff, especially in low lighting conditions So on its own, I think it does a good job with the phone connected. It does a great job So that's my opinion. I hope you guys like that as well So let me know in the comments below on what you think the Osmo pocket is like in very low lighting conditions as well If you have any other questions, if you'd like me to test anything else with the Osmo pocket, then do let me know Otherwise, I hope you subscribe. I hope you like this video and I will catch you guys at the next one. Take care


Hi this is George Gilbert. We're on the ground at the Marriott Marquis for the Data Science Summit in San Francisco. I'm with Sandy Rizza of Cloudera and Sandy as part of one of the largest Hadoop distributors has had a lot of experience in helping take customers down the journey towards machine learning applications.  What are some of the key skill sets they need, the data they need to put in place, the tools they start out using? I don't hold the microphone. Certainly George. So yeah just some quick background. I work on the data science team at Cloudera and a lot of what we do is help customers get stood up with more complex analytics use cases on Hadoop. I particularly focus on Spark so often when I'm helping someone out they're using MLib or the associated tools in the Spark ecosystem. Of course there's a lot that surrounds the ecosystem. Often we'll get to customers and they'll have no data on the cluster and it's like can we figure out a way to take all these different data sources and put them together. So there's sort of a broad range of things that need to happen before you can get to a successful data science POC and generally it starts with taking a bunch of data and putting it somewhere. Okay and once you collect the data sort of what has to happen to it? Who has to work with it so that you sort of have a good inventory and so that you know sort of how to bring the different pieces to bear on each other? Yeah, I mean so typically there will be data engineering teams at some organizations. Those might be separate or distinct from Hadoop operations teams and so those teams will be responsible for taking data, normalizing schemas maybe stuff that a traditional DVA might do for relational databases in a different kind of organization. Okay so once you have the data is it with the data in place that you determine what problems that you can solve with reasonable you know risk and reasonable cost or is it the other way around or is it a mix of the two? Yeah I think it's a mix of the two so you know often we'll go somewhere and they'll be like this is the amount of data that we have it's pretty set rigidly and then we try to figure out what can we do with this you know given this data what sort of approaches are the most useful. In other situations they want to ask us a little bit more about what data sources they can wrangle to solve their problems. Does it make sense to think of a common customer journey in terms of greater sophistication of the problems they solve and greater business impact or is that perhaps more like an industry specific type of question? Yeah I think so I mean we always say start slow so take some small data set that you have maybe not small in size but small in complexity take some sort of manageable problem maybe an existing problem that you're solving with a more rules-based approach and figure out some way you can use analytics or complex analytics machine learning etc to improve upon what you have. Can you give us some examples of where you start small and then why for instance Spark has become so popular now as the almost like default you know tool? So I'm pretty sure there's examples where you know fraud is a pretty common use case going to different banks helping them out with different kinds of fraud detection so they might have a specific data set they want to use that'll help them enhance their ability to automatically detect people and we'll take them and use various ML of algorithms to you know develop that. Now does that sort of start off in batch mode and then get operationalized say once a day or once every you know six hours with the goal of making it you know close to real time? Yeah so that's perhaps the next step on the you know data science journey you have a model that you think works pretty well and you have to figure out how you want to put that model in production it's fairly use case specific so with fraud that's often you know there's a real time component to that you know things shift in time and you want to be able to be adaptive so in that case yeah once you have some sort of model you start thinking about how often do we need to retrain this model on these existing data and how can we serve that model in really quick ways. Okay so let's dive into that a little more so there's there's two issues there there's operationalizing the model doing that quickly low latency so that the training gets applied very very quickly to the application that's got to decide is the fraudulent or not and then there's the let's keep it up to date in addition to operationalizing it quickly how how sophisticated does a customer need to be to do that what are some of the tools required what are some of the skills and processes that are needed. Yeah I mean so at that point often we're getting outside the realm of like traditional exploratory data science and more into systems engineering you might say so both of those problems we probably group them both in like operationalizing machine learning or operationalizing models so one thing that's you know proven to be really helpful is kind of stuff there's a open source software project started by Sean Owen from Cladera called the Oryx project and Oryx is built to sort of aid in this process of operationalizing models so it can retrain your models it configured intervals maybe really quickly if you want and then also develop code that can score in real time. Okay so and and what are the underpinnings of this what what data does it need what other you know Apache tools Hadoop tools support this? So Oryx itself is built mostly on Kafka and Spark it has servers of its own that are used for storing this stuff the idea is it takes you know data sorting Hadoop probably as text Avro or Parquet probably the most common format it runs machine learning algorithms that are most likely written in Spark and then all the internal piping that it does the data as it moves around uses Kafka. Okay interesting so now Spark is going in through this transformation where the different libraries are getting more and more integrated and it's becoming this sort of center of gravity in itself what key pieces of Hadoop do you see it requiring and depending on you know sort of well into the future yeah it's a great question so Hadoop traditionally was MapReduce, Yarn and HDFS so you know roughly that's a storage resource management and data processing so now we're taking out that data processing layer and in part replacing it with frameworks like Spark it's not the only data processing framework on Hadoop but it's coming out to be a pretty dominant one for lots of use cases so you know at least in our sort of platform our way of seeing things yarn which does resource management between different ways like data processing frameworks and even within so you can have multiple Spark applications resource manage them on the same cluster as well as HDFS which is storage those are both very core on the basic like you know data center operating system kind of level then there's all the tools that come around it so sentry for security Hive itself for all like it's metadata management as well as ingest tools like Fulumum and Kafka so Spark is a very important part of a large ecosystem with a bunch of other important components do you see the Hadoop ecosystem with Spark being perhaps simplified if it's deployed by cloud service providers who can sort of smooth over some of the seams between the components yeah I mean so I think cloud is important but maybe somewhat orthogonal to the integration of those components yeah so I mean I think you know tradition at this point the world has sort of gotten control with this idea that it's nice to have companies that are there to take a bunch of disparate open source projects and integrate them make sure they play nicely and then it's also nice when those companies make it easy to you know take that integrated project product and make it deployable on the cloud okay with that this is George Gilbert wrapping up at Spark well not the Spark Summit but Data Science Summit San Francisco and we'll be back shortly thanks


Hello everyone, this is Vishwana Chauhan, Assistant Professor, Department of Computer Science and Engineering, Valchan Institute of Technology, Solapur. Now I am here to explain IEEE standard for floating point number. At the end of this session, the students will be able to understand how to represent single precision format and double precision format according to IEEE standard. And they can make the difference between single precision and double precision. So let us see both single and double precision format. Single precision format is having 32 bit width. So these 32 bit width is divided into three parts. One first one is sine, second one is exponent and third one is fraction. The sine is having one bit, exponent is having 8 bit width, fraction is having 23 bits. Coming to double precision format whose width is 64 bit, divided into three parts, sine 1 bit, exponent 11 bit, fraction 52 bits. So these are the two formats to represent the number. Pause the video, think and write the answer for this question. The question is differentiate single precision and double precision format. I hope you have answered for this question. Let us see the difference. In case of single precision format, the width is 32 bit and in case of double precision format, the width is 64 bit. Single precision format is having 8 bit exponent width, double precision format is having 11 bit exponent width. Coming to fraction, single precision is having 23 bit fraction, double precision is having 52 bit. Now let us see how to represent a floating point number in single precision format. We are already familiar with the format of single precision, which includes sine, exponent and fraction. Let us see one example plus 12.375. So this is a positive number. So here the sine becomes 0. So 12.375 which can be represented as 12 plus 0.375. So whose binary equivalent value 1100 plus 0.011. 0.011 is equivalent binary value of 0.375. So ultimately it becomes 1100.011. So this number, now we have to represent in single precision format. So according to IEEE standard, we need to shift this point in such a way that it should appear immediately after the binary one value. Now at the left side, we will see two binary values. Now we need to put this point so that it appears after binary one immediately. So which makes 1.1000011 into 2 to the power plus 3. So in this example, we are having binary one values as left side of this point. If let us consider if there is an example in which if we found that all these four digits are 0, then we need to put this binary point value towards right side in such a way that it appears after binary one. Now we will focus on how to represent this in single precision format. Here the exponent is plus 3 and fraction is 1000011. So exponent width according to single precision format, it is 8 bit. In the sense that 2 raise to 8 which is equal to 256 different numbers can be represented. So these 256 numbers varies from 0 to 255. So this range is divided into two halves. One is for negative exponent range and second half is for positive exponent range. The negative exponent range varies from 0 to 126. That is minus 127 to minus 1. Exponents can be represented respectively. Similarly for positive exponent range it is 127 to 255. In the sense that 0 to 128 respectively. Which makes 0 is a standard reference whose equivalent value is 127. If exponent is 0, we need to write the binary equivalent value of 127 in the single precision format as a part of exponent. So in this example the exponent is plus 3 that is 130. Because the 0 exponent is 127 plus 3 indicates 127 plus 3 which makes 130 whose binary value is 1000010. So which is an exponent part. Now according to the format of single precision format, these 8 bits is a part of exponent. So which can be represented here as a 8 bit value. And 1 bit value which is sine. That is since it is a positive number this bit is 0. Coming to fraction part. So in the example here the fraction is 1000011. So this fraction is represented in this field. Appending all 0 so that it makes 23 bits. This is about representation of a given number in single precision format. So let us see how to represent the given floating point number in double precision format. We will take the same example. Now this is the double precision format which includes sine exponent and fraction bits. Let us see plus 12.375 which is equal to 12 plus 0.375 whose binary value is 1100 plus 0.011 which makes 1100.011. So we need to adjust this point so that it appears immediately after binary one value. So which makes 1000011 into 2 to the power plus 3. So here plus 3 is the exponent. So we will see how to represent this in double precision format. Since the width of exponent is 11 bit which makes 2 raise to 112048 different numbers can be represented. That is from 0 to 2047. So this range is divided into two equal half parts. One for negative exponent second is for positive exponent. For negative it is from 0 to 1022 that is minus 10242 minus 1 respectively. For positive 1023 to 2047 that is 0 to 2047 respectively. So if exponent is 0 then which is 1023 number is taken for reference to represent exponent. In this example the exponent is plus 3. So that is 1023 plus 10 plus 3 which makes 1023 whose binary value is 10011. So here this is the format. Since it is a plus sign is 0 it is equivalent 11 bit field next fraction 52. These are the references. Thank you.


Green building was like this, you know, niche market for a while. It was this special, happy, fun, warm, fuzzy thing that certain nonprofits did, and eventually some government agencies started picking up because they wanted to lower the operations cost. But in terms of professional responsibility, I can't emphasize enough ethics. You know, it's sort of, we didn't used to sue bartenders if they over-served bar patrons and they went home and, you know, drove in their car and got in an accident and killed people.  And we're at that point, I think, in our profession where the bartender, you know, and we're over-serving our clients and we have to know when to cut them off. And it's not about telling our clients what they're building to look like, but just saying, I won't design a lower performance building than this. You know, or if you insist on me designing a brown building for you, I'm going to have to charge you more for brown building than green building because my liability is going to go through the roof. You know, I have no interest in designing a brown building for you unless you want me to charge you a premium. And I think we need to reverse that shift and say there's a premium for brown building.  But it's my ethics and my responsibility and I'm going to have to charge you more. And I think, you know, as soon as we have that relationship with their clients, they're going to be lining up down the block. And I think sustainable design or sustainability is sort of a buzzword and people forget the literal meaning of it. And you know, I always, sustainable, you know, it has to be able to be maintained over time. And so, you know, right now in this country, we use the resources of six planet Earths to maintain our lifestyle. So it's obviously not sustainable over time. We've only got one planet Earth and we're going to run out of it really fast. So basically being able to maintain our function over time means we have to put back what we take or reuse it and not harvest new resources. So, you know, buildings should be generating energy, their own energy. You should be able to generate water or clean water and reuse it over and over and over again. Building materials, you know, being able to build out of old building materials that have already been extracted and processed or buildings that can be reconfigured so that we're reusing the same buildings over and over and not tearing them down and throwing them away. And we just feel like we have this inexhaustible bank account, I guess. But the bank, it's not about money, it's about resources. And I saw special on the world's largest, tallest skyscraper city, whatever they were thinking about putting in Asia. And in fact, there's not enough concrete or steel or cranes in the world to build it. It's great. We can design it. We can engineer it. We can't, we don't have the physical matter to build it out of. So sustainability is really just making sure you have enough credit and your sort of resource bank to keep going and we don't add our pace. And the sad thing is we've gotten a lot more efficient, but our increase in usage far outpaces our increases in efficiency. Same thing with cars, buildings. We keep using more than we save, even though we are saving. It's something I always cared about when I was in school and started hearing the statistics about, you know, three quarters of landfills being full of demolition and construction debris, or 40% of greenhouse gas emissions coming from the built environment. I was just sort of aghast and thought that's my profession, you know. That's we should be doing something about that. That's my responsibility. I actually, by the time I finished design school, didn't want to be a designer. I really wanted to focus on sustainability and I care about very much how buildings look, but I don't want to be the person who designs how they look. I really care about how they function.  Every building has where you can meet the program, the schedule and the budget and make it the best and most highly functional and performing building. So the direction, I think it's just standard of care. It's going to be inherent in practice. Just like I think when AutoCAD took over the profession, at first you had people who were probably CAD specialists, you know, and a few people in the office that you could go to. And now maybe it's Revit and BIM. You've got people who specialize in it and it's creeping into the profession. But I think sustainable design, you won't have, my goal is to put myself out of a job, is to bring up the level of knowledge of everyone here to the point where, you know, they don't really need, maybe I'm just the librarian, but, you know, they don't need me to guide them through the design process, but that everyone remembers how to design for the environment as architects used to have to do, so. And it's a constantly moving target because there's always, people are inventing new materials and new technology every single day, you know.  Somebody calls your email to you and says, hey, we just invented the slow-emitting product that does exactly what you need and that's fire rated and, you know, meets all the specifications that you laid out there. So you can ask for anything and somebody will invent it because there's a huge market for it now. And I really think there's a lot of interesting work around. I think, you know, buildings should generate energy, not just use it. And a few years ago, my thesis project was actually on the integration of high-rise building design and wind energy. And so it's been such a joy to see so many high-rise buildings go up now that are trying to integrate the on-site generation of wind power. They're just wind towers waiting to happen, you know.  You know, it's a tall building. The higher it goes, the more wind acts. And we're designing them to withstand lateral loads from wind and no one thought to stick a turbine on there for years. And I'm not saying I invented it, but I'm just saying I'm so glad that at the same time I was thinking of it, there were other people who were as well. This is horrifying to me, but I find a lot of times I'll have a design team here that says, you know, don't talk about water for urinals. They don't want to hear about it. Don't talk about green roof. They don't want to hear about it. And I go into the meeting with the client and the client and say, oh, yeah, we have, you know, water for urinals in our building, our office. We love them. We have green roof on our office. We love it. We would totally do that. And so I never, you know, it used to be the architects, the designers driving this forward. And I think we're at a point where through our own, I don't want to say inability, but in comprehension of just how important it is to the public, we're holding our clients back. And I, you know, that's the last thing you'd ever want to feel like we're holding our clients back from doing the right thing and that they're often not making decisions to take a building to the next level in terms of performance, because we tell them, we tell them we don't know how or we aren't confident, you know, because we haven't done it before. And it should be more of a, we'll do it. We'll make it happen. We don't know how, but we'll figure it out. We'll research everything we need to and we'll get it done and we'll stand by you. And if it's the first project to use this technology, then if it doesn't work, we'll make sure that we take care of it.  But if we're holding people back from making decisions they really wanna make that benefit, you know, the entire society in which we live and participate in, that's a problem. So how do we get there? How do you teach students in school how to design a carbon neutral building or 50% reduction in emissions? You know, that's, students don't have, I mean, I never use a carbon calculator in design school. No one ever said, let's figure out what your building is responsible for. I didn't even know until recently a landscape type of plant material you put around, how much earth are you disturbing? How, what kind of plants you put around your building?  I mean, nobody talks to us about that. And in fact, in design school, I'd say that you're often really disconnected from reality in many ways.  You don't even know if these materials exist or how much they cost, or where you have to bring them in from. And I've been on a jury in a studio and they had to go through a lead scorecard and, you know, these kids are giving themselves 59 points or, you know, 52 points and saying, we have a lead platinum building. And I'm like, really? Cause it's really, really hard to get the real world.  Did you, you know, did you weigh the cost of those versus something that comes from Asia? You know, it's, but it's, so we absolutely have to bring that into the school. You know, they really need to take this seriously. And there needs to be performance criteria for their faculty. You know, tenure is a tricky issue, but you know, it's got to be in there. We shouldn't be accrediting architecture schools that don't address, you know, critical. I mean, if we all have to understand ADA to a certain degree, at least as practitioners, if not as students, you can't build a building and not be ADA compliant. I don't understand how we can build a building and not, you know, not barely exceed code. And I'm sure someone else has said it, but you know, the code building, the code compliant building is the worst building you can build, you know? I can't believe our profession is driven by, by for the most part, the worst building we can legally build, you know? It's really tragic. So, throughout architecture school, everyone always told me that architects can do anything. You're in such demand because we're, these great creative problem solvers and everybody loves architects and everyone wants to hire them to do everything. And you know, the reality is that's totally not true. Nobody wants to hire architects with other architects. It's, you have to work 10 times harder to get somebody who's not an architecture-based business to hire you if you want to do something outside of architecture. Everyone has a lot of respect for the profession and the level of detailed learning and the whole, but they just don't think it's relevant to their business or organization or practice. So, if you're getting out of architecture school and you don't want to be a traditional architect, be prepared to work really, really, really hard to convince other people that what you do is relevant and that you have something to offer to a non-architectural profession.


Hello and welcome to the session in which we would look at this CPA exam question Which can be a multiple choice or a simulation that deals with Property tax revenue and simply put we need to to understand how to compute property tax revenue For a governmental entity for a particular year 20x2 For that physical year 20x2 Chester County levied 510 million in property taxes the county collected taxes applicable to that particular year as follow June 1st 20x1 through September 30th 20x1 20 million so here's what you have to know this basically this is Year x1 and this is year x2 now the year ends September 30th So this is the year end September 30th So we are looking from September 30th x1 till September 30th x2 So this is the area that we are looking to Figure out how much revenue was collected Now the first thing we did is we levied the taxes 510 million when we levied the taxes The government has the right to collect the money believe it or not at this point. We have a receivable Yes, you do record property tax revenue as a receivable So the first thing you have to do is you're gonna you're gonna book a receivable for 510 million property tax receivable and you are going to credit not revenue the third inflow of resources not yet But it's gonna become revenue later before we proceed any further I have a public announcement about my company farhat lectures calm Farhat accounting lectures is a supplemental educational tool That's gonna help you with your CPA exam preparation as well as your accounting courses My CPA material is aligned with your CPA review course such as Becker Roger Wiley gleam miles my accounting courses are aligned with your accounting courses broken down by chapter and topics My resources consist of lectures multiple choice questions through false questions as well as exercises Go ahead start your free trial today. No obligation. No credit card required So, yes, we do have receivable when it comes to property tax revenue Why because even if the owner of this property sells their property the new owner will have to pay the taxes Now for the sake of simplicity, we are not going to assume any allowance for this example But for the 510 million when we levied it when the government says now legally now you have to pay it We have the right to collect it from you. Well, it's a receivable Now June 1st Through September 30th. So in this area here in this period even before the year started Here in this area some taxpayer paid a 20 million. That's great Well, some people do prepay their taxes if that's what you want to do. That's fine. That's fine, but It's not revenue until the year kicks in so when they pay when those individual prepay their taxes because they paid from June till September even before the Physical year kicks in we debit cash. We credit the third flow of resources. It's not revenue yet But when is it gonna be revenue? Well, what when the year kicks in? Well, we are in 20 x2 When what we do is we debit this number the third inflow of resources to remove the deferred inflow and We credit property tax revenue and this is part of the answer So it's gonna be 20 million for sure of revenue will be recorded in 20 x2 So we took care of this 20 million Now from October through September we collected 450 million. So we are looking at this period here We collected 450 million great when we collect money we debit cash We credit a receivable since we set up a receivable We credit the receivable now we can turn the the third inflow of resources into actual revenue So we are going to debit the third inflow of resources for 450 million and credit property tax revenue 450 million again. We are looking for revenue.  No, we took care of this 450 million October 1st x2 through November 30th x2 was 12 million so let's take a look at the time Timeline here and we're looking in this period here in this period we collected 12 million How how are we gonna account for this 12 million? Is it part of revenue or not? Here's where the modified accrual comes into place modified accrual basis. We said we have 450 plus 20 We recognize revenue when it's measurable and available to finance expenditure in the current period. Well, what does that mean? Let's assume Sometime in October sometime in October x2. We had an expenditure Okay, and this expenditure will not be paid. Usually they give you 30 or 60 days until November 15th on 20 x2 So November 15th, so I'm just making this example. You're gonna see why I'm putting the dates November the 15th We're gonna be also receiving cash. So notice the expenditure took place in 20 x2 The cash that we're gonna be receiving in 20 It's gonna be outside the period of 20 x2, but it's gonna be coming to finance 20 x2 expenditure Since the money will be available and what we assume is this we assume that 60 days after year-end money will be coming and that money will be financing expenditure that took place in that particular year And that's that and the government really knows about this Why because if this is where they prepare their financial statement, let's assume they prepare their financial statement September 30th This is where the year and not when they prepared it If this is the year end it may take them a month or two or three month The government take their time in preparing their financial statement So they will know in the next 60 days whether they're going to be receiving money That's going to help finance expenditure that took place in that particular year So what does that mean? So it means 60 days after year-end Any cash that we collected we assume it's going to be financing expenditure in that prior year So although the money was collected notice the money was collected through from October 1st through November 30th year x2, which it means it belongs to x3 physical year. It doesn't matter We're gonna include this in year in year x2 Now what are we going to do at the end of the period if we can estimate this number if we can estimate this number What we're gonna do we're gonna debit the third inflow of resources Of 12 million and we are going to credit property tax revenue of 12 million. Why do we do that? Because we know Most likely that we are going to receive this money And we know we're going to be using this money to finance expenditure. Therefore if it is If it's measurable and available to finance expenditure, it's revenue Therefore we're going to recognize this as revenue when we actually receive the money when we actually receive the money we debit cash We debit cash and we credit the third inflow of resources So basically the third inflow of resources is basically gone and what we have is 12 million of cash 12 million of revenue Now what happened to as I told you The government may not prepare their income tax their financial statements until two three years two three months after not years That's I don't know. Maybe some of them do Two three months after the year end now, none of them can wait years But the point is they can take their time So what happened is we can wait we can wait until that revenue If we don't want to book this entry we can wait until we receive the cash We can debit cash and credit revenue of 12 million or what we can do we can Basically book the revenue and wait for the cash again Depending on when the government wants to do that, but that's another 12 million of revenue that's counted Last but not least December 20 December 20 x2 we collected 2 million that belongs to 20 x2 Well, guess what that money is not available to finance expenditure 60 days after year end So December is 60 days after now and your cpr review course they may say Consider 90 days after so you have to be careful typically it's 60 days But if they give you some other date some other number of days you have to be aware of this But this 3 3 million Does not belong we cannot report it as revenue in year x2 in year x2 So the revenue is 450 million 20 million which is 470 plus 12 Is 482 therefore property tax revenue for x2 that's going to be reported this 482 million What should you do now go to far hat lectures and look at additional resources Exercises multiple choice true false lectures that's going to help you understand governmental accounting Modified a cruel basis. This is an important topic whether you are an accounting student cpa candidate or studying for some sort of an accounting Certification invest in yourself. Good luck study hard and stay safe


Your coca-cola bottler presents Claudia based on the famous play and novels by Rose Franken Brought to you transcribed Monday through Friday by your friendly neighbor who bottles coca-cola Relax and while you're listening refresh yourself. Have a coke and now Claudia Guess I was You're awake. No, sure. I'm up running around the block This is a funny thing.  You were dreaming No, quiet it's the middle of the night heaven's sakes. Let me go back to sleep. I will Certainly You know, maybe it's something I ate dreams can be something you eat. I guess can't be Well, I'll sleep on my left side I think I dream when I sleep on my back Whenever I sleep on my back, I wake up dreaming in a moment. I wake up screaming All right, don't bother. I'll look at the clock. Oh My golly quarter of two. Oh, no, I'm sleepy. Good night, darling It wasn't a fire engine this time. It's the baby and I better get up and see what's the matter with it darling You can't run to him every time he cries who says I can't you know, there's nothing the matter He probably just woke up in a minute. He'll cry himself back to sleep. I just want to make sure that that's all it is He'll spoil him He'll start crying every night in the middle of the night just to get you to pick him up Bobby is not that kind of a baby. Hey put on your bathrobe. Oh, I'll catch cold Where is it? Say David you mind if I put the light on I'm wide awake now worse luck. I wake up right away. I stopped sleeping the minute I wake up miraculous How clever of you? Maybe Bobby's wet maybe that's why he's crying I don't see why he should cry about that of all things all of a sudden he should be used to it by now I think he'll be all right. I'm sure there's nothing the matter, but I just want to be sure why I'm sure that makes great sense I've been such a racket you wake up the whole neighborhood. What's the matter with you goop? I'm so sure the middle of the night's no time for tantrums.  All right. I don't get excited. I'm gonna change it just as fast as I can You just lie down there and be still Oh you heard him crying all right anything the matter I don't know he stopped crying for a minute and then when I came in he started yelling all over again. I'm changing That's probably what it is. He doesn't usually cry at night And he's always wet as David says let me look at him. Oh, he looks fine. Yeah, nothing the matter with him is the big boy He doesn't seem to agree with you come over here and let grandma hold you. That's what you want He's only red in the face, isn't he mom? You would be too if you just screamed like that Where's he get all that strength? I think everything he eats goes into his lungs Yeah Maybe he had a bad dream. I had a bad dream about a fire. The babies dream though, of course they dream Well, then that's probably it Well, I'll get him fresh change my mama might as well do him while we're here Wake up your father Bobby Kicking plenty The middle of the night and baby I guess Bobby just hasn't learned how to tell time yet. Is that it Bobby?   I'll change it.  You better get used to it. He's just getting into his full stride Well, I guess we really shouldn't complain. We hadn't had much of this sort of thing. Have we? Say mama, maybe he's teasing open your mouth Bobby. Let me see now Catch him on the next yell mama He could be teething. Do you realize he's almost let me see July 5th August 5th September 5th I told this November 5th. He's almost five months old. You cut your first tooth of five months Well, maybe it runs in the family. Yes, he's definitely teething. Yes, four and a half months. I doubt it Why not they say the younger generation's always a step ahead of the older generation Mama what now? Do you know I just call myself the older generation? Quick look in his mouth while he's crying Hey, why are you two women smothering that helpless little child a tooth tooth we're looking for a tooth Tooth for a tooth Thank you both gone mad you You won't find a tooth down Bobby's throat with you No, but we might find one under one of those gums peeping through like a flower in the spring What's so funny about a flower peeping through in the middle of the night David come over here. Have a look Maybe you can find it. You're his father. Yes, David They say the father's can see many things in their sons that no one else can see not my kind of father I'm so sleepy. I can't even see the baby.  Oh, baby. Does it hurt you very bad?  That's a language. He'll understand is the tooth Tell your father I don't intend to stand around here all night walking up and down with you in my arm The baby in his arms is very becoming to David isn't it mama? He wears fatherhood well You see not a peep out of He knows who his friend is oh David you disturbed him talking really sounds like a teething kind of me On the yesterday when I suggested the baby's getting a tooth you laughed in my face.   Not very much. What did you do for me? You didn't cry very much I must have been a beautiful baby. You weren't bad So I never thought you'd grow up to be what you are proves one just can't tell yeah, it's the old story the oak and the acorn enough Palaver What about the not north spring here? Well some babies react well to a little hot water Hot water don't look so horrified David.   I'm not killing myself. I get back to bed going back to bed you too Well, I'll attend to this. I'll do it David I don't have to go to work in the morning and you probably have the crying baby on your hands all day tomorrow Mrs. Brown, so I think you'd better go and sleep while you can David now really stop acting as if you think I don't know how to boil water Now won't get to bed. Well, are you sure you don't mind? I only takes a second for kettle to boil. I'm Say David don't watch it while it's boring it takes twice as long that way His eyes are closing he's tired There we are We just stay here until David comes back Isn't he sweet how he hates to admit he loves being a father Just give him half a chance to do something. He's all over smile. Well, Bob is not a difficult baby to be proud of I Wonder what the others will be like the other what the other babies were gonna have Well, you certainly don't think I'm gonna let David waste his fatherhood on one small son He's worth at least four don't forget if David's gonna be their father.  Mmm. That's almost the nicest part of it Mama, let's go down where kitchen. What for? David's boiling the water. Oh, well, I think it's a shame to let him boil it all by himself Come on, let's creep out of here baby seems to be going to sleep. Come on. All right. All right water should be boiled by this time I don't know what's taking so long Funny, I don't I don't hear anything in the kitchen. Do you what do you expect to hear tea cattle whistling, of course Maybe David used a pan. Oh, yeah, probably just a little bit of water. We need it You know, I just can't believe it's the middle of the night. Why not? We're all awake You know, I don't see why people are so prejudiced against the middle of the night I think it's a pretty nice hour for families to get together Claudia look oh Look at David Dosing in his chair He looks just like Bobby. I don't mean that look at the kettle Mama, it's not boiling. Of course. It's not boiling. It's not even sitting on the gas. Oh mama David put it down on one burner and then he let the other It's a sure thing. It'll never boil that way. He's sitting there waiting for it to whistle You'll have to wait all night. He was so sure he knew how to boil water When it's your night out and the neighborhood babysitter comes in to keep an eye on junior she'll beam if you tell her there's coke in the ice box She'll appreciate the pause that refreshes just as you do while she reads or listens to the radio And you'll have won a great big H for hospitality Better get coca-cola tomorrow. So there's plenty on hand Joe Joe what on earth happened to me nothing Except that you fell asleep. Yeah, I guess that's what did happen But why didn't the water boiling in the kettle wake me up because the water didn't boil in the kettle You were very carefully placed the kettle on the wrong burner Say listen do me a favor and don't tell Claudia. I'll never hear the end I don't have to tell Claudia She and mama are giggling upstairs waiting for you to wake up and I think I'll just let them wait We'll see who laughs last, huh? I have a feeling that the Noughton household is going to be waiting for each other to laugh last until the wee hours of the dawn You have nothing important scheduled for tomorrow. I hope Rodgers coming out And I dare say Jared Tucker will be around to make him feel old and decrepit and Jared's the old man who can do that Even to us young ins well back to my kettle Joe while you say every day Monday through Friday Claudia comes to you transcribed with the best wishes of your friendly neighbor who bottles coca-cola So listen again tomorrow at the same time And now this is Joe King saying or of war and remember Whoever you are whatever you do wherever you may be When you think of refreshment think of coca-cola or coca-cola makes any pause the pause that refreshes and Ice-cold coca-cola is everywhere This broadcast of Claudia was supervised and directed by William Brown Maloney And now here's a word from your friendly neighbor who bottles coca-cola


My name is Mary Jane Jo. I am from the Intlakaab Makh Nation. My first nation's name is Niketko and my language is Intlakaab Makh Chin, Interior Salish, and I'm here in Coast Salish territory. I have been teaching for 19 years and my vision for Indigenous education is that we reconnect the teachings and knowledge that we have lost in this era of colonization and assimilation. I'd like to see our children, our youth, our students be reconnected with the stories and teachings of grandparents, ancestors, and our lands. The knowledge I think is important is our language. Our language holds many, many connections to our identities, to our nations, to our language, communications, our stories. One of the words that I totally love that I'm going to teach to my grandchildren is Zoot and that means that we are becoming healthy and resilient. In other words, we're preparing to meet the future by being healthy in our mind, body, soul, and spirit and to be prepared, equipped, and ready to be successful. And education is part of that as well as a combination of our teachings, our knowledge, our history, and our culture. I've retired from teaching but I still lecture and I still teach in the public schools as a guest lecturer and the things that I pass on are our history because I believe that our history contains the the greater picture of where we have come from regarding colonization, assimilation, policies that affected our lives, and the greater public and greater society of Canada needs to know the truth. Our people, our students need to know the truth and it is in that truth that they can become empowered and to learn from that and to grow from it. Not to be further oppressed but to rise above that. In my culture, I brought out Cedar Bow. I'm a residential school survivor and one of the teachings from my grandmother was brushing down with the Cedar Bow and this was really important to brush away the past, the hurts, the pain, and to do it at the water. Let it go and that to me was a very important liberating feature of our culture rising above the oppression. I will not go back into the water and grab those things but I will grow and and I will become more resilient, more healthy, more liberated, more free from the past that has been very oppressive. I would like my great-grandchildren to know about my grandmother. She did not speak English. She had no education and yet she was wise. She was kind and she loved the land. She loved our culture. She loved the teachings and she was fulfilled and happy after she had experienced discrimination and racism in the town of Merritt where I come from and she rose above that and she became a happy person. She was very kind in teaching me many many things. When I work on a Cedar Bark basket, I'm connected to my grandmother yet. When I brush down at the river, I'm connected to her teachings and these are the things I want to pass on to my grandchildren and children that they had a resilient grandma whose wisdom was timeless. She would have succeeded in today's society. Generous, free with her knowledge and whatever she had, she shared it and that's what our elders, the true sense of respectful sharing generated that and that's what our children and grandchildren need to know. The children in the classroom need to know these things that we're not always seeking famous fame. We're not always seeking wealth. We're not always seeking independent isolation in our journeys but we like to connect with family and we value family and that's what I'd like to pass on. I'd like the youth of today to look at the successful Indigenous elders, teachers, educators and look at the difficulties they overcame to be successful and the youth of today can learn from that. They're not alone. Their struggle is not alone. We're all together in this and we learn from each other. We lean on each other and so it's a connectedness. When we're born, we're born with a gift and we need to nurture that gift and we learn that with communication and relationships with each other. We learn that with our relationship with the land and with our teachings, our traditions, our language keeps us wholesome, healthy and the authenticity that our elders lived and shared, that's what I want to pass on.


Welcome to another episode of the rundown. This week, we have the latest regarding PCS orders and lead times. Navy Cool has released a guide for their sailors to use their naval experience for a career in the maritime industry. We have some summer safety tips for this holiday. Last week, we told you the Navy will be shortening lead times for PCS orders due to budget constraints. Due to recent efforts, the Navy is moving closer to its three-month average for issuing PCS orders in the coming weeks and months. A working group was put together with members from throughout the fleet who suggested several initiatives, most meant to be transparent to sailors. These initiatives will aim to maintain carry readiness and fleet manning levels, reduce overall costs, and minimize additional impacts as PCS orders are carefully navigated for the remainder of the fiscal year. As part of the plan, non-critical and overman rates in fiscal year 16 will shift into fiscal year 17. In other words, over 2,000 sailors will begin their training a few months later than previously scheduled. Also, delayed entry program sailors who do not complete training will not be replaced as is normally the case. The Navy is on track to meet its recruiting goals for fiscal year 16 as it has for more than 100 months. Also, Navy personnel command will continue to issue letters of intent for overseas moves. Even if you don't have orders in hand, you can still start the process of overseas and medical screenings, dependent entry approval, passport applications, and security clearance requests. Read more about the update from our story on Navy Live, or check out NPC's website at www.public.navy.mil. On the website, click Headquarter Sites, then Naval Personnel Command. Navy Cool has released its Blueprint to Mariner Guide to help sailors use their naval experience to transition into a career in the U.S. merchant marines. 19 enlisted ratings and 15 officer designators have transferrable job experiences for over 150 different occupations in the merchant marines. Sales will be given the opportunity to remain on active duty while training for a career in the merchant marines and can apply to have fees waived for the licensing process. Blueprint to Mariner provides a step-by-step guide for the application, visual aids, and resources. The guide can be found on the front page of Navy Cool. Go to www.cool.navy.mil. As you begin to fire up the grill for the 4th of July, be mindful of the dangers associated with the holiday and how to keep yourself and your family safe during the summer. The Naval Safety Center provides training and resources for off-duty recreation, pull safety, motorcycle safety, and more to help you enjoy the summer. Trends show that sailors experience more off-duty and motor vehicle mishaps during the summer than any other season. Visit the Naval Safety Center website by going to www.public.navy.mil. Under headquarters sites, click Naval Safety Center. We hope everyone has a safe and happy 4th of July. Finally, congrats to all the FTS and reserve sailors who were selected to the rank of Chief Petty Officer. Well, that's all for this week. For any questions, send us a message at usnpeople at gmo.com. For the Chief of Naval Personnel, I'm MC2 L.J. Burleson. Thanks for watching.


Hi, and welcome to our session. Let us discuss the following question. The question says, integrate the following functions given function as pi times x by x plus 1 into x squared plus 9. Let's now begin with the solution. In this question, we have to integrate the function 5x by x plus 1 into x squared plus 9 with respect to x. Now, this is a proper rational function. And we know that whenever we have integrand as proper rational function, then we resolve this rational function into partial fractions. Let pi x pi x plus 1 into x squared plus 9 is equal to a by x plus 1 plus bx plus c by x squared plus 9. Now here, a, b, and c are constants. And we have to determine the value of these constants. This implies 5x is equal to a into x squared plus 9 plus bx plus c into x plus 1. Now put x equals to minus 1. So we have minus 5 equals to a into 10. This implies a is equal to minus 1 by 2. Now we will put x as 0. So we have 0 equals to a into 9 plus c into 1. Now a is equal to minus 1 by 2. So this implies c is equal to 9 by 2. Now we will put x as 1. So we have 5 equals to a into 10 plus b plus c into 2. This implies 5 is equal to 10 a plus 2b plus 2c. You know the value of a and c. So by substituting values of a and c, we get 5 equals to 10 into minus 1 by 2 plus 2b plus 2 into 9 by 2. Now this implies 5 is equal to minus 5 plus 2b plus 9. This implies 1 is equal to 2b and this implies b is equal to 1 by 2. So value of a is minus 1 by 2, value of b is 1 by 2, and value of c is 9 by 2. However, it's a substitute values of a, b, and c in this expression. So now 5x by x plus 1 into x square plus 9 is equal to minus 1 by 2 into x plus 1 plus 1 by 2x plus 9 by 2 by x square plus 9. This is equal to minus 1 by 2 into x plus 1 plus 1 by 2 into x by x square plus 9 plus 9 by 2 into 1 by x square plus 9. Now integral of 5x by x plus 1 into x square plus 9 with respect to dx is equal to minus 1 by 2 into integral of x plus 1 with respect to x plus 1 by 2 into integral of x by x square plus 9 tx plus 9 by 2 into integral of 1 by x square plus 9 tx. Now to get the first integral, we know that integral of 1 by ax plus b dx is log ax plus b divided by derivative of ax plus b, that is a plus c. Now using this formula, integral of 1 by x plus 1 tx is log x plus 1 plus c1. Now look at the second integral. Now we have 1 by 2 into integral of x square plus 9 tx put square plus 9 as t. Now this implies 2x is equal to dt by dx and this implies x dx is equal to dt by 2. So this is equal to 1 by 4 into integral of dt by t and this is equal to 1 by 4 log t. Now t is equal to x square plus 9, so this is equal to 1 by 4 log of x square plus 9. Now the second one is 9 by 2 into integral of 1 by x square plus 9 tx. This is equal to 9 by 2 into integral of 1 by x square plus 3 square dx. We know that integral of 1 by x square plus a square with respect to x is 1 by a tan inverse x by a plus c. So using this formula, this integral is equal to 1 by 3 tan inverse x by 3 plus c3 is equal to 3 by 2 tan inverse x by 3 plus c3. So now we will add all these integrals integral of 5x by x plus 1 into x square plus 9 with respect to x is equal to minus 1 by 2 into integral of 1 by x plus 1 dx that is minus 1 by 2 log x plus 1 plus integral of 1 by x square plus 9 dx into 9 by 2 and this is equal to 3 by 2 tan inverse x by 3 plus integral of x by x square plus 9 dx into 1 by 2 and this is equal to 1 by 4 into log x square plus 9 plus c. Hence our required answer is minus 1 by 2 log x plus 1 plus 1 by 4 log x square plus 9 plus 3 by 2 tan inverse x by 3 plus c. So this completes the session. Bye and take care.