What's up everybody? Jason for the Ask Me Caste Breaks.com. We are doing 2020 tops definitive baseball One box break pick your teams number 20 and again guys. We did have an R&B randomizer to do Here the customer names that bought in straight up the printer ran out of any paper. So I've got to refill it right now But here you go. Here's everybody part of the break itself So good luck to everybody for getting this in selling out pretty quick and then got to print out one last paper before it ran out which is here the R&B for The Boston Red Sox Chicago White Sox Cincinnati Reds Houston Astros and Toronto Blue Jays And we have two boxes left guys So to the top or bottom of our Ola one two three we're gonna go with the top four five six for the bottom and And it is a four so one two three four five six bottom This would be for the next break and we'll post it up for tomorrow. Yes The great roll eight hits per box guys So I know it's a high-risk high-reward type of break, but when you do get a hit here, it's pretty nice Whoa, that all just one car. I don't think it's just one part of it. Oh shoot. It is Is this one? It is one card. What is this? This is a piece of the helmet Eloi Heminis 24 to 35 Helmet collection relic card spot for going to Mike last Bob Mojo So put that on a little slider box for you, buddy Next we've got is a Joey Vado 39 out of 50 Cincinnati Reds That is nine Ryan Herald So you're right already on the board man. Never gonna go hit this now How about a little Dylan cease 13 out of 25 another one for the White Sox R&B and That'll be three going to Mike G And the frame guys is for the Padres Fernando Tatis, Jr. 13 out of 30 Padres I think bought straight up Which is Justin There you go Justin Dual autograph how about a Garrett Cole Nolan Ryan nine out of 25? That is part of the R&B Nine who is that for Ryan? Who is that for I guess Ryan doesn't know who it's for we got a little pinstripe an autograph robbing you out 10 out of 50 that is a Milwaukee Brewers Going to chat button straight up Our city is Aquino nine out of ten. Wow. What a break for spot nine What a break for spot nine and Ryan? I'm in your good graces at least for another couple weeks Wow, no way Wow All right last one guys How about a little patch auto boba shut 15 out of 50 part of the R&B five Ryan Herald I don't know a lot guys have been raking these last two breaks Pretty strong break Right here R&B safety meant definitely made up for those and there you go guys. That was a break. That was break a definitive guys again Last box. We'll post up in the story. I can get it done tomorrow guys. Appreciate it guys Jaspy's case breaks


