Hi, everyone, and welcome to DevCon of CZ 2022. I would like to welcome here our next speaker, Dan Cermak. Welcome, Dan. If you have any questions for Dan during his talk, please use the Q&A section in Hopin. We'll get to the questions at the end of the talk. Thanks for the introduction. Hi, everyone. Welcome to DevCon. Thanks for joining my talk about Open QA, about testing Linux distributions and appliances. Great that you made it. First, let's talk a bit about me. So I'm Dan Cermak. I'm a software developer working at SUSE. I joined part of the developer engagement program working on development tools, and currently I'm building containers. If you are also familiar in the Fedora community, I am a member of the i3 SIG, where we ship the i3 spin. I'm a package maintainer, and I used to be in Fesco for the Fedora 34 cycle. So if you say the magic words in Matrix, then I shall emerge as therefore lost there and disappear into the void back again. Anyway, few of my big hobbies are development tools and testing. That's also why I'm presenting to you Open QA, and also writing documentation, which I actually quite enjoy doing. If you would prefer to also stalk me on social media, there are a few links on the presentation slides, which I'll share at the end of the presentation. Since we have only 20 minutes, let's dive right into what are we going to talk about. First, I'll give you a very short overview of what is actually this Open QA thing that you might not have heard about yet. I'll give you a brief sales pitch, and then we'll take a look at how it is used to test the Linux distributions, appliance builders, hardware, et cetera, pp. And at the end, we'll have a Q&A. So with that, what is this Open QA thing? You might ask yourself. So in case you have never heard of it, I'm going to give you the perfect explanation. It's a web application. Now I've helped you a lot. OK, so what is actually Open QA? Open QA is actually a test framework for systems under test. So and I think I need to elaborate this a little bit because usually if you think about testing, you're usually thinking about testing individual components. So for instance, you want to test a program. And so you're testing this program or a certain component of a program. And Open QA is a test framework that's really designed to test a whole system. And by a whole system, I mean something like a PC, like a real PC, or if it would be very easily doable, a cell phone operating system, something like that. So you give it really a real thing. And it tests that this whole system is working as expected. So what Open QA does, it's designed for user-oriented testing. So what it can do really well is simulate user input. So stuff like wiggling a mouse, pressing. OK, I can't lift up my keyboard. Sorry, pressing keys. Looking at a video output. So what Open QA also can do is it can record the video output that comes out of your system under test. And then it uses Open CV to match the output against expected parts. So essentially what you would, it does essentially what would a tester do.  And your QA person would then check, OK, there's this icon, I click it, I press these keys, and so on. And this whole thing is really operating system agnostic. So it's usually used to test Linux, but it also works on Windows. You could even run it on really stripped-down operating system so it can do all kinds of things. So why should you do this? So let me put on my sales person hat that I forgot at home. Sorry. So without the sales person hat, why should you use this? You want to do system-level testing, i.e. you have, for instance, a Linux distribution. You have an installer. And you want to verify that the installer works every single time.  And your QA person will murder you in about two weeks. So you can use OpenQA to automate this. When should you use it? If you really care about user-centric testing, so if you have a GUI application, or if you want to test on your system and to test something that has a GUI, then OpenQA can really help you out because it really moves a mouse and clicks things. So even if you, for instance, if your installer somehow creates an overlay due to some weird bug and you can't click it anymore, OpenQA will catch this. Also another thing, OpenQA, while it by default runs in virtual machines and tests virtual machines, it can run on bare metal. And it can test real bare metal machines. I'll show you an example later on that this is done for Raspberry Pi. What it can also do is if you write individual tests, you can label these. You can attach bug reports to test results. You can review full test suit runs. So imagine you create, if you know how OpenSusa works, then every new tumbleweed snapshot gets an OpenQA run. After each OpenQA run, the release manager reviews it and says, OK, go, no, go. Same thing happens on Fedora with every compose of Fedora raw height. And last but not least, this is really battle tested tech. So we are not talking about some fancy new thing that I hacked up together in my basement. This thing has been running for 10 years at OpenSusa, at SUSE internally. And Fedora, I've heard that it's been run in Red Hat as well, but I have no confirmation about that. So treat this as hearsay. So this is really battle tested tech, and it works really, really well. Let's talk a little bit about the architecture of OpenQA. So OpenQA itself is primarily a web page and a web API that you can see on the left upper part of the picture. That's what you would interact as a user and as a test writer. That's also what serves, what schedules, tests, what stores the test database, et cetera, pp. Then the actual, so this thing has a REST API and has a web UI. The tests are then dispatched to individual workers. So these are jobs. These can run on the same machine. These can run on different machines. They can be close by. They can be somewhere totally different. You just then have to invest a little bit more work into the infrastructure. The actual testing is then done by a job called OS Auto Inst. This is small binary, which usually connects via a serial line to a system under test. And then what it connects to the system under test, this can be, this is by default a QEMO virtual machine. It can be bare metal. It can be also all kinds of other back ends. And then if you want, you can make OpenQA simulate key presses, mouse movements, and you can use the video feed. But you don't have to. So you can run pure console tests and you don't have to do any kinds of video matching. But it's usually that's the thing where OpenQA really shines. So here is a small screenshot of the web UI. So what you would see if you click on an individual test. So what you see here are, this is the installation test suit from OpenSUSaTumbleweed that I think I took the screenshot maybe a year ago. So you see here individual tests. And every single screenshot here is when OpenQA was specifically looking for something. So this now feels probably all very opaque and abstract and OK. So how does this look in practice? And the cool thing is, since OpenQA does actually user interaction, what you are currently seeing here is a small, is a short video, what OpenQA actually does during the installation of OpenSUSaTumbleweed. So I hope this works since I have Hoppin open and it looks like it's not really playing. In case it's not playing, I'm sorry about that. But what you would essentially see here is a very fast installation process of OpenSUSaTumbleweed. And that's what OpenQA does for the OpenSUSa distribution every single, on every single snapshot. It just runs the whole installer. So we can really be certain the installer still works. It creates useful images. The image recognition part itself works via so-called needles. So this is a feature of OpenQA. You don't have to use it mandatorily, but to not go into too much technical details. But what it does is what you see here, these small green rectangles. These are image areas that OpenQA really looks for. So it doesn't compare the whole screen. It just compares parts of the screen that you tell it what it should look for. And that's really like what a QA person would do themselves. So if you tell the QA person in a screenshot of this is Anaconda from Rohite, and you tell it, click on the keyboard icon, then they don't really care that there's also a language support below that. They just need to find out, OK, there's a keyboard icon. I want to click that. So that's also kind of the reasoning. And matching all screens would be just totally broken. Features that I didn't mention yet. So what OpenQA can also do is it can produce test artifacts. Simple as example, you run an installer. It creates a virtual disk image. OpenQA saves this image and can boot from it, which is perfect. Because it means you can check that your installer actually works without writing it on a physical disk. It can handle these assets, so they won't clog up your hard drive or your hard drive on OpenQA. You can have tests depend on each other. So essentially, you have one test that creates a virtual disk image, and other tests are scheduled afterwards, which use this disk image. OK, I mentioned this one previously, and that was you can tag and review. You can restart jobs. You can group jobs. You can group tests. And there's a plethora of backends. So the default one is QEMU and LibVert. But you can also run it on TrueBearMetal. You can use IPMI. And there's also this X3 270. So that's for S390X if you want to test one of these, if you want to test on IBM's architecture. So first part done. Second part, OpenQA in the wild. So where is it used? I'll showcase you a few very prominent users. Starting out with the thing where it started, and that's OpenSuser. Please don't get shocked. This is a figure of the whole OpenSuser release process, or a little bit of a simplified version. And since this contains a whole ton of information, we actually only care about this part. So Open and we'll focus here specifically on the OpenSuser tumbleweed distribution, which is the rolling release one. So the development of the distribution happens in so-called development projects where you submit your packages. Then they get into staging projects and trickle down into factory, from which then we take snapshots and create the actual OpenSuser tumbleweed release, usually every few days or every single day, depends. And for the staging projects, there's a bot. So a staging project is essentially you submit a few changes there. Then all the packages in the staging project get rebuilt. Discard effects get built, and then OpenQA runs on those. And that essentially verifies that the submission did not break the essentials of the distribution. And in practice, it looks like this. So you have a bot on the OpenBuildService. This is a screenshot from the OpenBuildService. And the bot tells you which OpenQA tests succeeded and which other tests failed. Essentially, the same thing, as I described, happens also with OpenSuserLeap, which is the stable enterprisey variant of OpenSuser tumbleweed. Only there it's done with maintenance updates, but it's kind of the same. Fedora, so you folks here might be more familiar with that one. So Fedora, how the Fedora development workflow is. So we have our package sources in this kit that they get built in Koji. Nowadays, everything goes through Bodi. So Fedora Update System, that's Bodi, that creates updates for the stable branches and for Rohite. And now the process splits up. So for Rohite, you get, I think, every night, you get Pungy to create a new compose and provide that this compose succeeds. The resulting images get taken and pushed into OpenQA, where all kinds of tests are being run on it. That's usual. And then you get, and if you're subscribed to the development mailing list, then you'll see one of those emails that get sent out from OpenQA. Now, then there's also for branch and stable releases, so currently Fedora 35 and 34. OpenQA does not run on every update, but for critical path updates. So think of something like the kernel, and there's also a few other critical path packages. Their Bodis test repositories are used. So OpenQA then takes the Fedora stable base image, it installs the updates, and then runs OpenQA. And you can see the results of that actually in Bodi. So this is a screenshot from Bodi for a recent update about the kernel. And the green parts, these are actual OpenQA tests. So they essentially verify that the kernel works in the expected cases. OK, next one. This is a kind of unusual one, and that's about the Kiwi image builder. So since I guess many of you are not familiar with Kiwi, Kiwi is an image builder. It's kind of comparable to OS build, kind of does a comparable job to Pungy. It's the default image builder in the open build service. It's used to create all most of the images of the open source distributions. And I've been involved with it a little bit. It's a pretty nifty project. And since I see Neil in the chat, he's also involved, but he's involved in everything, so he doesn't count. Sorry about that, Neil. Anyway, so the Kiwi release process used to work essentially like this. Stuff was developed in Git. And then we tag a release, run a few test images, and decide, OK, is this good to go. Yeah, that's not super ideal. So very quickly, there was a staging project design. So essentially on every tag, you push this version of Kiwi into a staging project, and you create all tons of test images, so live disk images, installation ISOs, and full disk images. And the open build service would then every time we built them, and you get a bunch of test images. And then you find out, OK, do my images built. But that doesn't tell you, do they actually work? And currently, the staging project contains, I think, something like 50, 60 images. And just booting all of them and just verifying that they boot is you can spend all week with that. So that's really a job for automation. And the past, yeah, more or less the last year, we spent on adding OpenQA for this. So what OpenQA nowadays does, it's not fully automated yet, unfortunately, but we're working on that. And the idea is that OpenQA then takes all these produced test artifacts. And when we say we want to make a new release, we take all those test artifacts, we shop them into OpenQA. OpenQA boots all the live installation media, verifies are they booting, the installation images, they are started, they install a disk, and then we boot the disk again and verify whether the disk that's been created really works. And it's called already quite a few bucks. So I mentioned previously bare metal testing, works with the Raspberry Pi. Sorry I'm breezing through that right now because I'm running out of time because I'm terrible at time management. So this is great work that's been done by Guillaume Galdee from ARM. And so this is really testing of a real Raspberry Pi. This has been running for over a year now on OpenQA.OpenSusa.org. And what this needs a few additional tricks. So it uses a nice piece of hardware called the USB SD Max, which is an SD card multiplexer. So it allows you to have an SD card plugged into two devices at the same time and switch between them. So what is this? You have your OpenQA worker, it flashes a new disk image onto the SD card of the Raspberry Pi. They are connected via a serial line and they communicate via the network. Then you have an option how to power the Pi on and off.  And if they work, you're happy. If they don't and something really breaks, you just unpower the Pi and everything's fine again. Cool. So and people have now started working, starting putting this, taking this a step further and introducing, oh, sorry. This is how it looks in practice or how it looked in practice about a year ago and Guillaume's test setup. So what I was saying, cubesOS, they are taking this a step further and that's running true bare metal tests. So this is all very much work in progress. What they're essentially doing is testing cubesOS on real laptops. If you are curious about that, you can go to the slides and this is actually a, this is a link to a blog post pull request by Marek who's driving this initiative. It's quite an interesting read if you wanna find out all kinds of technical details, how you can, which kind of difficulties you run on if you try to really not only test connections via VNC but really grab the screen output if you want to boot from physical hardware and so on. And one of the issues that you run with laptops if is you need to remotely kill them. And so just the tiniest sneak peek about this, this is how cubesOS does it. So this is a servo and it essentially presses the power button. Okay, since I'm running out of time, if you want to get in touch, you can find us on IRSE on Matrix. Here are a few links, you can find them in the slides and with that I'm happy to answer your questions. Thank you very much for your presentation. We'll go straight way to the questions. The first one is by David. Is OpenQA looking at how to use public cloud instances for remote testing? I am thinking of something related to the IPA tools. I think IPA has got a new name. So I think there have been ideas to do that to use public cloud images but it's not super trivial. So there's been the idea floating around that if you have a semi-active OpenQA instance where you just need at burst times a lot of workers, you could spin them up on AWS or Linode or wherever you have your public cloud hat. But I think it's been at ideas only at the moment because it's actually not super trivial to pull off as OpenQA is it usually wants to have a serial connection somewhere and integration with these public cloud tools is not super trivial in an OpenQA context. It's definitely doable. So I have myself added a very rough around the edges backend for OpenQA that talks to vagrant. So it's possible but it's going to be, it's not there yet, if that answers your question. Thank you. And there's a second question by Jan. If the test is really a kind of state of the world of the whole system, how is that what I would want as an app developer while for the system snapshot testing installer or whatnot sounds great for a single app. It sounds like the functionality might be a little out of my scope of interest. That is correct. So if you for a single application, it's not always perfect because you get all your, you get all the other state. But so for instance, OpenQA is, as far as I know, it's started to being used for the GNOME development. So what you could do as an app developer is if you really want to run user centric tests, then you would create some kind of known good base image. So you take your stable Debian, stable CentOS, stable Fedora, OpenSusilip, whatever, you consider yourself stable and you use this baseline image. And in OpenQA, you would have an initial test that shoves your application into this and then runs your tests. But you'd really have to have to consider whether you really want to do that. If it's worth the effort, since OpenQA is setting it up is a non-trivial task. I don't want to downplay that. So it's really not super simple to pull off. It's doable, but it's not super simple. Thank you very much for your answers. Sadly, we're around of time. So there are a few more and there's not time for them but then should be available at our work adventure after the presentation. So if you want to ask him any questions, you can do it there. We'll post the link to the work adventure in the chat. So I believe everyone who wants to ask you something, they can find you there. Yeah, sure. So thanks everyone. Thank you once again for your interesting presentation. Thanks for having me. See ya.