So let me first introduce our keynote speakers. Our very first person is Marshall Hilt, the guy with the headset or without the headset now. Marshall is an open source enthusiast. He's been in the open source communities for some time already, but his favorite topic in the last decade already is talking about AI ops and AI and machine learning. Of course, Marshall today is working at Red Hat with an office of CTO. CTO is the incubator for us for new technologies and new types of things. So he's always excited and exploring new open source technologies. Then we have Steph here. Steph, I know you for some time as well already. You've been in the open source community for 20 years or plus already, and you've been involved in many different upstream projects, but your passion is to make sure that different upstream projects actually work with each other. And then we have a healthy ecosystem of great Linux components. And that's what I like about you. And then we have Tomasz Tomecek. And also I know Tomasz for almost a decade now. Tomasz is a great example of a person who approached me at one of the DEF CONS nine or eight years ago, asking me, hey, Radek, I love this open source thing. How can I start participating in it? And today Tomasz is a principal software engineer who's working on some of the core projects within Red Hat Enterprise Linux or recently on CentOS Streams. So again, one of the great engineers that we have here at Red Hat. And today we're gonna be talking about open source operations and open source services.  Yeah, that's a really good question. And it starts like every fairy tale with once upon a time, but it's this one is based on a true story. So once upon a time, open source, next slide, please. Open source entered the world. Actually, it was code that entered the world and code was made happy by open source. So we revolutionized the code development, how we develop software basically. And I don't wanna talk about this part yet because we're at DEF CONS. Everybody should know what's why open source and why it's so great to have open source communities. And we had a lot of projects spawning and communities evolved. And you had a healthy competition against other and amongst others. And some companies would differentiate on the top of the common code. I mean, Red Hat ships open source products based on open source code. But the code was the value, right? So code was there to solve the problems. You would have features to differentiate yourself from other projects. And Ops more or less was an afterthought. And then in 2006 or so, Cloud came along and it embraced code. And I mean, it was hugging code really, really, really tightly. Right? And then suddenly Ops became important. So you wanna get your code running in a reliable fashion because in the end, if you're not operating, if you're not available, then your business would lose money. So you could not really have outages by any means. I mean, we take it really, really for granted nowadays that our phones and the internet always works. So a new persona emerged. It's the implementation of the DevOps community. It's the service reliability engineer, the SRE persona. But now is it really balanced? So is code really as valuable as Ops? So there's this person, Matt Essay, he's working at AWS for open source. And he tweeted just recently about this story about Yagabyte, a company essentially switching gears from an open core model where they had parts of their code not open to open sourcing everything. And he said, yeah, that was the right decision because in the end, the code was not the compelling value. It was the usage of the software. So if the customer can't use the software, then it has no value. So it's really an operationalizing it so that the customer can be productive. So everything is not just the code, but everything is also the Ops platform. So I would go even one step further and say Ops is even more important. And kind of by definition, it's always proprietary. I mean, we use open source tools to run our operations for monitoring and stuff like this. But in the end, every implementation of a data center, of an Ops service of your workload that you're running, that's private and the snowflake by default because of very good reasons, because of privacy and access permission. So you can't just let everybody access your backend and data center, that wouldn't make sense. So my core proposition here, or my core thesis is if the value in IT is an Ops and Ops are proprietary, then open source has a problem. And in the Kubernetes community, we see that movement from where we try to operationalize the knowledge and the excellence of operators as in the person into a bit of code, basically codifying operational excellence in something that we can ship with the product. We call that operators. And I think if the developers who will implement those operators and the SRE guys who are running in these operational issues and basically experiencing what it means to operate the software, if they can't meet and if it's just another throw my stuff over the wall thing, then we're really, really missing out some great opportunities. So I think what we need is a cloud installation with full visibility into the Ops center, where you can really look at everything completely transparent down to the stack, so that we have that collaboration going on. All right, Marzo, thanks, I see where we're heading, but honestly guys, I don't know what the solution for the problem is. Steph, I'm pretty sure you got something. So I guess, as I understand it, Marcel, open-source in the code is not sufficient to make an open-source service. We see a lot of services that throw code over the wall. Some of them aren't Red Hat, some of them are not and share their code, but it's insufficient to run it, it's insufficient to contribute, it's insufficient to actually participate. But I would say that open-source in your operations, whether it be via operators or other mechanisms, is also insufficient to make an open-source service. It's necessary, so I like that, I'm buying what you're selling, but I think it's insufficient and here's why. So a service that's running is really a whole bunch of different interconnected things. I mean, source code is there, it's very prominent both the source code for the service itself and for operating it, but there's a crazy amount of other things that contribute to the value of the service. All of these things are really hard to replicate and all of these things define the service itself. If you have a service, perhaps like GitLab, where it's intended for other people to run, it's a product and yes, you can run it, you can consume it as a managed service as well, then yeah, I get it, sharing your operations might be good enough, but for most services, well-developed services, that doesn't play. Open-source thrives because it converts users into contributors.  This is how it continues. Conversely, open-source starves when it cannot convert users into contributors and we see that with services, with software as a service so much, that there are users who are consuming it and some of them notice that, hey, we need a fix and then even just figuring out, hey, can I contribute to this thing?  Here in this diagram, we have open-source software on the left and we have software service on the right and you can see that even walking through the process of a user turning into a contributor on typical open-source software, there's so many steps where we lose people, we lose users and a few of them filter out and become real contributors. Many of you here have gone through some of these steps or other obstacles, but when you look over at the software as a service side, there's no way to overcome many of these obstacles and we pretty much lose everyone and that is the challenge that we're facing. What's more is it's not just about these mechanisms here and all the obstacles, but the users of a service explicitly chose not to get into the operations. Why are they consuming that service in the first place? Why are they using software in that way? Because they don't want to operate it. So if operating is necessary, operating your own copy of it or spawning up your own instance or all of that kind of forking it in some way is necessary to contribute, we lose them right away. And the other dynamic is that as we noted before, these two folks here, these two twins started from the same source code, the same DNA and yet they're growing up very quickly to be different people. In fact, who knows, they might even be enemies at this rate, look at what's going on here. But if you fork a service and all of the other stuff around the source code, the infrastructure, the interconnected services, the legal agreements, the data, the other users and so on, essentially your copy of the service is a different service. And so we have to overcome this challenge that a service itself, a well-developed service is not a reproducible thing. We have to, so the threat that's facing us, let's use Postgres as an example. On the left, we have PostgresQL, which is one of the most awesome communities that I've ever contributed to. I've only contributed a feature and a few fixes, but not only did they make me feel welcome, they made me successful in contributing and made it non-surprising, expected, treated me like a peer and this was amazing. On the right-hand side, we have Amazon RDS which runs Postgres, runs all of the operations for you, the backups, the monitoring, the scaling, the high availability, the infrastructure, everything that you could possibly need makes it much easier to consume Postgres. However, if everyone started consuming it that way, using Postgres that way, the pool of contributors would dry up. There's no mechanism for people to convert from a user to a contributor. So here's what I would say is the challenge that we face and the challenge that I put before you. This is the target, the goal we need to get to is that a user of an open source service can discover which component of that service, which microservice, for example, to contribute to, can make a nonsensical change, perhaps adding a printf statement or changing the spelling of something like so many of you have done, can then experience that change when using the existing service, when it acts on their own data or perhaps is operating on their own workload and then iterate on that change until it's useful. Until they can propose it for merging. And another part of this is that we, the communities will form around this and we need to enable them so that these communities can share changes, can stabilize new behavior and work together on certain features before every user of the service stabilizes those changes. We're familiar with that here. We work on Fedora. We stabilize things before everyone else gets to them. So. All right, Steph, you scared me a bit because this really sounds like anyone will be able to contribute to my favorite service and take it down and break it. Is this thing even real? Is it even doable to make sure that people can contribute to services that are just running online? Tomás, I'm pretty sure you have some answer for that. Yeah, okay, Radku, I'll try to answer that. So I would like to take you here on a journey from the traditional development process to the ultimate contribution and operation workflow. So let's start with like this first stage and I'm pretty sure that all, like all of you are familiar with this. Like this is a well-established open source project, like in our case, open source service. There are full requests flowing in. There's continuous integration, which means that all the changes are being tested. And then if you want to run your service yourself, you just open read me or like the documentation and deploy it locally. And ideally, this would be running in containers so that it's really easy to do. Like we all know this. So if we go to the step two, like the next step would be to running all the operation tasks, like as soon as they are merged, like either it's code or either it's the operation like playbooks or scripts so that we would have added like another deployment. In our case, it would be stage. So on the left side, we have the production service which is generating us money and that's what users are using. But at the same time, we would have stage where we would have the all the latest code available. And again, this is pretty common and pretty like around all this. So let's go number three. And number three, like the biggest difference between two and three is that in two there was no traffic for stage. Like we would just make sure that like our latest code is good. But in three, we actually want to expose stage to users. In this case, that would be probably contributors. So here you can see that our customers are using the production deployment which is like stable and scalable secure. But we also have this stage which is different probably not so secure and hopefully matching production, but maybe not. And that's where the value is like our contributors if they use stage, like we are getting ton of feedback like if it works, like if it breaks for different circumstances and we probably don't want to expose this to the customers and like get them yell at us. And at the same time, we want contributors to still use production. Like so it's really up to them to pick like what they want to choose. And that's a manual step to be honest. So here in number four, we would like to introduce a new thing like a router or a proxy which would be the unified point for everyone to interact with our service. Like whatever deployment it is, like this router would route the traffic to the appropriate deployment. So that's for example, our contributors would still be able to use stage and customers would be exposed to production. And if we wanted, we could start routing some other production traffic to stage and make sure that our customers like it works for them and stage actually works with their workloads.  We can create as many environments as possible and test features as they are being developed. So let's say that I'm going to work on my mega feature and I won't have it deployed and I want all my contributors or like all my teammates to try it as soon as possible. And this way, if we have the traffic router automated, like it should be very easy to set up. And if you look at this picture, you might be asking like, what's with the kittens? And what Steph said, like Steph said that we would like to turn users to contributors and I would like to step it, like go one way further and I would like to turn our users and customers into acute kittens. And this is number five, like this is what I personally call the ultimate contributor and operation workflow. Well, you are able to very like iterate on your service very well, deploy it, you have automated most of the tasks and it's very easy for people or for the community to try changes as they are being developed. And here we would like to invite you to work on this, like work on this with us because not everything is solved. Like number six, what's the step number six? Like how do we treat data, which might be like embargoed customer data? How do we treat security or even like what Radix said in the beginning, how do we make sure that production doesn't break? And that's what we are trying to figure out and we'll have links for you in the end of the presentation. And in the meantime, I'd like to show you some examples. Yeah, Tomas, I like all this but give me some real projects or this actually works or there are some snippets where it's already working. Oh, okay, yeah, yeah. Okay, let's go for it. So in first example, like here we have a screenshot of a pull request and you can see that the maintainers of the project are able to request a testing version of the project. And then there is a bot which is which deploys the change like somewhere and makes it available. And this is exactly what we are looking for with these open source services that I as a maintainer can request it to be deployed and then I can interact with the service and try to change myself or like anyone in the community. Like this is the perfect example of what we are aiming for. And you can do this, like this is for example, cook with podman, you can do it with other projects like, okay, do your Kubernetes as well. And on the next slide, I wanted to show you how we are doing it in our project in Becky. Like our project has many features and one of the features is that it's a GitHub app. And we have two separate deployments and up to our users to pick, like if they want to be on the one which is latest which sometime might be not so stable or if they want to be on production, which is stable and that's like that's the main thing. And they'll just pick it by like picking different GitHub apps. And you can see that we don't have the router thing here because users still need to opt for the specific version. And if we had the router, there would be just one and we would have some different logic to do it. And in my final example, this is open data. And I would say this is an excellent example of the like stage one that you can contribute like changes to their container images or to the manifests how they are being deployed in OpenShift. And you don't need to know how to deploy them. The CI system will take care of it but there is no way to like perceive your changes. Like you still need to deploy it locally if you want to test it out but the contribution workflow allows you to like so that it's tested for you. You don't need to know how to do it. All right, great Tamashi, thank you. This was a lot of interesting stuff I have to say and I'm pretty sure there are some questions on the audience. So guys, if you want to ask something right now please use one of the chats the stage chat here in Hopin or ask through the Q&A section. Before you do so, I've already collected some questions from our Twitter and from our Discord chat. So I'm gonna ask a few of those here right away. One thing that I'm really worried about is data privacy and user data. How do we ensure that the data are not leaking from some of these services or how do we make sure that for these stage environments I can use the same data as I would use for the production environment? Steph. Yeah, so there's a couple of things we can use here. One of the things you'll notice when Tamashi went through that is many of the techniques he shared were existing techniques used towards this goal, this challenge that he wasn't inventing anything new and I believe that there's existing techniques we can use to solve the data challenge. One is the fact that in open source we regularly run code against our data that other people have changed. But we do have a step that happens of review of other people vetting that code before it touches our data. So it's important for us to work on this and make sure that in this contribution model to services the contributions can only touch the data of the user that they originated from. You'll also see many projects have an okay to test flag or some other indication in their workflow that says they're ready to allow their CI infrastructure to run on a contribution. That means a maintainer may have reviewed it sufficiently to know it isn't a Bitcoin mining bot or some other thing that does crazy stuff. Similarly, these contributions would certainly need a review step of some sort before a contributor or even a team member we can deploy their code against real data even the user's own data. So by bringing these kind of techniques together I mean there's probably more here. I know that in the SRE space there are techniques for ensuring that only the software can touch the data and never the operations code for example or other things like that. And we can work together to figure this part out it's not completely done but I'm pretty confident we can figure this out. And I would add to that that in security one thing to solve this challenge never really worked security by obscurity. So instead of just don't touching it and making everything close I think it's a real problem and we don't have answers to that. So let's open it up for research. There's a lot of research going on in data privacy data governance just because data is also one of my main concerns these days data bias and a lot of things are going on there also in the AI domain. So that's something that needs to be actively solved and not only in regards to data that you are producing in your deployment but also in how we exchange data. So I think we're beyond a world where I'm just sitting on my pile of data and I'm trying to do my best there but I'm also working on data that is coming from my competitors from people that I'm working with from my customers and such. So how do we exchange that data and make it still secure? How do we make it private? I think that's one of the main challenges ahead and we made that good for face recognition voice recognition, but we really suck at doing this with the data that the computers are generating. So Marta, I get that and I get the contribution model for services but what about the operational side? How would we contribute to the underlying services that power the whole application, the whole service and are there any specifics for that? So the how is, I think that's pretty straightforward. We just in air quotes need to replicate what we did with software for operations and that doesn't exist yet. So if I want to jump into a software project I'm looking at on GitHub on beginner labeled issues and I can just contribute there. How do I get into operations? I can apply for a job, yes but can I set up a reproduction environment somewhere? No, because there's money involved. So opening this up for a community approach where people can actively contribute to running services, running productions. I think that's critical for also for the educational piece, for growing new talent that is willing to go into that SRE route. Obviously you still will have some deployments that you can't completely open up. So I would say there's a sort of an open cloud that is running workloads that are not super mission critical where we can reduce the SLAs and we can break things and we can get PostgreSQL developers running and production great service of their PostgreSQL database always with a caveat that it might go down that you shouldn't be storing private data in there that you could lose, right? But then building on top of this operational excellence that's captured there, we can ship a baseline to the actual production great running PostgreSQL databases and train on that data and train really, really, yeah, turn it into code. So that's the business side of it. Great. Question for Tamayesh, probably. Do you see any other services that would benefit from this approach? You gave us some examples where pieces of this audit work but what other things would be the next step for you? Well, all of them, I mean, Ratko, you tell me. I would love to have my Gitlub running. How would I do that? Well, I would say first the Gitlub as the upstream project would start need to participate in, like would need to enable this kind of contribution workflow that you contribute to Gitlub and then you are able to experience it, let's say one hour later when it gets deployed and there is a bot in your merge request would give you a link, like how you can try to change out. But I mean, if we were at real DevConf inside the Chateau, I would actually ask the question to the audience, like what services you would like to see that they would use this kind of contribution and operation model? Yeah, what services would you like to contribute to? Put it in the chat. But I will say Gitlub is already pretty far along on enabling contributions. I mean, obviously they've doubled down on making sure that you're able to run your own instance, which is called the Gitlub development kit, I think. And it's fun to get started with.  But also they have a staging environment where recent merge requests before they're deployed to everyone get launched and you can go to a specific URL and experience those. So they're not all the way over where people would experience a change necessarily before it's merged in the hosted service. But as far as services walking down this road, they have taken those initial steps and do have quite a few contributions even when you look at the numbers in the data. I would say it's every service that you really care about. So that's how open source software got big, right? You have software and something that bothers you. So you dive in and you try to fix it.  So why not tweet to Twitter and say, look guys, I'm missing this feature. How can I contribute to you?  So you just made me think about one thing. This sounds like we're gonna end up with many clones of different services. And my question is, is that okay? Or do we wanna prevent these clones to be spinning up? I guess that same thing will apply to open source. So I guess fundamentally we'd like, of course, I would make the claim that many services when you clone them, they are no longer the same service. But in such an implementation model, like Tamar said, there might be infinite behaviors depending on who configures the load balancer to connect to what pull requests in the background and so on. And how do we keep that from getting out of control? Well, we do that pretty well in open source where if you fork or you make a pull request of a project or change it, suddenly you stop getting everyone else's contributions. Everyone else's changes. And this incentivizes you to get your stuff merged if you think it's worthwhile because then it becomes part of the default behavior of everyone and you can continue to get this stream of changes. If you just keep your change to yourself and say, hey, this is good enough for me, then you give up on the rest of them. And I think we can apply that same model here where such an outstanding contribution doesn't get everyone else's changes during that time. And it incentivizes you to complete the work sufficiently to bring it back together and merge that brand, try to then continue to have the fork. And I wouldn't even consider this as a bad thing if we have multiple instances and flavors of your service running. So the question is why did we in the first place stripped down the features and say, okay, I'm just serving out the smallest common denominator of features to the wide audience because I only have a small team that is capable of running the service and we must make sure that it's really running reliable. So if we solve this problem that we can really scale out horizontally also on the feature level and let everybody contribute. So I wouldn't mind having my own version of Twitter available with say GPG signatures for tweets that I can see whether they're coming from a bot or not. Maybe nobody else cares about it but I would like to see this feature. So if Twitter would be able to run different flavors of their service without being impacted on their commercial model, I don't think it's necessarily a bad thing. Great. Mirek brought up an interesting point in the chat and GitLab is not a great example because it's not a true open source project. And this made a thing about licensing. Have you guys thought about how licenses would actually work in this ecosystem? So I believe the licenses are fundamental to sharing the code. The licenses operate on copyright and obviously we need to continue to use real open source licenses to share both the source code for the service and the operational code that is open sourced. And so that's a foundational part of this open sourcing the work. However, by and of itself it's insufficient to incentivize contributions to a service. Yeah. I just recently heard that the license that you choose also depends on your business model. So I'm not really a lawyer and I usually don't care about the license too much which is a shame to say here now in the public but I usually take code and I tweak and tinker with it if I have the source code. Somebody else should care about whether the license is okay but that's nothing I should say in public. But it's not only about the source code but it's also about the data. So thinking about the data that is being produced from your ops team, how do we slap a license on this? And the Linux Foundation just came up with a license for data two years ago, LFA from the Linux Foundation AI. So also think about how you could, if you run a service, put a portion of your operational data, of your services, of your tickets and such under a certain license so that it's for posterity and for research available. I just read a comment in the chat from Rado, he's talking about open source alternatives to existing services. But one thing that made me think here is that some of these services, you're not able to run them locally. You actually require a huge infrastructure to run them on. How would you make sure that a community has access to such infrastructure where they can run the services? If it's running on a public close, someone has to pay for it, right? Yeah, so there's a couple of things going on here. First of all, not everything, I can't run locally everything that Fedora produces. I cannot run many of the IoT builds. I cannot run the S390 artifacts and so on. Open source regularly produces things that not everyone can run. So there are barriers, I don't have access. I mean, I could get access maybe if I figured it out, but I don't have access to many of the architectures and systems that are necessary to run Fedora. That said, as we described, making sure that everyone can operate your service is necessary. Making sure that you bring operators into the code. In this case, we're kind of hinting at Kubernetes and OpenShift operators, but there's other ways to do this. And making sure that much of the logic, much of what's proprietary or much of the things that ops teams do are encoded in code, that's what Marcel was going after in the beginning. And this really opens up the amount of people who are able to operate a service. Those people, of course, in many cases will have a slimmed down behavior of the service. Why? Because the service connects to other services to do things like authentication, connects to other services in order to call for a certain function or connects elsewhere. It's an entire constellation, really. And so if you clone it and run that, the one service yourself, you may be able to, you get all the code for running it, but you're running something different than the original one. So in addition to enabling everyone to run that themselves, we also need to enable contributions to the service as it stands, or else we're putting up too high of a barrier to contributions. And I'm not super worried about the money factor here. If we produce something that has value to companies that can monetize on the community that produces great artifacts, then they will happily throw hardware at it. Remember, if the service is free, then you are the product. And I think something similar will probably happen with some open source services, where the service is free, yes, and you can tweak and tinker with the operations, but the data that you're producing there will be used by the community in return to create better products so that companies can sell better versions of their products. In the end, somebody has to make something out of the money that they're investing there. And we showed that it works with open source software. So why shouldn't it work with services and operations? And it actually already works for some if we look at how NextCloud works. I mean, their product is completely open source. You can go deploy it locally in your home easily. And at the same time, they're a company and they're making money. Works. I'm running out of questions here. So guys, do you have stickers? I would like to talk a little bit more about the open core aspects because it's going on in the chat. And it is true that open core is a crutch and it's unfortunate to see certain companies like GitLab or others rely on that crutch because they seem to believe that there's no alternative. I believe that if we truly enabled open source on a service and contributions to that service directly, that there would be such a community around it and such a center of gravity of people participating that you would not need to rely on crutches like open core in order to sustain it and in order to have a business model around it. Obviously, this is theoretical and unproven but it is a conviction that if you actually go all the way with open source, you start to see all the advantages of it. And if you go halfway, yes, there are risks that you then mitigate in awkward ways such as open core but if you actually enable this completely you get such an advantage from it that it is sufficient to outweigh those risks and you don't need to rely on crutches like open core. So let's see. I think if we pull this off, we will see a viable alternative to open core. Great. We're running out of time so I would encourage folks to continue the discussion. Either on Discord or here on the chat. Fox, it's been really great to have you here. Famous last words from all of you. Yeah. So there's one urloperate-first.cloud. That's actually a URL, type it into your browser and you can join a community where we operate OpenShift and Open Data Hub in a community fashion. And the first talk just starting now shows you how to do this with an AI application on Data Hub. And we'll go into more details on these topics and perhaps have more discussion on them tomorrow at 2.45 and your service is not open source talk. And I would encourage you to also click the other link down below to look at this challenge, some of the playbook that Tomasz described and other ways, user stories and other ways to participate. All right, Steph, Marcel, Tomasz, thanks a lot. You've been great keynote speakers.


OK, welcome. So, we just recently heard from Susanna on CTEs and window functions. This is a new functionality that we added to MySQL 8014, which was released almost two weeks ago. So, it's about teaching all Dolphin's new tricks, and this is one of the new SQL features that we have added. And when the engineers came and said, we're doing lateral dry tables, I said, yay, what is it? And that's basically this talk, what is it, how do you use it, and how does it work? So, it's a very simple agenda. It's basically what is it or how does it work? First half is roughly, well, mostly theory. And then I'll go into examples. So, lateral dry tables. Let's start with derived tables.  You have subqueries in the select list or in the where clause or whatever, but those are not derived tables. It's in front class, it's a derived table, and you give it a name. And MySQL has two ways of executing these derived tables. We can materialize, which means we just create a temporary table, run that subquery, and fill it into the temporary table, and then execute the main query using those tables. Or we can merge this into the main query itself and do it in one go. So, these are derived tables. And then we have lateral derived tables. And I'm not a native English speaker. I guess most of you aren't either. So, I thought I knew what lateral meant, but to be sure, I went through the dictionary. This is not readable in the resolution of this projector, but it says that it refers to kind of sideways relations. So, relating to the side. And what does that mean for derived tables? To the side of what? It means that we are referring to other tables in the same front class. So, if we had nested queries with kind of one main query with a subquery, with a subquery, with a subquery. If you refer to one of these other queries, that would be a reference to an outer query, but a lateral reference is a reference to something in the same front class, on the same level. So, a lateral derived table is introduced by the keyword lateral. This is what allows you to make those references. Without that keyword, it's a derived table that is not allowed to make those references. So, a non-lateral derived table is self-contained. It doesn't have any references. Before 8.14 is self-contained. In 8.14, we have another restriction that's lifted. You can have outer references in derived tables. That is, no matter whether you have lateral keyword or not, outer references are always allowed in 8.14. Before that, it wasn't allowed at all. So, with lateral, you can refer to other tables, but we have t1 here, and we have the derived table, and we have t2. And the lateral statement can't refer to t2 because t2 comes after it in the front class. So, the smart people in the SQL standards community they decided that you should only be allowed to refer to things to the left of your lateral derived table because that way you avoid loops in your declarations. So, I guess it would be really hard to solve all this if you could refer to any table in the front class. You can also refer to other derived tables. It doesn't have to be a proper table. So, a lateral derived table can refer to another derived table, even lateral derived tables. And again, we can execute this using materialization or merging. Depending on the query, we may not be able to merge this into the outer query. So, materialization is a bit more common, I guess, in this case than with non-lateral derived tables. If you like specifications, the SQL standard calls this feature t491, lateral derived table. I recommend watching this presentation before trying to read this in standard because this explains it, the standards define it, and it's, I tried reading it, it's not an introduction to the topic. There are other lateral tables or table functions. Table functions are by default or always lateral in an SQL. MySQL has one table function, JSON table, and it is lateral. You're not allowed to say lateral in front of it, but it is always implicitly lateral. So, if you have used JSON table or seen one of our examples, you will see that you always select from a table containing the JSON column and then we say JSON table and refer to that column. So, we have lateral reference always in these examples because basically that's the only way it's really useful. You can also do lateral derived tables, you could say lateral, and then not actually have a lateral reference. Like this one, we select one, that's not, there's no reference at all in this query. SQL is smart, it optimizes this as if lateral is not present. There's no performance penalty, this is fine. But think about the next guy reading your query. So, don't go add lateral to all your derived tables. If you come to a query and see this, oh, there's lateral in front of this derived table. There must be a lateral reference, but no, there's not.  So, don't add lateral. If you don't use lateral, you will get an error if you try to use lateral reference. And if you don't expect to use one, you probably want that error and at least a warning. So, use this carefully. Then, we are ready to do examples. So, did anyone, everyone get the theory part of this? Cool, good, cool. I'll try to run this in. So, I'm sorry, Fredrik and Miguel, we don't use MySQL shell here, we use workbench. I hope you can see it in the back. I'm not able to change the size of the status messages, but you can see the queries, at least. So, just to clean up if I don't, I haven't done it already. So, my example is real simple. I have a table cities. Each city has a name, it has population, and it is in a specific country. We have excluded cities that are not in just one country. If it's shared between countries, I don't want to know about it. This is SQL, not politics. And we have data sets, some example cities. One thing, we have several cities in the same country, for some of these countries. So, there's not only one city in each country. And that is the data sets. So, what I want to know is, what is the largest city in each country? And I sat down, I was typing lateral stuff, and I said, yeah, okay, let's use lateral for this. So, I am selecting the population, the name of the city, and the name of the country from a derived table, non-lateral derived table, where I select distinct country names from cities. So, I basically select a list of countries, all the countries. And I join that with a lateral derived table, which selects the name of the city and population, where the country name matches the name of the country from the country table. So, this is the lateral reference I have. And I order it by population from the largest to the smallest and limit one. So, this is an EU first approach to solving this query. The logic is pretty clear. I select a list of countries, and for each country, I select the largest city. That is why people call this feature the for each of SQL. So, lateral derived tables are the for each loop of SQL. Let this to the engineer who implemented lateral derived tables in my scroll. So, Glenn said, yeah, that works. I have another option. Let's look at the result first, just to verify that this is correct. So, I get a number of cities. I have more queries doing the same thing. So, Glenn said to me, yeah, I have a different approach. This is what I would do, also using lateral. So, instead of selecting countries and then the largest city of each country, he suggests selecting the country and the size of the largest city. And then joining that with a lateral table containing the city name where the country and population size matches what we found in the other one. So, those are the two lateral references in this screen. The reason is that this doesn't do order by and limit, which is kind of okay, it's a better query. It's cheaper to execute. So, I said, yeah, cool. And we ran it and got the same result. Good catch. There's a mistake in there. If you have two cities with the same population, you will get two rows in this case. But in my query, you would get one, a random one, one of these. And that is surely a mistake, but it's not a mistake in lateral. It's a mistake in my request for this query. So, that is the difference between these. So, there is a semantic difference, but they are, if you exclude the chance of having two equally large cities being the largest cities in one country, you will get the same result. So, it's a matter of definition, which is best and which you want. But the fact is that this is a more efficient execution. I will show the explains later on. What he also told me is that this is another way of doing it without lateral. I'll just mark this for you. This is the same thing as in the previous query. So, the only new part is this join. So, we joined the country and max population with the city table and just saying that these two should match. So, it's not in the lateral derived table. And this is actually what the MySQL optimizer will produce if you type the first query. You can look at the explain for this. I think we can do virtual explain. It's probably a bit small to read in the back, but let's see if we can make it bigger. There's a derived table that is materialized. That is the one with the grouping. So, this is the list of countries and populations. And it's joined with the city's table. So, there's no second derived table here. If you look at the tabular view, there's one derived table and that is the list of countries with populations. If we look at the one that is supposed to be equivalent in the eyes of the optimizer, we get the same thing. There's one derived table here, and indeed the visual explain is also the same. So, we can see the optimizer is actually removing our lateral query. It's just merging our lateral derived table into the main query itself. Let's look at my suboptimal first attempt. That is different. Oh, sorry, that was execution, not explain. Explain. Can do graphically first. You see that there are two materializations. There's one for the list of countries and one for the largest cities. So, I materialized both of these. And one doing distinct country names and one doing ordering and limits. If you look at the textura explain, I hope you can read this, there is the primary derived tube. That is the derived table with the country names. This is the derived table, normal derived table. And then we have derived three, which is the optimizer's names for the second derived table, the lateral one. And we see that here in the first one, it says rematerialize derived three, which means that for each new value, each new country, we will rematerialize the lateral derived table. So, you get a hint in the explain what is happening, which thing is causing what to rematerialize. And we have the base tables for this. For the list of countries, we have the cities table. And for the list of, or for the largest city, we have another one. We remove the marking to make it more readable, I guess. It says dependent derived, which means that this is the derived table, but it's dependent on the rematerialization. So, again, you have a clue that this one is read every time. So, that is kind of three variants of the same query, or slight variants of the task list. So, you can say, is this materialized thing worse? Well, one thing that this can solve, that the other one can solve, is if I ask for the three largest cities of each country. It's not sorted, but there should be three of each. That is not that easy to solve with the other options. So, you might need this. I'm not aware of any theoretical proof that you can or can't replace lateral with other constructs always. So, I'm not sure there's a proof either way for that, but I am sure that if you try to replace all laterals with other stuff, it will be a very hard to read query, because this makes it at least easier to read. But be aware that sometimes we're not able to optimize it fully. If we go back to the presentation and skip the slides in case things failed. So, on Thursday, there was a new blog post on MySQL Server team.com from Gillem, the guy who wrote this code, about how it works. Also for cities and window functions that we heard about in the last presentation, there's blog posts here explaining the features. So, if there's something you wonder about about MySQL features, go to MySQL Server team.com and read it. That was all I had. Thank you.