Hi everyone, my name is Li Fanxie. I'm from southeast of China. I did the pre-course at section a few years ago. However, when I was in China, I didn't know this course. One of agencies in Guangzhou told me to do this course because my English was not good enough to attend the Bachelor course. Yeah, so when I was having this course, I realized that it was useful for me. There are four reasons. The first one, you know, it helps us to improve English. The second one, it offers some courses for the Bachelor. And the third one, it helps us to overcome culture shock. You know, for many people, this is the first time get out of China. So, in this course, we can keep some Chinese cultures. Of course, we also can learn some new culture from other fellow students. The final one also is the important one. As soon as we pass this course, we don't have to have other English tests. For example, our TOEFL test. As I know, in other universities, no matter whether you pass this course, you should also have an English test to verify your English quality. Yeah, so I advise people to have this course if that's necessary. Thank you. Bye.


In this video, I'm going to be reviewing Print Pods, it's this device by a company called Evebot which is essentially a handheld wireless Bluetooth printer and you'll be able to print on many different services. This comes in at $149, if you get the one with the standard black ink cartridge then it's $199 but check out the Evebot website with the link in the description below. They provide these handheld printers and multiple different ink cartridges for different surfaces including ones for food. So let's go ahead and open this up right at the top, you have yourself the user manual. This will give you instructions in both Chinese and English just to get you up and running very quickly. You'll be able to see in the quick start guide, it's a very simple seven step process to get up and running and complement this with the app that you can find with the QR code to start printing. So you have yourself here the ink cartridge. This one is the standard ink in black, you can also get them in various different colours. This is the printer and you can see actually it looks very compact, a pair of disposable gloves for when you want to clean the device. This is the USB-C charging cable and this is the printer itself. I think that looks very cool, you'll see there's a gap here because essentially every ink cartridge that you buy will have the compartment with the ink cartridge itself that slots into this place. Just on the top you have yourself the on-off switch, the USB-C charging port and the button that will start the printing. There's an indicator light as well when you do plug this in for charging. I just wanted to highlight that you can also buy other ink cartridges like I have here. This one is a really cool one, it's a skin friendly ink and this one I have is in navy blue. This will stay on your skin if you want it to maybe right on your arm. It'll be there for about one or two days but it can come off if you use a little bit of alcohol or if you're outside in rain then it will start to come off. But if you want it to maybe create some cool tattoos then that's a really funky thing you can try with that. This is the latest ink cartridge that they've just released. This is the solvent quick dry ink so once you do print on a surface with this it will be dry pretty much instantly and I'm going to test this out on various different services but take a look at the description below and you can check out some of these new ink cartridges for the print pods. So I'm going to trial each of these three different ink cartridges but it's worth mentioning to make sure that between switching the ink cartridges from the device itself to make sure you always clean it. So you want to maintain the life of the print pods by not having any contamination or leakage. So you can do that via the cleaning cloth manually or you can also use it via the app which is very highly recommended. Let's start off with the standard black ink. Let's open this up. That is how the ink cartridges look.  There we go and now it's ready to slot into place. You hear the click? It's now clicked into place and the last step is to pair this with the app. So I have downloaded the print labs app. Okay, let's go ahead and turn this on. Select device.  I have the print pods click on next. Configure the Wi-Fi settings. So you find the Wi-Fi that starts with the word eFOT. Then the default password is one, two, three, four, five, six, seven, eight. Hit join and there you have it. The print pods is now connected. So pretty straightforward process. So just a quick introduction into the app. You've got yourself a gallery. If you click on that, there's some presets that you can use, very different options and some of these look very cool. And I will be trying some of these out. You also have a tab here for tattoos. So that's a really nice thing that they've added. So if you wanted to use the skin friendly ink, then you can choose one of these or upload your own designs. You can also add text.  So you can do something like that. And then you can also change the font. You can change the direction to vertical if you'd like. And then you'll be ready to print this as well. You also have the option to upload a picture. It comes out in a grayscale. Pictures I would recommend they need to be very horizontal and not high in length because this is the movement of the printer itself. So when you are printing, you'll go from left to right. Just like you're using text, so you can do that. And then you also have freehand option. If you select that, you can use this and create your own design if you'd like. And then you also have the option to clean everything that you see on the screen itself. You also have a slider here to go even further right depending on how long you want your print to be. Okay guys, so now I'm ready to print. On the app I've added some text. I've just written there, Eve bought print pods. I've got my piece of paper ready. So the way you have to print, you have to make sure that you have the curved part of the print pods facing away from you. So in that direction, and then you'll have to swipe left to right. To start printing, make sure you do press the print button to send whatever updates you've made here directly to the print pods. I already have. And then once you want to start printing, you press the button here once. You'll hear a confirmation beep.  And the printing dialogue pop up on the app will disappear as well. So let me show you an example. You'll see it's ready for printing.  How clean and how clear is this? And you know, it pretty much dries instantly as well, which is great. And this is the standard black ink. So if I press the button one more time, the confirmation has disappeared. And now I can make any updates on this. So if I wanted to get rid of the text, for example, and then I'll add maybe an image. Let's go with this panda. There we go. Maybe I'll add some text as well. And now I'm going to hit print. So the image is uploading, it's sending it directly to here. And I've just heard a confirmation beep. Now I'm ready to print that. So I'll just press the button once and it's ready to start printing. There we go. Quick and simple. So you'll notice that the image has cut off a little bit. So you need to just check the dimensions of the image and you can resize it. So you just tap on it. There's a little resize button on the bottom right. So you can see I've just made it a little bit bigger, like so. And then you can make it smaller. You can even use the buttons of the bottom here, which might be a little bit easier. There we go. If I get rid of the text, there we go. Print. I'll do it on the other side. Nice, quick and clean. Now it's not only paper that you can print this on. You can also use this on various different objects. So you can print on a notepad, on an envelope, on a padded envelope, on a dark coloured fabric. And I will use the solvent ink for something like this. And of course the most common one, you can use boxes and packaging to put addresses on. So one thing I always recommend, once you do print, you'll notice there would be some smudge marks. So make sure you do clean it between switching the ink cartridges. So grab a tissue and just make sure you wipe it just so that it doesn't leave any permanent stains at the bottom of the device. You can use a bit of a wet wipe, but make sure you don't get anything on that actual printing cartridge just there at the bottom. So what I'm going to do is I will turn this off and I will now switch over to the quick dry ink and use this one, the solvent one, on a few of these objects. OK, so now I have this new quick dry ink cartridge installed. This is the solvent one. It's always recommended to do a clean right before you start using it. To do that in the app, you just go into settings and then just at the top, there is a toggle to display the settings of the solvent in turn that on. Then you have this option there, print head self cleaning. Once you press this and then hit OK, it will drain a little bit of the ink, which is why you need some tissue to put underneath it so that the ink can come out and you can do a bit of a clean and then try and see if it comes out correctly. So before you start using this on any other materials to do essentially the live versions, it's always recommended to grab some paper and just run some tests to see if it's coming out correctly. So I'll go ahead. I've created a little image of California. There we go. Not too bad, slightly faded. But the great thing about this is that this dries instantly. Let's go ahead and now test this on various different surfaces. So I'm going to now take this gray packing envelope and see how it comes out on here. And actually, it stands out a lot more on darker backgrounds, which is quite surprising. And you can use this to send addresses and shipping envelopes like this. So let's go ahead and do one on here. Very quick, easy. You get the beep confirmations and you can pretty much use this for any type of purpose. And I'll just do one more on the back of my notepad. There we go. And you press the button to stop. And this is really great. It works on various different types of services.  Let me go ahead and remove this by hitting this clean button. See what else I can add. Let's add maybe a QR code, maybe an image. And let's see how this comes up. Hit print. And again, I'll test this on a piece of paper. There we go. Very nice. And the last ink cartridge that I have is this one, the skin friendly ink. So let's go ahead, swap out this ink. But right before you swap it out, just make sure to give it a clean. So I'm going to bring this tissue showcase how this works. So you make sure it's placed on top of the tissue. There we go. And then hit OK. It will start draining. Just hold it here a bit. Once it's finished, you'll see ink has now leaks. And just make sure you wipe the bottom of it just in case there's any additional leakage from the cartridge. Make sure it's fully clean before you replace the cartridge with something else. OK, I now have the skin friendly navy blue ink cartridge installed. Let's go ahead and add a tattoo. So I'll go to gallery, tattoos tab and maybe let's take this one. So I always would recommend before you print directly onto your skin, just do a couple of trial runs on a piece of paper and make sure that it's coming out correctly before you put anything onto your skin. And this one is looking pretty good. So this would be great, you know, if you wanted to get a tattoo, maybe on your arm there, maybe on your bicep. Wherever you feel like you like to have a tattoo, then this is a great option as well because it is skin friendly. And if you wanted to remove it, then it's very easy to remove it because it's water soluble, which means you can simply wash it off or use a tissue or wet wipe to completely rub it off before it dries. But have a look on their website and check out some sample photos of using this feature. OK, now I'm just going to show you a comparison between each of the three different inks and really showcase the water soluble ink, which is the quick, dry one, how that doesn't get rubbed off with water from a reflective surface like glass, plastic, metal and those kind of things. I'm going to just start off with the standard ink that comes in the box. I'm going to print onto this glass board. There we go. And now I'm just going to quickly get some water here and show you that this comes off quite easily, completely rubs off. Now I'm going to do the same test with the skin ink. Let's go ahead and open this.  This is the skin one. And again, you can see it comes off very quickly, very easily. And the last one, the quick, dry ink solvent based. This one should be very difficult for the water to completely rub off. And now you just let this to dry for a few seconds. This is the quick, dry ink. And then now I'm going to test to see if it actually rubs off with a bit of water. There you go. You can see it's really dried in and I can't take it off. So this is perfect to print on surfaces where it might be a little moist. It may get wet and you still want it to retain. And it's really maintained the print to the point where no amount of water will actually smudge this off. So that, for me, is a big win for this type of ink cartridge. Just a side disclaimer, I have the pre-sale version of this quick, dry ink cartridge, but it will be the next one that gets released by ETHWAT. But currently at the time of this video, it's still in testing and optimization stages, but keep an eye out on their website once it does get released. And that's pretty much it, guys. Hopefully you found that review useful. This is a very nice little device. Of course, make sure you do clean this quite often, especially when you change between multiple different ink cartridges. Check out the ETHWAT website for all of the pricing information, any discounts they may have and all of the specs and sample photos of all the different things that you can do with this device. If you guys have any other questions about the print pods and its capabilities, drop a comment down below. If you did find this review useful, make sure to give it a like. I review all things tech with new videos out every week with really cool gadgets like this. So make sure to subscribe so you don't miss any of those ones. And I will catch you guys at the next one. Take care.


They got what they wanted. They got the trade. They got the coach out. Now Doc Rivers is coming in. So now there's no one else to blame other than these players. So I expected them to come out motivated.  That's been the big topic, obviously, with their defensive numbers being so low. And what's weird to me is this team has the talent. They have the defensive capability with Jake Crowder, with Giannis, with Pat Conte. And these guys can defend. So I think now they're just having this concentrated effort on that end. Because you can see when the big three is scoring 87 points, they are tough to stop. So you have to be able to defend and win games on that side when you're going to get big scoring on nights like this.


Random effects are latent variables, whose values are not calculated during estimates. However, post estimation when we do diagnostics, or when we visualize the results using graphics, calculating estimated values for the random effects could be very useful. So for example if we are companies, we have a random intercept, so we know that the mean value of, let's say, performance conditional on the observed values, the predictors varies between companies. Sometimes we want to estimate what is the base level of performance for each company, for diagnostic purposes and plotting purposes. There are a couple of ways of doing this. This is more of a nice to know thing, but it's easy to get confused because of one particular term used in these prediction techniques. To assume we have this model, so we have a random part here, we have three random effects. It's a random intercept model, three levels. We have the effect of year. How do we predict the values of the random effects u00k and r0jk? Well, there are two main techniques that we normally apply. We know that in the population based on the model assumptions, the means of all these are zeros. So a simple strategy to estimate what is the random effect of, let's say, r0jk, let's call that the firm random effect is simply to take the residuals that the random part is estimated from and take the mean of the residuals for a company and that is the estimated value for the random effect for that company. This is called the maximum likelihood approach. So you basically take each cluster, you take the mean of residuals for each cluster and that is the random effect, estimate of the random effect for that cluster. So that's a specific score and that's the best guess of a score for that cluster. However, this technique has some problems and the problem is that if we take the mean of a firm and then we use the same data to take the mean of the industry, then that will inflate the actual variance of the sum of the industry effect and sum of the firm effect because, let's say, one extreme observation is counted twice. And to account for this variance inflation, we have another technique called empirical base predictions. And this is something that sometimes confuses people because they see the word base here and while the Bayesian theorem is kind of used in estimation, they get confused that is this actual the base estimation where I have to define priors and where I have to interpret the posterior distribution and so on. The answer is no. This is empirical base because the technique is based on basis idea but it doesn't really affect your model estimates in any way. The model estimates are what they are and this is just a way of calculating the predictions. So how does empirical base work and what is the idea? Well, the idea is that these maximum likelihood estimates will be, they will have too much variation. So if one company has very extreme performance, then that extreme performance large residual will increase the variation of increased estimate for the industry effect and for the firm effect for that firm. So it's counted twice. The idea, I don't go into the math but the idea in the empirical base prediction is that you take the value, there are distribution based on the model and then you take the actual observer distribution of the residuals and then you shrink, you move the distribution of the residuals towards the actual estimated distribution and that gives you estimates that have more desirable statistical properties than the maximum likelihood estimates. So if you want to characterize an individual case an individual industry or individual observation, then the maximum likelihood approach is the best. But normally we want to see how the observations behave with respect to another one. For example, we would like to calculate the spaghetti plot and we want to plot many observations at once, then inflating the variance of the estimates would be bad and empirical base predictions would be better. In practice in research applications when we try to write the journal paper, we are almost always interested in trends in the data and not individual observations. So the empirical base estimation of random effects is superior for that purpose and that is in fact default in many statistical software. To get ML estimates, you have to ask for them separately from the software but it's good to know that these two alternatives exist and to verify from the documentation which one is the default before you use the default prediction set, use the prediction command with the default settings.