Hi, welcome to class. My name is Sandra Vitakis, and I'll be your instructor throughout this course. Now, in my career, I can honestly say that I have lived in the trenches with every PC tech there is. We've gone back about 25 years, right to the point where computers weren't even quite on people's desks yet, and part of my job was to not only put them on the desk for the first time, but teach them how to turn it on. Moving throughout the career, I remember when A-plus came out. It was just a little shy of 20 years ago. A-plus back then was a little thin, boring book that was 100% lecture. 100% lecture, no demos, no nothing. I would lecture for two days straight, put them all to sleep, and send them on their way. Well, A-plus really has really grown as a course, and so is the technology to go with it. So we're going to take all of the technology-based discussions, mix it with a little bit of real life, and from that, use the experience to bring you through a very large, informative, and well-rounded course. Hello there, my name is Ken Mayer. I'll be your instructor for this course on the CompTIA A-plus certification. Now, my experience goes back to probably my first personal computer, which was in 1981. Back then, I actually had a variety of them. I had the TRS-80s, had the Amiga's, or the Commodore 64s, and have continued to love computers from that point forward. And when this actual certification first came out, which boy, that's even hard to remember, middle 90s, I think it was, I was one of those first ones sitting there in line, ready to get the certification, and have, of course, maintained my work in the realm of computers as either a hobbyist or as part of my job and the consulting that I've done. Now, over the years, which since the 80s, I have been doing a lot of contracting and consulting, from everything to service providers, routing and switching, to security work, to hacking information, to wireless networks, to voiceover IP, and I hope that since we're gonna talk a lot about some of the things that we need to build in the small office, home office, the SOHO, that I'll be able to use that experience and that knowledge to be able to help make this a better course for you to help make it more clear about all of the concepts that we're gonna cover. Now, part of our storage is basically what we called this ROM, read-only memory. Now, technically speaking, it's not read-only memory anymore. It's electrically erasable and programmable memory, but what it does, or what we said it was supposed to do, is contain the instruction codes in what we call the basic input output system that could help my PC through a power-on self-test. But remember, many of your adapter cards may also have its own ROM for the same purpose of being able to test the capabilities and communications of those adapter cards when they're used in the system card. Now, as I said, there may be updates from the vendors that either are going to try to fix a bug or maybe have new commands to be able to allow you to use new devices. You know, if somebody comes out with some new component that you wanna buy or use, and you're on a little bit of an older computer or a system board, you plug that new component in. Let's make it try to look like a little adapter card. You plug that thing in, and BIOS won't know what it is, because it says, hey, this wasn't around when my instructions were created, and that means I can't use it, I can't recognize it, and so that's where often you're gonna see these firmware updates. We often call it flashing the BIOS, but what we could do is we'd go out to either the firmware manufacturer if they have an update or to the vendor that made the system through the internet. We'd download this little file that would have whatever the new instructions are, and we would then flash that drive. Now, the reason we called it flash is because in the days before the electrically erasable, you could actually wipe out what was stored on these ROM chips through the use of an ultraviolet light being injected into a little slot in there to erase those contents. So it was like a little flash of light, so we called it flashing, but today it's not that way. It's a very easy process to be able to update. As I said, your BIOS is upgradable. We called it flashing your BIOS. Why would you wanna do a firmware upgrade? Because that's what you're gonna be doing. You'd be changing the instruction sets. Well, it could be just because of security patches. Yes, it is a possibility that there might be a flaw that could be taken advantage of through your BIOS or just whatever the case may be, security in just keeping the system up without having a bug. Performance updates as well, which are important because that might mean that there's new types of components that you can add into a computer. If your BIOS doesn't know how to recognize them, you might not be able to use them. So some updates for not just performance, but capabilities. And as I said, you could be fixing a bug. Now, as I said, the basic input output, the BIOS, is a part of the instruction sets that are on the read-only memory chip that is contained on your system boards, also contained on your adapter cards and many other components. And so those are found, and if you're not sure where they're at, that's where you need to basically look at the schematic of the system board from the manufacturer of that system board because not everything you see might actually be read-only memory. Here you see maybe a depiction of where one might be located on one system board, but that doesn't mean that it's in the same location on all system boards. The good news is, is that it's usually printed on the chip so you can read it when you're looking at the system board to find out what that component is. The power on self-test is a very important aspect of what we do in starting up the PC. Now, what it's gonna do is basically check the hardware components, the processor, it's gonna look at memory, the communications to the memories, the different types of communications buses that are in there, the different IO input output controllers, the communications and how well all of the hardware is working. It's gonna gather that list and often present that to the operating system as the operating system is booting up. So it knows what kind of components it has to talk to, be able to look to see if there are new components. In fact, that's the heart of what we often call plug-and-play where we made it sound like Windows actually found this new component and automatically got it installed and ready to go. But in reality, when you start up Windows, it would say, oh, okay, I see that the BIOS collected a new component that I didn't see before. And so it goes through its list to see, hey, do I have a driver for that? Do I know how to work with that device? Or should I input and ask somebody for that? And in a lot of today's cards, that information is even included in the ROM chips that are a part of that actual adapter card. But anyway, that's the importance of the post is that we need to make sure everything is working, including the location of an input device, a mouse, or a keyboard. And to be able to say, all right, now that I know all the components are up, all the communications are good, now we're ready to boot the operating system. Yeah.