The water-absorbing geocomposite consisting of SAP, geotextile, and internal skeleton is a novel method for superabsorbent polymer and fertilizer application that allows roots to overgrow the geotextile and access water. The experiment aimed to determine the effect of the geocomposite on the growth of container-grown Brunner macrophila when used as a multi-compound fertilizer carrier, compared with soluble and controlled release fertilizers. The geocomposite positively influenced plant traits after 8 and 16 weeks of cultivation, increasing the number of leaves by 42% to 60% and biomass by 260% to 340%. A higher dose and combined use of the geocomposite had a positive effect on all examined traits. This article was authored by Katarzyna Rabowska, Piotr Chohura, Regina Dubix, and others.


After 57 days of being behind bars, Ronnie Lee Hall of Hueysville has been released from jail. Hall was arrested and charged with murder back in April after he shot three people at his home, killing two of them. Since the beginning, Hall has claimed self-defense. I don't know why he was ever in jail the first day, that this was the clearest case of self-defense. I've seen it 35 years of practicing law. Everything Mr. Hall said was confirmed by the physical evidence.  He got to a gun, he was on his porch, and they were still milling around in his stairwell with a gun when he opened fire and defended himself. Under the law that the legislature passed, you have right to kill anybody who enters your house unlawfully. According to testimony before a Floyd County grand jury, the home invaders were going to stop at nothing.    The Floyd County grand jury met on three occasions to hear evidence, statements and testimony regarding the case. The grand jury heard testimony from every person identified by anyone having knowledge concerning this case. After much deliberation, the Floyd County grand jury issued a no true bill Wednesday. This means Hall will not be indicted and will no longer face murder charges. Since his release, Hall has had to lay low because of threats made toward him. And on the other hand, even though there's a lot of threats against Mr. Hall, what we have learned throughout this unfortunate situation, Mr. Hall knows how to defend himself. EKB News has reached out to Ronnie Hall for an interview, but he has declined in order to not disclose his whereabouts. Reporting in Prestonsburg for EKB News, I'm Shelby Steele.