Hello everyone and welcome to another episode of Dino Bash! That's right, it's the most popular video series on the entire channel! I've taken on your comments, don't worry, we have some surprises here today. It won't be the same thing you've always seen over and over again. No! So, what I did, as you can see, we are level 11. Woooah! Can we get a wooah? Yes! I did good! So I got a level 11, because I've been grinding that level 67 over and over and over. So I have, if we're looking at upgrades, now somebody said the stego was really good. So as you can see right here, I've got stego level 10 out of 10. I've also upgraded tier X to level 7, which is the highest we can do until we reach level 80 I think. Not only that, but if we look at shots, I've also got ice bomb up to level 5 so it does 1,000 damage. And I've been wanting to progress, but I don't want to do it without recording it. So I've just been constantly playing, playing, playing. As you can see, it's like, you know, so many stars. So, we're gonna jump in, we're gonna, I think I'll keep that. That's kind of the team I go for. The hard thing is right, mammoth, t-rex, and stego, you can only get one of. So rapt is kind of like the thing where I can just throw the rest of my apples into. And it comes quickly, it runs fast, that's what we're gonna do. So, let's jump in Shelby. Alright, how about we do this, level 71. Here we go, now I tried doing this a while ago because I just couldn't, the temptation was just too much. And I was like, no, I want to do it, I'm gonna do it. So, I tried it and I think I failed. So, this is gonna be interesting. So, this is gonna do loads more damage, which is great.  Oh, yeah baby! Beautiful, let's throw in a raptor, we'll throw in a raptor. So, the stego is gonna kind of stay there. Wow, it's actually really far away, look at that, t-rex go! And the stego is cladded out, look at it, oh, it's amazing. And all it's rocky glory, but look, boom! That is amazing, and it can kill it, which is great too. Really, I should be doing this, and we'll freeze that. Hitting the, oh, we killed the t-rex in one hit, no way! Oh, the combo! Okay, let's store our apples a little bit higher. Now, the thing is with this, I cannot, you know, I can't even say what it's gonna say, I can't hear my dinosaurs, that's what I was gonna say.  Oh my god, look at this! We're doing so good, we got all our things back! Now, we got the raptors there, because we're gonna need to, I mean, the stegos are not too much, but you know, you can stay there. So I will just quickly, because I can see the pointy boys.   I guess we could get a mammoth, I suppose, t-rex is about to die. Oh lord! Oh, oh my god, the stegos gonna die too, so t-rex, well, well, stegos, it's trying its best, it's gonna do its best here. I'll just make sure that I have enough, right, there it goes, there it goes stegos. Let's freeze these guys, bore the spread of radius, it's beautiful. We'll also just, you know, kill those, also take whatever that is, that's a fire. That's a fire! Okay, so mammoth, you know, it's a premium dinosaur, but it's, my t-rex I think is better, it can attack faster. It's just so much better. Actually it's providing some cover for the raptors even. Ah, never mind, they've just died. I don't think I have to worry too much here. The t-rex, yes, it's taking a beating, it's only got wood. It's alright, it's alright. I'm gonna, ooh, do I freeze those? I'm gonna freeze these, and just, hopefully there's not a shaman here. Alright, there isn't a shaman, that's fine, that's fine. And we'll get another t-rex, we'll get a mammoth, and then we'll start getting the raptors, leaving enough for when this stegos does die, which it does right there, we can get another stegos. So what do we have here? Oh, we do have a shaman, ah, yeah, buggy him. Alright, here we go, so now just apples onto everything, so that's one gone, which is brilliant. The other one's gonna die now. I'll send that down so we can, oh, I thought it would kill it, but it didn't, we do have, ooh, we do have a big explosion. We do have a big explosion, but it's kind of wasteful. I'm gonna do that, and then, you know what, sod it, we're gonna, yeah, oh, I killed it, oh, okay, that's not so bad, oh, we got one of those dinos here. Also, you'll notice I have a meteor now, so we can do the meadows if we need to. Oh, my God, this is actually kind of, this is kind of stressful. Oh, Lord. Alright, hit the, yes, kill him. Alright, we'll need the t-rex, that's alright, we'll get a mammoth, we'll get some more raptors. Here we go, here we go. Now, can it, can it survive just long enough for something to get here? Right, freeze him, freeze him, come on. Yes! That's how we do it. Now, what's coming? Okay, that's not so bad. The shaman is a little bit to worry about, I suppose.  Oh, never mind, that's a waste. Okay, well, we still got the frost. That's what we need to worry about. Oh, you're kidding me, we didn't have a thing? Oh, what am I doing now? Yeah, there's the healing. So we're gonna freeze all these, that will kill the shaman, and it'll do a lot of damage to those. That's good.  We'll send a raptor, keep going. We'll send a mammoth as well, and then we can send that. That's good, that's good.  Oh, here comes the backup, yeah. This is what we want. If we can throw rocks at them, throw rocks at them. Oh, the raptor's really slowing those guys down. Yes, yes, yes, all the apples. Oh, we can turn those into raptors, come on. Let's get the raptor squad a-going. So we got, okay, we got one of those. We could probably slow them down a little bit just by healing that. That'll separate them away from these big ones, which I guess is not too bad. And then we can sort of do an explosion here.   No apple, bit of a shame. Okay, we'll get the T-Rex. Oh God, is the T-Rex gonna come in time? We're actually coming back a little bit. I think this Stego might die though. I think Stego will get a mammoth. Just a little bit. Anything, go Stego, please. No, he died. Oh, we don't have enough, we don't have enough. It's these. Right, we've also got another healer here. Okay, okay, I think we're gonna have to take this a little bit on the cheek here because we have to kill this because he's gonna eventually meet up with these guys and then heal all of them. So maybe a T-Rex combo with a Stego is kind of what we're looking for here. There's one dead. There's two dead. Oh yes, come on, one more bite. One more bite, yes. And then we've got enough to get another one straight away. Yes, yes. Oh, look at the damage. Stego does loads of damage when he does actually hit. Right, so I guess this was the last wave, so we kill all of these. Just a couple more hits and boom! Did we do it? Yeah, we did. Oh yes, over 16,000. Now, every level I've been doing on 67 has been 1,000. So that's the equivalent of me doing 10 levels. It probably did take five times as long because the fire caveman levels is so quick. But if you want to grind level 67, T-Rex, Stego, all you need to do, do something else. So 72, we've got 37,000 coin. So can we upgrade the shot? Take the shot. Almost, almost. So 72, I think we're okay. We could play around with maybe the noot-noots, but the noot-noots take longer. And if we need the raptors to come out, I think that's good. Healing might be worth it, but with a volcano shot, unless we buy another shot. If we could spend 29 gems, we're getting another one. But I think at the moment, kind of okay. The ice bombs, it's perfect. We'll get you, we'll get the Stego, and we'll buy a rank for the apples. We'll also plonk you down and then do an explosion. And there we go, beautiful, beautiful. Just some damage, just slow them down. There we go. Okay, he's not too bad. I'm not too worried about that. We can knock them down.  Not too much of a worry there.  I think we'll get a mammoth. I think we'll get a mammoth here. Because really, it's only the Stegosaur backing up the T-Rex. Oh, and a fire! Oh, a fire! Oh, Lord! Okay, yeah, there we go. This is good. This is good. We're going to send an ice bomb down. That's great. And you know what?   I'm going to play a card. Play cool. And we're going to get a level 20. Or do we? I'm going to... You know what? I'm going to place that down. I'm going to disrupt whatever was in there. Unfortunately, it was a pokey dude. Which isn't so good. A fire, dude! I might be able to kill. No! I hit the thing. Okay, mammoth. Ooh! Get a raptor. Maybe a raptor can... Oh, yeah, they're not getting that. That Stego is dead. That Stego is dead. I will place this down here. Anyway, I just do a lot of damage. And I miss the big damages. And there's also a shaman coming in, which is also not very good. Oh, the Stego! Come on! No! At least he threw one! At least he threw one! At least he threw one! Now, depending on how much this T-Rex does, is it worth... How much does he heal? Okay, he doesn't heal enough. He doesn't heal enough. Right, mammoth. And then we'll go for a T-Rex once this guy dies. So the Stego is coming in. That's fine. We'll get a raptor. Right. Ooh! Ooh! This is a bit of a nuisance. Bam! And... Oh, he healed him! Oh, God! Oh, God, he healed him! Right. Right. That's okay. I think we're good. I think we're good. So that should be him dead? Yes! Here we go! Heal the shaman! Oh, yeah! Bite that shaman! Yeah! Okay. Now, I could kill these guys. I could. We'll plonk... Just rocks on them. Because, I mean, they only take one hit. Is there anything else coming? Nothing coming just yet. We've got a mammoth here, which is just out. We've got another mammoth. We'll place a rock here. Oh, I didn't get him. I didn't get him. Okay. So I'm going to slow these guys down. I hope he does not... Oh, there is a healer with him. Oh, that's unfortunate. That is very unfortunate. Right. It's okay, because we can kill these guys. Really easy. Oh, can it be... No, they're... They're... They're... There we go. There we go. Okay. Oh! Oh, yes! We're going to do it. We're going to do big explosion. Big explosion! Oh, yes! Okay. Okay. Right. Raptors. Raptors. Yes, he's going to heal himself. That's fine. But then this explosion bomb here... Everything's dead. Oh! Is it? I'll take that. Thank you very much. The Turks is kind of hacking on itself. Look at this stagger. The stagger with the support is doing so good. And you know what? Let's get some more apples. I think we're okay. Unless this is it. I think we're... I think we're good. I think we're good. I'll put a rock down. I'll put another one down. Just stop it doing any damage. And there it goes. Is that it? Easy. Easy. Easy. Easy. Can we get a... Thank you. Thank you for doing so good. And now we can upgrade the eye shot. Because that's so good. Oh! Two days for the extra shot. Oh, yes! 14. Oh, we can have some fun now. Oh, we should max up some other shots. Oh! I wanted the poison, but I don't think poison is very good. So what we'll do is... I think the next one to really be leveled up is probably... I mean, we've got the extra shot, right? Yeah, we've got the extra shot. I don't know. Healy could be decent. So I'm definitely going to max up that. So another 150. So that's that done. And what other shot should we take? So we'll do 73. Yeah, we'll take all this. I think that's great. But what should the other shot be? You know what? I think in a lot of times my T-Rex has made it through. It made the initial push. I think it's about time we healed it up. And this one's a long one. Okay, this is going to be kind of terrifying. And then a five. Boom! Boom! Right? Let's hold off. Okay, two big shamans. That's fine. That's fine. They can stay there. Three big shamans. They're all dead. This is brilliant. Four big shamans. Okay. Okay. That's... Is that new? Oh, my God. That looks new. Four or five shamans. They're all still dead. Seven shamans. Eight shamans. How many shamans do I have? Nine shamans. This is going to heal... Yeah, okay. So we're going to have to go for that. Now, that's them all dead. And there's a crud ton of apples. Yes. Okay. That's not so bad. And when the T-Rex gets to about half health, we can start healing it. Okay. Okay. Okay. You know what? This is fine. It seems like this is what we're doing. Is this what we're doing? Is not a worry. We're also going to heal the T-Rex now. That's fine. That's fine. Oh, T-Rex. Oh, we do need to heal that. We do need to heal that. Oh, we need damage. We need DPS here. Boom. Yep. That's some more. More of that. More of that. Maybe we need to get them away from the spawners. Well, he comes into the T-Rex. There's no more shamans coming in. So... Oh, here we go. Here we go. Yes. Kill him. Yeah. Stay away from these guys. Let them heal each other. Let them heal each other. Yes. Let them stay back. Okay. Okay. In comes... Okay. Now we could probably... Yeah, we could freeze these guys. There's not much of an issue. That's fine. We'll kill another one. More apples. Yeah. This is fine. This is fine. This is fine. That guy's not fine, though. I don't like the pointy head. He is not fine. Okay. Oh, he got hit. He actually got hit. Yes. That worked out really well. Come on, quickly, quickly. Oh, he's dead. He's dead. He died it. He died it. It's okay, though. It's okay. Rank with these apples. Hell, yeah. Bam. Okay. Kill the raptor. Kill the raptor. That's fine. That's fine. Oh, I don't want to. I don't want to. Oh, never mind. I'll put it down. Right. T-Rex definitely needs to be hit here with some healies. Well, you know what? He's healing them quite a bit. We'll just keep him back. He's spreading out his healing shot. That's fine. Oh, do we have... Oh, we have a big explosion. You know what? Should we hold back and then just explode them all at once? Oh, that might be ideal. That might be ideal. There's two big healers here. Oh, we'll go for that. We'll go for that. Okay, that's fine.  And then when these guys hit this bit, we'll explode them. So that's them dead. Right. This, I think it's time. I think it's time for a big explosion! Ha ha! Yes, it was time. It is time. So we'll kill those guys.  He does a lot of damage, but... He's very weak. I think these guys have got it. These guys have got it. Now it's like just raptors. Raptors and raptors. Let's go. Let's bring the pain. And then another one of these. You don't need to worry. Yes! Yes! Raptors! Come on! More! Here they come. Here they come. Here they come. Okay, one time healer. Oh, bless him. We can easily kill him. He's not much of an issue. All right, there we go. So it's just going to be a line of raptors now. Yes!  I'm going to heal the tear. It's just in case it needs it. It really doesn't, though. Come on, keep going. I don't think we've got a... Yeah, I really don't think we've got a... I want you to call it. Oh! Here we go. We don't have a mammoth, but it's not a problem. Look at the amount of raptors coming through. Whoa! Whoa! Weird healies. Rocket. Explosion. Let's go. More. More. Yes! All the damage. All the damage. Oh, tell you what. All the raptors are dying, though, from that pokey stick. We're getting somewhere, though. We're really getting somewhere. Look at this. Do we have any healies? Okay. We'll get those two. We'll start with a new... A new go-through. Oh! There's Stego! Stego doing... Doing God's work here. All right, let's slow these guys down and him with an explosion, because why not? We can. We got time. We got time. Yep. I think they're going to get there by the Stego, so that's good. Yes! Look at the damage of Stego! So good. Now, you stay there. Heal yourself. Heal yourself. You want to heal yourself. There we go. Heal yourself. Now we do it. Oh! Oh, that mammoth definitely took a few punches. I think maybe we could place it here. That might get the dude. Yep. Perfect. Perfect. And then those... Healing, in case something's going to die. Oh, it was the T-Rex! The T-Rex is about to die. Do we even bother getting... I think we've done it. I think we've got the winning combo. We've got the hard hitters. You know, maybe the mammoth needs heat, like, upgrading, but then again, the mammoth... It costs gems. It's a pretty new dino. But look at all the coin! Yes! $29,000! Oh! You have no idea, guys. Fulfill the pain! From doing the same level over and over. Good thing is, I can just go T-Rex, Stego, and then do something else. So we've got two more levels before we need to wait. I don't understand this piggy bank, though. When I hit 40, do I get it for free, or do I have to pay for it? Because if I have a look at the market... So £1.79 is 14 gems, or £1.79 for 40 gems. That's... That's so cheeky! That is so cheeky! I've got... I don't know whether I can say stuff. And maybe I'll email them, because I'm excited for the future of this game. I am excited, but I don't know if I can say anything. Now, people have said Rocky's good like a good throwaway, but maybe Rocky needs to be upgraded in order for it to be good. I think, still, the Healy investment we do with that T-Rex? Just so good. Alright, alright. We're gonna do the classic. Go for straight with a rank 2. Rank 2 Apple, a T-Rex, and then a Stego. And then we'll just see how this goes. Okay, that's a bit... That's a Charmin? That's a Charmin? Okay, I think that's worth it. I think that's worth it. Just killing, killing those two. I'm not too fast. I'm not too fast. You can heal those guys. I've killed one Charmin, and I've killed the annoying whatever it is. You know what I'm talking about. Alright, so we can hold back until we get another Ice. I'd say so. I'd say so. Yes, I know. I know. Alright, so income the Poke Sticks. Poke Sticks are a bit of an issue. But then again, here we go. Here we go. Beautiful. And... Yes! Right, one raptor to kind of slow them down just for the T-Rex and them. Oh God, the Stego's dead. Oh yes, Stego's dead. But this is great! We can target this guy down. Yes! I'd love to know if there's like, is it worth taking the single shot now that I've got the Stego to knock down the Flyers? I bet it's not. I think we've got two levels left. I'd love to test that theory out. Alright. Okay, we've got all our good shots. Little bit of volcano bomb we could choose to use. Bit of a shaman pops out. It's a little bit of a waste. But you know what? I'll do it. I'll do it. We've got a Healy on the mammoth. Brilliant. Stego incoming. Oh yeah. You know what? I'm going to do it. It gets rid of all of that. Oh yes! And I get apples. What an investment, James.  Oh mammoth. Oh, it survived. That's crazy. Oh, it is taking damage now. It is taking damage now. But that was worth it. That was not too bad. Can we take out this guy? Oh, never mind. Okay. Okay. Okay. I think we need to stop pushing back a little bit. Just a little bit. Although I do... Ah. Another T-Rex. We've still got the Stego. Yeah, look at the raptors. Just slowing them down. Okay, we got this thing. I want to be careful of whatever this thing is. However, I don't think I'm going to hit the hedge. Yeah, I'm not hitting the hedge. Alright. So, as soon as we get through this tank here, we're good. I think we're good. I will use a volcano here just to unearth whatever this is. Oh, it was a fire. It was... It was a fire. Right. Oh, here we go. Here we go. Come on. Come on. Oh, yeah. Ho-ho-ho. Heal that, T-Rex. He's earned it. Yes. Now it's raptors. Now it's raptors. We have to go. We have to go. We got mammoths. We're going to fully heal T-Rex. There it is. This... Look at what's coming. Ho-ho-ho. Wait a minute. Alright. You know what? I'll slow you guys down from it. Slow down. And another little slow down. Because this T-Rex is now about to take a beating. And I'm not worried too much here. Boom. Yes. Healy on the T-Rex. Oh, never mind. The mammoth took it. Oh, that was a bit unfortunate. Oh, yes. Here it comes. Here it comes. Yes. Oh, this is good. Not so good. T-Rex dead. But the raptors... You know, they put in the work. They put in the work there. Oh, there's a lot of flyers. Oh, a lot of flyers. Alright, got the next mammoth. Right. Here we go. Here we go. Look at them. We need raptors. Oh, my God. No. Stay go. Oh, he's actually doing it. He's protecting himself. Right. Uh, no worry about him. I will put one down there. And just, you know, do damage to that as well. That's good. We got a shaman incoming. It's a decent one, but it's only one. So it's not...  And then hit you. Uh, we got a raptor, a little raptor. Oh, yes. Here we go. Ah, chumped. Uh, might as well heal. Just a little bit of a heal, you know. Uh, we'll set that off. See what's hiding in that bush. It is a...  And then we'll pop you. And then hit you. And then not forget about them, guys. Let's not forget about them. I'll pop a healing on them. Oh, yeah. Look at the... The raptors incoming. Yes, in swaves. For the rocket. You know, just stop that a little bit. Oh, the raptors are being absolutely decimated here. Oh, Lord. Uh, right. Explosive. Um, another rock. Let's just keep going. Keep them here. Cause then we can hit everything. And boom, yes. No more healies for you. And raptors that aren't too bad, actually. Right. T-rex incoming. Yaw! Look at that one! Look at the raptors, girl. They do put in work. Right. We got another... Another healing dude here. Not so bad. Not so bad. Things are getting away from them now. Things are getting away. We do have an explosion. No, Stego! Oh, no. Maybe I've used the explosion. I've used the explosion. Okay. Those two kill them. And then what I'll do is I'll throw that here. Yep. There we go. There we go. Ha-ha! Jump! I think that's it. I think we've done it. Yes! Ho-ho! No problem! This game, ease peas. Easy! 44,000. Complete four levels. Ground... Oh, come on. We grounded so many flyers. Or do I have to do it? That does the Stego not count. Stego might not count. So the final one. Oh, a diamond sail you say. Whoa! That's interesting. It's just triggered, isn't it? So piggy bank. Okay, I need to complete two more levels. I hope I get it for free. That would be... I mean, that would make sense. So what have we got? Oh, 710 for the big chunk. Cluster shot could be pretty decent as well. I think I'm happy. I think I'm happy just going for that vegetable, you know. Like, what are the dinos? I mean, maybe a T-Rex Junior? But you know, a Brachysaur would be good. A Brachysaur would be good, but I think it needs more health. At the moment, a mammoth is just half the price and so much more health. And considering our coin, we're so close to getting another level of ice bomb for 1,300. And what is it? Like 30? 1,320? Some like that. So here it is. The final level. I think my team's pro level. Let's do it. I'm excited. I love this game. I really do. It's so much fun. Right, come on. We almost made it. I'm sure we could do it. Yeah, of course we can. Yes. Right. Not worried about you. Not worried about you.  I wonder, because if we did the big chunk, it would kind of hang about for a bit, wouldn't it? Whoa! Whoa! You can't sing for Toffee! I got a raptor. Yes. And that's fine. That's fine. Oh, okay. Okay, we're going to kill both of those. Boom! Yes. And then just sort of scupper him a little bit. Oh! Oh, that must have been the flying caveman. Right, I'm going to invest in apples. I'm going to invest in apples a little bit here. Okay, that's fine. Another one. That's fine. That's fine. I'm going to get that apple there. All right. Okay, okay. So, yeah, I'm going to do that a little bit. Maybe a little bit of that. Yep, yep, yep, yep, yep, yep, yep. T-Rex is dead. So, you know, we'll get another T-Rex. Get another T-Rex. This not looking so good because I really don't have enough to stifle this guy. I need to go for this. It just has to happen or else he would kill me there. Oh, God! All right. Explosions, I think, has to happen here. It kind of does. Yeah. Oh, God. Oh, the egg. The egg. I need help on the egg. Okay, okay. We're going to have to, we're going to have to upgrade the egg a little bit. It's only got 500 hearts. I mean, fine, I guess I'll upgrade the egg. Dino work, it's a thousand. There you go. 2,000, 3,000. There you go. It's got double health now. We could definitely survive that. So now that I know we're going to get a lot of runners coming towards us, I am now, okay, we almost made it. We'll be safe place. You say that every time. Every time. Right. Right. Okay, just got to hit him. Just got to hit him. When I see that other Dino come out. Yep. Got to keep an eye. Got to keep an eye. Okay, here it is. He's dead. He's dead. Now there it is. Here we go. Here we go. In it comes. In it comes.  That was brilliant. Now I want to be a bit careful with this. I want to be a bit careful. So here we go. Yep. I'm just going to... Maybe not. Maybe not. I need to wait for this guy to come out. I need to wait for him to come out a little bit. There he is. There he goes. There he goes. In comes another one. That's not so bad. Because I might be able to free shot him. Yep. So there we go. There we go. Another one. Okay. Okay. Can I free shot? Can I free... Oh, I can't free shot. Okay. Okay. We're going to... I need another T-Rex. And I need it quick. Right. Right. I'm going to end that. Mending that. Whatever's happening here.   And then... Come on, quickly. I know you're there. Right. Here we go. Apples. Apples. Apples. Okay. Okay.  But now you're dead. Is there another one coming through? Yes, there is. Hopefully I can catch him there. However... No, I didn't really. There we go. There we go. There's another one coming through. Oh, God. There is, however, a big horde of dinosaurs also coming. Which does not please me. Oh, God. Oh, God. Oh, God. Yes. You got through. You got through. Heal. Freeze them. Heal. Well, attack them. Heal T-Rex. Why? Come on. Right. Not so bad. Not so bad. Not so bad. Right. Here we go. We got a stego. It's coming through. We can slow them down a little bit. T-Rex. He's gone, but we've got another one instantly. So that's not so bad. And maybe a couple more of those. Slow them down a little bit. See what else is coming. Oh, he almost dies. Heal the mammoth, because why not? Definitely. Definitely can. Definitely can. Okay. So that's actually not so bad. It's not so bad. Right. Volcano bomb me is just to do a lot of damage. Just do a lot of damage. Yep. The mammoth is almost ready to heal again. Yes. Okay. Keep on going. Keep on going. Anything that's going to run through to cause problems. I think we can freeze these. And it be okay. Hit everybody. Yes. More raptors. Keep on going with the raptors. Really, I probably should have healed. Oh, sorry. I got more. What did you call it? More apples. Right. This is actually really good, because we can kill those flamers. Boom. Yes. Flamers are a bit of an issue. We're okay. We're okay. Here we go. Come on. We need to get more apples. We need to get farming. Here we go. Right. Now heal that mammoth. Yes. I guess we could probably do that. Yes. That kills him. Throw an apple in there. We've got a lot of flamers, but we also got a lot of raptors. It's not so bad. Mammoth. Okay. Volcano bomb. It's not looking so bad. It's really not looking so bad. The raptors though. Damn. Right. Oh, God. Oh, Lord. Oh, my raptors died because of these guys. Go. Go. We almost did it. I think we've done it. I think that's it. Oh, it's not. Stego gets the kill. Yes. Wait, that's not it. Why is that not it? Was they expecting me to really struggle? Look at that poor raptor. No. Slow down. You're going to your death. Okay. We'll put a volcano bomb. See what's hiding in here. Oh, thank God. Okay. Not bad. That was lucky. That was lucky. We got... We got... Should we go for 45? Yes. 45. Come on. All the apples. Yes. No, then the Stego's going to die. Yes. Stego gone. Well, it couldn't be helped. Okay. We're going to place you there. Another Stego. Just kill... Oh, we didn't kill a lot. Okay. Okay. That's fine. That's fine. Fantastic. Okay. A volcano bomb. Yep. Keep it going. Keep it going. This isn't so bad. Maybe we can get a gap. We can get a gap between these guys and the next wave. I think that's... That actually works in our favor. Right. More raptors. Come on, Stego. Yeah, there's the mammoth. There's the mammoth. And let's... Let's freeze these guys because it does a lot of damage. It's a lot dead as well. Yep. Just keep it going. Keep that Stego. Keep that Stego. Yes. That's right. Punch my mammoth. Yes. I'm just going to heal it. You fools. Okay. That's a lot. That's a lot of stuff to kill. So place that down. Oh, a blizzard. Nice. Okay. Heal. Heal the mammoth. Yes. Right. Any healies? No healies so far. Mammoth taking the beating. We'll place that down. May I get some things at the back as well? Oh, we've got so many apples. What am I doing? Come on. Come on. Yes. Heal. Yes. Mammoth is still in it. It's still kicking. Oh, yes. Oh, it's gone. It's gone. It's gone. It was only a matter of time, but it's gone. Right. Come on, T-Rex. You've got this. Yes. Yes. The horde of rafters are coming through. It doesn't even matter. It didn't even matter. Look at the coin.  Five or 56,000. No, thank you. I got plenty. Oh, come on. I was so close. I'm not going to go away. I am ready to fight. I make videos on you. That's a given. Okay. So we did 75. So how long do I have to wait? A day or two days? That's annoying because I just spent so many gems to get that, or we could unlock it. Do we unlock? Do we unlock? I think we're doing good. I think we unlock it. So here we go. We've been through the ice and the snow, and now onto a new horde. We're going to unlock it. We're going to unlock it. We're going to unlock it. We're going to unlock it. We're going to unlock it. And now onto a new... Ha! An old friend lives on this island. Let's try and find him. Oh, okay. Who is it? Well, it's not a cloud. Oh, 87. I think that might be frosty. I think frosty is here. So we need to get to level 80 in order to upgrade our... What's it called? I think this is a special power. I don't think that's like something. Let's have a look. So we've got dinos. We've got specials. Oh, it's a rain cloud. Ah, interesting. So it's another thing to trigger. What do we need for the T-Rex to level that up? The T-Rex, level 80. Okay. So we'll go for level 76. We've got a lot of coin. We've got a lot of coin. We'll not worry about it too much. So let's focus... Oh, we're back on the green. Okay. We're thicker trees. Right. And now what... I think the last one was the big shaman. It may be the shielded big lady. Oh! Oh, I don't like that. They do a lot of damage. Oh, I'm just going to freeze those. I do not like the look of those. I really don't. I really don't like the look of those fire-throwing Tomahawk dudes. Yeah, that's bad news. That's really bad news. I think I need... I think maybe tanks are going to be an issue for this. We need some... What is that? Oh, no! Oh, my God! Tanks are... Yeah, tanks do nothing. Oh, okay. Is that a vehicle? That's a... That's tank. What? We have a tank. Oh, God. Oh, oh, okay. Well, we killed all of them. We'll get that. Oh, what? Has he got a fire? Oh! They've got their own siege. Oh, my God. Oh, we can do damage to it though. We can do damage. This isn't so bad. It sort of comes with... They've got siege. They've got a catapult. Oh, this thing got crazy. Oh, Lord. Okay. Let's just try and kill it. I think just get... Oh, God. Okay. Okay. Not so bad. I'll get you. I'll also heal. Oh, God. Oh, God. Oh, there's so much. So much death. It's not so bad actually. The raptors are good. The raptors are good. Okay. Is it dead? It's still alive. It is still alive. Let's slow them down a little bit. There's the mammoth. Oh, the shot of the mammoth though.  I think we kill him. Yeah. That's a good... Did it kill him? Oh, there's another one. Okay. Okay. Right. Let's kill that. Oh, slow it. Completely freeze it. I don't think the mammoth's going to make it though. Or maybe it is. Oh, the mammoth survives. A couple of shots. A couple of shots. We've got the fire tomhole guy. You know what I think it is? I think it's raptors. I think we just go full on raptors. Because they kind of avoid the tomahawks.  The big guy is a bit of a problem. Okay. So, heal. No. No. No. No. We're going to kill these guys. Oh, they're not dead. Why are they not dying? I need another T-Rex. There we go. He should die now. I need another T-Rex. He's dead. It's out of there. It's out of there. Oh, God. Why are you in front of me? That's the worst.  I hate it. I hate it. I really do. I don't want to release another one in case. Oh, come on. I'm hitting it. Okay. We've got health on our egg though. We're okay here. At least there's no shamans. Yeah. We've got loads of health on our egg. It's fine. It's fine. It's fine. More raptors. All right. I think I can hit him. I think I can hit him. Yeah. Where is it?  Hell yeah. Where is it? Come on. Yes. That's great. Keep doing damage to this. Oh, does it only hit him when he comes out? Yeah. He's gone. He's gone. Healy. Healy. Right. We need that. Yes. Yes. And that should kill him. Oh, beautiful. Beautiful. Let's slow it down. Slow down our punches. More of that. Is there anything else coming? Okay. We've got another Flamer. Flamer's horrible. Okay. Last wave, guys. Last wave. Oh, he sticks on or on fire. Did they put out his sticks? Oh, that would be cool. Oh, that's not so good. This isn't good. I wasted that. Let's heal. Oh, I could have killed him with the Explo... Okay, let's go. Let's go get him. Let's go get him. Yes. Got him. That was close. That was close. T-Rex, Mammoth, raptors, this. Yes. Come on. Save the Stegosaur.  Boom. Yes. Kaboom. I kill him. Yes. Nom, nom, nom, nom, nom, nom. Okay. Oh, not so good. I want to just ground him. But we've got this, this, this situation going on there is not good. Don't like it. Uh, oh yeah. Just do damage. Yep. Yep. Heal themselves. Uh, you know what it is?   Um, yep, yep, yep. I'm gonna have to, I'm gonna have to waste it on him. Just just to kill him. Just to kill him. Um, yeah. Keep, keep, keep him, keep him in the back. This isn't so bad. Yep. The, the flames. The flames are not good though. They're really not good. Um, I don't, oh God. Uh, oh no. No, no, no, no, no, no. We're gonna freeze at the back. This is not so bad. Uh, come on. Hit. Yes. Chew. Chop on somebody. Yes. Give somebody big chomp-a-roos. Uh, raptor. Oh, yeah. I'm gonna give up. I'm gonna give up. See, I'm seeing double. I'm that stressed. We only got 5,100 for that. Okay, two more gems. You know what? We have powers. We have powers. Not only that, we have 61,000 coin. So what I think we need to do here is upgrade. Ah, the T-rex is close. T-rex is close. I'm gonna upgrade the one I use, which is the ice. So there's another 170. That's definitely gonna help, especially with those Tomahawk dudes. That's crazy. Is the healer at the back? Okay. Okay, that's not so bad. Not so bad. Okay, okay, okay. Another raptor here. Right, here it is. Here it is. So get that. Hit him down. And we're good. Boom, we ace. Right, so don't need to worry about that. Now the problem is here because we are really close to the egg now. Heal? Heal? I always forget about the heal.  Blizzard. Yep, I saw that. I saw that. I had to. I had to. All right. I don't know if it saved us. I don't know if it saved us. He's starting to hit the egg. Stop! Stop! Oh God, oh God. T-rex. More raptors. There's a lot of raptors. Here we go. Here we go. Flamers. This. That. Everything. Bam. Yes. This is great. This is great. This is great. This is good. Yes. Okay. Now where's the next tank? Oh my God. There's a huge... Was that it?  I didn't even realize. Okay. Well, lots of coin is great. What he should do really is... Oh yes. I should invest in getting double coin and double XP. Especially for these levels you get so much. What should I do? Okay, piggy bank. Do I just get it? You boogers you. I'm not. You can't believe they do that. That's so cheeky. Specials. Let's have a look. So double coin's 25. Let's go for double coin. I should have done that to start with. And double XP? I don't care about double XP. 77. Let's go. I think we're good. We got the blizzards. We got the meteor thing. I don't know what that does. Last one. Okay. That. T-Rex. And Stego. Right. So we see a shaman. And let's hold off. There might be another one. There's not. Okay. That's fine. Unless it's delayed. In which case I would hate that. Yeah. I'm just going to do damage. I'm going to slow these guys down. Keep them together. Oh, there's the shaman. That's what I didn't want to see. Yeah. I'm going to keep up with that. Let's put a raptor in. Let's put a raptor. Oh, here it is. That's what I didn't want. Yeah. Oh, we got him. We got him. You know what? I'm just going to do it. I'm just going to do it. Oh, it didn't. Oh, you know what? That's actually not so bad. That's not so bad. Now I'm going to get 20 apples. I don't know what's coming. There's another T-Rex thing. I might have to set up a bomb here. I'm going to set up a bomb. Okay. It's not happening. And boom. Okay. Fair enough. Damn it. I always waste it. I always do. Yes. Yes. Let's set that up there. That's good. That covers a good base. A good base. Stegosaur is definitely dead, though. There's nothing to be said for that. I apologize, Stegosaur. I did not have your best interests in mind. So in comes another T-Rex. We'll get a mammoth now. We've got enough apples. This is not looking too bad before these guys come into it. Let's get some more raptors. I think we're good. There's a shaman there, but there's also the flamer, which is brilliant for us.  Brilliant. That's good. And heal the T-Rex. Great. I like how it goes past things that they don't need to use. Let's just throw that down there. What? What? Why? What did I throw in there? Does he do much damage when he throws the twigs? I don't think he does. All right. Oh, okay. Okay. Oh, a little one. Okay. That's not so bad. Is he a fiery? Oh, we've got a fiery here. Okay. Okay. Okay. So I will put that down there. And then I'll put another one in just to see if it was a dinosaur. It is a dinosaur. It is a dinosaur. Of course it's a dinosaur. Not too worried. Not too worried. There's another raptor. We'll put in another raptor. Get him. Anything else? Oh, we're all the way at the end. Let's keep going. Let's put that there. And that there. All right. It's raptor city. Here we go. Just get them all. Unless we're already done. Which would be great. I'd love that. We maxed out on everything and we can heal that. Boom. Yes. Raptors. I don't even need that. How many? There's so many raptors. Yes. Oh. Oh, they're about to have a bad time. Is that going to fall off screen? Of course it falls off screen. That's brilliant. All right. Keep going. There. Healed just in case of some crazy there, which there might be. Oh, there's the sticks. Yes. Kill the sticks. Yes. It's great if you can keep them there. Look at all this. All the shaman ripped apart by the raptor squad. Oh, and they're all dead. And this is where my plan comes crushing down. I love when that happens. It's brilliant. Unless that's it. I think that might be it. Oh, oh, the dino. Heal of the mammoth. Yes. Okay, let's focus on this guy. Focus on this guy. We're doing another T-Rex. Now I've got enough time that, you know, my shots can kind of kill stuff. And I'm just going to, I'm investing in more trees. Team trees, apparently. All right. What are we doing? How are we doing? A little bit. We'll just kill these guys. Pop that one. Get those two. Slow them down again. Get the stego. Slow them down again. There we go. Yeah, it's just these guys. Do you want a vegetable? You could have a vegetable. I think we're good. I think we're good. And a muam. And a muam. And a muam. And a muam. Yes. Well, I'm so happy. I'm so proud of ourselves. Oh, 35,000. Is that double? Yeah, that's probably double. Should we do one more? Or should we wait? Okay, we'll wait. We're already like 52 minutes in. We'll save it for another episode. But if you've enjoyed this video, leave a like. And until next time, I'll see you cuties later. Bye-bye.