and you think how did I do that just by making phone calls something so simple but it's that little simple things done consistently over time this is what I believe I'm sharing that with you for nothing just get out there and succeed my favorite all-time favorite business motivational inspirational book of all time and it has nothing to do with real estate is and this is the original copy that I bought from day one when I read this book is the Slight Edge by Jeff Olson this book I've read this book more than any book I've ever read and I'll say that it just it blows me away each time that I read it every time that I read it I pick up something new out of it that really changes my life I mean this this is a game changer it's a life changer and so many people because I've been recommending these books for a while now and so many people have reached out especially about the Slight Edge and said how it really has shaped their future and really given them the tools the mental tools and the confidence needed to push through and you know just a quick synopsis it's it's basically it comes down to the little things that you do every day that add up to be so huge but in the short term you don't realize how big these things are okay for example you know anything I mean you know let's think about business and real estate making phone calls you make phone calls you do a phone call session your business didn't change that much you didn't make any money the day you made phone calls you might have picked up a few future clients that may do something in six months to a year or next month but nothing happened today your your life doesn't look any different today based on this phone call session but when you do this phone call session every day the way that you're supposed to do it over the course of a year to two years you look back and all of a sudden you're the number one agent in your area and you think how did I do that just by making phone calls something so simple but it's that little simple things done consistently over time one of the uh I believe one of the examples that Jeff Olson made and Jeff Olson and Darren Hardy you know Darren Hardy wrote the compound effect and it's a very similar idea you know it's it's very very similar Jeff Olson illustrates it just night and day better in my opinion but it's the same philosophy there and I can't remember which one it was but they talked about you know if you had a hamburger okay if you had a hamburger today you're not going to look any different okay today yeah you're you know when you look in the mirror you ate a hamburger you look in the mirror you're not going to look any different right then okay but if you ate a hamburger every day for six months even a month up to a year whatever you're going to look completely different in a negative way however if you to salad you know grilled chicken salad today same thing you're not going to look any different when you look in the mirror but over the course of six months you're going to look much different in a positive way okay but you know it's it's what you consistently do okay are you eating a hamburger every day you know think about it figuratively in your business are you eating a hamburger every day in terms of are you not making phone calls are you not doing the things that you're supposed to do and doing things that you're not supposed to do or that aren't productive or are you eating the grilled chicken salad you know are you making your phone calls are you following up are you doing the things that you need to do to succeed okay so the things that are done consistently over time all right success and failure are both slow processes either way it goes you're either slowly succeeding at a high level or you're slowly failing at a high level so it's your decision based on your day-to-day activities and that's why I say don't focus on the results so much as your day-to-day actions if you do the actions the results are going to happen the way they're supposed to happen so the slide edge complete game changer I want you guys to read it I want everyone to read it and I think that it's a must for anyone not just business life any industry whatever you're doing it doesn't matter to me this is the game


is short off the side of the rim. Vizana saves it goes into the backcourt. Here come the Mustangs three on one. Roberts on top.


All right, I want to kind of give an overview of how I'm using Sync thing here Now before I dived into sync thing and started doing this review I've actually used it now for about 30 days or so and I haven't had any problems I'm using it live on my company files and I kind of came up with a method that I liked That's worked really well that I feel is both secure and robust Because syncing is not exactly a backup tool, but it is a way you can synchronize files Now what's important to me is that when I go home and if I'm working on a project that that project is completely Synchronized with my laptop. So if I'm at work I can work on a file and easily get it there Now I was using own cloud to facilitate this for a while This is my current setup for sync thing Basically, I have my office computer the free NAS the interwebs in between home Linux box and my laptop now The ways to set up my office computer syncs to the free NAS box Then the free NAS box syncs to the home Linux box because that way I have real time synchronization off-site And then my laptop will sync to the home Linux box mostly because it's at home But when it's not at home it goes out to the internet and syncs to the home Linux box That way it always has a fresh copy when it's on there And because the synchronization is going on between free NAS and my home Linux box I don't need my computer to then pull the same files down again It'll look locally and find my computer find my home Linux server and pull the files down really fast that way Especially if I have a lot of big graphics files that I'm working on now enough of my crew drawings there I'm actually using sync thing and I'm using the sync thing GTK version. This is pretty cool It's slick. It's got a cool interface on it And it's just a front end for it still runs the same tools in the background It just gives you this kind of pretty interface, which is a cut-down version of the web interface But just easy for open up web browser and it has a few options in here that let me start things Run it on startup set the limits makes things just kind of convenient without going in there If I had a bunch of stuff and I just wanted to slow it down I can really quickly set a rate limit You don't have to use this like I said It's just kind of handy and adds a few other little things plus so you hit it Just those open a web web interface and right here so with the UI settings if you want to Modify what kind of notifications you get if any and things like that. So definitely a pretty cool Utility here and it likes you so you can add some extra variables to it if you want I'm just using it digitally at stock other than telling it to run at startup and everything else from here I will just go to the web interface, but this is pretty handy tool So here it is. I've got my graphics videos and system business files, which total 3843 files and about 40 gigs with the files now with sync thing I found that if I tried to do Everything on here it got a little intensive looking for changes I'm not sure what the upper limit is but I didn't want anything that taxed my computer So I just took the the files that I use all the time Which is graphics my video edits for YouTube and my business files things that are important that I care about keeping Synchronized, but I don't actually synchronize the videos off-site because they're just too big But I need them real-time backed up as I'm creating them at least one extra copy of them in case one of my hard drives fail in my computer so With that being said I have a whole another backup system able to talk about another time It's just a simple r-sync For all my files because out of all of the gigs of files I have most of them don't change very often just archives of things that I don't want to lose So here it is on my local computer and here it is on the free NAS box Now the free NAS box as I said syncs from here. We have this other one called the QB servers This is just some testing I did with a another system I must see how it worked on windows and I don't run any windows machines So I set up for real-time synchronization on a QuickBooks terminal server with a lot of users And a decent amount of data about 90 gigs worth the data and it works awesome It's been really cool because now they have real-time backups on there. I still have another backup system But it's kind of nice to have a real-time backup So it's constantly keeping revisions of everything and it taxes this machine a little more But all together with 18,000 files on here in sync the CPU utilization generally sits really really low And right now the RAM utilization is a hundred and twenty three megs. So it's it's pretty scalable I mean we said total with 138 gigs. We're still only using a hundred twenty three megs of memory Now here's my home box. Now my home box has an extra computer on here So I sync it to my HP laptop We're gonna go ahead and edit this here now locally it looks for this and it finds it of my local IP address when I'm home IPv6 is at home. So it also does that type of discovery, but I actually have it set to Dynamic that's because my laptop wanders around And my laptop has the specific TCP URL port statically for my home now The way that works is because I'm not using any of their discovery servers I didn't want this to be set up with a noisy protocol that runs out and discovers and is always looking I have each one of these boxes statically pointed So if we edit the free NAS box locally here, it's all using default ports But I have it specifically TCP 192.1683.4, which is my free NAS box and then I have it shows us think this so instead of using any of the Discovery none of that because I'm pointing each one of these directly It also is nice because instead of them finding and discovering each other They instantly lock on as soon as each system starts up Now the same thing goes for here. I'm gonna obscure the details, but I will tell you that the This goes to TCP blah blah blah a domain DNS entry. I have just for my home to keep that in sync So that being said this syncs up with this is the free NAS box going in syncing up with that So the next thing I do because free NAS not being a backup utility and a reason they remind you that if Something happens on one node and the other nodes aren't set to master actually allow changes And for example, I want to allow changes if I edit something on my laptop or I edit something on my desktop I want the changes to synchronize between there now. What if something catastrophic happens? I am using in each of these the versioning So I do have staggered versioning which is going to keep versions of the files But I see that'd be really difficult if something catastrophic happens Oh, let's say if somehow magically I got crypto Lockard or just deleted all of my files off one of the nodes The delete would be cascaded through the entire system So then I'm using free NAS, and I'm using snapshots. I do one a day And if you're not familiar with the way ZFS works ZFS allows you to have snapshots And what these snapshots do is I can quickly Disclone or roll back To a previous snapshot So if I roll it back to a previous snapshot then the whole array just jumps backwards to that now It's kind of a neat feature So if one of the nodes somehow deleted a whole group of files I could go right to there hit the snapshot and because it would update in free NAS It would then push the files all the way back to the other machines So it's kind of another added layer that I have on here now I am doing complete snapshotting with our sync with my other backups But that's really working well for me doing it this way. I feel pretty confident with that along with my Our sync backups kind of like I call cold storage that if anything catastrophic happened to one node I could easily recover from it without having to go to my cold storage backups And this has been working like I said pretty good. It's not really had any problems on my home box here It's using only 39 megs ram for the 1677 files because I only synchronized business files and graphics Because it's just too data-intensive for my bandwidth to try to synchronize videos because every time I produce these videos You're talking about three or four hundred megs at a time Sometimes even gigs if it's a large video project that I've got in there So I just have that synchronized locally going from here over to Over from here over to the free NAS sync thing box now It's worked really well on free BSD and this I'm also impressed with how well it's worked on the Windows server is a server 2012 And it's backing up everything on there now that is that to master that way any changes that may occur on the free NAS box I didn't want to accidentally get pushed up to the server But like said it has a secondary backup. This is just my general setup for using sync thing and Kind of showing a little bit of scalability of it I mean 138 gigs in sync. It's hardly taxed in the CPU at all and it's working really well so if you have any questions or suggestions for improvement if you like the content like and subscribe and Please leave some comments below if you had questions about this or saying, you know I'm doing it wrong or you think there's a better way to do it Or maybe this works for you and you've had some good experience with sync thing. Thanks