Patients at MidMichigan Medical Center Gratiot will soon have a more comfortable, state-of-the-art and family-centered place to give birth. Construction has begun on a new maternity center in the Patient Tower, slated to open early in 2019. The new unit will have three triage rooms and nine large private birthing suites where moms, babies, and their support partners can room together throughout their hospital stay. Part of the process was interviewing women and asking them questions like, what would you like to see in a new labor and delivery unit? So our new unit coming up is going to incorporate a lot of those things that were put on the wish list, a lot of state-of-the-art kind of things that are being put in to make this really a center of excellence for delivering a baby. Those features include a state-of-the-art operating room, large walk-in tubs for pain relief during labor, in-room refrigerators and a nursery with a paramount security system. Womens are really going to, like, the atmosphere that they're going to be coming into. It's going to be more of a home-like environment. And we are going to have somebody there to greet them and really explain to them the process of how their delivery is going to go. In addition to being a physician for 20 years, I've also had the opportunity to be a mother. I've had four deliveries in four different hospitals, actually, including Grashett Hospital. So I have a little bit more insight in what makes a patient more comfortable in a unit. That was always in my input. Most of our staff have been patients here, delivering most all of our babies here. The staff being patients here themselves, it really gives them insight to how the flow of the unit works and how they see the unit as a patient and not just a caregiver. Doctors also had the chance to get in on the demolition fun.